From f1e8dac49b9aec0fc85eb1e92752327993b623b9 Mon Sep 17 00:00:00 2001 From: vemerion <67878524+vemerion@users.noreply.github.com> Date: Sat, 5 Jun 2021 17:04:58 +0200 Subject: [PATCH 0001/1090] Check for null in LootingLevelEvent Unfortunately, due to interactions with global loot modifiers, the damage source can be null in LootingLevelEvent. This fix avoids a potential null pointer exception by checking to make sure that the damage source is indeed not null. --- .../cosmere/effects/feruchemy/store/ChromiumStoreEffect.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java index d3c7864fe..7417afb2a 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java @@ -33,6 +33,9 @@ public ChromiumStoreEffect(Metals.MetalType type, EffectType effectType) public void onLootingLevelEvent(LootingLevelEvent event) { + if (event.getDamageSource() == null) + return; + boolean isRemote = event.getEntityLiving().world.isRemote; boolean entityNotLiving = !(event.getDamageSource().getTrueSource() instanceof LivingEntity); @@ -54,4 +57,4 @@ public void applyAttributesModifiersToEntity(LivingEntity entityLivingBaseIn, At { super.applyAttributesModifiersToEntity(entityLivingBaseIn, attributeMapIn, amplifier); } -} \ No newline at end of file +} From 2fba00b41e6483467a6911bf67d9705225aef25b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 6 Jun 2021 12:48:22 +1200 Subject: [PATCH 0002/1090] iron steel pushpull refining. Doesn't feel like you're going supersonic anymore --- .../allomancy/AllomancyIronSteel.java | 60 +++++++++++++++---- .../network/packets/SyncPushPullMessage.java | 4 -- .../cosmere/utils/helpers/VectorHelper.java | 27 ++++++++- 3 files changed, 75 insertions(+), 16 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index a9aa33955..3e7928556 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -8,12 +8,12 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.CodecHelper; -import leaf.cosmere.utils.helpers.LogHelper; -import leaf.cosmere.utils.helpers.VectorHelper; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.SyncPushPullMessage; +import leaf.cosmere.utils.helpers.CodecHelper; +import leaf.cosmere.utils.helpers.LogHelper; +import leaf.cosmere.utils.helpers.VectorHelper; import net.minecraft.block.Block; import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; @@ -76,7 +76,7 @@ private void performEffectClient(ISpiritweb cap) if (getKeyBinding().isKeyDown()) { Minecraft mc = Minecraft.getInstance(); - RayTraceResult ray = cap.getLiving().pick(getRange(cap),0, false); + RayTraceResult ray = cap.getLiving().pick(getRange(cap), 0, false); if (ray.getType() == RayTraceResult.Type.BLOCK && !blocks.contains(((BlockRayTraceResult) ray).getPos())) { @@ -142,12 +142,19 @@ else if (ray.getType() == RayTraceResult.Type.ENTITY && !entities.contains(((Ent private void performEffectServer(ISpiritweb cap) { + if (cap.getLiving().ticksExisted % 3 == 0) + { + return; + } + //perform the entity move thing. SpiritwebCapability data = (SpiritwebCapability) cap; blocks = isPush ? data.pushBlocks : data.pullBlocks; entities = isPush ? data.pushEntities : data.pullEntities; - if (blocks.size() == 0) + int blockListCount = blocks.size(); + + if (blockListCount == 0) { return; } @@ -158,17 +165,48 @@ private void performEffectServer(ISpiritweb cap) double strength = getAllomanticStrength(cap); - for (BlockPos blockPos : blocks) + for (int i = blockListCount - 1; i >= 0; i--) { - //if the entity is in range of being able to push - double distance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; - if (blockPos.withinDistance(living.getPositionVec(), distance)) + BlockPos blockPos = blocks.get(i); + if (!isPush && blockPos.manhattanDistance(living.getPosition()) < 2) + { + //stop shoving the user into the block + continue; + } + + + //if the entity is in range of being able to push or pull from + double maxDistance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; + if (blockPos.withinDistance(living.getPositionVec(), maxDistance)) { + Vector3d blockCenter = Vector3d.copyCentered(blockPos); + direction = VectorHelper.getDirection( - new Vector3d(blockPos.getX(), blockPos.getY(), blockPos.getZ()), + blockCenter, living.getPositionVec(), (isPush ? -1f : 1f) * renderPartialTicks); - living.setMotion(living.getMotion().add(direction.normalize())); + + //todo, clean up all the unnecessary calculations once we find what feels good at run time + Vector3d normalize = direction.normalize(); + + double shortenFactor = 0.2; + Vector3d add = living.getMotion().add(normalize.mul(shortenFactor, shortenFactor, shortenFactor)); + + //don't let the motion go crazy large + living.setMotion(VectorHelper.ClampMagnitude(add, 1)); + + //let people get damaged but not too much? + //todo check what a good max fall distance would be + //todo add to config + if (living.fallDistance > 3) + { + living.fallDistance = Math.min(living.fallDistance, 3); + } + } + else + { + //remove blocks that are out of distance + blocks.remove(i); } } living.velocityChanged = true; diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java index 1ad8650aa..c712974c8 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java @@ -72,10 +72,6 @@ public static void handle(SyncPushPullMessage mes, Supplier maxLength * maxLength) + { + float mag = (float) Math.sqrt(sqrMag); + //these intermediate variables force the intermediate result to be + //of float precision. without this, the intermediate result can be of higher + //precision, which changes behavior. + double normalized_x = vector.x / mag; + double normalized_y = vector.y / mag; + double normalized_z = vector.z / mag; + return new Vector3d(normalized_x * maxLength, + normalized_y * maxLength, + normalized_z * maxLength); + } + return vector; + } + + + public static double SqrMagnitude(Vector3d vector) + { + return vector.x * vector.x + vector.y * vector.y + vector.z * vector.z; + } + } From 7b8c1f3d2e2506a27e73d95decd47443a7d3c2b9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 6 Jun 2021 21:06:17 +1200 Subject: [PATCH 0003/1090] Got distracted three times. Setting up extra bronze/tin allomancy. tidying up active state testing --- .../cap/entity/SpiritwebCapability.java | 11 +-- .../cosmere/manifestation/AManifestation.java | 4 + .../manifestation/ManifestationBase.java | 12 +++ .../allomancy/AllomancyBase.java | 40 +++++---- .../allomancy/AllomancyBronze.java | 42 ++++++---- .../allomancy/AllomancyNicrosil.java | 2 +- .../manifestation/allomancy/AllomancyTin.java | 34 ++++++++ .../java/leaf/cosmere/mixin/EntityMixin.java | 82 +++++++++++++++++++ src/main/resources/cosmere.mixins.json | 3 +- 9 files changed, 189 insertions(+), 41 deletions(-) create mode 100644 src/main/java/leaf/cosmere/mixin/EntityMixin.java diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index aa1bedcca..865b58b30 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -168,6 +168,7 @@ public void deserializeNBT(CompoundNBT nbt) @Override public void tick() { + //if server if (!livingEntity.world.isRemote) { //Login setup @@ -182,7 +183,7 @@ public void tick() { //don't tick powers that the user doesn't have //don't tick powers that are not active - if (manifestationActive(manifestation.getManifestationType(), manifestation.getPowerID())) + if (manifestation.isActive(this)) { manifestation.tick(this); } @@ -217,17 +218,16 @@ public void tick() } } - else + else//if client { AManifestation iron = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); - - if (manifestationActive(iron.getManifestationType(), iron.getPowerID())) + if (iron.isActive(this)) { ((AllomancyIronSteel) iron).performEffect(this); } AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - if (manifestationActive(steel.getManifestationType(), steel.getPowerID())) + if (steel.isActive(this)) { ((AllomancyIronSteel) steel).performEffect(this); } @@ -511,6 +511,7 @@ public List getAvailableManifestations(boolean ignoreTemporaryPo { List list = new ArrayList(); + //todo intelligently handle multiple powers for (int i = 0; i < 16; i++) { for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index d07485a43..5c0854e66 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -22,6 +22,8 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract void onModeChange(ISpiritweb data); + public abstract int getMode(ISpiritweb data); + public abstract int modeMax(ISpiritweb data); public abstract int modeMin(ISpiritweb data); @@ -30,6 +32,8 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract void tick(ISpiritweb data); + public abstract boolean isActive(ISpiritweb data); + public TranslationTextComponent translation() { ResourceLocation regName = getRegistryName(); diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index fb76054b8..d5b575c00 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -42,6 +42,12 @@ public void onModeChange(ISpiritweb data) } + @Override + public int getMode(ISpiritweb data) + { + return data.getMode(manifestationType, getPowerID()); + } + @Override public int modeMax(ISpiritweb data) { @@ -65,4 +71,10 @@ public void tick(ISpiritweb data) { } + + @Override + public boolean isActive(ISpiritweb data) + { + return getMode(data) != 0; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index cb9891609..042e58451 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -61,29 +61,17 @@ public int modeMin(ISpiritweb data) return 0; } - @Override - public void tick(ISpiritweb data) + public boolean isActive(ISpiritweb data) { int mode = data.getMode(manifestationType, metalType.getID()); - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; - - - if (mode <= 0) - { - return; - } - //make sure the user can afford the cost of burning this metal while (mode > 0) { //if not then try reduce the amount that they are burning - if (!data.adjustIngestedMetal(metalType, -mode, isActiveTick)) + if (!data.adjustIngestedMetal(metalType, -mode, false)) { mode--; //set that mode back to the capability. @@ -91,15 +79,33 @@ public void tick(ISpiritweb data) //if it hits zero then return out if (mode == 0) { - return; + break; } //try again at a lower burn rate. continue; } - break; + return super.isActive(data) && data.adjustIngestedMetal(metalType, -mode, false); } + return false; + } + + @Override + public void tick(ISpiritweb data) + { + int mode = data.getMode(manifestationType, metalType.getID()); + + if (!isActive(data)) + { + return; + } + + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + data.adjustIngestedMetal(metalType, -mode, isActiveTick); + //if we get to this point, we are in an active burn state. //check for compound. int feruchemyMode = data.hasManifestation(Manifestations.ManifestationTypes.FERUCHEMY, getPowerID()) @@ -144,7 +150,7 @@ protected double getAllomanticStrength(ISpiritweb cap) public int getRange(ISpiritweb cap) { - if (!cap.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID())) + if (!isActive(cap)) return 0; //get allomantic strength diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index 1ccff073e..8eb9a1f48 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -12,10 +12,12 @@ import leaf.cosmere.utils.helpers.VectorHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.particles.ParticleTypes; import net.minecraft.potion.*; import net.minecraft.state.properties.NoteBlockInstrument; import net.minecraft.util.SoundCategory; +import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import java.util.List; @@ -37,26 +39,36 @@ protected void performEffect(ISpiritweb data) //Detects Allomantic Pulses //passive active ability, if any - if (isActiveTick) + if (livingEntity instanceof ServerPlayerEntity && isActiveTick) { + ServerPlayerEntity playerEntity = (ServerPlayerEntity) livingEntity; + int distance = getRange(data); List entitiesToCheckForAllomancy = getLivingEntitiesInRange(livingEntity, distance, false); - for (LivingEntity e : entitiesToCheckForAllomancy) + for (LivingEntity targetEntity : entitiesToCheckForAllomancy) { - EffectInstance copperEffect = e.getActivePotionEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); + EffectInstance copperEffect = targetEntity.getActivePotionEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); if (copperEffect != null && copperEffect.getDuration() > 0) { //skip clouded entities. continue; } - SpiritwebCapability.get(e).ifPresent(iSpiritweb -> + SpiritwebCapability.get(targetEntity).ifPresent(targetSpiritweb -> { //check if any allomantic powers are active - for (int i = 0; i < 16; i++) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (iSpiritweb.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, i)) + if (!metalType.hasAssociatedManifestation()) + { + continue; + } + + int metalTypeID = metalType.getID(); + //todo decide what to do about this part + //since this is running on the server specifically. + if (targetSpiritweb.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) { //found one @@ -64,29 +76,25 @@ protected void performEffect(ISpiritweb data) //get the position between the user and the entity we found //end point minus start point, then normalize - BlockPos destinationPosition = e.getPosition(); + BlockPos destinationPosition = targetEntity.getPosition(); BlockPos startingPosition = livingEntity.getPosition(); BlockPos direction = new BlockPos(VectorHelper.Normalize(destinationPosition.subtract(startingPosition))); - - //todo make this stuff only play for the user - e.world.playSound( - (PlayerEntity) null, - direction, + playerEntity.playSound( NoteBlockInstrument.BASEDRUM.getSound(), - SoundCategory.MASTER, - 3.0F, - 1); + SoundCategory.PLAYERS, //todo check this category + 3.0F, //volume + 1.0F); //pitch //todo visual cue? //todo make this stuff only happen for the user - e.world.addParticle( + targetEntity.world.addParticle( ParticleTypes.NOTE, (double) direction.getX() + 0.5D, (double) direction.getY() + 1.2D, (double) direction.getZ() + 0.5D, - (double) i / 24.0D, + (double) metalTypeID / 24.0D, 0.0D, 0.0D); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java index 1dcd0ccfa..51ada3b69 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java @@ -61,7 +61,7 @@ public void onLivingHurtEvent(LivingHurtEvent event) if (itemInHand.isEmpty()) { //if manifestation is active and has nicrosil metal to burn - if (iSpiritweb.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.NICROSIL.getID())) + if (isActive(iSpiritweb)) { //valid set up found. EffectInstance newEffect = EffectsHelper.getNewEffect( diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java index ad8127181..d2d2f54c9 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java @@ -4,12 +4,23 @@ package leaf.cosmere.manifestation.allomancy; +import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.ISound; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.potion.Effects; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.sound.PlaySoundEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class AllomancyTin extends AllomancyBase { public AllomancyTin(Metals.MetalType metalType) @@ -30,4 +41,27 @@ protected void performEffect(ISpiritweb data) livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.NIGHT_VISION, 0)); } } + + + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public void onSound(PlaySoundEvent event) + { + ISound eventSound = event.getSound(); + + if ((eventSound == null)) + { + return; + } + + PlayerEntity localPlayer = Minecraft.getInstance().player; + + SpiritwebCapability.get(localPlayer).ifPresent(playerSpiritweb -> + { + if (isActive(playerSpiritweb)) + { + //todo make the entity glow or something to the user? + } + }); + } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java new file mode 100644 index 000000000..4152b48a1 --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -0,0 +1,82 @@ +/* + * File created ~ 6 - 6 - 2021 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Entity.class) +public class EntityMixin +{ + + @Inject(method = "isGlowing", at = @At("RETURN"), cancellable = true) + private void handleIsGlowing(CallbackInfoReturnable cir) + { + Entity e = (Entity) (Object) this; + + if (!(e instanceof LivingEntity)) + { + return; + } + + PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getRenderViewEntity(); + LivingEntity target = (LivingEntity) e; + + SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> + { + //if has bronze + if (!(playerSpiritweb.hasManifestation(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()))) + { + return; + } + + SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> + { + //if has copper + if (ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get().isActive(targetSpiritweb)) + { + //check whether or not the target beats the player in allomantic power + + + + return; + } + + + //get allomantic strength of + + int mode = playerSpiritweb.getMode(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()); + + //todo range to config + int range = 5 * mode; + + + //get allomantic strength of copper + + + //if targets copper is on and their mode and strength is stronger than the player + //then close out + + + if (clientPlayer != null && clientPlayer.getDistance(target) < range) + { + cir.setReturnValue(true); + } + }); + }); + } + +} + diff --git a/src/main/resources/cosmere.mixins.json b/src/main/resources/cosmere.mixins.json index 60eede605..d3dc4e9c3 100644 --- a/src/main/resources/cosmere.mixins.json +++ b/src/main/resources/cosmere.mixins.json @@ -8,7 +8,8 @@ ], "client": [ "GameRendererMixin", - "EffectInstanceMixin" + "EffectInstanceMixin", + "EntityMixin" ], "injectors": { "defaultRequire": 1 From 24cb79f1da4d41dff454220e9b9a6a08cafb4a3c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 6 Jun 2021 21:35:58 +1200 Subject: [PATCH 0004/1090] renaming functions for clarity --- .../java/leaf/cosmere/cap/entity/ISpiritweb.java | 4 ++-- .../cosmere/cap/entity/SpiritwebCapability.java | 6 +++--- .../java/leaf/cosmere/client/ClientEvents.java | 2 +- .../leaf/cosmere/client/gui/SpiritwebMenu.java | 6 +++--- .../effects/allomancy/AllomancyBoostEffect.java | 2 +- .../cosmere/manifestation/ManifestationBase.java | 2 +- .../manifestation/allomancy/AllomancyBase.java | 14 ++++++++++---- .../manifestation/allomancy/AllomancyBronze.java | 4 +--- 8 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index 8dea45322..bd5de2fda 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -46,9 +46,9 @@ public interface ISpiritweb extends INBTSerializable AManifestation manifestation(Manifestations.ManifestationTypes powerType, int powerID); - boolean manifestationActive(Manifestations.ManifestationTypes powerType, int powerID); + boolean canTickManifestation(Manifestations.ManifestationTypes powerType, int powerID); - boolean selectedManifestationActive(); + boolean canTickSelectedManifestation(); int nextMode(Manifestations.ManifestationTypes powerType, int powerID); diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 865b58b30..461e558c7 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -446,7 +446,7 @@ public void removeManifestation(ManifestationTypes manifestationTypeID, int powe } @Override - public boolean manifestationActive(ManifestationTypes manifestationType, int powerID) + public boolean canTickManifestation(ManifestationTypes manifestationType, int powerID) { if (!hasManifestation(manifestationType, powerID)) { @@ -464,14 +464,14 @@ public boolean manifestationActive(ManifestationTypes manifestationType, int pow } @Override - public boolean selectedManifestationActive() + public boolean canTickSelectedManifestation() { if (selectedManifestation == null) { return false; } - return manifestationActive(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); + return canTickManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); } @Override diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index d2ba7484e..e9f876f50 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -77,7 +77,7 @@ public static void onKey(InputEvent.KeyInputEvent event) if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_TOGGLE)) { //if crouching, only turn off. - if (player.isCrouching() && spiritweb.selectedManifestationActive()) + if (player.isCrouching() && spiritweb.canTickSelectedManifestation()) { Network.sendToServer(new DeactivateCurrentManifestationsMessage()); } diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index ea5aa0394..f56ace830 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -153,14 +153,14 @@ public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability sp case INACTIVE: //deactivate current - if (spiritweb.selectedManifestationActive()) + if (spiritweb.canTickSelectedManifestation()) { Network.sendToServer(new DeactivateCurrentManifestationsMessage()); } break; case ACTIVE: //activate current - if (!spiritweb.selectedManifestationActive()) + if (!spiritweb.canTickSelectedManifestation()) { //Network.sendToServer(new ToggleManifestationMessage()); } @@ -295,7 +295,7 @@ protected void SetupButtons() //todo buttons //todo button icons - sidedMenuButtons.add(spiritweb.selectedManifestationActive() + sidedMenuButtons.add(spiritweb.canTickSelectedManifestation() ? new SidedMenuButton("gui.cosmere.other.inactive", ButtonAction.INACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.off, Direction.WEST) : new SidedMenuButton("gui.cosmere.other.active", ButtonAction.ACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.on, Direction.WEST)); diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index dc9f202e2..0bdb503df 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -55,7 +55,7 @@ public void performEffect(LivingEntity livingEntity, int amplifier) } //if metal is active - if (data.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getID())) + if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getID())) { int ingestedMetalAmount = data.getIngestedMetal(metalType); diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index d5b575c00..7137a9b4e 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -75,6 +75,6 @@ public void tick(ISpiritweb data) @Override public boolean isActive(ISpiritweb data) { - return getMode(data) != 0; + return data.canTickManifestation(this.manifestationType, this.getPowerID()); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 042e58451..4292bcbd1 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -63,6 +63,11 @@ public int modeMin(ISpiritweb data) @Override public boolean isActive(ISpiritweb data) + { + return super.isActive(data) && isMetalBurning(data); + } + + public boolean isMetalBurning(ISpiritweb data) { int mode = data.getMode(manifestationType, metalType.getID()); @@ -71,7 +76,11 @@ public boolean isActive(ISpiritweb data) { //if not then try reduce the amount that they are burning - if (!data.adjustIngestedMetal(metalType, -mode, false)) + if (data.adjustIngestedMetal(metalType, -mode, false)) + { + return true; + } + else { mode--; //set that mode back to the capability. @@ -83,11 +92,8 @@ public boolean isActive(ISpiritweb data) } //try again at a lower burn rate. - continue; } - return super.isActive(data) && data.adjustIngestedMetal(metalType, -mode, false); } - return false; } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index 8eb9a1f48..552f48f80 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -11,13 +11,11 @@ import leaf.cosmere.registry.*; import leaf.cosmere.utils.helpers.VectorHelper; import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.particles.ParticleTypes; import net.minecraft.potion.*; import net.minecraft.state.properties.NoteBlockInstrument; import net.minecraft.util.SoundCategory; -import net.minecraft.util.SoundEvents; import net.minecraft.util.math.BlockPos; import java.util.List; @@ -68,7 +66,7 @@ protected void performEffect(ISpiritweb data) int metalTypeID = metalType.getID(); //todo decide what to do about this part //since this is running on the server specifically. - if (targetSpiritweb.manifestationActive(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) + if (targetSpiritweb.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) { //found one From e381cae82061fb43a7566ad0c33cc172fc696b36 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 18 Jul 2021 16:53:35 +1200 Subject: [PATCH 0005/1090] b16-17 --- Changelog.md | 11 +- gradle.properties | 4 +- src/main/generated/.cache/cache | 98 +++- .../generated/assets/cosmere/lang/en_us.json | 146 ++++-- .../advancements/allomancy/aluminum.json | 36 ++ .../cosmere/advancements/allomancy/atium.json | 36 ++ .../advancements/allomancy/bendalloy.json | 36 ++ .../cosmere/advancements/allomancy/brass.json | 36 ++ .../advancements/allomancy/bronze.json | 36 ++ .../advancements/allomancy/cadmium.json | 36 ++ .../advancements/allomancy/chromium.json | 36 ++ .../advancements/allomancy/copper.json | 36 ++ .../advancements/allomancy/duralumin.json | 36 ++ .../advancements/allomancy/electrum.json | 36 ++ .../cosmere/advancements/allomancy/gold.json | 36 ++ .../cosmere/advancements/allomancy/iron.json | 36 ++ .../advancements/allomancy/nicrosil.json | 36 ++ .../advancements/allomancy/pewter.json | 36 ++ .../cosmere/advancements/allomancy/root.json | 29 + .../cosmere/advancements/allomancy/steel.json | 36 ++ .../cosmere/advancements/allomancy/tin.json | 36 ++ .../cosmere/advancements/allomancy/zinc.json | 36 ++ .../cosmere/advancements/core/mine_stone.json | 36 ++ .../data/cosmere/advancements/core/root.json | 29 + .../advancements/feruchemy/aluminum.json | 36 ++ .../cosmere/advancements/feruchemy/atium.json | 36 ++ .../advancements/feruchemy/bendalloy.json | 36 ++ .../cosmere/advancements/feruchemy/brass.json | 36 ++ .../advancements/feruchemy/bronze.json | 36 ++ .../advancements/feruchemy/cadmium.json | 36 ++ .../advancements/feruchemy/chromium.json | 36 ++ .../advancements/feruchemy/copper.json | 36 ++ .../advancements/feruchemy/duralumin.json | 36 ++ .../advancements/feruchemy/electrum.json | 36 ++ .../cosmere/advancements/feruchemy/gold.json | 36 ++ .../cosmere/advancements/feruchemy/iron.json | 36 ++ .../advancements/feruchemy/nicrosil.json | 36 ++ .../advancements/feruchemy/pewter.json | 36 ++ .../cosmere/advancements/feruchemy/root.json | 29 + .../cosmere/advancements/feruchemy/steel.json | 36 ++ .../cosmere/advancements/feruchemy/tin.json | 36 ++ .../cosmere/advancements/feruchemy/zinc.json | 36 ++ .../cosmere/advancements/hemalurgy/root.json | 35 ++ .../cosmere.category.allomancy.json | 7 + .../categories/cosmere.category.basics.json | 7 + .../cosmere.category.feruchemy.json | 7 + .../cosmere.category.hemalurgy.json | 7 + .../cosmere.entry.allomantic_aluminum.json | 19 + .../cosmere.entry.allomantic_atium.json | 18 + .../cosmere.entry.allomantic_bendalloy.json | 19 + .../cosmere.entry.allomantic_brass.json | 19 + .../cosmere.entry.allomantic_bronze.json | 19 + .../cosmere.entry.allomantic_cadmium.json | 19 + .../cosmere.entry.allomantic_chromium.json | 19 + .../cosmere.entry.allomantic_copper.json | 19 + .../cosmere.entry.allomantic_duralumin.json | 19 + .../cosmere.entry.allomantic_electrum.json | 19 + .../cosmere.entry.allomantic_gold.json | 19 + .../cosmere.entry.allomantic_iron.json | 19 + .../cosmere.entry.allomantic_nicrosil.json | 19 + .../cosmere.entry.allomantic_pewter.json | 19 + .../cosmere.entry.allomantic_steel.json | 19 + .../cosmere.entry.allomantic_tin.json | 19 + .../cosmere.entry.allomantic_zinc.json | 19 + .../cosmere.entry.feruchemical_aluminum.json | 15 + .../cosmere.entry.feruchemical_atium.json | 15 + .../cosmere.entry.feruchemical_bendalloy.json | 15 + .../cosmere.entry.feruchemical_brass.json | 15 + .../cosmere.entry.feruchemical_bronze.json | 15 + .../cosmere.entry.feruchemical_cadmium.json | 15 + .../cosmere.entry.feruchemical_chromium.json | 15 + .../cosmere.entry.feruchemical_copper.json | 15 + .../cosmere.entry.feruchemical_duralumin.json | 15 + .../cosmere.entry.feruchemical_electrum.json | 15 + .../cosmere.entry.feruchemical_gold.json | 15 + .../cosmere.entry.feruchemical_iron.json | 15 + .../cosmere.entry.feruchemical_nicrosil.json | 15 + .../cosmere.entry.feruchemical_pewter.json | 15 + .../cosmere.entry.feruchemical_steel.json | 15 + .../cosmere.entry.feruchemical_tin.json | 15 + .../cosmere.entry.feruchemical_zinc.json | 15 + .../cosmere.entry.hemalurgic_aluminum.json | 15 + .../cosmere.entry.hemalurgic_atium.json | 15 + .../cosmere.entry.hemalurgic_bendalloy.json | 15 + .../cosmere.entry.hemalurgic_brass.json | 15 + .../cosmere.entry.hemalurgic_bronze.json | 15 + .../cosmere.entry.hemalurgic_cadmium.json | 15 + .../cosmere.entry.hemalurgic_chromium.json | 15 + .../cosmere.entry.hemalurgic_copper.json | 15 + .../cosmere.entry.hemalurgic_duralumin.json | 15 + .../cosmere.entry.hemalurgic_electrum.json | 15 + .../cosmere.entry.hemalurgic_gold.json | 15 + .../cosmere.entry.hemalurgic_iron.json | 15 + .../cosmere.entry.hemalurgic_lerasium.json | 15 + .../cosmere.entry.hemalurgic_nicrosil.json | 15 + .../cosmere.entry.hemalurgic_pewter.json | 15 + .../cosmere.entry.hemalurgic_steel.json | 15 + .../cosmere.entry.hemalurgic_tin.json | 15 + .../cosmere.entry.hemalurgic_zinc.json | 15 + .../data/cosmere/tags/items/spike.json | 23 + .../java/leaf/cosmere/constants/Metals.java | 365 +++++++------ .../java/leaf/cosmere/datagen/DataGen.java | 13 +- .../datagen/advancements/AdvancementGen.java | 89 ++++ .../advancements/AllomancyAdvancements.java | 75 +++ .../advancements/CoreAdvancements.java | 61 +++ .../advancements/FeruchemyAdvancements.java | 76 +++ .../advancements/HemalurgyAdvancements.java | 42 ++ .../datagen/{ => blocks}/BlockModelsGen.java | 4 +- .../datagen/{ => blocks}/BlockTagsGen.java | 4 +- .../datagen/{ => items}/ItemModelsGen.java | 4 +- .../datagen/{ => items}/ItemTagsGen.java | 10 +- .../datagen/{ => language}/EngLangGen.java | 54 +- .../{ => loottables}/BlockLootTableGen.java | 4 +- .../{ => loottables}/LootTableGen.java | 4 +- .../cosmere/datagen/patchouli/BookStuff.java | 495 ++++++++++++++++++ .../datagen/patchouli/PatchouliGen.java | 187 +++++++ .../categories/PatchouliAllomancy.java | 87 +++ .../patchouli/categories/PatchouliBasics.java | 25 + .../categories/PatchouliFeruchemy.java | 62 +++ .../categories/PatchouliHemalurgy.java | 51 ++ .../cosmere/items/curio/IHemalurgicInfo.java | 3 + .../leaf/cosmere/registry/BlocksRegistry.java | 1 - .../leaf/cosmere/registry/TagsRegistry.java | 2 + .../cosmere/utils/helpers/StringHelper.java | 19 + .../cosmere/textures/item/metal_bracelet.png | Bin 3007 -> 3023 bytes .../cosmere/textures/item/metal_ring.png | Bin 3077 -> 3068 bytes .../grant_book_on_first_join.json | 12 + .../loot_tables/grant_book_on_first_join.json | 14 + .../cosmere/patchouli_books/guide/book.json | 2 + .../en_us/entries/tutorial/entry_1_day_1.json | 8 - .../tutorial/entry_1_getting_started.json | 8 - .../tutorial/entry_7_ancient_artifacts.json | 8 - 132 files changed, 4080 insertions(+), 248 deletions(-) create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/aluminum.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/atium.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/brass.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/bronze.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/cadmium.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/chromium.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/copper.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/duralumin.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/electrum.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/gold.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/iron.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/pewter.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/root.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/steel.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/tin.json create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/zinc.json create mode 100644 src/main/generated/data/cosmere/advancements/core/mine_stone.json create mode 100644 src/main/generated/data/cosmere/advancements/core/root.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/atium.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/brass.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/bronze.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/chromium.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/copper.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/electrum.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/gold.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/iron.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/pewter.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/root.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/steel.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/tin.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/zinc.json create mode 100644 src/main/generated/data/cosmere/advancements/hemalurgy/root.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json create mode 100644 src/main/generated/data/cosmere/tags/items/spike.json create mode 100644 src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java create mode 100644 src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java create mode 100644 src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java create mode 100644 src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java create mode 100644 src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java rename src/main/java/leaf/cosmere/datagen/{ => blocks}/BlockModelsGen.java (97%) rename src/main/java/leaf/cosmere/datagen/{ => blocks}/BlockTagsGen.java (96%) rename src/main/java/leaf/cosmere/datagen/{ => items}/ItemModelsGen.java (98%) rename src/main/java/leaf/cosmere/datagen/{ => items}/ItemTagsGen.java (90%) rename src/main/java/leaf/cosmere/datagen/{ => language}/EngLangGen.java (75%) rename src/main/java/leaf/cosmere/datagen/{ => loottables}/BlockLootTableGen.java (94%) rename src/main/java/leaf/cosmere/datagen/{ => loottables}/LootTableGen.java (94%) create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java create mode 100644 src/main/java/leaf/cosmere/utils/helpers/StringHelper.java create mode 100644 src/main/resources/data/cosmere/advancements/grant_book_on_first_join.json create mode 100644 src/main/resources/data/cosmere/loot_tables/grant_book_on_first_join.json diff --git a/Changelog.md b/Changelog.md index a1c93b320..63aacd935 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,13 +1,20 @@ The Cosmere Project - For 1.16 Minecraft +B17 + +Added a creative mode only shard blade to test a model that was created using blockbench. +Fixing some bugs related to soothing and rioting. May have to look into updating the entity goals, since it doesn't seem to affect passive mobs +Initial framework for patchouli datagen provider. Wont have to make a couple hundred json completely by hand anymore +Initial framework for advancement datagen provider. +Visual updates to ring/bracelet png. + B16 Auto select a power if none are selected. Only really relevant for first time joining world. Fixed crash from mousing over creative debug hemalurgy spike that gives all powers in inventory. Spikes now show up in more varied locations based on curio slot. Remove key bind check on most allomancy -added a creative mode only shard blade to test a model that was created using blockbench. -fixing some bugs related to soothing and rioting. May have to look into updating the entity goals, since it doesn't seem to affect passive mobs + B15 diff --git a/gradle.properties b/gradle.properties index e64c08f66..e395de260 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # -#Fri May 21 17:55:17 NZST 2021 +#Sun Jul 18 16:42:05 NZST 2021 mappings_version=20210309-1.16.5 forge_version=1.16.5-36.1.0 org.gradle.daemon=false @@ -11,5 +11,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 curios_version=1.16.5-4.0.5.1 mod_version=0.3.1 -build_number=16 +build_number=17 patchouli_version=1.16.4-50 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index b30b55263..89ba8b22a 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -3e85f76d55843632fb3dfa1ac16665029ae51448 assets/cosmere/lang/en_us.json +29e7bd5330b3b923a7b8e2cb6a00ae962414120e assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json @@ -208,6 +208,45 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracele b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/zinc_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/zinc_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/aluminum.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/atium.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bendalloy.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/brass.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bronze.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/cadmium.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/chromium.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/copper.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/duralumin.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/electrum.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/gold.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/iron.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/nicrosil.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/pewter.json +f4b3993f461f82b48ff30eb6eb28b0a99721213c data/cosmere/advancements/allomancy/root.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/steel.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/tin.json +fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/zinc.json +5be2dd766b670c65d5a918b91b782c924d981ec8 data/cosmere/advancements/core/mine_stone.json +8111d290678c7f53e005d8aeb84d73d23cade9fe data/cosmere/advancements/core/root.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/aluminum.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/atium.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bendalloy.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/brass.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bronze.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/cadmium.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/chromium.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/copper.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/duralumin.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/electrum.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/gold.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/iron.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/nicrosil.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/pewter.json +0dd7fc386c7db8eb1b7324caba41486e8bbc60b8 data/cosmere/advancements/feruchemy/root.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/steel.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/tin.json +bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/zinc.json +a398a16dddf60016e211e242f05f653364890dec data/cosmere/advancements/hemalurgy/root.json ab512e49bf64eb8c2e3b799eec207ae80ca0e223 data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json 8caa4c55f7de56c8f4a0c9552aa1976a1f9ef3c8 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json 6b9f11fdeeeadbcc31481a4d52a5c19a8ec1188c data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json @@ -459,6 +498,62 @@ b9543382e9ce98cefaea9ba5fc7fda19fdebb73a data/cosmere/loot_tables/blocks/steel_b 74a449937f84466b8b8796cccc115a632fa194f7 data/cosmere/loot_tables/blocks/tin_ore.json 05d8a0b0c9c41fdfda2aaa7132a01fce3f94db1a data/cosmere/loot_tables/blocks/zinc_block.json f64f747e9fef16cbd9f5fda5d5bea0e5c9073b96 data/cosmere/loot_tables/blocks/zinc_ore.json +46c4837b2f971e90f8afdc480f08f8cd5e60fa37 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json +8edf01b68f9e8fbba6b91358507240313ac5ff23 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json +f95b389fa24ceb0f69609c04812443232ac5e96c data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json +a1ea0b0941a7aa11e598176f56b6c761626940e8 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json +52946b0b3cda9a5ef67cafc8478c65e2ad21c7f6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json +c69d3f8400bc6f3e287e0f6e0ca958326584a0ec data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json +f82614dde57cc23adeabc9f77b604049e550e3fc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json +eaee86596fb39c19706ca4f760bd7c8562c47324 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json +c92640c2887bddf830cd1f347e527e9e5e51cc8f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json +7ce1344b1338ecc1a48aa1cb60884f1b795c27cc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json +e818dbf642ee06dbf217984c365fb38ba35d0267 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json +1d7224c9c3f96a095e4d035b9de17536e69190d8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json +0e7de0a989b908bcc586d0912fd12a6af7071999 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json +11801e3b49d5f5ae59d4ccafb833bc3372c69e28 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json +ece30aa503d0f189c56c30dafdeb30d8dcd9adc9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json +c5ff75d5feef35a778e59ecfaab0def1b25d38bc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json +5038beef95d25ff115efdc48c76a92dfae1d2ebf data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json +fbd4cc552199f555674923f4990373de6bc4667f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json +bb2f0b55a950c58f8e6c5b80907f498578b2d91b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json +906b21ce375cea37513cb6a09c2643295c1fd6d0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json +2e960b5355f77cbff7074e8ac3b384c5fb2baa93 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json +e507645841d29dd59b28aead198089100af08d36 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json +f028d57776521b0ac29e4f06086272e0d2652d3e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json +51ba03788ed162dbb8fee4c854270d970a49bbab data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json +ed1b12e36db8aeb4845191778a00ecdabba87b13 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json +965e059a712b69b344351efab8bf1116b1240a92 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json +5a856665f888fdd72e21f31c148c761a8952a459 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json +765a07e84eaadad09141bd685a689c5b5edecf89 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json +c48f1da3c997d6c4bc657a249fbc3a6b2d3a4080 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json +5d6a523309a773e8d858bb75b3abe34ca1e73de7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json +31782bb61a8825e8db918812a238d13aab88b7c8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json +c009a2c7fcf9579ed29e44f58a757a72ba745339 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json +bf984299a06ddca74348e6f94f31e84b69788beb data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json +1bf116e5dd7e113fe4ca60944360857c5b8ace30 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json +314bacbd0d0e9f9a0ed25559328851fe03c077aa data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json +02027a198d15381cd70997502adf151e0b20b38e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json +6ed1546706b86191948b2ebdb96cc2f1d85e4631 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json +30a3298737e37af35eb2396de6ae832d02a269e9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json +0f591cd5c97282338bdc30f97c054c33da541be9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json +f444f8be35beae1a18c36031b61e7cc79c925022 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json +a534f1356f2b92fef1d2b00da60298ab687b133a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json +e77823dd6937d3a7d8ce88f05fef7c805a6e5970 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json +7b40b582a860e338b28cf0b160addd1eaa51edf1 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json +241bb01d9a2b725086dd121939293f010d1eb6f0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json +7b2b0584354a0f2fdb5713f21648d7b8686d21bd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json +2e63acd2d22b1cc735aac36b6ec7045129dc364f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json +46a3076a2e7c530caf0065f0e21dc89ad455582b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json +498eb1d9e6d47479f04cfdb1f53c9916745adfa7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json +f21963ac121456bb07b58b22f2cbc0547cf2adef data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json +94d0d24931561c5ec842d2f3227639f13df3f48a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json +e3274b4c0afa58e7398b392f56aef69713415105 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json +543d17672a2549a124bc4b6ecd9b31f57a86582e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json +7c73bfe4ad333a3f04ff5b31d85ec069c5150696 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json +479519e22151caefb9566658d708b733a5c2f0bd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json +d6fc47c03247238c43edde161d2f4895c03708a7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json +aa1907ef13e169b4879b82f8e07a15fb083a3b30 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json ef929c9d842ecbe88bce267f06307ec24586f3bd data/cosmere/recipes/alloying/blend/bendalloy.json 8bfd08347f094726f7f398b1ce406a7d8b7600f4 data/cosmere/recipes/alloying/blend/brass.json eb541ff21f858cc1553b142cad3ad0365e0bedbf data/cosmere/recipes/alloying/blend/bronze.json @@ -679,6 +774,7 @@ be0661d2dd2fb5b6bede37848e9461b6c1806a1d data/cosmere/recipes/zinc_ingot_from_bl ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_metalmind.json d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json b13e7ce18075d01f96e28353132144b271ddfa08 data/cosmere/recipes/zinc_spike.json +b37675f80320064d0f85e5df877ce3291f7e861c data/cosmere/tags/items/spike.json 6b0291b7ca4411d32c2e8892f97decbbcd600d54 data/curios/tags/items/bracelet.json b37675f80320064d0f85e5df877ce3291f7e861c data/curios/tags/items/curio.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index f2030c152..ccce36b2a 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -35,6 +35,82 @@ "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", + "cosmere.category.allomancy": "Allomancy", + "cosmere.category.basics": "Basics", + "cosmere.category.feruchemy": "Feruchemy", + "cosmere.category.hemalurgy": "Hemalurgy", + "cosmere.entry.allomantic_aluminum": "Allomantic Aluminum", + "cosmere.entry.allomantic_atium": "Allomantic Atium", + "cosmere.entry.allomantic_bendalloy": "Allomantic Bendalloy", + "cosmere.entry.allomantic_brass": "Allomantic Brass", + "cosmere.entry.allomantic_bronze": "Allomantic Bronze", + "cosmere.entry.allomantic_cadmium": "Allomantic Cadmium", + "cosmere.entry.allomantic_chromium": "Allomantic Chromium", + "cosmere.entry.allomantic_copper": "Allomantic Copper", + "cosmere.entry.allomantic_duralumin": "Allomantic Duralumin", + "cosmere.entry.allomantic_electrum": "Allomantic Electrum", + "cosmere.entry.allomantic_gold": "Allomantic Gold", + "cosmere.entry.allomantic_harmonium": "Allomantic Harmonium", + "cosmere.entry.allomantic_iron": "Allomantic Iron", + "cosmere.entry.allomantic_lead": "Allomantic Lead", + "cosmere.entry.allomantic_lerasatium": "Allomantic Lerasatium", + "cosmere.entry.allomantic_lerasium": "Allomantic Lerasium", + "cosmere.entry.allomantic_malatium": "Allomantic Malatium", + "cosmere.entry.allomantic_nickel": "Allomantic Nickel", + "cosmere.entry.allomantic_nicrosil": "Allomantic Nicrosil", + "cosmere.entry.allomantic_pewter": "Allomantic Pewter", + "cosmere.entry.allomantic_silver": "Allomantic Silver", + "cosmere.entry.allomantic_steel": "Allomantic Steel", + "cosmere.entry.allomantic_tin": "Allomantic Tin", + "cosmere.entry.allomantic_zinc": "Allomantic Zinc", + "cosmere.entry.feruchemical_aluminum": "Feruchemical Aluminum", + "cosmere.entry.feruchemical_atium": "Feruchemical Atium", + "cosmere.entry.feruchemical_bendalloy": "Feruchemical Bendalloy", + "cosmere.entry.feruchemical_brass": "Feruchemical Brass", + "cosmere.entry.feruchemical_bronze": "Feruchemical Bronze", + "cosmere.entry.feruchemical_cadmium": "Feruchemical Cadmium", + "cosmere.entry.feruchemical_chromium": "Feruchemical Chromium", + "cosmere.entry.feruchemical_copper": "Feruchemical Copper", + "cosmere.entry.feruchemical_duralumin": "Feruchemical Duralumin", + "cosmere.entry.feruchemical_electrum": "Feruchemical Electrum", + "cosmere.entry.feruchemical_gold": "Feruchemical Gold", + "cosmere.entry.feruchemical_harmonium": "Feruchemical Harmonium", + "cosmere.entry.feruchemical_iron": "Feruchemical Iron", + "cosmere.entry.feruchemical_lead": "Feruchemical Lead", + "cosmere.entry.feruchemical_lerasatium": "Feruchemical Lerasatium", + "cosmere.entry.feruchemical_lerasium": "Feruchemical Lerasium", + "cosmere.entry.feruchemical_malatium": "Feruchemical Malatium", + "cosmere.entry.feruchemical_nickel": "Feruchemical Nickel", + "cosmere.entry.feruchemical_nicrosil": "Feruchemical Nicrosil", + "cosmere.entry.feruchemical_pewter": "Feruchemical Pewter", + "cosmere.entry.feruchemical_silver": "Feruchemical Silver", + "cosmere.entry.feruchemical_steel": "Feruchemical Steel", + "cosmere.entry.feruchemical_tin": "Feruchemical Tin", + "cosmere.entry.feruchemical_zinc": "Feruchemical Zinc", + "cosmere.entry.hemalurgic_aluminum": "Hemalurgic Aluminum", + "cosmere.entry.hemalurgic_atium": "Hemalurgic Atium", + "cosmere.entry.hemalurgic_bendalloy": "Hemalurgic Bendalloy", + "cosmere.entry.hemalurgic_brass": "Hemalurgic Brass", + "cosmere.entry.hemalurgic_bronze": "Hemalurgic Bronze", + "cosmere.entry.hemalurgic_cadmium": "Hemalurgic Cadmium", + "cosmere.entry.hemalurgic_chromium": "Hemalurgic Chromium", + "cosmere.entry.hemalurgic_copper": "Hemalurgic Copper", + "cosmere.entry.hemalurgic_duralumin": "Hemalurgic Duralumin", + "cosmere.entry.hemalurgic_electrum": "Hemalurgic Electrum", + "cosmere.entry.hemalurgic_gold": "Hemalurgic Gold", + "cosmere.entry.hemalurgic_harmonium": "Hemalurgic Harmonium", + "cosmere.entry.hemalurgic_iron": "Hemalurgic Iron", + "cosmere.entry.hemalurgic_lead": "Hemalurgic Lead", + "cosmere.entry.hemalurgic_lerasatium": "Hemalurgic Lerasatium", + "cosmere.entry.hemalurgic_lerasium": "Hemalurgic Lerasium", + "cosmere.entry.hemalurgic_malatium": "Hemalurgic Malatium", + "cosmere.entry.hemalurgic_nickel": "Hemalurgic Nickel", + "cosmere.entry.hemalurgic_nicrosil": "Hemalurgic Nicrosil", + "cosmere.entry.hemalurgic_pewter": "Hemalurgic Pewter", + "cosmere.entry.hemalurgic_silver": "Hemalurgic Silver", + "cosmere.entry.hemalurgic_steel": "Hemalurgic Steel", + "cosmere.entry.hemalurgic_tin": "Hemalurgic Tin", + "cosmere.entry.hemalurgic_zinc": "Hemalurgic Zinc", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", "effect.cosmere.allomancy_boost": "Allomancy Boost", "effect.cosmere.burning_copper": "Burning Copper", @@ -239,75 +315,75 @@ "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.aluminum_gnat": "Aluminum Gnat", - "manifestation.cosmere.aluminum_gnat.description": "Users can burn ALUMINUM", + "manifestation.cosmere.aluminum_gnat.description": "Users can burn aluminum", "manifestation.cosmere.archivist": "Archivist", - "manifestation.cosmere.archivist.description": "Users can tap COPPER", + "manifestation.cosmere.archivist.description": "Users can tap copper", "manifestation.cosmere.augur": "Augur", - "manifestation.cosmere.augur.description": "Users can burn GOLD", + "manifestation.cosmere.augur.description": "Users can burn gold", "manifestation.cosmere.bloodmaker": "Bloodmaker", - "manifestation.cosmere.bloodmaker.description": "Users can tap GOLD", + "manifestation.cosmere.bloodmaker.description": "Users can tap gold", "manifestation.cosmere.brute": "Brute", - "manifestation.cosmere.brute.description": "Users can tap PEWTER", + "manifestation.cosmere.brute.description": "Users can tap pewter", "manifestation.cosmere.coinshot": "Coinshot", - "manifestation.cosmere.coinshot.description": "Users can burn STEEL", + "manifestation.cosmere.coinshot.description": "Users can burn steel", "manifestation.cosmere.connector": "Connector", - "manifestation.cosmere.connector.description": "Users can tap DURALUMIN", + "manifestation.cosmere.connector.description": "Users can tap duralumin", "manifestation.cosmere.duralumin_gnat": "Duralumin Gnat", - "manifestation.cosmere.duralumin_gnat.description": "Users can burn DURALUMIN", + "manifestation.cosmere.duralumin_gnat.description": "Users can burn duralumin", "manifestation.cosmere.elderling": "Elderling", - "manifestation.cosmere.elderling.description": "Users can tap ATIUM", + "manifestation.cosmere.elderling.description": "Users can tap atium", "manifestation.cosmere.firesoul": "Firesoul", - "manifestation.cosmere.firesoul.description": "Users can tap BRASS", + "manifestation.cosmere.firesoul.description": "Users can tap brass", "manifestation.cosmere.gasper": "Gasper", - "manifestation.cosmere.gasper.description": "Users can tap CADMIUM", + "manifestation.cosmere.gasper.description": "Users can tap cadmium", "manifestation.cosmere.leecher": "Leecher", - "manifestation.cosmere.leecher.description": "Users can burn CHROMIUM", + "manifestation.cosmere.leecher.description": "Users can burn chromium", "manifestation.cosmere.lurcher": "Lurcher", - "manifestation.cosmere.lurcher.description": "Users can burn IRON", + "manifestation.cosmere.lurcher.description": "Users can burn iron", "manifestation.cosmere.nicroburst": "Nicroburst", - "manifestation.cosmere.nicroburst.description": "Users can burn NICROSIL", + "manifestation.cosmere.nicroburst.description": "Users can burn nicrosil", "manifestation.cosmere.none": "None", "manifestation.cosmere.none.description": "No Special Powers", "manifestation.cosmere.oracle": "Oracle", - "manifestation.cosmere.oracle.description": "Users can burn ELECTRUM", + "manifestation.cosmere.oracle.description": "Users can burn electrum", "manifestation.cosmere.pinnacle": "Pinnacle", - "manifestation.cosmere.pinnacle.description": "Users can tap ELECTRUM", + "manifestation.cosmere.pinnacle.description": "Users can tap electrum", "manifestation.cosmere.pulser": "Pulser", - "manifestation.cosmere.pulser.description": "Users can burn CADMIUM", + "manifestation.cosmere.pulser.description": "Users can burn cadmium", "manifestation.cosmere.rioter": "Rioter", - "manifestation.cosmere.rioter.description": "Users can burn ZINC", + "manifestation.cosmere.rioter.description": "Users can burn zinc", "manifestation.cosmere.seeker": "Seeker", - "manifestation.cosmere.seeker.description": "Users can burn BRONZE", + "manifestation.cosmere.seeker.description": "Users can burn bronze", "manifestation.cosmere.seer": "Seer", - "manifestation.cosmere.seer.description": "Users can burn ATIUM", + "manifestation.cosmere.seer.description": "Users can burn atium", "manifestation.cosmere.sentry": "Sentry", - "manifestation.cosmere.sentry.description": "Users can tap BRONZE", + "manifestation.cosmere.sentry.description": "Users can tap bronze", "manifestation.cosmere.skimmer": "Skimmer", - "manifestation.cosmere.skimmer.description": "Users can tap IRON", + "manifestation.cosmere.skimmer.description": "Users can tap iron", "manifestation.cosmere.slider": "Slider", - "manifestation.cosmere.slider.description": "Users can burn BENDALLOY", + "manifestation.cosmere.slider.description": "Users can burn bendalloy", "manifestation.cosmere.smoker": "Smoker", - "manifestation.cosmere.smoker.description": "Users can burn COPPER", + "manifestation.cosmere.smoker.description": "Users can burn copper", "manifestation.cosmere.soother": "Soother", - "manifestation.cosmere.soother.description": "Users can burn BRASS", + "manifestation.cosmere.soother.description": "Users can burn brass", "manifestation.cosmere.soulbearer": "Soulbearer", - "manifestation.cosmere.soulbearer.description": "Users can tap NICROSIL", + "manifestation.cosmere.soulbearer.description": "Users can tap nicrosil", "manifestation.cosmere.sparker": "Sparker", - "manifestation.cosmere.sparker.description": "Users can tap ZINC", + "manifestation.cosmere.sparker.description": "Users can tap zinc", "manifestation.cosmere.spinner": "Spinner", - "manifestation.cosmere.spinner.description": "Users can tap CHROMIUM", + "manifestation.cosmere.spinner.description": "Users can tap chromium", "manifestation.cosmere.steelrunner": "Steelrunner", - "manifestation.cosmere.steelrunner.description": "Users can tap STEEL", + "manifestation.cosmere.steelrunner.description": "Users can tap steel", "manifestation.cosmere.subsumer": "Subsumer", - "manifestation.cosmere.subsumer.description": "Users can tap BENDALLOY", + "manifestation.cosmere.subsumer.description": "Users can tap bendalloy", "manifestation.cosmere.thug": "Thug", - "manifestation.cosmere.thug.description": "Users can burn PEWTER", + "manifestation.cosmere.thug.description": "Users can burn pewter", "manifestation.cosmere.tineye": "Tineye", - "manifestation.cosmere.tineye.description": "Users can burn TIN", + "manifestation.cosmere.tineye.description": "Users can burn tin", "manifestation.cosmere.trueself": "Trueself", - "manifestation.cosmere.trueself.description": "Users can tap ALUMINUM", - "manifestation.cosmere.windwhisper": "Windwhisper", - "manifestation.cosmere.windwhisper.description": "Users can tap TIN", + "manifestation.cosmere.trueself.description": "Users can tap aluminum", + "manifestation.cosmere.windwhisperer": "Windwhisperer", + "manifestation.cosmere.windwhisperer.description": "Users can tap tin", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/atium.json b/src/main/generated/data/cosmere/advancements/allomancy/atium.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/atium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/brass.json b/src/main/generated/data/cosmere/advancements/allomancy/brass.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/brass.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bronze.json b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/chromium.json b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/copper.json b/src/main/generated/data/cosmere/advancements/allomancy/copper.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/copper.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/electrum.json b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/gold.json b/src/main/generated/data/cosmere/advancements/allomancy/gold.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/gold.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/iron.json b/src/main/generated/data/cosmere/advancements/allomancy/iron.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/iron.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/pewter.json b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/root.json b/src/main/generated/data/cosmere/advancements/allomancy/root.json new file mode 100644 index 000000000..51a5facb1 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/root.json @@ -0,0 +1,29 @@ +{ + "display": { + "icon": { + "item": "cosmere:guide" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" + }, + "criteria": { + "tick": { + "trigger": "minecraft:tick", + "conditions": {} + } + }, + "requirements": [ + [ + "tick" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/steel.json b/src/main/generated/data/cosmere/advancements/allomancy/steel.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/steel.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/tin.json b/src/main/generated/data/cosmere/advancements/allomancy/tin.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/tin.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/zinc.json b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json new file mode 100644 index 000000000..2ad158432 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:allomancy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.allomancy.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/core/mine_stone.json b/src/main/generated/data/cosmere/advancements/core/mine_stone.json new file mode 100644 index 000000000..e31c867c4 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/core/mine_stone.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:core/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.mine_stone.title" + }, + "description": { + "translate": "advancements.cosmere.mine_stone.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/core/root.json b/src/main/generated/data/cosmere/advancements/core/root.json new file mode 100644 index 000000000..a7308ee21 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/core/root.json @@ -0,0 +1,29 @@ +{ + "display": { + "icon": { + "item": "cosmere:guide" + }, + "title": { + "translate": "advancements.cosmere.root.title" + }, + "description": { + "translate": "advancements.cosmere.root.description" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" + }, + "criteria": { + "tick": { + "trigger": "minecraft:tick", + "conditions": {} + } + }, + "requirements": [ + [ + "tick" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/brass.json b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/copper.json b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/gold.json b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/iron.json b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/root.json b/src/main/generated/data/cosmere/advancements/feruchemy/root.json new file mode 100644 index 000000000..85f331ae7 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/root.json @@ -0,0 +1,29 @@ +{ + "display": { + "icon": { + "item": "cosmere:guide" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" + }, + "criteria": { + "tick": { + "trigger": "minecraft:tick", + "conditions": {} + } + }, + "requirements": [ + [ + "tick" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/steel.json b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/tin.json b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json new file mode 100644 index 000000000..e8cb7a13f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json @@ -0,0 +1,36 @@ +{ + "parent": "minecraft:feruchemy/root", + "display": { + "icon": { + "item": "minecraft:wooden_pickaxe", + "nbt": "{Damage:0}" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "criteria": { + "get_stone": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "minecraft:stone_tool_materials" + } + ] + } + } + }, + "requirements": [ + [ + "get_stone" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/hemalurgy/root.json b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json new file mode 100644 index 000000000..fd659b62f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json @@ -0,0 +1,35 @@ +{ + "display": { + "icon": { + "item": "cosmere:guide" + }, + "title": { + "translate": "advancements.cosmere.hemalurgy.title" + }, + "description": { + "translate": "advancements.cosmere.hemalurgy.description" + }, + "frame": "task", + "show_toast": false, + "announce_to_chat": false, + "hidden": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" + }, + "criteria": { + "spike": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "cosmere:spike" + } + ] + } + } + }, + "requirements": [ + [ + "spike" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json new file mode 100644 index 000000000..867aea395 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json @@ -0,0 +1,7 @@ +{ + "name": "cosmere.category.allomancy", + "description": "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", + "icon": "cosmere:metal_vial", + "sortnum": 1, + "secret": false +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json new file mode 100644 index 000000000..48de71b6d --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json @@ -0,0 +1,7 @@ +{ + "name": "cosmere.category.basics", + "description": "Everything you\u0027ve learnt so far", + "icon": "cosmere:guide", + "sortnum": 0, + "secret": false +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json new file mode 100644 index 000000000..7a9321d8c --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json @@ -0,0 +1,7 @@ +{ + "name": "cosmere.category.feruchemy", + "description": "The art of equivalent exchange when it comes to the body. ", + "icon": "cosmere:copper_bracelet_metalmind", + "sortnum": 2, + "secret": false +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json new file mode 100644 index 000000000..239b4c5f0 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json @@ -0,0 +1,7 @@ +{ + "name": "cosmere.category.hemalurgy", + "description": "The forbidden field of magic that takes from others so that you may get stronger.", + "icon": "cosmere:atium_spike", + "sortnum": 3, + "secret": true +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json new file mode 100644 index 000000000..3f98fbc1e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_aluminum", + "category": "cosmere.category.allomancy", + "icon": "aluminum_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who can only burn aluminum is known as a \"Aluminum Gnat\" as they gain no discernible effect from burning their metal." + }, + { + "type": "text", + "text": "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 8 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json new file mode 100644 index 000000000..4e7b2de7a --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json @@ -0,0 +1,18 @@ +{ + "name": "cosmere.entry.allomantic_atium", + "category": "cosmere.category.allomancy", + "icon": "atium_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns atium is known as a \"Seer\"." + }, + { + "type": "text" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json new file mode 100644 index 000000000..b9565a5d8 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_bendalloy", + "category": "cosmere.category.allomancy", + "icon": "bendalloy_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns bendalloy is known as a \"Slider\"." + }, + { + "type": "text", + "text": "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 13 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json new file mode 100644 index 000000000..8e61c67e7 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_brass", + "category": "cosmere.category.allomancy", + "icon": "brass_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns brass is known as a \"Soother\"." + }, + { + "type": "text", + "text": "In allomancy, brass gives the ability to \"soothe\" the emotions of others." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 5 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json new file mode 100644 index 000000000..1c094aaf5 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_bronze", + "category": "cosmere.category.allomancy", + "icon": "bronze_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns bronze is known as a \"Seeker\"." + }, + { + "type": "text", + "text": "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.\n\nCopper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json new file mode 100644 index 000000000..4c6b18746 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_cadmium", + "category": "cosmere.category.allomancy", + "icon": "cadmium_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns cadmium is known as a \"Pulser\"." + }, + { + "type": "text", + "text": "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 12 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json new file mode 100644 index 000000000..7140a841e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_chromium", + "category": "cosmere.category.allomancy", + "icon": "chromium_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns chromium is known as a \"Leecher\"." + }, + { + "type": "text", + "text": "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json new file mode 100644 index 000000000..45e0fe360 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_copper", + "category": "cosmere.category.allomancy", + "icon": "copper_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns copper is known as a \"Smoker\"." + }, + { + "type": "text", + "text": "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a \u0027coppercloud\u0027 which hides Allomancy from being detected by Bronze. The Allomancer also becomes immune to emotional Allomancy, though this effect is not felt by those around them.\n\nCopperclouds are generally not piercible but those with exceptional strength in Bronze may do so." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 6 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json new file mode 100644 index 000000000..b17cb9b9a --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_duralumin", + "category": "cosmere.category.allomancy", + "icon": "duralumin_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who can only burn duralumin is known as a \"Duralumin Gnat\" as they gain no discernible effect from burning their metal." + }, + { + "type": "text", + "text": "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 9 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json new file mode 100644 index 000000000..3bd77c262 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_electrum", + "category": "cosmere.category.allomancy", + "icon": "electrum_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns electrum is known as a \"Oracle\"." + }, + { + "type": "text", + "text": "$(#f00)(NYI)$()" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 15 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json new file mode 100644 index 000000000..2f5f23646 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_gold", + "category": "cosmere.category.allomancy", + "icon": "gold_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns gold is known as a \"Augur\"." + }, + { + "type": "text", + "text": "$(#f00)(NYI)$()" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 14 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json new file mode 100644 index 000000000..42740d32b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_iron", + "category": "cosmere.category.allomancy", + "icon": "iron_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns iron is known as a \"Lurcher\"." + }, + { + "type": "text", + "text": "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them. The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json new file mode 100644 index 000000000..e0f87f35b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_nicrosil", + "category": "cosmere.category.allomancy", + "icon": "nicrosil_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns nicrosil is known as a \"Nicroburst\"." + }, + { + "type": "text", + "text": "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 11 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json new file mode 100644 index 000000000..eb124777c --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_pewter", + "category": "cosmere.category.allomancy", + "icon": "pewter_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns pewter is known as a \"Thug\"." + }, + { + "type": "text", + "text": "Pewter is an allomatic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself.\n\nThe major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 3 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json new file mode 100644 index 000000000..747481ac0 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_steel", + "category": "cosmere.category.allomancy", + "icon": "steel_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns steel is known as a \"Coinshot\"." + }, + { + "type": "text", + "text": "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object.Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction.\nClever allomancers use steel to allow themselves to fly through the air." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json new file mode 100644 index 000000000..bdb8d3729 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_tin", + "category": "cosmere.category.allomancy", + "icon": "tin_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns tin is known as a \"Tineye\"." + }, + { + "type": "text", + "text": "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 2 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json new file mode 100644 index 000000000..1e44ddb1e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json @@ -0,0 +1,19 @@ +{ + "name": "cosmere.entry.allomantic_zinc", + "category": "cosmere.category.allomancy", + "icon": "zinc_ingot", + "pages": [ + { + "type": "text", + "text": "A misting who burns zinc is known as a \"Rioter\"." + }, + { + "type": "text", + "text": "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\"" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 4 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json new file mode 100644 index 000000000..c293b5f72 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_aluminum", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:aluminum_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.trueself.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 8 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json new file mode 100644 index 000000000..c17cbd8bb --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_atium", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:atium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.elderling.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json new file mode 100644 index 000000000..05158718b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_bendalloy", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:bendalloy_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.subsumer.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 13 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json new file mode 100644 index 000000000..1b2b96fba --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_brass", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:brass_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.firesoul.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 5 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json new file mode 100644 index 000000000..a5e00f9d3 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_bronze", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:bronze_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.sentry.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json new file mode 100644 index 000000000..d3b7e0d36 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_cadmium", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:cadmium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.gasper.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 12 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json new file mode 100644 index 000000000..420046dad --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_chromium", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:chromium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.spinner.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json new file mode 100644 index 000000000..4de57de43 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_copper", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:copper_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.archivist.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 6 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json new file mode 100644 index 000000000..9250d2f0d --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_duralumin", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:duralumin_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.connector.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 9 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json new file mode 100644 index 000000000..98be0c87f --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_electrum", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:electrum_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.pinnacle.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 15 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json new file mode 100644 index 000000000..9859f478c --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_gold", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:gold_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.bloodmaker.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 14 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json new file mode 100644 index 000000000..842c48fda --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_iron", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:iron_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.skimmer.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json new file mode 100644 index 000000000..fcb61b3c7 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_nicrosil", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:nicrosil_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.soulbearer.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 11 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json new file mode 100644 index 000000000..d35578e3e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_pewter", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:pewter_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.brute.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 3 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json new file mode 100644 index 000000000..9feda4e69 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_steel", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:steel_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.steelrunner.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json new file mode 100644 index 000000000..6922259b8 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_tin", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:tin_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.windwhisperer.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 2 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json new file mode 100644 index 000000000..fea25a4ad --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.feruchemical_zinc", + "category": "cosmere.category.feruchemy", + "icon": "cosmere:zinc_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.sparker.description" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 4 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json new file mode 100644 index 000000000..c8173cf99 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_aluminum", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:aluminum_spike", + "pages": [ + { + "type": "text", + "text": "Removes all powers." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 8 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json new file mode 100644 index 000000000..b5afdb42b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_atium", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:atium_spike", + "pages": [ + { + "type": "text", + "text": "Steals an Allomantic or Feruchemical power. Must be refined." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json new file mode 100644 index 000000000..f20b22272 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_bendalloy", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:bendalloy_spike", + "pages": [ + { + "type": "text", + "text": "Steals a Spiritual Feruchemical power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 13 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json new file mode 100644 index 000000000..e19741247 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_brass", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:brass_spike", + "pages": [ + { + "type": "text", + "text": "Steals a cognitive feruchemical power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 5 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json new file mode 100644 index 000000000..8a6d79c87 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_bronze", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:bronze_spike", + "pages": [ + { + "type": "text", + "text": "Steals a Mental Allomantic power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json new file mode 100644 index 000000000..64d7c5246 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_cadmium", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:cadmium_spike", + "pages": [ + { + "type": "text", + "text": "Steals a Temporal Allomantic power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 12 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json new file mode 100644 index 000000000..5334d85c5 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_chromium", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:chromium_spike", + "pages": [ + { + "type": "text", + "text": "Might steal destiny..." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json new file mode 100644 index 000000000..8ad24f3ec --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_copper", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:copper_spike", + "pages": [ + { + "type": "text", + "text": "Steals mental fortitude, memory, and intelligence." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 6 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json new file mode 100644 index 000000000..8b09b2880 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_duralumin", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:duralumin_spike", + "pages": [ + { + "type": "text", + "text": "Steals Connection/Identity." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 9 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json new file mode 100644 index 000000000..f2c24e730 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_electrum", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:electrum_spike", + "pages": [ + { + "type": "text", + "text": "Steals an Enhancement Allomantic power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 15 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json new file mode 100644 index 000000000..9c17fd6f3 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_gold", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:gold_spike", + "pages": [ + { + "type": "text", + "text": "Steals a Hybrid Feruchemical power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 14 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json new file mode 100644 index 000000000..36380476b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_iron", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:iron_spike", + "pages": [ + { + "type": "text", + "text": "Steals physical strength." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json new file mode 100644 index 000000000..4334c312e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_lerasium", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:lerasium_spike", + "pages": [ + { + "type": "text", + "text": "Steals all powers..." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 17 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json new file mode 100644 index 000000000..a5b907c67 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_nicrosil", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:nicrosil_spike", + "pages": [ + { + "type": "text", + "text": "Steals Investiture." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 11 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json new file mode 100644 index 000000000..4135ac2f3 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_pewter", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:pewter_spike", + "pages": [ + { + "type": "text", + "text": "Steals a physical feruchemical power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 3 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json new file mode 100644 index 000000000..c6cb032b7 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_steel", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:steel_spike", + "pages": [ + { + "type": "text", + "text": "Steals a physical allomantic power." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json new file mode 100644 index 000000000..b6cf1ceae --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_tin", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:tin_spike", + "pages": [ + { + "type": "text", + "text": "Steals senses." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 2 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json new file mode 100644 index 000000000..69aac11d3 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json @@ -0,0 +1,15 @@ +{ + "name": "cosmere.entry.hemalurgic_zinc", + "category": "cosmere.category.hemalurgy", + "icon": "cosmere:zinc_spike", + "pages": [ + { + "type": "text", + "text": "Steals emotional fortitude." + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 4 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/tags/items/spike.json b/src/main/generated/data/cosmere/tags/items/spike.json new file mode 100644 index 000000000..1e0c006e9 --- /dev/null +++ b/src/main/generated/data/cosmere/tags/items/spike.json @@ -0,0 +1,23 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index d0037faf9..7a24e5c36 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -30,14 +30,14 @@ import java.util.Optional; /* -* All hope abandon ye who enter here. -* ,, -* W () -* |->< v -* | )(\/ -* You've found the monolith metal script! -* It ain't pretty, but I also don't really care :D -*/ + * All hope abandon ye who enter here. + * ,, + * W () + * |->< v + * | )(\/ + * You've found the monolith metal script! + * It ain't pretty, but I also don't really care :D -Leaf + */ public class Metals { @@ -144,8 +144,8 @@ public boolean hasHemalurgicEffect() case LERASATIUM: case HARMONIUM: case NICKEL: - case SILVER: case LEAD: + case SILVER: return false; default: return true; @@ -176,13 +176,13 @@ public boolean hasOre() case ALUMINUM: case CADMIUM: case CHROMIUM: - //case IRON: + //case IRON: // covered by minecraft case NICKEL: case COPPER: case ZINC: case SILVER: case TIN: - //case GOLD: + //case GOLD: // covered by minecraft case LEAD: return true; default: @@ -261,6 +261,7 @@ public HemalurgicSpikeItem getSpikeItem() { return (HemalurgicSpikeItem) ItemsRegistry.METAL_SPIKE.get(this).get(); } + public MetalRawOreItem getRawMetalItem() { if (this.isAlloy()) @@ -277,7 +278,7 @@ public MetalRawOreItem getRawMetalItem() public MetalBlock getBlock() { - return (MetalBlock) BlocksRegistry.METAL_BLOCKS.get(this).get(); + return BlocksRegistry.METAL_BLOCKS.get(this).get(); } public OreBlock getOreBlock() @@ -303,86 +304,58 @@ public ITag.INamedTag getMetalNuggetTag() public Color getColor() { - Color color; - switch (this) { default: case IRON: - color = MetalColor.IRON; - break; + return MetalColor.IRON; case STEEL: - color = MetalColor.STEEL; - break; + return MetalColor.STEEL; case TIN: - color = MetalColor.TIN; - break; + return MetalColor.TIN; case PEWTER: - color = MetalColor.PEWTER; - break; + return MetalColor.PEWTER; case ALUMINUM: - color = MetalColor.ALUMINUM; - break; + return MetalColor.ALUMINUM; case DURALUMIN: - color = MetalColor.DURALUMIN; - break; + return MetalColor.DURALUMIN; case CHROMIUM: - color = MetalColor.CHROMIUM; - break; + return MetalColor.CHROMIUM; case NICROSIL: - color = MetalColor.NICROSIL; - break; + return MetalColor.NICROSIL; case ZINC: - color = MetalColor.ZINC; - break; + return MetalColor.ZINC; case BRASS: - color = MetalColor.BRASS; - break; + return MetalColor.BRASS; case COPPER: - color = MetalColor.COPPER; - break; + return MetalColor.COPPER; case BRONZE: - color = MetalColor.BRONZE; - break; + return MetalColor.BRONZE; case GOLD: - color = MetalColor.GOLD; - break; + return MetalColor.GOLD; case ELECTRUM: - color = MetalColor.ELECTRUM; - break; + return MetalColor.ELECTRUM; case CADMIUM: - color = MetalColor.CADMIUM; - break; + return MetalColor.CADMIUM; case BENDALLOY: - color = MetalColor.BENDALLOY; - break; + return MetalColor.BENDALLOY; case LERASIUM: - color = MetalColor.LERASIUM; - break; + return MetalColor.LERASIUM; case ATIUM: - color = MetalColor.ATIUM; - break; + return MetalColor.ATIUM; case MALATIUM: - color = MetalColor.MALATIUM; - break; + return MetalColor.MALATIUM; case LERASATIUM: - color = MetalColor.LERASATIUM; - break; + return MetalColor.LERASATIUM; case HARMONIUM: - color = MetalColor.HARMONIUM; - break; + return MetalColor.HARMONIUM; case NICKEL: - color = MetalColor.NICKEL; - break; + return MetalColor.NICKEL; case LEAD: - color = MetalColor.LEAD; - break; + return MetalColor.LEAD; case SILVER: - color = MetalColor.SILVER; - break; + return MetalColor.SILVER; } - - return color; } public int getColorValue() @@ -392,73 +365,49 @@ public int getColorValue() public String getFerringName() { - String name; - switch (this) { case IRON: - name = FerringNames.IRON; - break; + return FerringNames.IRON; case STEEL: - name = FerringNames.STEEL; - break; + return FerringNames.STEEL; case TIN: - name = FerringNames.TIN; - break; + return FerringNames.TIN; case PEWTER: - name = FerringNames.PEWTER; - break; + return FerringNames.PEWTER; case ALUMINUM: - name = FerringNames.ALUMINUM; - break; + return FerringNames.ALUMINUM; case DURALUMIN: - name = FerringNames.DURALUMIN; - break; + return FerringNames.DURALUMIN; case CHROMIUM: - name = FerringNames.CHROMIUM; - break; + return FerringNames.CHROMIUM; case NICROSIL: - name = FerringNames.NICROSIL; - break; + return FerringNames.NICROSIL; case ZINC: - name = FerringNames.ZINC; - break; + return FerringNames.ZINC; case BRASS: - name = FerringNames.BRASS; - break; + return FerringNames.BRASS; case COPPER: - name = FerringNames.COPPER; - break; + return FerringNames.COPPER; case BRONZE: - name = FerringNames.BRONZE; - break; + return FerringNames.BRONZE; case GOLD: - name = FerringNames.GOLD; - break; + return FerringNames.GOLD; case ELECTRUM: - name = FerringNames.ELECTRUM; - break; + return FerringNames.ELECTRUM; case CADMIUM: - name = FerringNames.CADMIUM; - break; + return FerringNames.CADMIUM; case BENDALLOY: - name = FerringNames.BENDALLOY; - break; + return FerringNames.BENDALLOY; case ATIUM: - name = FerringNames.ATIUM; - break; + return FerringNames.ATIUM; case LERASATIUM: - name = FerringNames.ALL; - break; + return FerringNames.ALL; default: case LERASIUM: case MALATIUM: - name = "ferring_" + this.name().toLowerCase(); - break; + return "ferring_" + this.name().toLowerCase(); } - - - return name; } public boolean isPushMetal() @@ -499,72 +448,68 @@ public boolean isPullMetal() public String getMistingName() { - String name; - switch (this) { case IRON: - name = MistingNames.IRON; - break; + return MistingNames.IRON; + case STEEL: - name = MistingNames.STEEL; - break; + return MistingNames.STEEL; + case TIN: - name = MistingNames.TIN; - break; + return MistingNames.TIN; + case PEWTER: - name = MistingNames.PEWTER; - break; + return MistingNames.PEWTER; + case ALUMINUM: - name = MistingNames.ALUMINUM; - break; + return MistingNames.ALUMINUM; + case DURALUMIN: - name = MistingNames.DURALUMIN; - break; + return MistingNames.DURALUMIN; + case CHROMIUM: - name = MistingNames.CHROMIUM; - break; + return MistingNames.CHROMIUM; + case NICROSIL: - name = MistingNames.NICROSIL; - break; + return MistingNames.NICROSIL; + case ZINC: - name = MistingNames.ZINC; - break; + return MistingNames.ZINC; + case BRASS: - name = MistingNames.BRASS; - break; + return MistingNames.BRASS; + case COPPER: - name = MistingNames.COPPER; - break; + return MistingNames.COPPER; + case BRONZE: - name = MistingNames.BRONZE; - break; + return MistingNames.BRONZE; + case GOLD: - name = MistingNames.GOLD; - break; + return MistingNames.GOLD; + case ELECTRUM: - name = MistingNames.ELECTRUM; - break; + return MistingNames.ELECTRUM; + case CADMIUM: - name = MistingNames.CADMIUM; - break; + return MistingNames.CADMIUM; + case BENDALLOY: - name = MistingNames.BENDALLOY; - break; + return MistingNames.BENDALLOY; + case ATIUM: - name = MistingNames.ATIUM; - break; + return MistingNames.ATIUM; + case LERASIUM: - name = MistingNames.ALL; - break; + return MistingNames.ALL; + default: case MALATIUM: case LERASATIUM: - name = "misting_" + this.name().toLowerCase(); - break; - } + return "misting_" + this.name().toLowerCase(); - return name; + } } public Collection getHemalurgyStealWhitelist() @@ -626,6 +571,124 @@ public Collection getHemalurgyStealWhitelist() return null; } + public String getHemalurgicUseString() + { + switch (this) + { + case IRON: + return "Steals physical strength."; + case STEEL: + return "Steals a physical allomantic power."; + //Iron//Steel//Tin//Pewter + case TIN: + return "Steals senses."; + case PEWTER: + return "Steals a physical feruchemical power."; + //Iron//Steel//Tin//Pewter + case ZINC: + return "Steals emotional fortitude."; + case BRASS: + return "Steals a cognitive feruchemical power."; + //Zinc//Brass//Copper//Bronze + case COPPER: + return "Steals mental fortitude, memory, and intelligence."; + case BRONZE: + return "Steals a Mental Allomantic power."; + //Zinc//Brass//Copper//Bronze + case ALUMINUM: + return "Removes all powers."; + case DURALUMIN: + return "Steals Connection/Identity."; + case CHROMIUM: + return "Might steal destiny..."; + case NICROSIL: + return "Steals Investiture."; + case CADMIUM: + return "Steals a Temporal Allomantic power."; + //Cadmium//Bendalloy//Gold//Electrum + case GOLD: + return "Steals a Hybrid Feruchemical power."; + //Cadmium//Bendalloy//Gold//Electrum + case BENDALLOY: + return "Steals a Spiritual Feruchemical power."; + //Chromium//Nicrosil//Aluminum//Duralumin + case ELECTRUM: + return "Steals an Enhancement Allomantic power."; + //Chromium//Nicrosil//Aluminum//Duralumin + case ATIUM: + return "Steals an Allomantic or Feruchemical power. Must be refined."; + case LERASIUM: + return "Steals all powers..."; + } + + return "Unknown..."; + } + + public String GetAllomancyDescription() + { + switch (this) + { + case IRON: + return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them. " + + "The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + + "The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; + + + case STEEL: + return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." + + "Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction.\n" + + "Clever allomancers use steel to allow themselves to fly through the air."; + + case TIN: + return "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from."; + + case PEWTER: + return "Pewter is an allomatic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." + + "\n\nThe major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; + + case ZINC: + return "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\""; + + case BRASS: + return "In allomancy, brass gives the ability to \"soothe\" the emotions of others."; + + case COPPER: + return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. " + + "The Allomancer also becomes immune to emotional Allomancy, though this effect is not felt by those around them.\n" + "\n" + + "Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; + + case BRONZE: + return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.\n" + "\n" + + "Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; + + case ALUMINUM: + return "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself."; + + case DURALUMIN: + return "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly."; + + case CHROMIUM: + return "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)."; + + case NICROSIL: + return "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves."; + + case CADMIUM: + return "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble."; + + case BENDALLOY: + return "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!"; + + case GOLD: + return "$(#f00)(NYI)$()"; + + case ELECTRUM: + return "$(#f00)(NYI)$()"; + + } + return ""; + } + //todo implement item tiers @Override @@ -661,7 +724,7 @@ public int getEnchantability() @Override public Ingredient getRepairMaterial() { - return null; + return Ingredient.fromTag(getMetalIngotTag()); } } @@ -716,7 +779,7 @@ private static class FerringNames public static final String ALL = "feruchemist"; public static final String IRON = "skimmer"; public static final String STEEL = "steelrunner"; - public static final String TIN = "windwhisper"; + public static final String TIN = "windwhisperer"; public static final String PEWTER = "brute"; public static final String ALUMINUM = "trueself"; public static final String DURALUMIN = "connector"; diff --git a/src/main/java/leaf/cosmere/datagen/DataGen.java b/src/main/java/leaf/cosmere/datagen/DataGen.java index b75202a32..f5b6c95ab 100644 --- a/src/main/java/leaf/cosmere/datagen/DataGen.java +++ b/src/main/java/leaf/cosmere/datagen/DataGen.java @@ -10,6 +10,14 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import leaf.cosmere.Cosmere; +import leaf.cosmere.datagen.advancements.AdvancementGen; +import leaf.cosmere.datagen.blocks.BlockModelsGen; +import leaf.cosmere.datagen.blocks.BlockTagsGen; +import leaf.cosmere.datagen.items.ItemModelsGen; +import leaf.cosmere.datagen.items.ItemTagsGen; +import leaf.cosmere.datagen.language.EngLangGen; +import leaf.cosmere.datagen.loottables.LootTableGen; +import leaf.cosmere.datagen.patchouli.PatchouliGen; import net.minecraft.data.DataGenerator; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -45,9 +53,10 @@ public static void onDataGen(GatherDataEvent event) generator.addProvider(new LootTableGen(generator)); generator.addProvider(new RecipeGen(generator)); - /* todo: more automated json generation generator.addProvider(new AdvancementGen(generator)); - */ + + generator.addProvider(new PatchouliGen(generator)); + } } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java new file mode 100644 index 000000000..a35e534e7 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java @@ -0,0 +1,89 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.advancements; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Sets; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import net.minecraft.advancements.Advancement; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DirectoryCache; +import net.minecraft.data.IDataProvider; +import net.minecraft.util.ResourceLocation; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.List; +import java.util.Set; +import java.util.function.Consumer; + +public class AdvancementGen implements IDataProvider +{ + private static final Logger LOGGER = LogManager.getLogger(); + private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); + private final DataGenerator generator; + private final List>> advancements = ImmutableList.of( + new CoreAdvancements(), + new AllomancyAdvancements(), + new FeruchemyAdvancements(), + new HemalurgyAdvancements() + ); + + public AdvancementGen(DataGenerator generatorIn) + { + this.generator = generatorIn; + } + + /** + * Performs this provider's action. + */ + public void act(DirectoryCache cache) throws IOException + { + Path path = this.generator.getOutputFolder(); + Set set = Sets.newHashSet(); + Consumer consumer = (advancement) -> + { + if (!set.add(advancement.getId())) + { + throw new IllegalStateException("Duplicate advancement " + advancement.getId()); + } + else + { + Path path1 = getPath(path, advancement); + + try + { + IDataProvider.save(GSON, cache, advancement.copy().serialize(), path1); + } catch (IOException ioexception) + { + LOGGER.error("Couldn't save advancement {}", path1, ioexception); + } + + } + }; + + for (Consumer> consumer1 : this.advancements) + { + consumer1.accept(consumer); + } + + } + + private static Path getPath(Path pathIn, Advancement advancementIn) + { + return pathIn.resolve("data/cosmere/advancements/" + advancementIn.getId().getPath() + ".json"); + } + + /** + * Gets a name for this provider, to use in logging. + */ + public String getName() + { + return "Cosmere Advancements"; + } +} diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java new file mode 100644 index 000000000..9163a6931 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -0,0 +1,75 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.advancements; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.criterion.EntityPredicate; +import net.minecraft.advancements.criterion.InventoryChangeTrigger; +import net.minecraft.advancements.criterion.ItemPredicate; +import net.minecraft.advancements.criterion.TickTrigger; +import net.minecraft.item.Items; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.fml.RegistryObject; + +import java.util.Locale; +import java.util.function.Consumer; + +public class AllomancyAdvancements implements Consumer> +{ + public AllomancyAdvancements() + { + } + + public void accept(Consumer advancementConsumer) + { + String categoryName = "allomancy"; + Advancement root = Advancement.Builder.builder() + .withDisplay(ItemsRegistry.GUIDE.get(), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .register(advancementConsumer, categoryName + "/root"); + + for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) + { + AllomancyBase allomancyBase = (AllomancyBase) manifestation.get(); + + Metals.MetalType metalType = allomancyBase.getMetalType(); + String metalName = metalType.name().toLowerCase(Locale.ROOT); + + Advancement manifestationObtainedAdvancement = Advancement.Builder.builder() + .withParent(root) + .withDisplay( + Items.WOODEN_PICKAXE, + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + (ResourceLocation) null, + FrameType.TASK, + true, + true, + false) + .withCriterion( + "get_stone", + InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) + .register(advancementConsumer, categoryName + "/" + metalName); + } + + + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java new file mode 100644 index 000000000..ea0b20ef2 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java @@ -0,0 +1,61 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.advancements; + +import leaf.cosmere.registry.ItemsRegistry; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.criterion.EntityPredicate; +import net.minecraft.advancements.criterion.InventoryChangeTrigger; +import net.minecraft.advancements.criterion.ItemPredicate; +import net.minecraft.advancements.criterion.TickTrigger; +import net.minecraft.item.Items; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TranslationTextComponent; + +import java.util.function.Consumer; + +public class CoreAdvancements implements Consumer> +{ + public CoreAdvancements() + { + } + + public void accept(Consumer advancementConsumer) + { + final String categoryName = "root"; + + Advancement root = Advancement.Builder.builder() + .withDisplay(ItemsRegistry.GUIDE.get(), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .register(advancementConsumer, "core/" + categoryName); + + Advancement advancement1 = Advancement.Builder.builder() + .withParent(root) + .withDisplay( + Items.WOODEN_PICKAXE, + new TranslationTextComponent("advancements.cosmere.mine_stone.title"), + new TranslationTextComponent("advancements.cosmere.mine_stone.description"), + (ResourceLocation) null, + FrameType.TASK, + true, + true, + false) + .withCriterion( + "get_stone", + InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) + .register(advancementConsumer, "core/mine_stone"); + + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java new file mode 100644 index 000000000..051ec6e0e --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -0,0 +1,76 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.advancements; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.criterion.EntityPredicate; +import net.minecraft.advancements.criterion.InventoryChangeTrigger; +import net.minecraft.advancements.criterion.ItemPredicate; +import net.minecraft.advancements.criterion.TickTrigger; +import net.minecraft.item.Items; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TranslationTextComponent; +import net.minecraftforge.fml.RegistryObject; + +import java.util.Locale; +import java.util.function.Consumer; + +public class FeruchemyAdvancements implements Consumer> +{ + public FeruchemyAdvancements() + { + } + + public void accept(Consumer advancementConsumer) + { + final String categoryName = "feruchemy"; + + Advancement root = Advancement.Builder.builder() + .withDisplay(ItemsRegistry.GUIDE.get(), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .register(advancementConsumer, categoryName + "/root"); + + for (RegistryObject manifestation : ManifestationRegistry.FERUCHEMY_POWERS.values()) + { + FeruchemyBase feruchemyBase = (FeruchemyBase) manifestation.get(); + + Metals.MetalType metalType = feruchemyBase.getMetalType(); + String metalName = metalType.name().toLowerCase(Locale.ROOT); + + Advancement manifestationObtainedAdvancement = Advancement.Builder.builder() + .withParent(root) + .withDisplay( + Items.WOODEN_PICKAXE, + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + (ResourceLocation) null, + FrameType.TASK, + true, + true, + false) + .withCriterion( + "get_stone", + InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) + .register(advancementConsumer, categoryName + "/" + metalName); + } + + + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java new file mode 100644 index 000000000..455ac632b --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java @@ -0,0 +1,42 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.advancements; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.TagsRegistry; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.criterion.InventoryChangeTrigger; +import net.minecraft.advancements.criterion.ItemPredicate; +import net.minecraft.tags.ItemTags; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TranslationTextComponent; + +import java.util.function.Consumer; + +public class HemalurgyAdvancements implements Consumer> +{ + public HemalurgyAdvancements() + { + } + + public void accept(Consumer advancementConsumer) + { + final String categoryName = "hemalurgy"; + Advancement root = Advancement.Builder.builder() + .withDisplay(ItemsRegistry.GUIDE.get(), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), + new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .withCriterion("spike", InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(TagsRegistry.Items.METAL_SPIKE).build())) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .register(advancementConsumer, categoryName + "/root"); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/BlockModelsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java similarity index 97% rename from src/main/java/leaf/cosmere/datagen/BlockModelsGen.java rename to src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java index fb3b6c3e5..eebc8317a 100644 --- a/src/main/java/leaf/cosmere/datagen/BlockModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.blocks; import leaf.cosmere.Cosmere; import leaf.cosmere.blocks.MetalBlock; diff --git a/src/main/java/leaf/cosmere/datagen/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java similarity index 96% rename from src/main/java/leaf/cosmere/datagen/BlockTagsGen.java rename to src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index cc3822bbe..7d5285126 100644 --- a/src/main/java/leaf/cosmere/datagen/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.blocks; import leaf.cosmere.Cosmere; import leaf.cosmere.blocks.MetalBlock; diff --git a/src/main/java/leaf/cosmere/datagen/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java similarity index 98% rename from src/main/java/leaf/cosmere/datagen/ItemModelsGen.java rename to src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 813c692e7..d05119f22 100644 --- a/src/main/java/leaf/cosmere/datagen/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.items; import leaf.cosmere.Cosmere; import leaf.cosmere.items.MetalIngotItem; diff --git a/src/main/java/leaf/cosmere/datagen/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java similarity index 90% rename from src/main/java/leaf/cosmere/datagen/ItemTagsGen.java rename to src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 98530c581..7c427718e 100644 --- a/src/main/java/leaf/cosmere/datagen/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -1,12 +1,13 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.items; import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalIngotItem; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.data.BlockTagsProvider; import net.minecraft.data.DataGenerator; @@ -44,7 +45,10 @@ protected void registerTags() if (metalType.hasHemalurgicEffect()) { - add(TagsRegistry.Items.CURIO_ANY, metalType.getSpikeItem()); + HemalurgicSpikeItem spikeItem = metalType.getSpikeItem(); + + add(TagsRegistry.Items.CURIO_ANY, spikeItem); + add(TagsRegistry.Items.METAL_SPIKE, spikeItem); } // tell the ingots that our ingots are related diff --git a/src/main/java/leaf/cosmere/datagen/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java similarity index 75% rename from src/main/java/leaf/cosmere/datagen/EngLangGen.java rename to src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index c1767f73e..c399d4584 100644 --- a/src/main/java/leaf/cosmere/datagen/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -1,15 +1,17 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.language; import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; +import leaf.cosmere.datagen.patchouli.PatchouliGen; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.data.DataGenerator; import net.minecraft.entity.EntityType; import net.minecraft.item.Item; @@ -22,6 +24,7 @@ import java.nio.file.Path; import java.util.Arrays; +import java.util.Locale; import java.util.stream.Collectors; import static leaf.cosmere.constants.Constants.Strings.*; @@ -45,12 +48,13 @@ protected void addTranslations() { if (item.getRegistryName().getNamespace().contentEquals(Cosmere.MODID)) { - String localisedString = fixCapitalisation(item.getRegistryName().getPath()); + String localisedString = StringHelper.fixCapitalisation(item.getRegistryName().getPath()); + //string overrides switch (localisedString) { case "Guide": - localisedString = "Ars Arcanum"; + localisedString = "Ars Arcanum";//after the book that is written by Khriss break; } @@ -63,7 +67,7 @@ protected void addTranslations() { if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) { - add(type.getTranslationKey(), fixCapitalisation(type.getRegistryName().getPath())); + add(type.getTranslationKey(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); } } @@ -76,7 +80,7 @@ protected void addTranslations() String path = manifestation.getRegistryName().getPath(); //Name - add(key, fixCapitalisation(path)); + add(key, StringHelper.fixCapitalisation(path)); //description //can't auto generate the descriptions ya dingleberry @@ -85,10 +89,10 @@ protected void addTranslations() switch (manifestation.getManifestationType()) { case ALLOMANCY: - description = "Users can burn " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString(); + description = "Users can burn " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); break; case FERUCHEMY: - description = "Users can tap " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString(); + description = "Users can tap " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); break; case RADIANT: case ELANTRIAN: @@ -99,10 +103,33 @@ protected void addTranslations() break; } - add(manifestation.description().getKey(), description); } + //guidebook + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + String metalName = metalType.name().toLowerCase(Locale.ROOT); + + String a = "allomantic_" + metalName; + String f = "feruchemical_" + metalName; + String h = "hemalurgic_" + metalName; + + + String allomancyGuide = "cosmere.entry." + a; + String feruchemyGuide = "cosmere.entry." + f; + String hemalurgyGuide = "cosmere.entry." + h; + + add(allomancyGuide, StringHelper.fixCapitalisation(a)); + add(feruchemyGuide, StringHelper.fixCapitalisation(f)); + add(hemalurgyGuide, StringHelper.fixCapitalisation(h)); + } + + add("cosmere.category.basics", "Basics"); + add("cosmere.category.allomancy", "Allomancy"); + add("cosmere.category.feruchemy", "Feruchemy"); + add("cosmere.category.hemalurgy", "Hemalurgy"); + //ItemGroups/Tabs add("itemGroup." + CosmereItemGroups.ITEMS.getPath(), "Cosmere Items"); add("itemGroup." + CosmereItemGroups.METALMINDS.getPath(), "Cosmere Metalminds"); @@ -115,7 +142,7 @@ protected void addTranslations() //effects for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) { - add(effect.get().getName(), fixCapitalisation(effect.get().getRegistryName().getPath())); + add(effect.get().getName(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); } @@ -179,13 +206,6 @@ public Path getSoundPath(Path path, String modid) return path.resolve("data/" + modid + "/sounds/" + "sounds.json"); } - public String fixCapitalisation(String text) - { - String original = text.trim().replace(" ", "").replace("_", " ").replace("/", "."); - String output = Arrays.stream(original.split("\\s+")).map(t -> t.substring(0, 1).toUpperCase() + t.substring(1)).collect(Collectors.joining(" ")); - return output; - } - public String getTranslationKey(SoundEvent sound) { String subtitleTranslationKey = ""; diff --git a/src/main/java/leaf/cosmere/datagen/BlockLootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java similarity index 94% rename from src/main/java/leaf/cosmere/datagen/BlockLootTableGen.java rename to src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java index cfdb95077..d3b9ec450 100644 --- a/src/main/java/leaf/cosmere/datagen/BlockLootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.loottables; import leaf.cosmere.blocks.MetalOreBlock; import leaf.cosmere.registry.BlocksRegistry; diff --git a/src/main/java/leaf/cosmere/datagen/LootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java similarity index 94% rename from src/main/java/leaf/cosmere/datagen/LootTableGen.java rename to src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java index 59684ce4f..66df5e8ce 100644 --- a/src/main/java/leaf/cosmere/datagen/LootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen; +package leaf.cosmere.datagen.loottables; import com.google.common.collect.ImmutableList; import com.mojang.datafixers.util.Pair; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java new file mode 100644 index 000000000..9269ed285 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java @@ -0,0 +1,495 @@ +/* + * File created ~ 14 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + +import java.util.Map; + +public class BookStuff +{ + public static class Category + { + public String name; + public String description; + public String icon; + public String parent = ""; + public String flag = ""; + public Integer sortnum = 0; + public boolean secret = false; + + public Category(String name, String description, String icon) + { + this.name = "cosmere.category." + name.toLowerCase(); + this.description = description; + this.icon = icon; + } + + + public JsonElement serialize() + { + JsonObject jsonobject = new JsonObject(); + + jsonobject.addProperty("name", this.name); + jsonobject.addProperty("description", this.description); + jsonobject.addProperty("icon", this.icon); + + if (!this.parent.isEmpty()) + { + jsonobject.addProperty("parent", this.parent); + } + if (!this.flag.isEmpty()) + { + jsonobject.addProperty("flag", this.flag); + } + jsonobject.addProperty("sortnum", this.sortnum); + jsonobject.addProperty("secret", this.secret); + + return jsonobject; + } + } + + public static class Entry + { + public String name; + public Category category; + public String icon; + + public Page[] pages; + + public String advancement = ""; + public String flag = ""; + + public boolean priority = false; + public boolean secret = false; + public boolean read_by_default = false; + public Integer sortnum = 0; + + public String turnin = ""; // advancement needed to mark entry complete + + //itemstack strings -> page 0-index num + public Map extra_recipe_mappings; + + public Entry(String name, Category category, String icon) + { + this.name = "cosmere.entry." + name.toLowerCase(); + this.category = category; + this.icon = icon; + } + + + public JsonElement serialize() + { + JsonObject jsonobject = new JsonObject(); + + //enforced + jsonobject.addProperty("name", this.name); + jsonobject.addProperty("category", this.category.name); + jsonobject.addProperty("icon", this.icon); + + JsonArray jsonarray = new JsonArray(); + for (Page page : this.pages) + { + jsonarray.add(page.serialize()); + } + jsonobject.add("pages", jsonarray); + + if (advancement != null && !this.advancement.isEmpty()) + { + jsonobject.addProperty("advancement", this.advancement); + } + + if (!this.flag.isEmpty()) + { + jsonobject.addProperty("advancement", this.flag); + } + + jsonobject.addProperty("priority", this.priority); + jsonobject.addProperty("secret", this.secret); + jsonobject.addProperty("read_by_default", this.read_by_default); + + jsonobject.addProperty("sortnum", this.sortnum); + + if (!this.turnin.isEmpty()) + { + jsonobject.addProperty("turnin", this.turnin); + } + + if (extra_recipe_mappings != null && !extra_recipe_mappings.isEmpty()) + { + JsonObject extraRecipeMappingsArray = new JsonObject(); + for (Map.Entry entry : this.extra_recipe_mappings.entrySet()) + { + extraRecipeMappingsArray.addProperty(entry.getKey(), entry.getValue()); + } + jsonobject.add("extra_recipe_mappings", extraRecipeMappingsArray); + } + + + return jsonobject; + } + } + + public abstract static class Page + { + public String type; + public String text; + public String title = ""; + public String advancement = ""; + public String flag = ""; + public String anchor = ""; + public String[] recipes = null; + + public Page(String type, String text) + { + this.type = type; + this.text = text; + } + + public Page(String type, String text, String title) + { + this.type = type; + this.text = text; + this.title = title; + } + + public Page(String type, String text, String[] recipes) + { + this.type = type; + this.text = text; + this.recipes = recipes; + } + + public JsonElement serialize() + { + JsonObject jsonObject = new JsonObject(); + + addElement(jsonObject, "type", this.type); + addElement(jsonObject, "text", this.text); + addElement(jsonObject, "advancement", this.advancement); + addElement(jsonObject, "title", this.title); + + if (recipes != null && recipes.length > 0) + { + JsonArray jsonArray = new JsonArray(); + for (String recipe : this.recipes) + { + jsonArray.add(recipe); + } + jsonObject.add("pages", jsonArray); + } + + return jsonObject; + } + + protected void addElement(JsonObject jsonObject, String key, String value) + { + if (!value.isEmpty()) + { + jsonObject.addProperty(key, value); + } + } + } + + public static class CraftingPage extends Page + { + public String recipe; + public String recipe2 = ""; + + public CraftingPage(String recipe) + { + super("crafting", ""); + this.recipe = recipe; + } + + public CraftingPage(String text, String recipe) + { + super("crafting", text); + this.recipe = recipe; + } + + public CraftingPage(String text, String recipe, String recipe2) + { + super("crafting", text); + this.recipe = recipe; + this.recipe2 = recipe2; + } + + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("recipe", this.recipe); + jsonObject.addProperty("recipe2", this.recipe2); + + + return jsonObject; + } + } + + static class EmptyPage extends Page + { + public boolean draw_filler = true; + + public EmptyPage() + { + super("empty", ""); + } + + public EmptyPage(boolean draw_filler) + { + super("empty", ""); + this.draw_filler = draw_filler; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("draw_filler", draw_filler); + + return jsonObject; + } + } + + static class EntityPage extends Page + { + public String name = ""; + public String entity = ""; + public float scale = 1; + public float offset = 0; + public boolean rotate = false; + public float default_rotation = -45; + + public EntityPage(String entity) + { + super("entity", ""); + this.entity = entity; + } + + public EntityPage(String text, String entity) + { + super("entity", text); + this.entity = entity; + } + + public EntityPage(String text, String name, String entity) + { + super("entity", text); + this.name = name; + this.entity = entity; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + addElement(jsonObject, "name", this.name); + addElement(jsonObject, "entity", this.entity); + jsonObject.addProperty("scale", this.scale); + jsonObject.addProperty("offset", this.offset); + jsonObject.addProperty("rotate", this.rotate); + jsonObject.addProperty("default_rotation", this.default_rotation); + + return jsonObject; + } + } + + static class ImagePage extends Page + { + public String[] images; + public boolean border = false; + + public ImagePage(String text, String[] images) + { + super("image", text); + this.images = images; + } + + public ImagePage(String text, String title, String[] images) + { + super("image", text, title); + this.images = images; + } + + public ImagePage(String text, String title, boolean border, String[] images) + { + super("image", text, title); + this.images = images; + this.border = border; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("border", this.border); + + if (images != null && images.length > 0) + { + JsonArray jsonarray = new JsonArray(); + for (String image : this.images) + { + jsonarray.add(image); + } + jsonObject.add("images", jsonarray); + } + + return jsonObject; + } + } + + static class QuestPage extends Page + { + public String trigger; + + public QuestPage(String text, String trigger) + { + super("quest", text); + this.trigger = trigger; + } + + public QuestPage(String text, String title, String trigger) + { + super("quest", text, title); + this.trigger = trigger; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + addElement(jsonObject, "trigger", this.trigger); + + return jsonObject; + } + } + + static class RelationsPage extends Page + { + public String[] entries; + + public RelationsPage(String text, String[] entries) + { + super("relations", text); + this.entries = entries; + } + + public RelationsPage(String text, String title, String[] entries) + { + super("relations", text, title); + this.entries = entries; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + if (entries != null && entries.length > 0) + { + JsonArray jsonarray = new JsonArray(); + for (String entry : this.entries) + { + jsonarray.add(entry); + } + jsonObject.add("entries", jsonarray); + } + + return jsonObject; + } + + + } + + static class SmeltingPage extends Page + { + public String recipe; + public String recipe2 = ""; + + public SmeltingPage(String recipe) + { + super("smelting", ""); + this.recipe = recipe; + } + + public SmeltingPage(String text, String recipe) + { + super("smelting", text); + this.recipe = recipe; + } + + public SmeltingPage(String text, String recipe, String recipe2) + { + super("smelting", text); + this.recipe = recipe; + this.recipe2 = recipe2; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("recipe", this.recipe); + jsonObject.addProperty("recipe2", this.recipe2); + + + return jsonObject; + } + } + + public static class SpotlightPage extends Page + { + public String item; + public boolean link_recipe = false; + + public SpotlightPage(String text, String item) + { + super("spotlight", text); + this.item = item; + } + + public SpotlightPage(String text, String title, String item) + { + super("spotlight", text, title); + this.item = item; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("item", this.item); + jsonObject.addProperty("link_recipe", this.link_recipe); + + return jsonObject; + } + } + + public static class TextPage extends Page + { + public TextPage(String text) + { + super("text", text); + } + + public TextPage(String text, String title) + { + super("text", text, title); + } + } +} + + diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java new file mode 100644 index 000000000..3b8547d29 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -0,0 +1,187 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.*; +import java.util.function.Consumer; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.Sets; +import com.google.gson.*; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.datagen.patchouli.categories.PatchouliAllomancy; +import leaf.cosmere.datagen.patchouli.categories.PatchouliBasics; +import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; +import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DirectoryCache; +import net.minecraft.data.IDataProvider; + +import net.minecraftforge.fml.RegistryObject; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +import static leaf.cosmere.registry.ManifestationRegistry.*; + +// +// In-Game Documentation generator +// +public class PatchouliGen implements IDataProvider +{ + private static final Logger LOGGER = LogManager.getLogger(); + private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final String GUIDE_NAME = "guide"; + private final DataGenerator generator; + + + private List categories = new ArrayList<>(); + private List entries = new ArrayList<>(); + + public PatchouliGen(DataGenerator generatorIn) + { + this.generator = generatorIn; + } + + /** + * Performs this provider's action. + */ + public void act(DirectoryCache cache) throws IOException + { + Path path = this.generator.getOutputFolder(); + Set entryIDs = Sets.newHashSet(); + + Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); + Consumer categoryConsumer = getCategoryConsumer(cache, path, entryIDs); + + //adds to our categories and entries fields. + collectInfoForBook(); + + for (BookStuff.Category categoryToConsume : this.categories) + { + categoryConsumer.accept(categoryToConsume); + } + + for (BookStuff.Entry entryToConsume : this.entries) + { + entryConsumer.accept(entryToConsume); + } + + } + + private void collectInfoForBook() + { + //dynamically figure out all the things we wanna generate categories/entries for? + //------------------------------------------// + // Categories // + //------------------------------------------// + // - Basics // + // - Manifestations (parent category?) // + // - Feruchemy // + // - Allomancy // + // - Hemalurgy // + // - Curios // + // - Machines ? // + // - Challenges ? // + // - // + // - // + // - // + // - // + // - // + //------------------------------------------// + + PatchouliBasics.collect(this.categories, this.entries); + PatchouliAllomancy.collect(this.categories, this.entries); + PatchouliFeruchemy.collect(this.categories, this.entries); + PatchouliHemalurgy.collect(this.categories, this.entries); + + + } + + private Consumer getCategoryConsumer(DirectoryCache cache, Path path, Set categoryIDs) + { + return category -> + { + if (!categoryIDs.add(category.name)) + { + throw new IllegalStateException("Duplicate page " + category.name); + } + else + { + Path path1 = getCategoryPath(path, category); + + try + { + IDataProvider.save(GSON, cache, category.serialize(), path1); + } catch (IOException ioexception) + { + LOGGER.error("Couldn't save page {}", path1, ioexception); + } + + } + }; + } + + private Consumer getEntryConsumer(DirectoryCache cache, Path path, Set entryIDs) + { + return entry -> + { + if (!entryIDs.add(entry.name)) + { + throw new IllegalStateException("Duplicate page " + entry.name); + } + else + { + Path path1 = getEntryPath(path, entry); + + try + { + IDataProvider.save(GSON, cache, entry.serialize(), path1); + } catch (IOException ioexception) + { + LOGGER.error("Couldn't save page {}", path1, ioexception); + } + + } + }; + } + + private static Path getCategoryPath(Path pathIn, BookStuff.Category category) + { + return pathIn.resolve( + String.format( + "data/cosmere/patchouli_books/%s/en_us/categories/%s.json", + GUIDE_NAME, + category.name)); + } + + private static Path getEntryPath(Path pathIn, BookStuff.Entry entry) + { + return pathIn.resolve( + String.format( + "data/cosmere/patchouli_books/%s/en_us/entries/%s/%s.json", + GUIDE_NAME, + entry.category.name, + entry.name)); + } + + /** + * Gets a name for this provider, to use in logging. + */ + public String getName() + { + return "PatchouliGeneration"; + } + + +} + + + diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java new file mode 100644 index 000000000..75c8477e0 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -0,0 +1,87 @@ +/* + * File created ~ 14 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli.categories; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.datagen.patchouli.*; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.utils.helpers.StringHelper; +import net.minecraftforge.fml.RegistryObject; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import static leaf.cosmere.registry.ManifestationRegistry.ALLOMANCY_POWERS; + +public class PatchouliAllomancy +{ + public static void collect(List categories, List entries) + { + BookStuff.Category allomancy = new BookStuff.Category( + "allomancy", + "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", + "cosmere:metal_vial"); + allomancy.sortnum = 1; + + + categories.add(allomancy); + + + BookStuff.Entry allomancyBasics = new BookStuff.Entry("allomancy_basics", allomancy, allomancy.icon); + allomancyBasics.pages = new BookStuff.Page[] + { + new BookStuff.TextPage("If you entered this world with an allomantic ability, you're called a $(6)misting$().", allomancy.icon), + new BookStuff.SpotlightPage("Metal vial", allomancy.icon), + new BookStuff.CraftingPage("Metal vial", allomancy.icon), + }; + allomancyBasics.priority = true; + List pages = new ArrayList<>(); + + + //allomancy + for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) + { + AManifestation aManifestation = manifestation.get(); + AllomancyBase allomancyManifestation = (AllomancyBase) aManifestation; + Metals.MetalType metalType = allomancyManifestation.getMetalType(); + + if (!metalType.hasFeruchemicalEffect()) + { + continue; + } + + String metalName = metalType.name().toLowerCase(Locale.ROOT); + + BookStuff.Entry entryForThisPower = new BookStuff.Entry( + "allomantic_" + metalName, + allomancy, + String.format("%s_ingot", metalName)); + entryForThisPower.sortnum = metalType.getID(); + + pages.clear(); + String mistingName = StringHelper.fixCapitalisation(metalType.getMistingName()); + + + switch (metalType) + { + default: + pages.add(new BookStuff.TextPage("A misting who burns " + metalName + " is known as a \"" + mistingName + "\".")); + break; + case ALUMINUM: + case DURALUMIN: + //add extra note so that these people will know of their shame. + pages.add(new BookStuff.TextPage("A misting who can only burn " + metalName + " is known as a \"" + mistingName + "\" as they gain no discernible effect from burning their metal.")); + break; + } + + pages.add(new BookStuff.TextPage(metalType.GetAllomancyDescription())); + + entryForThisPower.pages = pages.stream().toArray(BookStuff.Page[]::new); + entries.add(entryForThisPower); + } + } +} diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java new file mode 100644 index 000000000..60575fb07 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java @@ -0,0 +1,25 @@ +/* + * File created ~ 14 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli.categories; + +import leaf.cosmere.datagen.patchouli.BookStuff; + +import java.util.List; + +public class PatchouliBasics +{ + public static void collect(List categories, List entries) + { + BookStuff.Category basics = new BookStuff.Category( + "basics", + "Everything you've learnt so far", + "cosmere:guide"); + + basics.sortnum = 0; + + + categories.add(basics); + } +} diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java new file mode 100644 index 000000000..7fd298578 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java @@ -0,0 +1,62 @@ +/* + * File created ~ 14 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli.categories; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; +import net.minecraftforge.fml.RegistryObject; + +import java.util.List; +import java.util.Locale; + +import static leaf.cosmere.registry.ManifestationRegistry.FERUCHEMY_POWERS; + +public class PatchouliFeruchemy +{ + public static void collect(List categories, List entries) + { + + + BookStuff.Category feruchemy = new BookStuff.Category( + "feruchemy", + "The art of equivalent exchange when it comes to the body. ", + "cosmere:copper_bracelet_metalmind"); + feruchemy.sortnum = 2; + + + categories.add(feruchemy); + + + //feruchemy + for (RegistryObject manifestation : FERUCHEMY_POWERS.values()) + { + AManifestation aManifestation = manifestation.get(); + FeruchemyBase feruchemyManifestation = (FeruchemyBase) aManifestation; + Metals.MetalType metalType = feruchemyManifestation.getMetalType(); + + if (!metalType.hasFeruchemicalEffect()) + { + continue; + } + + String metalName = metalType.name().toLowerCase(Locale.ROOT); + + BookStuff.Entry e = new BookStuff.Entry( + "feruchemical_" + metalName, + feruchemy, + feruchemy.icon.replace("copper", metalName)); + e.sortnum = metalType.getID(); + + e.pages = new BookStuff.Page[] + { + new BookStuff.TextPage(feruchemyManifestation.description().getKey()) + }; + + entries.add(e); + } + } +} diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java new file mode 100644 index 000000000..bfdc877bb --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java @@ -0,0 +1,51 @@ +/* + * File created ~ 14 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli.categories; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.datagen.patchouli.BookStuff; + +import java.util.List; +import java.util.Locale; + +public class PatchouliHemalurgy +{ + public static void collect(List categories, List entries) + { + BookStuff.Category hemalurgy = new BookStuff.Category( + "hemalurgy", + "The forbidden field of magic that takes from others so that you may get stronger.", + "cosmere:atium_spike"); + hemalurgy.sortnum = 3; + hemalurgy.secret = true; + + + categories.add(hemalurgy); + + + //hemalurgy + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasHemalurgicEffect()) + { + continue; + } + + String metalName = metalType.name().toLowerCase(Locale.ROOT); + BookStuff.Entry e = new BookStuff.Entry( + "hemalurgic_" + metalName, + hemalurgy, + hemalurgy.icon.replace("atium", metalName)); + e.sortnum = metalType.getID(); + + e.pages = new BookStuff.Page[] + { + new BookStuff.TextPage(metalType.getHemalurgicUseString()) + }; + + entries.add(e); + } + } +} diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 7d2c6a393..ac7f1246f 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -74,6 +74,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType CompoundNBT hemalurgyInfo = getHemalurgicInfo(stack); + //Steals non-manifestation based abilities. traits inherent to an entity? switch (spikeMetalType) { case IRON: @@ -138,12 +139,14 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType switch (spikeMetalType) { + //steals allomantic abilities case STEEL: case BRONZE: case CADMIUM: case ELECTRUM: saveIdentity = tryStealScadrialManifestation(hemalurgyInfo, manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); break; + //steals feruchemical abilities case PEWTER: case BRASS: case BENDALLOY: diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index cdc5f9891..4eca6f7dc 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -55,7 +55,6 @@ public class BlocksRegistry Rarity.COMMON))); - private static RegistryObject register(String id, Supplier blockSupplier, Rarity itemRarity) { RegistryObject registryObject = BLOCKS.register(id, blockSupplier); diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 48e4558b2..94daf803f 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -52,6 +52,8 @@ public static class Items public static ITag.INamedTag CURIO_NECKLACE = makeItem("curios", "necklace"); public static ITag.INamedTag CURIO_RING = makeItem("curios", "ring"); + public static ITag.INamedTag METAL_SPIKE = makeItem("cosmere", "spike"); + public static ITag.INamedTag NUGGET = forgeItemTag("nugget"); diff --git a/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java new file mode 100644 index 000000000..61da65b9a --- /dev/null +++ b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java @@ -0,0 +1,19 @@ +/* + * File created ~ 13 - 7 - 2021 ~ Leaf + */ + +package leaf.cosmere.utils.helpers; + +import java.util.Arrays; +import java.util.stream.Collectors; + +public class StringHelper +{ + + public static String fixCapitalisation(String text) + { + String original = text.trim().replace(" ", "").replace("_", " ").replace("/", "."); + String output = Arrays.stream(original.split("\\s+")).map(t -> t.substring(0, 1).toUpperCase() + t.substring(1)).collect(Collectors.joining(" ")); + return output; + } +} diff --git a/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png b/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png index 868b12ff4a82094663eb8795feae8f9380bf44a9..59bdd03a4e8607a1430c51f1889de33529f056d8 100644 GIT binary patch delta 281 zcmV+!0p|X{7ta^4zzTo*Nkl(XGQE3_Q@ABrITtV3usa5Lp0a6+DC|NLFz_ z8dFGI1zt={}gPQEOQ8?xC(FY|MvL0l=~>w=Zwo1^_sY9l+xoSW`>9$#@I%Y z@cDcIpzZq(B0|o2#O}U`z{~&urIb!GjX}q8U|E&`Ae>ZhWrKg2JMk1_Y|M;WD~M>U zFQ{s85i7BeGn1c z<0qfKTJeAP47X@87U>Cl(22vMI`6kiJZ{Cz6Xyz zzl)q3_@D``wXr@?4FL9i?<4j3i%1`xnW2;d03m#PjV@G50W)7#*{NRz{(I6RxjTOY Y0H3?F0Z{+C0{{R307*qoM6N<$g51}WoB#j- delta 335 zcmV-V0kHo37ljzGzzTmbNkltSaB3R}l1S=sRr1p0OD?!j^ z{z9-36^lq7JjQCW$r@P}i@oLW<|g;NJ1&I4C+hH_zJ4C8*XxiZ2>_}}S(d0OX__J; z%w{uJpLa3B;cx&507X$?W)wxia5&_AK9i;?r_%|5)oSHlB6NSd-2gBc3;+-j%&hv7 znK7MC0oZQ0p*2Fk-{*F_v0N@)TVC&d7>!1+5WV+7L;zSU7VaIem|sNLY&M}0AsYOq z7%k5Kd5v*HkxvKUa=D Date: Tue, 27 Jul 2021 13:07:19 +1200 Subject: [PATCH 0006/1090] fixing issue with feruchemy not adding charge to the next item in line when one is full --- .../leaf/cosmere/charge/ItemChargeHelper.java | 16 +++++++++++++--- .../leaf/cosmere/datagen/items/ItemTagsGen.java | 3 --- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 356994904..15b80c87e 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -138,7 +138,7 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean remove, boolean checkPlayer, List items, List acc) { EffectInstance storingIdentity = player.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); - boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); + boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); for (ItemStack stackInSlot : Iterables.concat(items, acc)) @@ -153,7 +153,14 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, continue; } - if (chargeItemSlot.getCharge(stackInSlot) > chargeToGet) + boolean storing = chargeToGet < 0; + + int slotCharge = chargeItemSlot.getCharge(stackInSlot); + int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); + + + if ((storing && slotCharge + (-chargeToGet) > slotMaxCharge)//storing and can fit in this item + || !storing && slotCharge > chargeToGet) { if (remove) { @@ -207,7 +214,10 @@ public static int dispatchCharge(PlayerEntity player, int chargeToSend, boolean { List items = getChargeItems(player); List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) + + Iterable itemStacksIterable = Iterables.concat(items, acc); + + for (ItemStack stackInSlot : itemStacksIterable) { IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 7c427718e..81fe96204 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -30,11 +30,8 @@ public ItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvi @Override protected void registerTags() { - - for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (metalType.hasFeruchemicalEffect()) { //curio stuff From 08eb997abcde6eab7ba43337547c463f786c31ff Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 27 Jul 2021 13:25:55 +1200 Subject: [PATCH 0007/1090] hopefully fixing the issue with allomancy having infinite supplies of metals somehow --- src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java | 2 +- .../leaf/cosmere/cap/entity/SpiritwebCapability.java | 9 +++++---- src/main/java/leaf/cosmere/charge/ItemChargeHelper.java | 4 ++-- .../cosmere/manifestation/allomancy/AllomancyBase.java | 5 ----- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index bd5de2fda..126980d39 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -78,7 +78,7 @@ public interface ISpiritweb extends INBTSerializable int getIngestedMetal(Metals.MetalType metalType); - boolean adjustIngestedMetal(Metals.MetalType metalType, int i, boolean doAdjust); + boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust); class Storage implements Capability.IStorage { diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 461e558c7..b92a2c300 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -247,20 +247,21 @@ public int getIngestedMetal(Metals.MetalType metalType) } @Override - public boolean adjustIngestedMetal(Metals.MetalType metalType, int val, boolean doAdjust) + public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust) { int ingestedMetal = getIngestedMetal(metalType); - val = Math.min(ingestedMetal, val); + boolean addingToInternalMetals = amountToAdjust < 0; - if (ingestedMetal >= val) + if (addingToInternalMetals || ingestedMetal > amountToAdjust) { if (doAdjust) { - METALS_INGESTED.put(metalType, ingestedMetal + val); + METALS_INGESTED.put(metalType, ingestedMetal + amountToAdjust); } return true; } + return false; } diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 15b80c87e..33299a3b1 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -135,7 +135,7 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, return adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); } - public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean remove, boolean checkPlayer, List items, List acc) + public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean doAdjust, boolean checkPlayer, List items, List acc) { EffectInstance storingIdentity = player.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); @@ -162,7 +162,7 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, if ((storing && slotCharge + (-chargeToGet) > slotMaxCharge)//storing and can fit in this item || !storing && slotCharge > chargeToGet) { - if (remove) + if (doAdjust) { chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 4292bcbd1..21e038352 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -86,11 +86,6 @@ public boolean isMetalBurning(ISpiritweb data) //set that mode back to the capability. data.setMode(manifestationType, metalType.getID(), mode); //if it hits zero then return out - if (mode == 0) - { - break; - } - //try again at a lower burn rate. } } From 270efc5ebe7f41b7a5f23b6f2b953361af3869cf Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 27 Jul 2021 20:25:34 +1200 Subject: [PATCH 0008/1090] hopefully fixing the issue with allomancy having infinite supplies of metals, part 2 --- gradle.properties | 4 ++-- .../java/leaf/cosmere/cap/entity/SpiritwebCapability.java | 2 +- src/main/java/leaf/cosmere/charge/ItemChargeHelper.java | 2 +- .../leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java | 4 ++-- .../leaf/cosmere/manifestation/allomancy/AllomancyBase.java | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index e395de260..d4d9890c7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # -#Sun Jul 18 16:42:05 NZST 2021 +#Tue Jul 27 20:19:45 NZST 2021 mappings_version=20210309-1.16.5 forge_version=1.16.5-36.1.0 org.gradle.daemon=false @@ -11,5 +11,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 curios_version=1.16.5-4.0.5.1 mod_version=0.3.1 -build_number=17 +build_number=18 patchouli_version=1.16.4-50 diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index b92a2c300..0d403f654 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -256,7 +256,7 @@ public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjus { if (doAdjust) { - METALS_INGESTED.put(metalType, ingestedMetal + amountToAdjust); + METALS_INGESTED.put(metalType, ingestedMetal - amountToAdjust); } return true; diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 33299a3b1..7a8bef5c2 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -159,7 +159,7 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); - if ((storing && slotCharge + (-chargeToGet) > slotMaxCharge)//storing and can fit in this item + if ((storing && (slotCharge + (-chargeToGet)) < slotMaxCharge)//storing and can fit in this item || !storing && slotCharge > chargeToGet) { if (doAdjust) diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 0bdb503df..65c504c69 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -61,9 +61,9 @@ public void performEffect(LivingEntity livingEntity, int amplifier) if (ingestedMetalAmount > 0) { - if (ingestedMetalAmount >= 27) + if (ingestedMetalAmount > 27) { - data.adjustIngestedMetal(metalType, ingestedMetalAmount - 27, true); + data.adjustIngestedMetal(metalType, 27, true); } else { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 21e038352..9baef2350 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -76,7 +76,7 @@ public boolean isMetalBurning(ISpiritweb data) { //if not then try reduce the amount that they are burning - if (data.adjustIngestedMetal(metalType, -mode, false)) + if (data.adjustIngestedMetal(metalType, mode, false)) { return true; } @@ -105,7 +105,7 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; - data.adjustIngestedMetal(metalType, -mode, isActiveTick); + data.adjustIngestedMetal(metalType, mode, isActiveTick); //if we get to this point, we are in an active burn state. //check for compound. From 0734de7595d71776d443db75c38bd416508fe34b Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 29 Jul 2021 14:55:06 +1200 Subject: [PATCH 0009/1090] Changed Gold feruchemy to have lower hearts when storing and then regen-like effect when tapping. Fixed a bug in logic for hemalurgy spikes being used as metalminds when equipped. No more constant damage every time the item nbt updates! --- Changelog.md | 7 +++++ .../feruchemy/FeruchemyEffectBase.java | 13 +-------- .../feruchemy/store/GoldStoreEffect.java | 29 +++---------------- .../items/curio/HemalurgicSpikeItem.java | 11 ++++--- 4 files changed, 19 insertions(+), 41 deletions(-) diff --git a/Changelog.md b/Changelog.md index 63aacd935..ca79f4bfd 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,12 @@ The Cosmere Project - For 1.16 Minecraft +B18 + +Changed Gold feruchemy to have lower hearts when storing and then regen-like effect when tapping. +Fixed a bug in logic for hemalurgy spikes being used as metalminds when equipped. No more constant damage every time the item nbt updates! +Fixed a bug where allomancy users would gain more metals when burning instead of less. oops. +fixed a bug in feruchemy where the game would stop trying to store attributes in more metalminds when the first one was full. + B17 Added a creative mode only shard blade to test a model that was created using blockbench. diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java index 1545d2753..932ca866c 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java @@ -41,17 +41,6 @@ public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) public boolean isReady(int duration, int amplifier) { //assume we can apply the effect regardless - boolean result = true; -/* - //but if we are a specific effect - if (metalType == Metals.MetalType.BENDALLOY) - { - int k = 50 >> amplifier; - if (k > 0) - { - result = duration % k == 0; - } - }*/ - return result; + return true; } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java index 677c25729..d8038a3cf 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java @@ -7,6 +7,8 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.ai.attributes.Attributes; import net.minecraft.potion.EffectType; //health @@ -15,33 +17,10 @@ public class GoldStoreEffect extends FeruchemyEffectBase public GoldStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); -/* addAttributesModifier( + addAttributesModifier( Attributes.MAX_HEALTH, "2ee9153f-372f-4bd2-b21a-ccf08fecb8fa", -4.0D, - AttributeModifier.Operation.ADDITION);*/ - } - - @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.getHealth() > (entityLivingBaseIn.getMaxHealth() / amplifier + 2)) - { - entityLivingBaseIn.setHealth(entityLivingBaseIn.getHealth() - 1); - } - } - - @Override - public boolean isReady(int duration, int amplifier) - { - int k = 40 >> amplifier; - if (k > 0) - { - return duration % k == 0; - } - else - { - return true; - } + AttributeModifier.Operation.ADDITION); } } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 0d8d35a73..daede0fd4 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -261,10 +261,13 @@ protected void onEquipStatusChanged(SlotContext slotContext, ItemStack stack, bo //first do normal equip status changed, in case this spike metalmind has nicrosil powers stored super.onEquipStatusChanged(slotContext, stack, isEquipping); - //then do hemalurgy spike logic - //hurt the user - //spiritweb attributes are handled in metalmind - slotContext.getWearer().attackEntityFrom(SPIKED, 4); + if (isEquipping) + { + //then do hemalurgy spike logic + //hurt the user + //spiritweb attributes are handled in metalmind + slotContext.getWearer().attackEntityFrom(SPIKED, 4); + } } @Override From 16ed7a301fd1a8bc26e35227d5cb14ae1563c544 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 29 Jul 2021 21:49:11 +1200 Subject: [PATCH 0010/1090] custom loot table prep --- .../java/leaf/cosmere/loot/LootHandler.java | 64 +++++++++++++++++++ .../allomancy/AllomancyBase.java | 3 +- .../inject/abandoned_mineshaft.json | 20 ++++++ .../loot_tables/inject/desert_pyramid.json | 20 ++++++ .../loot_tables/inject/jungle_temple.json | 20 ++++++ .../loot_tables/inject/simple_dungeon.json | 15 +++++ .../loot_tables/inject/spawn_bonus_chest.json | 14 ++++ .../inject/stronghold_corridor.json | 15 +++++ .../inject/village_blacksmith.json | 15 +++++ 9 files changed, 185 insertions(+), 1 deletion(-) create mode 100644 src/main/java/leaf/cosmere/loot/LootHandler.java create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java new file mode 100644 index 000000000..5cf3b036a --- /dev/null +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -0,0 +1,64 @@ +/* + * File created ~ 29 - 7 - 2021 ~ Leaf + * Thank you botania! Pretty much directly copied from botania as this is so much easier to work with! + */ +package leaf.cosmere.loot; + +import leaf.cosmere.Cosmere; +import net.minecraft.loot.LootEntry; +import net.minecraft.loot.LootPool; +import net.minecraft.loot.TableLootEntry; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.event.LootTableLoadEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +import static leaf.cosmere.utils.helpers.ResourceLocationHelper.prefix; + +@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +public final class LootHandler +{ + + @SubscribeEvent + public static void lootLoad(LootTableLoadEvent evt) + { + String prefix = "minecraft:chests/"; + String name = evt.getName().toString(); + + if (name.startsWith(prefix)) + { + String file = name.substring(name.indexOf(prefix) + prefix.length()); + switch (file) + { + case "abandoned_mineshaft": + case "desert_pyramid": + case "jungle_temple": + case "simple_dungeon": + case "spawn_bonus_chest": + case "stronghold_corridor": + case "village_blacksmith": + evt.getTable().addPool(getInjectPool(file)); + break; + default: + break; + } + } + } + + public static LootPool getInjectPool(String entryName) + { + return LootPool.builder() + .addEntry(getInjectEntry(entryName, 1)) + .bonusRolls(0, 1) + .name("cosmere_inject") + .build(); + } + + private static LootEntry.Builder getInjectEntry(String name, int weight) + { + ResourceLocation table = prefix("inject/" + name); + return TableLootEntry.builder(table) + .weight(weight); + } + +} diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 9baef2350..e23986cfe 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -116,7 +116,8 @@ public void tick(ISpiritweb data) //feruchemy power exists and is active if (feruchemyMode != 0 && isActiveTick) { - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-5) * (mode), true, true)) + int secondsOfFeruchemyToAdd = 5; + if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) { //compound successful } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json new file mode 100644 index 000000000..0036f3560 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json @@ -0,0 +1,20 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/abandoned_mineshaft", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "cosmere:atium_nugget", + "weight": 5 + }, + { + "type": "empty", + "weight": 95 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json new file mode 100644 index 000000000..3b9b8e667 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json @@ -0,0 +1,20 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/desert_pyramid", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "cosmere:atium_nugget", + "weight": 5 + }, + { + "type": "empty", + "weight": 95 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json new file mode 100644 index 000000000..cdc6d4c40 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json @@ -0,0 +1,20 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/jungle_temple", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "item", + "name": "cosmere:atium_nugget", + "weight": 5 + }, + { + "type": "empty", + "weight": 95 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json new file mode 100644 index 000000000..e62adf6a3 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json @@ -0,0 +1,15 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/simple_dungeon", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "empty", + "weight": 100 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json new file mode 100644 index 000000000..6889a1c19 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json @@ -0,0 +1,14 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/spawn_bonus_chest", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "empty", + "weight": 100 + } + ] + }] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json new file mode 100644 index 000000000..46213c2dd --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json @@ -0,0 +1,15 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/stronghold_corridor", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "empty", + "weight": 100 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json new file mode 100644 index 000000000..e1bb8ab3a --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json @@ -0,0 +1,15 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/village_blacksmith", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "empty", + "weight": 100 + } + ] + } + ] +} \ No newline at end of file From 40a3a885e2c8ce39eec2f7fa7e828818e7572ef0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 29 Jul 2021 21:49:43 +1200 Subject: [PATCH 0011/1090] making allomancy last longer per metal nugget consumed. --- src/main/java/leaf/cosmere/items/MetalVialItem.java | 6 +++++- src/main/java/leaf/cosmere/items/Metalmind.java | 4 +++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 8d47c7651..04b9c1fff 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -105,8 +105,12 @@ public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity en // MetalName x Value Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); + + //todo decide what value should be used for ingestion + int secondsPerNugget = 180; + //add to metal stored - spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + 9); // todo decide what value should be used for ingestion + spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + secondsPerNugget); }); iSpiritweb.syncToClients(null); diff --git a/src/main/java/leaf/cosmere/items/Metalmind.java b/src/main/java/leaf/cosmere/items/Metalmind.java index 1af5f9e1e..f0956eb63 100644 --- a/src/main/java/leaf/cosmere/items/Metalmind.java +++ b/src/main/java/leaf/cosmere/items/Metalmind.java @@ -82,7 +82,9 @@ public Multimap getAttributeModifiers(SlotContext @Override public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) { - onEquipStatusChanged(slotContext, stack, true); + //todo better logic. + boolean isEquipping = prevStack == null || stack.getItem() != prevStack.getItem(); + onEquipStatusChanged(slotContext, stack, isEquipping); } @Override From 9e99c10ed454d72331a19a3054ce3fdff24a4acb Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 29 Jul 2021 21:54:01 +1200 Subject: [PATCH 0012/1090] Update Changelog.md --- Changelog.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index ca79f4bfd..e947e9bbf 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,9 +3,12 @@ The Cosmere Project - For 1.16 Minecraft B18 Changed Gold feruchemy to have lower hearts when storing and then regen-like effect when tapping. +Prep for cosmere related loot to start showing up in chests +Making allomancy last longer than a few seconds per bead. now lasts between 60-180 seconds. Easier for testing till we adjust burn rates by metal. Fixed a bug in logic for hemalurgy spikes being used as metalminds when equipped. No more constant damage every time the item nbt updates! Fixed a bug where allomancy users would gain more metals when burning instead of less. oops. -fixed a bug in feruchemy where the game would stop trying to store attributes in more metalminds when the first one was full. +fixed a bug in feruchemy where the game would stop trying to store attributes in the next metalmind when the first one was full. + B17 From a2c2a97042848387e737213bf3f055042241ca74 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 30 Jul 2021 14:48:07 +1200 Subject: [PATCH 0013/1090] bump forge version --- Changelog.md | 1 + gradle.properties | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index e947e9bbf..f323fe124 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,7 @@ The Cosmere Project - For 1.16 Minecraft B18 +Bumped forge version to 36.2.0 Changed Gold feruchemy to have lower hearts when storing and then regen-like effect when tapping. Prep for cosmere related loot to start showing up in chests Making allomancy last longer than a few seconds per bead. now lasts between 60-180 seconds. Easier for testing till we adjust burn rates by metal. diff --git a/gradle.properties b/gradle.properties index d4d9890c7..8ffe95419 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # #Tue Jul 27 20:19:45 NZST 2021 mappings_version=20210309-1.16.5 -forge_version=1.16.5-36.1.0 +forge_version=1.16.5-36.2.0 org.gradle.daemon=false mappings_type=snapshot jar_name=Cosmere-Mod From 92c7ef8408f8aaec259d3bdc826fc6f36ebf5475 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 31 Jul 2021 21:42:51 +1200 Subject: [PATCH 0014/1090] Fixing a bug with chromium allomancy causing a full crash of the game oops. --- src/main/java/leaf/cosmere/datagen/RecipeGen.java | 2 ++ .../cosmere/manifestation/allomancy/AllomancyChromium.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index 521e13fc7..51a2bec44 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -17,6 +17,7 @@ import net.minecraft.item.crafting.IRecipeSerializer; import net.minecraft.item.crafting.Ingredient; import net.minecraft.tags.ITag; +import net.minecraft.tags.ItemTags; import net.minecraft.util.IItemProvider; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.Tags; @@ -49,6 +50,7 @@ protected void registerRecipes(Consumer consumer) //addOreSmeltingRecipes(consumer, BlocksRegistry.GEM_BLOCK.get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); + ShapedRecipeBuilder.shapedRecipe(ItemsRegistry.METAL_VIAL.get()).key('X', Items.IRON_NUGGET).key('Y', Items.GLASS).patternLine("X").patternLine("Y").addCriterion("has_material", hasItem(Items.GLASS)).build(consumer); CustomRecipeBuilder.customRecipe(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).build(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java index c5b24efee..764ac63b5 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java @@ -52,6 +52,10 @@ protected void performEffect(ISpiritweb data) for (Entity e : entitiesInRange) { + if (!(e instanceof LivingEntity)) + { + continue; + } SpiritwebCapability.get((LivingEntity) e).ifPresent(iSpiritweb -> { Entity entity = null; From 03c331a54de5b78c52ceffe18ebd99a824230b75 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 31 Jul 2021 21:49:23 +1200 Subject: [PATCH 0015/1090] Update Changelog.md --- Changelog.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index f323fe124..60d9b4e88 100644 --- a/Changelog.md +++ b/Changelog.md @@ -8,7 +8,8 @@ Prep for cosmere related loot to start showing up in chests Making allomancy last longer than a few seconds per bead. now lasts between 60-180 seconds. Easier for testing till we adjust burn rates by metal. Fixed a bug in logic for hemalurgy spikes being used as metalminds when equipped. No more constant damage every time the item nbt updates! Fixed a bug where allomancy users would gain more metals when burning instead of less. oops. -fixed a bug in feruchemy where the game would stop trying to store attributes in the next metalmind when the first one was full. +Fixed a bug in feruchemy where the game would stop trying to store attributes in the next metalmind when the first one was full. +Fixing a bug with chromium allomancy causing a full crash of the game oops. B17 From 976e0e072d2573991fceb0a18de54fec64ff79b5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 16:40:33 +1300 Subject: [PATCH 0016/1090] Creative mode now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal --- Changelog.md | 5 + src/main/generated/.cache/cache | 40 +++-- .../generated/assets/cosmere/lang/en_us.json | 162 ++++++++++-------- .../recipes/cosmere.items/metal_vial.json | 32 ++++ .../aluminum_spike.json | 0 .../atium_spike.json | 0 .../bendalloy_spike.json | 0 .../brass_spike.json | 0 .../bronze_spike.json | 0 .../cadmium_spike.json | 0 .../chromium_spike.json | 0 .../copper_spike.json | 0 .../duralumin_spike.json | 0 .../electrum_spike.json | 0 .../gold_spike.json | 0 .../iron_spike.json | 0 .../lerasium_spike.json | 0 .../nicrosil_spike.json | 0 .../pewter_spike.json | 0 .../steel_spike.json | 0 .../tin_spike.json | 0 .../zinc_spike.json | 0 .../data/cosmere/recipes/metal_vial.json | 18 ++ .../cosmere/datagen/language/EngLangGen.java | 31 +++- .../cosmere/itemgroups/CosmereItemGroups.java | 9 + .../cosmere/items/ChargeableMetalItem.java | 5 +- .../java/leaf/cosmere/items/Metalmind.java | 6 +- .../items/curio/BraceletMetalmind.java | 3 +- .../items/curio/HemalurgicSpikeItem.java | 56 +++++- .../cosmere/items/curio/IHemalurgicInfo.java | 2 +- .../items/curio/NecklaceMetalmind.java | 3 +- .../cosmere/items/curio/RingMetalmind.java | 3 +- 32 files changed, 267 insertions(+), 108 deletions(-) create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/aluminum_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/atium_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/bendalloy_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/brass_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/bronze_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/cadmium_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/chromium_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/copper_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/duralumin_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/electrum_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/gold_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/iron_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/lerasium_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/nicrosil_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/pewter_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/steel_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/tin_spike.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/{cosmere.metalminds => cosmere.spikes}/zinc_spike.json (100%) create mode 100644 src/main/generated/data/cosmere/recipes/metal_vial.json diff --git a/Changelog.md b/Changelog.md index 60d9b4e88..d4c9f087a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ The Cosmere Project - For 1.16 Minecraft +B19 + +Creative mode now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal +Remove our own Gold/Iron Nuggets from being created. + B18 Bumped forge version to 36.2.0 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 89ba8b22a..d1f09e4a6 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -29e7bd5330b3b923a7b8e2cb6a00ae962414120e assets/cosmere/lang/en_us.json +930ebf76d1a9a554dc84c7162215547010a82af1 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json @@ -368,6 +368,7 @@ baa7f3b501517e455124c2924e70dfa3e0098038 data/cosmere/advancements/recipes/cosme 448a1cd1844a118af8aecb02f9ebb9d3dd1cb0e9 data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json 61aa5a2b15b2ccfae34987801d1c8e9bdb832198 data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json 288bbcbd1a7b91dacd8add31ee3929840944c638 data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json +365e5bbce4bca810a5cc06b888cc26855419c617 data/cosmere/advancements/recipes/cosmere.items/metal_vial.json 833cda8cfc15ad61c66246c8775b0caa85219f92 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json f2931a212e2a5727f278450d979e3a52756e6a6a data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json ce346f1ff7b526c1322f45b064ae2b977f6baacd data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -400,72 +401,72 @@ ce687a7ea7eaf89fa121327fbbd0b7a4a6750a0b data/cosmere/advancements/recipes/cosme 3ef6828e5cdf771f02ebe36ce09368b4a5926eba data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json 7e668fac713e52759565d9f58f205963e9ee4d00 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json 0fc9bffd253d78d8d142ab0d3ade16e5c5a65a88 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json -4b9a6db3441505eb84d41f8da93ecbba779fe64a data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_spike.json 6197e9da9950e6ffded52a6699312bbba1999fb9 data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json 5d373abd71a4af578998e969304271654e63fd5f data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json 3a8f341fae3b491af2575b734970826d040adda1 data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json -b614860a2bd3576a35c21a56309fc841498296af data/cosmere/advancements/recipes/cosmere.metalminds/atium_spike.json 1c4777a76cb2b403403428f09b9ab131931b6e99 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json c31ea9b580319c13dbca7f2a2bb247e989811988 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json 68b76ca9ceac2fa84f9af67b55f0ea2a825b2463 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json -a94d7ff094de6e305a10c8446254522bea96313d data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_spike.json a853338d650837102b5e9b4711f7e6e0234cabc1 data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json b65c00eef685c935f0fdd464c59a185606b98dfd data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json 3c8661c6740e4cb19c21c05be2ff5b703cd94e40 data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json -a5f44030b58b3755ea1ab956dd60a61f52ee454b data/cosmere/advancements/recipes/cosmere.metalminds/brass_spike.json 27970b63d11ece52b87324d7d00b22c65e7e9091 data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json 2bf27bfaebb3ebad820f459c5c14d5dc91a93c41 data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json fa2e45bfb6a3d231daf9af8c26fcb58d9e1768db data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json -933b0bfedb7447a5e0a7c47235a8559fa3783dac data/cosmere/advancements/recipes/cosmere.metalminds/bronze_spike.json 114866c534009ef1d8109051d7b44683683f35d9 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json 3f81543c919f9f4bcb79e9042cbb4944921cf118 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json 1370796473bdd65c6469de67a3b275d0ca056f75 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json -0e07fb4b783527a1ed9a6a44a87e43f85f87aec9 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_spike.json 36b9ee417e8d5dda868843d419d47f6f4056cb67 data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json 291c43cbb941f2373870f2bd07f2c529d9fa181d data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json 0799691a5d0f6bf6414c121c710dc96f3dc659af data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json -f277c37e16a5c2f1db7a6cdf18b8a562bbab72ef data/cosmere/advancements/recipes/cosmere.metalminds/chromium_spike.json 28658fdf053e00bb6f3c5727eac1d5c3c5a358d9 data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json 6e0e33026a3166583fb5080693ee6d7e5dce968b data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json 8e32df416937a5bf18720f0df24b8532e79ccb22 data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json -422f7cbb5469f53ee0799ac07b5ab11b433725df data/cosmere/advancements/recipes/cosmere.metalminds/copper_spike.json a5dcd9798437107f95859ed65cfceec2477d2de6 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json 2ee8fc8ca90b3fc378fc40391aaef5b7bb82c4f3 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json 0920afc5991dd97ed5c1ad319dadce0bd83658b9 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json -0bebc1b414de68f0c2b476e74316b87a2dc22c5c data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_spike.json c4ec0f829a590dbec3d7c7716f40ca63da47d547 data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json 67e4cb9c7fd88c9b7592c44013dbbc1df609b735 data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json 597d3820e7f64a7d0722b9d2a4854602dfb9a52d data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json -43dfac1c5d23810e7094c5f1041bf1958677d90d data/cosmere/advancements/recipes/cosmere.metalminds/electrum_spike.json 47bffebd78fb17fd498571034cdaf55e77129b6b data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json 579855928114627c82bedc2067c5745af57b10e1 data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json 551651f36bd0940a6957da51bacb127475206e38 data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json -935bbeb4de6a6be7b718b10c90de82109c20fc83 data/cosmere/advancements/recipes/cosmere.metalminds/gold_spike.json b0f7ec07dd0f6ac1fe88900a7e9bf1d22821c7a0 data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json dadfabc13d0da9f2b157e5817de5c47db4801f48 data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json 0faf1189819f14bec5486e2e8d77ef3b0da9754c data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json -ba0d062556a308dbe7bf698114290cbf6f036d5a data/cosmere/advancements/recipes/cosmere.metalminds/iron_spike.json -947031e54eea0f2bb6b852a88b7244cede795f78 data/cosmere/advancements/recipes/cosmere.metalminds/lerasium_spike.json 9d5b1b56b15e57e4693581e4ddd279d9d883c4f0 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json 0ed687db2b438df20c50559d2df12cf35cb56538 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json 13b96732a8225a434e24f3b4c3caae784ad5b5d8 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json -281c69a3ab5f639a336b5ea987933cb3305113e1 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_spike.json 1a6df026ae3f0f3149d20165a32817c6134a91d1 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json 928d50b788377a764a44f663de505bbbc7cd85d6 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json a9bdc25368215de4a0c3f71df60acf71da586957 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json -a8921f36242a162e5d0e94bff0c632e20b531991 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_spike.json b9886a60fb57881ce084bc31b540b0bf9874ab12 data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json cd600fb4c60196ce111de31b63e7ac295f27f66c data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json 37cf08f686cb92266552760cb39ef607976db303 data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json -a60d00a7b0f01514f83986fdc66d2d0d58cd5e55 data/cosmere/advancements/recipes/cosmere.metalminds/steel_spike.json e0a820e1c6cd7c805f69a73fa77cb6641337c3c1 data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json 545663fce48d3397a9f0505b1151b5b0585fe6fc data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json e864e2b083c60228de9dd5525aae7dd352107de6 data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json -7af20519358128afc953b8aa41501c80030d0def data/cosmere/advancements/recipes/cosmere.metalminds/tin_spike.json f8b8a7bac4c11ce8845467a10f9b66ffb7a7f80c data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json 3b81f440de9c04802297bb01202eb6012db17a78 data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json 36c4dc3ce4cccb0d2031d3f21c29e8dcb9792d7b data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json -bc6447b7fcdeea5ed8fae4d9873a6a2e68b445a6 data/cosmere/advancements/recipes/cosmere.metalminds/zinc_spike.json +4b9a6db3441505eb84d41f8da93ecbba779fe64a data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json +b614860a2bd3576a35c21a56309fc841498296af data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json +a94d7ff094de6e305a10c8446254522bea96313d data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json +a5f44030b58b3755ea1ab956dd60a61f52ee454b data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json +933b0bfedb7447a5e0a7c47235a8559fa3783dac data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json +0e07fb4b783527a1ed9a6a44a87e43f85f87aec9 data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json +f277c37e16a5c2f1db7a6cdf18b8a562bbab72ef data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json +422f7cbb5469f53ee0799ac07b5ab11b433725df data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json +0bebc1b414de68f0c2b476e74316b87a2dc22c5c data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json +43dfac1c5d23810e7094c5f1041bf1958677d90d data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json +935bbeb4de6a6be7b718b10c90de82109c20fc83 data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json +ba0d062556a308dbe7bf698114290cbf6f036d5a data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json +947031e54eea0f2bb6b852a88b7244cede795f78 data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json +281c69a3ab5f639a336b5ea987933cb3305113e1 data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json +a8921f36242a162e5d0e94bff0c632e20b531991 data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json +a60d00a7b0f01514f83986fdc66d2d0d58cd5e55 data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json +7af20519358128afc953b8aa41501c80030d0def data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json +bc6447b7fcdeea5ed8fae4d9873a6a2e68b445a6 data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json 08b90675fb50a796fb5392491e632cf106740b5f data/cosmere/loot_tables/blocks/aluminum_block.json 5952fd0d7734c39c968923de109a3d5b06210dde data/cosmere/loot_tables/blocks/aluminum_ore.json ab2cc611a239262afa9346636821e0be41509db6 data/cosmere/loot_tables/blocks/atium_block.json @@ -717,6 +718,7 @@ dd2ff61f372ff445523089553ac376a09c44b740 data/cosmere/recipes/lerasium_block.jso 5bd239ddfe87f1ce25bdf1b604683adba453d000 data/cosmere/recipes/lerasium_spike.json cb123ca5fd8f39e2c3fd8a2662244b8bcc330bb4 data/cosmere/recipes/malatium_block.json c6c8c4d290b8624c11982ad2431c8bba7627afa3 data/cosmere/recipes/malatium_ingot.json +ae541ba7e9fffcaae3aa546904c0fad97360561a data/cosmere/recipes/metal_vial.json 495d57488ff18f32c787b50726938b6138cb580a data/cosmere/recipes/nickel_block.json cfafd2d5b45667269d2af355179e698438d688dd data/cosmere/recipes/nickel_ingot.json 2ac13b480bfa8d19745a6110e7dfbc517f6e2962 data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index ccce36b2a..ad971b50f 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -39,78 +39,78 @@ "cosmere.category.basics": "Basics", "cosmere.category.feruchemy": "Feruchemy", "cosmere.category.hemalurgy": "Hemalurgy", - "cosmere.entry.allomantic_aluminum": "Allomantic Aluminum", - "cosmere.entry.allomantic_atium": "Allomantic Atium", - "cosmere.entry.allomantic_bendalloy": "Allomantic Bendalloy", - "cosmere.entry.allomantic_brass": "Allomantic Brass", - "cosmere.entry.allomantic_bronze": "Allomantic Bronze", - "cosmere.entry.allomantic_cadmium": "Allomantic Cadmium", - "cosmere.entry.allomantic_chromium": "Allomantic Chromium", - "cosmere.entry.allomantic_copper": "Allomantic Copper", - "cosmere.entry.allomantic_duralumin": "Allomantic Duralumin", - "cosmere.entry.allomantic_electrum": "Allomantic Electrum", - "cosmere.entry.allomantic_gold": "Allomantic Gold", - "cosmere.entry.allomantic_harmonium": "Allomantic Harmonium", - "cosmere.entry.allomantic_iron": "Allomantic Iron", - "cosmere.entry.allomantic_lead": "Allomantic Lead", - "cosmere.entry.allomantic_lerasatium": "Allomantic Lerasatium", - "cosmere.entry.allomantic_lerasium": "Allomantic Lerasium", - "cosmere.entry.allomantic_malatium": "Allomantic Malatium", - "cosmere.entry.allomantic_nickel": "Allomantic Nickel", - "cosmere.entry.allomantic_nicrosil": "Allomantic Nicrosil", - "cosmere.entry.allomantic_pewter": "Allomantic Pewter", - "cosmere.entry.allomantic_silver": "Allomantic Silver", - "cosmere.entry.allomantic_steel": "Allomantic Steel", - "cosmere.entry.allomantic_tin": "Allomantic Tin", - "cosmere.entry.allomantic_zinc": "Allomantic Zinc", - "cosmere.entry.feruchemical_aluminum": "Feruchemical Aluminum", - "cosmere.entry.feruchemical_atium": "Feruchemical Atium", - "cosmere.entry.feruchemical_bendalloy": "Feruchemical Bendalloy", - "cosmere.entry.feruchemical_brass": "Feruchemical Brass", - "cosmere.entry.feruchemical_bronze": "Feruchemical Bronze", - "cosmere.entry.feruchemical_cadmium": "Feruchemical Cadmium", - "cosmere.entry.feruchemical_chromium": "Feruchemical Chromium", - "cosmere.entry.feruchemical_copper": "Feruchemical Copper", - "cosmere.entry.feruchemical_duralumin": "Feruchemical Duralumin", - "cosmere.entry.feruchemical_electrum": "Feruchemical Electrum", - "cosmere.entry.feruchemical_gold": "Feruchemical Gold", - "cosmere.entry.feruchemical_harmonium": "Feruchemical Harmonium", - "cosmere.entry.feruchemical_iron": "Feruchemical Iron", - "cosmere.entry.feruchemical_lead": "Feruchemical Lead", - "cosmere.entry.feruchemical_lerasatium": "Feruchemical Lerasatium", - "cosmere.entry.feruchemical_lerasium": "Feruchemical Lerasium", - "cosmere.entry.feruchemical_malatium": "Feruchemical Malatium", - "cosmere.entry.feruchemical_nickel": "Feruchemical Nickel", - "cosmere.entry.feruchemical_nicrosil": "Feruchemical Nicrosil", - "cosmere.entry.feruchemical_pewter": "Feruchemical Pewter", - "cosmere.entry.feruchemical_silver": "Feruchemical Silver", - "cosmere.entry.feruchemical_steel": "Feruchemical Steel", - "cosmere.entry.feruchemical_tin": "Feruchemical Tin", - "cosmere.entry.feruchemical_zinc": "Feruchemical Zinc", - "cosmere.entry.hemalurgic_aluminum": "Hemalurgic Aluminum", - "cosmere.entry.hemalurgic_atium": "Hemalurgic Atium", - "cosmere.entry.hemalurgic_bendalloy": "Hemalurgic Bendalloy", - "cosmere.entry.hemalurgic_brass": "Hemalurgic Brass", - "cosmere.entry.hemalurgic_bronze": "Hemalurgic Bronze", - "cosmere.entry.hemalurgic_cadmium": "Hemalurgic Cadmium", - "cosmere.entry.hemalurgic_chromium": "Hemalurgic Chromium", - "cosmere.entry.hemalurgic_copper": "Hemalurgic Copper", - "cosmere.entry.hemalurgic_duralumin": "Hemalurgic Duralumin", - "cosmere.entry.hemalurgic_electrum": "Hemalurgic Electrum", - "cosmere.entry.hemalurgic_gold": "Hemalurgic Gold", - "cosmere.entry.hemalurgic_harmonium": "Hemalurgic Harmonium", - "cosmere.entry.hemalurgic_iron": "Hemalurgic Iron", - "cosmere.entry.hemalurgic_lead": "Hemalurgic Lead", - "cosmere.entry.hemalurgic_lerasatium": "Hemalurgic Lerasatium", - "cosmere.entry.hemalurgic_lerasium": "Hemalurgic Lerasium", - "cosmere.entry.hemalurgic_malatium": "Hemalurgic Malatium", - "cosmere.entry.hemalurgic_nickel": "Hemalurgic Nickel", - "cosmere.entry.hemalurgic_nicrosil": "Hemalurgic Nicrosil", - "cosmere.entry.hemalurgic_pewter": "Hemalurgic Pewter", - "cosmere.entry.hemalurgic_silver": "Hemalurgic Silver", - "cosmere.entry.hemalurgic_steel": "Hemalurgic Steel", - "cosmere.entry.hemalurgic_tin": "Hemalurgic Tin", - "cosmere.entry.hemalurgic_zinc": "Hemalurgic Zinc", + "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", + "cosmere.entry.allomantic_atium": "Atium - Seer", + "cosmere.entry.allomantic_bendalloy": "Bendalloy - Slider", + "cosmere.entry.allomantic_brass": "Brass - Soother", + "cosmere.entry.allomantic_bronze": "Bronze - Seeker", + "cosmere.entry.allomantic_cadmium": "Cadmium - Pulser", + "cosmere.entry.allomantic_chromium": "Chromium - Leecher", + "cosmere.entry.allomantic_copper": "Copper - Smoker", + "cosmere.entry.allomantic_duralumin": "Duralumin - Duralumin Gnat", + "cosmere.entry.allomantic_electrum": "Electrum - Oracle", + "cosmere.entry.allomantic_gold": "Gold - Augur", + "cosmere.entry.allomantic_harmonium": "Harmonium - Misting Harmonium", + "cosmere.entry.allomantic_iron": "Iron - Lurcher", + "cosmere.entry.allomantic_lead": "Lead - Misting Lead", + "cosmere.entry.allomantic_lerasatium": "Lerasatium - Misting Lerasatium", + "cosmere.entry.allomantic_lerasium": "Lerasium - Mistborn", + "cosmere.entry.allomantic_malatium": "Malatium - Misting Malatium", + "cosmere.entry.allomantic_nickel": "Nickel - Misting Nickel", + "cosmere.entry.allomantic_nicrosil": "Nicrosil - Nicroburst", + "cosmere.entry.allomantic_pewter": "Pewter - Thug", + "cosmere.entry.allomantic_silver": "Silver - Misting Silver", + "cosmere.entry.allomantic_steel": "Steel - Coinshot", + "cosmere.entry.allomantic_tin": "Tin - Tineye", + "cosmere.entry.allomantic_zinc": "Zinc - Rioter", + "cosmere.entry.feruchemical_aluminum": "Aluminum - Trueself", + "cosmere.entry.feruchemical_atium": "Atium - Elderling", + "cosmere.entry.feruchemical_bendalloy": "Bendalloy - Subsumer", + "cosmere.entry.feruchemical_brass": "Brass - Firesoul", + "cosmere.entry.feruchemical_bronze": "Bronze - Sentry", + "cosmere.entry.feruchemical_cadmium": "Cadmium - Gasper", + "cosmere.entry.feruchemical_chromium": "Chromium - Spinner", + "cosmere.entry.feruchemical_copper": "Copper - Archivist", + "cosmere.entry.feruchemical_duralumin": "Duralumin - Connector", + "cosmere.entry.feruchemical_electrum": "Electrum - Pinnacle", + "cosmere.entry.feruchemical_gold": "Gold - Bloodmaker", + "cosmere.entry.feruchemical_harmonium": "Harmonium - Ferring Harmonium", + "cosmere.entry.feruchemical_iron": "Iron - Skimmer", + "cosmere.entry.feruchemical_lead": "Lead - Ferring Lead", + "cosmere.entry.feruchemical_lerasatium": "Lerasatium - Feruchemist", + "cosmere.entry.feruchemical_lerasium": "Lerasium - Ferring Lerasium", + "cosmere.entry.feruchemical_malatium": "Malatium - Ferring Malatium", + "cosmere.entry.feruchemical_nickel": "Nickel - Ferring Nickel", + "cosmere.entry.feruchemical_nicrosil": "Nicrosil - Soulbearer", + "cosmere.entry.feruchemical_pewter": "Pewter - Brute", + "cosmere.entry.feruchemical_silver": "Silver - Ferring Silver", + "cosmere.entry.feruchemical_steel": "Steel - Steelrunner", + "cosmere.entry.feruchemical_tin": "Tin - Windwhisperer", + "cosmere.entry.feruchemical_zinc": "Zinc - Sparker", + "cosmere.entry.hemalurgic_aluminum": "Aluminum", + "cosmere.entry.hemalurgic_atium": "Atium", + "cosmere.entry.hemalurgic_bendalloy": "Bendalloy", + "cosmere.entry.hemalurgic_brass": "Brass", + "cosmere.entry.hemalurgic_bronze": "Bronze", + "cosmere.entry.hemalurgic_cadmium": "Cadmium", + "cosmere.entry.hemalurgic_chromium": "Chromium", + "cosmere.entry.hemalurgic_copper": "Copper", + "cosmere.entry.hemalurgic_duralumin": "Duralumin", + "cosmere.entry.hemalurgic_electrum": "Electrum", + "cosmere.entry.hemalurgic_gold": "Gold", + "cosmere.entry.hemalurgic_harmonium": "Harmonium", + "cosmere.entry.hemalurgic_iron": "Iron", + "cosmere.entry.hemalurgic_lead": "Lead", + "cosmere.entry.hemalurgic_lerasatium": "Lerasatium", + "cosmere.entry.hemalurgic_lerasium": "Lerasium", + "cosmere.entry.hemalurgic_malatium": "Malatium", + "cosmere.entry.hemalurgic_nickel": "Nickel", + "cosmere.entry.hemalurgic_nicrosil": "Nicrosil", + "cosmere.entry.hemalurgic_pewter": "Pewter", + "cosmere.entry.hemalurgic_silver": "Silver", + "cosmere.entry.hemalurgic_steel": "Steel", + "cosmere.entry.hemalurgic_tin": "Tin", + "cosmere.entry.hemalurgic_zinc": "Zinc", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", "effect.cosmere.allomancy_boost": "Allomancy Boost", "effect.cosmere.burning_copper": "Burning Copper", @@ -166,12 +166,14 @@ "item.cosmere.aluminum_nugget": "Aluminum Nugget", "item.cosmere.aluminum_ring_metalmind": "Aluminum Ring Metalmind", "item.cosmere.aluminum_spike": "Aluminum Spike", + "item.cosmere.aluminum_spike.tooltip": "Removes all powers.", "item.cosmere.atium_bracelet_metalmind": "Atium Bracelet Metalmind", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_necklace_metalmind": "Atium Necklace Metalmind", "item.cosmere.atium_nugget": "Atium Nugget", "item.cosmere.atium_ring_metalmind": "Atium Ring Metalmind", "item.cosmere.atium_spike": "Atium Spike", + "item.cosmere.atium_spike.tooltip": "Steals an Allomantic or Feruchemical power. Must be refined.", "item.cosmere.bendalloy_blend": "Bendalloy Blend", "item.cosmere.bendalloy_bracelet_metalmind": "Bendalloy Bracelet Metalmind", "item.cosmere.bendalloy_ingot": "Bendalloy Ingot", @@ -179,6 +181,7 @@ "item.cosmere.bendalloy_nugget": "Bendalloy Nugget", "item.cosmere.bendalloy_ring_metalmind": "Bendalloy Ring Metalmind", "item.cosmere.bendalloy_spike": "Bendalloy Spike", + "item.cosmere.bendalloy_spike.tooltip": "Steals a Spiritual Feruchemical power.", "item.cosmere.brass_blend": "Brass Blend", "item.cosmere.brass_bracelet_metalmind": "Brass Bracelet Metalmind", "item.cosmere.brass_ingot": "Brass Ingot", @@ -186,6 +189,7 @@ "item.cosmere.brass_nugget": "Brass Nugget", "item.cosmere.brass_ring_metalmind": "Brass Ring Metalmind", "item.cosmere.brass_spike": "Brass Spike", + "item.cosmere.brass_spike.tooltip": "Steals a cognitive feruchemical power.", "item.cosmere.bronze_blend": "Bronze Blend", "item.cosmere.bronze_bracelet_metalmind": "Bronze Bracelet Metalmind", "item.cosmere.bronze_ingot": "Bronze Ingot", @@ -193,18 +197,21 @@ "item.cosmere.bronze_nugget": "Bronze Nugget", "item.cosmere.bronze_ring_metalmind": "Bronze Ring Metalmind", "item.cosmere.bronze_spike": "Bronze Spike", + "item.cosmere.bronze_spike.tooltip": "Steals a Mental Allomantic power.", "item.cosmere.cadmium_bracelet_metalmind": "Cadmium Bracelet Metalmind", "item.cosmere.cadmium_ingot": "Cadmium Ingot", "item.cosmere.cadmium_necklace_metalmind": "Cadmium Necklace Metalmind", "item.cosmere.cadmium_nugget": "Cadmium Nugget", "item.cosmere.cadmium_ring_metalmind": "Cadmium Ring Metalmind", "item.cosmere.cadmium_spike": "Cadmium Spike", + "item.cosmere.cadmium_spike.tooltip": "Steals a Temporal Allomantic power.", "item.cosmere.chromium_bracelet_metalmind": "Chromium Bracelet Metalmind", "item.cosmere.chromium_ingot": "Chromium Ingot", "item.cosmere.chromium_necklace_metalmind": "Chromium Necklace Metalmind", "item.cosmere.chromium_nugget": "Chromium Nugget", "item.cosmere.chromium_ring_metalmind": "Chromium Ring Metalmind", "item.cosmere.chromium_spike": "Chromium Spike", + "item.cosmere.chromium_spike.tooltip": "Might steal destiny...", "item.cosmere.copper_bracelet_metalmind": "Copper Bracelet Metalmind", "item.cosmere.copper_clip": "Copper Clip", "item.cosmere.copper_ingot": "Copper Ingot", @@ -212,6 +219,7 @@ "item.cosmere.copper_nugget": "Copper Nugget", "item.cosmere.copper_ring_metalmind": "Copper Ring Metalmind", "item.cosmere.copper_spike": "Copper Spike", + "item.cosmere.copper_spike.tooltip": "Steals mental fortitude, memory, and intelligence.", "item.cosmere.duralumin_blend": "Duralumin Blend", "item.cosmere.duralumin_bracelet_metalmind": "Duralumin Bracelet Metalmind", "item.cosmere.duralumin_ingot": "Duralumin Ingot", @@ -219,6 +227,7 @@ "item.cosmere.duralumin_nugget": "Duralumin Nugget", "item.cosmere.duralumin_ring_metalmind": "Duralumin Ring Metalmind", "item.cosmere.duralumin_spike": "Duralumin Spike", + "item.cosmere.duralumin_spike.tooltip": "Steals Connection/Identity.", "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_bracelet_metalmind": "Electrum Bracelet Metalmind", "item.cosmere.electrum_ingot": "Electrum Ingot", @@ -226,12 +235,14 @@ "item.cosmere.electrum_nugget": "Electrum Nugget", "item.cosmere.electrum_ring_metalmind": "Electrum Ring Metalmind", "item.cosmere.electrum_spike": "Electrum Spike", + "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", "item.cosmere.gold_boxing": "Gold Boxing", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", "item.cosmere.gold_necklace_metalmind": "Gold Necklace Metalmind", "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.gold_ring_metalmind": "Gold Ring Metalmind", "item.cosmere.gold_spike": "Gold Spike", + "item.cosmere.gold_spike.tooltip": "Steals a Hybrid Feruchemical power.", "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", @@ -241,6 +252,7 @@ "item.cosmere.iron_nugget": "Iron Nugget", "item.cosmere.iron_ring_metalmind": "Iron Ring Metalmind", "item.cosmere.iron_spike": "Iron Spike", + "item.cosmere.iron_spike.tooltip": "Steals physical strength.", "item.cosmere.jar_empty": "Jar Empty", "item.cosmere.jar_of_blood": "Jar Of Blood", "item.cosmere.lead_ingot": "Lead Ingot", @@ -250,6 +262,7 @@ "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.lerasium_spike": "Lerasium Spike", + "item.cosmere.lerasium_spike.tooltip": "Steals all powers...", "item.cosmere.malatium_ingot": "Malatium Ingot", "item.cosmere.malatium_nugget": "Malatium Nugget", "item.cosmere.master_sword": "Master Sword", @@ -265,6 +278,7 @@ "item.cosmere.nicrosil_nugget": "Nicrosil Nugget", "item.cosmere.nicrosil_ring_metalmind": "Nicrosil Ring Metalmind", "item.cosmere.nicrosil_spike": "Nicrosil Spike", + "item.cosmere.nicrosil_spike.tooltip": "Steals Investiture.", "item.cosmere.night_blood": "Night Blood", "item.cosmere.obsidian_dagger": "Obsidian Dagger", "item.cosmere.pewter_blend": "Pewter Blend", @@ -274,6 +288,7 @@ "item.cosmere.pewter_nugget": "Pewter Nugget", "item.cosmere.pewter_ring_metalmind": "Pewter Ring Metalmind", "item.cosmere.pewter_spike": "Pewter Spike", + "item.cosmere.pewter_spike.tooltip": "Steals a physical feruchemical power.", "item.cosmere.raw_aluminum_ore": "Raw Aluminum Ore", "item.cosmere.raw_cadmium_ore": "Raw Cadmium Ore", "item.cosmere.raw_chromium_ore": "Raw Chromium Ore", @@ -292,6 +307,7 @@ "item.cosmere.steel_nugget": "Steel Nugget", "item.cosmere.steel_ring_metalmind": "Steel Ring Metalmind", "item.cosmere.steel_spike": "Steel Spike", + "item.cosmere.steel_spike.tooltip": "Steals a physical allomantic power.", "item.cosmere.test_blade": "Test Blade", "item.cosmere.tin_bracelet_metalmind": "Tin Bracelet Metalmind", "item.cosmere.tin_ingot": "Tin Ingot", @@ -299,12 +315,14 @@ "item.cosmere.tin_nugget": "Tin Nugget", "item.cosmere.tin_ring_metalmind": "Tin Ring Metalmind", "item.cosmere.tin_spike": "Tin Spike", + "item.cosmere.tin_spike.tooltip": "Steals senses.", "item.cosmere.zinc_bracelet_metalmind": "Zinc Bracelet Metalmind", "item.cosmere.zinc_ingot": "Zinc Ingot", "item.cosmere.zinc_necklace_metalmind": "Zinc Necklace Metalmind", "item.cosmere.zinc_nugget": "Zinc Nugget", "item.cosmere.zinc_ring_metalmind": "Zinc Ring Metalmind", "item.cosmere.zinc_spike": "Zinc Spike", + "item.cosmere.zinc_spike.tooltip": "Steals emotional fortitude.", "itemGroup.cosmere.blocks": "Cosmere Blocks", "itemGroup.cosmere.items": "Cosmere Items", "itemGroup.cosmere.metalminds": "Cosmere Metalminds", diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json new file mode 100644 index 000000000..15db6c2b4 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:metal_vial" + ] + }, + "criteria": { + "has_material": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "item": "minecraft:glass" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:metal_vial" + } + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/lerasium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/lerasium_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_spike.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json diff --git a/src/main/generated/data/cosmere/recipes/metal_vial.json b/src/main/generated/data/cosmere/recipes/metal_vial.json new file mode 100644 index 000000000..89581e8b4 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/metal_vial.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "X", + "Y" + ], + "key": { + "X": { + "item": "minecraft:iron_nugget" + }, + "Y": { + "item": "minecraft:glass" + } + }, + "result": { + "item": "cosmere:metal_vial" + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index c399d4584..0b645bf02 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -8,6 +8,8 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.datagen.patchouli.PatchouliGen; import leaf.cosmere.itemgroups.CosmereItemGroups; +import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; @@ -58,6 +60,18 @@ protected void addTranslations() break; } + if (item instanceof HemalurgicSpikeItem) + { + String use = ((HemalurgicSpikeItem) item).getMetalType().getHemalurgicUseString(); + add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + } + else if (item instanceof Metalmind) + { + String use = ((Metalmind) item).getMetalType().getHemalurgicUseString(); + add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + } + + add(item.getTranslationKey(), localisedString); } } @@ -111,14 +125,19 @@ protected void addTranslations() { String metalName = metalType.name().toLowerCase(Locale.ROOT); - String a = "allomantic_" + metalName; - String f = "feruchemical_" + metalName; - String h = "hemalurgic_" + metalName; + String a = metalName + " - " + metalType.getMistingName(); + String f = metalName + " - " + metalType.getFerringName(); + String h = metalName; + + + String aKey = "allomantic_" + metalName; + String fKey = "feruchemical_" + metalName; + String hKey = "hemalurgic_" + metalName; - String allomancyGuide = "cosmere.entry." + a; - String feruchemyGuide = "cosmere.entry." + f; - String hemalurgyGuide = "cosmere.entry." + h; + String allomancyGuide = "cosmere.entry." + aKey; + String feruchemyGuide = "cosmere.entry." + fKey; + String hemalurgyGuide = "cosmere.entry." + hKey; add(allomancyGuide, StringHelper.fixCapitalisation(a)); add(feruchemyGuide, StringHelper.fixCapitalisation(f)); diff --git a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java index 4b500c865..26e06bb55 100644 --- a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java +++ b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java @@ -31,6 +31,15 @@ public ItemStack createIcon() } }; + public static ItemGroup HEMALURGIC_SPIKES = new ItemGroup(Cosmere.MODID + ".spikes") + { + @Override + public ItemStack createIcon() + { + return new ItemStack(ItemsRegistry.METAL_SPIKE.entrySet().stream().findAny().get().getValue().get()); + } + }; + public static ItemGroup BLOCKS = new ItemGroup(Cosmere.MODID + ".blocks") { @Override diff --git a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java b/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java index 8a3e4dbe2..009371a07 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java +++ b/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java @@ -7,14 +7,15 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; +import net.minecraft.item.ItemGroup; public class ChargeableMetalItem extends ChargeableItemBase implements IHasMetalType { private final Metals.MetalType metalType; - public ChargeableMetalItem(Metals.MetalType metalType) + public ChargeableMetalItem(Metals.MetalType metalType, ItemGroup group) { - super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).group(CosmereItemGroups.METALMINDS)); + super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).group(group)); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/items/Metalmind.java b/src/main/java/leaf/cosmere/items/Metalmind.java index f0956eb63..8b830eff6 100644 --- a/src/main/java/leaf/cosmere/items/Metalmind.java +++ b/src/main/java/leaf/cosmere/items/Metalmind.java @@ -7,6 +7,7 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import leaf.cosmere.constants.Metals; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.items.curio.IHemalurgicInfo; import leaf.cosmere.manifestation.AManifestation; @@ -14,6 +15,7 @@ import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import top.theillusivec4.curios.api.SlotContext; @@ -23,9 +25,9 @@ public class Metalmind extends ChargeableMetalItem implements ICurioItem { - public Metalmind(Metals.MetalType metalType) + public Metalmind(Metals.MetalType metalType, ItemGroup group) { - super(metalType); + super(metalType, group); } diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java index 6c3f1f06b..9d4deb9c1 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java @@ -8,6 +8,7 @@ import com.mojang.blaze3d.vertex.*; import leaf.cosmere.client.renderer.wearables.*; import leaf.cosmere.constants.Metals; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.model.*; @@ -25,7 +26,7 @@ public class BraceletMetalmind extends Metalmind { public BraceletMetalmind(Metals.MetalType metalType) { - super(metalType); + super(metalType, CosmereItemGroups.METALMINDS); } private static final ResourceLocation METAL_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); private Object model; diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index daede0fd4..2345e9ef1 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -11,11 +11,14 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.renderer.wearables.SpikeModel; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; +import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.entity.model.BipedModel; @@ -50,9 +53,8 @@ import javax.annotation.Nonnull; import java.awt.*; +import java.util.*; import java.util.List; -import java.util.Optional; -import java.util.UUID; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class HemalurgicSpikeItem extends Metalmind implements IHemalurgicInfo @@ -72,8 +74,9 @@ public class HemalurgicSpikeItem extends Metalmind implements IHemalurgicInfo public HemalurgicSpikeItem(Metals.MetalType metalType) { - super(metalType); + super(metalType, CosmereItemGroups.HEMALURGIC_SPIKES); + //todo decide on damage this.attackDamage = 2f + 1f;//tier.getAttackDamage(); ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double) this.attackDamage, AttributeModifier.Operation.ADDITION)); @@ -111,6 +114,53 @@ public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + for (Metals.MetalType stealType : hemalurgyStealWhitelist) + { + if (!stealType.hasAssociatedManifestation()) + { + continue; + } + try + { + ItemStack allomancySpike = new ItemStack(this); + allomancySpike.addEnchantment(Enchantments.BINDING_CURSE, 1); + + ItemStack feruchemySpike = new ItemStack(this); + feruchemySpike.addEnchantment(Enchantments.BINDING_CURSE, 1); + + CompoundNBT allomancySpikeInfo = getHemalurgicInfo(allomancySpike); + CompoundNBT feruchemySpikeInfo = getHemalurgicInfo(feruchemySpike); + + AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType).get(); + AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType).get(); + + //then we've found something to steal! + CompoundNBTHelper.setBoolean(allomancySpikeInfo, allomancyMani.getRegistryName().getPath(), true); + CompoundNBTHelper.setBoolean(allomancySpikeInfo, "hasHemalurgicPower", true); + CompoundNBTHelper.setDouble(allomancySpikeInfo, getMetalType().name(), 10); + setHemalurgicIdentity(allomancySpike, UUID.randomUUID()); + + CompoundNBTHelper.setBoolean(feruchemySpikeInfo, feruchemyMani.getRegistryName().getPath(), true); + CompoundNBTHelper.setBoolean(feruchemySpikeInfo, "hasHemalurgicPower", true); + CompoundNBTHelper.setDouble(feruchemySpikeInfo, getMetalType().name(), 10); + setHemalurgicIdentity(feruchemySpike, UUID.randomUUID()); + + stacks.add(allomancySpike); + stacks.add(feruchemySpike); + + } + catch (Exception e) + { + LogHelper.info(String.format("remove %s from whitelist for %s spikes", stealType.toString(), getMetalType())); + } + } + } } if (this.getMetalType() == Metals.MetalType.LERASIUM) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index ac7f1246f..b833bad7e 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -277,7 +277,7 @@ default Multimap getHemalurgicAttributes(Multimap< new AttributeModifier( hemalurgicIdentity, String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), - 6, + 6,//todo get this value from the item? AttributeModifier.Operation.ADDITION)); } } diff --git a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java index 2a6f4b925..b43c8d1c4 100644 --- a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java @@ -5,13 +5,14 @@ package leaf.cosmere.items.curio; import leaf.cosmere.constants.Metals; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; public class NecklaceMetalmind extends Metalmind { public NecklaceMetalmind(Metals.MetalType metalType) { - super(metalType); + super(metalType, CosmereItemGroups.METALMINDS); } @Override diff --git a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java b/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java index 11a161bf7..b709f3bd7 100644 --- a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java @@ -5,13 +5,14 @@ package leaf.cosmere.items.curio; import leaf.cosmere.constants.Metals; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; public class RingMetalmind extends Metalmind { public RingMetalmind(Metals.MetalType metalType) { - super(metalType); + super(metalType, CosmereItemGroups.METALMINDS); } From 8cde626d50ef8c4886caa04a1879e0f40a14013b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 16:40:46 +1300 Subject: [PATCH 0017/1090] Remove our own Gold/Iron Nuggets from being created --- src/main/java/leaf/cosmere/registry/ItemsRegistry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 1b9da1e3c..1b814914e 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -80,7 +80,7 @@ public class ItemsRegistry public static final Map> METAL_NUGGETS = Arrays.stream(Metals.MetalType.values()) - //.filter(Metals.MetalType::hasMaterialItem) + .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( From 2178697067f467ebf739dcdb6d727be027b31b7e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 16:56:33 +1300 Subject: [PATCH 0018/1090] Added metalmind descriptions to JEI/NEI --- Changelog.md | 1 + src/main/generated/.cache/cache | 4 +- .../generated/assets/cosmere/lang/en_us.json | 53 ++++++++++++++++++- .../cosmere/models/item/gold_nugget.json | 6 --- .../cosmere/models/item/iron_nugget.json | 6 --- .../java/leaf/cosmere/constants/Metals.java | 44 +++++++++++++++ .../cosmere/datagen/language/EngLangGen.java | 2 +- 7 files changed, 98 insertions(+), 18 deletions(-) delete mode 100644 src/main/generated/assets/cosmere/models/item/gold_nugget.json delete mode 100644 src/main/generated/assets/cosmere/models/item/iron_nugget.json diff --git a/Changelog.md b/Changelog.md index d4c9f087a..c3ec530a7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -4,6 +4,7 @@ B19 Creative mode now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal Remove our own Gold/Iron Nuggets from being created. +Added metalmind descriptions to JEI/NEI B18 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index d1f09e4a6..ea2a172a0 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -930ebf76d1a9a554dc84c7162215547010a82af1 assets/cosmere/lang/en_us.json +b3a821225f91f8ecb2be1ebc5fc6dcde6e6804b4 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json @@ -118,7 +118,6 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spi 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/gold_boxing.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/gold_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/gold_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/gold_spike.json f9c2f8e60d6f55d0b91bf2558b3d7f6a84f3b9b5 assets/cosmere/models/item/guide.json @@ -128,7 +127,6 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_bl f11e9a45aa354d4df9e7636e8c902c2f681766a0 assets/cosmere/models/item/investiture.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/iron_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/iron_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/iron_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/iron_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/iron_spike.json 9e352e2717f6edf732b4bbf3d212914a7b51285d assets/cosmere/models/item/jar_empty.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index ad971b50f..8521668af 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -161,86 +161,118 @@ "gui.cosmere.save": "> Save", "gui.cosmere.select": "> Select", "item.cosmere.aluminum_bracelet_metalmind": "Aluminum Bracelet Metalmind", + "item.cosmere.aluminum_bracelet_metalmind.tooltip": "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind.", "item.cosmere.aluminum_ingot": "Aluminum Ingot", "item.cosmere.aluminum_necklace_metalmind": "Aluminum Necklace Metalmind", + "item.cosmere.aluminum_necklace_metalmind.tooltip": "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind.", "item.cosmere.aluminum_nugget": "Aluminum Nugget", "item.cosmere.aluminum_ring_metalmind": "Aluminum Ring Metalmind", + "item.cosmere.aluminum_ring_metalmind.tooltip": "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind.", "item.cosmere.aluminum_spike": "Aluminum Spike", "item.cosmere.aluminum_spike.tooltip": "Removes all powers.", "item.cosmere.atium_bracelet_metalmind": "Atium Bracelet Metalmind", + "item.cosmere.atium_bracelet_metalmind.tooltip": "Not yet implemented.", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_necklace_metalmind": "Atium Necklace Metalmind", + "item.cosmere.atium_necklace_metalmind.tooltip": "Not yet implemented.", "item.cosmere.atium_nugget": "Atium Nugget", "item.cosmere.atium_ring_metalmind": "Atium Ring Metalmind", + "item.cosmere.atium_ring_metalmind.tooltip": "Not yet implemented.", "item.cosmere.atium_spike": "Atium Spike", "item.cosmere.atium_spike.tooltip": "Steals an Allomantic or Feruchemical power. Must be refined.", "item.cosmere.bendalloy_blend": "Bendalloy Blend", "item.cosmere.bendalloy_bracelet_metalmind": "Bendalloy Bracelet Metalmind", + "item.cosmere.bendalloy_bracelet_metalmind.tooltip": "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later.", "item.cosmere.bendalloy_ingot": "Bendalloy Ingot", "item.cosmere.bendalloy_necklace_metalmind": "Bendalloy Necklace Metalmind", + "item.cosmere.bendalloy_necklace_metalmind.tooltip": "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later.", "item.cosmere.bendalloy_nugget": "Bendalloy Nugget", "item.cosmere.bendalloy_ring_metalmind": "Bendalloy Ring Metalmind", + "item.cosmere.bendalloy_ring_metalmind.tooltip": "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later.", "item.cosmere.bendalloy_spike": "Bendalloy Spike", "item.cosmere.bendalloy_spike.tooltip": "Steals a Spiritual Feruchemical power.", "item.cosmere.brass_blend": "Brass Blend", "item.cosmere.brass_bracelet_metalmind": "Brass Bracelet Metalmind", + "item.cosmere.brass_bracelet_metalmind.tooltip": "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind.", "item.cosmere.brass_ingot": "Brass Ingot", "item.cosmere.brass_necklace_metalmind": "Brass Necklace Metalmind", + "item.cosmere.brass_necklace_metalmind.tooltip": "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind.", "item.cosmere.brass_nugget": "Brass Nugget", "item.cosmere.brass_ring_metalmind": "Brass Ring Metalmind", + "item.cosmere.brass_ring_metalmind.tooltip": "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind.", "item.cosmere.brass_spike": "Brass Spike", "item.cosmere.brass_spike.tooltip": "Steals a cognitive feruchemical power.", "item.cosmere.bronze_blend": "Bronze Blend", "item.cosmere.bronze_bracelet_metalmind": "Bronze Bracelet Metalmind", + "item.cosmere.bronze_bracelet_metalmind.tooltip": "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later.", "item.cosmere.bronze_ingot": "Bronze Ingot", "item.cosmere.bronze_necklace_metalmind": "Bronze Necklace Metalmind", + "item.cosmere.bronze_necklace_metalmind.tooltip": "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later.", "item.cosmere.bronze_nugget": "Bronze Nugget", "item.cosmere.bronze_ring_metalmind": "Bronze Ring Metalmind", + "item.cosmere.bronze_ring_metalmind.tooltip": "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later.", "item.cosmere.bronze_spike": "Bronze Spike", "item.cosmere.bronze_spike.tooltip": "Steals a Mental Allomantic power.", "item.cosmere.cadmium_bracelet_metalmind": "Cadmium Bracelet Metalmind", + "item.cosmere.cadmium_bracelet_metalmind.tooltip": "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on.", "item.cosmere.cadmium_ingot": "Cadmium Ingot", "item.cosmere.cadmium_necklace_metalmind": "Cadmium Necklace Metalmind", + "item.cosmere.cadmium_necklace_metalmind.tooltip": "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on.", "item.cosmere.cadmium_nugget": "Cadmium Nugget", "item.cosmere.cadmium_ring_metalmind": "Cadmium Ring Metalmind", + "item.cosmere.cadmium_ring_metalmind.tooltip": "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on.", "item.cosmere.cadmium_spike": "Cadmium Spike", "item.cosmere.cadmium_spike.tooltip": "Steals a Temporal Allomantic power.", "item.cosmere.chromium_bracelet_metalmind": "Chromium Bracelet Metalmind", + "item.cosmere.chromium_bracelet_metalmind.tooltip": "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later.", "item.cosmere.chromium_ingot": "Chromium Ingot", "item.cosmere.chromium_necklace_metalmind": "Chromium Necklace Metalmind", + "item.cosmere.chromium_necklace_metalmind.tooltip": "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later.", "item.cosmere.chromium_nugget": "Chromium Nugget", "item.cosmere.chromium_ring_metalmind": "Chromium Ring Metalmind", + "item.cosmere.chromium_ring_metalmind.tooltip": "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later.", "item.cosmere.chromium_spike": "Chromium Spike", "item.cosmere.chromium_spike.tooltip": "Might steal destiny...", "item.cosmere.copper_bracelet_metalmind": "Copper Bracelet Metalmind", + "item.cosmere.copper_bracelet_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", "item.cosmere.copper_clip": "Copper Clip", "item.cosmere.copper_ingot": "Copper Ingot", "item.cosmere.copper_necklace_metalmind": "Copper Necklace Metalmind", + "item.cosmere.copper_necklace_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", "item.cosmere.copper_nugget": "Copper Nugget", "item.cosmere.copper_ring_metalmind": "Copper Ring Metalmind", + "item.cosmere.copper_ring_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", "item.cosmere.copper_spike": "Copper Spike", "item.cosmere.copper_spike.tooltip": "Steals mental fortitude, memory, and intelligence.", "item.cosmere.duralumin_blend": "Duralumin Blend", "item.cosmere.duralumin_bracelet_metalmind": "Duralumin Bracelet Metalmind", + "item.cosmere.duralumin_bracelet_metalmind.tooltip": "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.", "item.cosmere.duralumin_ingot": "Duralumin Ingot", "item.cosmere.duralumin_necklace_metalmind": "Duralumin Necklace Metalmind", + "item.cosmere.duralumin_necklace_metalmind.tooltip": "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.", "item.cosmere.duralumin_nugget": "Duralumin Nugget", "item.cosmere.duralumin_ring_metalmind": "Duralumin Ring Metalmind", + "item.cosmere.duralumin_ring_metalmind.tooltip": "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.", "item.cosmere.duralumin_spike": "Duralumin Spike", "item.cosmere.duralumin_spike.tooltip": "Steals Connection/Identity.", "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_bracelet_metalmind": "Electrum Bracelet Metalmind", + "item.cosmere.electrum_bracelet_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_ingot": "Electrum Ingot", "item.cosmere.electrum_necklace_metalmind": "Electrum Necklace Metalmind", + "item.cosmere.electrum_necklace_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_nugget": "Electrum Nugget", "item.cosmere.electrum_ring_metalmind": "Electrum Ring Metalmind", + "item.cosmere.electrum_ring_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_spike": "Electrum Spike", "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", "item.cosmere.gold_boxing": "Gold Boxing", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", + "item.cosmere.gold_bracelet_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_necklace_metalmind": "Gold Necklace Metalmind", - "item.cosmere.gold_nugget": "Gold Nugget", + "item.cosmere.gold_necklace_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_ring_metalmind": "Gold Ring Metalmind", + "item.cosmere.gold_ring_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_spike": "Gold Spike", "item.cosmere.gold_spike.tooltip": "Steals a Hybrid Feruchemical power.", "item.cosmere.guide": "Ars Arcanum", @@ -248,9 +280,11 @@ "item.cosmere.harmonium_nugget": "Harmonium Nugget", "item.cosmere.investiture": "Investiture", "item.cosmere.iron_bracelet_metalmind": "Iron Bracelet Metalmind", + "item.cosmere.iron_bracelet_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_necklace_metalmind": "Iron Necklace Metalmind", - "item.cosmere.iron_nugget": "Iron Nugget", + "item.cosmere.iron_necklace_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_ring_metalmind": "Iron Ring Metalmind", + "item.cosmere.iron_ring_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_spike": "Iron Spike", "item.cosmere.iron_spike.tooltip": "Steals physical strength.", "item.cosmere.jar_empty": "Jar Empty", @@ -273,20 +307,26 @@ "item.cosmere.nickel_nugget": "Nickel Nugget", "item.cosmere.nicrosil_blend": "Nicrosil Blend", "item.cosmere.nicrosil_bracelet_metalmind": "Nicrosil Bracelet Metalmind", + "item.cosmere.nicrosil_bracelet_metalmind.tooltip": "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)", "item.cosmere.nicrosil_ingot": "Nicrosil Ingot", "item.cosmere.nicrosil_necklace_metalmind": "Nicrosil Necklace Metalmind", + "item.cosmere.nicrosil_necklace_metalmind.tooltip": "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)", "item.cosmere.nicrosil_nugget": "Nicrosil Nugget", "item.cosmere.nicrosil_ring_metalmind": "Nicrosil Ring Metalmind", + "item.cosmere.nicrosil_ring_metalmind.tooltip": "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)", "item.cosmere.nicrosil_spike": "Nicrosil Spike", "item.cosmere.nicrosil_spike.tooltip": "Steals Investiture.", "item.cosmere.night_blood": "Night Blood", "item.cosmere.obsidian_dagger": "Obsidian Dagger", "item.cosmere.pewter_blend": "Pewter Blend", "item.cosmere.pewter_bracelet_metalmind": "Pewter Bracelet Metalmind", + "item.cosmere.pewter_bracelet_metalmind.tooltip": "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later.", "item.cosmere.pewter_ingot": "Pewter Ingot", "item.cosmere.pewter_necklace_metalmind": "Pewter Necklace Metalmind", + "item.cosmere.pewter_necklace_metalmind.tooltip": "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later.", "item.cosmere.pewter_nugget": "Pewter Nugget", "item.cosmere.pewter_ring_metalmind": "Pewter Ring Metalmind", + "item.cosmere.pewter_ring_metalmind.tooltip": "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later.", "item.cosmere.pewter_spike": "Pewter Spike", "item.cosmere.pewter_spike.tooltip": "Steals a physical feruchemical power.", "item.cosmere.raw_aluminum_ore": "Raw Aluminum Ore", @@ -302,25 +342,34 @@ "item.cosmere.silver_nugget": "Silver Nugget", "item.cosmere.steel_blend": "Steel Blend", "item.cosmere.steel_bracelet_metalmind": "Steel Bracelet Metalmind", + "item.cosmere.steel_bracelet_metalmind.tooltip": "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later.", "item.cosmere.steel_ingot": "Steel Ingot", "item.cosmere.steel_necklace_metalmind": "Steel Necklace Metalmind", + "item.cosmere.steel_necklace_metalmind.tooltip": "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later.", "item.cosmere.steel_nugget": "Steel Nugget", "item.cosmere.steel_ring_metalmind": "Steel Ring Metalmind", + "item.cosmere.steel_ring_metalmind.tooltip": "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later.", "item.cosmere.steel_spike": "Steel Spike", "item.cosmere.steel_spike.tooltip": "Steals a physical allomantic power.", "item.cosmere.test_blade": "Test Blade", "item.cosmere.tin_bracelet_metalmind": "Tin Bracelet Metalmind", + "item.cosmere.tin_bracelet_metalmind.tooltip": "Stores Eyesight senses. Tapping will zoom in.", "item.cosmere.tin_ingot": "Tin Ingot", "item.cosmere.tin_necklace_metalmind": "Tin Necklace Metalmind", + "item.cosmere.tin_necklace_metalmind.tooltip": "Stores Eyesight senses. Tapping will zoom in.", "item.cosmere.tin_nugget": "Tin Nugget", "item.cosmere.tin_ring_metalmind": "Tin Ring Metalmind", + "item.cosmere.tin_ring_metalmind.tooltip": "Stores Eyesight senses. Tapping will zoom in.", "item.cosmere.tin_spike": "Tin Spike", "item.cosmere.tin_spike.tooltip": "Steals senses.", "item.cosmere.zinc_bracelet_metalmind": "Zinc Bracelet Metalmind", + "item.cosmere.zinc_bracelet_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_ingot": "Zinc Ingot", "item.cosmere.zinc_necklace_metalmind": "Zinc Necklace Metalmind", + "item.cosmere.zinc_necklace_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_nugget": "Zinc Nugget", "item.cosmere.zinc_ring_metalmind": "Zinc Ring Metalmind", + "item.cosmere.zinc_ring_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_spike": "Zinc Spike", "item.cosmere.zinc_spike.tooltip": "Steals emotional fortitude.", "itemGroup.cosmere.blocks": "Cosmere Blocks", diff --git a/src/main/generated/assets/cosmere/models/item/gold_nugget.json b/src/main/generated/assets/cosmere/models/item/gold_nugget.json deleted file mode 100644 index e2f75ac57..000000000 --- a/src/main/generated/assets/cosmere/models/item/gold_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_nugget" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/iron_nugget.json b/src/main/generated/assets/cosmere/models/item/iron_nugget.json deleted file mode 100644 index e2f75ac57..000000000 --- a/src/main/generated/assets/cosmere/models/item/iron_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_nugget" - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 7a24e5c36..a19090773 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -689,6 +689,50 @@ public String GetAllomancyDescription() return ""; } + + public String getFeruchemyMetalmindUse() + { + switch (this) + { + case IRON: + return "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later."; + case STEEL: + return "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later."; + case TIN: + return "Stores Eyesight senses. Tapping will zoom in."; + case PEWTER: + return "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later."; + case ZINC: + return "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later."; + case BRASS: + return "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind."; + case COPPER: + return "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal."; + case BRONZE: + return "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later."; + case ALUMINUM: + return "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind."; + case DURALUMIN: + return "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.";//todo change when tapping works + case CHROMIUM: + return "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later."; + case NICROSIL: + return "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)"; + case CADMIUM: + return "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on."; + case GOLD: + return "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later."; + case ELECTRUM: + return "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later."; + case BENDALLOY: + return "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later."; + case ATIUM: + return "Not yet implemented."; + } + + return "Unknown..."; + } + //todo implement item tiers @Override diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 0b645bf02..698d68205 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -67,7 +67,7 @@ protected void addTranslations() } else if (item instanceof Metalmind) { - String use = ((Metalmind) item).getMetalType().getHemalurgicUseString(); + String use = ((Metalmind) item).getMetalType().getFeruchemyMetalmindUse(); add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); } From 91af1adca299714aa39bcf8d0c0d92e057db6794 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:09:08 +1300 Subject: [PATCH 0019/1090] Stop the game crashing when patchouli isn't installed, oops. --- src/main/java/leaf/cosmere/Cosmere.java | 2 ++ .../compat/curios/PatchouliCompat.java | 32 +++++++++++++++++++ .../leaf/cosmere/constants/Constants.java | 3 ++ .../java/leaf/cosmere/items/GuideItem.java | 17 +++++++--- 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index d8138d248..500bfb9c7 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -8,6 +8,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientSetup; import leaf.cosmere.compat.curios.CuriosCompat; +import leaf.cosmere.compat.curios.PatchouliCompat; import leaf.cosmere.handlers.ColorHandler; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.network.Network; @@ -60,6 +61,7 @@ public Cosmere() // init cross mod compatibility stuff, if relevant CuriosCompat.init(); + PatchouliCompat.init(); } private void commonSetup(FMLCommonSetupEvent event) diff --git a/src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java b/src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java new file mode 100644 index 000000000..f132fe08b --- /dev/null +++ b/src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java @@ -0,0 +1,32 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.compat.curios; + +import leaf.cosmere.utils.helpers.LogHelper; +import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.InterModComms; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; +import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; +import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.SlotTypeMessage; +import top.theillusivec4.curios.api.SlotTypePreset; + +public class PatchouliCompat +{ + private static boolean patchouliModDetected; + + public static boolean PatchouliIsPresent() + { + return patchouliModDetected; + } + + public static void init() + { + patchouliModDetected = ModList.get().isLoaded("patchouli"); + LogHelper.info("Patchouli detected, cosmere can use it's guide item."); + } + +} diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 60bd6b7c0..b64fdc550 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -98,6 +98,9 @@ public static class Strings public static final String CONTAINED_METALS = "tooltip.cosmere.metals.contained"; + + + public static final String PATCHOULI_NOT_INSTALLED = "tooltip.cosmere.patchouli.not_installed"; } public static class Translations diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index 464ecc525..5c993ff50 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -4,8 +4,10 @@ package leaf.cosmere.items; +import leaf.cosmere.compat.curios.PatchouliCompat; import leaf.cosmere.properties.PropTypes; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.ServerPlayerEntity; @@ -18,6 +20,7 @@ import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceContext; import net.minecraft.util.text.ITextComponent; +import net.minecraft.util.text.TextComponentUtils; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; @@ -27,6 +30,8 @@ import javax.annotation.Nonnull; import java.util.List; +import static leaf.cosmere.constants.Constants.Strings.PATCHOULI_NOT_INSTALLED; + public class GuideItem extends Item { @@ -40,10 +45,6 @@ public static boolean isOpen() return ItemsRegistry.GUIDE.getId().equals(PatchouliAPI.get().getOpenBookGui()); } - public static ITextComponent getEdition() - { - return PatchouliAPI.get().getSubtitle(ItemsRegistry.GUIDE.getId()); - } public static ITextComponent getTitle(ItemStack stack) { @@ -80,6 +81,14 @@ public void addInformation(ItemStack stack, World worldIn, List tooltip.add(getEdition().deepCopy().mergeStyle(TextFormatting.GRAY)); } + public static ITextComponent getEdition() + { + if (PatchouliCompat.PatchouliIsPresent()) + return PatchouliAPI.get().getSubtitle(ItemsRegistry.GUIDE.getId()); + else + return TextHelper.createTranslatedText(PATCHOULI_NOT_INSTALLED); + } + @Nonnull @Override public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) From 16388f58a9864707ed03c70ae0694bdab18df1cb Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:09:40 +1300 Subject: [PATCH 0020/1090] delete basics section of guide book for now --- .../categories/cosmere.category.basics.json | 7 ------- .../patchouli/categories/PatchouliBasics.java | 18 +++++++++--------- 2 files changed, 9 insertions(+), 16 deletions(-) delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json deleted file mode 100644 index 48de71b6d..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "cosmere.category.basics", - "description": "Everything you\u0027ve learnt so far", - "icon": "cosmere:guide", - "sortnum": 0, - "secret": false -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java index 60575fb07..eeb63ab37 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java @@ -12,14 +12,14 @@ public class PatchouliBasics { public static void collect(List categories, List entries) { - BookStuff.Category basics = new BookStuff.Category( - "basics", - "Everything you've learnt so far", - "cosmere:guide"); - - basics.sortnum = 0; - - - categories.add(basics); + //BookStuff.Category basics = new BookStuff.Category( + // "basics", + // "Everything you've learnt so far", + // "cosmere:guide"); +// + //basics.sortnum = 0; +// +// + //categories.add(basics); } } From af08485bf11abd82d373bb679813d395a4258088 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:15:44 +1300 Subject: [PATCH 0021/1090] use pewter nugget for allomancy icon in guide book for now. Was metal vial which has no icon yet. --- .../cosmere.category.allomancy.json | 2 +- .../cosmere.entry.allomancy_basics.json | 28 +++++++++++++++++++ .../categories/PatchouliAllomancy.java | 7 +++-- 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json index 867aea395..691dbde7d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json @@ -1,7 +1,7 @@ { "name": "cosmere.category.allomancy", "description": "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", - "icon": "cosmere:metal_vial", + "icon": "cosmere:pewter_nugget", "sortnum": 1, "secret": false } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json new file mode 100644 index 000000000..1e6e31e26 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json @@ -0,0 +1,28 @@ +{ + "name": "cosmere.entry.allomancy_basics", + "category": "cosmere.category.allomancy", + "icon": "cosmere:pewter_nugget", + "pages": [ + { + "type": "text", + "text": "If you entered this world with an allomantic ability, you\u0027re called a $(6)misting$().", + "title": "cosmere:pewter_nugget" + }, + { + "type": "spotlight", + "text": "Metal vial", + "item": "cosmere:metal_vial", + "link_recipe": false + }, + { + "type": "crafting", + "text": "Metal vial", + "recipe": "cosmere:metal_vial", + "recipe2": "" + } + ], + "priority": true, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 75c8477e0..e16e8f527 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -24,7 +24,7 @@ public static void collect(List categories, List categories, List pages = new ArrayList<>(); + entries.add(allomancyBasics); //allomancy for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) From 94809bee06d9e5b32239f8c16e8e20fac21c37f7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:16:15 +1300 Subject: [PATCH 0022/1090] Shortened allomancy guide book listings, as it doesn't create extra pages for you if you throw too much at it. --- Changelog.md | 7 +++-- src/main/generated/.cache/cache | 14 +++++----- .../cosmere.entry.allomantic_bronze.json | 2 +- .../cosmere.entry.allomantic_copper.json | 2 +- .../cosmere.entry.allomantic_iron.json | 2 +- .../cosmere.entry.allomantic_pewter.json | 2 +- .../cosmere.entry.allomantic_steel.json | 2 +- .../java/leaf/cosmere/constants/Metals.java | 26 +++++++++---------- 8 files changed, 29 insertions(+), 28 deletions(-) diff --git a/Changelog.md b/Changelog.md index c3ec530a7..abde03945 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,9 +2,12 @@ The Cosmere Project - For 1.16 Minecraft B19 -Creative mode now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal +The creative mode menu now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal Remove our own Gold/Iron Nuggets from being created. -Added metalmind descriptions to JEI/NEI +Added metalmind descriptions to JEI/NEI +Stop the game crashing when patchouli isn't installed, oops +Shortened allomancy guide book listings, as it doesn't create extra pages for you if you throw too much at it. +use pewter nugget for allomancy icon in guide book for now. Was metal vial which has no icon yet. B18 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index ea2a172a0..81cf4c868 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -497,25 +497,25 @@ b9543382e9ce98cefaea9ba5fc7fda19fdebb73a data/cosmere/loot_tables/blocks/steel_b 74a449937f84466b8b8796cccc115a632fa194f7 data/cosmere/loot_tables/blocks/tin_ore.json 05d8a0b0c9c41fdfda2aaa7132a01fce3f94db1a data/cosmere/loot_tables/blocks/zinc_block.json f64f747e9fef16cbd9f5fda5d5bea0e5c9073b96 data/cosmere/loot_tables/blocks/zinc_ore.json -46c4837b2f971e90f8afdc480f08f8cd5e60fa37 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json -8edf01b68f9e8fbba6b91358507240313ac5ff23 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.basics.json +edfda8b8754187d7483d63fb0a5eb694d48948ba data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json f95b389fa24ceb0f69609c04812443232ac5e96c data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json a1ea0b0941a7aa11e598176f56b6c761626940e8 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json +6491d28017c2cb713b3125a2159358bc1b121818 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json 52946b0b3cda9a5ef67cafc8478c65e2ad21c7f6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json c69d3f8400bc6f3e287e0f6e0ca958326584a0ec data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json f82614dde57cc23adeabc9f77b604049e550e3fc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json eaee86596fb39c19706ca4f760bd7c8562c47324 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json -c92640c2887bddf830cd1f347e527e9e5e51cc8f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json +4eec3fa0163a89d722dd5d05cecc41b7be811736 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json 7ce1344b1338ecc1a48aa1cb60884f1b795c27cc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json e818dbf642ee06dbf217984c365fb38ba35d0267 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json -1d7224c9c3f96a095e4d035b9de17536e69190d8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json +2df7217383a1b1e1651d6800be2c18596d6f292b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json 0e7de0a989b908bcc586d0912fd12a6af7071999 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json 11801e3b49d5f5ae59d4ccafb833bc3372c69e28 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json ece30aa503d0f189c56c30dafdeb30d8dcd9adc9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json -c5ff75d5feef35a778e59ecfaab0def1b25d38bc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json +01dca11f0d76542932b5a2376d029ed7cdc6a7f7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json 5038beef95d25ff115efdc48c76a92dfae1d2ebf data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json -fbd4cc552199f555674923f4990373de6bc4667f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json -bb2f0b55a950c58f8e6c5b80907f498578b2d91b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json +215e193a852fd3fcf28b5652a3e8123fed4498e7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json +e92429bf020c5d0c4ac81201233c8e614c5eaf2f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json 906b21ce375cea37513cb6a09c2643295c1fd6d0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json 2e960b5355f77cbff7074e8ac3b384c5fb2baa93 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json e507645841d29dd59b28aead198089100af08d36 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json index 1c094aaf5..91cd94c12 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.\n\nCopper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields." + "text": "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json index 45e0fe360..98003d0fb 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a \u0027coppercloud\u0027 which hides Allomancy from being detected by Bronze. The Allomancer also becomes immune to emotional Allomancy, though this effect is not felt by those around them.\n\nCopperclouds are generally not piercible but those with exceptional strength in Bronze may do so." + "text": "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a \u0027coppercloud\u0027 which hides Allomancy from being detected by Bronze. " } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json index 42740d32b..c87dff5ca 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them. The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things." + "text": "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json index eb124777c..88e0fd2f0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "Pewter is an allomatic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself.\n\nThe major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()" + "text": "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json index 747481ac0..30f0b4d02 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object.Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction.\nClever allomancers use steel to allow themselves to fly through the air." + "text": "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." } ], "priority": false, diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index a19090773..43cdd857c 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -629,22 +629,21 @@ public String GetAllomancyDescription() switch (this) { case IRON: - return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them. " + - "The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + - "The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; - + return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them." ;//+ + //"The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + + //"The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; case STEEL: - return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." + - "Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction.\n" + - "Clever allomancers use steel to allow themselves to fly through the air."; + return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." ;//+ + //"Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction." + + //"Clever Allomancers use steel to allow themselves to fly through the air."; case TIN: return "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from."; case PEWTER: - return "Pewter is an allomatic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." + - "\n\nThe major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; + return "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." ;//+ + //"The major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; case ZINC: return "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\""; @@ -653,13 +652,12 @@ public String GetAllomancyDescription() return "In allomancy, brass gives the ability to \"soothe\" the emotions of others."; case COPPER: - return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. " + - "The Allomancer also becomes immune to emotional Allomancy, though this effect is not felt by those around them.\n" + "\n" + - "Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; + return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. " ;//+ + //"Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; case BRONZE: - return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.\n" + "\n" + - "Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; + return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.";//+ + //"Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; case ALUMINUM: return "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself."; From 6e29af893cc1692af81505d957f2c46e4ac741cc Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:26:51 +1300 Subject: [PATCH 0023/1090] Made iron pulling quite a bit stronger (0.064, was 0.008) --- Changelog.md | 3 ++- .../cosmere/manifestation/allomancy/AllomancyIronSteel.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Changelog.md b/Changelog.md index abde03945..fd9449eb7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -7,7 +7,8 @@ Remove our own Gold/Iron Nuggets from being created. Added metalmind descriptions to JEI/NEI Stop the game crashing when patchouli isn't installed, oops Shortened allomancy guide book listings, as it doesn't create extra pages for you if you throw too much at it. -use pewter nugget for allomancy icon in guide book for now. Was metal vial which has no icon yet. +Use pewter nugget for allomancy icon in guide book for now. Was metal vial which has no icon yet. +Made iron pulling quite a bit stronger (0.064, was 0.008) B18 diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 3e7928556..65a55e76e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -184,12 +184,12 @@ private void performEffectServer(ISpiritweb cap) direction = VectorHelper.getDirection( blockCenter, living.getPositionVec(), - (isPush ? -1f : 1f) * renderPartialTicks); + (isPush ? -1f : 2f) * renderPartialTicks); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vector3d normalize = direction.normalize(); - double shortenFactor = 0.2; + double shortenFactor = isPush ? 0.2 : 0.4; Vector3d add = living.getMotion().add(normalize.mul(shortenFactor, shortenFactor, shortenFactor)); //don't let the motion go crazy large From 8524b6aca2b5930fad2ed66e03b0044aa02ab965 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Dec 2021 18:45:03 +1300 Subject: [PATCH 0024/1090] tooltip for contained metals on metal vial item --- gradle.properties | 4 ++-- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 1 + src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 3 +++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8ffe95419..c1b4ed134 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # -#Tue Jul 27 20:19:45 NZST 2021 +#Sun Dec 05 18:40:30 NZDT 2021 mappings_version=20210309-1.16.5 forge_version=1.16.5-36.2.0 org.gradle.daemon=false @@ -11,5 +11,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 curios_version=1.16.5-4.0.5.1 mod_version=0.3.1 -build_number=18 +build_number=19 patchouli_version=1.16.4-50 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 81cf4c868..1acd9566d 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -b3a821225f91f8ecb2be1ebc5fc6dcde6e6804b4 assets/cosmere/lang/en_us.json +1e583abce6ba49628d55353120e7de49c7f991ff assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 8521668af..51be71a6e 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -454,6 +454,7 @@ "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", + "tooltip.cosmere.metals.contained": "Contained Metals:", "tooltip.cosmere.power.found": "Contained Powers:", "tooltip.item.info.control": "\u00A77Hold \u00A78[\u00A7eControl\u00A78]", "tooltip.item.info.shift": "\u00A77Hold \u00A78[\u00A7eShift\u00A78]", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 698d68205..970492689 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -144,6 +144,9 @@ else if (item instanceof Metalmind) add(hemalurgyGuide, StringHelper.fixCapitalisation(h)); } + + add("tooltip.cosmere.metals.contained", "Contained Metals:"); + add("cosmere.category.basics", "Basics"); add("cosmere.category.allomancy", "Allomancy"); add("cosmere.category.feruchemy", "Feruchemy"); From c99299a4281567aef1bdfe21199c1f524702596c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 5 Mar 2022 22:45:06 +1300 Subject: [PATCH 0025/1090] Converting to moj mappings --- LICENSE | 174 ++-------------- build.gradle | 3 +- gradle.properties | 8 +- .../java/leaf/cosmere/blocks/BaseBlock.java | 4 +- .../cap/entity/SpiritwebCapability.java | 26 +-- .../java/leaf/cosmere/charge/IChargeable.java | 12 +- .../leaf/cosmere/charge/ItemChargeHelper.java | 8 +- .../cosmere/charge/MetalmindChargeHelper.java | 2 +- .../leaf/cosmere/client/ClientEvents.java | 16 +- .../java/leaf/cosmere/client/ClientSetup.java | 6 +- .../leaf/cosmere/client/gui/DrawUtils.java | 16 +- .../cosmere/client/gui/SpiritwebMenu.java | 98 ++++----- .../renderer/entity/SprenFlameRenderer.java | 8 +- .../entity/model/SprenFlameModel.java | 84 ++++---- .../renderer/wearables/BraceletModel.java | 32 +-- .../client/renderer/wearables/CurioModel.java | 18 +- .../client/renderer/wearables/SpikeModel.java | 44 ++-- .../subcommands/ManifestationCommand.java | 48 ++--- .../commands/subcommands/ModCommand.java | 2 +- .../commands/subcommands/TestCommand.java | 6 +- .../leaf/cosmere/compat/curios/TestCurio.java | 2 +- .../leaf/cosmere/constants/Constants.java | 4 +- .../java/leaf/cosmere/constants/Metals.java | 14 +- .../java/leaf/cosmere/datagen/RecipeGen.java | 174 ++++++++-------- .../datagen/advancements/AdvancementGen.java | 4 +- .../advancements/AllomancyAdvancements.java | 20 +- .../advancements/CoreAdvancements.java | 20 +- .../advancements/FeruchemyAdvancements.java | 20 +- .../advancements/HemalurgyAdvancements.java | 8 +- .../cosmere/datagen/blocks/BlockTagsGen.java | 6 +- .../cosmere/datagen/items/ItemTagsGen.java | 10 +- .../cosmere/datagen/language/EngLangGen.java | 14 +- .../datagen/loottables/BlockLootTableGen.java | 6 +- .../datagen/patchouli/PatchouliGen.java | 2 +- .../cosmere/effects/FortuneBonusModifier.java | 18 +- .../allomancy/AllomancyBoostEffect.java | 6 +- .../allomancy/AllomancyEffectBase.java | 6 +- .../feruchemy/FeruchemyEffectBase.java | 6 +- .../feruchemy/store/BendalloyStoreEffect.java | 8 +- .../feruchemy/store/BrassStoreEffect.java | 6 +- .../feruchemy/store/BronzeStoreEffect.java | 8 +- .../feruchemy/store/CadmiumStoreEffect.java | 10 +- .../feruchemy/store/ChromiumStoreEffect.java | 12 +- .../feruchemy/store/CopperStoreEffect.java | 2 +- .../feruchemy/store/DuraluminStoreEffect.java | 6 +- .../feruchemy/store/GoldStoreEffect.java | 2 +- .../feruchemy/store/IronStoreEffect.java | 10 +- .../feruchemy/store/PewterStoreEffect.java | 4 +- .../feruchemy/store/SteelStoreEffect.java | 4 +- .../feruchemy/tap/BendalloyTapEffect.java | 8 +- .../effects/feruchemy/tap/BrassTapEffect.java | 16 +- .../feruchemy/tap/CadmiumTapEffect.java | 6 +- .../feruchemy/tap/ChromiumTapEffect.java | 12 +- .../effects/feruchemy/tap/GoldTapEffect.java | 4 +- .../effects/feruchemy/tap/IronTapEffect.java | 10 +- .../feruchemy/tap/PewterTapEffect.java | 4 +- .../effects/feruchemy/tap/SteelTapEffect.java | 14 +- .../cosmere/entities/spren/ASprenEntity.java | 26 +-- .../entities/spren/SprenFlameEntity.java | 190 +++++++++--------- .../leaf/cosmere/handlers/ColorHandler.java | 2 +- .../leaf/cosmere/handlers/CommonEvents.java | 11 +- .../cosmere/handlers/EntityEventHandler.java | 4 +- .../cosmere/handlers/PlayerEventHandler.java | 8 +- .../cosmere/itemgroups/CosmereItemGroups.java | 8 +- .../java/leaf/cosmere/items/BaseItem.java | 2 +- .../java/leaf/cosmere/items/CapWrapper.java | 24 +-- .../cosmere/items/ChargeableItemBase.java | 10 +- .../cosmere/items/ChargeableMetalItem.java | 2 +- src/main/java/leaf/cosmere/items/GemItem.java | 2 +- .../java/leaf/cosmere/items/GuideItem.java | 14 +- .../java/leaf/cosmere/items/MetalItem.java | 4 +- .../leaf/cosmere/items/MetalNuggetItem.java | 8 +- .../leaf/cosmere/items/MetalVialItem.java | 28 +-- .../java/leaf/cosmere/items/Metalmind.java | 2 +- .../leaf/cosmere/items/ShardbladeItem.java | 4 +- .../items/curio/BraceletMetalmind.java | 8 +- .../items/curio/HemalurgicSpikeItem.java | 54 ++--- .../cosmere/items/curio/IHemalurgicInfo.java | 6 +- .../java/leaf/cosmere/loot/LootHandler.java | 8 +- .../allomancy/AllomancyBase.java | 2 +- .../allomancy/AllomancyBendalloy.java | 16 +- .../allomancy/AllomancyBrass.java | 8 +- .../allomancy/AllomancyBronze.java | 14 +- .../allomancy/AllomancyCadmium.java | 4 +- .../allomancy/AllomancyChromium.java | 24 +-- .../allomancy/AllomancyCopper.java | 4 +- .../allomancy/AllomancyDuralumin.java | 4 +- .../allomancy/AllomancyIronSteel.java | 44 ++-- .../allomancy/AllomancyNicrosil.java | 6 +- .../allomancy/AllomancyPewter.java | 10 +- .../manifestation/allomancy/AllomancyTin.java | 4 +- .../allomancy/AllomancyZinc.java | 12 +- .../feruchemy/FeruchemyBase.java | 4 +- .../feruchemy/FeruchemyCopper.java | 12 +- .../feruchemy/FeruchemyElectrum.java | 4 +- .../feruchemy/FeruchemyNicrosil.java | 4 +- .../feruchemy/FeruchemyZinc.java | 6 +- .../surgebinding/SurgeGravitation.java | 10 +- .../cosmere/mixin/EffectInstanceMixin.java | 10 +- .../java/leaf/cosmere/mixin/EntityMixin.java | 4 +- .../leaf/cosmere/mixin/GameRendererMixin.java | 12 +- .../java/leaf/cosmere/network/Network.java | 8 +- .../ChangeManifestationModeMessage.java | 2 +- .../ChangeSelectedManifestationMessage.java | 4 +- .../DeactivateAllManifestationsMessage.java | 4 +- ...eactivateCurrentManifestationsMessage.java | 4 +- .../SetSelectedManifestationMessage.java | 6 +- .../packets/SyncPlayerSpiritwebMessage.java | 6 +- .../network/packets/SyncPushPullMessage.java | 6 +- .../leaf/cosmere/properties/PropTypes.java | 18 +- .../cosmere/recipes/VialMixingRecipe.java | 18 +- .../cosmere/registry/AttributesRegistry.java | 4 +- .../leaf/cosmere/registry/BlocksRegistry.java | 2 +- .../registry/DataSerializersRegistry.java | 2 +- .../leaf/cosmere/registry/EntityRegistry.java | 6 +- .../cosmere/registry/FeatureRegistry.java | 10 +- .../leaf/cosmere/registry/ItemsRegistry.java | 4 +- .../cosmere/registry/KeybindingRegistry.java | 2 +- .../leaf/cosmere/registry/TagsRegistry.java | 10 +- .../cosmere/utils/helpers/CommandHelper.java | 2 +- .../utils/helpers/CompoundNBTHelper.java | 6 +- .../cosmere/utils/helpers/EntityHelper.java | 12 +- .../cosmere/utils/helpers/PlayerHelper.java | 2 +- .../utils/helpers/ResourceLocationHelper.java | 8 - .../cosmere/utils/helpers/StackNBTHelper.java | 8 +- .../cosmere/utils/helpers/TextHelper.java | 12 +- .../cosmere/utils/helpers/VectorHelper.java | 8 +- src/main/resources/META-INF/mods.toml | 2 +- src/main/resources/pack.mcmeta | 2 +- 129 files changed, 890 insertions(+), 1032 deletions(-) diff --git a/LICENSE b/LICENSE index 5f1977b64..e0e29f1a6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,165 +1,19 @@ -GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 +All Rights Reserved -Copyright (C) 2007 Free Software Foundation, Inc. -Everyone is permitted to copy and distribute verbatim copies -of this license document, but changing it is not allowed. +Copyright (c) 2022 LeafReynolds +Permission is hereby granted, free of charge, to any person: -This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. +- to use the mod +- to distribute the mod as part of a modpack +- to publish images or videos depicting the mod +- to copy and modify the code (e.g. submitting pull requests) +- to learn from portions of the code and adapt for use in other projects +- to derive from or depend on this code as a dependency (e.g. for mod compatibility) -0. Additional Definitions. +Versions of Cosmere prior to 0.4.0 were licensed under [GNU GPLv3](https://www.gnu.org/licenses/lgpl-3.0) and therefore fall under those terms instead of the above. -As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - -"The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - -An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - -A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - -The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - -The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - -1. Exception to Section 3 of the GNU GPL. - -You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - -2. Conveying Modified Versions. - -If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - -a) under this License, provided that you make a good faith effort to -ensure that, in the event an Application does not supply the -function or data, the facility still operates, and performs -whatever part of its purpose remains meaningful, or - -b) under the GNU GPL, with none of the additional permissions of -this License applicable to that copy. - -3. Object Code Incorporating Material from Library Header Files. - -The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - -a) Give prominent notice with each copy of the object code that the -Library is used in it and that the Library and its use are -covered by this License. - -b) Accompany the object code with a copy of the GNU GPL and this license -document. - -4. Combined Works. - -You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - -a) Give prominent notice with each copy of the Combined Work that -the Library is used in it and that the Library and its use are -covered by this License. - -b) Accompany the Combined Work with a copy of the GNU GPL and this license -document. - -c) For a Combined Work that displays copyright notices during -execution, include the copyright notice for the Library among -these notices, as well as a reference directing the user to the -copies of the GNU GPL and this license document. - -d) Do one of the following: - -0) Convey the Minimal Corresponding Source under the terms of this -License, and the Corresponding Application Code in a form -suitable for, and under terms that permit, the user to -recombine or relink the Application with a modified version of -the Linked Version to produce a modified Combined Work, in the -manner specified by section 6 of the GNU GPL for conveying -Corresponding Source. - -1) Use a suitable shared library mechanism for linking with the -Library. A suitable mechanism is one that (a) uses at run time -a copy of the Library already present on the user's computer -system, and (b) will operate properly with a modified version -of the Library that is interface-compatible with the Linked -Version. - -e) Provide Installation Information, but only if you would otherwise -be required to provide such information under section 6 of the -GNU GPL, and only to the extent that such information is -necessary to install and execute a modified version of the -Combined Work produced by recombining or relinking the -Application with a modified version of the Linked Version. (If -you use option 4d0, the Installation Information must accompany -the Minimal Corresponding Source and Corresponding Application -Code. If you use option 4d1, you must provide the Installation -Information in the manner specified by section 6 of the GNU GPL -for conveying Corresponding Source.) - -5. Combined Libraries. - -You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - -a) Accompany the combined library with a copy of the same work based -on the Library, uncombined with any other library facilities, -conveyed under the terms of this License. - -b) Give prominent notice with the combined library that part of it -is a work based on the Library, and explaining where to find the -accompanying uncombined form of the same work. - -6. Revised Versions of the GNU Lesser General Public License. - -The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - -If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/build.gradle b/build.gradle index 17cc97ebf..7cdb35a0d 100644 --- a/build.gradle +++ b/build.gradle @@ -19,7 +19,7 @@ ext.configFile = file('gradle.properties') ext.config = parseConfig(configFile) version = "${forge_version}-${mod_version}-b${build_number}" -group = 'net.cosmere.mod' // http://maven.apache.org/guides/mini/guide-naming-conventions.html +group = 'leaf.cosmere' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "${project.jar_name}" // Process resources on build @@ -50,7 +50,6 @@ sourceSets { minecraft { mappings channel: "${mappings_type}", version: "${mappings_version}" - // accessTransformer = file('build/resources/main/META-INF/accesstransformer.cfg') runs { client { property 'mixin.env.remapRefMap', 'true' diff --git a/gradle.properties b/gradle.properties index c1b4ed134..2a83c6152 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,12 @@ # +org.gradle.jvmargs=-Xmx8G +org.gradle.daemon=false #Sun Dec 05 18:40:30 NZDT 2021 -mappings_version=20210309-1.16.5 +mappings_version=1.16.5 forge_version=1.16.5-36.2.0 -org.gradle.daemon=false -mappings_type=snapshot +mappings_type=official jar_name=Cosmere-Mod minecraft_version=1.16.5 -org.gradle.jvmargs=-Xmx8G jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 curios_version=1.16.5-4.0.5.1 diff --git a/src/main/java/leaf/cosmere/blocks/BaseBlock.java b/src/main/java/leaf/cosmere/blocks/BaseBlock.java index 1f0680767..2f315af27 100644 --- a/src/main/java/leaf/cosmere/blocks/BaseBlock.java +++ b/src/main/java/leaf/cosmere/blocks/BaseBlock.java @@ -7,13 +7,15 @@ import net.minecraft.block.Block; import net.minecraft.block.SoundType; +import net.minecraft.block.AbstractBlock.Properties; + public class BaseBlock extends Block { public BaseBlock(Properties properties, SoundType sound, float hardness, float resistance) { - super(properties.sound(sound).hardnessAndResistance(hardness, resistance)); + super(properties.sound(sound).strength(hardness, resistance)); } public BaseBlock(Properties properties) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 0d403f654..6ab8281fe 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -169,7 +169,7 @@ public void deserializeNBT(CompoundNBT nbt) public void tick() { //if server - if (!livingEntity.world.isRemote) + if (!livingEntity.level.isClientSide) { //Login setup if (!didSetup) @@ -190,7 +190,7 @@ public void tick() } //tick metals - if (livingEntity.ticksExisted % 1200 == 0) + if (livingEntity.tickCount % 1200 == 0) { //metals can't stay in your system forever, y'know? for (Metals.MetalType metalType : Metals.MetalType.values()) @@ -210,7 +210,7 @@ public void tick() } //tick stormlight - if (stormlightStored > 0 && livingEntity.ticksExisted % 100 == 0) + if (stormlightStored > 0 && livingEntity.tickCount % 100 == 0) { //todo decide what's appropriate for reducing stormlight //maybe reducing cost based on how many ideals they have sworn? @@ -288,7 +288,7 @@ public void renderWorldEffects(RenderWorldLastEvent event) } if (linesToDrawByColor.size() > 0) { - Vector3d originPoint = getLiving().getClientEyePosition(Minecraft.getInstance().getRenderPartialTicks()).add(0, -1, 0); + Vector3d originPoint = getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); for (Map.Entry> entry : linesToDrawByColor.entries()) { //For all found things, draw the line @@ -301,17 +301,17 @@ public void renderWorldEffects(RenderWorldLastEvent event) public void renderSelectedHUD(MatrixStack ms) { Minecraft mc = Minecraft.getInstance(); - MainWindow mainWindow = mc.getMainWindow(); + MainWindow mainWindow = mc.getWindow(); int x = 10; - int y = mainWindow.getScaledHeight() / 5; + int y = mainWindow.getGuiScaledHeight() / 5; //todo translations - String stringToDraw = "Selected Power: " + I18n.format(selectedManifestation.translation().getString()); - mc.fontRenderer.drawStringWithShadow(ms, stringToDraw, x + 18, y, 0xFF4444); + String stringToDraw = "Selected Power: " + I18n.get(selectedManifestation.translation().getString()); + mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); int mode = getMode(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); String stringToDraw2 = "Mode: " + mode; - mc.fontRenderer.drawStringWithShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); + mc.font.drawShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); ItemStack stack; @@ -329,7 +329,7 @@ else if (mode < 0) stack = inactiveStack; } - mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, x, y); + mc.getItemRenderer().renderAndDecorateItem(stack, x, y); } @@ -626,7 +626,7 @@ public int previousMode(ManifestationTypes manifestationType, int powerID) @Override public void syncToClients(@Nullable ServerPlayerEntity serverPlayerEntity) { - if (livingEntity != null && livingEntity.world.isRemote) + if (livingEntity != null && livingEntity.level.isClientSide) { throw new IllegalStateException("Don't sync client -> server"); } @@ -642,11 +642,11 @@ public void syncToClients(@Nullable ServerPlayerEntity serverPlayerEntity) if (serverPlayerEntity == null) { - Network.sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getEntityId(), nbt), (ServerWorld) livingEntity.world); + Network.sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), (ServerWorld) livingEntity.level); } else { - Network.sendTo(new SyncPlayerSpiritwebMessage(this.livingEntity.getEntityId(), nbt), serverPlayerEntity); + Network.sendTo(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), serverPlayerEntity); } } } diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index 230aa141b..90c3ff469 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -47,14 +47,14 @@ default void setCharge(ItemStack itemStack, int chargeLevel) default boolean trySetAttunedPlayer(ItemStack itemStack, PlayerEntity entity) { UUID attunedPlayerID = getAttunedPlayer(itemStack); - UUID playerID = entity.getUniqueID(); + UUID playerID = entity.getUUID(); boolean noAttunedPlayer = attunedPlayerID == null; if (noAttunedPlayer) { //No attuned player! Check to see whether they are storing identity - EffectInstance storingIdentity = entity.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + EffectInstance storingIdentity = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); //if they are if (storingIdentity != null && storingIdentity.getDuration() > 0) { @@ -85,7 +85,7 @@ default boolean trySetAttunedPlayer(ItemStack itemStack, PlayerEntity entity) default void setAttunedPlayer(ItemStack itemStack, PlayerEntity entity) { - StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, entity.getUniqueID()); + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, entity.getUUID()); } default UUID getAttunedPlayer(ItemStack itemStack) @@ -95,7 +95,7 @@ default UUID getAttunedPlayer(ItemStack itemStack) default void setAttunedPlayerName(ItemStack itemStack, PlayerEntity entity) { - String playerName = PlayerHelper.getPlayerName(entity.getUniqueID(), entity.getServer()); + String playerName = PlayerHelper.getPlayerName(entity.getUUID(), entity.getServer()); StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, playerName); } @@ -106,12 +106,12 @@ default String getAttunedPlayerName(ItemStack itemStack) default boolean getPlayerIsAttuned(ItemStack itemStack, PlayerEntity entity) { - EffectInstance storingIdentityEffect = entity.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + EffectInstance storingIdentityEffect = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); boolean noIdentityPlayer = storingIdentityEffect != null && storingIdentityEffect.getDuration() > 0; UUID itemAttunedPlayerUUID = getAttunedPlayer(itemStack); //null means not attuned at all, so can assume player is attuned with it - return noIdentityPlayer || itemAttunedPlayerUUID == null || itemAttunedPlayerUUID == entity.getUniqueID(); + return noIdentityPlayer || itemAttunedPlayerUUID == null || itemAttunedPlayerUUID == entity.getUUID(); } diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 7a8bef5c2..6c236dbaa 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -60,11 +60,11 @@ public static List getChargeCurios(PlayerEntity player) private static List getChargeableItemStacks(IInventory acc) { - List toReturn = new ArrayList<>(acc.getSizeInventory()); + List toReturn = new ArrayList<>(acc.getContainerSize()); - for (int slot = 0; slot < acc.getSizeInventory(); slot++) + for (int slot = 0; slot < acc.getContainerSize(); slot++) { - ItemStack stackInSlot = acc.getStackInSlot(slot); + ItemStack stackInSlot = acc.getItem(slot); if (!stackInSlot.isEmpty() && stackInSlot.getItem() instanceof IChargeable) { @@ -137,7 +137,7 @@ public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean doAdjust, boolean checkPlayer, List items, List acc) { - EffectInstance storingIdentity = player.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + EffectInstance storingIdentity = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 3490b4a40..e684a8b1e 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -31,7 +31,7 @@ public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalTy //player is storing investiture, //set the powers they have to the stack. - CompoundNBT nbt = metalmind.getOrCreateChildTag("StoredInvestiture"); + CompoundNBT nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); //for each power the user has access to for (Manifestations.ManifestationTypes manifestationType : Manifestations.ManifestationTypes.values()) { diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index e9f876f50..43d6177fe 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -37,7 +37,7 @@ public class ClientEvents public static void handleScroll(MouseScrollEvent event) { final ClientPlayerEntity player = Minecraft.getInstance().player; - final ItemStack held = player.getHeldItem(Hand.MAIN_HAND); + final ItemStack held = player.getItemInHand(Hand.MAIN_HAND); SpiritwebCapability.get(player).ifPresent(spiritweb -> { @@ -57,7 +57,7 @@ public static void handleScroll(MouseScrollEvent event) @SubscribeEvent public static void input(InputUpdateEvent event) { - if (event.getMovementInput().jump) + if (event.getMovementInput().jumping) { } } @@ -101,7 +101,7 @@ else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_NEXT)) private static boolean isKeyPressed(InputEvent.KeyInputEvent event, KeyBinding keyBinding) { - return event.getKey() == keyBinding.getKey().getKeyCode() && keyBinding.isPressed(); + return event.getKey() == keyBinding.getKey().getValue() && keyBinding.consumeClick(); } @SubscribeEvent @@ -122,19 +122,19 @@ public static void renderManifestationsHUD(final RenderWorldLastEvent event) IProfiler profiler = mc.getProfiler(); ClientPlayerEntity playerEntity = mc.player; { - profiler.startSection("cosmere-hud"); + profiler.push("cosmere-hud"); - if (Minecraft.getInstance().playerController.shouldDrawHUD()) + if (Minecraft.getInstance().gameMode.canHurtPlayer()) { SpiritwebCapability.get(playerEntity).ifPresent(spiritweb -> { - profiler.startSection(spiritweb.manifestation().getRegistryName().getNamespace()); + profiler.push(spiritweb.manifestation().getRegistryName().getNamespace()); spiritweb.renderWorldEffects(event); - profiler.endSection(); + profiler.pop(); }); } - profiler.endSection(); + profiler.pop(); RenderSystem.color4f(1F, 1F, 1F, 1F); } diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index 633febb02..a98d08478 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -49,7 +49,7 @@ public static void init(final FMLClientSetupEvent event) if (!metalType.hasOre()) continue; - RenderType cutoutMipped = RenderType.getCutoutMipped(); + RenderType cutoutMipped = RenderType.cutoutMipped(); RenderTypeLookup.setRenderLayer(metalType.getOreBlock(), cutoutMipped); } @@ -63,7 +63,7 @@ public static void init(final FMLClientSetupEvent event) public static void registerIconTextures(TextureStitchEvent.Pre event) { final AtlasTexture map = event.getMap(); - if (!map.getTextureLocation().equals(PlayerContainer.LOCATION_BLOCKS_TEXTURE)) + if (!map.location().equals(PlayerContainer.BLOCK_ATLAS)) { return; } @@ -90,7 +90,7 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post event) { final AtlasTexture map = event.getMap(); - if (!map.getTextureLocation().equals(PlayerContainer.LOCATION_BLOCKS_TEXTURE)) + if (!map.location().equals(PlayerContainer.BLOCK_ATLAS)) { return; } diff --git a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java index eb98f15f7..406864ab7 100644 --- a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java +++ b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java @@ -23,32 +23,32 @@ public class DrawUtils //https://forums.minecraftforge.net/topic/81895-problems-with-rendering-a-line-1152/?tab=comments#comment-388662 public static void drawLinesFromPoint(RenderWorldLastEvent event, Vector3d point, List endPoints, Color color) { - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().getRenderTypeBuffers().getBufferSource(); + IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().renderBuffers().bufferSource(); IVertexBuilder builder = buffer.getBuffer(RenderType.LINES); //move where the line is in the world. otherwise it is drawn around origin 0,0,0 I think? - Vector3d view = Minecraft.getInstance().gameRenderer.getActiveRenderInfo().getProjectedView(); + Vector3d view = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); MatrixStack matrixStack = event.getMatrixStack(); RenderSystem.lineWidth(3); - matrixStack.push(); + matrixStack.pushPose(); matrixStack.translate(-view.x, -view.y, -view.z); - Matrix4f matrix = matrixStack.getLast().getMatrix(); + Matrix4f matrix = matrixStack.last().pose(); for (Vector3d endPoint : endPoints) { - builder.pos(matrix,(float) point.getX(), (float) point.getY(), (float) point.getZ()) + builder.vertex(matrix,(float) point.x(), (float) point.y(), (float) point.z()) .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) .endVertex(); - builder.pos(matrix, (float) endPoint.getX(), (float) endPoint.getY(), (float) endPoint.getZ()) + builder.vertex(matrix, (float) endPoint.x(), (float) endPoint.y(), (float) endPoint.z()) .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) .endVertex(); } - matrixStack.pop(); + matrixStack.popPose(); RenderSystem.disableDepthTest(); - buffer.finish(RenderType.LINES); + buffer.endBatch(RenderType.LINES); } } diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index f56ace830..e1689cea0 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -120,12 +120,12 @@ public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability sp this.spiritweb = spiritweb; final boolean wasVisible = isVisible(); - if (!MANIFESTATION_MENU.isInvalid() && MANIFESTATION_MENU.isKeyDown()) + if (!MANIFESTATION_MENU.isUnbound() && MANIFESTATION_MENU.isDown()) { actionUsed = false; if (raiseVisibility()) { - getMinecraft().mouseHelper.ungrabMouse(); + getMinecraft().mouseHandler.releaseMouse(); } } else @@ -184,25 +184,25 @@ public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability sp if (isVisible()) { final MainWindow window = event.getWindow(); - init(Minecraft.getInstance(), window.getScaledWidth(), window.getScaledHeight()); - setScaledResolution(window.getScaledWidth(), window.getScaledHeight()); + init(Minecraft.getInstance(), window.getGuiScaledWidth(), window.getGuiScaledHeight()); + setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); if (!wasVisible) { - getMinecraft().currentScreen = SpiritwebMenu.instance; - getMinecraft().mouseHelper.ungrabMouse(); + getMinecraft().screen = SpiritwebMenu.instance; + getMinecraft().mouseHandler.releaseMouse(); } - if (getMinecraft().mouseHelper.isMouseGrabbed()) + if (getMinecraft().mouseHandler.isMouseGrabbed()) { - KeyBinding.unPressAllKeys(); + KeyBinding.releaseAll(); } } else { if (wasVisible) { - getMinecraft().mouseHelper.grabMouse(); + getMinecraft().mouseHandler.grabMouse(); } } } @@ -212,13 +212,13 @@ public boolean mouseClicked(final double mouseX, final double mouseY, final int { this.visibility = 0f; canShow = false; - this.minecraft.displayGuiScreen(null); + this.minecraft.setScreen(null); - if (this.minecraft.currentScreen == null) + if (this.minecraft.screen == null) { - this.minecraft.setGameFocused(true); - this.minecraft.getSoundHandler().resume(); - this.minecraft.mouseHelper.grabMouse(); + this.minecraft.setWindowActive(true); + this.minecraft.getSoundManager().resume(); + this.minecraft.mouseHandler.grabMouse(); } return true; } @@ -317,7 +317,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo return; } - matrixStack.push(); + matrixStack.pushPose(); final int start = (int) (visibility * 98) << 24; final int end = (int) (visibility * 128) << 24; @@ -330,7 +330,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); RenderSystem.shadeModel(GL11.GL_SMOOTH); final Tessellator tessellator = Tessellator.getInstance(); - final BufferBuilder buffer = tessellator.getBuffer(); + final BufferBuilder buffer = tessellator.getBuilder(); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); @@ -353,7 +353,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo setupSidedButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); //draw out what we've asked for - tessellator.draw(); + tessellator.end(); //then we switch to icons RenderSystem.shadeModel(GL11.GL_FLAT); @@ -362,7 +362,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo RenderSystem.color4f(1, 1, 1, 1.0f); RenderSystem.disableBlend(); RenderSystem.enableAlphaTest(); - RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(PlayerContainer.LOCATION_BLOCKS_TEXTURE).getGlTextureId()); + RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(PlayerContainer.BLOCK_ATLAS).getId()); buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); @@ -372,7 +372,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo //put the icons on the sided buttons setupSidedButtonIcons(buffer, middle_x, middle_y); - tessellator.draw(); + tessellator.end(); // draw radial button strings setupRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); @@ -383,7 +383,7 @@ public void render(final MatrixStack matrixStack, final int mouseX, final int mo //do extra text info stuff setupAnyExtraInfoTexts(matrixStack, (int) middle_y); - matrixStack.pop(); + matrixStack.popPose(); } private void setupAnyExtraInfoTexts(MatrixStack matrixStack, int middle_y) @@ -397,7 +397,7 @@ private void setupAnyExtraInfoTexts(MatrixStack matrixStack, int middle_y) { //todo localisation check final String text = key.name().toLowerCase(Locale.ROOT) + ": " + value; - font.drawStringWithShadow(matrixStack, text, x, (int) y[0], 0xffffffff); + font.drawShadow(matrixStack, text, x, (int) y[0], 0xffffffff); y[0] += 10; } }); @@ -410,21 +410,21 @@ private void setupSidedButtonStrings(MatrixStack matrixStack, double middle_x, d //but only if that sided button is highlighted if (sideButton.highlighted) { - final String text = I18n.format(sideButton.name); + final String text = I18n.get(sideButton.name); switch (sideButton.textSide) { case WEST: - font.drawStringWithShadow(matrixStack, text, (int) (middle_x + sideButton.x1 - 8) - font.getStringWidth(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x1 - 8) - font.width(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); break; case EAST: - font.drawStringWithShadow(matrixStack, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); break; case UP: - font.drawStringWithShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.getStringWidth(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); + font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); break; case DOWN: - font.drawStringWithShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.getStringWidth(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); + font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); break; } @@ -446,13 +446,13 @@ private void setupRadialButtonStrings(MatrixStack matrixStack, int middle_x, int final int fixed_y = (int) y;//(y + TEXT_DISTANCE); //todo localisation check - final String text = I18n.format(button.manifestation.translation().getKey()); + final String text = I18n.get(button.manifestation.translation().getKey()); fixed_x = (int) (x < 0 - ? fixed_x - (font.getStringWidth(text) + TEXT_DISTANCE) + ? fixed_x - (font.width(text) + TEXT_DISTANCE) : fixed_x + TEXT_DISTANCE); - font.drawStringWithShadow(matrixStack, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); + font.drawShadow(matrixStack, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); //no need to keep searching, we only keep one highlighted at a time. break; @@ -483,10 +483,10 @@ private void setupSidedButtonIcons(BufferBuilder buffer, double middle_x, double final float green = f * ((button.color >> 8 & 0xff) / 255.0f); final float blue = f * ((button.color & 0xff) / 255.0f); - buffer.pos(middle_x + btnx1, middle_y + btny1, 0).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(red, green, blue, a).endVertex(); - buffer.pos(middle_x + btnx1, middle_y + btny2, 0).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(red, green, blue, a).endVertex(); - buffer.pos(middle_x + btnx2, middle_y + btny2, 0).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(red, green, blue, a).endVertex(); - buffer.pos(middle_x + btnx2, middle_y + btny1, 0).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx1, middle_y + btny1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx1, middle_y + btny2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx2, middle_y + btny2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx2, middle_y + btny1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(red, green, blue, a).endVertex(); } } @@ -516,10 +516,10 @@ private void setupRadialButtonIcons(BufferBuilder buffer, double middle_x, doubl final double v1 = sip.top * 16.0; final double v2 = (sip.top + sip.height) * 16.0; - buffer.pos(middle_x + x1, middle_y + y1, 0).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x1, middle_y + y2, 0).tex(sprite.getInterpolatedU(u1), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x2, middle_y + y2, 0).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v2)).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x2, middle_y + y1, 0).tex(sprite.getInterpolatedU(u2), sprite.getInterpolatedV(v1)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1, middle_y + y1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1, middle_y + y2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2, middle_y + y2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2, middle_y + y1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(f, f, f, a).endVertex(); } } @@ -538,11 +538,11 @@ private void setupSidedButtons(BufferBuilder buffer, double mouseVecX, double mo } //set first triangle - buffer.pos(middle_x + button.x1, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + button.x1, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x1, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x1, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); //set second triangle - buffer.pos(middle_x + button.x2, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + button.x2, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x2, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x2, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); } } @@ -661,18 +661,18 @@ private void setupRadialButtons(BufferBuilder buffer, double mouseVecX, double m if (smallMode) { - buffer.pos(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); } else { //set the square pos - buffer.pos(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.pos(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); } } diff --git a/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java b/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java index 25f467282..78cdafaf4 100644 --- a/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java +++ b/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java @@ -22,19 +22,19 @@ public SprenFlameRenderer(EntityRendererManager renderManagerIn) /** * Returns the location of an entity's texture. */ - public ResourceLocation getEntityTexture(SprenFlameEntity entity) + public ResourceLocation getTextureLocation(SprenFlameEntity entity) { return FIRE_SPREN_TEXTURES; } - protected void preRenderCallback(SprenFlameEntity entitylivingbaseIn, MatrixStack matrixStackIn, float partialTickTime) + protected void scale(SprenFlameEntity entitylivingbaseIn, MatrixStack matrixStackIn, float partialTickTime) { matrixStackIn.scale(0.8F, 0.8F, 0.8F); } - protected void applyRotations(SprenFlameEntity entityLiving, MatrixStack matrixStackIn, float ageInTicks, float rotationYaw, float partialTicks) + protected void setupRotations(SprenFlameEntity entityLiving, MatrixStack matrixStackIn, float ageInTicks, float rotationYaw, float partialTicks) { matrixStackIn.translate(0.0D, (double) (MathHelper.cos(ageInTicks * 0.3F) * 0.1F), 0.0D); - super.applyRotations(entityLiving, matrixStackIn, ageInTicks, rotationYaw, partialTicks); + super.setupRotations(entityLiving, matrixStackIn, ageInTicks, rotationYaw, partialTicks); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java b/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java index db01c0429..8e9bd7e63 100644 --- a/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java +++ b/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java @@ -27,115 +27,115 @@ public class SprenFlameModel extends AgeableModel public SprenFlameModel() { - textureWidth = 16; - textureHeight = 16; + texWidth = 16; + texHeight = 16; body = new ModelRenderer(this); - body.setRotationPoint(0.0F, 24.0F, 0.0F); - body.setTextureOffset(0, 0).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 0.0F, 0.0F, false); - body.setTextureOffset(0, 0).addBox(-1.0F, -3.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false); + body.setPos(0.0F, 24.0F, 0.0F); + body.texOffs(0, 0).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 0.0F, 0.0F, false); + body.texOffs(0, 0).addBox(-1.0F, -3.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false); wingLeft = new ModelRenderer(this); - wingLeft.setRotationPoint(0.0F, 0.0F, 0.0F); + wingLeft.setPos(0.0F, 0.0F, 0.0F); body.addChild(wingLeft); wingLeftUpper_r1 = new ModelRenderer(this); - wingLeftUpper_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + wingLeftUpper_r1.setPos(0.0F, 0.0F, 0.0F); wingLeft.addChild(wingLeftUpper_r1); setRotationAngle(wingLeftUpper_r1, 0.0F, 0.7854F, -0.1745F); - wingLeftUpper_r1.setTextureOffset(0, 0).addBox(1.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); + wingLeftUpper_r1.texOffs(0, 0).addBox(1.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); wingLeftLower_r1 = new ModelRenderer(this); - wingLeftLower_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + wingLeftLower_r1.setPos(0.0F, 0.0F, 0.0F); wingLeft.addChild(wingLeftLower_r1); setRotationAngle(wingLeftLower_r1, 0.0F, 0.3491F, 0.0F); - wingLeftLower_r1.setTextureOffset(0, 0).addBox(0.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); + wingLeftLower_r1.texOffs(0, 0).addBox(0.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); wingRight = new ModelRenderer(this); - wingRight.setRotationPoint(0.0F, 0.0F, 0.0F); + wingRight.setPos(0.0F, 0.0F, 0.0F); body.addChild(wingRight); wingRightLower_r1 = new ModelRenderer(this); - wingRightLower_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + wingRightLower_r1.setPos(0.0F, 0.0F, 0.0F); wingRight.addChild(wingRightLower_r1); setRotationAngle(wingRightLower_r1, 0.0F, -0.3491F, 0.0F); - wingRightLower_r1.setTextureOffset(0, 0).addBox(-3.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); + wingRightLower_r1.texOffs(0, 0).addBox(-3.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); wingRightUpper_r1 = new ModelRenderer(this); - wingRightUpper_r1.setRotationPoint(0.0F, 0.0F, 0.0F); + wingRightUpper_r1.setPos(0.0F, 0.0F, 0.0F); wingRight.addChild(wingRightUpper_r1); setRotationAngle(wingRightUpper_r1, 0.0F, -0.7854F, 0.1745F); - wingRightUpper_r1.setTextureOffset(0, 0).addBox(-5.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); + wingRightUpper_r1.texOffs(0, 0).addBox(-5.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); } @Override - public void setRotationAngles(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) + public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - this.wingRight.rotateAngleX = 0.0F; + this.wingRight.xRot = 0.0F; - this.body.rotateAngleX = 0.0F; - this.body.rotationPointY = 19.0F; + this.body.xRot = 0.0F; + this.body.y = 19.0F; - boolean flag = entityIn.isOnGround() && entityIn.getMotion().lengthSquared() < 1.0E-7D; + boolean flag = entityIn.isOnGround() && entityIn.getDeltaMovement().lengthSqr() < 1.0E-7D; if (flag) { - this.wingRight.rotateAngleY = -0.2618F; - this.wingRight.rotateAngleZ = 0.0F; - this.wingLeft.rotateAngleX = 0.0F; - this.wingLeft.rotateAngleY = 0.2618F; - this.wingLeft.rotateAngleZ = 0.0F; + this.wingRight.yRot = -0.2618F; + this.wingRight.zRot = 0.0F; + this.wingLeft.xRot = 0.0F; + this.wingLeft.yRot = 0.2618F; + this.wingLeft.zRot = 0.0F; } else { float f = ageInTicks * 2.1F; - this.wingRight.rotateAngleY = 0.0F; - this.wingRight.rotateAngleZ = MathHelper.cos(f) * (float) Math.PI * 0.15F; - this.wingLeft.rotateAngleX = this.wingRight.rotateAngleX; - this.wingLeft.rotateAngleY = this.wingRight.rotateAngleY; - this.wingLeft.rotateAngleZ = -this.wingRight.rotateAngleZ; - this.body.rotateAngleX = 0.0F; - this.body.rotateAngleY = 180.0F; - this.body.rotateAngleZ = 0.0F; + this.wingRight.yRot = 0.0F; + this.wingRight.zRot = MathHelper.cos(f) * (float) Math.PI * 0.15F; + this.wingLeft.xRot = this.wingRight.xRot; + this.wingLeft.yRot = this.wingRight.yRot; + this.wingLeft.zRot = -this.wingRight.zRot; + this.body.xRot = 0.0F; + this.body.yRot = 180.0F; + this.body.zRot = 0.0F; } if (this.bodyPitch > 0.0F) { - this.body.rotateAngleX = ModelUtils.func_228283_a_(this.body.rotateAngleX, 3.0915928F, this.bodyPitch); + this.body.xRot = ModelUtils.rotlerpRad(this.body.xRot, 3.0915928F, this.bodyPitch); } } @Override - public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) + public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { body.render(matrixStack, buffer, packedLight, packedOverlay); } @Override - protected Iterable getHeadParts() + protected Iterable headParts() { return ImmutableList.of(); } @Override - protected Iterable getBodyParts() + protected Iterable bodyParts() { return ImmutableList.of(this.body); } - public void setLivingAnimations(T entityIn, float limbSwing, float limbSwingAmount, float partialTick) + public void prepareMobModel(T entityIn, float limbSwing, float limbSwingAmount, float partialTick) { - super.setLivingAnimations(entityIn, limbSwing, limbSwingAmount, partialTick); + super.prepareMobModel(entityIn, limbSwing, limbSwingAmount, partialTick); this.bodyPitch = entityIn.getBodyPitch(partialTick); } public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; + modelRenderer.xRot = x; + modelRenderer.yRot = y; + modelRenderer.zRot = z; } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java index 0210c2d0a..21c5559a1 100644 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java +++ b/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java @@ -29,31 +29,31 @@ public BraceletModel() super(1f); //left arm - this.bipedLeftArm = new ModelRenderer(this, 0, 0); - this.bipedLeftArm.mirror = true; - this.bipedLeftArm.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedLeftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + this.leftArm = new ModelRenderer(this, 0, 0); + this.leftArm.mirror = true; + this.leftArm.setPos(-5.0F, 2.0F, 0.0F); + this.leftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); //right arm - this.bipedRightArm = new ModelRenderer(this, 0, 0); - this.bipedRightArm.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedRightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + this.rightArm = new ModelRenderer(this, 0, 0); + this.rightArm.setPos(-5.0F, 2.0F, 0.0F); + this.rightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); //left leg - this.bipedLeftLeg = new ModelRenderer(this, 0, 0); - this.bipedLeftLeg.mirror = true; - this.bipedLeftLeg.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedLeftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); + this.leftLeg = new ModelRenderer(this, 0, 0); + this.leftLeg.mirror = true; + this.leftLeg.setPos(-5.0F, 2.0F, 0.0F); + this.leftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); //right leg - this.bipedRightLeg = new ModelRenderer(this, 0, 0); - this.bipedRightLeg.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedRightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); + this.rightLeg = new ModelRenderer(this, 0, 0); + this.rightLeg.setPos(-5.0F, 2.0F, 0.0F); + this.rightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); } @Override - public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) + public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) { Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); if (!slotTypePreset.isPresent()) @@ -61,6 +61,6 @@ public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder ver return; } - super.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + super.renderToBuffer(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } } diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java index 93516563b..7e5526681 100644 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java +++ b/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java @@ -29,16 +29,16 @@ public abstract class CurioModel extends BipedModel public CurioModel(float modelSize) { super(modelSize); - this.textureWidth = 16; - this.textureHeight = 16; + this.texWidth = 16; + this.texHeight = 16; } - public void setRotationAngles(@Nonnull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float netHeadPitch) + public void setupAnim(@Nonnull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float netHeadPitch) { } @Override - public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) + public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) { Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); if (!slotTypePreset.isPresent()) @@ -50,18 +50,18 @@ public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder ver { case BACK: case BODY: - this.bipedBody.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + this.body.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); break; case BRACELET: case HANDS: case RING: if (renderIndex == 0) { - this.bipedLeftArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + this.leftArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } else { - this.bipedRightArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + this.rightArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } break; case BELT: @@ -69,11 +69,11 @@ public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder ver case CHARM: if (renderIndex == 0) { - this.bipedLeftLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + this.leftLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } else { - this.bipedRightLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + this.rightLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } break; } diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java index 5f278faac..27d9cca00 100644 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java +++ b/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java @@ -32,50 +32,50 @@ public SpikeModel() //left eye this.leftEyeSpike = new ModelRenderer(this, 0, 0); - this.leftEyeSpike.setRotationPoint(0.0F, 0.0F, 0.0F); + this.leftEyeSpike.setPos(0.0F, 0.0F, 0.0F); this.leftEyeSpike.addBox(1.0F, -3.0F, -7.0F, 2.0F, 2.0F, 14.0F, 0.0F); //right eye this.rightEyeSpike = new ModelRenderer(this, 0, 0); - this.rightEyeSpike.setRotationPoint(0.0F, 0.0F, 0.0F); + this.rightEyeSpike.setPos(0.0F, 0.0F, 0.0F); this.rightEyeSpike.addBox(-3.0F, -3.0F, -7.0F, 2.0F, 2.0F, 14.0F, 0.0F); //neck this.neckSpike = new ModelRenderer(this, 0, 0); - this.neckSpike.setRotationPoint(0.0F, 0.0F, 0.0F); + this.neckSpike.setPos(0.0F, 0.0F, 0.0F); this.neckSpike.addBox(-0.5F, -1.0F, 4.0F, 1.0F, 1.0F, 2.0F, 0.0F); //body - this.bipedBody = new ModelRenderer(this, 16, 16); - this.bipedBody.setRotationPoint(0.0F, 0.0F, 0.0F); - this.bipedBody.addBox(-1F, 2.0F, 0.0F, 2.0F, 2.0F, 3.0F, 0.0F); + this.body = new ModelRenderer(this, 16, 16); + this.body.setPos(0.0F, 0.0F, 0.0F); + this.body.addBox(-1F, 2.0F, 0.0F, 2.0F, 2.0F, 3.0F, 0.0F); //left arm - this.bipedLeftArm = new ModelRenderer(this, 0, 0); - this.bipedLeftArm.mirror = true; - this.bipedLeftArm.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedLeftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + this.leftArm = new ModelRenderer(this, 0, 0); + this.leftArm.mirror = true; + this.leftArm.setPos(-5.0F, 2.0F, 0.0F); + this.leftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); //right arm - this.bipedRightArm = new ModelRenderer(this, 0, 0); - this.bipedRightArm.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedRightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + this.rightArm = new ModelRenderer(this, 0, 0); + this.rightArm.setPos(-5.0F, 2.0F, 0.0F); + this.rightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); //left leg - this.bipedLeftLeg = new ModelRenderer(this, 0, 0); - this.bipedLeftLeg.mirror = true; - this.bipedLeftLeg.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedLeftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); + this.leftLeg = new ModelRenderer(this, 0, 0); + this.leftLeg.mirror = true; + this.leftLeg.setPos(-5.0F, 2.0F, 0.0F); + this.leftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); //right leg - this.bipedRightLeg = new ModelRenderer(this, 0, 0); - this.bipedRightLeg.setRotationPoint(-5.0F, 2.0F, 0.0F); - this.bipedRightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); + this.rightLeg = new ModelRenderer(this, 0, 0); + this.rightLeg.setPos(-5.0F, 2.0F, 0.0F); + this.rightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); } @Override - public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) + public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) { Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); if (!slotTypePreset.isPresent()) @@ -100,6 +100,6 @@ public void render(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder ver break; } - super.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); + super.renderToBuffer(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); } } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index 49b5b8bd8..2e3898693 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -40,7 +40,7 @@ private static int check(CommandContext context, ServerPlayerEnti { CommandSource source = context.getSource(); - TranslationTextComponent powersFound = new TranslationTextComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(context.getSource().getWorld(), player.getUniqueID())); + TranslationTextComponent powersFound = new TranslationTextComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID())); final TextComponent leftBracketTextComponent = new StringTextComponent("["); final TextComponent rightBracketTextComponent = new StringTextComponent("]"); @@ -49,14 +49,14 @@ private static int check(CommandContext context, ServerPlayerEnti //figure out which manifestations a player has for (AManifestation manifestation : spiritweb.getAvailableManifestations()) { - powersFound.appendSibling(leftBracketTextComponent); - powersFound.appendSibling(TextHelper.createTextWithTooltip( + powersFound.append(leftBracketTextComponent); + powersFound.append(TextHelper.createTextWithTooltip( manifestation.translation(), manifestation.description())); - powersFound.appendSibling(rightBracketTextComponent); - powersFound.appendSibling(space); + powersFound.append(rightBracketTextComponent); + powersFound.append(space); } - source.sendFeedback(powersFound, true); + source.sendSuccess(powersFound, true); }); return Command.SINGLE_SUCCESS; @@ -69,8 +69,8 @@ private static int clear(CommandContext context, ServerPlayerEnti CommandSource source = context.getSource(); iSpiritweb.clearManifestations(); iSpiritweb.syncToClients(null); - TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getWorld(), player.getUniqueID()); - source.sendFeedback(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); }); return Command.SINGLE_SUCCESS; @@ -86,8 +86,8 @@ private static int reroll(CommandContext context, ServerPlayerEnt //set to none so that it auto updates to the new available ones on sync iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); iSpiritweb.syncToClients(null); - TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getWorld(), player.getUniqueID()); - source.sendFeedback(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); }); return Command.SINGLE_SUCCESS; @@ -98,13 +98,13 @@ private static int set(CommandContext context, ServerPlayerEntity CommandSource source = context.getSource(); AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - TextComponent playerText = TextHelper.getPlayerTextObject(source.getWorld(), player.getUniqueID()); + TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); if (player == null || manifestation == null) { - source.sendErrorMessage(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); return 0; } SpiritwebCapability.get(player).ifPresent((spiritweb) -> @@ -112,7 +112,7 @@ private static int set(CommandContext context, ServerPlayerEntity spiritweb.clearManifestations(); spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); spiritweb.syncToClients(null); - source.sendFeedback(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); }); return Command.SINGLE_SUCCESS; } @@ -122,19 +122,19 @@ private static int give(CommandContext context, ServerPlayerEntit CommandSource source = context.getSource(); AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - TextComponent playerText = TextHelper.getPlayerTextObject(source.getWorld(), player.getUniqueID()); + TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); if (player == null || manifestation == null) { - source.sendErrorMessage(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); return 0; } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - source.sendFeedback(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); spiritweb.syncToClients(null); }); return Command.SINGLE_SUCCESS; @@ -145,20 +145,20 @@ private static int remove(CommandContext context, ServerPlayerEnt CommandSource source = context.getSource(); AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - TextComponent playerText = TextHelper.getPlayerTextObject(source.getWorld(), player.getUniqueID()); + TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); if (player == null || manifestation == null) { - source.sendErrorMessage(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); return 0; } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { spiritweb.removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); spiritweb.syncToClients(null); - source.sendFeedback(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); }); return Command.SINGLE_SUCCESS; } @@ -166,9 +166,9 @@ private static int remove(CommandContext context, ServerPlayerEnt public static ArgumentBuilder register(CommandDispatcher dispatcher) { return Commands.literal("powers") - .requires(context -> context.hasPermissionLevel(2)) + .requires(context -> context.hasPermission(2)) .then(Commands.literal("check") - .executes(context -> check(context, context.getSource().asPlayer()))) + .executes(context -> check(context, context.getSource().getPlayerOrException()))) /* .then(Commands.literal("clear") .executes(context -> clear(context, context.getSource().asPlayer()))) .then(Commands.literal("set") @@ -176,13 +176,13 @@ private static int remove(CommandContext context, ServerPlayerEnt .executes(context -> set(context, context.getSource().asPlayer()))) )*/ .then(Commands.literal("reroll") - .executes(context -> reroll(context, context.getSource().asPlayer()))) + .executes(context -> reroll(context, context.getSource().getPlayerOrException()))) .then(Commands.literal("give") .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> give(context, context.getSource().asPlayer())))) + .executes(context -> give(context, context.getSource().getPlayerOrException())))) .then(Commands.literal("remove") .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> remove(context, context.getSource().asPlayer())))) + .executes(context -> remove(context, context.getSource().getPlayerOrException())))) ; // end add } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java index 002136079..d47ccf669 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java @@ -21,6 +21,6 @@ public ModCommand(int level) public boolean canExecute(CommandSource source) throws CommandSyntaxException { - return source.hasPermissionLevel(permLevel); + return source.hasPermission(permLevel); } } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java index d2c24c1d3..5fcf4cacf 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java @@ -19,13 +19,13 @@ public class TestCommand extends ModCommand private static int testSub(CommandContext context, ServerPlayerEntity player) { - return testSub(context, player.getServerWorld()); + return testSub(context, player.getLevel()); } private static int testSub(CommandContext context, ServerWorld world) { CommandSource source = context.getSource(); - source.sendFeedback(new TranslationTextComponent("command.cosmere.test.sub"), true); + source.sendSuccess(new TranslationTextComponent("command.cosmere.test.sub"), true); return SINGLE_SUCCESS; } @@ -33,7 +33,7 @@ private static int testSub(CommandContext context, ServerWorld wo public static ArgumentBuilder register(CommandDispatcher dispatcher) { return Commands.literal("test") - .requires(context -> context.hasPermissionLevel(2)).then(Commands.literal("sub").executes(context -> testSub(context, context.getSource().asPlayer()))); // end add + .requires(context -> context.hasPermission(2)).then(Commands.literal("sub").executes(context -> testSub(context, context.getSource().getPlayerOrException()))); // end add } @Override diff --git a/src/main/java/leaf/cosmere/compat/curios/TestCurio.java b/src/main/java/leaf/cosmere/compat/curios/TestCurio.java index ce1b2b620..ce23ddc68 100644 --- a/src/main/java/leaf/cosmere/compat/curios/TestCurio.java +++ b/src/main/java/leaf/cosmere/compat/curios/TestCurio.java @@ -18,7 +18,7 @@ public class TestCurio implements ICurio public void curioTick(String identifier, int index, LivingEntity livingEntity) { //don't check every tick. - if (livingEntity.ticksExisted % 20 == 0) + if (livingEntity.tickCount % 20 == 0) { } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index b64fdc550..26288336b 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -28,8 +28,8 @@ public static class Resources public static class Suffix { - public static final IFormattableTextComponent INVESTITURE_UNITS = new StringTextComponent(" IU").mergeStyle(TextFormatting.RESET); - public static final IFormattableTextComponent STORMLIGHT_UNITS = new StringTextComponent(" SU").mergeStyle(TextFormatting.RESET); + public static final IFormattableTextComponent INVESTITURE_UNITS = new StringTextComponent(" IU").withStyle(TextFormatting.RESET); + public static final IFormattableTextComponent STORMLIGHT_UNITS = new StringTextComponent(" SU").withStyle(TextFormatting.RESET); } public static class NBT diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 43cdd857c..7776ffe06 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -734,39 +734,39 @@ public String getFeruchemyMetalmindUse() //todo implement item tiers @Override - public int getMaxUses() + public int getUses() { return 0; } @Override - public float getEfficiency() + public float getSpeed() { return 0; } @Override - public float getAttackDamage() + public float getAttackDamageBonus() { return 0; } @Override - public int getHarvestLevel() + public int getLevel() { return 0; } @Override - public int getEnchantability() + public int getEnchantmentValue() { return 0; } @Override - public Ingredient getRepairMaterial() + public Ingredient getRepairIngredient() { - return Ingredient.fromTag(getMetalIngotTag()); + return Ingredient.of(getMetalIngotTag()); } } diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index 51a2bec44..bdcd9eff3 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -37,7 +37,7 @@ public RecipeGen(DataGenerator generatorIn) } @Override - protected void registerRecipes(Consumer consumer) + protected void buildShapelessRecipes(Consumer consumer) { //example recipes obtained from following website on 3rd April '21. Thank you ChampionAsh5357! @@ -50,9 +50,9 @@ protected void registerRecipes(Consumer consumer) //addOreSmeltingRecipes(consumer, BlocksRegistry.GEM_BLOCK.get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); - ShapedRecipeBuilder.shapedRecipe(ItemsRegistry.METAL_VIAL.get()).key('X', Items.IRON_NUGGET).key('Y', Items.GLASS).patternLine("X").patternLine("Y").addCriterion("has_material", hasItem(Items.GLASS)).build(consumer); + ShapedRecipeBuilder.shaped(ItemsRegistry.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); - CustomRecipeBuilder.customRecipe(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).build(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); + CustomRecipeBuilder.special(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).save(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -65,10 +65,10 @@ protected void registerRecipes(Consumer consumer) continue; } - compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType)).build(consumer); + compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType), metalType.name().toLowerCase() + "_block_deconstruct"); - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType)).build(consumer); + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType), metalType.name().toLowerCase() + "_item_deconstruct"); if (metalType.hasOre()) @@ -103,79 +103,79 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp switch (metalType) { case STEEL: - ShapelessRecipeBuilder.shapelessRecipe(output, 4) - .addCriterion("has_item", hasItem(output)) - .addIngredient(Ingredient.fromTag(Tags.Items.INGOTS_IRON)) - .addIngredient(Ingredient.fromTag(Tags.Items.INGOTS_IRON)) - .addIngredient(Ingredient.fromTag(Tags.Items.INGOTS_IRON)) - .addIngredient(Ingredient.fromItems(Items.COAL, Items.CHARCOAL)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case PEWTER: - ShapelessRecipeBuilder.shapelessRecipe(output, 5) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 5) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case BRASS: - ShapelessRecipeBuilder.shapelessRecipe(output, 2) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.ZINC)) - .addIngredient(materialTag.get(Metals.MetalType.COPPER)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 2) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.ZINC)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case BRONZE: - ShapelessRecipeBuilder.shapelessRecipe(output, 4) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.COPPER)) - .addIngredient(materialTag.get(Metals.MetalType.COPPER)) - .addIngredient(materialTag.get(Metals.MetalType.COPPER)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case DURALUMIN: - ShapelessRecipeBuilder.shapelessRecipe(output, 5) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.ALUMINUM)) - .addIngredient(materialTag.get(Metals.MetalType.ALUMINUM)) - .addIngredient(materialTag.get(Metals.MetalType.ALUMINUM)) - .addIngredient(materialTag.get(Metals.MetalType.ALUMINUM)) - .addIngredient(materialTag.get(Metals.MetalType.COPPER)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 5) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case NICROSIL: - ShapelessRecipeBuilder.shapelessRecipe(output, 4) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.CHROMIUM)) - .addIngredient(materialTag.get(Metals.MetalType.NICKEL)) - .addIngredient(materialTag.get(Metals.MetalType.NICKEL)) - .addIngredient(materialTag.get(Metals.MetalType.NICKEL)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.CHROMIUM)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case BENDALLOY: - ShapelessRecipeBuilder.shapelessRecipe(output, 9) - .addCriterion("has_item", hasItem(output)) - .addIngredient(materialTag.get(Metals.MetalType.CADMIUM)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.LEAD)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .addIngredient(materialTag.get(Metals.MetalType.TIN)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 9) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.CADMIUM)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; case ELECTRUM: - ShapelessRecipeBuilder.shapelessRecipe(output, 2) - .addCriterion("has_item", hasItem(output)) - .addIngredient(Ingredient.fromTag(Tags.Items.INGOTS_GOLD)) - .addIngredient(materialTag.get(Metals.MetalType.SILVER)) - .build(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + ShapelessRecipeBuilder.shapeless(output, 2) + .unlockedBy("has_item", has(output)) + .requires(Ingredient.of(Tags.Items.INGOTS_GOLD)) + .requires(materialTag.get(Metals.MetalType.SILVER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); break; } } @@ -185,19 +185,19 @@ protected static void addBasicArmorRecipes(Consumer consumer, I { if (head != null) { - ShapedRecipeBuilder.shapedRecipe(head).key('X', inputMaterial).patternLine("XXX").patternLine("X X").setGroup("helmets").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(head).define('X', inputMaterial).pattern("XXX").pattern("X X").group("helmets").unlockedBy("has_material", has(inputMaterial)).save(consumer); } if (chest != null) { - ShapedRecipeBuilder.shapedRecipe(chest).key('X', inputMaterial).patternLine("X X").patternLine("XXX").patternLine("XXX").setGroup("chestplates").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(chest).define('X', inputMaterial).pattern("X X").pattern("XXX").pattern("XXX").group("chestplates").unlockedBy("has_material", has(inputMaterial)).save(consumer); } if (legs != null) { - ShapedRecipeBuilder.shapedRecipe(legs).key('X', inputMaterial).patternLine("XXX").patternLine("X X").patternLine("X X").setGroup("leggings").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(legs).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern("X X").group("leggings").unlockedBy("has_material", has(inputMaterial)).save(consumer); } if (feet != null) { - ShapedRecipeBuilder.shapedRecipe(feet).key('X', inputMaterial).patternLine("X X").patternLine("X X").setGroup("boots").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(feet).define('X', inputMaterial).pattern("X X").pattern("X X").group("boots").unlockedBy("has_material", has(inputMaterial)).save(consumer); } } @@ -207,47 +207,47 @@ protected static void addBasicMetalmindRecipes(Consumer consume if (metalType.hasFeruchemicalEffect()) { - ShapedRecipeBuilder.shapedRecipe(metalType.getNecklaceItem()).key('X', inputMaterial).patternLine("XXX").patternLine("X X").patternLine(" X ").setGroup("necklace").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); - ShapedRecipeBuilder.shapedRecipe(metalType.getRingItem()).key('X', inputMaterial).patternLine(" X ").patternLine("X X").patternLine(" X ").setGroup("ring").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); - ShapedRecipeBuilder.shapedRecipe(metalType.getBraceletItem()).key('X', inputMaterial).patternLine(" X ").patternLine("X X").patternLine("X X").setGroup("bracelet").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(metalType.getNecklaceItem()).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern(" X ").group("necklace").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(metalType.getRingItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern(" X ").group("ring").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(metalType.getBraceletItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern("X X").group("bracelet").unlockedBy("has_material", has(inputMaterial)).save(consumer); } if (metalType.hasHemalurgicEffect()) { - ShapedRecipeBuilder.shapedRecipe(metalType.getSpikeItem()).key('X', inputMaterial).patternLine(" X ").patternLine(" X ").setGroup("spike").addCriterion("has_material", hasItem(inputMaterial)).build(consumer); + ShapedRecipeBuilder.shaped(metalType.getSpikeItem()).define('X', inputMaterial).pattern(" X ").pattern(" X ").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); } } private void decompressRecipe(Consumer consumer, IItemProvider output, ITag input, String name) { - ShapelessRecipeBuilder.shapelessRecipe(output, 9) - .addCriterion("has_item", hasItem(output)) - .addIngredient(input) - .build(consumer, ResourceLocationHelper.prefix("conversions/" + name)); + ShapelessRecipeBuilder.shapeless(output, 9) + .unlockedBy("has_item", has(output)) + .requires(input) + .save(consumer, ResourceLocationHelper.prefix("conversions/" + name)); } private ShapedRecipeBuilder compressRecipe(IItemProvider output, ITag input) { - return ShapedRecipeBuilder.shapedRecipe(output) - .key('I', input) - .patternLine("III") - .patternLine("III") - .patternLine("III") - .addCriterion("has_item", hasItem(input)); + return ShapedRecipeBuilder.shaped(output) + .define('I', input) + .pattern("III") + .pattern("III") + .pattern("III") + .unlockedBy("has_item", has(input)); } protected static void addOreSmeltingRecipes(Consumer consumer, IItemProvider ore, Item result, float experience, int time) { String name = result.getRegistryName().getPath(); String path = ore.asItem().getRegistryName().getPath(); - CookingRecipeBuilder.smeltingRecipe(Ingredient.fromItems(ore), result, experience, time).addCriterion("has_ore", hasItem(ore)).build(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); - CookingRecipeBuilder.blastingRecipe(Ingredient.fromItems(ore), result, experience, time / 2).addCriterion("has_ore", hasItem(ore)).build(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); + CookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); + CookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); } protected static void addCookingRecipes(Consumer consumer, IItemProvider inputItem, Item result, float experience, int time) { String name = result.getRegistryName().getPath(); - CookingRecipeBuilder.smeltingRecipe(Ingredient.fromItems(inputItem), result, experience, time).addCriterion("has_item", hasItem(inputItem)).build(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); - CookingRecipeBuilder.cookingRecipe(Ingredient.fromItems(inputItem), result, experience, time / 2, IRecipeSerializer.SMOKING).addCriterion("has_item", hasItem(inputItem)).build(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); - CookingRecipeBuilder.cookingRecipe(Ingredient.fromItems(inputItem), result, experience, time, IRecipeSerializer.CAMPFIRE_COOKING).addCriterion("has_item", hasItem(inputItem)).build(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); + CookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); + CookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, IRecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); + CookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, IRecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); } } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java index a35e534e7..131866618 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java @@ -42,7 +42,7 @@ public AdvancementGen(DataGenerator generatorIn) /** * Performs this provider's action. */ - public void act(DirectoryCache cache) throws IOException + public void run(DirectoryCache cache) throws IOException { Path path = this.generator.getOutputFolder(); Set set = Sets.newHashSet(); @@ -58,7 +58,7 @@ public void act(DirectoryCache cache) throws IOException try { - IDataProvider.save(GSON, cache, advancement.copy().serialize(), path1); + IDataProvider.save(GSON, cache, advancement.deconstruct().serializeToJson(), path1); } catch (IOException ioexception) { LOGGER.error("Couldn't save advancement {}", path1, ioexception); diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index 9163a6931..2574e3e77 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -33,8 +33,8 @@ public AllomancyAdvancements() public void accept(Consumer advancementConsumer) { String categoryName = "allomancy"; - Advancement root = Advancement.Builder.builder() - .withDisplay(ItemsRegistry.GUIDE.get(), + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), @@ -42,9 +42,9 @@ public void accept(Consumer advancementConsumer) false, false, false) - .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .register(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, categoryName + "/root"); for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) { @@ -53,9 +53,9 @@ public void accept(Consumer advancementConsumer) Metals.MetalType metalType = allomancyBase.getMetalType(); String metalName = metalType.name().toLowerCase(Locale.ROOT); - Advancement manifestationObtainedAdvancement = Advancement.Builder.builder() - .withParent(root) - .withDisplay( + Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + .parent(root) + .display( Items.WOODEN_PICKAXE, new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), @@ -64,10 +64,10 @@ public void accept(Consumer advancementConsumer) true, true, false) - .withCriterion( + .addCriterion( "get_stone", - InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) - .register(advancementConsumer, categoryName + "/" + metalName); + InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, categoryName + "/" + metalName); } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java index ea0b20ef2..cd1d0fb80 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java @@ -28,8 +28,8 @@ public void accept(Consumer advancementConsumer) { final String categoryName = "root"; - Advancement root = Advancement.Builder.builder() - .withDisplay(ItemsRegistry.GUIDE.get(), + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), @@ -37,13 +37,13 @@ public void accept(Consumer advancementConsumer) false, false, false) - .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .register(advancementConsumer, "core/" + categoryName); + .save(advancementConsumer, "core/" + categoryName); - Advancement advancement1 = Advancement.Builder.builder() - .withParent(root) - .withDisplay( + Advancement advancement1 = Advancement.Builder.advancement() + .parent(root) + .display( Items.WOODEN_PICKAXE, new TranslationTextComponent("advancements.cosmere.mine_stone.title"), new TranslationTextComponent("advancements.cosmere.mine_stone.description"), @@ -52,10 +52,10 @@ public void accept(Consumer advancementConsumer) true, true, false) - .withCriterion( + .addCriterion( "get_stone", - InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) - .register(advancementConsumer, "core/mine_stone"); + InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, "core/mine_stone"); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java index 051ec6e0e..c4bcf607c 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -34,8 +34,8 @@ public void accept(Consumer advancementConsumer) { final String categoryName = "feruchemy"; - Advancement root = Advancement.Builder.builder() - .withDisplay(ItemsRegistry.GUIDE.get(), + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), @@ -43,9 +43,9 @@ public void accept(Consumer advancementConsumer) false, false, false) - .withCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY_AND)) + .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .register(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, categoryName + "/root"); for (RegistryObject manifestation : ManifestationRegistry.FERUCHEMY_POWERS.values()) { @@ -54,9 +54,9 @@ public void accept(Consumer advancementConsumer) Metals.MetalType metalType = feruchemyBase.getMetalType(); String metalName = metalType.name().toLowerCase(Locale.ROOT); - Advancement manifestationObtainedAdvancement = Advancement.Builder.builder() - .withParent(root) - .withDisplay( + Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + .parent(root) + .display( Items.WOODEN_PICKAXE, new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), @@ -65,10 +65,10 @@ public void accept(Consumer advancementConsumer) true, true, false) - .withCriterion( + .addCriterion( "get_stone", - InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(ItemTags.STONE_TOOL_MATERIALS).build())) - .register(advancementConsumer, categoryName + "/" + metalName); + InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, categoryName + "/" + metalName); } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java index 455ac632b..6a64951a1 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java @@ -26,8 +26,8 @@ public HemalurgyAdvancements() public void accept(Consumer advancementConsumer) { final String categoryName = "hemalurgy"; - Advancement root = Advancement.Builder.builder() - .withDisplay(ItemsRegistry.GUIDE.get(), + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), @@ -35,8 +35,8 @@ public void accept(Consumer advancementConsumer) false, false, false) - .withCriterion("spike", InventoryChangeTrigger.Instance.forItems(ItemPredicate.Builder.create().tag(TagsRegistry.Items.METAL_SPIKE).build())) + .addCriterion("spike", InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(TagsRegistry.Items.METAL_SPIKE).build())) //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .register(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, categoryName + "/root"); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 7d5285126..18162504d 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -25,7 +25,7 @@ public BlockTagsGen(DataGenerator generatorIn, ExistingFileHelper existingFileHe } @Override - protected void registerTags() + protected void addTags() { add(TagsRegistry.Blocks.DRAGON_PROOF, BlocksRegistry.GEM_BLOCK.get()); add(TagsRegistry.Blocks.WITHER_PROOF, BlocksRegistry.GEM_BLOCK.get()); @@ -49,11 +49,11 @@ protected void registerTags() public void add(ITag.INamedTag branch, Block block) { - this.getOrCreateBuilder(branch).add(block); + this.tag(branch).add(block); } public void add(ITag.INamedTag branch, Block... block) { - this.getOrCreateBuilder(branch).add(block); + this.tag(branch).add(block); } } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 81fe96204..aa6bbdc74 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -28,7 +28,7 @@ public ItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvi } @Override - protected void registerTags() + protected void addTags() { for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -57,10 +57,10 @@ protected void registerTags() add(metalType.getMetalIngotTag(), ingotItem); //tell the ingots that our ingot tags are part of them - this.getOrCreateBuilder(Tags.Items.INGOTS).addTag(metalType.getMetalIngotTag()); + this.tag(Tags.Items.INGOTS).addTag(metalType.getMetalIngotTag()); //tell the nuggets that our nugget tags are part of them - this.getOrCreateBuilder(Tags.Items.NUGGETS).addTag(metalType.getMetalNuggetTag()); + this.tag(Tags.Items.NUGGETS).addTag(metalType.getMetalNuggetTag()); // tell the Nugget that our Nuggets are related Item item = metalType.getNuggetItem(); @@ -85,12 +85,12 @@ protected void registerTags() public void add(ITag.INamedTag branch, Item item) { - this.getOrCreateBuilder(branch).add(item); + this.tag(branch).add(item); } public void add(ITag.INamedTag branch, Item... item) { - this.getOrCreateBuilder(branch).add(item); + this.tag(branch).add(item); } diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 970492689..841f4d42c 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -72,7 +72,7 @@ else if (item instanceof Metalmind) } - add(item.getTranslationKey(), localisedString); + add(item.getDescriptionId(), localisedString); } } @@ -81,7 +81,7 @@ else if (item instanceof Metalmind) { if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) { - add(type.getTranslationKey(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); + add(type.getDescriptionId(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); } } @@ -153,9 +153,9 @@ else if (item instanceof Metalmind) add("cosmere.category.hemalurgy", "Hemalurgy"); //ItemGroups/Tabs - add("itemGroup." + CosmereItemGroups.ITEMS.getPath(), "Cosmere Items"); - add("itemGroup." + CosmereItemGroups.METALMINDS.getPath(), "Cosmere Metalminds"); - add("itemGroup." + CosmereItemGroups.BLOCKS.getPath(), "Cosmere Blocks"); + add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); + add("itemGroup." + CosmereItemGroups.METALMINDS.getRecipeFolderName(), "Cosmere Metalminds"); + add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); //Damage Sources @@ -164,7 +164,7 @@ else if (item instanceof Metalmind) //effects for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) { - add(effect.get().getName(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); + add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); } @@ -233,7 +233,7 @@ public String getTranslationKey(SoundEvent sound) String subtitleTranslationKey = ""; if (subtitleTranslationKey.isEmpty() || subtitleTranslationKey == null) { - subtitleTranslationKey = Util.makeTranslationKey("subtitle", sound.getRegistryName()); + subtitleTranslationKey = Util.makeDescriptionId("subtitle", sound.getRegistryName()); } return subtitleTranslationKey; } diff --git a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java index d3b9ec450..0051ef3cd 100644 --- a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java @@ -25,13 +25,13 @@ protected void addTables() { MetalOreBlock oreBlock = (MetalOreBlock) itemRegistryObject.get(); - this.registerLootTable(oreBlock, (ore) -> { - return droppingItemWithFortune(ore, oreBlock.getMetalType().getRawMetalItem()); + this.add(oreBlock, (ore) -> { + return createOreDrop(ore, oreBlock.getMetalType().getRawMetalItem()); }); } else { - this.registerDropSelfLootTable(itemRegistryObject.get()); + this.dropSelf(itemRegistryObject.get()); } } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java index 3b8547d29..227e94aaf 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -53,7 +53,7 @@ public PatchouliGen(DataGenerator generatorIn) /** * Performs this provider's action. */ - public void act(DirectoryCache cache) throws IOException + public void run(DirectoryCache cache) throws IOException { Path path = this.generator.getOutputFolder(); Set entryIDs = Sets.newHashSet(); diff --git a/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java index 66c5306b9..9567e17e6 100644 --- a/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java @@ -46,19 +46,19 @@ protected List doApply(List generatedLoot, LootContext con { final String hasCosmereFortuneBonus = "HasCosmereFortuneBonus"; - ItemStack tool = context.get(LootParameters.TOOL); + ItemStack tool = context.getParamOrNull(LootParameters.TOOL); if (tool != null && (!tool.hasTag() || tool.getTag() == null || !tool.getTag().getBoolean(hasCosmereFortuneBonus))) { - Entity entity = context.get(LootParameters.THIS_ENTITY); - BlockState blockState = context.get(LootParameters.BLOCK_STATE); + Entity entity = context.getParamOrNull(LootParameters.THIS_ENTITY); + BlockState blockState = context.getParamOrNull(LootParameters.BLOCK_STATE); if (blockState != null && entity instanceof LivingEntity) { LivingEntity player = (LivingEntity) entity; - EffectInstance storingLuckEffect = player.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); - EffectInstance tappingLuckEffect = player.getActivePotionEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); + EffectInstance storingLuckEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); + EffectInstance tappingLuckEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); //bonus for tapping amplifier. int totalFortuneBonus = 0; @@ -81,17 +81,17 @@ protected List doApply(List generatedLoot, LootContext con fakeTool.getOrCreateTag().putBoolean(hasCosmereFortuneBonus, true); Map enchantments = EnchantmentHelper.getEnchantments(fakeTool); - enchantments.put(Enchantments.FORTUNE, EnchantmentHelper.getEnchantmentLevel(Enchantments.FORTUNE, fakeTool) + totalFortuneBonus); + enchantments.put(Enchantments.BLOCK_FORTUNE, EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, fakeTool) + totalFortuneBonus); EnchantmentHelper.setEnchantments(enchantments, fakeTool); LootContext.Builder builder = new LootContext.Builder(context); builder.withParameter(LootParameters.TOOL, fakeTool); - LootContext newContext = builder.build(LootParameterSets.BLOCK); - LootTable lootTable = context.getWorld().getServer().getLootTableManager().getLootTableFromLocation(blockState.getBlock().getLootTable()); + LootContext newContext = builder.create(LootParameterSets.BLOCK); + LootTable lootTable = context.getLevel().getServer().getLootTables().get(blockState.getBlock().getLootTable()); - return lootTable.generate(newContext); + return lootTable.getRandomItems(newContext); } } } diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 65c504c69..713177cc7 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -25,7 +25,7 @@ public AllomancyBoostEffect(Metals.MetalType type, EffectType effectType) //todo powers to NOT increase? //skip duralumin and nicrosil? - addAttributesModifier( + addAttributeModifier( attributeRegistered.getValue().get(), "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", 0.334D, @@ -34,11 +34,11 @@ public AllomancyBoostEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity livingEntity, int amplifier) + public void applyEffectTick(LivingEntity livingEntity, int amplifier) { //todo boost metal drain balancing //4 times a second? - boolean isActiveTick = livingEntity.ticksExisted % 5 == 0; + boolean isActiveTick = livingEntity.tickCount % 5 == 0; if (isActiveTick) { diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java index 3c271e95f..f3d37889d 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java @@ -28,16 +28,16 @@ public Metals.MetalType getMetalType() @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (entityLivingBaseIn.world.isRemote) + if (entityLivingBaseIn.level.isClientSide) { //client side only? } } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { //assume we can apply the effect regardless boolean result = true; diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java index 932ca866c..e50e0d540 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java @@ -29,16 +29,16 @@ public Metals.MetalType getMetalType() @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (entityLivingBaseIn.world.isRemote) + if (entityLivingBaseIn.level.isClientSide) { //client side only? } } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { //assume we can apply the effect regardless return true; diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java index ae8a4d1fd..59a23ebb5 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java @@ -19,7 +19,7 @@ public BendalloyStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { //assume we can apply the effect regardless boolean result = true; @@ -34,11 +34,11 @@ public boolean isReady(int duration, int amplifier) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (!entityLivingBaseIn.world.isRemote) + if (!entityLivingBaseIn.level.isClientSide) { - ((PlayerEntity) entityLivingBaseIn).getFoodStats().addExhaustion(0.5F * (float) (amplifier + 1)); + ((PlayerEntity) entityLivingBaseIn).getFoodData().addExhaustion(0.5F * (float) (amplifier + 1)); //todo add tough as nails mod compatibility? } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java index 344546ab7..cb69d1e87 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java @@ -20,14 +20,14 @@ public BrassStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //ensure the user has fire resistence at least as strong as their store effect - if (entityLivingBaseIn.world.isRemote || entityLivingBaseIn.ticksExisted % 20 != 0) + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) { return; } - entityLivingBaseIn.addPotionEffect(EffectsHelper.getNewEffect(Effects.FIRE_RESISTANCE, amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.FIRE_RESISTANCE, amplifier)); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java index ce3d34df0..50d58fd8d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java @@ -19,21 +19,21 @@ public BronzeStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //sleep - if (!(entityLivingBaseIn instanceof PlayerEntity) || entityLivingBaseIn.ticksExisted % (200 / (amplifier + 1)) != 0) + if (!(entityLivingBaseIn instanceof PlayerEntity) || entityLivingBaseIn.tickCount % (200 / (amplifier + 1)) != 0) { return; } PlayerEntity player = (PlayerEntity) entityLivingBaseIn; - player.trySleep(player.getPosition()).ifLeft((result) -> + player.startSleepInBed(player.blockPosition()).ifLeft((result) -> { if (result != null && result.getMessage() != null) { - player.sendStatusMessage(result.getMessage(), true); + player.displayClientMessage(result.getMessage(), true); } }); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java index 453382f8c..be486f3ed 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java @@ -20,18 +20,18 @@ public CadmiumStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (entityLivingBaseIn.world.isRemote) + if (entityLivingBaseIn.level.isClientSide) { return; } - entityLivingBaseIn.setAir(MathHelper.clamp(entityLivingBaseIn.getAir() - 4 - (amplifier), -20, entityLivingBaseIn.getMaxAir())); + entityLivingBaseIn.setAirSupply(MathHelper.clamp(entityLivingBaseIn.getAirSupply() - 4 - (amplifier), -20, entityLivingBaseIn.getMaxAirSupply())); - if (entityLivingBaseIn.getAir() < -10 && entityLivingBaseIn.ticksExisted % 50 == 0) + if (entityLivingBaseIn.getAirSupply() < -10 && entityLivingBaseIn.tickCount % 50 == 0) { - entityLivingBaseIn.attackEntityFrom(DamageSource.DROWN, 2.0F); + entityLivingBaseIn.hurt(DamageSource.DROWN, 2.0F); } } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java index 7417afb2a..31709433d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java @@ -22,7 +22,7 @@ public ChromiumStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.LUCK, "97c8b98f-fb33-4218-bd32-1ace62d75019", -1.0D, @@ -36,15 +36,15 @@ public void onLootingLevelEvent(LootingLevelEvent event) if (event.getDamageSource() == null) return; - boolean isRemote = event.getEntityLiving().world.isRemote; - boolean entityNotLiving = !(event.getDamageSource().getTrueSource() instanceof LivingEntity); + boolean isRemote = event.getEntityLiving().level.isClientSide; + boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); if (isRemote || entityNotLiving) { return; } - EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getTrueSource()).getActivePotionEffect(this); + EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); if (effectInstance != null && effectInstance.getDuration() > 0) { event.setLootingLevel(event.getLootingLevel() - effectInstance.getAmplifier()); @@ -53,8 +53,8 @@ public void onLootingLevelEvent(LootingLevelEvent event) @Override - public void applyAttributesModifiersToEntity(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) + public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) { - super.applyAttributesModifiersToEntity(entityLivingBaseIn, attributeMapIn, amplifier); + super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java index df0dc297b..4db3c8d5d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java @@ -18,7 +18,7 @@ public CopperStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index 922ba3490..678237f51 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -25,14 +25,14 @@ public DuraluminStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { return true; } public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) { - EffectInstance effectInstance = event.getEntityLiving().getActivePotionEffect(this); + EffectInstance effectInstance = event.getEntityLiving().getEffect(this); if (effectInstance != null && effectInstance.getDuration() > 0) { //at max strength and wearing no armor, you could stand a block or two away from a creeper and it wont see you. @@ -50,7 +50,7 @@ public void onRenderNameplateEvent(RenderNameplateEvent event) LivingEntity livingEntity = (LivingEntity) event.getEntity(); - EffectInstance effectInstance = livingEntity.getActivePotionEffect(this); + EffectInstance effectInstance = livingEntity.getEffect(this); if (effectInstance != null && effectInstance.getDuration() > 0) { if (effectInstance.getAmplifier() > 2) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java index d8038a3cf..aab79829e 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java @@ -17,7 +17,7 @@ public class GoldStoreEffect extends FeruchemyEffectBase public GoldStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.MAX_HEALTH, "2ee9153f-372f-4bd2-b21a-ccf08fecb8fa", -4.0D, diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java index 3853dcf06..8e49298c3 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java @@ -19,7 +19,7 @@ public class IronStoreEffect extends FeruchemyEffectBase public IronStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.KNOCKBACK_RESISTANCE, "a8fade1f-573d-405d-9885-39da3906d5f6", -0.1D, @@ -27,15 +27,15 @@ public IronStoreEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.world.isRemote || entityLivingBaseIn.ticksExisted % 20 != 0) + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) { return; } - entityLivingBaseIn.addPotionEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, amplifier)); - entityLivingBaseIn.addPotionEffect(EffectsHelper.getNewEffect(Effects.JUMP_BOOST, amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.JUMP, amplifier)); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java index f816ac8d1..3a8c0f35c 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java @@ -16,12 +16,12 @@ public class PewterStoreEffect extends FeruchemyEffectBase public PewterStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.ATTACK_DAMAGE, "e8f5c2b2-f724-4514-82b8-9d10be304c42", -1.0D, AttributeModifier.Operation.ADDITION); - addAttributesModifier( + addAttributeModifier( Attributes.ATTACK_KNOCKBACK, "cb83254e-f9c4-4d67-9976-f2fdf69061ce", -1.0D, diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java index ef9bc2fda..fb4d95988 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java @@ -17,13 +17,13 @@ public SteelStoreEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - this.addAttributesModifier( + this.addAttributeModifier( Attributes.ATTACK_SPEED, "bc7ff64b-f90c-49c0-81e1-6a6df3a3e612", (double)-0.1F, AttributeModifier.Operation.MULTIPLY_TOTAL); - this.addAttributesModifier( + this.addAttributeModifier( Attributes.MOVEMENT_SPEED, "52583b16-7124-4443-b4e8-1497d6c793f2", (double)-0.15F, diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java index 9e5374cdc..979823bea 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java @@ -20,7 +20,7 @@ public BendalloyTapEffect(Metals.MetalType type, EffectType effectType) @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { //assume we can apply the effect regardless boolean result = true; @@ -35,11 +35,11 @@ public boolean isReady(int duration, int amplifier) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (!entityLivingBaseIn.world.isRemote) + if (!entityLivingBaseIn.level.isClientSide) { - ((PlayerEntity) entityLivingBaseIn).getFoodStats().addStats(amplifier + 1, 0.0F); + ((PlayerEntity) entityLivingBaseIn).getFoodData().eat(amplifier + 1, 0.0F); //todo add tough as nails mod compatibility? } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java index d6e7e129b..1bc528a5f 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java @@ -30,19 +30,19 @@ public BrassTapEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (!entityLivingBaseIn.world.isRemote && amplifier > 10 && !entityLivingBaseIn.isInWater()) + if (!entityLivingBaseIn.level.isClientSide && amplifier > 10 && !entityLivingBaseIn.isInWater()) { //set user on fire - entityLivingBaseIn.setFire(3); + entityLivingBaseIn.setSecondsOnFire(3); } } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { //assume we can apply the effect regardless boolean result = true; @@ -63,14 +63,14 @@ public boolean isReady(int duration, int amplifier) @SubscribeEvent public static void onLivingDamageEvent(LivingDamageEvent event) { - if (event.getSource().getTrueSource() instanceof LivingEntity) + if (event.getSource().getEntity() instanceof LivingEntity) { - LivingEntity livingEntity = (LivingEntity) event.getSource().getTrueSource(); - EffectInstance effectInstance = livingEntity.getActivePotionEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.BRASS).get()); + LivingEntity livingEntity = (LivingEntity) event.getSource().getEntity(); + EffectInstance effectInstance = livingEntity.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.BRASS).get()); if (effectInstance != null && effectInstance.getDuration() > 0 && effectInstance.getAmplifier() > 3) { - event.getEntityLiving().setFire(effectInstance.getAmplifier()); + event.getEntityLiving().setSecondsOnFire(effectInstance.getAmplifier()); } } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java index f8f1ea35e..14fe2152d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java @@ -19,14 +19,14 @@ public CadmiumTapEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (entityLivingBaseIn.world.isRemote) + if (entityLivingBaseIn.level.isClientSide) { return; } - entityLivingBaseIn.setAir(MathHelper.clamp(entityLivingBaseIn.getAir() + 3 + (amplifier), entityLivingBaseIn.getAir(), entityLivingBaseIn.getMaxAir())); + entityLivingBaseIn.setAirSupply(MathHelper.clamp(entityLivingBaseIn.getAirSupply() + 3 + (amplifier), entityLivingBaseIn.getAirSupply(), entityLivingBaseIn.getMaxAirSupply())); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java index 2470fe4ed..ab8439e64 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java @@ -22,7 +22,7 @@ public ChromiumTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.LUCK, "7faaa8a8-fee1-422c-8f85-6794042e8f09", 1.0D, @@ -33,15 +33,15 @@ public ChromiumTapEffect(Metals.MetalType type, EffectType effectType) public void onLootingLevelEvent(LootingLevelEvent event) { - boolean isRemote = event.getEntityLiving().world.isRemote; - boolean entityNotLiving = !(event.getDamageSource().getTrueSource() instanceof LivingEntity); + boolean isRemote = event.getEntityLiving().level.isClientSide; + boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); if (isRemote || entityNotLiving) { return; } - EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getTrueSource()).getActivePotionEffect(this); + EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); if (effectInstance != null && effectInstance.getDuration() > 0) { event.setLootingLevel(event.getLootingLevel() + effectInstance.getAmplifier()); @@ -51,8 +51,8 @@ public void onLootingLevelEvent(LootingLevelEvent event) @Override - public void applyAttributesModifiersToEntity(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) + public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) { - super.applyAttributesModifiersToEntity(entityLivingBaseIn, attributeMapIn, amplifier); + super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index b0458d24f..876794c80 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -23,7 +23,7 @@ public GoldTapEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) { @@ -32,7 +32,7 @@ public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { int k = 40 >> amplifier; if (k > 0) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java index 982fecfbc..3d48d4d48 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java @@ -19,7 +19,7 @@ public class IronTapEffect extends FeruchemyEffectBase public IronTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.KNOCKBACK_RESISTANCE, "bb29d10a-c58f-4f7e-956b-133b2685831f", 0.1D, @@ -27,15 +27,15 @@ public IronTapEffect(Metals.MetalType type, EffectType effectType) } @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.world.isRemote || entityLivingBaseIn.ticksExisted % 20 != 0) + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) { return; } - entityLivingBaseIn.addPotionEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, -amplifier)); - entityLivingBaseIn.addPotionEffect(EffectsHelper.getNewEffect(Effects.JUMP_BOOST, -amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, -amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.JUMP, -amplifier)); } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java index 8341fe1b1..0940978e2 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java @@ -17,12 +17,12 @@ public PewterTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - addAttributesModifier( + addAttributeModifier( Attributes.ATTACK_DAMAGE, "00bebe52-fe9e-4966-989c-28de0cd2eb1f", 1.0D, AttributeModifier.Operation.ADDITION); - addAttributesModifier( + addAttributeModifier( Attributes.ATTACK_KNOCKBACK, "74b5b82b-58e0-4a34-9cc2-fd4b92f0b11b", 1.0D, diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java index 95e8d653a..469c55df7 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java @@ -23,13 +23,13 @@ public SteelTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); - this.addAttributesModifier( + this.addAttributeModifier( Attributes.ATTACK_SPEED, "0191c754-d7a2-4c78-9e14-896ecc7ed0e2", (double) 0.1F, AttributeModifier.Operation.MULTIPLY_TOTAL); - this.addAttributesModifier( + this.addAttributeModifier( Attributes.MOVEMENT_SPEED, "ede32ebb-1e66-4d26-b414-c14467885e7a", (double) 0.2F, @@ -46,7 +46,7 @@ public void onFOVUpdate(FOVUpdateEvent event) } @Override - public boolean isReady(int duration, int amplifier) + public boolean isDurationEffectTick(int duration, int amplifier) { return amplifier > 2; } @@ -54,15 +54,15 @@ public boolean isReady(int duration, int amplifier) final Vector3d vec = new Vector3d(1.02d, 0d, 1.02d); @Override - public void performEffect(LivingEntity entityLivingBaseIn, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //code for checking block under player //https://stackoverflow.com/a/62026168 - if (entityLivingBaseIn.world.getBlockState(entityLivingBaseIn.getPosition().down()).getMaterial() == Material.WATER) + if (entityLivingBaseIn.level.getBlockState(entityLivingBaseIn.blockPosition().below()).getMaterial() == Material.WATER) { - Vector3d motion = entityLivingBaseIn.getMotion().mul(vec); - entityLivingBaseIn.setMotion(motion); + Vector3d motion = entityLivingBaseIn.getDeltaMovement().multiply(vec); + entityLivingBaseIn.setDeltaMovement(motion); } } } diff --git a/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java b/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java index f3d8a342c..dcd002bf2 100644 --- a/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java +++ b/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java @@ -19,7 +19,7 @@ protected ASprenEntity(EntityType type, World worldIn) super(type, worldIn); } - public CreatureAttribute getCreatureAttribute() + public CreatureAttribute getMobType() { return AttributesRegistry.SPREN; } @@ -29,35 +29,35 @@ public class WanderGoal extends Goal { WanderGoal() { - this.setMutexFlags(EnumSet.of(Goal.Flag.MOVE)); + this.setFlags(EnumSet.of(Goal.Flag.MOVE)); } /** * Returns whether execution should begin. You can also read and cache any state necessary for execution in this * method as well. */ - public boolean shouldExecute() + public boolean canUse() { - return ASprenEntity.this.navigator.noPath() && ASprenEntity.this.rand.nextInt(10) == 0; + return ASprenEntity.this.navigation.isDone() && ASprenEntity.this.random.nextInt(10) == 0; } /** * Returns whether an in-progress EntityAIBase should continue executing */ - public boolean shouldContinueExecuting() + public boolean canContinueToUse() { - return ASprenEntity.this.navigator.hasPath(); + return ASprenEntity.this.navigation.isInProgress(); } /** * Execute a one shot task or start executing a continuous task */ - public void startExecuting() + public void start() { Vector3d vector3d = this.getRandomLocation(); if (vector3d != null) { - ASprenEntity.this.navigator.setPath(ASprenEntity.this.navigator.getPathToPos(new BlockPos(vector3d), 1), 1.0D); + ASprenEntity.this.navigation.moveTo(ASprenEntity.this.navigation.createPath(new BlockPos(vector3d), 1), 1.0D); } } @@ -65,10 +65,10 @@ public void startExecuting() @Nullable private Vector3d getRandomLocation() { - Vector3d vector3d = ASprenEntity.this.getLook(0.0F); + Vector3d vector3d = ASprenEntity.this.getViewVector(0.0F); - Vector3d vector3d2 = RandomPositionGenerator.findAirTarget(ASprenEntity.this, 8, 7, vector3d, ((float) Math.PI / 2F), 2, 1); - return vector3d2 != null ? vector3d2 : RandomPositionGenerator.findGroundTarget(ASprenEntity.this, 8, 4, -2, vector3d, (double) ((float) Math.PI / 2F)); + Vector3d vector3d2 = RandomPositionGenerator.getAboveLandPos(ASprenEntity.this, 8, 7, vector3d, ((float) Math.PI / 2F), 2, 1); + return vector3d2 != null ? vector3d2 : RandomPositionGenerator.getAirPos(ASprenEntity.this, 8, 4, -2, vector3d, (double) ((float) Math.PI / 2F)); } } @@ -87,7 +87,7 @@ public PassiveGoal() * Returns whether execution should begin. You can also read and cache any state necessary for execution in this * method as well. */ - public boolean shouldExecute() + public boolean canUse() { return this.canSprenStart(); } @@ -95,7 +95,7 @@ public boolean shouldExecute() /** * Returns whether an in-progress EntityAIBase should continue executing */ - public boolean shouldContinueExecuting() + public boolean canContinueToUse() { return this.canSprenContinue(); } diff --git a/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java b/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java index 172b484b1..e11c210b7 100644 --- a/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java +++ b/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java @@ -28,7 +28,7 @@ public class SprenFlameEntity extends ASprenEntity { - private static final DataParameter DATA_FLAGS_ID = EntityDataManager.createKey(SprenFlameEntity.class, DataSerializers.BYTE); + private static final DataParameter DATA_FLAGS_ID = EntityDataManager.defineId(SprenFlameEntity.class, DataSerializers.BYTE); private float rollAmount; private float rollAmountO; @@ -48,37 +48,37 @@ public class SprenFlameEntity extends ASprenEntity public SprenFlameEntity(EntityType type, World worldIn) { super(type, worldIn); - this.moveController = new FlyingMovementController(this, 20, true); - this.lookController = new LookController(this); - this.setPathPriority(PathNodeType.WATER, -1.0F); - this.setPathPriority(PathNodeType.WATER_BORDER, 16.0F); - this.setPathPriority(PathNodeType.COCOA, -1.0F); - this.setPathPriority(PathNodeType.FENCE, -1.0F); + this.moveControl = new FlyingMovementController(this, 20, true); + this.lookControl = new LookController(this); + this.setPathfindingMalus(PathNodeType.WATER, -1.0F); + this.setPathfindingMalus(PathNodeType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathNodeType.COCOA, -1.0F); + this.setPathfindingMalus(PathNodeType.FENCE, -1.0F); } @Override - public boolean isImmuneToFire() + public boolean fireImmune() { return true; } - protected void registerData() + protected void defineSynchedData() { - super.registerData(); - this.dataManager.register(DATA_FLAGS_ID, (byte) 0); + super.defineSynchedData(); + this.entityData.define(DATA_FLAGS_ID, (byte) 0); } public static AttributeModifierMap.MutableAttribute prepareAttributes() { - return MobEntity.func_233666_p_() - .createMutableAttribute(Attributes.MAX_HEALTH, 10.0D) - .createMutableAttribute(Attributes.FLYING_SPEED, 0.6F) - .createMutableAttribute(Attributes.MOVEMENT_SPEED, 0.3F) - .createMutableAttribute(Attributes.ATTACK_DAMAGE, 2.0D) - .createMutableAttribute(Attributes.FOLLOW_RANGE, 48.0D); + return MobEntity.createMobAttributes() + .add(Attributes.MAX_HEALTH, 10.0D) + .add(Attributes.FLYING_SPEED, 0.6F) + .add(Attributes.MOVEMENT_SPEED, 0.3F) + .add(Attributes.ATTACK_DAMAGE, 2.0D) + .add(Attributes.FOLLOW_RANGE, 48.0D); } - public float getBlockPathWeight(BlockPos pos, IWorldReader worldIn) + public float getWalkTargetValue(BlockPos pos, IWorldReader worldIn) { return worldIn.getBlockState(pos).isAir() ? 10.0F : 0.0F; } @@ -87,7 +87,7 @@ protected void registerGoals() { this.goalSelector.addGoal(1, new SprenFlameEntity.EnterFireGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.fromItems(Items.TORCH, Items.SOUL_TORCH), false)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.TORCH, Items.SOUL_TORCH), false)); this.goalSelector.addGoal(5, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new SprenFlameEntity.UpdateFireGoal()); @@ -100,9 +100,9 @@ protected void registerGoals() this.goalSelector.addGoal(9, new SwimGoal(this)); } - public void writeAdditional(CompoundNBT compound) + public void addAdditionalSaveData(CompoundNBT compound) { - super.writeAdditional(compound); + super.addAdditionalSaveData(compound); if (this.hasFire()) { @@ -115,7 +115,7 @@ public void writeAdditional(CompoundNBT compound) /** * (abstract) Protected helper method to read subclass entity data from NBT. */ - public void readAdditional(CompoundNBT compound) + public void readAdditionalSaveData(CompoundNBT compound) { this.firePos = null; if (compound.contains("FirePos")) @@ -133,16 +133,16 @@ public void readAdditional(CompoundNBT compound) public void tick() { super.tick(); - if (this.rand.nextFloat() < 0.05F) + if (this.random.nextFloat() < 0.05F) { - for (int i = 0; i < this.rand.nextInt(2) + 1; ++i) + for (int i = 0; i < this.random.nextInt(2) + 1; ++i) { - this.addParticle(this.world, - this.getPosX() - (double) 0.3F, - this.getPosX() + (double) 0.3F, - this.getPosZ() - (double) 0.3F, - this.getPosZ() + (double) 0.3F, - this.getPosYHeight(0.5D)); + this.addParticle(this.level, + this.getX() - (double) 0.3F, + this.getX() + (double) 0.3F, + this.getZ() - (double) 0.3F, + this.getZ() + (double) 0.3F, + this.getY(0.5D)); } } @@ -151,14 +151,14 @@ public void tick() private void addParticle(World worldIn, double p_226397_2_, double p_226397_4_, double p_226397_6_, double p_226397_8_, double posY) { - worldIn.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, MathHelper.lerp(worldIn.rand.nextDouble(), p_226397_2_, p_226397_4_), posY, MathHelper.lerp(worldIn.rand.nextDouble(), p_226397_6_, p_226397_8_), 0.0D, 0.0D, 0.0D); + worldIn.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, MathHelper.lerp(worldIn.random.nextDouble(), p_226397_2_, p_226397_4_), posY, MathHelper.lerp(worldIn.random.nextDouble(), p_226397_6_, p_226397_8_), 0.0D, 0.0D, 0.0D); } private void startMovingTo(BlockPos pos) { - Vector3d vector3d = Vector3d.copyCenteredHorizontally(pos); + Vector3d vector3d = Vector3d.atBottomCenterOf(pos); int i = 0; - BlockPos blockpos = this.getPosition(); + BlockPos blockpos = this.blockPosition(); int j = (int) vector3d.y - blockpos.getY(); if (j > 2) { @@ -171,25 +171,25 @@ else if (j < -2) int k = 6; int l = 8; - int i1 = blockpos.manhattanDistance(pos); + int i1 = blockpos.distManhattan(pos); if (i1 < 15) { k = i1 / 2; l = i1 / 2; } - Vector3d vector3d1 = RandomPositionGenerator.func_226344_b_(this, k, l, i, vector3d, (float) Math.PI / 10F); + Vector3d vector3d1 = RandomPositionGenerator.getAirPosTowards(this, k, l, i, vector3d, (float) Math.PI / 10F); if (vector3d1 != null) { - this.navigator.setSearchDepthMultiplier(0.5F); - this.navigator.tryMoveToXYZ(vector3d1.x, vector3d1.y, vector3d1.z, 1.0D); + this.navigation.setMaxVisitedNodesMultiplier(0.5F); + this.navigation.moveTo(vector3d1.x, vector3d1.y, vector3d1.z, 1.0D); } } private boolean canEnterFire() { - return (this.stayOutOfFireCountdown <= 0) || (this.world.isRaining() || this.world.isNightTime()); + return (this.stayOutOfFireCountdown <= 0) || (this.level.isRaining() || this.level.isNight()); } @OnlyIn(Dist.CLIENT) @@ -204,9 +204,9 @@ private void updateBodyPitch() this.rollAmount = Math.max(0.0F, this.rollAmount - 0.24F); } - protected void updateAITasks() + protected void customServerAiStep() { - if (this.isInWaterOrBubbleColumn()) + if (this.isInWaterOrBubble()) { ++this.underWaterTicks; } @@ -217,7 +217,7 @@ protected void updateAITasks() if (this.underWaterTicks > 20) { - this.attackEntityFrom(DamageSource.DROWN, 10.0F); + this.hurt(DamageSource.DROWN, 10.0F); } } @@ -237,10 +237,10 @@ public BlockPos getFirePos() * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons * use this to react to sunlight and start to burn. */ - public void livingTick() + public void aiStep() { - super.livingTick(); - if (!this.world.isRemote) + super.aiStep(); + if (!this.level.isClientSide) { if (this.stayOutOfFireCountdown > 0) { @@ -257,7 +257,7 @@ public void livingTick() --this.remainingCooldownBeforeLocatingNewFlower; } - if (this.ticksExisted % 20 == 0 && !this.isFireValid()) + if (this.tickCount % 20 == 0 && !this.isFireValid()) { this.firePos = null; } @@ -273,7 +273,7 @@ private boolean isFireValid() } else { - return this.world.getBlockState(this.firePos).getBlock() == Blocks.FIRE; + return this.level.getBlockState(this.firePos).getBlock() == Blocks.FIRE; } } @@ -285,13 +285,13 @@ private boolean isTooFar(BlockPos pos) /** * Returns new PathNavigateGround instance */ - protected PathNavigator createNavigator(World worldIn) + protected PathNavigator createNavigation(World worldIn) { FlyingPathNavigator flyingpathnavigator = new FlyingPathNavigator(this, worldIn) { - public boolean canEntityStandOnPos(BlockPos pos) + public boolean isStableDestination(BlockPos pos) { - return !this.world.getBlockState(pos.down()).isAir(); + return !this.level.getBlockState(pos.below()).isAir(); } public void tick() @@ -300,8 +300,8 @@ public void tick() } }; flyingpathnavigator.setCanOpenDoors(false); - flyingpathnavigator.setCanSwim(false); - flyingpathnavigator.setCanEnterDoors(true); + flyingpathnavigator.setCanFloat(false); + flyingpathnavigator.setCanPassDoors(true); return flyingpathnavigator; } @@ -309,9 +309,9 @@ public void tick() * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on * the animal type) */ - public boolean isBreedingItem(ItemStack stack) + public boolean isFood(ItemStack stack) { - return stack.getItem().isIn(ItemTags.FLOWERS); + return stack.getItem().is(ItemTags.FLOWERS); } protected void playStepSound(BlockPos pos, BlockState blockIn) @@ -325,12 +325,12 @@ protected SoundEvent getAmbientSound() protected SoundEvent getHurtSound(DamageSource damageSourceIn) { - return SoundEvents.ENTITY_BEE_HURT; + return SoundEvents.BEE_HURT; } protected SoundEvent getDeathSound() { - return SoundEvents.ENTITY_BEE_DEATH; + return SoundEvents.BEE_DEATH; } /** @@ -341,22 +341,22 @@ protected float getSoundVolume() return 0.4F; } - public SprenFlameEntity createChild(ServerWorld world, AgeableEntity mate) + public SprenFlameEntity getBreedOffspring(ServerWorld world, AgeableEntity mate) { return EntityRegistry.SPREN_FIRE.get().create(world); } protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) { - return this.isChild() ? sizeIn.height * 0.5F : sizeIn.height * 0.5F; + return this.isBaby() ? sizeIn.height * 0.5F : sizeIn.height * 0.5F; } - public boolean onLivingFall(float distance, float damageMultiplier) + public boolean causeFallDamage(float distance, float damageMultiplier) { return false; } - protected void updateFallState(double y, boolean onGroundIn, BlockState state, BlockPos pos) + protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) { } @@ -368,7 +368,7 @@ protected boolean makeFlySound() /** * Called when the entity is attacked. */ - public boolean attackEntityFrom(DamageSource source, float amount) + public boolean hurt(DamageSource source, float amount) { if (this.isInvulnerableTo(source)) { @@ -376,24 +376,24 @@ public boolean attackEntityFrom(DamageSource source, float amount) } else { - return super.attackEntityFrom(source, amount); + return super.hurt(source, amount); } } - public CreatureAttribute getCreatureAttribute() + public CreatureAttribute getMobType() { return AttributesRegistry.SPREN; } - protected void handleFluidJump(ITag fluidTag) + protected void jumpInLiquid(ITag fluidTag) { - this.setMotion(this.getMotion().add(0.0D, 0.01D, 0.0D)); + this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.01D, 0.0D)); } @OnlyIn(Dist.CLIENT) - public Vector3d getLeashStartPosition() + public Vector3d getLeashOffset() { - return new Vector3d(0.0D, 0.5F * this.getEyeHeight(), this.getWidth() * 0.2F); + return new Vector3d(0.0D, 0.5F * this.getEyeHeight(), this.getBbWidth() * 0.2F); } private boolean isWithinDistance(BlockPos pos, int distance) @@ -401,8 +401,8 @@ private boolean isWithinDistance(BlockPos pos, int distance) try { SprenFlameEntity sprenFlameEntity = this; - BlockPos position = sprenFlameEntity.getPosition(); - return pos != null && pos.withinDistance(position, distance); + BlockPos position = sprenFlameEntity.blockPosition(); + return pos != null && pos.closerThan(position, distance); } catch (Exception e) @@ -419,7 +419,7 @@ protected EnterFireGoal() public boolean canSprenStart() { - if (SprenFlameEntity.this.hasFire() && SprenFlameEntity.this.canEnterFire() && SprenFlameEntity.this.firePos.withinDistance(SprenFlameEntity.this.getPositionVec(), 2.0D)) + if (SprenFlameEntity.this.hasFire() && SprenFlameEntity.this.canEnterFire() && SprenFlameEntity.this.firePos.closerThan(SprenFlameEntity.this.position(), 2.0D)) { return true; } @@ -435,7 +435,7 @@ public boolean canSprenContinue() /** * Execute a one shot task or start executing a continuous task */ - public void startExecuting() + public void start() { if (isFireValid()) { @@ -446,20 +446,20 @@ public void startExecuting() public class MoveToFireGoal extends SprenFlameEntity.PassiveGoal { - private int ticks = SprenFlameEntity.this.world.rand.nextInt(10); + private int ticks = SprenFlameEntity.this.level.random.nextInt(10); private List possibleFires = Lists.newArrayList(); @Nullable private Path path = null; - private int field_234183_f_; + private int ticksStuck; MoveToFireGoal() { - this.setMutexFlags(EnumSet.of(Goal.Flag.MOVE)); + this.setFlags(EnumSet.of(Goal.Flag.MOVE)); } public boolean canSprenStart() { - return SprenFlameEntity.this.firePos != null && !SprenFlameEntity.this.detachHome() && SprenFlameEntity.this.canEnterFire() && !this.isCloseEnough(SprenFlameEntity.this.firePos); + return SprenFlameEntity.this.firePos != null && !SprenFlameEntity.this.hasRestriction() && SprenFlameEntity.this.canEnterFire() && !this.isCloseEnough(SprenFlameEntity.this.firePos); } public boolean canSprenContinue() @@ -470,22 +470,22 @@ public boolean canSprenContinue() /** * Execute a one shot task or start executing a continuous task */ - public void startExecuting() + public void start() { this.ticks = 0; - this.field_234183_f_ = 0; - super.startExecuting(); + this.ticksStuck = 0; + super.start(); } /** * Reset the task's internal state. Called when this task is interrupted by another one */ - public void resetTask() + public void stop() { this.ticks = 0; - this.field_234183_f_ = 0; - SprenFlameEntity.this.navigator.clearPath(); - SprenFlameEntity.this.navigator.resetSearchDepthMultiplier(); + this.ticksStuck = 0; + SprenFlameEntity.this.navigation.stop(); + SprenFlameEntity.this.navigation.resetMaxVisitedNodesMultiplier(); } /** @@ -500,7 +500,7 @@ public void tick() { this.makeChosenFirePossibleFire(); } - else if (!SprenFlameEntity.this.navigator.hasPath()) + else if (!SprenFlameEntity.this.navigation.isInProgress()) { if (!SprenFlameEntity.this.isWithinDistance(SprenFlameEntity.this.firePos, 16)) { @@ -520,18 +520,18 @@ else if (!SprenFlameEntity.this.navigator.hasPath()) { this.makeChosenFirePossibleFire(); } - else if (this.path != null && SprenFlameEntity.this.navigator.getPath().isSamePath(this.path)) + else if (this.path != null && SprenFlameEntity.this.navigation.getPath().sameAs(this.path)) { - ++this.field_234183_f_; - if (this.field_234183_f_ > 60) + ++this.ticksStuck; + if (this.ticksStuck > 60) { this.reset(); - this.field_234183_f_ = 0; + this.ticksStuck = 0; } } else { - this.path = SprenFlameEntity.this.navigator.getPath(); + this.path = SprenFlameEntity.this.navigation.getPath(); } } @@ -541,9 +541,9 @@ else if (this.path != null && SprenFlameEntity.this.navigator.getPath().isSamePa private boolean startMovingToFar(BlockPos pos) { - SprenFlameEntity.this.navigator.setSearchDepthMultiplier(10.0F); - SprenFlameEntity.this.navigator.tryMoveToXYZ(pos.getX(), pos.getY(), pos.getZ(), 1.0D); - return SprenFlameEntity.this.navigator.getPath() != null && SprenFlameEntity.this.navigator.getPath().reachesTarget(); + SprenFlameEntity.this.navigation.setMaxVisitedNodesMultiplier(10.0F); + SprenFlameEntity.this.navigation.moveTo(pos.getX(), pos.getY(), pos.getZ(), 1.0D); + return SprenFlameEntity.this.navigation.getPath() != null && SprenFlameEntity.this.navigation.getPath().canReach(); } private boolean isPossibleFire(BlockPos pos) @@ -591,8 +591,8 @@ private boolean isCloseEnough(BlockPos pos) } else { - Path path = SprenFlameEntity.this.navigator.getPath(); - return path != null && path.getTarget().equals(pos) && path.reachesTarget() && path.isFinished(); + Path path = SprenFlameEntity.this.navigation.getPath(); + return path != null && path.getTarget().equals(pos) && path.canReach() && path.isDone(); } } } @@ -616,7 +616,7 @@ public boolean canSprenContinue() /** * Execute a one shot task or start executing a continuous task */ - public void startExecuting() + public void start() { SprenFlameEntity.this.remainingCooldownBeforeLocatingNewFire = 200; List list = this.getNearbyFreeFires(); @@ -639,10 +639,10 @@ public void startExecuting() private List getNearbyFreeFires() { List found = new ArrayList<>(); - BlockPos.getProximitySortedBoxPositions(SprenFlameEntity.this.getPosition(), 15, 15, 15) + BlockPos.withinManhattanStream(SprenFlameEntity.this.blockPosition(), 15, 15, 15) .filter(blockPos -> { - Block block = SprenFlameEntity.this.world.getBlockState(blockPos).getBlock(); + Block block = SprenFlameEntity.this.level.getBlockState(blockPos).getBlock(); if (block instanceof FireBlock) { diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index 4e98b1c66..f3600afc6 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -30,7 +30,7 @@ public static void init() IItemColor blockItemColorHandler = (itemStack, tintIndex) -> tintIndex == 0 - ? Minecraft.getInstance().getBlockColors().getColor(((BlockItem) itemStack.getItem()).getBlock().getDefaultState(), null, null, tintIndex) + ? Minecraft.getInstance().getBlockColors().getColor(((BlockItem) itemStack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex) : -1; IBlockColor metalBlockColorHandler = diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 2e04a98cc..1bbda9aaf 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -7,6 +7,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.commands.CosmereCommand; +import leaf.cosmere.commands.permissions.PermissionManager; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.registry.FeatureRegistry; @@ -17,6 +18,7 @@ import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.event.server.FMLServerStartingEvent; import java.util.Arrays; import java.util.List; @@ -32,6 +34,13 @@ public static void registerCommands(RegisterCommandsEvent event) CosmereCommand.register(event.getDispatcher()); } + + @SubscribeEvent + public static void onServerStarting(FMLServerStartingEvent event) + { + PermissionManager.init(); + } + @SubscribeEvent(priority = EventPriority.HIGH) public static void onBiomeLoad(BiomeLoadingEvent event) { @@ -52,7 +61,7 @@ public static void onBiomeLoad(BiomeLoadingEvent event) { if (metalType.hasOre()) { - event.getGeneration().withFeature(GenerationStage.Decoration.UNDERGROUND_ORES, FeatureRegistry.ConfiguredFeatures.ORE_FEATURES.get(metalType)); + event.getGeneration().addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, FeatureRegistry.ConfiguredFeatures.ORE_FEATURES.get(metalType)); LogHelper.debug(String.format("Added %s to: %s", metalType.name().toLowerCase(Locale.ROOT), event.getName())); } } diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 0c630063c..32a458416 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -49,7 +49,7 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) { Entity eventEntity = event.getEntity(); - if (eventEntity.world.isRemote || !(eventEntity instanceof LivingEntity)) + if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity)) { return; } @@ -139,7 +139,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) return; } - ItemStack stack = event.getPlayer().getHeldItem(Hand.MAIN_HAND); + ItemStack stack = event.getPlayer().getItemInHand(Hand.MAIN_HAND); LivingEntity target = (LivingEntity) event.getTarget(); SpiritwebCapability.get(target).ifPresent(cap -> diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index d9bf3fd75..88c9e299c 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -57,17 +57,17 @@ public void onPlayerTick(TickEvent.PlayerTickEvent event) PlayerEntity player = event.player; //charge gemstones in inventory if the player is outside during a thunderstorm - if (player.world.isRainingAt(player.getPosition()) && player.world.isThundering()) + if (player.level.isRainingAt(player.blockPosition()) && player.level.isThundering()) { IInventory mainInv = player.inventory; - int size = mainInv.getSizeInventory(); + int size = mainInv.getContainerSize(); for (int i = 0; i < size; i++) { IInventory inv = mainInv; int slot = i; - ItemStack stackInSlot = inv.getStackInSlot(slot); + ItemStack stackInSlot = inv.getItem(slot); //todo finish :D //if (stackInSlot != null && stackInSlot.getItem() instanceof ItemGemstone) { @@ -79,7 +79,7 @@ public void onPlayerTick(TickEvent.PlayerTickEvent event) @SubscribeEvent public void onItemTossEvent(ItemTossEvent event) { - if (!event.getPlayer().world.isRemote) + if (!event.getPlayer().level.isClientSide) { //if (event.getEntityItem().getItem().getItem() instanceof ItemShardBlade) { diff --git a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java index 26e06bb55..51ade0d68 100644 --- a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java +++ b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java @@ -16,7 +16,7 @@ public class CosmereItemGroups public static ItemGroup ITEMS = new ItemGroup(Cosmere.MODID + ".items") { @Override - public ItemStack createIcon() + public ItemStack makeIcon() { return new ItemStack(ItemsRegistry.GUIDE.get()); } @@ -25,7 +25,7 @@ public ItemStack createIcon() public static ItemGroup METALMINDS = new ItemGroup(Cosmere.MODID + ".metalminds") { @Override - public ItemStack createIcon() + public ItemStack makeIcon() { return new ItemStack(ItemsRegistry.METAL_BRACELETS.entrySet().stream().findAny().get().getValue().get()); } @@ -34,7 +34,7 @@ public ItemStack createIcon() public static ItemGroup HEMALURGIC_SPIKES = new ItemGroup(Cosmere.MODID + ".spikes") { @Override - public ItemStack createIcon() + public ItemStack makeIcon() { return new ItemStack(ItemsRegistry.METAL_SPIKE.entrySet().stream().findAny().get().getValue().get()); } @@ -43,7 +43,7 @@ public ItemStack createIcon() public static ItemGroup BLOCKS = new ItemGroup(Cosmere.MODID + ".blocks") { @Override - public ItemStack createIcon() + public ItemStack makeIcon() { return new ItemStack(BlocksRegistry.GEM_BLOCK.get()); } diff --git a/src/main/java/leaf/cosmere/items/BaseItem.java b/src/main/java/leaf/cosmere/items/BaseItem.java index fe7b1f8b2..1b4712173 100644 --- a/src/main/java/leaf/cosmere/items/BaseItem.java +++ b/src/main/java/leaf/cosmere/items/BaseItem.java @@ -13,7 +13,7 @@ public class BaseItem extends Item public BaseItem() { - super(PropTypes.Items.SIXTY_FOUR.get().group(CosmereItemGroups.ITEMS)); + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS)); } public BaseItem(Item.Properties prop) diff --git a/src/main/java/leaf/cosmere/items/CapWrapper.java b/src/main/java/leaf/cosmere/items/CapWrapper.java index 2c02c5b88..9c1dd6325 100644 --- a/src/main/java/leaf/cosmere/items/CapWrapper.java +++ b/src/main/java/leaf/cosmere/items/CapWrapper.java @@ -22,7 +22,7 @@ public CapWrapper(IItemHandler handler) } @Override - public int getSizeInventory() + public int getContainerSize() { return handler.getSlots(); } @@ -30,9 +30,9 @@ public int getSizeInventory() @Override public boolean isEmpty() { - for (int i = 0; i < getSizeInventory(); i++) + for (int i = 0; i < getContainerSize(); i++) { - if (!getStackInSlot(i).isEmpty()) + if (!getItem(i).isEmpty()) { return false; } @@ -41,25 +41,25 @@ public boolean isEmpty() } @Override - public ItemStack getStackInSlot(int index) + public ItemStack getItem(int index) { return handler.getStackInSlot(index); } @Override - public ItemStack decrStackSize(int index, int count) + public ItemStack removeItem(int index, int count) { return handler.extractItem(index, count, false); } @Override - public ItemStack removeStackFromSlot(int index) + public ItemStack removeItemNoUpdate(int index) { return handler.extractItem(index, Integer.MAX_VALUE, false); } @Override - public void setInventorySlotContents(int index, ItemStack stack) + public void setItem(int index, ItemStack stack) { if (handler instanceof IItemHandlerModifiable) { @@ -68,23 +68,23 @@ public void setInventorySlotContents(int index, ItemStack stack) } @Override - public void markDirty() + public void setChanged() { } @Override - public boolean isUsableByPlayer(PlayerEntity player) + public boolean stillValid(PlayerEntity player) { return false; } @Override - public void clear() + public void clearContent() { - for (int i = 0; i < getSizeInventory(); i++) + for (int i = 0; i < getContainerSize(); i++) { - removeStackFromSlot(i); + removeItemNoUpdate(i); } } } diff --git a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java index f9f833667..afba35184 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java @@ -29,9 +29,9 @@ public ChargeableItemBase(Item.Properties prop) } @Override - public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) + public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) { - if (isInGroup(tab)) + if (allowdedIn(tab)) { stacks.add(new ItemStack(this)); @@ -60,7 +60,7 @@ public boolean showDurabilityBar(ItemStack stack) @Override @OnlyIn(Dist.CLIENT) - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { String attunedPlayerName = getAttunedPlayerName(stack); UUID attunedPlayer = getAttunedPlayer(stack); @@ -68,7 +68,7 @@ public void addInformation(ItemStack stack, World worldIn, List { tooltip.add(TextHelper.createText(attunedPlayerName)); } - tooltip.add(TextHelper.createText(String.format("%s/%s", getCharge(stack), getMaxCharge(stack))).mergeStyle(TextFormatting.GRAY)); + tooltip.add(TextHelper.createText(String.format("%s/%s", getCharge(stack), getMaxCharge(stack))).withStyle(TextFormatting.GRAY)); } @Override @@ -88,7 +88,7 @@ public double getDurabilityForDisplay(ItemStack stack) } @Override - public boolean hasEffect(ItemStack stack) + public boolean isFoil(ItemStack stack) { if (stack.getItem() instanceof IChargeable) { diff --git a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java b/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java index 009371a07..b03e2a9c5 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java +++ b/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java @@ -15,7 +15,7 @@ public class ChargeableMetalItem extends ChargeableItemBase implements IHasMetal public ChargeableMetalItem(Metals.MetalType metalType, ItemGroup group) { - super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).group(group)); + super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/items/GemItem.java b/src/main/java/leaf/cosmere/items/GemItem.java index cfb07f881..1c951d1f5 100644 --- a/src/main/java/leaf/cosmere/items/GemItem.java +++ b/src/main/java/leaf/cosmere/items/GemItem.java @@ -12,7 +12,7 @@ public class GemItem extends ChargeableItemBase { public GemItem() { - super(PropTypes.Items.SIXTY_FOUR.get().group(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); } } diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index 5c993ff50..d2b2765b2 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -48,12 +48,12 @@ public static boolean isOpen() public static ITextComponent getTitle(ItemStack stack) { - ITextComponent title = stack.getDisplayName(); + ITextComponent title = stack.getHoverName(); String akashicTomeNBT = "akashictome:displayName"; if (stack.hasTag() && stack.getTag().contains(akashicTomeNBT)) { - title = ITextComponent.Serializer.getComponentFromJson(stack.getTag().getString(akashicTomeNBT)); + title = ITextComponent.Serializer.fromJson(stack.getTag().getString(akashicTomeNBT)); } return title; @@ -62,7 +62,7 @@ public static ITextComponent getTitle(ItemStack stack) // Random item to expose this as public public static BlockRayTraceResult doRayTrace(World world, PlayerEntity player, RayTraceContext.FluidMode fluidMode) { - return Item.rayTrace(world, player, fluidMode); + return Item.getPlayerPOVHitResult(world, player, fluidMode); } /* @@ -76,9 +76,9 @@ public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList tooltip, ITooltipFlag flagIn) + public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - tooltip.add(getEdition().deepCopy().mergeStyle(TextFormatting.GRAY)); + tooltip.add(getEdition().copy().withStyle(TextFormatting.GRAY)); } public static ITextComponent getEdition() @@ -91,9 +91,9 @@ public static ITextComponent getEdition() @Nonnull @Override - public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) + public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) { - ItemStack stack = playerIn.getHeldItem(handIn); + ItemStack stack = playerIn.getItemInHand(handIn); if (playerIn instanceof ServerPlayerEntity) { diff --git a/src/main/java/leaf/cosmere/items/MetalItem.java b/src/main/java/leaf/cosmere/items/MetalItem.java index a93a36a38..9791b4aab 100644 --- a/src/main/java/leaf/cosmere/items/MetalItem.java +++ b/src/main/java/leaf/cosmere/items/MetalItem.java @@ -19,7 +19,7 @@ public class MetalItem extends BaseItem implements IHasMetalType public MetalItem(Metals.MetalType metalType) { - super(PropTypes.Items.SIXTY_FOUR.get().group(CosmereItemGroups.ITEMS).rarity(metalType.getRarity())); + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(metalType.getRarity())); this.metalType = metalType; } @@ -28,7 +28,7 @@ public MetalItem(Metals.MetalType metalType) /** * Returns true if the item can be used on the given entity, e.g. shears on sheep. */ - public ActionResultType itemInteractionForEntity(ItemStack stack, PlayerEntity playerIn, LivingEntity target, Hand hand) + public ActionResultType interactLivingEntity(ItemStack stack, PlayerEntity playerIn, LivingEntity target, Hand hand) { return ActionResultType.PASS; } diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 9b8d15fbe..7681ba502 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -20,10 +20,10 @@ public MetalNuggetItem(Metals.MetalType metalType) } - public ActionResult onItemRightClick(World worldIn, PlayerEntity playerIn, Hand handIn) + public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) { - ItemStack itemstack = playerIn.getHeldItem(handIn); - playerIn.setActiveHand(handIn); + ItemStack itemstack = playerIn.getItemInHand(handIn); + playerIn.startUsingItem(handIn); //todo convert to shavings @@ -41,6 +41,6 @@ public ActionResult onItemRightClick(World worldIn, PlayerEntity play - return ActionResult.resultConsume(itemstack); + return ActionResult.consume(itemstack); } } diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 04b9c1fff..5b2ce6dc8 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -41,7 +41,7 @@ public class MetalVialItem extends BaseItem implements IContainsMetal private CompoundNBT getContainedMetalsTag(ItemStack stack) { - return stack.getOrCreateChildTag(metals_contained); + return stack.getOrCreateTagElement(metals_contained); } @Override @@ -57,7 +57,7 @@ public boolean isFull(ItemStack stack) @Nonnull @Override - public UseAction getUseAction(ItemStack stack) + public UseAction getUseAnimation(ItemStack stack) { return UseAction.DRINK; } @@ -72,25 +72,25 @@ public int getUseDuration(ItemStack stack) @Nonnull @Override - public ActionResult onItemRightClick(World world, PlayerEntity player, @Nonnull Hand hand) + public ActionResult use(World world, PlayerEntity player, @Nonnull Hand hand) { - ItemStack stack = player.getHeldItem(hand); - if (player.canEat(true) && containedMetalCount(player.getHeldItem(hand)) > 0) + ItemStack stack = player.getItemInHand(hand); + if (player.canEat(true) && containedMetalCount(player.getItemInHand(hand)) > 0) { - player.setActiveHand(hand); - return ActionResult.resultConsume(stack); + player.startUsingItem(hand); + return ActionResult.consume(stack); } - return ActionResult.resultPass(stack); + return ActionResult.pass(stack); } @Override - public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity entityLiving) + public ItemStack finishUsingItem(ItemStack stack, World worldIn, LivingEntity entityLiving) { PlayerEntity playerentity = entityLiving instanceof PlayerEntity ? (PlayerEntity) entityLiving : null; - if (!worldIn.isRemote) + if (!worldIn.isClientSide) { SpiritwebCapability.get(entityLiving).ifPresent(iSpiritweb -> { @@ -118,7 +118,7 @@ public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity en } - if (playerentity == null || !playerentity.abilities.isCreativeMode) + if (playerentity == null || !playerentity.abilities.instabuild) { if (stack.isEmpty()) { @@ -134,7 +134,7 @@ public ItemStack onItemUseFinish(ItemStack stack, World worldIn, LivingEntity en ItemStack splitStack = stack.split(1); emptyMetals(splitStack); - playerentity.addItemStackToInventory(splitStack); + playerentity.addItem(splitStack); } else { @@ -213,7 +213,7 @@ public double getDurabilityForDisplay(ItemStack stack) @Override @OnlyIn(Dist.CLIENT) - public void addInformation(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) + public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { Map sorted = getStoredMetalsMap(getContainedMetalsTag(stack)); tooltip.add(TextHelper.createTranslatedText(CONTAINED_METALS)); @@ -223,7 +223,7 @@ public void addInformation(ItemStack stack, World worldIn, List String metalName = Metals.MetalType.valueOf(metalInfo.getKey()).get().name(); String metalTranslation = String.format("item.cosmere.%s_nugget", metalName.toLowerCase()); - tooltip.add(TextHelper.createTranslatedText(metalTranslation).appendSibling(TextHelper.createText(String.format(": x%s", metalInfo.getValue())))); + tooltip.add(TextHelper.createTranslatedText(metalTranslation).append(TextHelper.createText(String.format(": x%s", metalInfo.getValue())))); }); diff --git a/src/main/java/leaf/cosmere/items/Metalmind.java b/src/main/java/leaf/cosmere/items/Metalmind.java index 8b830eff6..c3dc9c54d 100644 --- a/src/main/java/leaf/cosmere/items/Metalmind.java +++ b/src/main/java/leaf/cosmere/items/Metalmind.java @@ -49,7 +49,7 @@ public Multimap getAttributeModifiers(SlotContext //todo better nicrosil tracking. if (metalType == Metals.MetalType.NICROSIL) { - CompoundNBT nbt = stack.getOrCreateChildTag("StoredInvestiture"); + CompoundNBT nbt = stack.getOrCreateTagElement("StoredInvestiture"); //for each power the user has access to for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) diff --git a/src/main/java/leaf/cosmere/items/ShardbladeItem.java b/src/main/java/leaf/cosmere/items/ShardbladeItem.java index 1db11c3c1..0f8097cc1 100644 --- a/src/main/java/leaf/cosmere/items/ShardbladeItem.java +++ b/src/main/java/leaf/cosmere/items/ShardbladeItem.java @@ -7,6 +7,8 @@ import net.minecraft.item.IItemTier; import net.minecraft.item.SwordItem; +import net.minecraft.item.Item.Properties; + public class ShardbladeItem extends SwordItem { public ShardbladeItem(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) @@ -15,7 +17,7 @@ public ShardbladeItem(IItemTier tier, int attackDamageIn, float attackSpeedIn, P } @Override - public boolean isImmuneToFire() + public boolean isFireResistant() { return true; } diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java index 9d4deb9c1..bec3c7652 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java @@ -95,17 +95,17 @@ public void render(String identifier, int index, MatrixStack matrixStack, case CHARM: case CURIO: //setup biped model stuff - bracelet.setLivingAnimations(livingEntity, limbSwing, limbSwingAmount, partialTicks); - bracelet.setRotationAngles(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + bracelet.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); + bracelet.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); //and have it follow body rotations ICurio.RenderHelper.followBodyRotations(livingEntity, (BipedModel) bracelet); break; } - IVertexBuilder vertexBuilder = ItemRenderer.getBuffer(renderTypeBuffer, bracelet.getRenderType(METAL_TEXTURE), false, false); + IVertexBuilder vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, bracelet.renderType(METAL_TEXTURE), false, false); Color col = getMetalType().getColor(); - bracelet.render(matrixStack, + bracelet.renderToBuffer(matrixStack, vertexBuilder, light, OverlayTexture.NO_OVERLAY, diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 2345e9ef1..70fe6dc62 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -66,7 +66,7 @@ public class HemalurgicSpikeItem extends Metalmind implements IHemalurgicInfo private final Multimap attributeModifiers; - public static final DamageSource SPIKED = (new DamageSource("spiked")).setDamageBypassesArmor().setDamageIsAbsolute(); + public static final DamageSource SPIKED = (new DamageSource("spiked")).bypassArmor().bypassMagic(); //todo move private static final ResourceLocation SPIKE_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); @@ -79,8 +79,8 @@ public HemalurgicSpikeItem(Metals.MetalType metalType) //todo decide on damage this.attackDamage = 2f + 1f;//tier.getAttackDamage(); ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); - builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double) this.attackDamage, AttributeModifier.Operation.ADDITION)); - builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", (double) -2.4f, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", (double) this.attackDamage, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", (double) -2.4f, AttributeModifier.Operation.ADDITION)); this.attributeModifiers = builder.build(); } @@ -100,18 +100,18 @@ public float getMaxChargeModifier() } @Override - public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) + public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) { - if (isInGroup(tab)) + if (allowdedIn(tab)) { ItemStack stack = new ItemStack(this); - stack.addEnchantment(Enchantments.BINDING_CURSE, 1); + stack.enchant(Enchantments.BINDING_CURSE, 1); stacks.add(stack); if (getMetalType().hasFeruchemicalEffect()) { ItemStack fullPower = new ItemStack(this); - fullPower.addEnchantment(Enchantments.BINDING_CURSE, 1); + fullPower.enchant(Enchantments.BINDING_CURSE, 1); setCharge(fullPower, getMaxCharge(fullPower)); stacks.add(fullPower); @@ -129,10 +129,10 @@ public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList tooltip, ITooltipFlag flagIn) + public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) { - super.addInformation(stack, worldIn, tooltip, flagIn); + super.appendHoverText(stack, worldIn, tooltip, flagIn); // no extra info if there isn't any @@ -243,12 +243,12 @@ public void addInformation(ItemStack stack, World worldIn, List @SubscribeEvent public static void onEntityDeath(LivingDeathEvent event) { - if (event.getSource().getTrueSource() instanceof PlayerEntity) + if (event.getSource().getEntity() instanceof PlayerEntity) { - PlayerEntity playerEntity = (PlayerEntity) event.getSource().getTrueSource(); + PlayerEntity playerEntity = (PlayerEntity) event.getSource().getEntity(); SpiritwebCapability.get(playerEntity).ifPresent(iSpiritweb -> { - ItemStack itemstack = playerEntity.getHeldItemMainhand(); + ItemStack itemstack = playerEntity.getMainHandItem(); if (itemstack.getItem() instanceof HemalurgicSpikeItem) { //entity was killed by a spike @@ -266,7 +266,7 @@ public void killedEntity(ItemStack stack, LivingEntity entityKilled) //https://wob.coppermind.net/events/332/#e9569 // do nothing if an identity exists and doesn't match - if (!matchHemalurgicIdentity(stack, entityKilled.getUniqueID())) + if (!matchHemalurgicIdentity(stack, entityKilled.getUUID())) { return; } @@ -276,19 +276,19 @@ public void killedEntity(ItemStack stack, LivingEntity entityKilled) } @Override - public boolean hasEffect(@Nonnull ItemStack stack) + public boolean isFoil(@Nonnull ItemStack stack) { - return super.hasEffect(stack) || hemalurgicIdentityExists(stack); + return super.isFoil(stack) || hemalurgicIdentityExists(stack); } /** * Gets a map of item attribute modifiers, used by damage when used as melee weapon. */ @Override - public Multimap getAttributeModifiers(EquipmentSlotType equipmentSlot) + public Multimap getDefaultAttributeModifiers(EquipmentSlotType equipmentSlot) { return equipmentSlot == EquipmentSlotType.MAINHAND ? this.attributeModifiers - : super.getAttributeModifiers(equipmentSlot); + : super.getDefaultAttributeModifiers(equipmentSlot); } @Override @@ -316,7 +316,7 @@ protected void onEquipStatusChanged(SlotContext slotContext, ItemStack stack, bo //then do hemalurgy spike logic //hurt the user //spiritweb attributes are handled in metalmind - slotContext.getWearer().attackEntityFrom(SPIKED, 4); + slotContext.getWearer().hurt(SPIKED, 4); } } @@ -374,18 +374,18 @@ public void render(String identifier, int index, MatrixStack matrixStack, case CHARM: case CURIO: //setup biped model stuff - spike.setLivingAnimations(livingEntity, limbSwing, limbSwingAmount, partialTicks); - spike.setRotationAngles(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + spike.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); + spike.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); //and have it follow body rotations ICurio.RenderHelper.followBodyRotations(livingEntity, (BipedModel) spike); break; } - IVertexBuilder vertexBuilder = ItemRenderer.getBuffer(renderTypeBuffer, spike.getRenderType(SPIKE_TEXTURE), false, false); + IVertexBuilder vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, spike.renderType(SPIKE_TEXTURE), false, false); Color col = getMetalType().getColor(); - spike.render(matrixStack, + spike.renderToBuffer(matrixStack, vertexBuilder, light, OverlayTexture.NO_OVERLAY, diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index b833bad7e..57cf22b06 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -61,7 +61,7 @@ default UUID getHemalurgicIdentity(ItemStack stack) default CompoundNBT getHemalurgicInfo(ItemStack stack) { - return stack.getOrCreateChildTag("hemalurgy"); + return stack.getOrCreateTagElement("hemalurgy"); } default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, LivingEntity entityKilled) @@ -83,7 +83,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //don't steal modified values, only base value //todo decide how much strength is reasonable to steal and how much goes to waste //currently will try 70% - double strengthToAdd = entityKilled.getAttributeManager().getAttributeBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; + double strengthToAdd = entityKilled.getAttributes().getBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; CompoundNBTHelper.setDouble(hemalurgyInfo, spikeMetalType.name(), strengthCurrent + strengthToAdd); saveIdentity = true; break; @@ -182,7 +182,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType if (saveIdentity) { - setHemalurgicIdentity(stack, entityKilled.getUniqueID()); + setHemalurgicIdentity(stack, entityKilled.getUUID()); CompoundNBTHelper.setBoolean(hemalurgyInfo, "hasHemalurgicPower", true); } } diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index 5cf3b036a..0ba440224 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -47,8 +47,8 @@ public static void lootLoad(LootTableLoadEvent evt) public static LootPool getInjectPool(String entryName) { - return LootPool.builder() - .addEntry(getInjectEntry(entryName, 1)) + return LootPool.lootPool() + .add(getInjectEntry(entryName, 1)) .bonusRolls(0, 1) .name("cosmere_inject") .build(); @@ -57,8 +57,8 @@ public static LootPool getInjectPool(String entryName) private static LootEntry.Builder getInjectEntry(String name, int weight) { ResourceLocation table = prefix("inject/" + name); - return TableLootEntry.builder(table) - .weight(weight); + return TableLootEntry.lootTableReference(table) + .setWeight(weight); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index e23986cfe..71e9515b1 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -104,7 +104,7 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; data.adjustIngestedMetal(metalType, mode, isActiveTick); //if we get to this point, we are in an active burn state. diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index 4cc214eda..73c7c5a3b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -30,25 +30,25 @@ protected void performEffect(ISpiritweb data) //Speeds Up Time { //tick entities around user - if (data.getLiving().ticksExisted % 6 == 0) + if (data.getLiving().tickCount % 6 == 0) { int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); - int x = (int) (data.getLiving().getPosX() + (data.getLiving().getPosXRandom(range * 2 + 1) - range)); - int z = (int) (data.getLiving().getPosZ() + (data.getLiving().getPosZRandom(range * 2 + 1) - range)); + int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); + int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); for (int i = 4; i > -2; i--) { - int y = data.getLiving().getPosition().getY() + i; + int y = data.getLiving().blockPosition().getY() + i; BlockPos pos = new BlockPos(x, y, z); - World world = data.getLiving().world; + World world = data.getLiving().level; - if (world.isAirBlock(pos)) + if (world.isEmptyBlock(pos)) { continue; } BlockState state = world.getBlockState(pos); - state.randomTick((ServerWorld) world, pos, world.rand); + state.randomTick((ServerWorld) world, pos, world.random); break; } @@ -59,7 +59,7 @@ protected void performEffect(ISpiritweb data) for (LivingEntity e : entitiesToCheck) { - e.livingTick(); + e.aiStep(); } } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index fbbf28dcf..657c66f6d 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -38,18 +38,18 @@ protected void performEffect(ISpiritweb data) if (e instanceof MobEntity) { MobEntity mob = (MobEntity) e; - mob.setNoAI(mode == 3 && allomanticStrength > 15); + mob.setNoAi(mode == 3 && allomanticStrength > 15); switch (mode) { case 3: - mob.setAttackTarget(null); + mob.setTarget(null); case 2: - mob.setAggroed(false); + mob.setAggressive(false); case 1: default: //stop angry targets from attacking things - e.setRevengeTarget(null); + e.setLastHurtByMob(null); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index 552f48f80..0b355ee5e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -33,7 +33,7 @@ public AllomancyBronze(Metals.MetalType metalType) protected void performEffect(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; //Detects Allomantic Pulses //passive active ability, if any @@ -46,7 +46,7 @@ protected void performEffect(ISpiritweb data) for (LivingEntity targetEntity : entitiesToCheckForAllomancy) { - EffectInstance copperEffect = targetEntity.getActivePotionEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); + EffectInstance copperEffect = targetEntity.getEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); if (copperEffect != null && copperEffect.getDuration() > 0) { //skip clouded entities. @@ -74,20 +74,20 @@ protected void performEffect(ISpiritweb data) //get the position between the user and the entity we found //end point minus start point, then normalize - BlockPos destinationPosition = targetEntity.getPosition(); - BlockPos startingPosition = livingEntity.getPosition(); + BlockPos destinationPosition = targetEntity.blockPosition(); + BlockPos startingPosition = livingEntity.blockPosition(); BlockPos direction = new BlockPos(VectorHelper.Normalize(destinationPosition.subtract(startingPosition))); - playerEntity.playSound( - NoteBlockInstrument.BASEDRUM.getSound(), + playerEntity.playNotifySound( + NoteBlockInstrument.BASEDRUM.getSoundEvent(), SoundCategory.PLAYERS, //todo check this category 3.0F, //volume 1.0F); //pitch //todo visual cue? //todo make this stuff only happen for the user - targetEntity.world.addParticle( + targetEntity.level.addParticle( ParticleTypes.NOTE, (double) direction.getX() + 0.5D, (double) direction.getY() + 1.2D, diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java index 2d755b162..386a5cf66 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java @@ -25,7 +25,7 @@ public AllomancyCadmium(Metals.MetalType metalType) protected void performEffect(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; //Slows Down Time if (isActiveTick) @@ -38,7 +38,7 @@ protected void performEffect(ISpiritweb data) for (LivingEntity e : entitiesToAffect) { - e.addPotionEffect(EffectsHelper.getNewEffect(Effects.SLOWNESS,mode)); + e.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SLOWDOWN,mode)); } //todo slow tile entities? not sure how to do that. bendalloy just calls tick more often. diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java index 764ac63b5..a00bfba49 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java @@ -30,25 +30,25 @@ protected void performEffect(ISpiritweb data) int range = data.getMode(manifestationType, getMetalType().getID()); LivingEntity living = data.getLiving(); - World world = living.world; - boolean isActiveTick = living.world.getGameTime() % 20 == 0; - if (!world.isRemote && isActiveTick) + World world = living.level; + boolean isActiveTick = living.level.getGameTime() % 20 == 0; + if (!world.isClientSide && isActiveTick) { //thank you to CyclopsMC and their repo EverlastingAbilities for their section on detecting enemies you are looking at //https://github.com/CyclopsMC/EverlastingAbilities/blob/master-1.16/src/main/java/org/cyclops/everlastingabilities/ability/AbilityTypePowerStare.java double eyeHeight = living.getEyeHeight(); - Vector3d lookVec = living.getLookVec(); - Vector3d origin = new Vector3d(living.getPosX(), living.getPosY() + eyeHeight, living.getPosZ()); + Vector3d lookVec = living.getLookAngle(); + Vector3d origin = new Vector3d(living.getX(), living.getY() + eyeHeight, living.getZ()); Vector3d direction = origin.add(lookVec.x * range, lookVec.y * range, lookVec.z * range); - List entitiesInRange = world.getEntitiesWithinAABBExcludingEntity(living, + List entitiesInRange = world.getEntities(living, living.getBoundingBox() - .grow( + .inflate( lookVec.x * range, lookVec.y * range, lookVec.z * range) - .grow(range)); + .inflate(range)); for (Entity e : entitiesInRange) { @@ -60,9 +60,9 @@ protected void performEffect(ISpiritweb data) { Entity entity = null; - float f10 = e.getCollisionBorderSize(); - AxisAlignedBB axisalignedbb = e.getBoundingBox().expand((double) f10, (double) f10, (double) f10); - Vector3d hitVec = axisalignedbb.rayTrace(origin, direction).orElse(null); + float f10 = e.getPickRadius(); + AxisAlignedBB axisalignedbb = e.getBoundingBox().expandTowards((double) f10, (double) f10, (double) f10); + Vector3d hitVec = axisalignedbb.clip(origin, direction).orElse(null); if (axisalignedbb.contains(origin)) { @@ -73,7 +73,7 @@ else if (hitVec != null) double distance = origin.distanceTo(hitVec); if (distance < range || range == 0.0D) { - if (e == living.getRidingEntity() && !living.canRiderInteract()) + if (e == living.getVehicle() && !living.canRiderInteract()) { if (range == 0.0D) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java index dbd3f12ae..74c70c05b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java @@ -26,7 +26,7 @@ public AllomancyCopper(Metals.MetalType metalType) protected void performEffect(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; //Hides Allomantic Pulses if (isActiveTick) @@ -38,7 +38,7 @@ protected void performEffect(ISpiritweb data) for (LivingEntity e : entitiesToApplyEffect) { - e.addPotionEffect(newEffect); + e.addEffect(newEffect); } } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java index 0f227d9d3..eeb89d44b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java @@ -24,7 +24,7 @@ public AllomancyDuralumin(Metals.MetalType metalType) public void performEffect(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; if (isActiveTick) { @@ -33,7 +33,7 @@ public void performEffect(ISpiritweb data) EffectsRegistry.ALLOMANCY_BOOST.get(), MathHelper.floor(getAllomanticStrength(data)) ); - data.getLiving().addPotionEffect(newEffect); + data.getLiving().addEffect(newEffect); } } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 65a55e76e..e5b20286b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -51,7 +51,7 @@ public AllomancyIronSteel(Metals.MetalType metalType) @Override public void performEffect(ISpiritweb data) { - if (data.getLiving().world.isRemote) + if (data.getLiving().level.isClientSide) { performEffectClient(data); } @@ -73,19 +73,19 @@ private void performEffectClient(ISpiritweb cap) entities = isPush ? data.pushEntities : data.pullEntities; //Pushes on Nearby Metals - if (getKeyBinding().isKeyDown()) + if (getKeyBinding().isDown()) { Minecraft mc = Minecraft.getInstance(); RayTraceResult ray = cap.getLiving().pick(getRange(cap), 0, false); - if (ray.getType() == RayTraceResult.Type.BLOCK && !blocks.contains(((BlockRayTraceResult) ray).getPos())) + if (ray.getType() == RayTraceResult.Type.BLOCK && !blocks.contains(((BlockRayTraceResult) ray).getBlockPos())) { - BlockPos pos = ((BlockRayTraceResult) ray).getPos(); + BlockPos pos = ((BlockRayTraceResult) ray).getBlockPos(); //todo check block is of ihasmetal type - BlockState state = mc.world.getBlockState(pos); + BlockState state = mc.level.getBlockState(pos); if (state.getBlock() instanceof IHasMetalType) { - blocks.add(pos.toImmutable()); + blocks.add(pos.immutable()); if (blocks.size() > 5) { @@ -94,10 +94,10 @@ private void performEffectClient(ISpiritweb cap) hasChanged = true; } } - else if (ray.getType() == RayTraceResult.Type.ENTITY && !entities.contains(((EntityRayTraceResult) ray).getEntity().getEntityId())) + else if (ray.getType() == RayTraceResult.Type.ENTITY && !entities.contains(((EntityRayTraceResult) ray).getEntity().getId())) { //todo check for metal - entities.add(((EntityRayTraceResult) ray).getEntity().getEntityId()); + entities.add(((EntityRayTraceResult) ray).getEntity().getId()); if (entities.size() > 5) { @@ -142,7 +142,7 @@ else if (ray.getType() == RayTraceResult.Type.ENTITY && !entities.contains(((Ent private void performEffectServer(ISpiritweb cap) { - if (cap.getLiving().ticksExisted % 3 == 0) + if (cap.getLiving().tickCount % 3 == 0) { return; } @@ -161,14 +161,14 @@ private void performEffectServer(ISpiritweb cap) LivingEntity living = data.getLiving(); Vector3d direction; - float renderPartialTicks = Minecraft.getInstance().getRenderPartialTicks(); + float renderPartialTicks = Minecraft.getInstance().getFrameTime(); double strength = getAllomanticStrength(cap); for (int i = blockListCount - 1; i >= 0; i--) { BlockPos blockPos = blocks.get(i); - if (!isPush && blockPos.manhattanDistance(living.getPosition()) < 2) + if (!isPush && blockPos.distManhattan(living.blockPosition()) < 2) { //stop shoving the user into the block continue; @@ -177,23 +177,23 @@ private void performEffectServer(ISpiritweb cap) //if the entity is in range of being able to push or pull from double maxDistance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; - if (blockPos.withinDistance(living.getPositionVec(), maxDistance)) + if (blockPos.closerThan(living.position(), maxDistance)) { - Vector3d blockCenter = Vector3d.copyCentered(blockPos); + Vector3d blockCenter = Vector3d.atCenterOf(blockPos); direction = VectorHelper.getDirection( blockCenter, - living.getPositionVec(), + living.position(), (isPush ? -1f : 2f) * renderPartialTicks); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vector3d normalize = direction.normalize(); double shortenFactor = isPush ? 0.2 : 0.4; - Vector3d add = living.getMotion().add(normalize.mul(shortenFactor, shortenFactor, shortenFactor)); + Vector3d add = living.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); //don't let the motion go crazy large - living.setMotion(VectorHelper.ClampMagnitude(add, 1)); + living.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); //let people get damaged but not too much? //todo check what a good max fall distance would be @@ -209,7 +209,7 @@ private void performEffectServer(ISpiritweb cap) blocks.remove(i); } } - living.velocityChanged = true; + living.hurtMarked = true; } private static List found = new ArrayList<>(); @@ -220,7 +220,7 @@ public static List getDrawLines(int range) Minecraft mc = Minecraft.getInstance(); ClientPlayerEntity playerEntity = mc.player; //only update box list every so often - if (playerEntity.ticksExisted % 5 != 0 && found.size() > 0) + if (playerEntity.tickCount % 5 != 0 && found.size() > 0) { return found; } @@ -232,10 +232,10 @@ public static List getDrawLines(int range) //todo stop aluminum showing up, check IHasMetalType.getMetalType != aluminum //metal blocks - BlockPos.getProximitySortedBoxPositions(playerEntity.getPosition(), range, range, range) + BlockPos.withinManhattanStream(playerEntity.blockPosition(), range, range, range) .filter(blockPos -> { - Block block = playerEntity.world.getBlockState(blockPos).getBlock(); + Block block = playerEntity.level.getBlockState(blockPos).getBlock(); if (block instanceof IHasMetalType) { @@ -263,11 +263,11 @@ else if (entity instanceof ItemEntity) if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType) { - found.add(entity.getPositionVec()); + found.add(entity.position()); } else if (item instanceof IHasMetalType) { - found.add(entity.getPositionVec()); + found.add(entity.position()); } } }); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java index 51ada3b69..696e03808 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java @@ -51,12 +51,12 @@ public boolean modeWraps(ISpiritweb data) @SubscribeEvent public void onLivingHurtEvent(LivingHurtEvent event) { - Entity trueSource = event.getSource().getTrueSource(); + Entity trueSource = event.getSource().getEntity(); if (trueSource instanceof PlayerEntity) { SpiritwebCapability.get((LivingEntity) trueSource).ifPresent(iSpiritweb -> { - ItemStack itemInHand = iSpiritweb.getLiving().getHeldItemMainhand(); + ItemStack itemInHand = iSpiritweb.getLiving().getMainHandItem(); if (itemInHand.isEmpty()) { @@ -70,7 +70,7 @@ public void onLivingHurtEvent(LivingHurtEvent event) ); //apply to the hit entity - event.getEntityLiving().addPotionEffect(newEffect); + event.getEntityLiving().addEffect(newEffect); } } }); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java index f681f734d..2fa69100e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java @@ -21,21 +21,21 @@ public AllomancyPewter(Metals.MetalType metalType) protected void performEffect(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; //Increases Physical Abilities if (isActiveTick) { int mode = data.getMode(manifestationType, getMetalType().getID()); - livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.SPEED, 0)); + livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SPEED, 0)); switch (mode) { case 3: case 2: - livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.HASTE, 0)); - livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.RESISTANCE, mode - 2)); + livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DIG_SPEED, 0)); + livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DAMAGE_RESISTANCE, mode - 2)); case 1: - livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.STRENGTH, mode - 1)); + livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DAMAGE_BOOST, mode - 1)); break; } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java index d2d2f54c9..e53270470 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java @@ -33,12 +33,12 @@ protected void performEffect(ISpiritweb data) { //Increases Physical Senses LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.ticksExisted % 20 == 0; + boolean isActiveTick = livingEntity.tickCount % 20 == 0; //give night vision if (isActiveTick) { - livingEntity.addPotionEffect(EffectsHelper.getNewEffect(Effects.NIGHT_VISION, 0)); + livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.NIGHT_VISION, 0)); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index e1aa1c554..457a386d1 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -42,26 +42,26 @@ protected void performEffect(ISpiritweb data) MobEntity mob = (MobEntity) e; //mob.targetSelector.enableFlag(Goal.Flag.TARGET); - mob.setNoAI(false); + mob.setNoAi(false); switch (mode) { case 3: - if (mob.getAttackTarget() == null) + if (mob.getTarget() == null) { LivingEntity attackTarget = entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1)); - mob.setAttackTarget(attackTarget); + mob.setTarget(attackTarget); } case 2: - if (mob.getRevengeTarget() == null) + if (mob.getLastHurtByMob() == null) { - mob.setRevengeTarget(mob.getAttackTarget() != null ? mob.getAttackTarget() + mob.setLastHurtByMob(mob.getTarget() != null ? mob.getTarget() : entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1))); } case 1: default: - mob.setAggroed(true); + mob.setAggressive(true); } } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index caf151a78..76f44201c 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -62,7 +62,7 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); - if (livingEntity.ticksExisted % 20 != 0) + if (livingEntity.tickCount % 20 != 0) { return; } @@ -105,7 +105,7 @@ else if (mode > 0) return; } - livingEntity.addPotionEffect(currentEffect); + livingEntity.addEffect(currentEffect); } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index 471bf0ce9..97ebcea8c 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -39,7 +39,7 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); - if (!(livingEntity instanceof PlayerEntity) || livingEntity.ticksExisted % 20 != 0) + if (!(livingEntity instanceof PlayerEntity) || livingEntity.tickCount % 20 != 0) { return; } @@ -85,7 +85,7 @@ private void performXPAdjustment(PlayerEntity playerEntity, int mode) int cost = getCost(mode); int experiencePoints = playerEntity.isCreative() ? 10 : cost; - if (playerEntity.experienceTotal > cost && MetalmindChargeHelper.adjustMetalmindChargeExact(playerEntity, metalType, -experiencePoints, true, true) != null) + if (playerEntity.totalExperience > cost && MetalmindChargeHelper.adjustMetalmindChargeExact(playerEntity, metalType, -experiencePoints, true, true) != null) { //successfully added xp to metalmind @@ -110,7 +110,7 @@ private void performXPAdjustment(PlayerEntity playerEntity, int mode) EffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); //potion effect doesn't do anything other than tell the player they are storing. - playerEntity.addPotionEffect(currentEffect); + playerEntity.addEffect(currentEffect); } } @@ -121,10 +121,10 @@ private void performXPAdjustment(PlayerEntity playerEntity, int mode) //https://github.com/P3pp3rF1y/Reliquary/blob/1.16.x/src/main/java/xreliquary/items/HeroMedallionItem.java private void decreasePlayerExperience(PlayerEntity player, int pointsToRemove) { - player.experienceTotal -= pointsToRemove; - int newLevel = XPHelper.getLevelForExperience(player.experienceTotal); + player.totalExperience -= pointsToRemove; + int newLevel = XPHelper.getLevelForExperience(player.totalExperience); player.experienceLevel = newLevel; - player.experience = (float) (player.experienceTotal - XPHelper.getExperienceForLevel(newLevel)) / player.xpBarCap(); + player.experienceProgress = (float) (player.totalExperience - XPHelper.getExperienceForLevel(newLevel)) / player.getXpNeededForNextLevel(); } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java index ecd1b3b22..c781382b0 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java @@ -20,8 +20,8 @@ public FeruchemyElectrum(Metals.MetalType metalType) public void onLivingHurtEvent(LivingHurtEvent event) { - EffectInstance tapEffect = event.getEntityLiving().getActivePotionEffect(EffectsRegistry.TAPPING_EFFECTS.get(getMetalType()).get()); - EffectInstance storeEffect = event.getEntityLiving().getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(getMetalType()).get()); + EffectInstance tapEffect = event.getEntityLiving().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(getMetalType()).get()); + EffectInstance storeEffect = event.getEntityLiving().getEffect(EffectsRegistry.STORING_EFFECTS.get(getMetalType()).get()); if (tapEffect != null && tapEffect.getDuration() > 0) { diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 159d37ec8..37845b323 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -40,7 +40,7 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); - if (livingEntity.ticksExisted % 20 != 0) + if (livingEntity.tickCount % 20 != 0) { return; } @@ -77,7 +77,7 @@ else if (mode > 0) if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) { EffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - livingEntity.addPotionEffect(currentEffect); + livingEntity.addEffect(currentEffect); } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java index d66a1c192..893a73076 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java @@ -20,13 +20,13 @@ public FeruchemyZinc(Metals.MetalType metalType) public void onXPChange(PlayerXpEvent.XpChange event) { - boolean isRemote = event.getEntityLiving().world.isRemote; + boolean isRemote = event.getEntityLiving().level.isClientSide; if (isRemote) { return; } - EffectInstance tappingZincEffect = event.getPlayer().getActivePotionEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); - EffectInstance storingZincEffect = event.getPlayer().getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); + EffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); + EffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); if (tappingZincEffect != null) { diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java index fb01326da..23ec3b14a 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java @@ -26,23 +26,23 @@ public SurgeGravitation(int color) @SubscribeEvent public void onLivingHurtEvent(LivingHurtEvent event) { - if (event.getSource().getTrueSource() instanceof PlayerEntity) + if (event.getSource().getEntity() instanceof PlayerEntity) { - PlayerEntity player = (PlayerEntity) event.getSource().getTrueSource(); + PlayerEntity player = (PlayerEntity) event.getSource().getEntity(); LogHelper.info(player.getName() + " has attacked a " + event.getEntityLiving().getName()); //ISurgeState SState = player.getCapability(CosmereCapabilities.SURGE_STATE, null); //String activeSurges = SState.getActiveSurgeName(); - ItemStack itemInHand = player.getHeldItemMainhand(); + ItemStack itemInHand = player.getMainHandItem(); //windrunners like Szeth could launch enemies into the air to die cruelly by fall damage if (false)//activeSurges.equals(Names.KnightOrders.WINDRUNNER) && itemInHand == null) { - event.getEntityLiving().setPosition(event.getEntityLiving().getPosX(), event.getEntityLiving().getPosY() + 0.1d, event.getEntityLiving().getPosZ()); + event.getEntityLiving().setPos(event.getEntityLiving().getX(), event.getEntityLiving().getY() + 0.1d, event.getEntityLiving().getZ()); event.getEntityLiving().setOnGround(false); event.getEntityLiving().setJumping(true); - event.getEntityLiving().setMotion(0, 5, 0); + event.getEntityLiving().setDeltaMovement(0, 5, 0); //IPlayerStats PS = player.getCapability(CosmereCapabilities.PLAYER_STATS, null); //PS.remSL(100);//remove some stormlight as if it costs to hit diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index 86b4aa735..ddb432ff0 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -16,21 +16,21 @@ @Mixin(EffectInstance.class) public class EffectInstanceMixin { - @Inject( - at = @At("RETURN"), - method = "getIsPotionDurationMax", + @Inject(at = @At("RETURN"), + method = "isNoCounter", cancellable = true ) private void getIsFeruchemyEffect(CallbackInfoReturnable cir) { - if (getPotion() instanceof FeruchemyEffectBase) + if (getEffect() instanceof FeruchemyEffectBase) { cir.setReturnValue(true); } } + @Shadow - public Effect getPotion() { + public Effect getEffect() { throw new IllegalStateException("Mixin failed to shadow getPotion()"); } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 4152b48a1..25fc756f1 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -31,7 +31,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) return; } - PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getRenderViewEntity(); + PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getCameraEntity(); LivingEntity target = (LivingEntity) e; SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> @@ -70,7 +70,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) //then close out - if (clientPlayer != null && clientPlayer.getDistance(target) < range) + if (clientPlayer != null && clientPlayer.distanceTo(target) < range) { cir.setReturnValue(true); } diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index a6ef806aa..a77fca9f9 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -17,25 +17,25 @@ @Mixin(GameRenderer.class) public class GameRendererMixin { - @Inject(at = @At("RETURN"), method = "getNightVisionBrightness(Lnet/minecraft/entity/LivingEntity;F)F", cancellable = true) + @Inject(at = @At("RETURN"), method = "getNightVisionScale(Lnet/minecraft/entity/LivingEntity;F)F", cancellable = true) private static void removeNightVisionFlash(LivingEntity livingEntity, float f, CallbackInfoReturnable info) { - float i = livingEntity.getActivePotionEffect(Effects.NIGHT_VISION).getDuration(); + float i = livingEntity.getEffect(Effects.NIGHT_VISION).getDuration(); info.setReturnValue(i > 0 ? 1 : i); } @Inject( at = @At("RETURN"), - method = "getFOVModifier", + method = "getFov", cancellable = true ) private void getZoomedFov(ActiveRenderInfo activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) { double fov = info.getReturnValue(); - PlayerEntity player = (PlayerEntity)Minecraft.getInstance().getRenderViewEntity(); - EffectInstance tinTapEffect = player.getActivePotionEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); - EffectInstance tinStoreEffect = player.getActivePotionEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); + PlayerEntity player = (PlayerEntity)Minecraft.getInstance().getCameraEntity(); + EffectInstance tinTapEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); + EffectInstance tinStoreEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); if (tinTapEffect != null && tinTapEffect.getDuration() > 0) { int amplifier = tinTapEffect.getAmplifier(); diff --git a/src/main/java/leaf/cosmere/network/Network.java b/src/main/java/leaf/cosmere/network/Network.java index 9fa687ef1..db080b20f 100644 --- a/src/main/java/leaf/cosmere/network/Network.java +++ b/src/main/java/leaf/cosmere/network/Network.java @@ -71,7 +71,7 @@ public static void sendPacketToAll(Object packet) public static SUpdateTileEntityPacket createTEUpdatePacket(TileEntity tile) { - return new SUpdateTileEntityPacket(tile.getPos(), -1, tile.getUpdateTag()); + return new SUpdateTileEntityPacket(tile.getBlockPos(), -1, tile.getUpdateTag()); } public static void sendToAllAround(Object mes, RegistryKey dim, BlockPos pos, int radius) @@ -81,14 +81,14 @@ public static void sendToAllAround(Object mes, RegistryKey dim, BlockPos public static void sendToAllInWorld(Object mes, ServerWorld world) { - NETWORK_CHANNEL.send(PacketDistributor.DIMENSION.with(world::getDimensionKey), mes); + NETWORK_CHANNEL.send(PacketDistributor.DIMENSION.with(world::dimension), mes); } public static void sendToTrackingTE(Object mes, TileEntity te) { - if (te != null && !te.getWorld().isRemote) + if (te != null && !te.getLevel().isClientSide) { - NETWORK_CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> te.getWorld().getChunkAt(te.getPos())), mes); + NETWORK_CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> te.getLevel().getChunkAt(te.getBlockPos())), mes); } } } diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index 639b50628..ad0762006 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -32,7 +32,7 @@ public static void handle(ChangeManifestationModeMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { TextComponent manifestationText; int newMode; diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java index c5d2d6436..47bc61805 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java @@ -30,7 +30,7 @@ public static void handle(ChangeSelectedManifestationMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { TextComponent manifestationText; String manifestation; @@ -39,7 +39,7 @@ public static void handle(ChangeSelectedManifestationMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { TextComponent manifestationText= POWER_INACTIVE; cap.deactivateManifestations(); - sender.sendMessage(manifestationText, Util.DUMMY_UUID); + sender.sendMessage(manifestationText, Util.NIL_UUID); cap.syncToClients(null); })); context.setPacketHandled(true); diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java index 44c6b0bbf..bf7d6edeb 100644 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java @@ -32,13 +32,13 @@ public static void handle(DeactivateCurrentManifestationsMessage message, Suppli NetworkEvent.Context context = ctx.get(); ServerPlayerEntity sender = context.getSender(); MinecraftServer server = sender.getServer(); - server.deferTask(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { TextComponent manifestationText= POWER_INACTIVE; cap.deactivateManifestations(); - sender.sendMessage(manifestationText, Util.DUMMY_UUID); + sender.sendMessage(manifestationText, Util.NIL_UUID); cap.syncToClients(null); })); context.setPacketHandled(true); diff --git a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java index d75d79ebc..fdaffece9 100644 --- a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java @@ -28,7 +28,7 @@ public static void handle(SetSelectedManifestationMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { cap.setSelectedManifestation(message.manifestation); cap.syncToClients(null); @@ -40,12 +40,12 @@ public static void handle(SetSelectedManifestationMessage message, Supplier cont) { cont.get().enqueueWork(() -> { - Entity result = Minecraft.getInstance().world.getEntityByID(mes.id); + Entity result = Minecraft.getInstance().level.getEntity(mes.id); if (result != null) { result.getCapability(Capabilities.SPIRITWEB_CAPABILITY).ifPresent(cap -> cap.deserializeNBT(mes.data)); diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java index c712974c8..00f62e5fd 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java @@ -30,12 +30,12 @@ public SyncPushPullMessage(CompoundNBT data) public static void encode(SyncPushPullMessage mes, PacketBuffer buf) { - buf.writeCompoundTag(mes.data); + buf.writeNbt(mes.data); } public static SyncPushPullMessage decode(PacketBuffer buf) { - return new SyncPushPullMessage(buf.readCompoundTag()); + return new SyncPushPullMessage(buf.readNbt()); } public static void handle(SyncPushPullMessage mes, Supplier cont) @@ -44,7 +44,7 @@ public static void handle(SyncPushPullMessage mes, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> { SpiritwebCapability spiritweb = (SpiritwebCapability) cap; diff --git a/src/main/java/leaf/cosmere/properties/PropTypes.java b/src/main/java/leaf/cosmere/properties/PropTypes.java index 6655336af..112323150 100644 --- a/src/main/java/leaf/cosmere/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/properties/PropTypes.java @@ -16,27 +16,27 @@ public class PropTypes { public static class Blocks { - public static final Supplier EXAMPLE = () -> Block.Properties.create(Material.GLASS).hardnessAndResistance(2.0F, 6.0F).harvestLevel(0).harvestTool(ToolType.PICKAXE); + public static final Supplier EXAMPLE = () -> Block.Properties.of(Material.GLASS).strength(2.0F, 6.0F).harvestLevel(0).harvestTool(ToolType.PICKAXE); - public static final Supplier METAL = () -> Block.Properties.create(Material.IRON).hardnessAndResistance(2.0F, 6.0F).harvestLevel(1).harvestTool(ToolType.PICKAXE); + public static final Supplier METAL = () -> Block.Properties.of(Material.METAL).strength(2.0F, 6.0F).harvestLevel(1).harvestTool(ToolType.PICKAXE); } public static class Items { public static final Supplier SHARDBLADE = () -> new Item.Properties() - .group(CosmereItemGroups.ITEMS) - .maxStackSize(1) - .defaultMaxDamage(0) - .maxDamage(0) + .tab(CosmereItemGroups.ITEMS) + .stacksTo(1) + .defaultDurability(0) + .durability(0) .setNoRepair() .rarity(Rarity.EPIC); - public static final Supplier ONE = () -> new Item.Properties().group(CosmereItemGroups.ITEMS).maxStackSize(1); + public static final Supplier ONE = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(1); - public static final Supplier SIXTEEN = () -> new Item.Properties().group(CosmereItemGroups.ITEMS).maxStackSize(16); + public static final Supplier SIXTEEN = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(16); - public static final Supplier SIXTY_FOUR = () -> new Item.Properties().group(CosmereItemGroups.ITEMS).maxStackSize(64); + public static final Supplier SIXTY_FOUR = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(64); } } diff --git a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java index ec2e07866..f5e51aebb 100644 --- a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java +++ b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java @@ -26,7 +26,7 @@ // where you just make gross things public class VialMixingRecipe extends SpecialRecipe { - private static final Ingredient INGREDIENT_BOTTLE = Ingredient.fromItems(Items.GLASS_BOTTLE, ItemsRegistry.METAL_VIAL.get()); + private static final Ingredient INGREDIENT_BOTTLE = Ingredient.of(Items.GLASS_BOTTLE, ItemsRegistry.METAL_VIAL.get()); /* private static final Ingredient INGREDIENT_NUGGET = Ingredient.fromItems( ItemsRegistry.METAL_NUGGETS .values() @@ -46,11 +46,11 @@ public boolean matches(CraftingInventory inv, World world) { boolean hasNugget = false; ItemStack bottle = null; - final Ingredient INGREDIENT_NUGGETS = Ingredient.fromTag(Tags.Items.NUGGETS); + final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); - for (int i = 0; i < inv.getSizeInventory(); i++) + for (int i = 0; i < inv.getContainerSize(); i++) { - ItemStack stack = inv.getStackInSlot(i); + ItemStack stack = inv.getItem(i); if (stack.isEmpty()) { continue; @@ -93,15 +93,15 @@ else if (INGREDIENT_NUGGETS.test(stack)) @Override @Nonnull - public ItemStack getCraftingResult(CraftingInventory inv) + public ItemStack assemble(CraftingInventory inv) { MetalVialItem metalVial = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); - final Ingredient INGREDIENT_NUGGETS = Ingredient.fromTag(Tags.Items.NUGGETS); + final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); ItemStack itemstack = new ItemStack(metalVial); - for (int i = 0; i < inv.getSizeInventory(); ++i) + for (int i = 0; i < inv.getContainerSize(); ++i) { - ItemStack stackInSlot = inv.getStackInSlot(i); + ItemStack stackInSlot = inv.getItem(i); if (stackInSlot.isEmpty()) { continue; @@ -129,7 +129,7 @@ else if (stackInSlot.getItem() == Items.GOLD_NUGGET) } @Override - public boolean canFit(int width, int height) + public boolean canCraftInDimensions(int width, int height) { //if you can fit 2 items, the bottle and a metal, you can combine return width * height > 1; diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 8f2b270a9..ecb7f2046 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -44,7 +44,7 @@ public static Map> makeAttributeMap() Cosmere.MODID + "." + mistingNamePath.toLowerCase(), 0, 0, - 1000)).setShouldWatch(true) + 1000)).setSyncable(true) ); RegistryObject ferringAttribute = ATTRIBUTES.register( @@ -53,7 +53,7 @@ public static Map> makeAttributeMap() Cosmere.MODID + "." + ferringNamePath.toLowerCase(), 0, 0, - 1000)).setShouldWatch(true) + 1000)).setSyncable(true) ); attributeModifiers.put(mistingNamePath, mistingAttribute); diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index 4eca6f7dc..a87b42a71 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -58,7 +58,7 @@ public class BlocksRegistry private static RegistryObject register(String id, Supplier blockSupplier, Rarity itemRarity) { RegistryObject registryObject = BLOCKS.register(id, blockSupplier); - ItemsRegistry.ITEMS.register(id, () -> new BlockItem(registryObject.get(), new Item.Properties().group(CosmereItemGroups.BLOCKS).rarity(itemRarity))); + ItemsRegistry.ITEMS.register(id, () -> new BlockItem(registryObject.get(), new Item.Properties().tab(CosmereItemGroups.BLOCKS).rarity(itemRarity))); return registryObject; diff --git a/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java b/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java index f295b0e21..19e4c849f 100644 --- a/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java +++ b/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java @@ -26,7 +26,7 @@ public ResourceLocation read(PacketBuffer buf) } @Override - public ResourceLocation copyValue(ResourceLocation value) + public ResourceLocation copy(ResourceLocation value) { return value; } diff --git a/src/main/java/leaf/cosmere/registry/EntityRegistry.java b/src/main/java/leaf/cosmere/registry/EntityRegistry.java index 3952e39e2..e30bf7875 100644 --- a/src/main/java/leaf/cosmere/registry/EntityRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EntityRegistry.java @@ -16,14 +16,14 @@ public class EntityRegistry ENTITIES.register( "spren_flame", () -> EntityType.Builder - .create(SprenFlameEntity::new, EntityClassification.CREATURE) - .size(.5f, .5f) + .of(SprenFlameEntity::new, EntityClassification.CREATURE) + .sized(.5f, .5f) .setShouldReceiveVelocityUpdates(false) .build("spren_flame")); public static void PrepareEntityAttributes() { - GlobalEntityTypeAttributes.put(SPREN_FIRE.get(), SprenFlameEntity.prepareAttributes().create()); + GlobalEntityTypeAttributes.put(SPREN_FIRE.get(), SprenFlameEntity.prepareAttributes().build()); } } diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index b16ca8a28..c740d13d0 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -50,12 +50,12 @@ public static class ConfiguredFeatures .collect(Collectors.toMap( Function.identity(), metalType -> - FeatureRegistry.ORE_FEATURES.get(metalType).get().withConfiguration(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.BASE_STONE_OVERWORLD, - BlocksRegistry.METAL_ORE.get(metalType).get().getDefaultState(), 5)) //vein size of 5 - .withPlacement( - Placement.RANGE.configure(new TopSolidRangeConfig(6, 0, 64)) + FeatureRegistry.ORE_FEATURES.get(metalType).get().configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, + BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState(), 5)) //vein size of 5 + .decorated( + Placement.RANGE.configured(new TopSolidRangeConfig(6, 0, 64)) .chance(5))//Config.COMMON_SPEC.oreSpawnChance.get(metalType).get()))//todo config vein size based on ore type - .square() + .squared() .count(5) )); } diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 1b814914e..9d5a47f54 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -51,8 +51,8 @@ public class ItemsRegistry public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); - public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().group(CosmereItemGroups.ITEMS)))); - public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().group(CosmereItemGroups.ITEMS)))); + public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); + public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); //Mass items gen diff --git a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java index f99258ce7..204af9f56 100644 --- a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java +++ b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java @@ -46,6 +46,6 @@ public static void register(FMLClientSetupEvent event) public static KeyBinding createKeybinding(String description, KeyModifier keyModifier, int keyCode, String category) { - return new KeyBinding(description, KeyConflictContext.DEFAULT, keyModifier, InputMappings.Type.KEYSYM.getOrMakeInput(keyCode), category); + return new KeyBinding(description, KeyConflictContext.DEFAULT, keyModifier, InputMappings.Type.KEYSYM.getOrCreate(keyCode), category); } } diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 94daf803f..da41e8c73 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -91,18 +91,18 @@ public static class Items private static ITag.INamedTag itemTag(String name) { - return ItemTags.makeWrapperTag(prefix(name).toString()); + return ItemTags.bind(prefix(name).toString()); } private static ITag.INamedTag forgeItemTag(String name) { - return getOrRegister(ItemTags.getAllTags(), loc -> ItemTags.makeWrapperTag(loc.toString()), new ResourceLocation("forge", name)); + return getOrRegister(ItemTags.getWrappers(), loc -> ItemTags.bind(loc.toString()), new ResourceLocation("forge", name)); } public static ITag.INamedTag makeItem(String domain, String path) { - return ItemTags.makeWrapperTag(new ResourceLocation(domain, path).toString()); + return ItemTags.bind(new ResourceLocation(domain, path).toString()); } } @@ -112,7 +112,7 @@ public static class Blocks public static ITag.INamedTag makeBlock(String domain, String path) { - return BlockTags.makeWrapperTag(new ResourceLocation(domain, path).toString()); + return BlockTags.bind(new ResourceLocation(domain, path).toString()); } public static ITag.INamedTag DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); @@ -126,7 +126,7 @@ public static ITag.INamedTag makeBlock(String domain, String path) private static ITag.INamedTag forgeTag(String name) { - return getOrRegister(BlockTags.getAllTags(), loc -> BlockTags.makeWrapperTag(loc.toString()), new ResourceLocation("forge", name)); + return getOrRegister(BlockTags.getWrappers(), loc -> BlockTags.bind(loc.toString()), new ResourceLocation("forge", name)); } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java index b98a7570c..288dd60a9 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java @@ -22,7 +22,7 @@ public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBui { map.entrySet().forEach(entry -> { - builder.suggest(entry.getKey().toString(), new TranslationTextComponent(entry.getValue()).modifyStyle((style) -> style.setFormatting(TextFormatting.GREEN))); + builder.suggest(entry.getKey().toString(), new TranslationTextComponent(entry.getValue()).withStyle((style) -> style.withColor(TextFormatting.GREEN))); }); } builder.buildFuture(); diff --git a/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java index dc2efe70b..470da6a3a 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java @@ -83,7 +83,7 @@ public static void setString(CompoundNBT compoundTag, String tag, String s) public static void setUuid(CompoundNBT compoundTag, String tag, UUID value) { - compoundTag.putUniqueId(tag, value); + compoundTag.putUUID(tag, value); } public static void setList(CompoundNBT compoundTag, String tag, ListNBT list) @@ -168,7 +168,7 @@ public static String getString(CompoundNBT compoundTag, String tag, String defau public static UUID getUuid(CompoundNBT compoundTag, String tag) { return verifyExistance(compoundTag, tag + "Most") && verifyExistance(compoundTag, tag + "Least") - ? compoundTag.getUniqueId(tag) : null; + ? compoundTag.getUUID(tag) : null; } public static ListNBT getList(CompoundNBT compoundTag, String tag, int objtype, boolean nullifyOnFail) @@ -205,7 +205,7 @@ private static boolean matchTagCompound(CompoundNBT template, CompoundNBT target return false; } - for (String key : template.keySet()) + for (String key : template.getAllKeys()) { if (!matchTag(template.get(key), target.get(key))) { diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index 4ab3354fe..d87481201 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -17,10 +17,10 @@ public class EntityHelper { public static List getLivingEntitiesInRange(LivingEntity selfEntity, int range, boolean includeSelf) { - AxisAlignedBB areaOfEffect = new AxisAlignedBB(selfEntity.getPosition()); - areaOfEffect = areaOfEffect.grow(range, range, range); + AxisAlignedBB areaOfEffect = new AxisAlignedBB(selfEntity.blockPosition()); + areaOfEffect = areaOfEffect.inflate(range, range, range); - List entitiesFound = selfEntity.world.getEntitiesWithinAABB(LivingEntity.class, areaOfEffect); + List entitiesFound = selfEntity.level.getEntitiesOfClass(LivingEntity.class, areaOfEffect); if (!includeSelf) { @@ -34,10 +34,10 @@ public static List getLivingEntitiesInRange(LivingEntity selfEntit public static List getEntitiesInRange(Entity entity, int range, boolean includeSelf) { - AxisAlignedBB areaOfEffect = new AxisAlignedBB(entity.getPosition()); - areaOfEffect = areaOfEffect.expand(range, range, range); + AxisAlignedBB areaOfEffect = new AxisAlignedBB(entity.blockPosition()); + areaOfEffect = areaOfEffect.expandTowards(range, range, range); - List entitiesFound = entity.world.getEntitiesWithinAABB(Entity.class, areaOfEffect); + List entitiesFound = entity.level.getEntitiesOfClass(Entity.class, areaOfEffect); if (!includeSelf && entitiesFound.contains(entity)) { diff --git a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java index 5a38ead38..8a232ab97 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java @@ -13,7 +13,7 @@ public class PlayerHelper { public static String getPlayerName(UUID id, MinecraftServer server) { - GameProfile profileByUUID = server.getPlayerProfileCache().getProfileByUUID(id); + GameProfile profileByUUID = server.getProfileCache().get(id); return profileByUUID != null ? profileByUUID.getName() : "OFFLINE Player"; } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java index 28a316042..48fa02e7e 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java @@ -2,14 +2,6 @@ * File created ~ 24 - 4 - 2021 ~ Leaf */ -/* - * This class is distributed as part of the Cosmere Mod. - * Get the Source Code in github: - * https://github.com/Vazkii/Cosmere - * - * Cosmere is Open Source and distributed under the - * Cosmere License: http://Cosmeremod.net/license.php - */ package leaf.cosmere.utils.helpers; import leaf.cosmere.Cosmere; diff --git a/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java b/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java index 5c90934a7..61b1be414 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java @@ -85,7 +85,7 @@ public static void setString(ItemStack stack, String tag, String s) public static void setUuid(ItemStack stack, String tag, UUID value) { - stack.getOrCreateTag().putUniqueId(tag, value); + stack.getOrCreateTag().putUUID(tag, value); } public static void setList(ItemStack stack, String tag, ListNBT list) @@ -170,7 +170,7 @@ public static String getString(ItemStack stack, String tag, String defaultExpect public static UUID getUuid(ItemStack stack, String tag) { return verifyExistance(stack, tag) - ? stack.getOrCreateTag().getUniqueId(tag) + ? stack.getOrCreateTag().getUUID(tag) : null; } @@ -186,7 +186,7 @@ public static ListNBT getList(ItemStack stack, String tag, int objtype, boolean */ public static JsonObject serializeStack(ItemStack stack) { - CompoundNBT nbt = stack.write(new CompoundNBT()); + CompoundNBT nbt = stack.save(new CompoundNBT()); byte c = nbt.getByte("Count"); if (c != 1) { @@ -228,7 +228,7 @@ private static boolean matchTagCompound(CompoundNBT template, CompoundNBT target return false; } - for (String key : template.keySet()) + for (String key : template.getAllKeys()) { if (!matchTag(template.get(key), target.get(key))) { diff --git a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java index 6a97b072a..49647ad0c 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java @@ -32,10 +32,10 @@ public static TextComponent createTextComponentWithTip(String text, String toolt { //Always surround tool tip items with brackets TextComponent textComponent = new StringTextComponent("[" + text + "]"); - textComponent.modifyStyle(style -> + textComponent.withStyle(style -> { - return style.setFormatting(TextFormatting.GREEN)//color tool tip items green - .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new StringTextComponent(tooltipText))).setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText)); + return style.withColor(TextFormatting.GREEN)//color tool tip items green + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new StringTextComponent(tooltipText))).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText)); }); return textComponent; } @@ -43,10 +43,10 @@ public static TextComponent createTextComponentWithTip(String text, String toolt public static TextComponent createTextWithTooltip(TranslationTextComponent translation, TranslationTextComponent description) { //Always surround tool tip items with brackets - translation.modifyStyle(style -> + translation.withStyle(style -> { - return style.setFormatting(TextFormatting.GREEN)//color tool tip items green - .setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)).setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, translation.getKey())); + return style.withColor(TextFormatting.GREEN)//color tool tip items green + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, translation.getKey())); }); return translation; } diff --git a/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java b/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java index e13b4482f..c9ba1dd7b 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java @@ -24,7 +24,7 @@ public static Vector3i Normalize(Vector3i vec) } else { - vec = Vector3i.NULL_VECTOR; + vec = Vector3i.ZERO; } return vec; @@ -68,9 +68,9 @@ public static Vector3d moveTowards(Vector3d current, Vector3i target, float maxD // Moves a point /current/ in a straight line towards a /target/ point. public static Vector3d getDirection(Vector3d target, Vector3d current, float multiplicationFactor) { - double toVector_x = target.getX() - current.x; - double toVector_y = target.getY() - current.y; - double toVector_z = target.getZ() - current.z; + double toVector_x = target.x() - current.x; + double toVector_y = target.y() - current.y; + double toVector_z = target.z() - current.z; return new Vector3d( toVector_x * multiplicationFactor, diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 6fa057afc..75de0e96a 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -7,7 +7,7 @@ version="${version}" #mandatory displayName="The Cosmere" #mandatory logoFile="cosmere_icon.png" credits="Special thanks to 50ap5ud5, Suff, Spectre0987, Vazkii, the Chisels and Bits team and so many more. \nThey all either helped me (directly or indirectly via their open source repos) understand working with the minecraft and the forge API better <3\nSeriously. Thank you!" #optional -authors="Leafworthy" #optional +authors="Leaf Reynolds" #optional description=''' Bringing The Cosmere to Minecraft! ''' diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 77966984f..4e1612a59 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -2,6 +2,6 @@ "pack": { "description": "Cosmere Mod Resources", "pack_format": 6, - "_comment": "A pack_format of 6 requires json lang files and some texture changes from 1.16.2. Note: we require v6 pack meta for all mods." + "_comment": "Default Resources for Cosmere" } } From 9c33841f6220f935cc176a649aa93f3672ba0012 Mon Sep 17 00:00:00 2001 From: leafreynolds <80794784+leafreynolds@users.noreply.github.com> Date: Sun, 6 Mar 2022 13:12:42 +1300 Subject: [PATCH 0026/1090] Localisation changes to use metal names rather than power names. Charge maximums to be 1000 per ingot. --- build.gradle | 106 +++++++++++------- gradle.properties | 16 +-- gradle/wrapper/gradle-wrapper.jar | Bin 54413 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- src/main/generated/.cache/cache | 38 +++---- .../generated/assets/cosmere/lang/en_us.json | 68 +++++------ .../data/cosmere/recipes/aluminum_spike.json | 4 +- .../data/cosmere/recipes/atium_spike.json | 4 +- .../data/cosmere/recipes/bendalloy_spike.json | 4 +- .../data/cosmere/recipes/brass_spike.json | 4 +- .../data/cosmere/recipes/bronze_spike.json | 4 +- .../data/cosmere/recipes/cadmium_spike.json | 4 +- .../data/cosmere/recipes/chromium_spike.json | 4 +- .../data/cosmere/recipes/copper_spike.json | 4 +- .../data/cosmere/recipes/duralumin_spike.json | 4 +- .../data/cosmere/recipes/electrum_spike.json | 4 +- .../data/cosmere/recipes/gold_spike.json | 4 +- .../data/cosmere/recipes/iron_spike.json | 4 +- .../data/cosmere/recipes/lerasium_spike.json | 4 +- .../data/cosmere/recipes/nicrosil_spike.json | 4 +- .../data/cosmere/recipes/pewter_spike.json | 4 +- .../data/cosmere/recipes/steel_spike.json | 4 +- .../data/cosmere/recipes/tin_spike.json | 4 +- .../data/cosmere/recipes/zinc_spike.json | 4 +- .../cap/entity/SpiritwebCapability.java | 15 ++- .../java/leaf/cosmere/charge/IChargeable.java | 2 +- .../java/leaf/cosmere/datagen/RecipeGen.java | 2 +- .../cosmere/datagen/language/EngLangGen.java | 13 ++- .../items/curio/BraceletMetalmind.java | 16 +-- .../items/curio/NecklaceMetalmind.java | 2 +- .../cosmere/items/curio/RingMetalmind.java | 4 +- .../cosmere/mixin/EffectInstanceMixin.java | 5 +- .../java/leaf/cosmere/mixin/EntityMixin.java | 4 +- .../leaf/cosmere/mixin/GameRendererMixin.java | 8 +- 34 files changed, 198 insertions(+), 175 deletions(-) diff --git a/build.gradle b/build.gradle index 7cdb35a0d..e77f4374d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,47 +1,30 @@ buildscript { repositories { - maven { url = 'https://maven.minecraftforge.net/' } + maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://repo.spongepowered.org/repository/maven-public' } - jcenter() mavenCentral() } dependencies { - classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '4.1.+', changing: true + classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT' } } apply plugin: 'net.minecraftforge.gradle' +// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. apply plugin: 'org.spongepowered.mixin' apply plugin: 'eclipse' apply plugin: 'maven-publish' + ext.configFile = file('gradle.properties') ext.config = parseConfig(configFile) -version = "${forge_version}-${mod_version}-b${build_number}" +version = "${forge_version}-b${build_number}" group = 'leaf.cosmere' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "${project.jar_name}" -// Process resources on build -processResources { - // This will ensure that this task is redone when the versions change. - inputs.property 'version', project.version - - // Replace stuff in mods.toml, nothing else - from(sourceSets.main.resources.srcDirs) { - include 'META-INF/mods.toml' - - // Replace version - expand 'version': project.version - } - - // Copy everything else except the mods.toml - from(sourceSets.main.resources.srcDirs) { - exclude 'META-INF/mods.toml' - } -} - -sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '1.8' // Need this here so eclipse task generates correctly. +java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. +println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) // Include resources generated by data generators. sourceSets { @@ -49,7 +32,24 @@ sourceSets { } minecraft { - mappings channel: "${mappings_type}", version: "${mappings_version}" + // The mappings can be changed at any time, and must be in the following format. + // Channel: Version: + // snapshot YYYYMMDD Snapshot are built nightly. + // stable # Stables are built at the discretion of the MCP team. + // official MCVersion Official field/method names from Mojang mapping files + // + // You must be aware of the Mojang license when using the 'official' mappings. + // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md + // + // Use non-default mappings at your own risk. they may not always work. + // Simply re-run your setup task after changing the mappings to update your workspace. + mappings channel: 'official', version: '1.16.5' + // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. + + // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + + // Default run configurations. + // These can be tweaked, removed, or duplicated as needed. runs { client { property 'mixin.env.remapRefMap', 'true' @@ -58,6 +58,16 @@ minecraft { workingDirectory project.file('run') arg "-mixin.config=cosmere.mixins.json" + // Recommended logging data for a userdev environment + // The markers can be changed as needed. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { @@ -71,6 +81,16 @@ minecraft { properties 'mixin.env.disableRefMap': 'true' workingDirectory project.file('run') + // Recommended logging data for a userdev environment + // The markers can be changed as needed. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' + + // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { @@ -85,20 +105,27 @@ minecraft { workingDirectory project.file('run') // Recommended logging data for a userdev environment - property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP' + // The markers can be changed as needed. + // "SCAN": For mods scan. + // "REGISTRIES": For firing of registry events. + // "REGISTRYDUMP": For getting the contents of all registries. + property 'forge.logging.markers', 'REGISTRIES' // Recommended logging level for the console + // You can set various levels here. + // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' + // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. args '--mod', 'cosmere', '--all', '--output', file('src/main/generated/'), '--existing', file('src/main/resources/') - mods { cosmere { source sourceSets.main } } } + } accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') } @@ -134,6 +161,9 @@ repositories { } dependencies { + // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed + // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. + // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft "net.minecraftforge:forge:${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.2:processor' @@ -150,8 +180,9 @@ dependencies { compileOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}:api") runtimeOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}") - //modname-modid-fileid? + //modname-modid:fileid? implementation fg.deobf("curse.maven:appleskin-248787:3035787") + implementation fg.deobf("curse.maven:journeymap-32274:3397059") //implementation fg.deobf("curse.maven:ctm-267602:2642375") } @@ -167,6 +198,7 @@ jar { "Implementation-Vendor" : "cosmere", "Implementation-Timestamp": new Date().format("yyyy-MM-dd'T'HH:mm:ssZ"), "MixinConfigs" : "cosmere.mixins.json" + ]) } } @@ -182,12 +214,6 @@ processResources { } } -/** - * Increments the buildnumber in your config file, and saves it - * Note: The doFirst is important, without it the build number - * will be incremented every time tasks are configured, i.e every - * time gradle is run on this project. - */ task incrementBuildNumber { doFirst { config.build_number = (config.build_number.toString().toInteger()) + 1 @@ -209,16 +235,16 @@ def parseConfig(File config) { } } -def reobfFile = file("$buildDir/reobfJar/output.jar") -def reobfArtifact = artifacts.add('default', reobfFile) { - type 'jar' - builtBy 'reobfJar' -} +// Example configuration to allow publishing using the maven-publish task +// This is the preferred method to reobfuscate your jar file +jar.finalizedBy('reobfJar') +// However if you are in a multi-project build, dev time needs unobfed jar files, so you can delay the obfuscation until publishing by doing +//publish.dependsOn('reobfJar') publishing { publications { mavenJava(MavenPublication) { - artifact reobfArtifact + artifact jar } } repositories { diff --git a/gradle.properties b/gradle.properties index 2a83c6152..ebfca4ed2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,15 +1,11 @@ # -org.gradle.jvmargs=-Xmx8G +#Tue Feb 01 08:46:10 NZDT 2022 +forge_version=1.16.5-36.2.20 org.gradle.daemon=false -#Sun Dec 05 18:40:30 NZDT 2021 -mappings_version=1.16.5 -forge_version=1.16.5-36.2.0 -mappings_type=official jar_name=Cosmere-Mod -minecraft_version=1.16.5 jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 -curios_version=1.16.5-4.0.5.1 -mod_version=0.3.1 -build_number=19 -patchouli_version=1.16.4-50 +org.gradle.jvmargs=-Xmx8G +curios_version=1.16.5-4.0.6.8 +build_number=20 +patchouli_version=1.16.4-51 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 0d4a9516871afd710a9d84d89e31ba77745607bd..e708b1c023ec8b20f512888fe07c5bd3ff77bb8f 100644 GIT binary patch literal 59203 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

K7UpUK$>l@ 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 E2O(~oYXATM literal 54413 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1c4bcc29e..05679dc3c 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 1acd9566d..9557b3a8a 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -1e583abce6ba49628d55353120e7de49c7f991ff assets/cosmere/lang/en_us.json +f8a4c952cd43c6e32f8a8909e763bbc2fc514b37 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json @@ -570,13 +570,13 @@ be00eb698167172a2e742178b13070b1004f9aec data/cosmere/recipes/aluminum_ingot_fro 754efaff7b6f6cd1841142152843c975f7710056 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 3a86d74e8510fcea791e5569e77dd60684d664cc data/cosmere/recipes/aluminum_necklace_metalmind.json 138b215cec5b9290c80c4383e0b0da73b3269d17 data/cosmere/recipes/aluminum_ring_metalmind.json -6cba329c0d6f37f5bfacd1bc155bcc824b63eeca data/cosmere/recipes/aluminum_spike.json +51115e3d9dd0b28b7f39d042512731113e316033 data/cosmere/recipes/aluminum_spike.json 49dd97cddbc1619421e12a2cab9a8d98f9303390 data/cosmere/recipes/atium_block.json aa47f518bed610096ca6e1dc89610435dbc3c650 data/cosmere/recipes/atium_bracelet_metalmind.json 11185be68cc8a7f32de6dd505386437b6de4022f data/cosmere/recipes/atium_ingot.json dbcc26423850b986ff3d5b45c6e61b3f00bc09f8 data/cosmere/recipes/atium_necklace_metalmind.json 4b1afa09eb20cb25c011df205b78a36aa55a6ff1 data/cosmere/recipes/atium_ring_metalmind.json -77fe9248e60fffb870ba47f23da4992817c2af5c data/cosmere/recipes/atium_spike.json +4df3b639ddef2d9457ecae3e79cccf1b08430804 data/cosmere/recipes/atium_spike.json 0f5a891010d2e0d2ad941a55594aa0773fc04308 data/cosmere/recipes/bendalloy_block.json 22be0cccb52ac7d9cb65c1b2f1971d73a4780e58 data/cosmere/recipes/bendalloy_bracelet_metalmind.json c617841f10dc75eff565b48d112f3a5345b59f7f data/cosmere/recipes/bendalloy_ingot.json @@ -584,7 +584,7 @@ c617841f10dc75eff565b48d112f3a5345b59f7f data/cosmere/recipes/bendalloy_ingot.js 2fd345d0cb812e85762199bd5b2330dab6d0aa79 data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json 7f57ca98369b896f27a458d035c0b9ae2d5b80aa data/cosmere/recipes/bendalloy_necklace_metalmind.json ba2403077f121357f06b467b4f5784a853973e84 data/cosmere/recipes/bendalloy_ring_metalmind.json -545eefa124001a153ed4462aaf91b7596e2edbb0 data/cosmere/recipes/bendalloy_spike.json +c6542411b96f527f3b3054a7bf5afa58c07a5a4f data/cosmere/recipes/bendalloy_spike.json 9bf8af83995c10458e0f0e727818fd92117fbbe3 data/cosmere/recipes/brass_block.json 90c184ec1325c8cf4eab21475c7d6326970996b2 data/cosmere/recipes/brass_bracelet_metalmind.json 82699b618032a685647fa590e95b862ce3a042b8 data/cosmere/recipes/brass_ingot.json @@ -592,7 +592,7 @@ b0ec3895cfa2acafb042f7f12766a86cda6feec7 data/cosmere/recipes/brass_ingot_from_b de8a0756d6b37d912ed661665d00e5f679b9d205 data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json 8346231ea537b83e6db57c2861cfdc5328457451 data/cosmere/recipes/brass_necklace_metalmind.json 18f70cd8a6acdf865b7a854bd3b5a181a6cb3980 data/cosmere/recipes/brass_ring_metalmind.json -f7756125afca95dd2c2f57825bbe99dbec781641 data/cosmere/recipes/brass_spike.json +56fb6837f9635e2df46b355f6fac881fa566a36c data/cosmere/recipes/brass_spike.json 60e029f07a6f84ddb7412ebad965ba0a5d93ad82 data/cosmere/recipes/bronze_block.json e67153a6b09b51b49596049e065904d0ada68cdf data/cosmere/recipes/bronze_bracelet_metalmind.json 88aeeace1efc145a24dc929aced92e0cfeefa425 data/cosmere/recipes/bronze_ingot.json @@ -600,7 +600,7 @@ e67153a6b09b51b49596049e065904d0ada68cdf data/cosmere/recipes/bronze_bracelet_me b26a432587d5ca8c1eadd05ac7f76b2664cd0dd7 data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json 3d8279f909ca1fec7f95b642acdeba6a93b4fe60 data/cosmere/recipes/bronze_necklace_metalmind.json 78f73c622247c0189a5ce48de715ae300ccac2dc data/cosmere/recipes/bronze_ring_metalmind.json -70b5a1bd2fb0921ec74e675c0e9886011692757c data/cosmere/recipes/bronze_spike.json +efc59133c836b8d6e8275fdcbbdac42ae041fa4c data/cosmere/recipes/bronze_spike.json ef46a7076937d0918dc583ea272305154acbed64 data/cosmere/recipes/cadmium_block.json 93fc12b05ce1cd649c49ef006d56bc42b87e1f5f data/cosmere/recipes/cadmium_bracelet_metalmind.json 67f749a1056518de5fcf635fc9a1fcea6e457b36 data/cosmere/recipes/cadmium_ingot.json @@ -610,7 +610,7 @@ e810ac3f78cabf49031645e43ae5231e7ca2020c data/cosmere/recipes/cadmium_ingot_from 82ebd79b178e9fbc05ad7df20c2163e6ffa7f2ea data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json c6b927d3ee8193f27e2b34a095e0d58aaad27cdb data/cosmere/recipes/cadmium_necklace_metalmind.json 1f49da0ddcba9feedaf0ef8519f45b397aa1165f data/cosmere/recipes/cadmium_ring_metalmind.json -6f4b77d96841dec59d74546a8bf1a57646ee035a data/cosmere/recipes/cadmium_spike.json +7350b0adc4e3c504fc982519ea130e15e5991a71 data/cosmere/recipes/cadmium_spike.json 92f1920a4776a16b9fcd37a014b25471c048c3e7 data/cosmere/recipes/chromium_block.json 084aec2261c6609879e48fb8f26f92be2a8a9ee9 data/cosmere/recipes/chromium_bracelet_metalmind.json 4d1657dec440ba525cf5a36ea39d446378770ad6 data/cosmere/recipes/chromium_ingot.json @@ -620,7 +620,7 @@ b4a34dd8e63e4abf15832ef75979b196c35c3a8f data/cosmere/recipes/chromium_ingot_fro 3403bc47f964005763bd3487f05c1a1dd41f6b4e data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json 0c986fe8027aff177f4bfb0ac4536963407aebb2 data/cosmere/recipes/chromium_necklace_metalmind.json b0ebcfa3257d09d0fb98eb1fea7d314cb5e6dedb data/cosmere/recipes/chromium_ring_metalmind.json -e5385615bbd03bb63a0ad04e5483aee17ee0bd7e data/cosmere/recipes/chromium_spike.json +c839be2e9e58afcf5efe917f46203fc021f5066b data/cosmere/recipes/chromium_spike.json 4ef66d6416a73b836aec8febc167a7e2cc26fcf0 data/cosmere/recipes/conversions/aluminum_block_deconstruct.json 6985224580e7e397afe4f27ef235ae4ff8cee8e1 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json b0de1869585c65cf8f93d1219142f8ddd1d78200 data/cosmere/recipes/conversions/atium_block_deconstruct.json @@ -674,7 +674,7 @@ ef2ffbd67afba4e5b66c4ab468868041f2ac027f data/cosmere/recipes/copper_ingot_from_ f1a312d31fdcbe6f99a132e4a980051559448756 data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json 2148db355285f3c5c75c412cdfbbf3aa49045986 data/cosmere/recipes/copper_necklace_metalmind.json 471ddafd08611bd63733294974c863273b1ff2b1 data/cosmere/recipes/copper_ring_metalmind.json -cf3ab884b2de5d9432909e8cdacf6227a4b23c80 data/cosmere/recipes/copper_spike.json +78ac5ff0d84062b8f26ec6da3a6a37e7392f9ec0 data/cosmere/recipes/copper_spike.json dbd24fe40cf4dc7d85613cbaa8798e18184d74e0 data/cosmere/recipes/duralumin_block.json 65364f5f43fa6376eccda09df807c8a7e91fc14c data/cosmere/recipes/duralumin_bracelet_metalmind.json 1d281fa63a9250aa9ec4cd9178aa3c2d7a46a28a data/cosmere/recipes/duralumin_ingot.json @@ -682,7 +682,7 @@ dbd24fe40cf4dc7d85613cbaa8798e18184d74e0 data/cosmere/recipes/duralumin_block.js 467f79f6c6bfc39b128a875040f5695e32bdd435 data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json 8cb274a1fe8844c5a05c81c551b4c232817af9ec data/cosmere/recipes/duralumin_necklace_metalmind.json 6f47a13e61da17937480bf516eeab6158fe3786f data/cosmere/recipes/duralumin_ring_metalmind.json -5cae5ebf8cf2613617d8fd47a6f8a9dde8fa01d3 data/cosmere/recipes/duralumin_spike.json +627e8ae286d9e7eacffdb477467069f28325c031 data/cosmere/recipes/duralumin_spike.json 06ccc61ca954781d90f1732d2efae411a42891ad data/cosmere/recipes/electrum_block.json 65f7c27630360ee9fbb1293fb25a6c8abddeb5b1 data/cosmere/recipes/electrum_bracelet_metalmind.json 1d225134e99f1ba1d55307274a2698730d5aa0bb data/cosmere/recipes/electrum_ingot.json @@ -690,11 +690,11 @@ e8101b64538c95fa4570bfa614b0820ee60287e3 data/cosmere/recipes/electrum_ingot_fro 4d302d78c042225e48013698fc031e32e91cbb25 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 07256e66c53e3c57c223787462f76e0cb62c6e1a data/cosmere/recipes/electrum_necklace_metalmind.json 8b6ad6a4e34e53c8f00fc0ac082ecd0f2ad6266a data/cosmere/recipes/electrum_ring_metalmind.json -e02bdb31286ec9a621d267076f1d8fbe541a5def data/cosmere/recipes/electrum_spike.json +7e71c2de67db8c8e7911a1e64bb2f37f25e7c16a data/cosmere/recipes/electrum_spike.json 10ab2858592858a0bf8de5980795efad78860fca data/cosmere/recipes/gold_bracelet_metalmind.json 24c82e30b8e63e4298784a03802a6a4b3df44a77 data/cosmere/recipes/gold_necklace_metalmind.json ccee24004af723466af30fba536ba4c5a39a465c data/cosmere/recipes/gold_ring_metalmind.json -5a83cae9d62d858dae1773ecb04e71c5fc892faf data/cosmere/recipes/gold_spike.json +5be8017a8ee301cab6b4d89bc27baee59d295416 data/cosmere/recipes/gold_spike.json 94c9a6e0f165ae28950d5b14f8a071efee6bd037 data/cosmere/recipes/guide_from_blasting_iron_spike.json d299ec1f281d95d1d52aba0e788bbbf811f03191 data/cosmere/recipes/guide_from_smelting_iron_spike.json 25c90d0707fbd67eee203168189dd21952a1c5cf data/cosmere/recipes/harmonium_block.json @@ -702,7 +702,7 @@ d6a1ffa255ea739cb958e1842127a51dba6819bd data/cosmere/recipes/harmonium_ingot.js b1911459e088b811408604ab74c1ffa7fe491063 data/cosmere/recipes/iron_bracelet_metalmind.json 9792d4c3696337dfac6d006b0b32d50ec42b444a data/cosmere/recipes/iron_necklace_metalmind.json 5c9fccf34be586bbdcdff265da73da391ab55cf4 data/cosmere/recipes/iron_ring_metalmind.json -a1a101b751cd28e3b945142cdcd03dbd960c44f6 data/cosmere/recipes/iron_spike.json +d6380c305bdac68e928acd91332802029db605f8 data/cosmere/recipes/iron_spike.json 0b366993c33a24e8be3037ef2f3808e21cab3726 data/cosmere/recipes/lead_block.json 8b776d63c3f466a9f159f5557144b7df76ee4332 data/cosmere/recipes/lead_ingot.json f21e354195a4fe37e474e574db709be9079d45b4 data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json @@ -713,7 +713,7 @@ b8f3198b4be02f2e8f527a889b8fb8400f7bde94 data/cosmere/recipes/lerasatium_block.j 9c4f793d8b11d5325374c1b49c3d2faa6c956c70 data/cosmere/recipes/lerasatium_ingot.json dd2ff61f372ff445523089553ac376a09c44b740 data/cosmere/recipes/lerasium_block.json 7410b8a0ad886ff31a5642e3be908a6b1deb1261 data/cosmere/recipes/lerasium_ingot.json -5bd239ddfe87f1ce25bdf1b604683adba453d000 data/cosmere/recipes/lerasium_spike.json +582a7216f09b94d088418c81af04a2e4aa72db7f data/cosmere/recipes/lerasium_spike.json cb123ca5fd8f39e2c3fd8a2662244b8bcc330bb4 data/cosmere/recipes/malatium_block.json c6c8c4d290b8624c11982ad2431c8bba7627afa3 data/cosmere/recipes/malatium_ingot.json ae541ba7e9fffcaae3aa546904c0fad97360561a data/cosmere/recipes/metal_vial.json @@ -730,7 +730,7 @@ bcabe7bea031ee5cc4744e175d79c849265b7b9b data/cosmere/recipes/nicrosil_ingot_fro 47c19d8e1f4ebf988f7f2a184f817a35301b8c7e data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json 9c4647ec78b2d46fe9f440f7171c16b051037435 data/cosmere/recipes/nicrosil_necklace_metalmind.json 3479dae0b2364b83ae1a16f1e47a2e58936e0f05 data/cosmere/recipes/nicrosil_ring_metalmind.json -7e1121acb8f69830030332e62277570efb44b0a6 data/cosmere/recipes/nicrosil_spike.json +8b799adcb55311c2766b1c52012f4abed71a64ea data/cosmere/recipes/nicrosil_spike.json 3d9fb73591ba87ccac3522dfb30ba42de9c11a04 data/cosmere/recipes/pewter_block.json 38bdbe71c999794d1ae6c0388130717e4c29fac3 data/cosmere/recipes/pewter_bracelet_metalmind.json a98892969a36beb354d39f4f8ed2e18064b3f760 data/cosmere/recipes/pewter_ingot.json @@ -738,7 +738,7 @@ a98892969a36beb354d39f4f8ed2e18064b3f760 data/cosmere/recipes/pewter_ingot.json 601e7e18de15913499f4e45bbc514b70e5069906 data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json 1993500cbbfe0e49752f4cef638975e3f3798ce9 data/cosmere/recipes/pewter_necklace_metalmind.json ab8cfecb3d649c4427ce1c5921c3155d24c4433d data/cosmere/recipes/pewter_ring_metalmind.json -93d47bf854cac5cf562ae8c28c8b1128f06f37bb data/cosmere/recipes/pewter_spike.json +41ffc402339ba5fef17c297453848c85392dfc74 data/cosmere/recipes/pewter_spike.json 86656b59aeb6fbb5729743d2a2300dc211ecb860 data/cosmere/recipes/silver_block.json 670ae65731ea07ab24220bb5d79a1be19aa8d896 data/cosmere/recipes/silver_ingot.json 051a1226407d70d54e7a2c83fad87666cecb8726 data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json @@ -752,7 +752,7 @@ f5d343e746297147639ed667959a3d4428412048 data/cosmere/recipes/steel_block.json 02c25f66f14de317103868a0a2f3b881e4dcf503 data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json 45c0073f967149912e440ec815ae8b3c2d82fe1a data/cosmere/recipes/steel_necklace_metalmind.json 3b397185e9387a50ea31c53465cb4d5b071a4dd3 data/cosmere/recipes/steel_ring_metalmind.json -c894ff30d634ea164fb87471ff622ed6d11a4c01 data/cosmere/recipes/steel_spike.json +cbaa502f91945e3a16c8e083ac31ea5edbad7046 data/cosmere/recipes/steel_spike.json 9a668edb8db14dff8d23bef24452242f27464f76 data/cosmere/recipes/tin_block.json 0a76cdd7416eeb092fa2f08549bd4b75073faffb data/cosmere/recipes/tin_bracelet_metalmind.json e6d59c5dabb22fd25104e9ed1b592be10c08aff7 data/cosmere/recipes/tin_ingot.json @@ -762,7 +762,7 @@ e6d59c5dabb22fd25104e9ed1b592be10c08aff7 data/cosmere/recipes/tin_ingot.json 46b9bfd86b15331ef94692663983b06dfb6e6979 data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json da9b1cecef9d64e1d3701e674f64a0a1fea43fbe data/cosmere/recipes/tin_necklace_metalmind.json 01293513d056c29b5fbcd268a8c2a34a661355fe data/cosmere/recipes/tin_ring_metalmind.json -c160392ed2e859ed0a16aef8be0210b17f066d69 data/cosmere/recipes/tin_spike.json +cbc0ecec7c3bf3fac8cc3ea76e1555cf09021968 data/cosmere/recipes/tin_spike.json f91e61a028810c908110cc319394e705c636ff91 data/cosmere/recipes/vial_mixing.json 140d4d017421de2be8a820d145f2176917fcf66d data/cosmere/recipes/zinc_block.json 05b03661d452571811faeb5fe734bfd5f645a9b5 data/cosmere/recipes/zinc_bracelet_metalmind.json @@ -773,7 +773,7 @@ be0661d2dd2fb5b6bede37848e9461b6c1806a1d data/cosmere/recipes/zinc_ingot_from_bl 5f596bd1ec74174b4fca9ddd0149fa824fe24708 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_metalmind.json d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json -b13e7ce18075d01f96e28353132144b271ddfa08 data/cosmere/recipes/zinc_spike.json +6fe02255d6c35f42bd3f9234b1c239022e995d8a data/cosmere/recipes/zinc_spike.json b37675f80320064d0f85e5df877ce3291f7e861c data/cosmere/tags/items/spike.json 6b0291b7ca4411d32c2e8892f97decbbcd600d54 data/curios/tags/items/bracelet.json b37675f80320064d0f85e5df877ce3291f7e861c data/curios/tags/items/curio.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 51be71a6e..a470170e2 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -381,75 +381,75 @@ "key.cosmere.powers.previous": "Mode Previous", "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", - "manifestation.cosmere.aluminum_gnat": "Aluminum Gnat", + "manifestation.cosmere.aluminum_gnat": "Allomantic Aluminum", "manifestation.cosmere.aluminum_gnat.description": "Users can burn aluminum", - "manifestation.cosmere.archivist": "Archivist", + "manifestation.cosmere.archivist": "Feruchemical Copper", "manifestation.cosmere.archivist.description": "Users can tap copper", - "manifestation.cosmere.augur": "Augur", + "manifestation.cosmere.augur": "Allomantic Gold", "manifestation.cosmere.augur.description": "Users can burn gold", - "manifestation.cosmere.bloodmaker": "Bloodmaker", + "manifestation.cosmere.bloodmaker": "Feruchemical Gold", "manifestation.cosmere.bloodmaker.description": "Users can tap gold", - "manifestation.cosmere.brute": "Brute", + "manifestation.cosmere.brute": "Feruchemical Pewter", "manifestation.cosmere.brute.description": "Users can tap pewter", - "manifestation.cosmere.coinshot": "Coinshot", + "manifestation.cosmere.coinshot": "Allomantic Steel", "manifestation.cosmere.coinshot.description": "Users can burn steel", - "manifestation.cosmere.connector": "Connector", + "manifestation.cosmere.connector": "Feruchemical Duralumin", "manifestation.cosmere.connector.description": "Users can tap duralumin", - "manifestation.cosmere.duralumin_gnat": "Duralumin Gnat", + "manifestation.cosmere.duralumin_gnat": "Allomantic Duralumin", "manifestation.cosmere.duralumin_gnat.description": "Users can burn duralumin", - "manifestation.cosmere.elderling": "Elderling", + "manifestation.cosmere.elderling": "Feruchemical Atium", "manifestation.cosmere.elderling.description": "Users can tap atium", - "manifestation.cosmere.firesoul": "Firesoul", + "manifestation.cosmere.firesoul": "Feruchemical Brass", "manifestation.cosmere.firesoul.description": "Users can tap brass", - "manifestation.cosmere.gasper": "Gasper", + "manifestation.cosmere.gasper": "Feruchemical Cadmium", "manifestation.cosmere.gasper.description": "Users can tap cadmium", - "manifestation.cosmere.leecher": "Leecher", + "manifestation.cosmere.leecher": "Allomantic Chromium", "manifestation.cosmere.leecher.description": "Users can burn chromium", - "manifestation.cosmere.lurcher": "Lurcher", + "manifestation.cosmere.lurcher": "Allomantic Iron", "manifestation.cosmere.lurcher.description": "Users can burn iron", - "manifestation.cosmere.nicroburst": "Nicroburst", + "manifestation.cosmere.nicroburst": "Allomantic Nicrosil", "manifestation.cosmere.nicroburst.description": "Users can burn nicrosil", "manifestation.cosmere.none": "None", "manifestation.cosmere.none.description": "No Special Powers", - "manifestation.cosmere.oracle": "Oracle", + "manifestation.cosmere.oracle": "Allomantic Electrum", "manifestation.cosmere.oracle.description": "Users can burn electrum", - "manifestation.cosmere.pinnacle": "Pinnacle", + "manifestation.cosmere.pinnacle": "Feruchemical Electrum", "manifestation.cosmere.pinnacle.description": "Users can tap electrum", - "manifestation.cosmere.pulser": "Pulser", + "manifestation.cosmere.pulser": "Allomantic Cadmium", "manifestation.cosmere.pulser.description": "Users can burn cadmium", - "manifestation.cosmere.rioter": "Rioter", + "manifestation.cosmere.rioter": "Allomantic Zinc", "manifestation.cosmere.rioter.description": "Users can burn zinc", - "manifestation.cosmere.seeker": "Seeker", + "manifestation.cosmere.seeker": "Allomantic Bronze", "manifestation.cosmere.seeker.description": "Users can burn bronze", - "manifestation.cosmere.seer": "Seer", + "manifestation.cosmere.seer": "Allomantic Atium", "manifestation.cosmere.seer.description": "Users can burn atium", - "manifestation.cosmere.sentry": "Sentry", + "manifestation.cosmere.sentry": "Feruchemical Bronze", "manifestation.cosmere.sentry.description": "Users can tap bronze", - "manifestation.cosmere.skimmer": "Skimmer", + "manifestation.cosmere.skimmer": "Feruchemical Iron", "manifestation.cosmere.skimmer.description": "Users can tap iron", - "manifestation.cosmere.slider": "Slider", + "manifestation.cosmere.slider": "Allomantic Bendalloy", "manifestation.cosmere.slider.description": "Users can burn bendalloy", - "manifestation.cosmere.smoker": "Smoker", + "manifestation.cosmere.smoker": "Allomantic Copper", "manifestation.cosmere.smoker.description": "Users can burn copper", - "manifestation.cosmere.soother": "Soother", + "manifestation.cosmere.soother": "Allomantic Brass", "manifestation.cosmere.soother.description": "Users can burn brass", - "manifestation.cosmere.soulbearer": "Soulbearer", + "manifestation.cosmere.soulbearer": "Feruchemical Nicrosil", "manifestation.cosmere.soulbearer.description": "Users can tap nicrosil", - "manifestation.cosmere.sparker": "Sparker", + "manifestation.cosmere.sparker": "Feruchemical Zinc", "manifestation.cosmere.sparker.description": "Users can tap zinc", - "manifestation.cosmere.spinner": "Spinner", + "manifestation.cosmere.spinner": "Feruchemical Chromium", "manifestation.cosmere.spinner.description": "Users can tap chromium", - "manifestation.cosmere.steelrunner": "Steelrunner", + "manifestation.cosmere.steelrunner": "Feruchemical Steel", "manifestation.cosmere.steelrunner.description": "Users can tap steel", - "manifestation.cosmere.subsumer": "Subsumer", + "manifestation.cosmere.subsumer": "Feruchemical Bendalloy", "manifestation.cosmere.subsumer.description": "Users can tap bendalloy", - "manifestation.cosmere.thug": "Thug", + "manifestation.cosmere.thug": "Allomantic Pewter", "manifestation.cosmere.thug.description": "Users can burn pewter", - "manifestation.cosmere.tineye": "Tineye", + "manifestation.cosmere.tineye": "Allomantic Tin", "manifestation.cosmere.tineye.description": "Users can burn tin", - "manifestation.cosmere.trueself": "Trueself", + "manifestation.cosmere.trueself": "Feruchemical Aluminum", "manifestation.cosmere.trueself.description": "Users can tap aluminum", - "manifestation.cosmere.windwhisperer": "Windwhisperer", + "manifestation.cosmere.windwhisperer": "Feruchemical Tin", "manifestation.cosmere.windwhisperer.description": "Users can tap tin", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", diff --git a/src/main/generated/data/cosmere/recipes/aluminum_spike.json b/src/main/generated/data/cosmere/recipes/aluminum_spike.json index 6e4b355e8..13d469212 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_spike.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/atium_spike.json b/src/main/generated/data/cosmere/recipes/atium_spike.json index 9bc67d0df..fec60a3d7 100644 --- a/src/main/generated/data/cosmere/recipes/atium_spike.json +++ b/src/main/generated/data/cosmere/recipes/atium_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_spike.json b/src/main/generated/data/cosmere/recipes/bendalloy_spike.json index 0f8401b80..fda7f7ea2 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_spike.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/brass_spike.json b/src/main/generated/data/cosmere/recipes/brass_spike.json index 2aaa1b220..e5eda38f4 100644 --- a/src/main/generated/data/cosmere/recipes/brass_spike.json +++ b/src/main/generated/data/cosmere/recipes/brass_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/bronze_spike.json b/src/main/generated/data/cosmere/recipes/bronze_spike.json index 42c040339..6e301bc64 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_spike.json +++ b/src/main/generated/data/cosmere/recipes/bronze_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/cadmium_spike.json b/src/main/generated/data/cosmere/recipes/cadmium_spike.json index 6d5a19087..64974df80 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_spike.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/chromium_spike.json b/src/main/generated/data/cosmere/recipes/chromium_spike.json index 2be5877cc..e05a58fcc 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_spike.json +++ b/src/main/generated/data/cosmere/recipes/chromium_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/copper_spike.json b/src/main/generated/data/cosmere/recipes/copper_spike.json index 9a0e5f5cb..3fc872031 100644 --- a/src/main/generated/data/cosmere/recipes/copper_spike.json +++ b/src/main/generated/data/cosmere/recipes/copper_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/duralumin_spike.json b/src/main/generated/data/cosmere/recipes/duralumin_spike.json index 562af9da2..3668f7db5 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_spike.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/electrum_spike.json b/src/main/generated/data/cosmere/recipes/electrum_spike.json index 98c892dff..71235437e 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_spike.json +++ b/src/main/generated/data/cosmere/recipes/electrum_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/gold_spike.json b/src/main/generated/data/cosmere/recipes/gold_spike.json index ae979cc33..5b02fa574 100644 --- a/src/main/generated/data/cosmere/recipes/gold_spike.json +++ b/src/main/generated/data/cosmere/recipes/gold_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/iron_spike.json b/src/main/generated/data/cosmere/recipes/iron_spike.json index e0b6f117b..bb7fccd3c 100644 --- a/src/main/generated/data/cosmere/recipes/iron_spike.json +++ b/src/main/generated/data/cosmere/recipes/iron_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/lerasium_spike.json b/src/main/generated/data/cosmere/recipes/lerasium_spike.json index fb97b796a..678f44b5d 100644 --- a/src/main/generated/data/cosmere/recipes/lerasium_spike.json +++ b/src/main/generated/data/cosmere/recipes/lerasium_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_spike.json b/src/main/generated/data/cosmere/recipes/nicrosil_spike.json index 807d609ba..01c2055be 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_spike.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/pewter_spike.json b/src/main/generated/data/cosmere/recipes/pewter_spike.json index e73106b70..164e2f97a 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_spike.json +++ b/src/main/generated/data/cosmere/recipes/pewter_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/steel_spike.json b/src/main/generated/data/cosmere/recipes/steel_spike.json index c0e70444e..373b75f25 100644 --- a/src/main/generated/data/cosmere/recipes/steel_spike.json +++ b/src/main/generated/data/cosmere/recipes/steel_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/tin_spike.json b/src/main/generated/data/cosmere/recipes/tin_spike.json index c1550cc5a..a15796eb1 100644 --- a/src/main/generated/data/cosmere/recipes/tin_spike.json +++ b/src/main/generated/data/cosmere/recipes/tin_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/generated/data/cosmere/recipes/zinc_spike.json b/src/main/generated/data/cosmere/recipes/zinc_spike.json index b606df8fe..62574a604 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_spike.json +++ b/src/main/generated/data/cosmere/recipes/zinc_spike.json @@ -2,8 +2,8 @@ "type": "minecraft:crafting_shaped", "group": "spike", "pattern": [ - " X ", - " X " + "X", + "X" ], "key": { "X": { diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 6ab8281fe..457c9dae7 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -306,11 +306,22 @@ public void renderSelectedHUD(MatrixStack ms) int y = mainWindow.getGuiScaledHeight() / 5; //todo translations - String stringToDraw = "Selected Power: " + I18n.get(selectedManifestation.translation().getString()); + String stringToDraw = I18n.get(selectedManifestation.translation().getString()); mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); int mode = getMode(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); - String stringToDraw2 = "Mode: " + mode; + + String stringToDraw2 = ""; + + if (selectedManifestation.getManifestationType() == ManifestationTypes.FERUCHEMY) + { + stringToDraw2 = "Mode: " + (mode < 0 ? "Tapping " : "Storing ") + mode; + } + else + { + stringToDraw2 = "Mode: " + mode; + } + mc.font.drawShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index 90c3ff469..ae057bf29 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -26,7 +26,7 @@ public interface IChargeable { default int getMaxCharge(ItemStack itemStack) { - return MathHelper.floor(18000 * getMaxChargeModifier()); + return MathHelper.floor(9000 * getMaxChargeModifier()); } default float getMaxChargeModifier() diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index bdcd9eff3..5a90da0a1 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -213,7 +213,7 @@ protected static void addBasicMetalmindRecipes(Consumer consume } if (metalType.hasHemalurgicEffect()) { - ShapedRecipeBuilder.shaped(metalType.getSpikeItem()).define('X', inputMaterial).pattern(" X ").pattern(" X ").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(metalType.getSpikeItem()).define('X', inputMaterial).pattern("X").pattern("X").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); } } diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 841f4d42c..4110b2856 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -93,20 +93,22 @@ else if (item instanceof Metalmind) String key = manifestation.translation().getKey(); String path = manifestation.getRegistryName().getPath(); - //Name - add(key, StringHelper.fixCapitalisation(path)); //description //can't auto generate the descriptions ya dingleberry + String name = path; String description; + String metalName = Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); switch (manifestation.getManifestationType()) { case ALLOMANCY: - description = "Users can burn " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); + name = "Allomantic " + metalName; + description = "Users can burn " + metalName; break; case FERUCHEMY: - description = "Users can tap " + Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); + name = "Feruchemical " + metalName; + description = "Users can tap " + metalName; break; case RADIANT: case ELANTRIAN: @@ -117,6 +119,8 @@ else if (item instanceof Metalmind) break; } + //Name + add(key, StringHelper.fixCapitalisation(name)); add(manifestation.description().getKey(), description); } @@ -165,7 +169,6 @@ else if (item instanceof Metalmind) for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) { add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); - } //Sound Schemes diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java index bec3c7652..b254217e7 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java @@ -34,21 +34,7 @@ public BraceletMetalmind(Metals.MetalType metalType) @Override public float getMaxChargeModifier() { - return (6f / 9f); - } - - @Override - public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack stack) - { - //has to be a conscious decision to stab yourself - return true; - } - - @Override - public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack) - { - //has to be a conscious decision to stab yourself - return true; + return (5f / 9f); } @Override diff --git a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java index b43c8d1c4..d4f576276 100644 --- a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java @@ -18,6 +18,6 @@ public NecklaceMetalmind(Metals.MetalType metalType) @Override public float getMaxChargeModifier() { - return (4f / 9f); + return (6f / 9f); } } diff --git a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java b/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java index b709f3bd7..67d6802fe 100644 --- a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java @@ -15,11 +15,9 @@ public RingMetalmind(Metals.MetalType metalType) super(metalType, CosmereItemGroups.METALMINDS); } - @Override public float getMaxChargeModifier() { - return (3f / 9f); + return (4f / 9f); } - } diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index ddb432ff0..fdcdefa96 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -18,7 +18,8 @@ public class EffectInstanceMixin { @Inject(at = @At("RETURN"), method = "isNoCounter", - cancellable = true + cancellable = true, + remap = false ) private void getIsFeruchemyEffect(CallbackInfoReturnable cir) { @@ -29,7 +30,7 @@ private void getIsFeruchemyEffect(CallbackInfoReturnable cir) } - @Shadow + @Shadow(remap = false) public Effect getEffect() { throw new IllegalStateException("Mixin failed to shadow getPotion()"); } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 25fc756f1..906a8901a 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -20,7 +20,7 @@ @Mixin(Entity.class) public class EntityMixin { - +/* @Inject(method = "isGlowing", at = @At("RETURN"), cancellable = true) private void handleIsGlowing(CallbackInfoReturnable cir) { @@ -76,7 +76,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) } }); }); - } + }*/ } diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index a77fca9f9..893287e47 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -17,10 +17,11 @@ @Mixin(GameRenderer.class) public class GameRendererMixin { - @Inject(at = @At("RETURN"), method = "getNightVisionScale(Lnet/minecraft/entity/LivingEntity;F)F", cancellable = true) + @Inject(at = @At("RETURN"), method = "getNightVisionScale", cancellable = true, remap = false) private static void removeNightVisionFlash(LivingEntity livingEntity, float f, CallbackInfoReturnable info) { - float i = livingEntity.getEffect(Effects.NIGHT_VISION).getDuration(); + EffectInstance effect = livingEntity.getEffect(Effects.NIGHT_VISION); + float i = effect != null ? effect.getDuration() : f; info.setReturnValue(i > 0 ? 1 : i); } @@ -28,7 +29,8 @@ private static void removeNightVisionFlash(LivingEntity livingEntity, float f, C @Inject( at = @At("RETURN"), method = "getFov", - cancellable = true + cancellable = true, + remap = false ) private void getZoomedFov(ActiveRenderInfo activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) { From 5e27fc1e8db12a00c618150616557c8d1b2cc8ed Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 16:56:20 +1300 Subject: [PATCH 0027/1090] Fixed mixin related crash on boot --- build.gradle | 2 +- gradle.properties | 2 +- src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java | 5 ++--- src/main/java/leaf/cosmere/mixin/GameRendererMixin.java | 6 ++---- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/build.gradle b/build.gradle index e77f4374d..c74f63407 100644 --- a/build.gradle +++ b/build.gradle @@ -166,7 +166,7 @@ dependencies { // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft "net.minecraftforge:forge:${forge_version}" - annotationProcessor 'org.spongepowered:mixin:0.8.2:processor' + annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api") runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}") diff --git a/gradle.properties b/gradle.properties index ebfca4ed2..ac7a65a8c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,5 +7,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 -build_number=20 +build_number=21 patchouli_version=1.16.4-51 diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index fdcdefa96..ddb432ff0 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -18,8 +18,7 @@ public class EffectInstanceMixin { @Inject(at = @At("RETURN"), method = "isNoCounter", - cancellable = true, - remap = false + cancellable = true ) private void getIsFeruchemyEffect(CallbackInfoReturnable cir) { @@ -30,7 +29,7 @@ private void getIsFeruchemyEffect(CallbackInfoReturnable cir) } - @Shadow(remap = false) + @Shadow public Effect getEffect() { throw new IllegalStateException("Mixin failed to shadow getPotion()"); } diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index 893287e47..99de0d9f1 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -17,7 +17,7 @@ @Mixin(GameRenderer.class) public class GameRendererMixin { - @Inject(at = @At("RETURN"), method = "getNightVisionScale", cancellable = true, remap = false) + @Inject(at = @At("RETURN"), method = "getNightVisionScale", cancellable = true) private static void removeNightVisionFlash(LivingEntity livingEntity, float f, CallbackInfoReturnable info) { EffectInstance effect = livingEntity.getEffect(Effects.NIGHT_VISION); @@ -25,12 +25,10 @@ private static void removeNightVisionFlash(LivingEntity livingEntity, float f, C info.setReturnValue(i > 0 ? 1 : i); } - @Inject( at = @At("RETURN"), method = "getFov", - cancellable = true, - remap = false + cancellable = true ) private void getZoomedFov(ActiveRenderInfo activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) { From bca85219bda9fdb449818c8db29bd5a2e860e771 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 16:56:44 +1300 Subject: [PATCH 0028/1090] Remove curse of binding from spikes. --- .../leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 70fe6dc62..1b56b746f 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -105,13 +105,11 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList Date: Tue, 8 Mar 2022 17:58:50 +1300 Subject: [PATCH 0029/1090] Fix bracelet curio render location --- .../renderer/wearables/BraceletModel.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java index 21c5559a1..404ff9da8 100644 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java +++ b/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java @@ -30,25 +30,15 @@ public BraceletModel() //left arm this.leftArm = new ModelRenderer(this, 0, 0); - this.leftArm.mirror = true; - this.leftArm.setPos(-5.0F, 2.0F, 0.0F); - this.leftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + //this.leftArm.mirror = false; + this.leftArm.setPos(1.0F, 2.0F, 0.0F); + this.leftArm.addBox(2.2F, 6.0F, -2.5F, 1, 1, 5, 0.4F); //right arm this.rightArm = new ModelRenderer(this, 0, 0); - this.rightArm.setPos(-5.0F, 2.0F, 0.0F); - this.rightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); + this.rightArm.setPos(1.0F, 2.0F, 0.0F); + this.rightArm.addBox(-3.2F, 6.0F, -2.5F, 1, 1, 5, 0.4F); - //left leg - this.leftLeg = new ModelRenderer(this, 0, 0); - this.leftLeg.mirror = true; - this.leftLeg.setPos(-5.0F, 2.0F, 0.0F); - this.leftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); - - //right leg - this.rightLeg = new ModelRenderer(this, 0, 0); - this.rightLeg.setPos(-5.0F, 2.0F, 0.0F); - this.rightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); } From 49b4c5f3c56b6c8b635f82f458783725ff7cdb48 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 19:20:51 +1300 Subject: [PATCH 0030/1090] Consume iron/gold nuggets --- .../cosmere/handlers/EntityEventHandler.java | 41 ++++++++++++++++++- .../leaf/cosmere/items/MetalNuggetItem.java | 20 ++++++--- 2 files changed, 53 insertions(+), 8 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 32a458416..0feb6b138 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -11,11 +11,11 @@ import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.MathHelper; -import leaf.cosmere.utils.helpers.TextHelper; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.utils.helpers.MathHelper; +import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.merchant.villager.VillagerEntity; @@ -28,7 +28,9 @@ import net.minecraft.entity.passive.CatEntity; import net.minecraft.entity.passive.horse.LlamaEntity; import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; import net.minecraft.util.Hand; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; @@ -38,6 +40,8 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import java.util.Arrays; + import static leaf.cosmere.utils.helpers.EntityHelper.giveEntityStartingManifestation; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) @@ -131,6 +135,39 @@ public static void onEntityItemPickUp(EntityItemPickupEvent event) } } + @SubscribeEvent + public static void onRightClickItem(PlayerInteractEvent.RightClickItem event) + { + final PlayerEntity player = event.getPlayer(); + ItemStack itemInHand = player.getItemInHand(event.getHand()); + + final Item[] allowedItems = {Items.IRON_NUGGET, Items.GOLD_NUGGET/*,Items.COPPER_NUGGET*/}; + + final Item handItem = itemInHand.getItem(); + + if (!itemInHand.isEmpty() && Arrays.asList(allowedItems).contains(handItem)) + { + Metals.MetalType metalType = null; + + if (handItem == Items.IRON_NUGGET) + { + metalType = Metals.MetalType.IRON; + } + else if (handItem == Items.GOLD_NUGGET) + { + metalType = Metals.MetalType.GOLD; + } + /*else if (handItem == Items.COPPER_NUGGET) + { + metalType = Metals.MetalType.COPPER; + }*/ + + MetalNuggetItem.consumeNugget(player, metalType, itemInHand); + } + + } + + @SubscribeEvent public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) { diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 7681ba502..cbb4efa52 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -27,20 +27,28 @@ public ActionResult use(World worldIn, PlayerEntity playerIn, Hand ha //todo convert to shavings + consumeNugget(playerIn, getMetalType(), itemstack); + + return ActionResult.consume(itemstack); + } + + public static void consumeNugget(PlayerEntity playerIn, Metals.MetalType metalType, ItemStack itemstack) + { + if (metalType == null) + { + return; + } + SpiritwebCapability.get(playerIn).ifPresent(iSpiritweb -> { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; //add to metal stored - Integer metalIngested = spiritweb.METALS_INGESTED.get(getMetalType()); - spiritweb.METALS_INGESTED.put(getMetalType(),metalIngested + 9); // todo decide what value should be used for ingestion + Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); + spiritweb.METALS_INGESTED.put(metalType,metalIngested + 9); // todo decide what value should be used for ingestion itemstack.shrink(1); }); - - - - return ActionResult.consume(itemstack); } } From c4524d0c90f17f0900c6a2c0c682035fd04dade1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 20:59:51 +1300 Subject: [PATCH 0031/1090] Lerasium & Lerasatium can be consumed to gain powers --- .../cosmere/handlers/EntityEventHandler.java | 30 +----------- .../leaf/cosmere/items/MetalNuggetItem.java | 46 ++++++++++++++++--- 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 0feb6b138..245776ea7 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -191,35 +191,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) return; } - if (!event.getPlayer().isCreative()) - { - stack.shrink(1); - } - - for (int i = 0; i < 16; i++) - { - switch (metalType) - { - case LERASIUM: - //give allomancy - cap.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, i); - - //https://www.theoryland.com/intvmain.php?i=977#43 - if (target instanceof LlamaEntity && !target.hasCustomName()) - { - //todo translations - target.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); - } - - break; - case LERASATIUM: - //give feruchemy - cap.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, i); - break; - } - } - - + MetalNuggetItem.consumeNugget(target, metalType, stack); } else if (stack.getItem() instanceof HemalurgicSpikeItem) { diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index cbb4efa52..1d08ea8ee 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -5,7 +5,11 @@ package leaf.cosmere.items; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.utils.helpers.TextHelper; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.passive.horse.LlamaEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; @@ -32,23 +36,53 @@ public ActionResult use(World worldIn, PlayerEntity playerIn, Hand ha return ActionResult.consume(itemstack); } - public static void consumeNugget(PlayerEntity playerIn, Metals.MetalType metalType, ItemStack itemstack) + public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) { if (metalType == null) { return; } - SpiritwebCapability.get(playerIn).ifPresent(iSpiritweb -> + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - //add to metal stored - Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); - spiritweb.METALS_INGESTED.put(metalType,metalIngested + 9); // todo decide what value should be used for ingestion + if (metalType == Metals.MetalType.LERASIUM || metalType == Metals.MetalType.LERASATIUM) + { + for (int i = 0; i < 16; i++) + { + switch (metalType) + { + case LERASIUM: + //give allomancy + spiritweb.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, i); - itemstack.shrink(1); + //https://www.theoryland.com/intvmain.php?i=977#43 + if (livingEntity instanceof LlamaEntity && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); + } + break; + case LERASATIUM: + //give feruchemy + spiritweb.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, i); + break; + } + } + } + else + { + //add to metal stored + Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); + spiritweb.METALS_INGESTED.put(metalType,metalIngested + 9); // todo decide what value should be used for ingestion + } + + if (livingEntity instanceof PlayerEntity && !((PlayerEntity) livingEntity).isCreative()) + { + itemstack.shrink(1); + } }); } } From 782543e9d991242dd1efbb4a5ae4ed3ce5a2dccf Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 21:01:40 +1300 Subject: [PATCH 0032/1090] Added missing localisation for hemalurgic spike creative mode tab --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 1 + src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 9557b3a8a..abb24bfa7 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -f8a4c952cd43c6e32f8a8909e763bbc2fc514b37 assets/cosmere/lang/en_us.json +9b2dfc10ed4e2dd25ff37cc73ddf00098c533a80 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index a470170e2..5446389bb 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -375,6 +375,7 @@ "itemGroup.cosmere.blocks": "Cosmere Blocks", "itemGroup.cosmere.items": "Cosmere Items", "itemGroup.cosmere.metalminds": "Cosmere Metalminds", + "itemGroup.cosmere.spikes": "Cosmere Spikes", "key.cosmere.allomancy.pull": "Pull", "key.cosmere.allomancy.push": "Push", "key.cosmere.powers.next": "Mode Next", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 4110b2856..f1e8a517a 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -159,6 +159,7 @@ else if (item instanceof Metalmind) //ItemGroups/Tabs add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); add("itemGroup." + CosmereItemGroups.METALMINDS.getRecipeFolderName(), "Cosmere Metalminds"); + add("itemGroup." + CosmereItemGroups.HEMALURGIC_SPIKES.getRecipeFolderName(), "Cosmere Spikes"); add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); //Damage Sources From 094b5ec417b54c94b0b54b861ba6a079c576be47 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 21:31:48 +1300 Subject: [PATCH 0033/1090] Fixed bronze allomancy glow effect --- .../java/leaf/cosmere/mixin/EntityMixin.java | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 906a8901a..574cec611 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -7,6 +7,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; import net.minecraft.entity.Entity; @@ -20,7 +21,6 @@ @Mixin(Entity.class) public class EntityMixin { -/* @Inject(method = "isGlowing", at = @At("RETURN"), cancellable = true) private void handleIsGlowing(CallbackInfoReturnable cir) { @@ -36,7 +36,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> { - //if has bronze + //if the player does not have bronze, early exit if (!(playerSpiritweb.hasManifestation(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()))) { return; @@ -44,39 +44,49 @@ private void handleIsGlowing(CallbackInfoReturnable cir) SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> { - //if has copper + //if target has copper and it's active, early exit if (ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get().isActive(targetSpiritweb)) { //check whether or not the target beats the player in allomantic power - - - return; } - //get allomantic strength of int mode = playerSpiritweb.getMode(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()); //todo range to config int range = 5 * mode; + boolean found = false; - - //get allomantic strength of copper + //if target is player and has any active manifestations, - //if targets copper is on and their mode and strength is stronger than the player - //then close out + //or if target is not a player and has any manifestations at all + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + //don't tick powers that the user doesn't have + //don't tick powers that are not active + if (!(target instanceof PlayerEntity) && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) + { + found = true; + break; + } + else if ((target instanceof PlayerEntity) && manifestation.isActive(targetSpiritweb)) + { + found = true; + break; + } + } - if (clientPlayer != null && clientPlayer.distanceTo(target) < range) + if ((clientPlayer != null && clientPlayer.distanceTo(target) < range) && found) { cir.setReturnValue(true); } }); }); - }*/ + } } From 65ac6000addf717b97a08f33ecb75522a9a549fc Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Mar 2022 21:37:24 +1300 Subject: [PATCH 0034/1090] Updated Version and Changelog. --- Changelog.md | 14 ++++++++++++++ gradle.properties | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index fd9449eb7..7ed7871d5 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,19 @@ The Cosmere Project - For 1.16 Minecraft +B22 + +Remove curse of binding from spikes. Fix bracelet curio render location. Consume minecraft:iron/gold nuggets. Lerasium & Lerasatium can be consumed to gain powers. Added missing localisation for hemalurgic spike creative mode tab. Fixed bronze allomancy glow effect. + + +B21 + +Fixed Mixin related crash + +B20 + +Localisation should now use "manifestation type - metal type" instead of the name of the manifestation for allomancy and feruchemy. Eg "Feruchemical Steel" instead of Steelrunner. +Fixed some balancing of the metalminds, so that it's 1000 capacity per ingot used to make it. + B19 The creative mode menu now has a more comprehensive list of hemalurgic spikes with the abilities that they can steal diff --git a/gradle.properties b/gradle.properties index ac7a65a8c..b04cf9324 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,5 +7,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 -build_number=21 +build_number=22 patchouli_version=1.16.4-51 From a79e45f155ed35bcabdd3a6306e3108cf3b7d1cb Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Mar 2022 11:39:05 +1300 Subject: [PATCH 0035/1090] Use item in hand for consuming minecraft:gold/iron nuggets --- src/main/java/leaf/cosmere/handlers/EntityEventHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 245776ea7..5a090ebca 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -161,6 +161,7 @@ else if (handItem == Items.GOLD_NUGGET) { metalType = Metals.MetalType.COPPER; }*/ + player.startUsingItem(event.getHand()); MetalNuggetItem.consumeNugget(player, metalType, itemInHand); } From b49aa8274a367f30cb3042b7307b6fdd0a05a839 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 19 Mar 2022 13:54:40 +1300 Subject: [PATCH 0036/1090] Many things. Duralumin feruchemy tapping gives Hero of the Village effect. Fixed a crash related to bronze feruchemy. Player can now sleep at night anywhere properly. Cleaned up a bunch of scripts. --- Changelog.md | 14 +- gradle.properties | 2 +- .../feruchemy/store/BronzeStoreEffect.java | 41 ---- .../feruchemy/store/CopperStoreEffect.java | 25 --- .../feruchemy/store/IronStoreEffect.java | 1 - .../feruchemy/store/NicrosilStoreEffect.java | 19 -- .../feruchemy/tap/BronzeTapEffect.java | 23 -- .../feruchemy/tap/CopperTapEffect.java | 18 -- .../feruchemy/tap/DuraluminTapEffect.java | 15 ++ .../effects/feruchemy/tap/GoldTapEffect.java | 5 - .../effects/feruchemy/tap/IronTapEffect.java | 1 - .../feruchemy/tap/NicrosilTapEffect.java | 18 -- .../effects/feruchemy/tap/SteelTapEffect.java | 1 + .../feruchemy/FeruchemyBase.java | 2 + .../feruchemy/FeruchemyBronze.java | 207 ++++++++++++++++++ .../feruchemy/FeruchemyNicrosil.java | 1 - .../cosmere/registry/EffectsRegistry.java | 24 +- .../registry/LootModifierRegistry.java | 6 - .../registry/ManifestationRegistry.java | 29 ++- 19 files changed, 258 insertions(+), 194 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/BronzeTapEffect.java delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/CopperTapEffect.java delete mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java create mode 100644 src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java diff --git a/Changelog.md b/Changelog.md index 7ed7871d5..2af515eda 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,8 +1,20 @@ The Cosmere Project - For 1.16 Minecraft +B23 + +Duralumin feruchemy tapping gives Hero of the Village effect. +Fixed a crash related to bronze feruchemy. Player can now sleep at night anywhere properly. +Cleaned up a bunch of scripts. + + B22 -Remove curse of binding from spikes. Fix bracelet curio render location. Consume minecraft:iron/gold nuggets. Lerasium & Lerasatium can be consumed to gain powers. Added missing localisation for hemalurgic spike creative mode tab. Fixed bronze allomancy glow effect. +Remove curse of binding from spikes. +Fix bracelet curio render location. +Consume minecraft:iron/gold nuggets. +Lerasium & Lerasatium can be consumed to gain powers. +Added missing localisation for hemalurgic spike creative mode tab. +Fixed bronze allomancy glow effect. B21 diff --git a/gradle.properties b/gradle.properties index b04cf9324..05eca541d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,5 +7,5 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 -build_number=22 +build_number=23 patchouli_version=1.16.4-51 diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java deleted file mode 100644 index 50d58fd8d..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BronzeStoreEffect.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.store; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.EffectType; - -//wakefulness -public class BronzeStoreEffect extends FeruchemyEffectBase -{ - public BronzeStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //sleep - if (!(entityLivingBaseIn instanceof PlayerEntity) || entityLivingBaseIn.tickCount % (200 / (amplifier + 1)) != 0) - { - return; - } - - PlayerEntity player = (PlayerEntity) entityLivingBaseIn; - - player.startSleepInBed(player.blockPosition()).ifLeft((result) -> - { - if (result != null && result.getMessage() != null) - { - player.displayClientMessage(result.getMessage(), true); - } - - }); - } -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java deleted file mode 100644 index 4db3c8d5d..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/CopperStoreEffect.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.store; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; - -//experience -public class CopperStoreEffect extends FeruchemyEffectBase -{ - public CopperStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - - } -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java index 8e49298c3..bf7b7f3ee 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java @@ -30,7 +30,6 @@ public IronStoreEffect(Metals.MetalType type, EffectType effectType) public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) { return; diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java deleted file mode 100644 index 6889c91f0..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.store; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.potion.EffectType; - -//todo nicrosil effect -//store investiture -public class NicrosilStoreEffect extends FeruchemyEffectBase -{ - public NicrosilStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BronzeTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BronzeTapEffect.java deleted file mode 100644 index 892edc0c7..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BronzeTapEffect.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.tap; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.potion.EffectType; - - -public class BronzeTapEffect extends FeruchemyEffectBase -{ - public BronzeTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } - - // So greedy! - // You can already stay awake forever in minecraft if you want to. - // What do you expect you can do with more? - -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CopperTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CopperTapEffect.java deleted file mode 100644 index f7cf4aefa..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CopperTapEffect.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.tap; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.potion.EffectType; - - -public class CopperTapEffect extends FeruchemyEffectBase -{ - public CopperTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java index dbbe4f3ba..a4e07674e 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java @@ -6,7 +6,10 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.entity.LivingEntity; import net.minecraft.potion.EffectType; +import net.minecraft.potion.Effects; public class DuraluminTapEffect extends FeruchemyEffectBase @@ -15,4 +18,16 @@ public DuraluminTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); } + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //ensure the user has correct buffs at least as strong as their store effect + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + { + return; + } + + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.HERO_OF_THE_VILLAGE, amplifier)); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 876794c80..e1844a03b 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -15,11 +15,6 @@ public class GoldTapEffect extends FeruchemyEffectBase public GoldTapEffect(Metals.MetalType type, EffectType effectType) { super(type, effectType); -/* addAttributesModifier( - Attributes.MAX_HEALTH, - "17a9094f-d300-46c4-8607-83f64a98bb42", - 4.0D, - AttributeModifier.Operation.ADDITION);*/ } @Override diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java index 3d48d4d48..8d6a3e3df 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java @@ -30,7 +30,6 @@ public IronTapEffect(Metals.MetalType type, EffectType effectType) public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) { return; diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java deleted file mode 100644 index 2182d5e2c..000000000 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.effects.feruchemy.tap; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.potion.EffectType; - - -public class NicrosilTapEffect extends FeruchemyEffectBase -{ - public NicrosilTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } -} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java index 469c55df7..41875e446 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java @@ -56,6 +56,7 @@ public boolean isDurationEffectTick(int duration, int amplifier) @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { + //todo replace this with something better //code for checking block under player //https://stackoverflow.com/a/62026168 if (entityLivingBaseIn.level.getBlockState(entityLivingBaseIn.blockPosition().below()).getMaterial() == Material.WATER) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 76f44201c..75bec3352 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -44,12 +44,14 @@ public boolean modeWraps(ISpiritweb data) return false; } + //storing is positive, eg adding to store @Override public int modeMax(ISpiritweb data) { return 3; } + //tapping is negative, eg taking from store @Override public int modeMin(ISpiritweb data) { diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java new file mode 100644 index 000000000..2c76f4687 --- /dev/null +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -0,0 +1,207 @@ +/* + * File created ~ 27 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.manifestation.feruchemy; + +import leaf.cosmere.Cosmere; +import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.constants.Metals; +import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.Pose; +import net.minecraft.entity.monster.MonsterEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.stats.Stats; +import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.world.server.ServerWorld; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.ForgeEventFactory; +import net.minecraftforge.event.entity.player.SleepingLocationCheckEvent; +import net.minecraftforge.eventbus.api.Event; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.ObfuscationReflectionHelper; + +import java.util.List; +import java.util.Optional; + +public class FeruchemyBronze extends FeruchemyBase +{ + public FeruchemyBronze(Metals.MetalType metalType) + { + super(metalType); + MinecraftForge.EVENT_BUS.addListener(this::sleepCheck); + } + + @Override + public int modeMin(ISpiritweb data) + { + return 0; + } + + @Override + public int modeMax(ISpiritweb data) + { + return 1; + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + if (!(livingEntity instanceof ServerPlayerEntity) || livingEntity.tickCount % 20 != 0) + { + return; + } + + int mode = data.getMode(manifestationType, metalType.getID()); + + //can't store or tap any more + if (mode == 0) + { + //remove active effects. + //let the current effect run out. + return; + } + + trySleep(data); + + } + + private void trySleep(ISpiritweb data) + { + ServerPlayerEntity player = (ServerPlayerEntity) data.getLiving(); + + boolean canSleep = canSleep(player); + + if (!canSleep) + { + //todo add message to player saying can't sleep + data.setMode(this.manifestationType, this.metalType.getID(), 0); + return; + } + + + player.resetStat(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)); + if (player.isPassenger()) + { + player.stopRiding(); + } + + try + { + player.setPose(Pose.SLEEPING); + /* + Method setPose = ObfuscationReflectionHelper.findMethod(Entity.class, "func_213301_b", Pose.class); + setPose.invoke(player, Pose.SLEEPING); + */ + } + catch (Exception e) + { + } + player.setSleepingPos(player.blockPosition()); + player.setDeltaMovement(Vector3d.ZERO); + player.hasImpulse = true; + + try + { + //sleepCounter + ObfuscationReflectionHelper.setPrivateValue(PlayerEntity.class, player, 0, "field_71076_b"); + } + catch (ObfuscationReflectionHelper.UnableToFindFieldException e) + { + try + { + //sleepCounter + ObfuscationReflectionHelper.setPrivateValue(PlayerEntity.class, player, 0, "sleepCounter"); + } + catch (ObfuscationReflectionHelper.UnableToFindFieldException unableToFindFieldException) + { + } + } + + if (player.level instanceof ServerWorld) + { + ((ServerWorld) player.level).updateSleepingPlayerList(); + } + + + player.awardStat(Stats.SLEEP_IN_BED); + CriteriaTriggers.SLEPT_IN_BED.trigger(player); + + data.setMode(this.manifestationType, this.metalType.getID(), 0); + + } + + private boolean canSleep(PlayerEntity player) + { + PlayerEntity.SleepResult ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(player, Optional.empty()); + if (ret != null) + { + return false; + } + + if (player.isSleeping() || !player.isAlive()) + { + return false;//(PlayerEntity.SleepResult.OTHER_PROBLEM); + } + + if (!player.level.dimensionType().natural()) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_HERE); + } + if (player.level.isDay()) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); + } + + if (!ForgeEventFactory.fireSleepingTimeCheck(player, Optional.empty())) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); + } + + if (!player.isCreative()) + { + Vector3d vector3d = player.position(); + List list = player.level.getEntitiesOfClass( + MonsterEntity.class, + new AxisAlignedBB( + vector3d.x() - 8D, + vector3d.y() - 5D, + vector3d.z() - 8D, + vector3d.x() + 8D, + vector3d.y() + 5D, + vector3d.z() + 8D), + (entity) -> entity.isPreventingPlayerRest(player)); + + if (!list.isEmpty()) + { + return false; //(PlayerEntity.SleepResult.NOT_SAFE); + } + } + + return true; + } + + public void sleepCheck(SleepingLocationCheckEvent event) + { + if (event.getEntityLiving() instanceof PlayerEntity) + { + SpiritwebCapability.get(event.getEntityLiving()).ifPresent(iSpiritweb -> + { + if (iSpiritweb.hasManifestation(this.manifestationType, this.metalType.getID())) + { + event.setResult(Event.Result.ALLOW); + } + }); + + } + } +} diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 37845b323..210f6b483 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -36,7 +36,6 @@ public int modeMax(ISpiritweb data) @Override public void tick(ISpiritweb data) { - //don't check every tick. LivingEntity livingEntity = data.getLiving(); diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index eed2f221e..98a165d87 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -69,16 +69,10 @@ private static Effect makeStoringEffect(Metals.MetalType metalType) return new PewterStoreEffect(metalType, EffectType.BENEFICIAL); case BRASS: return new BrassStoreEffect(metalType, EffectType.BENEFICIAL); - case COPPER: - return new CopperStoreEffect(metalType, EffectType.BENEFICIAL); - case BRONZE: - return new BronzeStoreEffect(metalType, EffectType.BENEFICIAL); case DURALUMIN: return new DuraluminStoreEffect(metalType, EffectType.BENEFICIAL); case CHROMIUM: return new ChromiumStoreEffect(metalType, EffectType.BENEFICIAL); - case NICROSIL: - return new NicrosilStoreEffect(metalType, EffectType.BENEFICIAL); case GOLD: return new GoldStoreEffect(metalType, EffectType.BENEFICIAL); case CADMIUM: @@ -86,11 +80,7 @@ private static Effect makeStoringEffect(Metals.MetalType metalType) case BENDALLOY: return new BendalloyStoreEffect(metalType, EffectType.BENEFICIAL); //todo atium - // handled as part of the manifestation - case ELECTRUM: - case TIN: - case ALUMINUM: - case ZINC: + // handled as part of the manifestation or maybe a mixin default: return new FeruchemyEffectBase(metalType, EffectType.BENEFICIAL); } @@ -108,16 +98,10 @@ private static Effect makeTappingEffect(Metals.MetalType metalType) return new PewterTapEffect(metalType, EffectType.BENEFICIAL); case BRASS: return new BrassTapEffect(metalType, EffectType.BENEFICIAL); - case COPPER: - return new CopperTapEffect(metalType, EffectType.BENEFICIAL); - case BRONZE: - return new BronzeTapEffect(metalType, EffectType.BENEFICIAL); case DURALUMIN: return new DuraluminTapEffect(metalType, EffectType.BENEFICIAL); case CHROMIUM: return new ChromiumTapEffect(metalType, EffectType.BENEFICIAL); - case NICROSIL: - return new NicrosilTapEffect(metalType, EffectType.BENEFICIAL); case GOLD: return new GoldTapEffect(metalType, EffectType.BENEFICIAL); case CADMIUM: @@ -125,11 +109,7 @@ private static Effect makeTappingEffect(Metals.MetalType metalType) case BENDALLOY: return new BendalloyTapEffect(metalType, EffectType.BENEFICIAL); //todo atium - // handled as part of the manifestation - case ELECTRUM: - case TIN: - case ALUMINUM: - case ZINC: + // handled as part of the manifestation or maybe a mixin default: return new FeruchemyEffectBase(metalType, EffectType.BENEFICIAL); } diff --git a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java index bdc1b12ec..87c749f84 100644 --- a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java @@ -22,10 +22,4 @@ public class LootModifierRegistry public static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.LOOT_MODIFIER_SERIALIZERS, Cosmere.MODID); public static final RegistryObject> FORTUNE_BONUS = LOOT_MODIFIERS.register("fortune_bonus", FortuneBonusModifier.Serializer::new); - //@SubscribeEvent - //public static void registerLootModifiers(RegistryEvent.Register> event) - //{ - // IForgeRegistry> registry = event.getRegistry(); - // registry.register((new FortuneBonusModifier.Serializer()).setRegistryName(ResourceLocationHelper.prefix("fortune_bonus"))); - //} } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index 495f5ab9c..72b823a08 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -139,18 +139,23 @@ private static AllomancyBase makeAllomancyManifestation(Metals.MetalType metalTy private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalType) { - if (metalType == Metals.MetalType.COPPER) - return new FeruchemyCopper(metalType); - else if (metalType == Metals.MetalType.ZINC) - return new FeruchemyZinc(metalType); - else if (metalType == Metals.MetalType.ALUMINUM) - return new FeruchemyAluminum(metalType); - else if (metalType == Metals.MetalType.NICROSIL) - return new FeruchemyNicrosil(metalType); - else if (metalType == Metals.MetalType.ELECTRUM) - return new FeruchemyElectrum(metalType); - else - return new FeruchemyBase(metalType); + switch (metalType) + { + case COPPER: + return new FeruchemyCopper(metalType); + case BRONZE: + return new FeruchemyBronze(metalType); + case ZINC: + return new FeruchemyZinc(metalType); + case ALUMINUM: + return new FeruchemyAluminum(metalType); + case NICROSIL: + return new FeruchemyNicrosil(metalType); + case ELECTRUM: + return new FeruchemyElectrum(metalType); + default: + return new FeruchemyBase(metalType); + } } public static Map getManifestations() From e04de67356e81bca82eaf9c602885f71a329b2ca Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 19 Mar 2022 14:08:05 +1300 Subject: [PATCH 0037/1090] swapped bendalloy and cadmium effects --- .../leaf/cosmere/handlers/CommonEvents.java | 1 - .../allomancy/AllomancyBendalloy.java | 54 ++++++------------- .../allomancy/AllomancyCadmium.java | 54 +++++++++++++------ 3 files changed, 54 insertions(+), 55 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 1bbda9aaf..0fcec29f1 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -34,7 +34,6 @@ public static void registerCommands(RegisterCommandsEvent event) CosmereCommand.register(event.getDispatcher()); } - @SubscribeEvent public static void onServerStarting(FMLServerStartingEvent event) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index 73c7c5a3b..191e103b8 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -5,13 +5,10 @@ package leaf.cosmere.manifestation.allomancy; import leaf.cosmere.cap.entity.ISpiritweb; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import net.minecraft.block.BlockState; +import leaf.cosmere.utils.helpers.EffectsHelper; import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.potion.Effects; import java.util.List; @@ -27,45 +24,24 @@ public AllomancyBendalloy(Metals.MetalType metalType) @Override protected void performEffect(ISpiritweb data) { - //Speeds Up Time - { - //tick entities around user - if (data.getLiving().tickCount % 6 == 0) - { - int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); - int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); - int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); - - for (int i = 4; i > -2; i--) - { - int y = data.getLiving().blockPosition().getY() + i; - BlockPos pos = new BlockPos(x, y, z); - World world = data.getLiving().level; + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; - if (world.isEmptyBlock(pos)) - { - continue; - } - - BlockState state = world.getBlockState(pos); - state.randomTick((ServerWorld) world, pos, world.random); - - break; - } + //Slows Down Time for the entities around the user + if (isActiveTick) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); - //todo tick living entities? + int range = 5 * mode; - List entitiesToCheck = getLivingEntitiesInRange(data.getLiving(), range, true); + List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); - for (LivingEntity e : entitiesToCheck) - { - e.aiStep(); - } + for (LivingEntity e : entitiesToAffect) + { + e.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SLOWDOWN,mode)); } - } - + //todo slow tile entities? not sure how to do that. cadmium just calls tick more often. + } } - - } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java index 386a5cf66..69bb61938 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java @@ -5,10 +5,13 @@ package leaf.cosmere.manifestation.allomancy; import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.block.BlockState; import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effects; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import net.minecraft.world.server.ServerWorld; import java.util.List; @@ -24,24 +27,45 @@ public AllomancyCadmium(Metals.MetalType metalType) @Override protected void performEffect(ISpiritweb data) { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - - //Slows Down Time - if (isActiveTick) + //Speeds Up Time for everything around the user, implying the user is slower { - int mode = data.getMode(manifestationType, getMetalType().getID()); + //tick entities around user + if (data.getLiving().tickCount % 6 == 0) + { + int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); + int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); + int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); - int range = 5 * mode; + for (int i = 4; i > -2; i--) + { + int y = data.getLiving().blockPosition().getY() + i; + BlockPos pos = new BlockPos(x, y, z); + World world = data.getLiving().level; - List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); + if (world.isEmptyBlock(pos)) + { + continue; + } - for (LivingEntity e : entitiesToAffect) - { - e.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SLOWDOWN,mode)); - } + BlockState state = world.getBlockState(pos); + state.randomTick((ServerWorld) world, pos, world.random); + + break; + } + + //todo tick living entities? - //todo slow tile entities? not sure how to do that. bendalloy just calls tick more often. + List entitiesToCheck = getLivingEntitiesInRange(data.getLiving(), range, true); + + for (LivingEntity e : entitiesToCheck) + { + e.aiStep(); + } + } } + + } + + } From 21ab93ed24023e3c82b1e2b669f1efc2f7313783 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 19 Mar 2022 14:22:31 +1300 Subject: [PATCH 0038/1090] Update Changelog.md --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 2af515eda..feac724ec 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,7 +5,7 @@ B23 Duralumin feruchemy tapping gives Hero of the Village effect. Fixed a crash related to bronze feruchemy. Player can now sleep at night anywhere properly. Cleaned up a bunch of scripts. - +Swapped the bendalloy and cadmium effects, so cadmium speeds up things around you, implying you're really slow and bendalloy slows things around you, implying that you're faster. B22 From 001bfe589a2d094009f034701c902ccb98f8778d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 20 Mar 2022 10:25:38 +1300 Subject: [PATCH 0039/1090] Update HemalurgicSpikeItem.java Fixed creative mode spikes to only contain their correct powers, not both allomancy and feruchemy. --- .../items/curio/HemalurgicSpikeItem.java | 77 +++++++++++++------ 1 file changed, 53 insertions(+), 24 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 1b56b746f..bd61ed245 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -11,7 +11,6 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.renderer.wearables.SpikeModel; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; @@ -25,7 +24,6 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.ai.attributes.Attribute; @@ -53,8 +51,10 @@ import javax.annotation.Nonnull; import java.awt.*; -import java.util.*; +import java.util.Collection; import java.util.List; +import java.util.Optional; +import java.util.UUID; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class HemalurgicSpikeItem extends Metalmind implements IHemalurgicInfo @@ -126,29 +126,58 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList Date: Sun, 20 Mar 2022 10:26:09 +1300 Subject: [PATCH 0040/1090] Added localisation for spike tooltips. No more 'cosmere.trueself'. --- Changelog.md | 6 ++++ src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 34 +++++++++++++++++++ .../cosmere/datagen/language/EngLangGen.java | 22 +++++++----- .../cosmere/utils/helpers/EntityHelper.java | 2 +- 5 files changed, 56 insertions(+), 10 deletions(-) diff --git a/Changelog.md b/Changelog.md index feac724ec..b9614b801 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,11 @@ The Cosmere Project - For 1.16 Minecraft +B24 + +Fixed creative mode spikes to only contain their correct powers, not both allomancy and feruchemy. +Added localisation for spike tooltips. No more 'cosmere.trueself'. + + B23 Duralumin feruchemy tapping gives Hero of the Village effect. diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index abb24bfa7..adf0ada94 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -9b2dfc10ed4e2dd25ff37cc73ddf00098c533a80 assets/cosmere/lang/en_us.json +5b29cfb5bc4a184f7552ab7657b5a8233e7a2339 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 5446389bb..5e917fb5e 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -35,10 +35,19 @@ "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", + "cosmere.aluminum_gnat": "Aluminum Gnat", + "cosmere.archivist": "Archivist", + "cosmere.augur": "Augur", + "cosmere.bloodmaker": "Bloodmaker", + "cosmere.brute": "Brute", "cosmere.category.allomancy": "Allomancy", "cosmere.category.basics": "Basics", "cosmere.category.feruchemy": "Feruchemy", "cosmere.category.hemalurgy": "Hemalurgy", + "cosmere.coinshot": "Coinshot", + "cosmere.connector": "Connector", + "cosmere.duralumin_gnat": "Duralumin Gnat", + "cosmere.elderling": "Elderling", "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", "cosmere.entry.allomantic_atium": "Atium - Seer", "cosmere.entry.allomantic_bendalloy": "Bendalloy - Slider", @@ -111,7 +120,32 @@ "cosmere.entry.hemalurgic_steel": "Steel", "cosmere.entry.hemalurgic_tin": "Tin", "cosmere.entry.hemalurgic_zinc": "Zinc", + "cosmere.firesoul": "Firesoul", + "cosmere.gasper": "Gasper", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", + "cosmere.leecher": "Leecher", + "cosmere.lurcher": "Lurcher", + "cosmere.nicroburst": "Nicroburst", + "cosmere.oracle": "Oracle", + "cosmere.pinnacle": "Pinnacle", + "cosmere.pulser": "Pulser", + "cosmere.rioter": "Rioter", + "cosmere.seeker": "Seeker", + "cosmere.seer": "Seer", + "cosmere.sentry": "Sentry", + "cosmere.skimmer": "Skimmer", + "cosmere.slider": "Slider", + "cosmere.smoker": "Smoker", + "cosmere.soother": "Soother", + "cosmere.soulbearer": "Soulbearer", + "cosmere.sparker": "Sparker", + "cosmere.spinner": "Spinner", + "cosmere.steelrunner": "Steelrunner", + "cosmere.subsumer": "Subsumer", + "cosmere.thug": "Thug", + "cosmere.tineye": "Tineye", + "cosmere.trueself": "Trueself", + "cosmere.windwhisperer": "Windwhisperer", "effect.cosmere.allomancy_boost": "Allomancy Boost", "effect.cosmere.burning_copper": "Burning Copper", "effect.cosmere.storing_aluminum": "Storing Aluminum", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index f1e8a517a..59853f78d 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -6,7 +6,6 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.patchouli.PatchouliGen; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.Metalmind; import leaf.cosmere.items.curio.HemalurgicSpikeItem; @@ -25,9 +24,7 @@ import net.minecraftforge.registries.ForgeRegistries; import java.nio.file.Path; -import java.util.Arrays; import java.util.Locale; -import java.util.stream.Collectors; import static leaf.cosmere.constants.Constants.Strings.*; @@ -129,23 +126,32 @@ else if (item instanceof Metalmind) { String metalName = metalType.name().toLowerCase(Locale.ROOT); - String a = metalName + " - " + metalType.getMistingName(); - String f = metalName + " - " + metalType.getFerringName(); - String h = metalName; + final String mistingName = metalType.getMistingName(); + final String ferringName = metalType.getFerringName(); + String a = metalName + " - " + mistingName; + String f = metalName + " - " + ferringName; String aKey = "allomantic_" + metalName; String fKey = "feruchemical_" + metalName; String hKey = "hemalurgic_" + metalName; - String allomancyGuide = "cosmere.entry." + aKey; String feruchemyGuide = "cosmere.entry." + fKey; String hemalurgyGuide = "cosmere.entry." + hKey; add(allomancyGuide, StringHelper.fixCapitalisation(a)); add(feruchemyGuide, StringHelper.fixCapitalisation(f)); - add(hemalurgyGuide, StringHelper.fixCapitalisation(h)); + add(hemalurgyGuide, StringHelper.fixCapitalisation(metalName)); + + + if (!metalType.hasAssociatedManifestation()) + { + continue; + } + + add("cosmere." + mistingName, StringHelper.fixCapitalisation(mistingName)); + add("cosmere." + ferringName, StringHelper.fixCapitalisation(ferringName)); } diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index d87481201..4453198a2 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -103,7 +103,7 @@ else if (isTwinborn) spiritwebCapability.giveManifestation(powerType, powerID); //todo translations //todo grant random name - entity.setCustomName(powerType.getManifestation(powerID).translation()); + //entity.setCustomName(powerType.getManifestation(powerID).translation()); } } } From 5cb1d892509a1b1436ead71baaffde973c0e540c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 20 Mar 2022 11:03:26 +1300 Subject: [PATCH 0041/1090] Non-scroll wheel based mode increase/decrease --- Changelog.md | 4 ++-- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 7 +++++-- .../cosmere/cap/entity/SpiritwebCapability.java | 5 ++++- .../java/leaf/cosmere/client/ClientEvents.java | 17 +++++++++++++++-- .../java/leaf/cosmere/constants/Constants.java | 8 ++++++-- .../cosmere/datagen/language/EngLangGen.java | 7 +++++-- .../packets/ChangeManifestationModeMessage.java | 9 +++++++-- .../cosmere/registry/KeybindingRegistry.java | 15 +++++++++++---- 9 files changed, 56 insertions(+), 18 deletions(-) diff --git a/Changelog.md b/Changelog.md index b9614b801..6d84aa8c8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,8 +3,8 @@ The Cosmere Project - For 1.16 Minecraft B24 Fixed creative mode spikes to only contain their correct powers, not both allomancy and feruchemy. -Added localisation for spike tooltips. No more 'cosmere.trueself'. - +Added localisation for spike tooltips. No more 'cosmere.trueself'. +Non-scroll wheel based power mode increase/decrease B23 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index adf0ada94..197f231c8 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -30,7 +30,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -5b29cfb5bc4a184f7552ab7657b5a8233e7a2339 assets/cosmere/lang/en_us.json +a2db106a8bc6d7f2a2a73fcb60dbaa1a013ee7c0 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 5e917fb5e..4230262e0 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -412,8 +412,11 @@ "itemGroup.cosmere.spikes": "Cosmere Spikes", "key.cosmere.allomancy.pull": "Pull", "key.cosmere.allomancy.push": "Push", - "key.cosmere.powers.next": "Mode Next", - "key.cosmere.powers.previous": "Mode Previous", + "key.cosmere.powers.menu": "Powers Menu", + "key.cosmere.powers.mode.decrease": "Mode Decrease", + "key.cosmere.powers.mode.increase": "Mode Increase", + "key.cosmere.powers.next": "Next Power", + "key.cosmere.powers.previous": "Previous Power", "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.aluminum_gnat": "Allomantic Aluminum", diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 457c9dae7..2de2ffce4 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -32,6 +32,7 @@ import net.minecraft.item.Items; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.vector.Vector3d; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.api.distmarker.Dist; @@ -585,6 +586,9 @@ public String changeManifestation(int dir) @Override public void setMode(ManifestationTypes manifestationTypeID, int powerID, int mode) { + AManifestation aim = manifestationTypeID.getManifestation(powerID); + mode = MathHelper.clamp(mode, aim.modeMin(this),aim.modeMax(this)); + MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID] = mode; } @@ -597,7 +601,6 @@ public int getMode(ManifestationTypes manifestationTypeID, int powerID) @Override public int nextMode(ManifestationTypes manifestationType, int powerID) { - AManifestation aim = manifestationType.getManifestation(powerID); int currentMode = getMode(manifestationType, powerID); diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index 43d6177fe..478d8ef04 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -87,15 +87,28 @@ else if (!player.isCrouching()) //todo decide if there is an activation state? } } + //check keybinds with modifiers first? - else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_PREVIOUS)) + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_PREVIOUS)) { Network.sendToServer(new ChangeSelectedManifestationMessage(-1)); } - else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_NEXT)) + else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_NEXT)) { Network.sendToServer(new ChangeSelectedManifestationMessage(1)); } + + + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE)) + { + int dir = (player.isCrouching() ? 3 : 1); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + } + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE)) + { + int dir = (player.isCrouching() ? -3 : -1); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + } }); } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 26288336b..ff61649e3 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -74,8 +74,12 @@ public static class Strings { public static final String KEYS_CATEGORY = "keys.cosmere.main"; - public static final String KEY_MANIFESTATION_MODE_NEXT = "key.cosmere.powers.next"; - public static final String KEY_MANIFESTATION_MODE_PREVIOUS = "key.cosmere.powers.previous"; + public static final String KEY_MANIFESTATION_MODE_INCREASE = "key.cosmere.powers.mode.increase"; + public static final String KEY_MANIFESTATION_MODE_DECREASE = "key.cosmere.powers.mode.decrease"; + + public static final String KEY_MANIFESTATION_NEXT = "key.cosmere.powers.next"; + public static final String KEY_MANIFESTATION_PREVIOUS = "key.cosmere.powers.previous"; + public static final String KEY_MANIFESTATION_TOGGLE = "key.cosmere.powers.toggle"; public static final String KEY_MANIFESTATION_MENU = "key.cosmere.powers.menu"; diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 59853f78d..9b0b7e467 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -211,9 +211,12 @@ else if (item instanceof Metalmind) //KeyBindings add(KEYS_CATEGORY, "Cosmere"); + add(KEY_MANIFESTATION_MENU, "Powers Menu"); add(KEY_MANIFESTATION_TOGGLE, "Toggle Current Powers"); - add(KEY_MANIFESTATION_MODE_NEXT, "Mode Next"); - add(KEY_MANIFESTATION_MODE_PREVIOUS, "Mode Previous"); + add(KEY_MANIFESTATION_NEXT, "Next Power"); + add(KEY_MANIFESTATION_PREVIOUS, "Previous Power"); + add(KEY_MANIFESTATION_MODE_INCREASE, "Mode Increase"); + add(KEY_MANIFESTATION_MODE_DECREASE, "Mode Decrease"); add(KEY_ALLOMANCY_PUSH, "Push"); add(KEY_ALLOMANCY_PULL, "Pull"); diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index ad0762006..b27e4f840 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -37,14 +37,19 @@ public static void handle(ChangeManifestationModeMessage message, Supplier= 0) + if (message.dir == 1) { newMode = cap.nextMode(message.powerType, message.powerID); } - else + else if (message.dir == -1) { newMode = cap.previousMode(message.powerType, message.powerID); } + else if (message.dir != 0) + { + newMode = message.dir + cap.getMode(message.powerType, message.powerID); + cap.setMode(message.powerType, message.powerID, newMode); + } cap.manifestation(message.powerType, message.powerID).onModeChange(cap); diff --git a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java index 204af9f56..22ae17ec2 100644 --- a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java +++ b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java @@ -26,8 +26,11 @@ public class KeybindingRegistry public static KeyBinding MANIFESTATION_MENU; public static KeyBinding MANIFESTATION_TOGGLE; - public static KeyBinding MANIFESTATION_MODE_NEXT; - public static KeyBinding MANIFESTATION_MODE_PREVIOUS; + public static KeyBinding MANIFESTATION_NEXT; + public static KeyBinding MANIFESTATION_PREVIOUS; + + public static KeyBinding MANIFESTATION_MODE_INCREASE; + public static KeyBinding MANIFESTATION_MODE_DECREASE; public static KeyBinding ALLOMANCY_PUSH; public static KeyBinding ALLOMANCY_PULL; @@ -37,8 +40,12 @@ public static void register(FMLClientSetupEvent event) { ClientRegistry.registerKeyBinding(MANIFESTATION_MENU = new KeyBinding(KEY_MANIFESTATION_MENU, GLFW.GLFW_KEY_G, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(MANIFESTATION_TOGGLE = new KeyBinding(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_NEXT = new KeyBinding(KEY_MANIFESTATION_MODE_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_PREVIOUS = createKeybinding(KEY_MANIFESTATION_MODE_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); + + ClientRegistry.registerKeyBinding(MANIFESTATION_NEXT = new KeyBinding(KEY_MANIFESTATION_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_PREVIOUS = createKeybinding(KEY_MANIFESTATION_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); + + ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_INCREASE = new KeyBinding(KEY_MANIFESTATION_MODE_INCREASE, GLFW.GLFW_KEY_KP_ADD, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_DECREASE = new KeyBinding(KEY_MANIFESTATION_MODE_DECREASE, GLFW.GLFW_KEY_KP_SUBTRACT, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(ALLOMANCY_PUSH = new KeyBinding(KEY_ALLOMANCY_PUSH, GLFW.GLFW_KEY_TAB, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(ALLOMANCY_PULL = new KeyBinding(KEY_ALLOMANCY_PULL, GLFW.GLFW_KEY_R, KEYS_CATEGORY)); From ed1eb74134ddd14818aef839ef6852381bf2daeb Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 20 Mar 2022 14:09:47 +1300 Subject: [PATCH 0042/1090] MetalTraderVillager - First pass A villager profession for mod metals. Trades not yet balanced. --- build.gradle | 8 +++ gradle.properties | 2 + src/main/generated/.cache/cache | 6 +- .../blockstates/metalworking_table.json | 7 +++ .../generated/assets/cosmere/lang/en_us.json | 2 + .../models/block/metalworking_table.json | 12 ++++ .../models/item/metalworking_table.json | 3 + .../blocks/metalworking_table.json | 19 ++++++ src/main/java/leaf/cosmere/Cosmere.java | 2 + .../java/leaf/cosmere/blocks/BaseBlock.java | 1 - .../blocks/MetalworkingTableBlock.java | 16 +++++ .../datagen/blocks/BlockModelsGen.java | 16 ++++- .../cosmere/datagen/language/EngLangGen.java | 2 + .../leaf/cosmere/handlers/CommonEvents.java | 57 +++++++++++++++++- .../leaf/cosmere/registry/BlocksRegistry.java | 2 + .../registry/PointOfInterestRegistry.java | 32 ++++++++++ .../registry/VillagerProfessionRegistry.java | 39 ++++++++++++ .../block/metalworking_table_bottom.png | Bin 0 -> 3829 bytes .../block/metalworking_table_front.png | Bin 0 -> 3829 bytes .../block/metalworking_table_side.png | Bin 0 -> 3829 bytes .../textures/block/metalworking_table_top.png | Bin 0 -> 260 bytes .../villager/profession/metal_trader.png | Bin 0 -> 19237 bytes .../profession/metal_trader.png | Bin 0 -> 19237 bytes 23 files changed, 222 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/assets/cosmere/blockstates/metalworking_table.json create mode 100644 src/main/generated/assets/cosmere/models/block/metalworking_table.json create mode 100644 src/main/generated/assets/cosmere/models/item/metalworking_table.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json create mode 100644 src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java create mode 100644 src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java create mode 100644 src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java create mode 100644 src/main/resources/assets/cosmere/textures/block/metalworking_table_bottom.png create mode 100644 src/main/resources/assets/cosmere/textures/block/metalworking_table_front.png create mode 100644 src/main/resources/assets/cosmere/textures/block/metalworking_table_side.png create mode 100644 src/main/resources/assets/cosmere/textures/block/metalworking_table_top.png create mode 100644 src/main/resources/assets/cosmere/textures/entity/villager/profession/metal_trader.png create mode 100644 src/main/resources/assets/cosmere/textures/entity/zombie_villager/profession/metal_trader.png diff --git a/build.gradle b/build.gradle index c74f63407..653ef9855 100644 --- a/build.gradle +++ b/build.gradle @@ -151,6 +151,10 @@ repositories { //HWYLA url "https://maven.tehnut.info" } + maven { + //Mekanism Maven + url 'https://modmaven.dev/' + } maven { url "https://www.cursemaven.com" content { @@ -180,9 +184,13 @@ dependencies { compileOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}:api") runtimeOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}") + //runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}")// core + //runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:generators")// Mekanism: Generators + //modname-modid:fileid? implementation fg.deobf("curse.maven:appleskin-248787:3035787") implementation fg.deobf("curse.maven:journeymap-32274:3397059") + runtimeOnly fg.deobf("curse.maven:configured-457570:${configured_version}") //implementation fg.deobf("curse.maven:ctm-267602:2642375") } diff --git a/gradle.properties b/gradle.properties index 05eca541d..02d27946e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,3 +9,5 @@ org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 build_number=23 patchouli_version=1.16.4-51 +mekanism_version=1.16.5-10.1.2.457 +configured_version=3546348 \ No newline at end of file diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 197f231c8..aafd8274f 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -19,6 +19,7 @@ b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/lead_ore.jso edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasatium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/malatium_block.json +b7fea0968724d1ad3bb8d3eaa893667b4899d744 assets/cosmere/blockstates/metalworking_table.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nickel_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/nickel_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nicrosil_block.json @@ -30,9 +31,10 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -a2db106a8bc6d7f2a2a73fcb60dbaa1a013ee7c0 assets/cosmere/lang/en_us.json +6b0e26f06a98b0b1ad7095fa045e4e409f0a8da4 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json +ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/aluminum_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/aluminum_bracelet_metalmind.json @@ -147,6 +149,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/malatium_blo 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/malatium_nugget.json 45d33d2231ada448f0a42f23b32d57a9737f201c assets/cosmere/models/item/metal_file.json 9d01417efc6918521ae556205bb9211690ff7815 assets/cosmere/models/item/metal_vial.json +c7e621c8d9d94abc4540db803136d438f3065054 assets/cosmere/models/item/metalworking_table.json 9176709acb147045124b3b6d6e9145513a7db4d6 assets/cosmere/models/item/mist_cloak.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nickel_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nickel_ingot.json @@ -486,6 +489,7 @@ ca0808cbb0b0f99019748c3506c876b2f497710c data/cosmere/loot_tables/blocks/lead_or ed087df0e93d4725cd15a549e542c6d5a2089dce data/cosmere/loot_tables/blocks/lerasatium_block.json f296d224216142d13dfcc76dd2db5a5fdc3e8992 data/cosmere/loot_tables/blocks/lerasium_block.json 5ee2891109c30cfdea86f9cdb3c48834c8a6ffd6 data/cosmere/loot_tables/blocks/malatium_block.json +919b6f5a4e51c6f253bb6683da288f51d1dc1898 data/cosmere/loot_tables/blocks/metalworking_table.json 17c8511131913ac28d55b6511bc5867762fbd3d7 data/cosmere/loot_tables/blocks/nickel_block.json a0c95aba2004a8460ad789e320f7ca095cdd174f data/cosmere/loot_tables/blocks/nickel_ore.json 444342885d79187e98bcd6a940843760c93b1c04 data/cosmere/loot_tables/blocks/nicrosil_block.json diff --git a/src/main/generated/assets/cosmere/blockstates/metalworking_table.json b/src/main/generated/assets/cosmere/blockstates/metalworking_table.json new file mode 100644 index 000000000..e7c9b2d4b --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/metalworking_table.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/metalworking_table" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 4230262e0..2b85a9f34 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -21,6 +21,7 @@ "block.cosmere.lerasatium_block": "Lerasatium Block", "block.cosmere.lerasium_block": "Lerasium Block", "block.cosmere.malatium_block": "Malatium Block", + "block.cosmere.metalworking_table": "Metalworking Table", "block.cosmere.nickel_block": "Nickel Block", "block.cosmere.nickel_ore": "Nickel Ore", "block.cosmere.nicrosil_block": "Nicrosil Block", @@ -183,6 +184,7 @@ "effect.cosmere.tapping_tin": "Tapping Tin", "effect.cosmere.tapping_zinc": "Tapping Zinc", "entity.cosmere.spren_flame": "Spren Flame", + "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "gui.cosmere.button.back": "Back", "gui.cosmere.cancel": "> Cancel", "gui.cosmere.confirm": "> Confirm", diff --git a/src/main/generated/assets/cosmere/models/block/metalworking_table.json b/src/main/generated/assets/cosmere/models/block/metalworking_table.json new file mode 100644 index 000000000..175592851 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/block/metalworking_table.json @@ -0,0 +1,12 @@ +{ + "parent": "minecraft:block/cube", + "textures": { + "particle": "cosmere:block/metalworking_table_front", + "north": "cosmere:block/metalworking_table_front", + "south": "cosmere:block/metalworking_table_front", + "east": "cosmere:block/metalworking_table_side", + "west": "cosmere:block/metalworking_table_side", + "up": "cosmere:block/metalworking_table_top", + "down": "cosmere:block/metalworking_table_bottom" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/metalworking_table.json b/src/main/generated/assets/cosmere/models/item/metalworking_table.json new file mode 100644 index 000000000..52f734613 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/metalworking_table.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/metalworking_table" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json new file mode 100644 index 000000000..c654d7bef --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:metalworking_table" + } + ], + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 500bfb9c7..4327ed3f7 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -51,6 +51,8 @@ public Cosmere() ManifestationRegistry.MANIFESTATIONS.register(modBus); AttributesRegistry.ATTRIBUTES.register(modBus); EntityRegistry.ENTITIES.register(modBus); + PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); + VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); FeatureRegistry.FEATURES.register(modBus); RecipeRegistry.SPECIAL_RECIPES.register(modBus); diff --git a/src/main/java/leaf/cosmere/blocks/BaseBlock.java b/src/main/java/leaf/cosmere/blocks/BaseBlock.java index 2f315af27..b47eee710 100644 --- a/src/main/java/leaf/cosmere/blocks/BaseBlock.java +++ b/src/main/java/leaf/cosmere/blocks/BaseBlock.java @@ -14,7 +14,6 @@ public class BaseBlock extends Block public BaseBlock(Properties properties, SoundType sound, float hardness, float resistance) { - super(properties.sound(sound).strength(hardness, resistance)); } diff --git a/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java b/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java new file mode 100644 index 000000000..6f4d65b8f --- /dev/null +++ b/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java @@ -0,0 +1,16 @@ +/* + * File created ~ 20 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.blocks; + +import leaf.cosmere.properties.PropTypes; +import net.minecraft.block.SoundType; + +public class MetalworkingTableBlock extends BaseBlock +{ + public MetalworkingTableBlock() + { + super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); + } +} diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java index eebc8317a..5c0360a09 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java @@ -6,8 +6,9 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.blocks.MetalBlock; -import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import leaf.cosmere.blocks.MetalworkingTableBlock; import leaf.cosmere.registry.BlocksRegistry; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.block.Block; import net.minecraft.block.OreBlock; import net.minecraft.data.DataGenerator; @@ -42,6 +43,19 @@ protected void registerStatesAndModels() simpleBlock(itemRegistryObject.get(), blockModel); continue; } + else if (itemRegistryObject.get() instanceof MetalworkingTableBlock) + { + ModelFile blockModel = models().withExistingParent("metalworking_table", new ResourceLocation("block/cube")) + .texture("particle", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("north", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("south", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("east", ResourceLocationHelper.prefix("block/metalworking_table_side")) + .texture("west", ResourceLocationHelper.prefix("block/metalworking_table_side")) + .texture("up", ResourceLocationHelper.prefix("block/metalworking_table_top")) + .texture("down", ResourceLocationHelper.prefix("block/metalworking_table_bottom")); + simpleBlock(itemRegistryObject.get(), blockModel); + continue; + } else if (itemRegistryObject.get() instanceof OreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 9b0b7e467..fe15c3296 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -74,6 +74,7 @@ else if (item instanceof Metalmind) } //Entities + add("entity.minecraft.villager.cosmere.metal_trader", "Metal Trader"); for (EntityType type : ForgeRegistries.ENTITIES) { if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) @@ -82,6 +83,7 @@ else if (item instanceof Metalmind) } } + //innate for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 0fcec29f1..60b4756e2 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -6,19 +6,32 @@ import leaf.cosmere.Cosmere; +import leaf.cosmere.blocks.MetalOreBlock; import leaf.cosmere.commands.CosmereCommand; import leaf.cosmere.commands.permissions.PermissionManager; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.LogHelper; +import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.FeatureRegistry; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.VillagerProfessionRegistry; +import leaf.cosmere.utils.helpers.LogHelper; +import net.minecraft.entity.merchant.villager.VillagerTrades; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.GenerationStage; +import net.minecraftforge.common.BasicTrade; import net.minecraftforge.event.RegisterCommandsEvent; +import net.minecraftforge.event.village.VillagerTradesEvent; import net.minecraftforge.event.world.BiomeLoadingEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; +import net.minecraftforge.registries.ForgeRegistries; import java.util.Arrays; import java.util.List; @@ -67,4 +80,46 @@ public static void onBiomeLoad(BiomeLoadingEvent event) } } + + @SubscribeEvent + public static void registerTrades(VillagerTradesEvent event) + { + if (event.getType() == VillagerProfessionRegistry.METAL_TRADER.get()) + { + for (int i = 1; i <= 5 ; i++) + { + final List tradesForLevel = event.getTrades().get(i); + switch (i) + { + case 1: + for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) + { + tradesForLevel.add(new BasicTrade(1, new ItemStack(item.get(), 16),2,1)); + } + break; + case 2: + for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) + { + tradesForLevel.add(new BasicTrade(10, new ItemStack(item.get()),3,2)); + } + break; + case 3: + tradesForLevel.add(new BasicTrade(10, new ItemStack(ItemsRegistry.METAL_VIAL.get(),16),2,3)); + break; + case 4: + for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) + { + tradesForLevel.add(new BasicTrade(23, new ItemStack(item.get()),6,4)); + } + break; + case 5: + for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) + { + tradesForLevel.add(new BasicTrade(23, new ItemStack(item.get()),1,5)); + } + break; + } + } + } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index a87b42a71..3e73fd832 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -11,6 +11,7 @@ import leaf.cosmere.blocks.BaseBlock; import leaf.cosmere.blocks.MetalBlock; import leaf.cosmere.blocks.MetalOreBlock; +import leaf.cosmere.blocks.MetalworkingTableBlock; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; @@ -34,6 +35,7 @@ public class BlocksRegistry { public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Cosmere.MODID); public static final RegistryObject GEM_BLOCK = register("gem_block", () -> (new BaseBlock(PropTypes.Blocks.EXAMPLE.get(), SoundType.STONE, 1F, 2F)), Rarity.COMMON); + public static final RegistryObject METALWORKING_TABLE = register("metalworking_table", () -> (new MetalworkingTableBlock()), Rarity.COMMON); public static final Map> METAL_BLOCKS = Arrays.stream(Metals.MetalType.values()) diff --git a/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java new file mode 100644 index 000000000..f4e428935 --- /dev/null +++ b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java @@ -0,0 +1,32 @@ +/* + * File created ~ 20 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.registry; + +import com.google.common.collect.ImmutableSet; +import leaf.cosmere.Cosmere; +import net.minecraft.block.Block; +import net.minecraft.village.PointOfInterestType; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.function.Supplier; + +public class PointOfInterestRegistry +{ + public static DeferredRegister POINT_OF_INTERESTS = DeferredRegister.create(ForgeRegistries.POI_TYPES, Cosmere.MODID); + + public static RegistryObject METAL_TRADER_POI = POINT_OF_INTERESTS.register("metal_trader", () -> registerPOI("metal_trader", BlocksRegistry.METALWORKING_TABLE::get)); + + + private static PointOfInterestType registerPOI(String name, Supplier block) + { + return new PointOfInterestType( + "cosmere:" + name,//name + ImmutableSet.copyOf(block.get().getStateDefinition().getPossibleStates()),//states + 1, //tickets(?) + 1);//range + } +} diff --git a/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java new file mode 100644 index 000000000..52757ebe9 --- /dev/null +++ b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java @@ -0,0 +1,39 @@ +/* + * File created ~ 20 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.registry; + +import com.google.common.collect.ImmutableSet; +import leaf.cosmere.Cosmere; +import net.minecraft.entity.merchant.villager.VillagerProfession; +import net.minecraft.util.SoundEvent; +import net.minecraft.util.SoundEvents; +import net.minecraft.village.PointOfInterestType; +import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.function.Supplier; + +public class VillagerProfessionRegistry +{ + public static DeferredRegister VILLAGE_PROFESSIONS = DeferredRegister.create(ForgeRegistries.PROFESSIONS, Cosmere.MODID); + + public static final RegistryObject METAL_TRADER = VILLAGE_PROFESSIONS.register( + "metal_trader", + () -> registerProfession( + "metal_trader", + () -> PointOfInterestRegistry.METAL_TRADER_POI.get(), + SoundEvents.VILLAGER_WORK_TOOLSMITH)); + + public static VillagerProfession registerProfession(String name, Supplier poi, SoundEvent workSound) + { + return new VillagerProfession( + "cosmere:" + name, + poi.get(), + ImmutableSet.of(), + ImmutableSet.of(), + workSound); + } +} diff --git a/src/main/resources/assets/cosmere/textures/block/metalworking_table_bottom.png b/src/main/resources/assets/cosmere/textures/block/metalworking_table_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..09b27182ffeb00e707fd848d8e048fbb3e474b6a GIT binary patch literal 3829 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 p-vsnyQCKL5;-mrq&>9))T9J?e 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/metalworking_table_side.png b/src/main/resources/assets/cosmere/textures/block/metalworking_table_side.png new file mode 100644 index 0000000000000000000000000000000000000000..18cd5ec8530d87e5bd7fbeff1b5cee6395bd5e5c GIT binary patch literal 3829 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 Q>p7V)HMBA)hdbZ>AC`#Ug8%>k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/metalworking_table_top.png b/src/main/resources/assets/cosmere/textures/block/metalworking_table_top.png new file mode 100644 index 0000000000000000000000000000000000000000..7099674fab65c127fec680e26f4dc6595d4837c3 GIT binary patch literal 260 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 Y&wzU`oL9sDqX+;?( Date: Sun, 20 Mar 2022 14:22:28 +1300 Subject: [PATCH 0043/1090] Metalworking table recipe --- src/main/generated/.cache/cache | 2 ++ .../cosmere.blocks/metalworking_table.json | 32 +++++++++++++++++++ .../cosmere/recipes/metalworking_table.json | 19 +++++++++++ .../java/leaf/cosmere/datagen/RecipeGen.java | 10 ++++++ 4 files changed, 63 insertions(+) create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json create mode 100644 src/main/generated/data/cosmere/recipes/metalworking_table.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index aafd8274f..d951a6fbf 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -263,6 +263,7 @@ b8dcebeb0b2de266a6efd8f8867699f2751fec9d data/cosmere/advancements/recipes/cosme db116e042eae254e0a83ada568028d438ade2b32 data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json 898f7d1be97861d04bc588cd35ecd8023f399884 data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json aa49970716ee55b78755e54fcbb50531e592d216 data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json +f07012e606e5267f6cb4427414e6471a24b0a597 data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json dfbb963058f7cfb1dd706d82fafa427a860cf37b data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json e79e32108693c93dff53caff1be412bff7a268f9 data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json fc0c5cebe021fb12da68f8069578aa64bb21e1b2 data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json @@ -721,6 +722,7 @@ dd2ff61f372ff445523089553ac376a09c44b740 data/cosmere/recipes/lerasium_block.jso cb123ca5fd8f39e2c3fd8a2662244b8bcc330bb4 data/cosmere/recipes/malatium_block.json c6c8c4d290b8624c11982ad2431c8bba7627afa3 data/cosmere/recipes/malatium_ingot.json ae541ba7e9fffcaae3aa546904c0fad97360561a data/cosmere/recipes/metal_vial.json +1f0678d827315265f8bec6875f579784cc8f100d data/cosmere/recipes/metalworking_table.json 495d57488ff18f32c787b50726938b6138cb580a data/cosmere/recipes/nickel_block.json cfafd2d5b45667269d2af355179e698438d688dd data/cosmere/recipes/nickel_ingot.json 2ac13b480bfa8d19745a6110e7dfbc517f6e2962 data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json new file mode 100644 index 000000000..c077bd871 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:metalworking_table" + ] + }, + "criteria": { + "has_material": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:metalworking_table" + } + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/metalworking_table.json b/src/main/generated/data/cosmere/recipes/metalworking_table.json new file mode 100644 index 000000000..dcaa2cc76 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/metalworking_table.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "pattern": [ + "XX", + "YY", + "YY" + ], + "key": { + "X": { + "tag": "forge:ingots" + }, + "Y": { + "tag": "minecraft:planks" + } + }, + "result": { + "item": "cosmere:metalworking_table" + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index 5a90da0a1..c2aa8b5bd 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -52,6 +52,16 @@ protected void buildShapelessRecipes(Consumer consumer) ShapedRecipeBuilder.shaped(ItemsRegistry.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); + ShapedRecipeBuilder + .shaped(BlocksRegistry.METALWORKING_TABLE.get()) + .define('X', Tags.Items.INGOTS) + .define('Y', ItemTags.PLANKS) + .pattern("XX") + .pattern("YY") + .pattern("YY") + .unlockedBy("has_material", has(Tags.Items.INGOTS)) + .save(consumer); + CustomRecipeBuilder.special(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).save(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); for (Metals.MetalType metalType : Metals.MetalType.values()) From 5aa16a55d942df07efd2ab01fe87ff4bd84c3b3c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 10:24:18 +1300 Subject: [PATCH 0044/1090] Parchment mappings on top of official. --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 653ef9855..1ff06dbf8 100644 --- a/build.gradle +++ b/build.gradle @@ -2,16 +2,19 @@ buildscript { repositories { maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://repo.spongepowered.org/repository/maven-public' } + maven { url = 'https://maven.parchmentmc.org' } mavenCentral() } dependencies { classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath group: 'org.spongepowered', name: 'mixingradle', version: '0.7-SNAPSHOT' + classpath 'org.parchmentmc:librarian:1.+' } } apply plugin: 'net.minecraftforge.gradle' // Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. apply plugin: 'org.spongepowered.mixin' +apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' @@ -43,7 +46,7 @@ minecraft { // // Use non-default mappings at your own risk. they may not always work. // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'official', version: '1.16.5' + mappings channel: 'parchment', version: '2022.03.06-1.16.5' // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') From 765345b3de63d9a05e18806200174333b2a1ac81 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 10:25:03 +1300 Subject: [PATCH 0045/1090] Updated potential metalborn list --- Changelog.md | 1 + .../leaf/cosmere/handlers/EntityEventHandler.java | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Changelog.md b/Changelog.md index 6d84aa8c8..bab0217f0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -5,6 +5,7 @@ B24 Fixed creative mode spikes to only contain their correct powers, not both allomancy and feruchemy. Added localisation for spike tooltips. No more 'cosmere.trueself'. Non-scroll wheel based power mode increase/decrease +Wandering trader and several Illager types added to list of potential metalborn mobs. B23 diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 5a090ebca..b28c1c61a 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -18,11 +18,10 @@ import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; import net.minecraft.entity.merchant.villager.VillagerEntity; -import net.minecraft.entity.monster.AbstractIllagerEntity; -import net.minecraft.entity.monster.MonsterEntity; -import net.minecraft.entity.monster.WitchEntity; -import net.minecraft.entity.monster.ZombieVillagerEntity; +import net.minecraft.entity.monster.*; +import net.minecraft.entity.monster.piglin.AbstractPiglinEntity; import net.minecraft.entity.monster.piglin.PiglinEntity; import net.minecraft.entity.passive.AnimalEntity; import net.minecraft.entity.passive.CatEntity; @@ -81,11 +80,10 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) giveEntityStartingManifestation(livingEntity, spiritweb); } } - else if (eventEntity instanceof VillagerEntity + else if (eventEntity instanceof AbstractVillagerEntity || eventEntity instanceof ZombieVillagerEntity - || eventEntity instanceof AbstractIllagerEntity - || eventEntity instanceof WitchEntity - || eventEntity instanceof PiglinEntity) + || (eventEntity instanceof AbstractRaiderEntity && !(eventEntity instanceof RavagerEntity)) + || eventEntity instanceof AbstractPiglinEntity) { //random 1/16 // only 1 in 16 will have the gene From f6976e40f94f7e316c554c5d897def84f9f4495b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 10:48:12 +1300 Subject: [PATCH 0046/1090] Disable items without textures or are unused. --- .../leaf/cosmere/registry/ItemsRegistry.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 9d5a47f54..adba2b69c 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -37,22 +37,22 @@ public class ItemsRegistry //other items public static final RegistryObject GUIDE = ITEMS.register("guide", () -> createItem(new GuideItem())); - public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); + //public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); - public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); - public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); + //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); + //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); - public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); + //public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); + //public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); - public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); + //public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); - public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); - public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); //Mass items gen From 7653bc8e754ff31350e037d6249ae5c099dd55c0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 10:58:22 +1300 Subject: [PATCH 0047/1090] Update metal_vial.png --- .../assets/cosmere/textures/item/metal_vial.png | Bin 82 -> 2882 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/item/metal_vial.png b/src/main/resources/assets/cosmere/textures/item/metal_vial.png index 2d890a402873091a1d26700aa4db6e7bec0174d8..c60e6920b07bf24d002c24ef5d7fd5599e5ae707 100644 GIT binary patch literal 2882 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 REC4EE@O1TaS?83{1OQZi63+kt From 821cf68889e2009ff3dc3aa00cc317ca9ffd5d51 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 11:02:49 +1300 Subject: [PATCH 0048/1090] Remove reference to investiture item --- src/main/java/leaf/cosmere/handlers/EntityEventHandler.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index b28c1c61a..6c55fa96a 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -125,12 +125,12 @@ public static void onEntityItemPickUp(EntityItemPickupEvent event) { //seriously, get item three times is stupid, I know it. //but entity item, itemstack and then the actual item is needed. - if (event.getItem().getItem().getItem() == ItemsRegistry.INVESTITURE.get()) +/* if (event.getItem().getItem().getItem() == ItemsRegistry.INVESTITURE.get()) { event.getItem().getItem().shrink(1); ItemChargeHelper.dispatchCharge(event.getPlayer(), 1000, true); - } + }*/ } @SubscribeEvent From 1737a752c22e87e07c24ed66071450bfe03be895 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 12:10:33 +1300 Subject: [PATCH 0049/1090] Bumping ore spawn rate Bumping ore spawn rate, should be closer but not quite as common as iron --- .../java/leaf/cosmere/registry/FeatureRegistry.java | 10 +++++----- src/main/java/leaf/cosmere/registry/TagsRegistry.java | 9 ++++++++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index c740d13d0..b9d3da882 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -44,6 +44,8 @@ public class FeatureRegistry public static class ConfiguredFeatures { + //todo have ore specific changes, rather than all using the same settings + //reference Features.java public static final Map> ORE_FEATURES = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasOre) @@ -51,12 +53,10 @@ public static class ConfiguredFeatures Function.identity(), metalType -> FeatureRegistry.ORE_FEATURES.get(metalType).get().configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, - BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState(), 5)) //vein size of 5 - .decorated( - Placement.RANGE.configured(new TopSolidRangeConfig(6, 0, 64)) - .chance(5))//Config.COMMON_SPEC.oreSpawnChance.get(metalType).get()))//todo config vein size based on ore type + BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState(), 8)) + .range(64) .squared() - .count(5) + .count(15) )); } diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index da41e8c73..9ef205d60 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -62,7 +62,7 @@ public static class Items Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("raw/" + type.name().toLowerCase()))); + type -> forgeItemTag("raw_materials/" + type.name().toLowerCase()))); public static final Map> METAL_DUST_TAGS = Arrays.stream(Metals.MetalType.values()) @@ -118,6 +118,13 @@ public static ITag.INamedTag makeBlock(String domain, String path) public static ITag.INamedTag DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); public static ITag.INamedTag WITHER_PROOF = makeBlock("minecraft", "wither_immune"); + public static final Map> METAL_ORE_BLOCK_TAGS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeTag("ores/" + type.name().toLowerCase()))); + public static final Map> METAL_BLOCK_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( From fbe6deb29319c9f5440e4c5b78e4b702f88849dd Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 12:13:09 +1300 Subject: [PATCH 0050/1090] Tag updates --- src/main/generated/.cache/cache | 67 ++++++++++--------- .../generated/assets/cosmere/lang/en_us.json | 8 --- .../cosmere/models/item/copper_clip.json | 6 -- .../cosmere/models/item/gold_boxing.json | 6 -- .../cosmere/models/item/investiture.json | 6 -- .../assets/cosmere/models/item/jar_empty.json | 6 -- .../cosmere/models/item/jar_of_blood.json | 6 -- .../cosmere/models/item/metal_file.json | 6 -- .../cosmere/models/item/mist_cloak.json | 6 -- .../cosmere/models/item/obsidian_dagger.json | 6 -- .../recipes/alloying/blend/bendalloy.json | 18 ++--- .../cosmere/recipes/alloying/blend/brass.json | 4 +- .../recipes/alloying/blend/bronze.json | 8 +-- .../recipes/alloying/blend/duralumin.json | 10 +-- .../recipes/alloying/blend/electrum.json | 2 +- .../recipes/alloying/blend/nicrosil.json | 8 +-- .../recipes/alloying/blend/pewter.json | 10 +-- .../data/forge/tags/blocks/ores/aluminum.json | 6 ++ .../data/forge/tags/blocks/ores/cadmium.json | 6 ++ .../data/forge/tags/blocks/ores/chromium.json | 6 ++ .../data/forge/tags/blocks/ores/copper.json | 6 ++ .../data/forge/tags/blocks/ores/lead.json | 6 ++ .../data/forge/tags/blocks/ores/nickel.json | 6 ++ .../data/forge/tags/blocks/ores/silver.json | 6 ++ .../data/forge/tags/blocks/ores/tin.json | 6 ++ .../data/forge/tags/blocks/ores/zinc.json | 6 ++ .../{raw => raw_materials}/aluminum.json | 0 .../{raw => raw_materials}/bendalloy.json | 0 .../items/{raw => raw_materials}/brass.json | 0 .../items/{raw => raw_materials}/bronze.json | 0 .../items/{raw => raw_materials}/cadmium.json | 0 .../{raw => raw_materials}/chromium.json | 0 .../items/{raw => raw_materials}/copper.json | 0 .../{raw => raw_materials}/duralumin.json | 0 .../{raw => raw_materials}/electrum.json | 0 .../items/{raw => raw_materials}/lead.json | 0 .../items/{raw => raw_materials}/nickel.json | 0 .../{raw => raw_materials}/nicrosil.json | 0 .../items/{raw => raw_materials}/pewter.json | 0 .../items/{raw => raw_materials}/silver.json | 0 .../items/{raw => raw_materials}/steel.json | 0 .../items/{raw => raw_materials}/tin.json | 0 .../items/{raw => raw_materials}/zinc.json | 0 .../java/leaf/cosmere/constants/Metals.java | 3 + .../cosmere/datagen/blocks/BlockTagsGen.java | 5 ++ 45 files changed, 126 insertions(+), 119 deletions(-) delete mode 100644 src/main/generated/assets/cosmere/models/item/copper_clip.json delete mode 100644 src/main/generated/assets/cosmere/models/item/gold_boxing.json delete mode 100644 src/main/generated/assets/cosmere/models/item/investiture.json delete mode 100644 src/main/generated/assets/cosmere/models/item/jar_empty.json delete mode 100644 src/main/generated/assets/cosmere/models/item/jar_of_blood.json delete mode 100644 src/main/generated/assets/cosmere/models/item/metal_file.json delete mode 100644 src/main/generated/assets/cosmere/models/item/mist_cloak.json delete mode 100644 src/main/generated/assets/cosmere/models/item/obsidian_dagger.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/aluminum.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/cadmium.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/chromium.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/copper.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/lead.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/nickel.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/silver.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/tin.json create mode 100644 src/main/generated/data/forge/tags/blocks/ores/zinc.json rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/aluminum.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/bendalloy.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/brass.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/bronze.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/cadmium.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/chromium.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/copper.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/duralumin.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/electrum.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/lead.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/nickel.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/nicrosil.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/pewter.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/silver.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/steel.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/tin.json (100%) rename src/main/generated/data/forge/tags/items/{raw => raw_materials}/zinc.json (100%) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index d951a6fbf..2e5f4bbc5 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -6b0e26f06a98b0b1ad7095fa045e4e409f0a8da4 assets/cosmere/lang/en_us.json +b16cca6b33ef661fc78b980f56eaa138b127d362 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -93,7 +93,6 @@ b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/chromium_rin e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/chromium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/copper_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_bracelet_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_clip.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/copper_ingot.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/copper_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_nugget.json @@ -117,7 +116,6 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bra b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/electrum_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spike.json 093a7aadc79fe47013d29ba53bb9df540b27dba5 assets/cosmere/models/item/gem_block.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/gold_boxing.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/gold_ring_metalmind.json @@ -126,13 +124,10 @@ f9c2f8e60d6f55d0b91bf2558b3d7f6a84f3b9b5 assets/cosmere/models/item/guide.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/harmonium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/harmonium_nugget.json -f11e9a45aa354d4df9e7636e8c902c2f681766a0 assets/cosmere/models/item/investiture.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/iron_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/iron_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/iron_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/iron_spike.json -9e352e2717f6edf732b4bbf3d212914a7b51285d assets/cosmere/models/item/jar_empty.json -a10cbf1bb54747fe560d25c247d500ec9d69aa46 assets/cosmere/models/item/jar_of_blood.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lead_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lead_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lead_nugget.json @@ -147,10 +142,8 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/lerasium_spi a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/malatium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/malatium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/malatium_nugget.json -45d33d2231ada448f0a42f23b32d57a9737f201c assets/cosmere/models/item/metal_file.json 9d01417efc6918521ae556205bb9211690ff7815 assets/cosmere/models/item/metal_vial.json c7e621c8d9d94abc4540db803136d438f3065054 assets/cosmere/models/item/metalworking_table.json -9176709acb147045124b3b6d6e9145513a7db4d6 assets/cosmere/models/item/mist_cloak.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nickel_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nickel_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nickel_nugget.json @@ -163,7 +156,6 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bra 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nicrosil_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/nicrosil_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/nicrosil_spike.json -6d89a042c6a452025eff1c4db53e238f51db0d0b assets/cosmere/models/item/obsidian_dagger.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/pewter_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/pewter_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/pewter_bracelet_metalmind.json @@ -558,13 +550,13 @@ e3274b4c0afa58e7398b392f56aef69713415105 data/cosmere/patchouli_books/guide/en_u 479519e22151caefb9566658d708b733a5c2f0bd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json d6fc47c03247238c43edde161d2f4895c03708a7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json aa1907ef13e169b4879b82f8e07a15fb083a3b30 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json -ef929c9d842ecbe88bce267f06307ec24586f3bd data/cosmere/recipes/alloying/blend/bendalloy.json -8bfd08347f094726f7f398b1ce406a7d8b7600f4 data/cosmere/recipes/alloying/blend/brass.json -eb541ff21f858cc1553b142cad3ad0365e0bedbf data/cosmere/recipes/alloying/blend/bronze.json -9d9508473983fed527bce8535701db131bf6fc88 data/cosmere/recipes/alloying/blend/duralumin.json -215a13a61dd03503f245589b9f62867fc8d01cbf data/cosmere/recipes/alloying/blend/electrum.json -8a162671927664e50492e5260ffb2752a728effe data/cosmere/recipes/alloying/blend/nicrosil.json -a66d22363758cd30a0b524e5976fdb9a0b738f60 data/cosmere/recipes/alloying/blend/pewter.json +dc61a3e81ab1124cab2a9b211ba2cc97593c44a8 data/cosmere/recipes/alloying/blend/bendalloy.json +a431820155ce3767ebcadbb8ebbb39d3e2f78ef5 data/cosmere/recipes/alloying/blend/brass.json +de3927c12acfd3a0d4e6ad0cd0c5d192d41d889c data/cosmere/recipes/alloying/blend/bronze.json +c389cca8ae03978be0ff6304aad32c78385380d5 data/cosmere/recipes/alloying/blend/duralumin.json +d2fb8aec14129cf38f0fdc65da96b39da2141d8e data/cosmere/recipes/alloying/blend/electrum.json +83f2ac06d4c87ba938d173814cdc0ddbdd5a8154 data/cosmere/recipes/alloying/blend/nicrosil.json +d1572e113e37ea7c70ca95a4c46a58d69fc48965 data/cosmere/recipes/alloying/blend/pewter.json 89d949e41d124d28b55485de4dba3aa17f3f8c7a data/cosmere/recipes/alloying/blend/steel.json 0ef450c28fae11c06e23607e74106975c6a7b9a0 data/cosmere/recipes/aluminum_block.json 506ed252c05dfb3f5a8abf4097c561bb59bba36f data/cosmere/recipes/aluminum_bracelet_metalmind.json @@ -785,6 +777,15 @@ b37675f80320064d0f85e5df877ce3291f7e861c data/cosmere/tags/items/spike.json b37675f80320064d0f85e5df877ce3291f7e861c data/curios/tags/items/curio.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json +f5b416f3fe61239a50d82fae0dd54f5e8b4b0df7 data/forge/tags/blocks/ores/aluminum.json +e22f37d7af5f06278e822a4904a89b450b64e958 data/forge/tags/blocks/ores/cadmium.json +4b9f571ae1e74c979d8a8dd634fbb50af0c744cf data/forge/tags/blocks/ores/chromium.json +78c5c2a88835e193bf54170db74e2314e57a53d3 data/forge/tags/blocks/ores/copper.json +fe94054a6e0bb1d0124667b81f03a4aad73a113a data/forge/tags/blocks/ores/lead.json +46a41519749ba29902c4c73f82632fce0ba2be79 data/forge/tags/blocks/ores/nickel.json +bba17dc9bc1f143dab38885c0731c80acd68c01e data/forge/tags/blocks/ores/silver.json +76060ddbd9b7f4b35569226f693126de396f6868 data/forge/tags/blocks/ores/tin.json +91f72cdcc00ca284de29df2d512358873332b235 data/forge/tags/blocks/ores/zinc.json f963f2d004e93e755b9b88c212159e1999e442a9 data/forge/tags/blocks/storage_blocks.json 3d5ad66889ba2954ba4b68386cc07115f0bf68d1 data/forge/tags/blocks/storage_blocks/aluminum.json 96e63f4f07ad6d42e660685736c6a5c2b0ab10ad data/forge/tags/blocks/storage_blocks/atium.json @@ -854,23 +855,23 @@ f59dee005861689e2d5335f475d39ca587725f28 data/forge/tags/items/nuggets/nicrosil. 31726e301b6d1798698825f390dc46e2b2824947 data/forge/tags/items/nuggets/steel.json 26d4e2dded22cf2dec9f5d26c4e8851cc9d5a2a7 data/forge/tags/items/nuggets/tin.json 57ad2b990da7ef8ebcdf45451bcf3564f60bb2fa data/forge/tags/items/nuggets/zinc.json -979a79dbdb8a490e550ce19045335f2b87d97d54 data/forge/tags/items/raw/aluminum.json -218a8f126d873e0271641b652331d08f6c707388 data/forge/tags/items/raw/bendalloy.json -cee76efe589672fd718ee3c09342ce3b84c6cbbd data/forge/tags/items/raw/brass.json -c4765f0747da1146d378568813a6022750baeab4 data/forge/tags/items/raw/bronze.json -ff2b08cdd1bef52a34eeaf70906b923a75a1ba37 data/forge/tags/items/raw/cadmium.json -fad25922761338ee51148b75c1f9b4a0f55c832b data/forge/tags/items/raw/chromium.json -082b8cfd85e7475c8c8e30875b5dcac92e429cf2 data/forge/tags/items/raw/copper.json -723ac5ad1792eea5a6c7d46b2c803b098302a8eb data/forge/tags/items/raw/duralumin.json -050c4e42f992c2e14c6aa47574fe23ac39a37f8c data/forge/tags/items/raw/electrum.json -5de0cc5f0733376a7fef274a2e60e391ea2aec1b data/forge/tags/items/raw/lead.json -6034c0399eadf3bdc5f92ee5b27beee09796ab77 data/forge/tags/items/raw/nickel.json -8adb3ddefba131dccc4a420b1659c40e77bca793 data/forge/tags/items/raw/nicrosil.json -52d40975a6da5e22f502bc9fc002c10d576833cc data/forge/tags/items/raw/pewter.json -5dd70e57464ffcad901d6084335b21b16b98458b data/forge/tags/items/raw/silver.json -417762db9433c7a4340557013b440f6c01342f78 data/forge/tags/items/raw/steel.json -bae99e6f06e5dec13233d0fc0a1116dd5b166c63 data/forge/tags/items/raw/tin.json -d413d0dad40fc884762eda82b9f39a50cc0a3010 data/forge/tags/items/raw/zinc.json +979a79dbdb8a490e550ce19045335f2b87d97d54 data/forge/tags/items/raw_materials/aluminum.json +218a8f126d873e0271641b652331d08f6c707388 data/forge/tags/items/raw_materials/bendalloy.json +cee76efe589672fd718ee3c09342ce3b84c6cbbd data/forge/tags/items/raw_materials/brass.json +c4765f0747da1146d378568813a6022750baeab4 data/forge/tags/items/raw_materials/bronze.json +ff2b08cdd1bef52a34eeaf70906b923a75a1ba37 data/forge/tags/items/raw_materials/cadmium.json +fad25922761338ee51148b75c1f9b4a0f55c832b data/forge/tags/items/raw_materials/chromium.json +082b8cfd85e7475c8c8e30875b5dcac92e429cf2 data/forge/tags/items/raw_materials/copper.json +723ac5ad1792eea5a6c7d46b2c803b098302a8eb data/forge/tags/items/raw_materials/duralumin.json +050c4e42f992c2e14c6aa47574fe23ac39a37f8c data/forge/tags/items/raw_materials/electrum.json +5de0cc5f0733376a7fef274a2e60e391ea2aec1b data/forge/tags/items/raw_materials/lead.json +6034c0399eadf3bdc5f92ee5b27beee09796ab77 data/forge/tags/items/raw_materials/nickel.json +8adb3ddefba131dccc4a420b1659c40e77bca793 data/forge/tags/items/raw_materials/nicrosil.json +52d40975a6da5e22f502bc9fc002c10d576833cc data/forge/tags/items/raw_materials/pewter.json +5dd70e57464ffcad901d6084335b21b16b98458b data/forge/tags/items/raw_materials/silver.json +417762db9433c7a4340557013b440f6c01342f78 data/forge/tags/items/raw_materials/steel.json +bae99e6f06e5dec13233d0fc0a1116dd5b166c63 data/forge/tags/items/raw_materials/tin.json +d413d0dad40fc884762eda82b9f39a50cc0a3010 data/forge/tags/items/raw_materials/zinc.json 367e2363fc55412303425572a910c5b7e30e849d data/forge/tags/items/storage_blocks.json 3d5ad66889ba2954ba4b68386cc07115f0bf68d1 data/forge/tags/items/storage_blocks/aluminum.json 96e63f4f07ad6d42e660685736c6a5c2b0ab10ad data/forge/tags/items/storage_blocks/atium.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 2b85a9f34..db16b69c5 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -271,7 +271,6 @@ "item.cosmere.chromium_spike.tooltip": "Might steal destiny...", "item.cosmere.copper_bracelet_metalmind": "Copper Bracelet Metalmind", "item.cosmere.copper_bracelet_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", - "item.cosmere.copper_clip": "Copper Clip", "item.cosmere.copper_ingot": "Copper Ingot", "item.cosmere.copper_necklace_metalmind": "Copper Necklace Metalmind", "item.cosmere.copper_necklace_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", @@ -302,7 +301,6 @@ "item.cosmere.electrum_ring_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_spike": "Electrum Spike", "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", - "item.cosmere.gold_boxing": "Gold Boxing", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", "item.cosmere.gold_bracelet_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_necklace_metalmind": "Gold Necklace Metalmind", @@ -314,7 +312,6 @@ "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", - "item.cosmere.investiture": "Investiture", "item.cosmere.iron_bracelet_metalmind": "Iron Bracelet Metalmind", "item.cosmere.iron_bracelet_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_necklace_metalmind": "Iron Necklace Metalmind", @@ -323,8 +320,6 @@ "item.cosmere.iron_ring_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_spike": "Iron Spike", "item.cosmere.iron_spike.tooltip": "Steals physical strength.", - "item.cosmere.jar_empty": "Jar Empty", - "item.cosmere.jar_of_blood": "Jar Of Blood", "item.cosmere.lead_ingot": "Lead Ingot", "item.cosmere.lead_nugget": "Lead Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", @@ -336,9 +331,7 @@ "item.cosmere.malatium_ingot": "Malatium Ingot", "item.cosmere.malatium_nugget": "Malatium Nugget", "item.cosmere.master_sword": "Master Sword", - "item.cosmere.metal_file": "Metal File", "item.cosmere.metal_vial": "Metal Vial", - "item.cosmere.mist_cloak": "Mist Cloak", "item.cosmere.nickel_ingot": "Nickel Ingot", "item.cosmere.nickel_nugget": "Nickel Nugget", "item.cosmere.nicrosil_blend": "Nicrosil Blend", @@ -353,7 +346,6 @@ "item.cosmere.nicrosil_spike": "Nicrosil Spike", "item.cosmere.nicrosil_spike.tooltip": "Steals Investiture.", "item.cosmere.night_blood": "Night Blood", - "item.cosmere.obsidian_dagger": "Obsidian Dagger", "item.cosmere.pewter_blend": "Pewter Blend", "item.cosmere.pewter_bracelet_metalmind": "Pewter Bracelet Metalmind", "item.cosmere.pewter_bracelet_metalmind.tooltip": "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later.", diff --git a/src/main/generated/assets/cosmere/models/item/copper_clip.json b/src/main/generated/assets/cosmere/models/item/copper_clip.json deleted file mode 100644 index e2f75ac57..000000000 --- a/src/main/generated/assets/cosmere/models/item/copper_clip.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_nugget" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/gold_boxing.json b/src/main/generated/assets/cosmere/models/item/gold_boxing.json deleted file mode 100644 index e2f75ac57..000000000 --- a/src/main/generated/assets/cosmere/models/item/gold_boxing.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_nugget" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/investiture.json b/src/main/generated/assets/cosmere/models/item/investiture.json deleted file mode 100644 index 1a16d76c7..000000000 --- a/src/main/generated/assets/cosmere/models/item/investiture.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/investiture" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/jar_empty.json b/src/main/generated/assets/cosmere/models/item/jar_empty.json deleted file mode 100644 index 87d078659..000000000 --- a/src/main/generated/assets/cosmere/models/item/jar_empty.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/jar_empty" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/jar_of_blood.json b/src/main/generated/assets/cosmere/models/item/jar_of_blood.json deleted file mode 100644 index d3bf0f379..000000000 --- a/src/main/generated/assets/cosmere/models/item/jar_of_blood.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/jar_of_blood" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/metal_file.json b/src/main/generated/assets/cosmere/models/item/metal_file.json deleted file mode 100644 index 5d4e67dd1..000000000 --- a/src/main/generated/assets/cosmere/models/item/metal_file.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_file" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/mist_cloak.json b/src/main/generated/assets/cosmere/models/item/mist_cloak.json deleted file mode 100644 index d6af2e28f..000000000 --- a/src/main/generated/assets/cosmere/models/item/mist_cloak.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/mist_cloak" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/obsidian_dagger.json b/src/main/generated/assets/cosmere/models/item/obsidian_dagger.json deleted file mode 100644 index 8a466b4be..000000000 --- a/src/main/generated/assets/cosmere/models/item/obsidian_dagger.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/obsidian_dagger" - } -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json index 3c3657994..5335272e6 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json @@ -2,31 +2,31 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/cadmium" + "tag": "forge:raw_materials/cadmium" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json index 032eee46e..92b56229b 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json @@ -2,10 +2,10 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/zinc" + "tag": "forge:raw_materials/zinc" }, { - "tag": "forge:raw/copper" + "tag": "forge:raw_materials/copper" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json index d58880cc4..988694f2c 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json @@ -2,16 +2,16 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/copper" + "tag": "forge:raw_materials/copper" }, { - "tag": "forge:raw/copper" + "tag": "forge:raw_materials/copper" }, { - "tag": "forge:raw/copper" + "tag": "forge:raw_materials/copper" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json index eed5d5fef..324b18385 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json @@ -2,19 +2,19 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/aluminum" + "tag": "forge:raw_materials/aluminum" }, { - "tag": "forge:raw/aluminum" + "tag": "forge:raw_materials/aluminum" }, { - "tag": "forge:raw/aluminum" + "tag": "forge:raw_materials/aluminum" }, { - "tag": "forge:raw/aluminum" + "tag": "forge:raw_materials/aluminum" }, { - "tag": "forge:raw/copper" + "tag": "forge:raw_materials/copper" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json index 4137773ee..246b2b9ca 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json @@ -5,7 +5,7 @@ "tag": "forge:ingots/gold" }, { - "tag": "forge:raw/silver" + "tag": "forge:raw_materials/silver" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json index 008718884..c76eed408 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json @@ -2,16 +2,16 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/chromium" + "tag": "forge:raw_materials/chromium" }, { - "tag": "forge:raw/nickel" + "tag": "forge:raw_materials/nickel" }, { - "tag": "forge:raw/nickel" + "tag": "forge:raw_materials/nickel" }, { - "tag": "forge:raw/nickel" + "tag": "forge:raw_materials/nickel" } ], "result": { diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json index b5a34b804..6a2221e96 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json @@ -2,19 +2,19 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" }, { - "tag": "forge:raw/tin" + "tag": "forge:raw_materials/tin" }, { - "tag": "forge:raw/lead" + "tag": "forge:raw_materials/lead" } ], "result": { diff --git a/src/main/generated/data/forge/tags/blocks/ores/aluminum.json b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json new file mode 100644 index 000000000..e652dd099 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:aluminum_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/cadmium.json b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json new file mode 100644 index 000000000..b97450e34 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:cadmium_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/chromium.json b/src/main/generated/data/forge/tags/blocks/ores/chromium.json new file mode 100644 index 000000000..66e679cf8 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/chromium.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:chromium_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/copper.json b/src/main/generated/data/forge/tags/blocks/ores/copper.json new file mode 100644 index 000000000..8244dc030 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/copper.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:copper_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/lead.json b/src/main/generated/data/forge/tags/blocks/ores/lead.json new file mode 100644 index 000000000..22ef9950d --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/lead.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:lead_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/nickel.json b/src/main/generated/data/forge/tags/blocks/ores/nickel.json new file mode 100644 index 000000000..468ddefc3 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/nickel.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:nickel_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/silver.json b/src/main/generated/data/forge/tags/blocks/ores/silver.json new file mode 100644 index 000000000..988bcf40d --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/silver.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:silver_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/tin.json b/src/main/generated/data/forge/tags/blocks/ores/tin.json new file mode 100644 index 000000000..6499cb774 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/tin.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:tin_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/zinc.json b/src/main/generated/data/forge/tags/blocks/ores/zinc.json new file mode 100644 index 000000000..1f5cfc5a2 --- /dev/null +++ b/src/main/generated/data/forge/tags/blocks/ores/zinc.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:zinc_ore" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/raw/aluminum.json b/src/main/generated/data/forge/tags/items/raw_materials/aluminum.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/aluminum.json rename to src/main/generated/data/forge/tags/items/raw_materials/aluminum.json diff --git a/src/main/generated/data/forge/tags/items/raw/bendalloy.json b/src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/bendalloy.json rename to src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json diff --git a/src/main/generated/data/forge/tags/items/raw/brass.json b/src/main/generated/data/forge/tags/items/raw_materials/brass.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/brass.json rename to src/main/generated/data/forge/tags/items/raw_materials/brass.json diff --git a/src/main/generated/data/forge/tags/items/raw/bronze.json b/src/main/generated/data/forge/tags/items/raw_materials/bronze.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/bronze.json rename to src/main/generated/data/forge/tags/items/raw_materials/bronze.json diff --git a/src/main/generated/data/forge/tags/items/raw/cadmium.json b/src/main/generated/data/forge/tags/items/raw_materials/cadmium.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/cadmium.json rename to src/main/generated/data/forge/tags/items/raw_materials/cadmium.json diff --git a/src/main/generated/data/forge/tags/items/raw/chromium.json b/src/main/generated/data/forge/tags/items/raw_materials/chromium.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/chromium.json rename to src/main/generated/data/forge/tags/items/raw_materials/chromium.json diff --git a/src/main/generated/data/forge/tags/items/raw/copper.json b/src/main/generated/data/forge/tags/items/raw_materials/copper.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/copper.json rename to src/main/generated/data/forge/tags/items/raw_materials/copper.json diff --git a/src/main/generated/data/forge/tags/items/raw/duralumin.json b/src/main/generated/data/forge/tags/items/raw_materials/duralumin.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/duralumin.json rename to src/main/generated/data/forge/tags/items/raw_materials/duralumin.json diff --git a/src/main/generated/data/forge/tags/items/raw/electrum.json b/src/main/generated/data/forge/tags/items/raw_materials/electrum.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/electrum.json rename to src/main/generated/data/forge/tags/items/raw_materials/electrum.json diff --git a/src/main/generated/data/forge/tags/items/raw/lead.json b/src/main/generated/data/forge/tags/items/raw_materials/lead.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/lead.json rename to src/main/generated/data/forge/tags/items/raw_materials/lead.json diff --git a/src/main/generated/data/forge/tags/items/raw/nickel.json b/src/main/generated/data/forge/tags/items/raw_materials/nickel.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/nickel.json rename to src/main/generated/data/forge/tags/items/raw_materials/nickel.json diff --git a/src/main/generated/data/forge/tags/items/raw/nicrosil.json b/src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/nicrosil.json rename to src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json diff --git a/src/main/generated/data/forge/tags/items/raw/pewter.json b/src/main/generated/data/forge/tags/items/raw_materials/pewter.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/pewter.json rename to src/main/generated/data/forge/tags/items/raw_materials/pewter.json diff --git a/src/main/generated/data/forge/tags/items/raw/silver.json b/src/main/generated/data/forge/tags/items/raw_materials/silver.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/silver.json rename to src/main/generated/data/forge/tags/items/raw_materials/silver.json diff --git a/src/main/generated/data/forge/tags/items/raw/steel.json b/src/main/generated/data/forge/tags/items/raw_materials/steel.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/steel.json rename to src/main/generated/data/forge/tags/items/raw_materials/steel.json diff --git a/src/main/generated/data/forge/tags/items/raw/tin.json b/src/main/generated/data/forge/tags/items/raw_materials/tin.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/tin.json rename to src/main/generated/data/forge/tags/items/raw_materials/tin.json diff --git a/src/main/generated/data/forge/tags/items/raw/zinc.json b/src/main/generated/data/forge/tags/items/raw_materials/zinc.json similarity index 100% rename from src/main/generated/data/forge/tags/items/raw/zinc.json rename to src/main/generated/data/forge/tags/items/raw_materials/zinc.json diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 7776ffe06..7e83df922 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -208,12 +208,15 @@ public boolean isAlloy() } } + //Used for metals that exist in the base minecraft + //todo add copper in 1.18 public boolean hasMaterialItem() { switch (this) { case IRON: case GOLD: + //case COPPER: return false; default: return true; diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 18162504d..1bbe61e20 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -36,6 +36,11 @@ protected void addTags() if (!metalType.hasMaterialItem()) continue; + if (metalType.hasOre()) + { + add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), metalType.getOreBlock()); + } + //put metal type tag on block MetalBlock metalBlock = metalType.getBlock(); From 55200e95f4969ccc26e2b4a1517d9cf3bbb6b632 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 12:19:05 +1300 Subject: [PATCH 0051/1090] Update Changelog.md --- Changelog.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Changelog.md b/Changelog.md index bab0217f0..c99bbdf51 100644 --- a/Changelog.md +++ b/Changelog.md @@ -6,6 +6,9 @@ Fixed creative mode spikes to only contain their correct powers, not both alloma Added localisation for spike tooltips. No more 'cosmere.trueself'. Non-scroll wheel based power mode increase/decrease Wandering trader and several Illager types added to list of potential metalborn mobs. +Boosted ore spawn rate. Was closer to diamond, now is near iron levels of distribution +Fixed some item tagging, so raw ore items from other mods should be more compatible. + B23 From 13ebdb986976005f2817cf01da76fff65a2264ec Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 12:28:24 +1300 Subject: [PATCH 0052/1090] added WOB comment to decay function --- src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index bd61ed245..eef36453d 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -206,6 +206,7 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList Date: Sat, 26 Mar 2022 12:59:21 +1300 Subject: [PATCH 0053/1090] Updated string for contained powers Updated string for contained powers to hemalurgic charge --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 2 +- src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 2e5f4bbc5..1d72dd228 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -b16cca6b33ef661fc78b980f56eaa138b127d362 assets/cosmere/lang/en_us.json +6abec4c5a68dcda5a217737cc18047234c2e1985 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index db16b69c5..15b914944 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -487,7 +487,7 @@ "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", "tooltip.cosmere.metals.contained": "Contained Metals:", - "tooltip.cosmere.power.found": "Contained Powers:", + "tooltip.cosmere.power.found": "Hemalurgic Charge:", "tooltip.item.info.control": "\u00A77Hold \u00A78[\u00A7eControl\u00A78]", "tooltip.item.info.shift": "\u00A77Hold \u00A78[\u00A7eShift\u00A78]", "tooltip.item.info.shift_control": "\u00A77Hold \u00A78[\u00A7eShift\u00A78] \u00A77and \u00A78[\u00A7eControl\u00A78]" diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index fe15c3296..be7056b02 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -233,7 +233,7 @@ else if (item instanceof Metalmind) add(POWER_INACTIVE, "Power now inactive: %s"); add(POWERS_FOUND, "Powers found for: %s \n"); - add(CONTAINED_POWERS_FOUND, "Contained Powers:"); + add(CONTAINED_POWERS_FOUND, "Hemalurgic Charge:"); } From c7b1db620aa8b466172acebbd81bc93f149b10b1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 13:29:43 +1300 Subject: [PATCH 0054/1090] Damage listed under hemalurgic charge Damage listed under hemalurgic charge Added iron spike infused with iron golem attack damage to the creative menu --- Changelog.md | 1 + .../items/curio/HemalurgicSpikeItem.java | 32 +++++++++++-------- .../cosmere/items/curio/IHemalurgicInfo.java | 11 ++++++- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/Changelog.md b/Changelog.md index c99bbdf51..20d1def17 100644 --- a/Changelog.md +++ b/Changelog.md @@ -8,6 +8,7 @@ Non-scroll wheel based power mode increase/decrease Wandering trader and several Illager types added to list of potential metalborn mobs. Boosted ore spawn rate. Was closer to diamond, now is near iron levels of distribution Fixed some item tagging, so raw ore items from other mods should be more compatible. +Fixed iron spike tool tip so it doesn't list empty power. Now lists attack damage granted. B23 diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index eef36453d..f62fa9f64 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -115,6 +115,23 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); if (hemalurgyStealWhitelist != null) { @@ -130,18 +147,6 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList { super.appendHoverText(stack, worldIn, tooltip, flagIn); - // no extra info if there isn't any if (getHemalurgicIdentity(stack) == null) { @@ -252,7 +256,7 @@ public void appendHoverText(ItemStack stack, World worldIn, List //stolen identities listed? //extra investiture powers added - addInvestitureInformation(stack, tooltip); + addInvestitureInformation(stack, this, tooltip); //etc? diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 57cf22b06..3588205b7 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -287,7 +287,7 @@ default Multimap getHemalurgicAttributes(Multimap< } - default void addInvestitureInformation(ItemStack stack, List tooltip) + default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hemalurgicSpikeItem, List tooltip) { if (!hemalurgicIdentityExists(stack)) { @@ -295,6 +295,15 @@ default void addInvestitureInformation(ItemStack stack, List too } tooltip.add(TextHelper.createTranslatedText(CONTAINED_POWERS_FOUND)); + + double attackDamage = CompoundNBTHelper.getDouble(hemalurgicSpikeItem.getHemalurgicInfo(stack), hemalurgicSpikeItem.getMetalType().name(), 0); + + if (attackDamage > 0) + { + //todo, make this translated text + tooltip.add(TextHelper.createText("+" + attackDamage + " Attack Damage")); + } + IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); for (AManifestation manifestation : manifestations) { From a8e037031203d144d9d21b70e12bac24a20e8937 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 13:54:07 +1300 Subject: [PATCH 0055/1090] Iron spike tool tip fix --- .../leaf/cosmere/items/curio/IHemalurgicInfo.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 3588205b7..f4ea53f35 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -296,12 +296,15 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema tooltip.add(TextHelper.createTranslatedText(CONTAINED_POWERS_FOUND)); - double attackDamage = CompoundNBTHelper.getDouble(hemalurgicSpikeItem.getHemalurgicInfo(stack), hemalurgicSpikeItem.getMetalType().name(), 0); - - if (attackDamage > 0) + if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) { + double attackDamage = CompoundNBTHelper.getDouble(hemalurgicSpikeItem.getHemalurgicInfo(stack), hemalurgicSpikeItem.getMetalType().name(), 0); + //todo, make this translated text - tooltip.add(TextHelper.createText("+" + attackDamage + " Attack Damage")); + if (attackDamage > 0) + { + tooltip.add(TextHelper.createText("+" + attackDamage + " Attack Damage")); + } } IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); From 62f7a5615ae1caeabf3a8bb3b40a5442db0afdc9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:01:45 +1300 Subject: [PATCH 0056/1090] Update abandoned_mineshaft.json --- .../inject/abandoned_mineshaft.json | 131 +++++++++++++++++- 1 file changed, 128 insertions(+), 3 deletions(-) diff --git a/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json index 0036f3560..cb8577b49 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json @@ -6,13 +6,138 @@ "rolls": 1, "entries": [ { - "type": "item", + "type": "minecraft:item", "name": "cosmere:atium_nugget", "weight": 5 }, { - "type": "empty", - "weight": 95 + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_tin_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_zinc_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_copper_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_aluminum_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_chromium_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_cadmium_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_nickel_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_lead_ore" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_silver_ore" + }, + { + "type": "minecraft:empty" } ] } From 0ce7f22332700d8bfa1ba1ae8f91c2f76d41b56d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:02:33 +1300 Subject: [PATCH 0057/1090] Create woodland_mansion.json --- .../loot_tables/inject/woodland_mansion.json | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json diff --git a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json new file mode 100644 index 000000000..6dd39f5f9 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json @@ -0,0 +1,19 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/woodland_mansion", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "weight": 33 + }, + { + "type": "minecraft:empty" + } + ] + } + ] +} \ No newline at end of file From 8554dd851503764f1cae4bbecd6bf94dc52703af Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:06:03 +1300 Subject: [PATCH 0058/1090] Update woodland_mansion.json --- .../cosmere/loot_tables/inject/woodland_mansion.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json index 6dd39f5f9..34d6cb6c6 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json @@ -8,6 +8,16 @@ { "type": "minecraft:item", "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], "weight": 33 }, { From 18d0b4befa92b3d3b83a30dd5798ae36ac6738a8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:14:44 +1300 Subject: [PATCH 0059/1090] Whole bunch of loot changes --- .../loot_tables/inject/bastion_treasure.json | 39 +++++++++++++++++ .../loot_tables/inject/desert_pyramid.json | 20 +++++++-- .../loot_tables/inject/end_city_treasure.json | 19 +++++++++ .../loot_tables/inject/jungle_temple.json | 42 ++++++++++++------- .../loot_tables/inject/simple_dungeon.json | 18 +++++++- .../loot_tables/inject/spawn_bonus_chest.json | 3 +- .../inject/stronghold_corridor.json | 22 ++++++---- .../inject/stronghold_crossing.json | 19 +++++++++ .../inject/stronghold_library.json | 19 +++++++++ .../inject/village_blacksmith.json | 3 +- .../loot_tables/inject/woodland_mansion.json | 5 +++ 11 files changed, 177 insertions(+), 32 deletions(-) create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json diff --git a/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json new file mode 100644 index 000000000..d936e467c --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json @@ -0,0 +1,39 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/woodland_mansion", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_spike", + "weight": 1 + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 16 + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "weight": 33 + }, + { + "type": "minecraft:empty" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json index 3b9b8e667..2155d9b2b 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json @@ -6,13 +6,27 @@ "rolls": 1, "entries": [ { - "type": "item", + "type": "minecraft:item", "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 8.0, + "type": "minecraft:uniform" + } + } + ], + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", "weight": 5 }, { - "type": "empty", - "weight": 95 + "type": "minecraft:empty" } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json b/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json new file mode 100644 index 000000000..f55deb831 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json @@ -0,0 +1,19 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/end_city_treasure", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 10 + }, + { + "type": "minecraft:empty" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json index cdc6d4c40..966729d0e 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json @@ -2,19 +2,33 @@ "__comment": "This table is injected as its own pool into minecraft:chests/jungle_temple", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "item", - "name": "cosmere:atium_nugget", - "weight": 5 - }, - { - "type": "empty", - "weight": 95 - } - ] - } + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 8.0, + "type": "minecraft:uniform" + } + } + ], + "weight": 12 + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 5 + }, + { + "type": "minecraft:empty" + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json index e62adf6a3..d806039d4 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json @@ -6,8 +6,22 @@ "rolls": 1, "entries": [ { - "type": "empty", - "weight": 100 + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 2.0, + "max": 8.0, + "type": "minecraft:uniform" + } + } + ], + "weight": 12 + }, + { + "type": "minecraft:empty" } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json index 6889a1c19..e0f5e53f5 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json @@ -6,8 +6,7 @@ "rolls": 1, "entries": [ { - "type": "empty", - "weight": 100 + "type": "minecraft:empty" } ] }] diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json index 46213c2dd..835e5b48c 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json @@ -2,14 +2,18 @@ "__comment": "This table is injected as its own pool into minecraft:chests/stronghold_corridor", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "empty", - "weight": 100 - } - ] - } + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 10 + }, + { + "type": "minecraft:empty" + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json new file mode 100644 index 000000000..97afdfb70 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json @@ -0,0 +1,19 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/stronghold_crossing", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 10 + }, + { + "type": "minecraft:empty" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json new file mode 100644 index 000000000..0cea6ffd7 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json @@ -0,0 +1,19 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/stronghold_library", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 10 + }, + { + "type": "minecraft:empty" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json index e1bb8ab3a..4db1752ea 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json @@ -6,8 +6,7 @@ "rolls": 1, "entries": [ { - "type": "empty", - "weight": 100 + "type": "minecraft:empty" } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json index 34d6cb6c6..6256c10a1 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json @@ -5,6 +5,11 @@ "name": "main", "rolls": 1, "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_spike", + "weight": 1 + }, { "type": "minecraft:item", "name": "cosmere:atium_nugget", From acef0a62bc2a6ad78db53559c13b3b57f4bd1457 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:17:58 +1300 Subject: [PATCH 0060/1090] Update Changelog.md --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 20d1def17..5ce93f4d2 100644 --- a/Changelog.md +++ b/Changelog.md @@ -9,7 +9,7 @@ Wandering trader and several Illager types added to list of potential metalborn Boosted ore spawn rate. Was closer to diamond, now is near iron levels of distribution Fixed some item tagging, so raw ore items from other mods should be more compatible. Fixed iron spike tool tip so it doesn't list empty power. Now lists attack damage granted. - +Updated a lot of the loot chest tables to have a chance of adding items from Cosmere, like ores in the mineshaft or lerasium nuggets in rarer loot chests. B23 From b4b7ea5800a9cf2148c030211d0ea07348435a23 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 14:31:37 +1300 Subject: [PATCH 0061/1090] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 02d27946e..fd6a5d1f9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 -build_number=23 +build_number=25 patchouli_version=1.16.4-51 mekanism_version=1.16.5-10.1.2.457 configured_version=3546348 \ No newline at end of file From e64e2bed714cc373525349eae28f56a859c9cc46 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 22:59:53 +1300 Subject: [PATCH 0062/1090] Fixed some loot chests not being injected into --- Changelog.md | 5 +++++ src/main/java/leaf/cosmere/loot/LootHandler.java | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/Changelog.md b/Changelog.md index 5ce93f4d2..7dee53acc 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ The Cosmere Project - For 1.16 Minecraft +B25 +Fixed some loot chests not being injected into + + + B24 Fixed creative mode spikes to only contain their correct powers, not both allomancy and feruchemy. diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index 0ba440224..58d686f77 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -31,12 +31,17 @@ public static void lootLoad(LootTableLoadEvent evt) switch (file) { case "abandoned_mineshaft": + case "bastion_treasure": case "desert_pyramid": + case "end_city_treasure": case "jungle_temple": case "simple_dungeon": case "spawn_bonus_chest": case "stronghold_corridor": + case "stronghold_crossing": + case "stronghold_library": case "village_blacksmith": + case "woodland_mansion": evt.getTable().addPool(getInjectPool(file)); break; default: From 012fdb3603ff92c737390e1522e5896d44b853de Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 23:02:37 +1300 Subject: [PATCH 0063/1090] Moved fortune bonus modifier to loot folder --- .../leaf/cosmere/{effects => loot}/FortuneBonusModifier.java | 4 ++-- src/main/java/leaf/cosmere/registry/LootModifierRegistry.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/main/java/leaf/cosmere/{effects => loot}/FortuneBonusModifier.java (98%) diff --git a/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java similarity index 98% rename from src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java rename to src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java index 9567e17e6..990b77345 100644 --- a/src/main/java/leaf/cosmere/effects/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 26 - 3 - 2022 ~ Leaf */ -package leaf.cosmere.effects; +package leaf.cosmere.loot; import com.google.gson.JsonObject; import leaf.cosmere.constants.Metals; diff --git a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java index 87c749f84..5864b2fcf 100644 --- a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java @@ -6,7 +6,7 @@ package leaf.cosmere.registry; import leaf.cosmere.Cosmere; -import leaf.cosmere.effects.FortuneBonusModifier; +import leaf.cosmere.loot.FortuneBonusModifier; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; From be95ee82178f8bbefe97461a536d562335206ebd Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 23:05:27 +1300 Subject: [PATCH 0064/1090] Fixed atium/lerasium steal whitelist --- src/main/java/leaf/cosmere/constants/Metals.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 7e83df922..d75cd4aab 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -28,6 +28,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Optional; +import java.util.stream.Collectors; /* * All hope abandon ye who enter here. @@ -564,8 +565,8 @@ public Collection getHemalurgyStealWhitelist() Metals.MetalType.ALUMINUM, Metals.MetalType.DURALUMIN); case ATIUM: - return Arrays.asList(Metals.MetalType.values()); case LERASIUM: + return Arrays.stream(MetalType.values()).filter(MetalType::hasAssociatedManifestation).collect(Collectors.toList()); case MALATIUM: case LERASATIUM: break; From 9489cbf1a6989dac5f78a74e84c679fdd81e3613 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Mar 2022 23:10:02 +1300 Subject: [PATCH 0065/1090] Implemented ability to get invested spikes in lootchests --- src/main/java/leaf/cosmere/Cosmere.java | 1 + .../items/curio/HemalurgicSpikeItem.java | 27 +-- .../cosmere/items/curio/IHemalurgicInfo.java | 161 +++++++++++------- .../cosmere/loot/InvestSpikeLootFunction.java | 138 +++++++++++++++ .../cosmere/manifestation/AManifestation.java | 2 + .../manifestation/ManifestationBase.java | 6 + .../allomancy/AllomancyBase.java | 4 +- .../allomancy/AllomancyBrass.java | 2 +- .../allomancy/AllomancyDuralumin.java | 2 +- .../allomancy/AllomancyIronSteel.java | 2 +- .../allomancy/AllomancyNicrosil.java | 3 +- .../allomancy/AllomancyZinc.java | 2 +- .../feruchemy/FeruchemyBase.java | 12 +- .../registry/LootFunctionRegistry.java | 31 ++++ .../loot_tables/inject/bastion_treasure.json | 7 +- .../loot_tables/inject/woodland_mansion.json | 7 +- 16 files changed, 312 insertions(+), 95 deletions(-) create mode 100644 src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java create mode 100644 src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 4327ed3f7..3eebc36ef 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -72,6 +72,7 @@ private void commonSetup(FMLCommonSetupEvent event) { FeatureRegistry.registerConfiguredFeatures(); EntityRegistry.PrepareEntityAttributes(); + LootFunctionRegistry.Register(); }); //Entity Caps diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index f62fa9f64..eacb4fe53 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -118,16 +118,15 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList manifestationsFound = new ArrayList<>(); - SpiritwebCapability.get(entityKilled).ifPresent(cap -> + SpiritwebCapability.get(entityKilled).ifPresent(entityKilledSpiritWeb -> { //only grab innate manifestations, not ones added by hemalurgy - manifestationsFound.addAll(cap.getAvailableManifestations(true)); - - }); + manifestationsFound.addAll(entityKilledSpiritWeb.getAvailableManifestations(true)); - if (manifestationsFound.size() > 0) - { - whiteList.clear(); - //The type of thing you can steal is dependant on the type of metal. - Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); - if (hemalurgyStealWhitelist != null) + if (manifestationsFound.size() > 0) { - whiteList.addAll(hemalurgyStealWhitelist); - } + whiteList.clear(); - switch (spikeMetalType) - { - //steals allomantic abilities - case STEEL: - case BRONZE: - case CADMIUM: - case ELECTRUM: - saveIdentity = tryStealScadrialManifestation(hemalurgyInfo, manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); - break; - //steals feruchemical abilities - case PEWTER: - case BRASS: - case BENDALLOY: - case GOLD: - saveIdentity = tryStealScadrialManifestation(hemalurgyInfo, manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + //The type of thing you can steal is dependant on the type of metal. + Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + whiteList.addAll(hemalurgyStealWhitelist); + } + + switch (spikeMetalType) + { + //steals allomantic abilities + case STEEL: + case BRONZE: + case CADMIUM: + case ELECTRUM: + { + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } + + } break; - //The god metals don't follow the 'normal' rules. - //Todo decide if they can steal powers from other investiture types or just scadrial related - case ATIUM: - //Steals any one power - //todo decide if we just pick a random power - whiteList.addAll(Arrays.asList(Metals.MetalType.values())); - //then try steal it - //todo decide if prefer allomancy over feruchemy? - if (!tryStealScadrialManifestation(hemalurgyInfo, manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY)) + //steals feruchemical abilities + case PEWTER: + case BRASS: + case BENDALLOY: + case GOLD: { - saveIdentity = tryStealScadrialManifestation(hemalurgyInfo, manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } } - else + break; + //The god metals don't follow the 'normal' rules. + //Todo decide if they can steal powers from other investiture types or just scadrial related + case ATIUM: { - saveIdentity = true; + //Steals any one power + //todo decide if we just pick a random power + //then try steal it + //todo decide if prefer allomancy over feruchemy? + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); + if (manifestation == null) + { + manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + } + + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } } break; - case LERASIUM: - for (AManifestation manifestation : manifestationsFound) + case LERASIUM: { - CompoundNBTHelper.setBoolean(hemalurgyInfo, manifestation.getRegistryName().getPath(), true); + for (AManifestation manifestation : manifestationsFound) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); + } } - saveIdentity = true; break; + } } - } + }); - if (saveIdentity) - { - setHemalurgicIdentity(stack, entityKilled.getUUID()); - CompoundNBTHelper.setBoolean(hemalurgyInfo, "hasHemalurgicPower", true); - } } - default boolean tryStealScadrialManifestation( - CompoundNBT hemalurgyInfo, + default AManifestation getRandomMetalPowerFromList( List manifestationsFound, List whiteList, Manifestations.ManifestationTypes powerType) @@ -203,13 +218,11 @@ default boolean tryStealScadrialManifestation( if (i >= 0) { //then we've found something to steal! - CompoundNBTHelper.setBoolean(hemalurgyInfo, manifestationsFound.get(i).getRegistryName().getPath(), true); - CompoundNBTHelper.setBoolean(hemalurgyInfo, "hasHemalurgicPower", true); - return true; + return manifestationsFound.get(i); } } - return false; + return null; } default Multimap getHemalurgicAttributes(Multimap attributeModifiers, ItemStack stack, Metals.MetalType metalType) @@ -222,19 +235,20 @@ default Multimap getHemalurgicAttributes(Multimap< return attributeModifiers; } + final double strength = CompoundNBTHelper.getDouble( + hemalurgyInfo, + metalType.name(), + 0); + switch (metalType) { case IRON: - attributeModifiers.put( Attributes.ATTACK_DAMAGE, new AttributeModifier( hemalurgicIdentity, "Hemalurgic " + metalType.name(), - (double) CompoundNBTHelper.getDouble( - hemalurgyInfo, - metalType.name(), - 0), + strength, AttributeModifier.Operation.ADDITION)); break; @@ -277,7 +291,7 @@ default Multimap getHemalurgicAttributes(Multimap< new AttributeModifier( hemalurgicIdentity, String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), - 6,//todo get this value from the item? + CompoundNBTHelper.getDouble(hemalurgyInfo, "power_" + path, 6),//todo get this value from the item? AttributeModifier.Operation.ADDITION)); } } @@ -324,5 +338,26 @@ default boolean hasHemalurgicPower(ItemStack stack, AManifestation manifestation return CompoundNBTHelper.getBoolean(getHemalurgicInfo(stack), manifestation.getRegistryName().getPath(), false); } + + default void Invest(ItemStack stack, AManifestation manifestation, double level, UUID identity) + { + CompoundNBT spikeInfo = getHemalurgicInfo(stack); + final String manifestationName = manifestation.getRegistryName().getPath(); + CompoundNBTHelper.setBoolean(spikeInfo, manifestationName, true); + CompoundNBTHelper.setBoolean(spikeInfo, "hasHemalurgicPower", true); + CompoundNBTHelper.setDouble(spikeInfo, "power_" + manifestationName, level); + + setHemalurgicIdentity(stack, identity); + } + + default void Invest(ItemStack stack, Metals.MetalType metalType, double level, UUID identity) + { + CompoundNBT spikeInfo = getHemalurgicInfo(stack); + + CompoundNBTHelper.setBoolean(spikeInfo, "hasHemalurgicPower", true); + CompoundNBTHelper.setDouble(spikeInfo, metalType.name(), level); + + setHemalurgicIdentity(stack, identity); + } } diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java new file mode 100644 index 000000000..509e481e7 --- /dev/null +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -0,0 +1,138 @@ +/* + * File created ~ 26 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.loot; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.LootFunctionRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.LootContext; +import net.minecraft.loot.LootFunction; +import net.minecraft.loot.LootFunctionType; +import net.minecraft.loot.conditions.ILootCondition; +import net.minecraft.util.math.MathHelper; + +import java.util.Collection; +import java.util.Optional; +import java.util.UUID; + +public class InvestSpikeLootFunction extends LootFunction +{ + + protected InvestSpikeLootFunction(ILootCondition[] conditionsIn) + { + super(conditionsIn); + } + + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + if (!(stack.getItem() instanceof HemalurgicSpikeItem)) + { + return stack; + } + + HemalurgicSpikeItem item = (HemalurgicSpikeItem) stack.getItem(); + final Metals.MetalType spikeMetalType = item.getMetalType(); + + if (!spikeMetalType.hasHemalurgicEffect()) + { + return stack; + } + + Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); + + Optional stealType = hemalurgyStealWhitelist + .stream() + .filter(metalType -> metalType.hasAssociatedManifestation()) + .skip(lootContext.getRandom().nextInt(hemalurgyStealWhitelist.size())) + .findFirst(); + + + final float strengthLevel = MathHelper.clamp(5 + lootContext.getLuck(), 1, 10); + + switch (spikeMetalType) + { + case IRON: + // add strength + item.Invest(stack,spikeMetalType, strengthLevel, UUID.randomUUID()); + + break; + //steals allomantic abilities + case STEEL: + case BRONZE: + case CADMIUM: + case ELECTRUM: + { + if (!stealType.isPresent()) + { + return stack; + } + + AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); + item.Invest(stack, allomancyMani, strengthLevel, UUID.randomUUID()); + } + break; + //steals feruchemical abilities + case PEWTER: + case BRASS: + case BENDALLOY: + case GOLD: + { + if (!stealType.isPresent()) + { + return stack; + } + + AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); + + item.Invest(stack, feruchemyMani, strengthLevel, UUID.randomUUID()); + } + + case ATIUM: + + if (!stealType.isPresent()) + { + return stack; + } + + boolean isAllomancy = lootContext.getRandom().nextBoolean(); + AManifestation manifestation; + if (isAllomancy) + { + manifestation = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); + } + else + { + manifestation = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); + } + + item.Invest(stack, manifestation, strengthLevel, UUID.randomUUID()); + + break; + } + + return stack; + } + + @Override + public LootFunctionType getType() + { + return LootFunctionRegistry.INVEST_SPIKE; + } + + public static class Serializer extends LootFunction.Serializer + { + @Override + public InvestSpikeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) + { + return new InvestSpikeLootFunction(lootConditions); + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index 5c0854e66..fa42ec1c4 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -34,6 +34,8 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract boolean isActive(ISpiritweb data); + public abstract double getStrength(ISpiritweb data); + public TranslationTextComponent translation() { ResourceLocation regName = getRegistryName(); diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 7137a9b4e..99ea36fd2 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -77,4 +77,10 @@ public boolean isActive(ISpiritweb data) { return data.canTickManifestation(this.manifestationType, this.getPowerID()); } + + @Override + public double getStrength(ISpiritweb data) + { + return 0; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 71e9515b1..83722c409 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -142,7 +142,7 @@ else if (getMetalType().isPushMetal()) return null; } - protected double getAllomanticStrength(ISpiritweb cap) + public double getStrength(ISpiritweb cap) { RegistryObject mistingAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getMistingName()); ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); @@ -156,7 +156,7 @@ public int getRange(ISpiritweb cap) return 0; //get allomantic strength - double allomanticStrength = getAllomanticStrength(cap); + double allomanticStrength = getStrength(cap); return MathHelper.floor(allomanticStrength * cap.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID())); } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 657c66f6d..489d9dd5c 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -27,7 +27,7 @@ protected void performEffect(ISpiritweb data) int mode = data.getMode(manifestationType, getMetalType().getID()); //todo, replace x * mode with config based value - double allomanticStrength = getAllomanticStrength(data); + double allomanticStrength = getStrength(data); int range = (int) (allomanticStrength * mode); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java index eeb89d44b..134681355 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java @@ -31,7 +31,7 @@ public void performEffect(ISpiritweb data) //apply the effect regardless, because duralumin is currently active. EffectInstance newEffect = EffectsHelper.getNewEffect( EffectsRegistry.ALLOMANCY_BOOST.get(), - MathHelper.floor(getAllomanticStrength(data)) + MathHelper.floor(getStrength(data)) ); data.getLiving().addEffect(newEffect); } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index e5b20286b..60bf981ce 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -163,7 +163,7 @@ private void performEffectServer(ISpiritweb cap) Vector3d direction; float renderPartialTicks = Minecraft.getInstance().getFrameTime(); - double strength = getAllomanticStrength(cap); + double strength = getStrength(cap); for (int i = blockListCount - 1; i >= 0; i--) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java index 696e03808..36bf2c7db 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java @@ -6,7 +6,6 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.registry.EffectsRegistry; @@ -66,7 +65,7 @@ public void onLivingHurtEvent(LivingHurtEvent event) //valid set up found. EffectInstance newEffect = EffectsHelper.getNewEffect( EffectsRegistry.ALLOMANCY_BOOST.get(), - MathHelper.floor(getAllomanticStrength(iSpiritweb)) + MathHelper.floor(getStrength(iSpiritweb)) ); //apply to the hit entity diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index 457a386d1..ce70bfbeb 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -29,7 +29,7 @@ protected void performEffect(ISpiritweb data) int mode = data.getMode(manifestationType, getMetalType().getID()); //todo, replace x * mode with config based value - double allomanticStrength = getAllomanticStrength(data); + double allomanticStrength = getStrength(data); int range = (int) (allomanticStrength * mode); diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 75bec3352..d4be6f7e3 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -8,12 +8,16 @@ import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.manifestation.ManifestationBase; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.ai.attributes.Attribute; +import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; import net.minecraft.potion.Effect; import net.minecraft.potion.EffectInstance; +import net.minecraftforge.fml.RegistryObject; public class FeruchemyBase extends ManifestationBase implements IHasMetalType { @@ -25,7 +29,6 @@ public FeruchemyBase(Metals.MetalType metalType) this.metalType = metalType; } - @Override public int getPowerID() { @@ -128,4 +131,11 @@ else if (mode < 0) } } + + public double getStrength(ISpiritweb cap) + { + RegistryObject mistingAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getFerringName()); + ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); + return attribute != null ? attribute.getValue() : 0; + } } diff --git a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java new file mode 100644 index 000000000..f4eb6c7c6 --- /dev/null +++ b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java @@ -0,0 +1,31 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + * Special thank you to the curio mod for providing the example of how to set up fortune bonus for non-tool related things. + */ + +package leaf.cosmere.registry; + +import leaf.cosmere.Cosmere; +import leaf.cosmere.loot.InvestSpikeLootFunction; +import leaf.cosmere.utils.helpers.LogHelper; +import net.minecraft.loot.ILootSerializer; +import net.minecraft.loot.LootFunctionType; +import net.minecraft.loot.functions.ILootFunction; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.registry.Registry; +import net.minecraftforge.fml.common.Mod; + +public class LootFunctionRegistry +{ + public static final LootFunctionType INVEST_SPIKE = register("invest_spike", new InvestSpikeLootFunction.Serializer()); + + private static LootFunctionType register(String name, ILootSerializer serializer) + { + return Registry.register(Registry.LOOT_FUNCTION_TYPE, new ResourceLocation(Cosmere.MODID, name), new LootFunctionType(serializer)); + } + + public static void Register() + { + LogHelper.info("Registering Loot Functions"); + } +} diff --git a/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json index d936e467c..743466963 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json @@ -8,7 +8,12 @@ { "type": "minecraft:item", "name": "cosmere:atium_spike", - "weight": 1 + "functions": [ + { + "function": "cosmere:invest_spike" + } + ], + "weight": 33 }, { "type": "minecraft:item", diff --git a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json index 6256c10a1..cdd27b308 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json @@ -8,7 +8,12 @@ { "type": "minecraft:item", "name": "cosmere:atium_spike", - "weight": 1 + "functions": [ + { + "function": "cosmere:invest_spike" + } + ], + "weight": 33 }, { "type": "minecraft:item", From 200ac5bcd2a3f22dc719c9cbb40623b7662a3b84 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 27 Mar 2022 14:28:07 +1300 Subject: [PATCH 0066/1090] Invest Metalmind loot function --- .../loot/InvestMetalmindLootFunction.java | 81 +++++++++++++++++++ .../cosmere/loot/InvestSpikeLootFunction.java | 30 ++++--- .../registry/LootFunctionRegistry.java | 3 + 3 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java diff --git a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java new file mode 100644 index 000000000..ea10aee45 --- /dev/null +++ b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java @@ -0,0 +1,81 @@ +/* + * File created ~ 26 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.loot; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import leaf.cosmere.charge.IChargeable; +import leaf.cosmere.constants.Constants; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.MetalmindItem; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.LootFunctionRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.StackNBTHelper; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.LootContext; +import net.minecraft.loot.LootFunction; +import net.minecraft.loot.LootFunctionType; +import net.minecraft.loot.conditions.ILootCondition; +import net.minecraft.util.math.MathHelper; + +import java.util.Collection; +import java.util.Optional; +import java.util.UUID; + +public class InvestMetalmindLootFunction extends LootFunction +{ + + protected InvestMetalmindLootFunction(ILootCondition[] conditionsIn) + { + super(conditionsIn); + } + + @Override + public LootFunctionType getType() + { + return LootFunctionRegistry.INVEST_METALMIND; + } + + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + if (!(stack.getItem() instanceof IChargeable)) + { + return stack; + } + + MetalmindItem item = (MetalmindItem) stack.getItem(); + final Metals.MetalType metalType = item.getMetalType(); + + if (!metalType.hasFeruchemicalEffect()) + { + return stack; + } + + int maxCharge = item.getMaxCharge(stack); + + final int strengthBeforeLuck = 2 + lootContext.getRandom().nextInt(8); + + final float strengthLevel = MathHelper.clamp(strengthBeforeLuck + lootContext.getLuck(), 1, 10); + + item.setCharge(stack,(int) MathHelper.lerp(strengthLevel / 10,1,maxCharge)); + + StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); + StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation + + return stack; + } + + public static class Serializer extends LootFunction.Serializer + { + @Override + public InvestMetalmindLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) + { + return new InvestMetalmindLootFunction(lootConditions); + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java index 509e481e7..401de189a 100644 --- a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -30,6 +30,13 @@ protected InvestSpikeLootFunction(ILootCondition[] conditionsIn) super(conditionsIn); } + + @Override + public LootFunctionType getType() + { + return LootFunctionRegistry.INVEST_SPIKE; + } + @Override protected ItemStack run(ItemStack stack, LootContext lootContext) { @@ -48,11 +55,14 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); - Optional stealType = hemalurgyStealWhitelist - .stream() - .filter(metalType -> metalType.hasAssociatedManifestation()) - .skip(lootContext.getRandom().nextInt(hemalurgyStealWhitelist.size())) - .findFirst(); + Optional stealType = + hemalurgyStealWhitelist == null + ? Optional.empty() + : hemalurgyStealWhitelist + .stream() + .filter(metalType -> metalType.hasAssociatedManifestation()) + .skip(lootContext.getRandom().nextInt(hemalurgyStealWhitelist.size())) + .findFirst(); final float strengthLevel = MathHelper.clamp(5 + lootContext.getLuck(), 1, 10); @@ -61,7 +71,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) { case IRON: // add strength - item.Invest(stack,spikeMetalType, strengthLevel, UUID.randomUUID()); + item.Invest(stack, spikeMetalType, strengthLevel, UUID.randomUUID()); break; //steals allomantic abilities @@ -94,7 +104,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) item.Invest(stack, feruchemyMani, strengthLevel, UUID.randomUUID()); } - + break; case ATIUM: if (!stealType.isPresent()) @@ -121,12 +131,6 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) return stack; } - @Override - public LootFunctionType getType() - { - return LootFunctionRegistry.INVEST_SPIKE; - } - public static class Serializer extends LootFunction.Serializer { @Override diff --git a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java index f4eb6c7c6..57dd11b00 100644 --- a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java @@ -6,6 +6,7 @@ package leaf.cosmere.registry; import leaf.cosmere.Cosmere; +import leaf.cosmere.loot.InvestMetalmindLootFunction; import leaf.cosmere.loot.InvestSpikeLootFunction; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.loot.ILootSerializer; @@ -18,6 +19,7 @@ public class LootFunctionRegistry { public static final LootFunctionType INVEST_SPIKE = register("invest_spike", new InvestSpikeLootFunction.Serializer()); + public static final LootFunctionType INVEST_METALMIND = register("invest_metalmind", new InvestMetalmindLootFunction.Serializer()); private static LootFunctionType register(String name, ILootSerializer serializer) { @@ -26,6 +28,7 @@ private static LootFunctionType register(String name, ILootSerializer Date: Sun, 27 Mar 2022 14:28:44 +1300 Subject: [PATCH 0067/1090] Updated metal trader to set trades based on rarity --- .../leaf/cosmere/handlers/CommonEvents.java | 118 ++++++++++++++++-- 1 file changed, 109 insertions(+), 9 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 60b4756e2..33de1f47d 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -18,8 +18,6 @@ import net.minecraft.entity.merchant.villager.VillagerTrades; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.text.StringTextComponent; import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.GenerationStage; import net.minecraftforge.common.BasicTrade; @@ -31,7 +29,6 @@ import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.server.FMLServerStartingEvent; -import net.minecraftforge.registries.ForgeRegistries; import java.util.Arrays; import java.util.List; @@ -86,7 +83,7 @@ public static void registerTrades(VillagerTradesEvent event) { if (event.getType() == VillagerProfessionRegistry.METAL_TRADER.get()) { - for (int i = 1; i <= 5 ; i++) + for (int i = 1; i <= 5; i++) { final List tradesForLevel = event.getTrades().get(i); switch (i) @@ -94,32 +91,135 @@ public static void registerTrades(VillagerTradesEvent event) case 1: for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) { - tradesForLevel.add(new BasicTrade(1, new ItemStack(item.get(), 16),2,1)); + tradesForLevel.add(makeTrade(item.get())); } break; case 2: for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) { - tradesForLevel.add(new BasicTrade(10, new ItemStack(item.get()),3,2)); + tradesForLevel.add(makeTrade(item.get())); } break; case 3: - tradesForLevel.add(new BasicTrade(10, new ItemStack(ItemsRegistry.METAL_VIAL.get(),16),2,3)); + tradesForLevel.add(makeTrade(ItemsRegistry.METAL_VIAL.get())); break; case 4: for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) { - tradesForLevel.add(new BasicTrade(23, new ItemStack(item.get()),6,4)); + tradesForLevel.add(makeTrade(item.get())); } break; case 5: for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) { - tradesForLevel.add(new BasicTrade(23, new ItemStack(item.get()),1,5)); + tradesForLevel.add(makeTrade(item.get().asItem())); } break; } } } } + + + private static BasicTrade makeTrade(Item item) + { + ItemStack itemStackForSale = new ItemStack(item, 1); + + itemStackForSale.setCount(getCount(itemStackForSale)); + + return new BasicTrade( + getCost(itemStackForSale), + itemStackForSale, + getMaxTradesPerDay(itemStackForSale), + getXpPerTrade(itemStackForSale)); + + } + + private static int getCost(ItemStack item) + { + int cost = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + cost = 1; + break; + case UNCOMMON: + cost = 16; + break; + case RARE: + cost = 32; + break; + case EPIC: + cost = 64; + break; + } + + return cost; + } + + private static int getCount(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 16; + break; + case UNCOMMON: + count = 8; + break; + case RARE: + count = 4; + break; + case EPIC: + count = 1; + break; + } + + return count; + } + + private static int getMaxTradesPerDay(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 8; + break; + case UNCOMMON: + count = 5; + break; + case RARE: + count = 3; + break; + case EPIC: + count = 1; + break; + } + + return count; + } + + private static int getXpPerTrade(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 2; + break; + case UNCOMMON: + count = 4; + break; + case RARE: + count = 6; + break; + case EPIC: + count = 8; + break; + } + + return count; + } } \ No newline at end of file From de971132cea3836ecd3c61e1f24a214c0d09027c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 27 Mar 2022 14:29:07 +1300 Subject: [PATCH 0068/1090] Tidied up item names for metalminds --- .../cosmere/charge/MetalmindChargeHelper.java | 10 +++---- .../java/leaf/cosmere/constants/Metals.java | 18 ++++++------ .../cosmere/datagen/items/ItemModelsGen.java | 12 ++++---- .../cosmere/datagen/language/EngLangGen.java | 6 ++-- .../cosmere/handlers/EntityEventHandler.java | 4 +-- .../cosmere/items/ChargeableMetalItem.java | 28 ------------------- .../{Metalmind.java => MetalmindItem.java} | 15 ++++++++-- ...almind.java => BraceletMetalmindItem.java} | 6 ++-- .../items/curio/HemalurgicSpikeItem.java | 4 +-- ...almind.java => NecklaceMetalmindItem.java} | 6 ++-- ...gMetalmind.java => RingMetalmindItem.java} | 6 ++-- .../leaf/cosmere/registry/ItemsRegistry.java | 16 ++++------- 12 files changed, 54 insertions(+), 77 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/items/ChargeableMetalItem.java rename src/main/java/leaf/cosmere/items/{Metalmind.java => MetalmindItem.java} (88%) rename src/main/java/leaf/cosmere/items/curio/{BraceletMetalmind.java => BraceletMetalmindItem.java} (95%) rename src/main/java/leaf/cosmere/items/curio/{NecklaceMetalmind.java => NecklaceMetalmindItem.java} (67%) rename src/main/java/leaf/cosmere/items/curio/{RingMetalmind.java => RingMetalmindItem.java} (68%) diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index e684a8b1e..af49335be 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -7,7 +7,7 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; @@ -60,16 +60,16 @@ public static ItemStack adjustMetalmindChargeExact(PlayerEntity player, Metals.M //remove items that don't match the metal type we are looking for items.removeIf(obj -> { - boolean objectIsNotMetalmind = !(obj.getItem() instanceof Metalmind); - boolean metalMindIsNotCorrectType = ((Metalmind) obj.getItem()).getMetalType() != metalType; + boolean objectIsNotMetalmind = !(obj.getItem() instanceof MetalmindItem); + boolean metalMindIsNotCorrectType = ((MetalmindItem) obj.getItem()).getMetalType() != metalType; return (objectIsNotMetalmind || metalMindIsNotCorrectType); } ); acc.removeIf(obj -> { - boolean objectIsNotMetalmind = !(obj.getItem() instanceof Metalmind); - boolean metalMindIsNotCorrectType = ((Metalmind) obj.getItem()).getMetalType() != metalType; + boolean objectIsNotMetalmind = !(obj.getItem() instanceof MetalmindItem); + boolean metalMindIsNotCorrectType = ((MetalmindItem) obj.getItem()).getMetalType() != metalType; return (objectIsNotMetalmind || metalMindIsNotCorrectType); } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index d75cd4aab..9ead9127f 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -8,10 +8,10 @@ import leaf.cosmere.items.MetalIngotItem; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.MetalRawOreItem; -import leaf.cosmere.items.curio.BraceletMetalmind; +import leaf.cosmere.items.curio.BraceletMetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.items.curio.NecklaceMetalmind; -import leaf.cosmere.items.curio.RingMetalmind; +import leaf.cosmere.items.curio.NecklaceMetalmindItem; +import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ItemsRegistry; @@ -236,19 +236,19 @@ public Effect getTappingEffect() return EffectsRegistry.TAPPING_EFFECTS.get(this).get(); } - public NecklaceMetalmind getNecklaceItem() + public NecklaceMetalmindItem getNecklaceItem() { - return (NecklaceMetalmind) ItemsRegistry.METAL_NECKLACES.get(this).get(); + return (NecklaceMetalmindItem) ItemsRegistry.METAL_NECKLACES.get(this).get(); } - public RingMetalmind getRingItem() + public RingMetalmindItem getRingItem() { - return (RingMetalmind) ItemsRegistry.METAL_RINGS.get(this).get(); + return (RingMetalmindItem) ItemsRegistry.METAL_RINGS.get(this).get(); } - public BraceletMetalmind getBraceletItem() + public BraceletMetalmindItem getBraceletItem() { - return (BraceletMetalmind) ItemsRegistry.METAL_BRACELETS.get(this).get(); + return (BraceletMetalmindItem) ItemsRegistry.METAL_BRACELETS.get(this).get(); } public MetalIngotItem getIngotItem() diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index d05119f22..8e12b6792 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -9,10 +9,10 @@ import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.MetalRawOreItem; import leaf.cosmere.items.ShardbladeItem; -import leaf.cosmere.items.curio.BraceletMetalmind; +import leaf.cosmere.items.curio.BraceletMetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.items.curio.NecklaceMetalmind; -import leaf.cosmere.items.curio.RingMetalmind; +import leaf.cosmere.items.curio.NecklaceMetalmindItem; +import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.data.DataGenerator; import net.minecraft.item.BlockItem; @@ -58,17 +58,17 @@ else if (item instanceof MetalNuggetItem) simpleItem(path, "metal_nugget"); continue; } - else if (item instanceof BraceletMetalmind) + else if (item instanceof BraceletMetalmindItem) { simpleItem(path, "metal_bracelet"); continue; } - else if (item instanceof RingMetalmind) + else if (item instanceof RingMetalmindItem) { simpleItem(path, "metal_ring"); continue; } - else if (item instanceof NecklaceMetalmind) + else if (item instanceof NecklaceMetalmindItem) { simpleItem(path, "metal_necklace"); continue; diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index be7056b02..1aa822ebb 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -7,7 +7,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.EffectsRegistry; @@ -62,9 +62,9 @@ protected void addTranslations() String use = ((HemalurgicSpikeItem) item).getMetalType().getHemalurgicUseString(); add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); } - else if (item instanceof Metalmind) + else if (item instanceof MetalmindItem) { - String use = ((Metalmind) item).getMetalType().getFeruchemyMetalmindUse(); + String use = ((MetalmindItem) item).getMetalType().getFeruchemyMetalmindUse(); add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); } diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 6c55fa96a..85098448e 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -104,7 +104,7 @@ public static void attachEntityCapabilities(AttachCapabilitiesEvent even if (eventEntity instanceof PlayerEntity || eventEntity instanceof AnimalEntity - || eventEntity instanceof VillagerEntity + || eventEntity instanceof AbstractVillagerEntity || eventEntity instanceof MonsterEntity) { LivingEntity livingEntity = (LivingEntity) eventEntity; @@ -155,7 +155,7 @@ else if (handItem == Items.GOLD_NUGGET) { metalType = Metals.MetalType.GOLD; } - /*else if (handItem == Items.COPPER_NUGGET) + /*else if (handItem == Items.COPPER_NUGGET)//todo copper 1.18 { metalType = Metals.MetalType.COPPER; }*/ diff --git a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java b/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java deleted file mode 100644 index b03e2a9c5..000000000 --- a/src/main/java/leaf/cosmere/items/ChargeableMetalItem.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.items; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.properties.PropTypes; -import net.minecraft.item.ItemGroup; - -public class ChargeableMetalItem extends ChargeableItemBase implements IHasMetalType -{ - private final Metals.MetalType metalType; - - public ChargeableMetalItem(Metals.MetalType metalType, ItemGroup group) - { - super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); - - this.metalType = metalType; - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } -} diff --git a/src/main/java/leaf/cosmere/items/Metalmind.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java similarity index 88% rename from src/main/java/leaf/cosmere/items/Metalmind.java rename to src/main/java/leaf/cosmere/items/MetalmindItem.java index c3dc9c54d..91ebf6e69 100644 --- a/src/main/java/leaf/cosmere/items/Metalmind.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -8,6 +8,7 @@ import com.google.common.collect.Multimap; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; +import leaf.cosmere.properties.PropTypes; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.items.curio.IHemalurgicInfo; import leaf.cosmere.manifestation.AManifestation; @@ -23,13 +24,21 @@ import java.util.UUID; -public class Metalmind extends ChargeableMetalItem implements ICurioItem +public class MetalmindItem extends ChargeableItemBase implements IHasMetalType, ICurioItem { - public Metalmind(Metals.MetalType metalType, ItemGroup group) + private final Metals.MetalType metalType; + + public MetalmindItem(Metals.MetalType metalType, ItemGroup group) { - super(metalType, group); + super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); + this.metalType = metalType; } + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } /** * generate new map of attributes for when used as a curio item. diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java similarity index 95% rename from src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java rename to src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java index b254217e7..5343bb4bc 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java @@ -9,7 +9,7 @@ import leaf.cosmere.client.renderer.wearables.*; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; import net.minecraft.client.renderer.*; import net.minecraft.client.renderer.entity.model.*; import net.minecraft.client.renderer.texture.*; @@ -22,9 +22,9 @@ import java.awt.*; import java.util.*; -public class BraceletMetalmind extends Metalmind +public class BraceletMetalmindItem extends MetalmindItem { - public BraceletMetalmind(Metals.MetalType metalType) + public BraceletMetalmindItem(Metals.MetalType metalType) { super(metalType, CosmereItemGroups.METALMINDS); } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index eacb4fe53..70265fd46 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -13,7 +13,7 @@ import leaf.cosmere.client.renderer.wearables.SpikeModel; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; @@ -57,7 +57,7 @@ import java.util.UUID; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) -public class HemalurgicSpikeItem extends Metalmind implements IHemalurgicInfo +public class HemalurgicSpikeItem extends MetalmindItem implements IHemalurgicInfo { private final float attackDamage; /** diff --git a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java similarity index 67% rename from src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java rename to src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java index d4f576276..203c83ffa 100644 --- a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java @@ -6,11 +6,11 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; -public class NecklaceMetalmind extends Metalmind +public class NecklaceMetalmindItem extends MetalmindItem { - public NecklaceMetalmind(Metals.MetalType metalType) + public NecklaceMetalmindItem(Metals.MetalType metalType) { super(metalType, CosmereItemGroups.METALMINDS); } diff --git a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java b/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java similarity index 68% rename from src/main/java/leaf/cosmere/items/curio/RingMetalmind.java rename to src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java index 67d6802fe..a48793662 100644 --- a/src/main/java/leaf/cosmere/items/curio/RingMetalmind.java +++ b/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java @@ -6,11 +6,11 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.items.Metalmind; +import leaf.cosmere.items.MetalmindItem; -public class RingMetalmind extends Metalmind +public class RingMetalmindItem extends MetalmindItem { - public RingMetalmind(Metals.MetalType metalType) + public RingMetalmindItem(Metals.MetalType metalType) { super(metalType, CosmereItemGroups.METALMINDS); } diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index adba2b69c..843740ec8 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -10,17 +10,13 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Constants.RegNameStubs; import leaf.cosmere.constants.Metals; -import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.*; -import leaf.cosmere.items.curio.BraceletMetalmind; +import leaf.cosmere.items.curio.BraceletMetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.items.curio.NecklaceMetalmind; -import leaf.cosmere.items.curio.RingMetalmind; +import leaf.cosmere.items.curio.NecklaceMetalmindItem; +import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.properties.PropTypes; -import net.minecraft.item.ElytraItem; import net.minecraft.item.ItemTier; -import net.minecraft.item.Rarity; -import net.minecraft.item.SwordItem; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @@ -115,7 +111,7 @@ public class ItemsRegistry Function.identity(), type -> ITEMS.register( type.name().toLowerCase() + RegNameStubs.RING + RegNameStubs.METALMIND, - () -> createItem(new RingMetalmind(type)) + () -> createItem(new RingMetalmindItem(type)) ))); public static final Map> METAL_BRACELETS = @@ -125,7 +121,7 @@ public class ItemsRegistry Function.identity(), type -> ITEMS.register( type.name().toLowerCase() + RegNameStubs.BRACELET + RegNameStubs.METALMIND, - () -> createItem(new BraceletMetalmind(type)) + () -> createItem(new BraceletMetalmindItem(type)) ))); public static final Map> METAL_NECKLACES = @@ -135,7 +131,7 @@ public class ItemsRegistry Function.identity(), type -> ITEMS.register( type.name().toLowerCase() + RegNameStubs.NECKLACE + RegNameStubs.METALMIND, - () -> createItem(new NecklaceMetalmind(type)) + () -> createItem(new NecklaceMetalmindItem(type)) ))); public static final Map> METAL_SPIKE = From dea3f127004209693aad46589984253509697400 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 27 Mar 2022 17:05:38 +1300 Subject: [PATCH 0069/1090] Lots of loot changes. Spikes, metalminds, ore available. --- .../java/leaf/cosmere/loot/LootHandler.java | 2 + .../loot/RandomiseMetalTypeLootFunction.java | 158 +++++++++++++++++ .../registry/LootFunctionRegistry.java | 2 + .../inject/abandoned_mineshaft.json | 167 +++--------------- .../loot_tables/inject/bastion_bridge.json | 48 +++++ .../loot_tables/inject/bastion_other.json | 48 +++++ .../loot_tables/inject/bastion_treasure.json | 78 ++++---- .../loot_tables/inject/desert_pyramid.json | 82 ++++++--- .../loot_tables/inject/end_city_treasure.json | 35 +++- .../loot_tables/inject/jungle_temple.json | 48 +++-- .../loot_tables/inject/simple_dungeon.json | 23 ++- .../inject/stronghold_corridor.json | 13 ++ .../inject/stronghold_crossing.json | 13 ++ .../inject/stronghold_library.json | 13 ++ .../inject/village_blacksmith.json | 31 ++++ .../loot_tables/inject/woodland_mansion.json | 22 ++- 16 files changed, 556 insertions(+), 227 deletions(-) create mode 100644 src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/bastion_bridge.json create mode 100644 src/main/resources/data/cosmere/loot_tables/inject/bastion_other.json diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index 58d686f77..f5d00b62e 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -32,6 +32,8 @@ public static void lootLoad(LootTableLoadEvent evt) { case "abandoned_mineshaft": case "bastion_treasure": + case "bastion_other": + case "bastion_bridge": case "desert_pyramid": case "end_city_treasure": case "jungle_temple": diff --git a/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java new file mode 100644 index 000000000..bed76aad5 --- /dev/null +++ b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java @@ -0,0 +1,158 @@ +/* + * File created ~ 26 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.loot; + +import com.google.gson.JsonDeserializationContext; +import com.google.gson.JsonObject; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.*; +import leaf.cosmere.items.curio.BraceletMetalmindItem; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.items.curio.NecklaceMetalmindItem; +import leaf.cosmere.items.curio.RingMetalmindItem; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.LootFunctionRegistry; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.loot.LootContext; +import net.minecraft.loot.LootFunction; +import net.minecraft.loot.LootFunctionType; +import net.minecraft.loot.conditions.ILootCondition; +import net.minecraft.nbt.CompoundNBT; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +public class RandomiseMetalTypeLootFunction extends LootFunction +{ + + protected RandomiseMetalTypeLootFunction(ILootCondition[] conditionsIn) + { + super(conditionsIn); + } + + + @Override + public LootFunctionType getType() + { + return LootFunctionRegistry.RANDOMISE_METALTYPE; + } + + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + final Item item = stack.getItem(); + if (!(item instanceof IHasMetalType)) + { + return stack; + } + + if (item instanceof HemalurgicSpikeItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasHemalurgicEffect) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_SPIKE.get(metalType.get()).get()); + } + } + else if (item instanceof MetalmindItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + Item metalmindItem; + + if (item instanceof RingMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_RINGS.get(metalType.get()).get(); + } + else if (item instanceof NecklaceMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_NECKLACES.get(metalType.get()).get(); + } + else if (item instanceof BraceletMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_BRACELETS.get(metalType.get()).get(); + } + else + { + metalmindItem = item; + } + + CompoundNBT nbt = stack.getOrCreateTag().copy(); + stack = new ItemStack(metalmindItem); + stack.setTag(nbt); + } + } + else if (item instanceof MetalRawOreItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_RAW_ORE.get(metalType.get()).get(), stack.getCount()); + } + } + else if (item instanceof MetalNuggetItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_NUGGETS.get(metalType.get()).get(), stack.getCount()); + } + } + else if (item instanceof MetalIngotItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_INGOTS.get(metalType.get()).get(), stack.getCount()); + } + } + + return stack; + } + + public static class Serializer extends LootFunction.Serializer + { + @Override + public RandomiseMetalTypeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) + { + return new RandomiseMetalTypeLootFunction(lootConditions); + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java index 57dd11b00..9a9f5cb7b 100644 --- a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java @@ -8,6 +8,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.loot.InvestMetalmindLootFunction; import leaf.cosmere.loot.InvestSpikeLootFunction; +import leaf.cosmere.loot.RandomiseMetalTypeLootFunction; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.loot.ILootSerializer; import net.minecraft.loot.LootFunctionType; @@ -20,6 +21,7 @@ public class LootFunctionRegistry { public static final LootFunctionType INVEST_SPIKE = register("invest_spike", new InvestSpikeLootFunction.Serializer()); public static final LootFunctionType INVEST_METALMIND = register("invest_metalmind", new InvestMetalmindLootFunction.Serializer()); + public static final LootFunctionType RANDOMISE_METALTYPE = register("randomise_metaltype", new RandomiseMetalTypeLootFunction.Serializer()); private static LootFunctionType register(String name, ILootSerializer serializer) { diff --git a/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json index cb8577b49..a0363e41a 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/abandoned_mineshaft.json @@ -2,144 +2,33 @@ "__comment": "This table is injected as its own pool into minecraft:chests/abandoned_mineshaft", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:atium_nugget", - "weight": 5 - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_tin_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_zinc_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_copper_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_aluminum_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_chromium_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_cadmium_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_nickel_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_lead_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" - } - } - ], - "name": "cosmere:raw_silver_ore" - }, - { - "type": "minecraft:empty" - } - ] - } + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "weight": 5 + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_tin_ore", + "__comment": "with randomise metal type function, only tin doesn't matter here." + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/bastion_bridge.json b/src/main/resources/data/cosmere/loot_tables/inject/bastion_bridge.json new file mode 100644 index 000000000..d0ca7417a --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/bastion_bridge.json @@ -0,0 +1,48 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/woodland_mansion", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ] + }, + { + "type": "minecraft:empty", + "weight": 25 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/bastion_other.json b/src/main/resources/data/cosmere/loot_tables/inject/bastion_other.json new file mode 100644 index 000000000..0a7532093 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_tables/inject/bastion_other.json @@ -0,0 +1,48 @@ +{ + "__comment": "This table is injected as its own pool into minecraft:chests/woodland_mansion", + "pools": [ + { + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ] + }, + { + "type": "minecraft:empty", + "weight": 33 + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json index 743466963..bfe437a8e 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/bastion_treasure.json @@ -2,43 +2,47 @@ "__comment": "This table is injected as its own pool into minecraft:chests/woodland_mansion", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:atium_spike", - "functions": [ - { - "function": "cosmere:invest_spike" - } - ], - "weight": 33 - }, - { - "type": "minecraft:item", - "name": "cosmere:lerasium_nugget", - "weight": 16 - }, - { - "type": "minecraft:item", - "name": "cosmere:atium_nugget", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 3.0, - "max": 7.0, - "type": "minecraft:uniform" + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" } - } - ], - "weight": 33 - }, - { - "type": "minecraft:empty" - } - ] - } + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ] + }, + { + "type": "minecraft:empty", + "weight": 5 + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json index 2155d9b2b..f8e464106 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/desert_pyramid.json @@ -2,33 +2,61 @@ "__comment": "This table is injected as its own pool into minecraft:chests/desert_pyramid", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:atium_nugget", - "functions": [ - { - "function": "minecraft:set_count", - "count": { - "min": 2.0, - "max": 8.0, - "type": "minecraft:uniform" + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" } - } - ], - "weight": 12 - }, - { - "type": "minecraft:item", - "name": "cosmere:lerasium_nugget", - "weight": 5 - }, - { - "type": "minecraft:empty" - } - ] - } + ] + }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ] + }, + { + "type": "minecraft:empty", + "weight": 33 + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json b/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json index f55deb831..67c8ff15e 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/end_city_treasure.json @@ -7,11 +7,40 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:lerasium_nugget", - "weight": 10 + "name": "cosmere:atium_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] }, { - "type": "minecraft:empty" + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, + { + "type": "minecraft:item", + "name": "cosmere:atium_nugget", + "functions": [ + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ] + }, + { + "type": "minecraft:empty", + "weight": 16 } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json index 966729d0e..86a4232ef 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/jungle_temple.json @@ -5,6 +5,39 @@ "name": "main", "rolls": 1, "entries": [ + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" + }, { "type": "minecraft:item", "name": "cosmere:atium_nugget", @@ -12,21 +45,16 @@ { "function": "minecraft:set_count", "count": { - "min": 2.0, - "max": 8.0, + "min": 3.0, + "max": 7.0, "type": "minecraft:uniform" } } - ], - "weight": 12 - }, - { - "type": "minecraft:item", - "name": "cosmere:lerasium_nugget", - "weight": 5 + ] }, { - "type": "minecraft:empty" + "type": "minecraft:empty", + "weight": 33 } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json index d806039d4..f18426447 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json @@ -5,6 +5,19 @@ "name": "main", "rolls": 1, "entries": [ + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, { "type": "minecraft:item", "name": "cosmere:atium_nugget", @@ -12,16 +25,16 @@ { "function": "minecraft:set_count", "count": { - "min": 2.0, - "max": 8.0, + "min": 3.0, + "max": 7.0, "type": "minecraft:uniform" } } - ], - "weight": 12 + ] }, { - "type": "minecraft:empty" + "type": "minecraft:empty", + "weight": 33 } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json index 835e5b48c..954f1e1aa 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json @@ -10,6 +10,19 @@ "name": "cosmere:lerasium_nugget", "weight": 10 }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, { "type": "minecraft:empty" } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json index 97afdfb70..af471dc4f 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json @@ -10,6 +10,19 @@ "name": "cosmere:lerasium_nugget", "weight": 10 }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, { "type": "minecraft:empty" } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json index 0cea6ffd7..1631a34d6 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json @@ -10,6 +10,19 @@ "name": "cosmere:lerasium_nugget", "weight": 10 }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, { "type": "minecraft:empty" } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json index 4db1752ea..e13093353 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/village_blacksmith.json @@ -7,6 +7,37 @@ "entries": [ { "type": "minecraft:empty" + }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "minecraft:set_count", + "count": { + "min": 3.0, + "max": 7.0, + "type": "minecraft:uniform" + } + } + ], + "name": "cosmere:raw_tin_ore", + "__comment": "with randomise metal type function, only tin doesn't matter here." } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json index cdd27b308..23620a34b 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/woodland_mansion.json @@ -7,13 +7,23 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:atium_spike", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_spike", "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, { "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" } - ], - "weight": 33 + ] + }, + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget" }, { "type": "minecraft:item", @@ -27,11 +37,11 @@ "type": "minecraft:uniform" } } - ], - "weight": 33 + ] }, { - "type": "minecraft:empty" + "type": "minecraft:empty", + "weight": 33 } ] } From e686f63a6478d9dd6d2311fce3e5df76b7cb791b Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 28 Mar 2022 09:41:05 +1300 Subject: [PATCH 0070/1090] bumped build numbers and updated changelog --- Changelog.md | 3 +++ gradle.properties | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 7dee53acc..8705ef3b8 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,6 +2,9 @@ The Cosmere Project - For 1.16 Minecraft B25 Fixed some loot chests not being injected into +Implemented ability for partially charged unsealed metalminds to be found in loot chests. +Updated metal trader potential trades, now sets costs, amounts, trades per day and xp per trade based on item rarity. +Updated a lot of loot chest loot. Look for hemalurgically charged spikes, invested metalminds and atium/lerasium beads and raw ore in various chests. Still checking that I've got the loot tables working correctly, but I was able to get things to show up rarely in chests. diff --git a/gradle.properties b/gradle.properties index fd6a5d1f9..3a364743a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ jei_version=1.16.4\:7.6.0.62 hwyla_version=1.10.11-B78_1.16.2 org.gradle.jvmargs=-Xmx8G curios_version=1.16.5-4.0.6.8 -build_number=25 +build_number=26 patchouli_version=1.16.4-51 mekanism_version=1.16.5-10.1.2.457 configured_version=3546348 \ No newline at end of file From 39d6cfc205f93f3aca778089ff59ee4addf9f779 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 28 Mar 2022 09:47:10 +1300 Subject: [PATCH 0071/1090] Update Changelog.md --- Changelog.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Changelog.md b/Changelog.md index 8705ef3b8..5fc588305 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,11 @@ The Cosmere Project - For 1.16 Minecraft +B26 + +Removed accidental character left in village_blacksmith loot table json. + + + B25 Fixed some loot chests not being injected into Implemented ability for partially charged unsealed metalminds to be found in loot chests. From c3511bc47f368e9884cdb3a521685e798c35f3d6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 31 Mar 2022 08:54:21 +1300 Subject: [PATCH 0072/1090] tidying up script only. --- src/main/java/leaf/cosmere/Cosmere.java | 2 +- .../PatchouliCompat.java | 4 ++-- .../java/leaf/cosmere/items/GuideItem.java | 3 +-- .../cosmere/items/curio/IHemalurgicInfo.java | 4 ++-- .../leaf/cosmere/registry/TagsRegistry.java | 22 +++++++++---------- 5 files changed, 17 insertions(+), 18 deletions(-) rename src/main/java/leaf/cosmere/compat/{curios => patchouli}/PatchouliCompat.java (91%) diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 3eebc36ef..8b589eb77 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -8,7 +8,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientSetup; import leaf.cosmere.compat.curios.CuriosCompat; -import leaf.cosmere.compat.curios.PatchouliCompat; +import leaf.cosmere.compat.patchouli.PatchouliCompat; import leaf.cosmere.handlers.ColorHandler; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.network.Network; diff --git a/src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java b/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java similarity index 91% rename from src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java rename to src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java index f132fe08b..70cbea058 100644 --- a/src/main/java/leaf/cosmere/compat/curios/PatchouliCompat.java +++ b/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java @@ -1,8 +1,8 @@ /* - * File created ~ 24 - 4 - 2021 ~ Leaf + * File created ~ 31 - 3 - 2022 ~ Leaf */ -package leaf.cosmere.compat.curios; +package leaf.cosmere.compat.patchouli; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraftforge.eventbus.api.IEventBus; diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index d2b2765b2..45c568773 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -4,7 +4,7 @@ package leaf.cosmere.items; -import leaf.cosmere.compat.curios.PatchouliCompat; +import leaf.cosmere.compat.patchouli.PatchouliCompat; import leaf.cosmere.properties.PropTypes; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.TextHelper; @@ -20,7 +20,6 @@ import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.RayTraceContext; import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextComponentUtils; import net.minecraft.util.text.TextFormatting; import net.minecraft.world.World; import net.minecraftforge.api.distmarker.Dist; diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 6befa6ec0..3d0104b73 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -6,6 +6,7 @@ import com.google.common.collect.Multimap; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; @@ -26,7 +27,6 @@ import java.util.*; -import static leaf.cosmere.constants.Constants.Strings.CONTAINED_POWERS_FOUND; public interface IHemalurgicInfo { @@ -308,7 +308,7 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema return; } - tooltip.add(TextHelper.createTranslatedText(CONTAINED_POWERS_FOUND)); + tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) { diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 9ef205d60..700e0e175 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -41,16 +41,16 @@ public static class Items { - public static ITag.INamedTag CURIO_ANY = makeItem("curios", "curio"); - public static ITag.INamedTag CURIO_BACK = makeItem("curios", "back"); - public static ITag.INamedTag CURIO_BELT = makeItem("curios", "belt"); - public static ITag.INamedTag CURIO_BODY = makeItem("curios", "body"); - public static ITag.INamedTag CURIO_BRACELET = makeItem("curios", "bracelet"); - public static ITag.INamedTag CURIO_CHARM = makeItem("curios", "charm"); - public static ITag.INamedTag CURIO_HEAD = makeItem("curios", "head"); - public static ITag.INamedTag CURIO_HANDS = makeItem("curios", "hands"); - public static ITag.INamedTag CURIO_NECKLACE = makeItem("curios", "necklace"); - public static ITag.INamedTag CURIO_RING = makeItem("curios", "ring"); + public static final ITag.INamedTag CURIO_ANY = makeItem("curios", "curio"); + public static final ITag.INamedTag CURIO_BACK = makeItem("curios", "back"); + public static final ITag.INamedTag CURIO_BELT = makeItem("curios", "belt"); + public static final ITag.INamedTag CURIO_BODY = makeItem("curios", "body"); + public static final ITag.INamedTag CURIO_BRACELET = makeItem("curios", "bracelet"); + public static final ITag.INamedTag CURIO_CHARM = makeItem("curios", "charm"); + public static final ITag.INamedTag CURIO_HEAD = makeItem("curios", "head"); + public static final ITag.INamedTag CURIO_HANDS = makeItem("curios", "hands"); + public static final ITag.INamedTag CURIO_NECKLACE = makeItem("curios", "necklace"); + public static final ITag.INamedTag CURIO_RING = makeItem("curios", "ring"); public static ITag.INamedTag METAL_SPIKE = makeItem("cosmere", "spike"); @@ -115,7 +115,7 @@ public static ITag.INamedTag makeBlock(String domain, String path) return BlockTags.bind(new ResourceLocation(domain, path).toString()); } - public static ITag.INamedTag DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); + public static ITag.INamedTag DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); public static ITag.INamedTag WITHER_PROOF = makeBlock("minecraft", "wither_immune"); public static final Map> METAL_ORE_BLOCK_TAGS = From 8e3f1f3ed6ce95884c476be18d35b47f3ed60f81 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 1 Apr 2022 17:55:51 +1300 Subject: [PATCH 0073/1090] Hemalurgic Tin --- build.gradle | 6 +- .../cap/entity/SpiritwebCapability.java | 20 ++--- .../cosmere/compat/curios/CosmereCurios.java | 32 +++++++ .../java/leaf/cosmere/constants/Metals.java | 85 +++++++++++++++++++ .../java/leaf/cosmere/datagen/RecipeGen.java | 20 ++--- .../advancements/AllomancyAdvancements.java | 2 +- .../advancements/FeruchemyAdvancements.java | 2 +- .../cosmere/datagen/items/ItemModelsGen.java | 1 - .../cosmere/datagen/language/EngLangGen.java | 2 +- .../categories/PatchouliAllomancy.java | 2 +- .../categories/PatchouliFeruchemy.java | 2 +- .../categories/PatchouliHemalurgy.java | 2 +- .../allomancy/AllomancyBoostEffect.java | 2 +- .../leaf/cosmere/handlers/CommonEvents.java | 2 +- .../leaf/cosmere/handlers/ModBusEvents.java | 27 ++++-- .../leaf/cosmere/items/MetalmindItem.java | 5 +- .../items/curio/HemalurgicSpikeItem.java | 34 +++++++- .../cosmere/items/curio/IHemalurgicInfo.java | 79 +++++++---------- .../allomancy/AllomancyBase.java | 2 +- .../feruchemy/FeruchemyBase.java | 2 +- .../leaf/cosmere/mixin/LightTextureMixin.java | 37 ++++++++ .../cosmere/registry/AttributesRegistry.java | 14 ++- .../leaf/cosmere/registry/BlocksRegistry.java | 4 +- .../cosmere/registry/FeatureRegistry.java | 2 +- src/main/resources/cosmere.mixins.json | 5 +- 25 files changed, 291 insertions(+), 100 deletions(-) create mode 100644 src/main/java/leaf/cosmere/mixin/LightTextureMixin.java diff --git a/build.gradle b/build.gradle index 1ff06dbf8..c407c6290 100644 --- a/build.gradle +++ b/build.gradle @@ -191,9 +191,9 @@ dependencies { //runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:generators")// Mekanism: Generators //modname-modid:fileid? - implementation fg.deobf("curse.maven:appleskin-248787:3035787") - implementation fg.deobf("curse.maven:journeymap-32274:3397059") - runtimeOnly fg.deobf("curse.maven:configured-457570:${configured_version}") + //runtimeOnly fg.deobf("curse.maven:appleskin-248787:3035787") + //runtimeOnly fg.deobf("curse.maven:journeymap-32274:3397059") + //runtimeOnly fg.deobf("curse.maven:configured-457570:${configured_version}") //implementation fg.deobf("curse.maven:ctm-267602:2642375") } diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 2de2ffce4..2f21dca99 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -133,7 +133,7 @@ public CompoundNBT serializeNBT() for (Metals.MetalType metalType : Metals.MetalType.values()) { - nbt.putInt(metalType.name().toLowerCase() + "_ingested", METALS_INGESTED.get(metalType)); + nbt.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); } return nbt; @@ -162,7 +162,7 @@ public void deserializeNBT(CompoundNBT nbt) for (Metals.MetalType metalType : Metals.MetalType.values()) { - METALS_INGESTED.put(metalType, nbt.getInt(metalType.name().toLowerCase() + "_ingested")); + METALS_INGESTED.put(metalType, nbt.getInt(metalType.getName() + "_ingested")); } } @@ -357,12 +357,12 @@ public boolean hasAnyPowers() { String path = manifestation.getRegistryName().getPath(); - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(path)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { continue; } - RegistryObject attributeRegistryObject = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(path); + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); Attribute attribute = attributeRegistryObject.get(); ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); @@ -392,12 +392,12 @@ public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powe { AManifestation manifestation = manifestationTypeID.getManifestation(powerID); String manifestationName = manifestation.getRegistryName().getPath(); - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(manifestationName)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { return false; } - Attribute attribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(manifestationName).get(); + Attribute attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); if (manifestationAttribute != null) @@ -417,11 +417,11 @@ public void giveManifestation(ManifestationTypes manifestationTypeID, int powerI AManifestation manifestation = manifestationTypeID.getManifestation(powerID); String manifestationName = manifestation.getRegistryName().getPath(); - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(manifestationName)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { return; } - RegistryObject attributeRegistryObject = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(manifestationName); + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); Attribute attribute = attributeRegistryObject.get(); ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); @@ -443,12 +443,12 @@ public void removeManifestation(ManifestationTypes manifestationTypeID, int powe AManifestation manifestation = manifestationTypeID.getManifestation(powerID); String path = manifestation.getRegistryName().getPath(); - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(path)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { return; } - RegistryObject attributeRegistryObject = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(path); + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); Attribute attribute = attributeRegistryObject.get(); ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); diff --git a/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java b/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java index 17ec152a6..5dfdb6e40 100644 --- a/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java +++ b/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java @@ -4,8 +4,18 @@ package leaf.cosmere.compat.curios; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.ItemStack; +import org.apache.commons.lang3.tuple.ImmutableTriple; +import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.type.capability.ICurio; +import java.util.Optional; +import java.util.function.Predicate; + public class CosmereCurios { @@ -13,4 +23,26 @@ public static ICurio createTestCurioProvider() { return new TestCurio(); } + + + public static Optional> getEquippedSpikeCurio(LivingEntity livingEntity, Metals.MetalType metalType) + { + Predicate spikePredicate = stack -> + { + final boolean isSpike = stack.getItem() instanceof HemalurgicSpikeItem; + return isSpike && ((HemalurgicSpikeItem) stack.getItem()).getMetalType() == metalType; + }; + return CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, livingEntity); + } + + public static ItemStack getEquippedSpikeCurioStack(PlayerEntity player, Metals.MetalType metalType) + { + final Optional> curioSpike = getEquippedSpikeCurio(player, metalType); + if(curioSpike.isPresent()) + { + return curioSpike.get().getRight(); + } + return ItemStack.EMPTY; + } + } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 9ead9127f..b80a4f144 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -17,6 +17,12 @@ import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.block.OreBlock; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.ai.attributes.Attributes; +import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; +import net.minecraft.entity.boss.dragon.EnderDragonEntity; +import net.minecraft.entity.monster.PhantomEntity; +import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.IItemTier; import net.minecraft.item.Item; import net.minecraft.item.Rarity; @@ -27,6 +33,7 @@ import java.awt.*; import java.util.Arrays; import java.util.Collection; +import java.util.Locale; import java.util.Optional; import java.util.stream.Collectors; @@ -104,6 +111,8 @@ public int getID() return id; } + public String getName(){ return name().toLowerCase(Locale.ROOT);} + public Rarity getRarity() { switch (this) @@ -575,6 +584,82 @@ public Collection getHemalurgyStealWhitelist() return null; } + public double getEntityAbilityStrength(LivingEntity killedEntity) + { + //Steals non-manifestation based abilities. traits inherent to an entity? + double strengthToAdd = 0; + switch (this) + { + case IRON: + //steals physical strength + //don't steal modified values, only base value + //todo decide how much strength is reasonable to steal and how much goes to waste + //currently will try 70% + strengthToAdd = killedEntity.getAttributes().getBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; + + break; + case TIN: + //Steals senses + + //can track you on a huge island, even underground. + if (killedEntity instanceof EnderDragonEntity) + { + strengthToAdd = 0.77; + } + //Literally hunt players at night + else if (killedEntity instanceof PhantomEntity) + { + strengthToAdd = 0.66; + } + else if (killedEntity instanceof PlayerEntity) + { + strengthToAdd = 0.25; + } + else + { + final ModifiableAttributeInstance attribute = killedEntity.getAttribute(Attributes.FOLLOW_RANGE); + + if (attribute != null) + { + //ghasts have 100 base follow range, + //most others have 16-40 + final int hemalurgicDecay = 150; + strengthToAdd = attribute.getBaseValue() / hemalurgicDecay; + } + else + { + //at this point, who cares. + strengthToAdd = 0.10; + } + } + break; + case COPPER: + //Steals mental fortitude, memory, and intelligence + //todo increase base xp gain? + break; + case ZINC: + //Steals emotional fortitude + //todo figure out what that means + break; + case ALUMINUM: + //Removes all powers + //... ooops? + //maybe its an item you can equip on others that they then have to remove? + break; + case DURALUMIN: + //Steals Connection/Identity + break; + case CHROMIUM: + //Might steal destiny + //so we could add some permanent luck? + break; + case NICROSIL: + //Steals Investiture + break; + } + return strengthToAdd; + } + public String getHemalurgicUseString() { switch (this) diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index c2aa8b5bd..dbb4a223c 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -76,10 +76,10 @@ protected void buildShapelessRecipes(Consumer consumer) } compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType), metalType.name().toLowerCase() + "_block_deconstruct"); + decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType), metalType.getName() + "_block_deconstruct"); compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType), metalType.name().toLowerCase() + "_item_deconstruct"); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); if (metalType.hasOre()) { @@ -119,7 +119,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case PEWTER: ShapelessRecipeBuilder.shapeless(output, 5) @@ -129,14 +129,14 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(materialTag.get(Metals.MetalType.TIN)) .requires(materialTag.get(Metals.MetalType.TIN)) .requires(materialTag.get(Metals.MetalType.LEAD)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case BRASS: ShapelessRecipeBuilder.shapeless(output, 2) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.ZINC)) .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case BRONZE: ShapelessRecipeBuilder.shapeless(output, 4) @@ -145,7 +145,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(materialTag.get(Metals.MetalType.COPPER)) .requires(materialTag.get(Metals.MetalType.COPPER)) .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case DURALUMIN: ShapelessRecipeBuilder.shapeless(output, 5) @@ -155,7 +155,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(materialTag.get(Metals.MetalType.ALUMINUM)) .requires(materialTag.get(Metals.MetalType.ALUMINUM)) .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case NICROSIL: ShapelessRecipeBuilder.shapeless(output, 4) @@ -164,7 +164,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(materialTag.get(Metals.MetalType.NICKEL)) .requires(materialTag.get(Metals.MetalType.NICKEL)) .requires(materialTag.get(Metals.MetalType.NICKEL)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case BENDALLOY: ShapelessRecipeBuilder.shapeless(output, 9) @@ -178,14 +178,14 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalTyp .requires(materialTag.get(Metals.MetalType.LEAD)) .requires(materialTag.get(Metals.MetalType.TIN)) .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; case ELECTRUM: ShapelessRecipeBuilder.shapeless(output, 2) .unlockedBy("has_item", has(output)) .requires(Ingredient.of(Tags.Items.INGOTS_GOLD)) .requires(materialTag.get(Metals.MetalType.SILVER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.name().toLowerCase(Locale.ROOT))); + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; } } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index 2574e3e77..d046bac8c 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -51,7 +51,7 @@ public void accept(Consumer advancementConsumer) AllomancyBase allomancyBase = (AllomancyBase) manifestation.get(); Metals.MetalType metalType = allomancyBase.getMetalType(); - String metalName = metalType.name().toLowerCase(Locale.ROOT); + String metalName = metalType.getName(); Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() .parent(root) diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java index c4bcf607c..769d6205d 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -52,7 +52,7 @@ public void accept(Consumer advancementConsumer) FeruchemyBase feruchemyBase = (FeruchemyBase) manifestation.get(); Metals.MetalType metalType = feruchemyBase.getMetalType(); - String metalName = metalType.name().toLowerCase(Locale.ROOT); + String metalName = metalType.getName(); Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() .parent(root) diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 8e12b6792..0863dfd6f 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -80,7 +80,6 @@ else if (item instanceof HemalurgicSpikeItem) } else if (item instanceof ShardbladeItem) { - //simpleItem(path, "metal_spike"); continue; } else if (item instanceof MetalRawOreItem) diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 1aa822ebb..9a06681b2 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -126,7 +126,7 @@ else if (item instanceof MetalmindItem) //guidebook for (Metals.MetalType metalType : Metals.MetalType.values()) { - String metalName = metalType.name().toLowerCase(Locale.ROOT); + String metalName = metalType.getName(); final String mistingName = metalType.getMistingName(); final String ferringName = metalType.getFerringName(); diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index e16e8f527..a151706bd 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -55,7 +55,7 @@ public static void collect(List categories, List categories, List categories, List { //todo powers to NOT increase? diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 33de1f47d..107286bcc 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -71,7 +71,7 @@ public static void onBiomeLoad(BiomeLoadingEvent event) if (metalType.hasOre()) { event.getGeneration().addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, FeatureRegistry.ConfiguredFeatures.ORE_FEATURES.get(metalType)); - LogHelper.debug(String.format("Added %s to: %s", metalType.name().toLowerCase(Locale.ROOT), event.getName())); + LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); } } diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index f0ba331f2..fe326cff5 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -15,6 +15,8 @@ import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; +import java.util.Locale; + @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModBusEvents @@ -44,20 +46,29 @@ public class ModBusEvents @SubscribeEvent(priority = EventPriority.HIGH) public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (EntityType entityType : entityTypes) { - if (!metalType.hasAssociatedManifestation()) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - continue; - } + if (!metalType.hasAssociatedManifestation()) + { + continue; + } - RegistryObject mistingAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getMistingName()); - RegistryObject ferringAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getFerringName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getMistingName()); + RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFerringName()); - for (EntityType entityType : entityTypes) - { event.add(entityType, mistingAttribute.get()); event.add(entityType, ferringAttribute.get()); + + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + event.add(entityType, metalRelatedAttribute.get()); + } + } } } diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 91ebf6e69..1467ebe48 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -7,7 +7,6 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import leaf.cosmere.constants.Metals; -import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.items.curio.IHemalurgicInfo; @@ -64,7 +63,7 @@ public Multimap getAttributeModifiers(SlotContext for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { String manifestationName = manifestation.getRegistryName().getPath(); - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(manifestationName)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { continue; } @@ -73,7 +72,7 @@ public Multimap getAttributeModifiers(SlotContext { UUID someUUID = UUID.nameUUIDFromBytes((manifestationName + uuid.toString()).getBytes()); attributeModifiers.put( - AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(manifestationName).get(), + AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), new AttributeModifier( someUUID, manifestationName, diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 70265fd46..63721ad23 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -11,6 +11,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.renderer.wearables.SpikeModel; +import leaf.cosmere.compat.curios.CosmereCurios; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; @@ -45,6 +46,8 @@ import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import org.apache.commons.lang3.tuple.ImmutableTriple; +import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.SlotTypePreset; import top.theillusivec4.curios.api.type.capability.ICurio; @@ -55,6 +58,7 @@ import java.util.List; import java.util.Optional; import java.util.UUID; +import java.util.function.Predicate; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class HemalurgicSpikeItem extends MetalmindItem implements IHemalurgicInfo @@ -129,6 +133,12 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); @@ -187,7 +197,6 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList getDefaultAttributeModifiers(Equip @Override public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack stack) { - //has to be a conscious decision to stab yourself + //do not allow players to wear two spikes of the same metal empowered by the same killed entity UUID + if (livingEntity instanceof PlayerEntity) + { + PlayerEntity player = (PlayerEntity)livingEntity; + final UUID stackWeWantToEquipUUID = getHemalurgicIdentity(stack); + + if (stackWeWantToEquipUUID != null) + { + Predicate spikePredicate = stackToFind -> + { + final boolean isSpike = stackToFind.getItem() instanceof HemalurgicSpikeItem; + final HemalurgicSpikeItem hemalurgicSpikeItem = (HemalurgicSpikeItem) stackToFind.getItem(); + final UUID foundSpikeUUID = getHemalurgicIdentity(stackToFind); + return isSpike + && hemalurgicSpikeItem.getMetalType() == getMetalType() + && foundSpikeUUID != null + && foundSpikeUUID.compareTo(stackWeWantToEquipUUID) == 0; + }; + final Optional> curioSpike = CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, player); + return !curioSpike.isPresent(); + } + } return true; } diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 3d0104b73..af4547497 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -78,45 +78,25 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType switch (spikeMetalType) { case IRON: - //steals physical strength - double strengthCurrent = CompoundNBTHelper.getDouble(hemalurgyInfo, spikeMetalType.name(), 0); - //don't steal modified values, only base value - //todo decide how much strength is reasonable to steal and how much goes to waste - //currently will try 70% - double strengthToAdd = entityKilled.getAttributes().getBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; - CompoundNBTHelper.setDouble(hemalurgyInfo, spikeMetalType.name(), strengthCurrent + strengthToAdd); - - Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); - return; case TIN: - //Steals senses - //todo figure out what that means in minecraft - break; case COPPER: - //Steals mental fortitude, memory, and intelligence - //todo increase base xp gain? - break; case ZINC: - //Steals emotional fortitude - //todo figure out what that means - break; case ALUMINUM: - //Removes all powers - //... ooops? - //maybe its an item you can equip on others that they then have to remove? - break; case DURALUMIN: - //Steals Connection/Identity - break; case CHROMIUM: - //Might steal destiny - //so we could add some permanent luck? - break; case NICROSIL: - //Steals Investiture - //todo figure out what that means - //probably in the breaths/stormlight - break; + + //Non-Manifestation based hemalurgy all comes here + //How much is already stored? (like koloss spikes could keep storing strength on the same spike) + final double strengthCurrent = CompoundNBTHelper.getDouble(hemalurgyInfo, spikeMetalType.name(), 0); + //how much should we add. + final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled); + final double strengthToAdd = strengthCurrent + entityAbilityStrength; + if (strengthToAdd > 0) + { + Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); + } + return; } List manifestationsFound = new ArrayList<>(); @@ -240,21 +220,19 @@ default Multimap getHemalurgicAttributes(Multimap< metalType.name(), 0); + Attribute attribute = null; + AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; + switch (metalType) { case IRON: - attributeModifiers.put( - Attributes.ATTACK_DAMAGE, - new AttributeModifier( - hemalurgicIdentity, - "Hemalurgic " + metalType.name(), - strength, - AttributeModifier.Operation.ADDITION)); - + attribute = Attributes.ATTACK_DAMAGE; break; case TIN: //Steals senses - //todo figure out what that means in minecraft + //a type of night vision + attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.name()).get(); + break; case ZINC: //Steals emotional fortitude @@ -274,6 +252,17 @@ default Multimap getHemalurgicAttributes(Multimap< break; } + if (attribute != null) + { + attributeModifiers.put( + attribute, + new AttributeModifier( + hemalurgicIdentity, + "Hemalurgic " + metalType.name(), + strength, + attributeModifier)); + } + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { @@ -281,13 +270,13 @@ default Multimap getHemalurgicAttributes(Multimap< if (CompoundNBTHelper.getBoolean(hemalurgyInfo, path, false)) { - if (!AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.containsKey(path)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { continue; } attributeModifiers.put( - AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(path).get(), + AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), new AttributeModifier( hemalurgicIdentity, String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), @@ -344,7 +333,6 @@ default void Invest(ItemStack stack, AManifestation manifestation, double level, CompoundNBT spikeInfo = getHemalurgicInfo(stack); final String manifestationName = manifestation.getRegistryName().getPath(); CompoundNBTHelper.setBoolean(spikeInfo, manifestationName, true); - CompoundNBTHelper.setBoolean(spikeInfo, "hasHemalurgicPower", true); CompoundNBTHelper.setDouble(spikeInfo, "power_" + manifestationName, level); setHemalurgicIdentity(stack, identity); @@ -353,10 +341,7 @@ default void Invest(ItemStack stack, AManifestation manifestation, double level, default void Invest(ItemStack stack, Metals.MetalType metalType, double level, UUID identity) { CompoundNBT spikeInfo = getHemalurgicInfo(stack); - - CompoundNBTHelper.setBoolean(spikeInfo, "hasHemalurgicPower", true); CompoundNBTHelper.setDouble(spikeInfo, metalType.name(), level); - setHemalurgicIdentity(stack, identity); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 83722c409..07b31804e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -144,7 +144,7 @@ else if (getMetalType().isPushMetal()) public double getStrength(ISpiritweb cap) { - RegistryObject mistingAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getMistingName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getMistingName()); ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); return attribute != null ? attribute.getValue() : 0; } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index d4be6f7e3..275c7cf90 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -134,7 +134,7 @@ else if (mode < 0) public double getStrength(ISpiritweb cap) { - RegistryObject mistingAttribute = AttributesRegistry.MANIFESTATION_STRENGTH_ATTRIBUTES.get(metalType.getFerringName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFerringName()); ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); return attribute != null ? attribute.getValue() : 0; } diff --git a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java new file mode 100644 index 000000000..b937e919f --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java @@ -0,0 +1,37 @@ +/* + * File created ~ 31 - 3 - 2022 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.LightTexture; +import net.minecraft.entity.ai.attributes.Attribute; +import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraftforge.fml.RegistryObject; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.Constant; +import org.spongepowered.asm.mixin.injection.ModifyConstant; + +@Mixin(LightTexture.class) +public class LightTextureMixin +{ + @ModifyConstant(method = "updateLightTexture", constant = @Constant(floatValue = 0f, ordinal = 1)) + private float updateLightTextureConstant(float prev) + { + //do stuff + PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getCameraEntity(); + if (clientPlayer == null) + { + return prev; + } + + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.TIN.getName()); + ModifiableAttributeInstance attribute = clientPlayer.getAttribute(attributeRegistryObject.get()); + //return modded val + return attribute != null ? (float) attribute.getValue() : prev; + } +} diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index ecb7f2046..17fc2bc00 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -14,13 +14,14 @@ import net.minecraftforge.registries.ForgeRegistries; import java.util.HashMap; +import java.util.Locale; import java.util.Map; public class AttributesRegistry { public static final DeferredRegister ATTRIBUTES = DeferredRegister.create(ForgeRegistries.ATTRIBUTES, Cosmere.MODID); - public static final Map> MANIFESTATION_STRENGTH_ATTRIBUTES = makeAttributeMap(); + public static final Map> COSMERE_ATTRIBUTES = makeAttributeMap(); public static final CreatureAttribute SPREN = new CreatureAttribute(); @@ -60,6 +61,17 @@ public static Map> makeAttributeMap() attributeModifiers.put(ferringNamePath, ferringAttribute); } + final String tinName = Metals.MetalType.TIN.name().toLowerCase(Locale.ROOT); + RegistryObject tin_senses_attribute = ATTRIBUTES.register( + tinName, + () -> (new RangedAttribute( + Cosmere.MODID + "." + tinName, + 0, + 0, + 1)).setSyncable(true) + ); + attributeModifiers.put(tinName, tin_senses_attribute); + return attributeModifiers; } diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index 3e73fd832..fd6d8927a 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -43,7 +43,7 @@ public class BlocksRegistry .collect(Collectors.toMap( Function.identity(), metalType -> register( - metalType.name().toLowerCase() + Constants.RegNameStubs.BLOCK, + metalType.getName() + Constants.RegNameStubs.BLOCK, () -> new MetalBlock(metalType), metalType.getRarity()))); public static final Map> METAL_ORE = @@ -52,7 +52,7 @@ public class BlocksRegistry .collect(Collectors.toMap( Function.identity(), metalType -> register( - metalType.name().toLowerCase() + Constants.RegNameStubs.ORE, + metalType.getName() + Constants.RegNameStubs.ORE, () -> new MetalOreBlock(metalType), Rarity.COMMON))); diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index b9d3da882..37be44f32 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -66,7 +66,7 @@ public static void registerConfiguredFeatures() { if (metalType.hasOre()) { - registerConfiguredFeature(metalType.name().toLowerCase() + Constants.RegNameStubs.ORE, ConfiguredFeatures.ORE_FEATURES.get(metalType)); + registerConfiguredFeature(metalType.getName() + Constants.RegNameStubs.ORE, ConfiguredFeatures.ORE_FEATURES.get(metalType)); } } } diff --git a/src/main/resources/cosmere.mixins.json b/src/main/resources/cosmere.mixins.json index d3dc4e9c3..e9664849f 100644 --- a/src/main/resources/cosmere.mixins.json +++ b/src/main/resources/cosmere.mixins.json @@ -7,9 +7,10 @@ "mixins": [ ], "client": [ - "GameRendererMixin", "EffectInstanceMixin", - "EntityMixin" + "EntityMixin", + "GameRendererMixin", + "LightTextureMixin" ], "injectors": { "defaultRequire": 1 From 2b007b81ed84f3e25dbdcae852ae3f45084ea13e Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 1 Apr 2022 17:56:13 +1300 Subject: [PATCH 0074/1090] Update Changelog.md --- Changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 5fc588305..d85d9222d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -3,7 +3,7 @@ The Cosmere Project - For 1.16 Minecraft B26 Removed accidental character left in village_blacksmith loot table json. - +Hemalurgic Tin spikes implemented. B25 From 9b36fa84cd49ff5140aa212ca4a602de93b2ad53 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 11:08:46 +1300 Subject: [PATCH 0075/1090] .getName() instead of .name().ToLowerCase() --- .../leaf/cosmere/client/gui/SpiritwebMenu.java | 2 +- .../java/leaf/cosmere/constants/Metals.java | 4 ++-- .../java/leaf/cosmere/items/MetalVialItem.java | 4 ++-- .../cosmere/registry/AttributesRegistry.java | 2 +- .../leaf/cosmere/registry/EffectsRegistry.java | 6 +++--- .../leaf/cosmere/registry/FeatureRegistry.java | 2 +- .../leaf/cosmere/registry/ItemsRegistry.java | 18 +++++++++--------- .../leaf/cosmere/registry/TagsRegistry.java | 14 +++++++------- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index e1689cea0..c94e0b86a 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -396,7 +396,7 @@ private void setupAnyExtraInfoTexts(MatrixStack matrixStack, int middle_y) if (value > 0) { //todo localisation check - final String text = key.name().toLowerCase(Locale.ROOT) + ": " + value; + final String text = key.getName() + ": " + value; font.drawShadow(matrixStack, text, x, (int) y[0], 0xffffffff); y[0] += 10; } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index b80a4f144..8c0833705 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -419,7 +419,7 @@ public String getFerringName() default: case LERASIUM: case MALATIUM: - return "ferring_" + this.name().toLowerCase(); + return "ferring_" + this.getName(); } } @@ -520,7 +520,7 @@ public String getMistingName() default: case MALATIUM: case LERASATIUM: - return "misting_" + this.name().toLowerCase(); + return "misting_" + this.getName(); } } diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 5b2ce6dc8..f927d83b6 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -220,9 +220,9 @@ public void appendHoverText(ItemStack stack, World worldIn, List sorted.entrySet().stream().forEach(metalInfo -> { // MetalName x Value - String metalName = Metals.MetalType.valueOf(metalInfo.getKey()).get().name(); + String metalName = Metals.MetalType.valueOf(metalInfo.getKey()).get().getName(); - String metalTranslation = String.format("item.cosmere.%s_nugget", metalName.toLowerCase()); + String metalTranslation = String.format("item.cosmere.%s_nugget", metalName); tooltip.add(TextHelper.createTranslatedText(metalTranslation).append(TextHelper.createText(String.format(": x%s", metalInfo.getValue())))); }); diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 17fc2bc00..dabb0325a 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -61,7 +61,7 @@ public static Map> makeAttributeMap() attributeModifiers.put(ferringNamePath, ferringAttribute); } - final String tinName = Metals.MetalType.TIN.name().toLowerCase(Locale.ROOT); + final String tinName = Metals.MetalType.TIN.getName(); RegistryObject tin_senses_attribute = ATTRIBUTES.register( tinName, () -> (new RangedAttribute( diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index 98a165d87..b2c54f5cb 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -27,7 +27,7 @@ public class EffectsRegistry public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.POTIONS, Cosmere.MODID); public static final RegistryObject ALLOMANTIC_COPPER = EFFECTS.register( - "burning_" + Metals.MetalType.COPPER.name().toLowerCase(), + "burning_" + Metals.MetalType.COPPER.getName(), () -> new AllomancyEffectBase(Metals.MetalType.COPPER, EffectType.BENEFICIAL)); public static final RegistryObject ALLOMANCY_BOOST = EFFECTS.register( @@ -40,7 +40,7 @@ public class EffectsRegistry .collect(Collectors.toMap( Function.identity(), type -> EFFECTS.register( - "tapping_" + type.name().toLowerCase(), + "tapping_" + type.getName(), () -> makeTappingEffect(type)) ) ); @@ -51,7 +51,7 @@ public class EffectsRegistry .collect(Collectors.toMap( Function.identity(), type -> EFFECTS.register( - "storing_" + type.name().toLowerCase(), + "storing_" + type.getName(), () -> makeStoringEffect(type)) ) ); diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index 37be44f32..f53fe7788 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -35,7 +35,7 @@ public class FeatureRegistry .collect(Collectors.toMap( Function.identity(), type -> FEATURES.register( - type.name().toLowerCase() + Constants.RegNameStubs.ORE, + type.getName() + Constants.RegNameStubs.ORE, () -> new OreFeature(OreFeatureConfig.CODEC)))); diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 843740ec8..4459bfc12 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -60,7 +60,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - RegNameStubs.RAW + type.name().toLowerCase() + RegNameStubs.ORE, + RegNameStubs.RAW + type.getName() + RegNameStubs.ORE, () -> createItem(new MetalRawOreItem(type)) ))); @@ -70,7 +70,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.BLEND, + type.getName() + RegNameStubs.BLEND, () -> createItem(new MetalRawOreItem(type)) ))); @@ -80,7 +80,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.NUGGET, + type.getName() + RegNameStubs.NUGGET, () -> createItem(new MetalNuggetItem(type)) ))); @@ -90,7 +90,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + Item.SHAVINGS, + type.getName() + Item.SHAVINGS, () -> createItem(new MetalShavingsItem(type)) )));*/ @@ -100,7 +100,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.INGOT, + type.getName() + RegNameStubs.INGOT, () -> createItem(new MetalIngotItem(type)) ))); @@ -110,7 +110,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.RING + RegNameStubs.METALMIND, + type.getName() + RegNameStubs.RING + RegNameStubs.METALMIND, () -> createItem(new RingMetalmindItem(type)) ))); @@ -120,7 +120,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.BRACELET + RegNameStubs.METALMIND, + type.getName() + RegNameStubs.BRACELET + RegNameStubs.METALMIND, () -> createItem(new BraceletMetalmindItem(type)) ))); @@ -130,7 +130,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.NECKLACE + RegNameStubs.METALMIND, + type.getName() + RegNameStubs.NECKLACE + RegNameStubs.METALMIND, () -> createItem(new NecklaceMetalmindItem(type)) ))); @@ -140,7 +140,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.name().toLowerCase() + RegNameStubs.SPIKE, + type.getName() + RegNameStubs.SPIKE, () -> createItem(new HemalurgicSpikeItem(type)) ))); diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 700e0e175..1a2bae84a 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -62,31 +62,31 @@ public static class Items Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("raw_materials/" + type.name().toLowerCase()))); + type -> forgeItemTag("raw_materials/" + type.getName()))); public static final Map> METAL_DUST_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("dust/" + type.name().toLowerCase()))); + type -> forgeItemTag("dust/" + type.getName()))); public static final Map> METAL_NUGGET_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("nuggets/" + type.name().toLowerCase()))); + type -> forgeItemTag("nuggets/" + type.getName()))); public static final Map> METAL_INGOT_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("ingots/" + type.name().toLowerCase()))); + type -> forgeItemTag("ingots/" + type.getName()))); public static final Map> METAL_BLOCK_ITEM_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("storage_blocks/" + type.name().toLowerCase()))); + type -> forgeItemTag("storage_blocks/" + type.getName()))); private static ITag.INamedTag itemTag(String name) @@ -123,13 +123,13 @@ public static ITag.INamedTag makeBlock(String domain, String path) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( Function.identity(), - type -> forgeTag("ores/" + type.name().toLowerCase()))); + type -> forgeTag("ores/" + type.getName()))); public static final Map> METAL_BLOCK_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( Function.identity(), - type -> forgeTag("storage_blocks/" + type.name().toLowerCase()))); + type -> forgeTag("storage_blocks/" + type.getName()))); private static ITag.INamedTag forgeTag(String name) { From d16df46888fa5ccc5b4763abc748c44076a4021c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 13:28:41 +1300 Subject: [PATCH 0076/1090] Tidy up hemalurgic strength --- .../cap/entity/SpiritwebCapability.java | 10 +-- .../cosmere/datagen/language/EngLangGen.java | 2 +- .../leaf/cosmere/items/MetalmindItem.java | 2 +- .../items/curio/HemalurgicSpikeItem.java | 5 +- .../cosmere/items/curio/IHemalurgicInfo.java | 84 +++++++++++++------ .../cosmere/manifestation/AManifestation.java | 6 ++ .../SetSelectedManifestationMessage.java | 2 +- 7 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 2f21dca99..6d7f96e77 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -121,7 +121,7 @@ public CompoundNBT serializeNBT() { CompoundNBT nbt = new CompoundNBT(); - nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); + nbt.putString("selected_power", selectedManifestation.getName()); nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); @@ -355,7 +355,7 @@ public boolean hasAnyPowers() { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String path = manifestation.getRegistryName().getPath(); + String path = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { @@ -391,7 +391,7 @@ public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powe public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID, boolean ignoreTemporaryPower) { AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String manifestationName = manifestation.getRegistryName().getPath(); + String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { return false; @@ -416,7 +416,7 @@ public void giveManifestation(ManifestationTypes manifestationTypeID, int powerI { AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String manifestationName = manifestation.getRegistryName().getPath(); + String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { return; @@ -441,7 +441,7 @@ public void giveManifestation(ManifestationTypes manifestationTypeID, int powerI public void removeManifestation(ManifestationTypes manifestationTypeID, int powerID) { AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String path = manifestation.getRegistryName().getPath(); + String path = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 9a06681b2..81ea42b87 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -90,7 +90,7 @@ else if (item instanceof MetalmindItem) { //power type String key = manifestation.translation().getKey(); - String path = manifestation.getRegistryName().getPath(); + String path = manifestation.getName(); //description diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 1467ebe48..6b8aee1d8 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -62,7 +62,7 @@ public Multimap getAttributeModifiers(SlotContext for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String manifestationName = manifestation.getRegistryName().getPath(); + String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { continue; diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 63721ad23..4ae781b7d 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -191,11 +191,10 @@ else if (this.getMetalType() == Metals.MetalType.TIN) if (this.getMetalType() == Metals.MetalType.LERASIUM) { ItemStack bound = new ItemStack(this); - setHemalurgicIdentity(bound, UUID.randomUUID()); - CompoundNBT hemalurgicInfo = getHemalurgicInfo(bound); + final UUID identity = UUID.randomUUID(); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - CompoundNBTHelper.setBoolean(hemalurgicInfo, manifestation.getRegistryName().getPath(), true); + Invest(bound, manifestation,6, identity); } stacks.add(bound); diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index af4547497..58aa1a4f2 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -14,6 +14,7 @@ import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.StackNBTHelper; +import leaf.cosmere.utils.helpers.StringHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.ai.attributes.Attribute; @@ -67,11 +68,8 @@ default CompoundNBT getHemalurgicInfo(ItemStack stack) default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, LivingEntity entityKilled) { //todo - boolean isPlayerEntity = (entityKilled instanceof PlayerEntity); - boolean saveIdentity = false; //we should probably check a config to see if pvp real stealing of attributes is wanted. - - CompoundNBT hemalurgyInfo = getHemalurgicInfo(stack); + boolean isPlayerEntity = (entityKilled instanceof PlayerEntity); //Steals non-manifestation based abilities. traits inherent to an entity? @@ -88,7 +86,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //Non-Manifestation based hemalurgy all comes here //How much is already stored? (like koloss spikes could keep storing strength on the same spike) - final double strengthCurrent = CompoundNBTHelper.getDouble(hemalurgyInfo, spikeMetalType.name(), 0); + final double strengthCurrent = getHemalurgicStrength(stack,spikeMetalType); //how much should we add. final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled); final double strengthToAdd = strengthCurrent + entityAbilityStrength; @@ -215,10 +213,7 @@ default Multimap getHemalurgicAttributes(Multimap< return attributeModifiers; } - final double strength = CompoundNBTHelper.getDouble( - hemalurgyInfo, - metalType.name(), - 0); + final double strength = getHemalurgicStrength(stack, metalType); Attribute attribute = null; AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; @@ -266,9 +261,10 @@ default Multimap getHemalurgicAttributes(Multimap< for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String path = manifestation.getRegistryName().getPath(); + String path = manifestation.getName(); - if (CompoundNBTHelper.getBoolean(hemalurgyInfo, path, false)) + final double hemalurgicStrength = getHemalurgicStrength(stack, manifestation); + if (hemalurgicStrength > 0) { if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) { @@ -280,7 +276,7 @@ default Multimap getHemalurgicAttributes(Multimap< new AttributeModifier( hemalurgicIdentity, String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), - CompoundNBTHelper.getDouble(hemalurgyInfo, "power_" + path, 6),//todo get this value from the item? + hemalurgicStrength, AttributeModifier.Operation.ADDITION)); } } @@ -289,6 +285,39 @@ default Multimap getHemalurgicAttributes(Multimap< return attributeModifiers; } + default double getHemalurgicStrength(ItemStack stack, Metals.MetalType metalType) + { + return getHemalurgicStrength(stack, metalType.name()); + } + + default double getHemalurgicStrength(ItemStack stack, AManifestation manifestation) + { + return getHemalurgicStrength(stack, "power_" + manifestation.getName()); + } + + default double getHemalurgicStrength(ItemStack stack, String name) + { + return CompoundNBTHelper.getDouble( + getHemalurgicInfo(stack), + name, + 0); + } + + default void setHemalurgicStrength(ItemStack stack, Metals.MetalType metalType, double val) + { + setHemalurgicStrength(stack,metalType.getName(),val); + } + + default void setHemalurgicStrength(ItemStack stack, AManifestation manifestation, double val) + { + setHemalurgicStrength(stack,"power_" + manifestation.getName(),val); + } + + default void setHemalurgicStrength(ItemStack stack, String name, double val) + { + CompoundNBTHelper.setDouble(getHemalurgicInfo(stack), name, val); + } + default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hemalurgicSpikeItem, List tooltip) { @@ -299,15 +328,21 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); - if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) + if (hasHemalurgicPower(stack, hemalurgicSpikeItem.getMetalType())) { - double attackDamage = CompoundNBTHelper.getDouble(hemalurgicSpikeItem.getHemalurgicInfo(stack), hemalurgicSpikeItem.getMetalType().name(), 0); + double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); + String s; - //todo, make this translated text - if (attackDamage > 0) + if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) + { + s = "+" + hemalurgicStrength + " Attack Damage"; + } + else { - tooltip.add(TextHelper.createText("+" + attackDamage + " Attack Damage")); + s = "+" + hemalurgicStrength + " Hemalurgic " + StringHelper.fixCapitalisation(hemalurgicSpikeItem.getMetalType().name()); } + //todo, make this translated text + tooltip.add(TextHelper.createText(s)); } IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); @@ -324,24 +359,23 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema default boolean hasHemalurgicPower(ItemStack stack, AManifestation manifestation) { - return CompoundNBTHelper.getBoolean(getHemalurgicInfo(stack), manifestation.getRegistryName().getPath(), false); + return getHemalurgicStrength(stack,manifestation) > 0; } + default boolean hasHemalurgicPower(ItemStack stack, Metals.MetalType metalType) + { + return getHemalurgicStrength(stack,metalType) > 0; + } default void Invest(ItemStack stack, AManifestation manifestation, double level, UUID identity) { - CompoundNBT spikeInfo = getHemalurgicInfo(stack); - final String manifestationName = manifestation.getRegistryName().getPath(); - CompoundNBTHelper.setBoolean(spikeInfo, manifestationName, true); - CompoundNBTHelper.setDouble(spikeInfo, "power_" + manifestationName, level); - + setHemalurgicStrength(stack, manifestation, level); setHemalurgicIdentity(stack, identity); } default void Invest(ItemStack stack, Metals.MetalType metalType, double level, UUID identity) { - CompoundNBT spikeInfo = getHemalurgicInfo(stack); - CompoundNBTHelper.setDouble(spikeInfo, metalType.name(), level); + setHemalurgicStrength(stack, metalType, level); setHemalurgicIdentity(stack, identity); } } diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index fa42ec1c4..400ddca76 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -13,6 +13,8 @@ import net.minecraftforge.client.event.RenderWorldLastEvent; import net.minecraftforge.registries.ForgeRegistryEntry; +import java.util.Locale; + public abstract class AManifestation extends ForgeRegistryEntry { @@ -51,4 +53,8 @@ public TranslationTextComponent description() @OnlyIn(Dist.CLIENT) public void renderWorldEffects(RenderWorldLastEvent event, ISpiritweb cap){} + public String getName() + { + return this.getRegistryName().getPath().toLowerCase(Locale.ROOT); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java index fdaffece9..e9ba96b8c 100644 --- a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java @@ -39,7 +39,7 @@ public static void handle(SetSelectedManifestationMessage message, Supplier Date: Sat, 2 Apr 2022 13:49:16 +1300 Subject: [PATCH 0077/1090] Fix metalvial bug where not enough inventory space. --- src/main/java/leaf/cosmere/items/MetalVialItem.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index f927d83b6..fd43a24ea 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -7,10 +7,12 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.CompoundNBTHelper; +import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.item.ItemEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.UseAction; @@ -134,7 +136,11 @@ public ItemStack finishUsingItem(ItemStack stack, World worldIn, LivingEntity en ItemStack splitStack = stack.split(1); emptyMetals(splitStack); - playerentity.addItem(splitStack); + if (!playerentity.addItem(splitStack) && !playerentity.level.isClientSide) + { + ItemEntity entity = new ItemEntity(playerentity.getCommandSenderWorld(), playerentity.position().x(), playerentity.position().y(), playerentity.position().z(), splitStack); + playerentity.getCommandSenderWorld().addFreshEntity(entity); + } } else { @@ -207,7 +213,7 @@ public boolean showDurabilityBar(ItemStack stack) @Override public double getDurabilityForDisplay(ItemStack stack) { - return 1 - (containedMetalCount(stack) / MAX_METALS_COUNT); + return MathHelper.clamp01((float) (1 - (containedMetalCount(stack) / MAX_METALS_COUNT))); } From a063fec82c7f278fda717f27522e532c8f7ba340 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 14:55:01 +1300 Subject: [PATCH 0078/1090] Metal Vial fixes. Nuggets annoying to eat. Burn rate. --- .../java/leaf/cosmere/constants/Metals.java | 59 +++++++++++++++++++ .../leaf/cosmere/items/MetalNuggetItem.java | 8 ++- .../leaf/cosmere/items/MetalVialItem.java | 5 +- 3 files changed, 68 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 8c0833705..c812587ca 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -584,6 +584,65 @@ public Collection getHemalurgyStealWhitelist() return null; } + public int getAllomancyBurnTimeSeconds() + { + //todo decide burn rate of metals + //todo convert to config item + int burnTimeInSeconds = 99; + switch (this) + { + case IRON: + break; + case STEEL: + break; + case TIN: + break; + case PEWTER: + break; + case ZINC: + break; + case BRASS: + break; + case COPPER: + break; + case BRONZE: + break; + case ALUMINUM: + break; + case DURALUMIN: + break; + case CHROMIUM: + break; + case NICROSIL: + break; + case CADMIUM: + break; + case BENDALLOY: + break; + case GOLD: + break; + case ELECTRUM: + break; + case ATIUM: + break; + case LERASIUM: + break; + case HARMONIUM: + break; + case MALATIUM: + break; + case LERASATIUM: + break; + case NICKEL: + break; + case LEAD: + break; + case SILVER: + break; + } + return burnTimeInSeconds; + } + public double getEntityAbilityStrength(LivingEntity killedEntity) { //Steals non-manifestation based abilities. traits inherent to an entity? diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 1d08ea8ee..a307e87b7 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -23,6 +23,12 @@ public MetalNuggetItem(Metals.MetalType metalType) super(metalType); } + @Override + public int getUseDuration(ItemStack stack) + { + //be annoying enough that people prefer metal vials + return 16; + } public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) { @@ -76,7 +82,7 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met { //add to metal stored Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); - spiritweb.METALS_INGESTED.put(metalType,metalIngested + 9); // todo decide what value should be used for ingestion + spiritweb.METALS_INGESTED.put(metalType,metalIngested + metalType.getAllomancyBurnTimeSeconds()); } if (livingEntity instanceof PlayerEntity && !((PlayerEntity) livingEntity).isCreative()) diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index fd43a24ea..78543f2e3 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -107,9 +107,8 @@ public ItemStack finishUsingItem(ItemStack stack, World worldIn, LivingEntity en // MetalName x Value Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); - - //todo decide what value should be used for ingestion - int secondsPerNugget = 180; + //reference ConsumeNugget from metalNuggetItem + int secondsPerNugget = metalInfo.getValue() * metalType.getAllomancyBurnTimeSeconds(); //add to metal stored spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + secondsPerNugget); From fcb5b45255cd696692cbf2aa976bccbb84b03895 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 14:55:34 +1300 Subject: [PATCH 0079/1090] prep for future attributes --- .../leaf/cosmere/items/curio/IHemalurgicInfo.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 58aa1a4f2..c582ebbdd 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -24,6 +24,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.text.ITextComponent; +import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.IForgeRegistry; import java.util.*; @@ -223,10 +224,16 @@ default Multimap getHemalurgicAttributes(Multimap< case IRON: attribute = Attributes.ATTACK_DAMAGE; break; - case TIN: + default: + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) + { + attribute = attributeRegistryObject.get(); + } + break; + /* TIN: //Steals senses //a type of night vision - attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.name()).get(); break; case ZINC: @@ -244,7 +251,7 @@ default Multimap getHemalurgicAttributes(Multimap< case NICROSIL: //Steals Investiture //todo figure out what that means - break; + break;*/ } if (attribute != null) From 320a7bc8bf719ccfa15ab2024ac31e937143592c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 14:55:59 +1300 Subject: [PATCH 0080/1090] Fix random stuff I broke in renames --- .../java/leaf/cosmere/cap/entity/SpiritwebCapability.java | 2 +- src/main/java/leaf/cosmere/client/ClientEvents.java | 2 +- src/main/java/leaf/cosmere/constants/Manifestations.java | 6 ++++++ .../network/packets/SetSelectedManifestationMessage.java | 2 +- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 6d7f96e77..c4a9ce459 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -121,7 +121,7 @@ public CompoundNBT serializeNBT() { CompoundNBT nbt = new CompoundNBT(); - nbt.putString("selected_power", selectedManifestation.getName()); + nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index 478d8ef04..da90db903 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -141,7 +141,7 @@ public static void renderManifestationsHUD(final RenderWorldLastEvent event) { SpiritwebCapability.get(playerEntity).ifPresent(spiritweb -> { - profiler.push(spiritweb.manifestation().getRegistryName().getNamespace()); + profiler.push(spiritweb.manifestation().getName()); spiritweb.renderWorldEffects(event); profiler.pop(); diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index f37609ec5..a5533f6d0 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -8,6 +8,7 @@ import leaf.cosmere.registry.ManifestationRegistry; import java.util.Arrays; +import java.util.Locale; import java.util.Optional; public class Manifestations @@ -83,6 +84,11 @@ public AManifestation getManifestation(int powerID) } return ManifestationRegistry.NONE.get(); } + + public String getName() + { + return this.name().toLowerCase(Locale.ROOT); + } } diff --git a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java index e9ba96b8c..fdaffece9 100644 --- a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java @@ -39,7 +39,7 @@ public static void handle(SetSelectedManifestationMessage message, Supplier Date: Sat, 2 Apr 2022 15:13:36 +1300 Subject: [PATCH 0081/1090] Update MetalNuggetItem.java --- .../leaf/cosmere/items/MetalNuggetItem.java | 126 +++++++++--------- 1 file changed, 62 insertions(+), 64 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index a307e87b7..905e7fff7 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -18,77 +18,75 @@ public class MetalNuggetItem extends MetalItem { - public MetalNuggetItem(Metals.MetalType metalType) - { - super(metalType); - } + public MetalNuggetItem(Metals.MetalType metalType) + { + super(metalType); + } - @Override - public int getUseDuration(ItemStack stack) - { - //be annoying enough that people prefer metal vials - return 16; - } + @Override + public int getUseDuration(ItemStack stack) + { + //be annoying enough that people prefer metal vials + return 16; + } - public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) - { - ItemStack itemstack = playerIn.getItemInHand(handIn); - playerIn.startUsingItem(handIn); + public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) + { + ItemStack itemstack = playerIn.getItemInHand(handIn); + playerIn.startUsingItem(handIn); - //todo convert to shavings + //todo convert to shavings - consumeNugget(playerIn, getMetalType(), itemstack); + consumeNugget(playerIn, getMetalType(), itemstack); - return ActionResult.consume(itemstack); - } + return ActionResult.consume(itemstack); + } - public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) - { - if (metalType == null) - { - return; - } + public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) + { + if (metalType == null) + { + return; + } - SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if (metalType == Metals.MetalType.LERASIUM || metalType == Metals.MetalType.LERASATIUM) - { - for (int i = 0; i < 16; i++) - { - switch (metalType) - { - case LERASIUM: - //give allomancy - spiritweb.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, i); + if (metalType == Metals.MetalType.LERASIUM || metalType == Metals.MetalType.LERASATIUM) + { + //https://www.theoryland.com/intvmain.php?i=977#43 + if (metalType == Metals.MetalType.LERASIUM && livingEntity instanceof LlamaEntity && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); + } + for (int i = 0; i < 16; i++) + { + switch (metalType) + { + case LERASIUM: + //give allomancy + spiritweb.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, i); + break; + case LERASATIUM: + //give feruchemy + spiritweb.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, i); + break; + } + } + } + else + { + //add to metal stored + Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); + spiritweb.METALS_INGESTED.put(metalType, metalIngested + metalType.getAllomancyBurnTimeSeconds()); + } - //https://www.theoryland.com/intvmain.php?i=977#43 - if (livingEntity instanceof LlamaEntity && !livingEntity.hasCustomName()) - { - //todo translations - livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); - } - - break; - case LERASATIUM: - //give feruchemy - spiritweb.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, i); - break; - } - } - } - else - { - //add to metal stored - Integer metalIngested = spiritweb.METALS_INGESTED.get(metalType); - spiritweb.METALS_INGESTED.put(metalType,metalIngested + metalType.getAllomancyBurnTimeSeconds()); - } - - if (livingEntity instanceof PlayerEntity && !((PlayerEntity) livingEntity).isCreative()) - { - itemstack.shrink(1); - } - }); - } + if (livingEntity instanceof PlayerEntity && !((PlayerEntity) livingEntity).isCreative()) + { + itemstack.shrink(1); + } + }); + } } From f8faa159efb64f9d69e5d8e741c683f0565c114d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 2 Apr 2022 15:50:24 +1300 Subject: [PATCH 0082/1090] Fix non-cosmere metal not having localisation on vial --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 6 ++++ .../cosmere/datagen/language/EngLangGen.java | 33 ++++++++++++------- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 1d72dd228..c0b07d13f 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -6abec4c5a68dcda5a217737cc18047234c2e1985 assets/cosmere/lang/en_us.json +0c44074d7cd836b90f5604c8c13aed9af7fbfd3c assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 15b914944..ddb4665f8 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -301,10 +301,13 @@ "item.cosmere.electrum_ring_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_spike": "Electrum Spike", "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", + "item.cosmere.gold_block": "Gold Block", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", "item.cosmere.gold_bracelet_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", + "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_necklace_metalmind": "Gold Necklace Metalmind", "item.cosmere.gold_necklace_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", + "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.gold_ring_metalmind": "Gold Ring Metalmind", "item.cosmere.gold_ring_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_spike": "Gold Spike", @@ -312,10 +315,13 @@ "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", + "item.cosmere.iron_block": "Iron Block", "item.cosmere.iron_bracelet_metalmind": "Iron Bracelet Metalmind", "item.cosmere.iron_bracelet_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", + "item.cosmere.iron_ingot": "Iron Ingot", "item.cosmere.iron_necklace_metalmind": "Iron Necklace Metalmind", "item.cosmere.iron_necklace_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", + "item.cosmere.iron_nugget": "Iron Nugget", "item.cosmere.iron_ring_metalmind": "Iron Ring Metalmind", "item.cosmere.iron_ring_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", "item.cosmere.iron_spike": "Iron Spike", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 81ea42b87..b5738aaa9 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -126,17 +126,17 @@ else if (item instanceof MetalmindItem) //guidebook for (Metals.MetalType metalType : Metals.MetalType.values()) { - String metalName = metalType.getName(); + final String name = metalType.getName(); final String mistingName = metalType.getMistingName(); final String ferringName = metalType.getFerringName(); - String a = metalName + " - " + mistingName; - String f = metalName + " - " + ferringName; + String a = name + " - " + mistingName; + String f = name + " - " + ferringName; - String aKey = "allomantic_" + metalName; - String fKey = "feruchemical_" + metalName; - String hKey = "hemalurgic_" + metalName; + String aKey = "allomantic_" + name; + String fKey = "feruchemical_" + name; + String hKey = "hemalurgic_" + name; String allomancyGuide = "cosmere.entry." + aKey; String feruchemyGuide = "cosmere.entry." + fKey; @@ -144,16 +144,27 @@ else if (item instanceof MetalmindItem) add(allomancyGuide, StringHelper.fixCapitalisation(a)); add(feruchemyGuide, StringHelper.fixCapitalisation(f)); - add(hemalurgyGuide, StringHelper.fixCapitalisation(metalName)); + add(hemalurgyGuide, StringHelper.fixCapitalisation(name)); + + if (!metalType.hasMaterialItem()) + { + //if a vanilla metal, like iron/gold + //add(item.getDescriptionId(), localisedString); + final String n = name + "_nugget"; + final String i = name + "_ingot"; + final String b = name + "_block"; + add("item.cosmere." + n, StringHelper.fixCapitalisation(n)); + add("item.cosmere." + i, StringHelper.fixCapitalisation(i)); + add("item.cosmere." + b, StringHelper.fixCapitalisation(b)); + } - if (!metalType.hasAssociatedManifestation()) + if (metalType.hasAssociatedManifestation()) { - continue; + add("cosmere." + mistingName, StringHelper.fixCapitalisation(mistingName)); + add("cosmere." + ferringName, StringHelper.fixCapitalisation(ferringName)); } - add("cosmere." + mistingName, StringHelper.fixCapitalisation(mistingName)); - add("cosmere." + ferringName, StringHelper.fixCapitalisation(ferringName)); } From 5d870c8a9f58c89272a906f304a3afde74c65f7c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 09:33:14 +1200 Subject: [PATCH 0083/1090] Delete unused patchouli section --- .../guide/en_us/categories/tutorial.json | 5 ---- .../en_us/entries/tutorial/entry_1_day_1.json | 11 --------- .../tutorial/entry_1_getting_started.json | 11 --------- .../entries/tutorial/entry_6_storyteller.json | 23 ------------------- .../tutorial/entry_7_ancient_artifacts.json | 12 ---------- 5 files changed, 62 deletions(-) delete mode 100644 src/main/resources/data/cosmere/patchouli_books/guide/en_us/categories/tutorial.json delete mode 100644 src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_day_1.json delete mode 100644 src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_getting_started.json delete mode 100644 src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_6_storyteller.json delete mode 100644 src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_7_ancient_artifacts.json diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/categories/tutorial.json b/src/main/resources/data/cosmere/patchouli_books/guide/en_us/categories/tutorial.json deleted file mode 100644 index 1bb0641da..000000000 --- a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/categories/tutorial.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "name": "Diary Entries", - "description": "", - "icon": "minecraft:paper" -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_day_1.json b/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_day_1.json deleted file mode 100644 index 202d76966..000000000 --- a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_day_1.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Day One - Strange things", - "category": "tutorial", - "icon": "cosmere:iron_spike", - "pages": [ - { - "type": "text", - "text": "in an ideal world, this text will show." - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_getting_started.json b/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_getting_started.json deleted file mode 100644 index 202d76966..000000000 --- a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_1_getting_started.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "Day One - Strange things", - "category": "tutorial", - "icon": "cosmere:iron_spike", - "pages": [ - { - "type": "text", - "text": "in an ideal world, this text will show." - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_6_storyteller.json b/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_6_storyteller.json deleted file mode 100644 index 885fc61ed..000000000 --- a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_6_storyteller.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "Day 20 - The Storyteller", - "category": "tutorial", - "icon": "minecraft:paper", - "sortnum": 6, - "pages": [ - { - "type": "text", - "text": "I heard tales of a story teller who may know more." - }, - { - "type": "entity", - "entity": "minecraft:villager{VillagerData:{profession:\"minecraft:blacksmith\",level:5,type:desert}}", - "name": "The Storyteller", - "text": "They are rather quirky fellows, but otherwise seem like stable individuals." - }, - { - "type": "spotlight", - "item": "minecraft:paper", - "text": "display model of paper" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_7_ancient_artifacts.json b/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_7_ancient_artifacts.json deleted file mode 100644 index 46bb217e4..000000000 --- a/src/main/resources/data/cosmere/patchouli_books/guide/en_us/entries/tutorial/entry_7_ancient_artifacts.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "Day Thirty - Artifacts", - "category": "tutorial", - "icon": "cosmere:guide", - "sortnum": 7, - "pages": [ - { - "type": "text", - "text": "in an ideal world, this text will show." - } - ] -} \ No newline at end of file From 30ae267b6d5159be92767add129818598fe57fd8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 09:34:00 +1200 Subject: [PATCH 0084/1090] Buff night blood damage --- src/main/java/leaf/cosmere/registry/ItemsRegistry.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 4459bfc12..8ea9f2ab8 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -37,7 +37,7 @@ public class ItemsRegistry //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); - public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get()))); public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); From 1565f21e1516b69e05ba9e74c3a3f95904c63194 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 09:34:30 +1200 Subject: [PATCH 0085/1090] update comments --- .../cosmere/effects/feruchemy/tap/GoldTapEffect.java | 2 ++ .../leaf/cosmere/items/curio/IHemalurgicInfo.java | 11 ++++++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index e1844a03b..6c56ef816 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -24,6 +24,8 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { entityLivingBaseIn.heal(amplifier + 1); } + + //todo reduce harmful effects timer } @Override diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index c582ebbdd..6e25f01b7 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -225,17 +225,18 @@ default Multimap getHemalurgicAttributes(Multimap< attribute = Attributes.ATTACK_DAMAGE; break; default: + //TIN: + //Steals senses + //a type of night vision + + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) { attribute = attributeRegistryObject.get(); } break; - /* TIN: - //Steals senses - //a type of night vision - - break; + /* case ZINC: //Steals emotional fortitude //todo figure out what that means From 25e84fc8ae19b20f8aa53c165d992a49a09297a6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 11:59:15 +1200 Subject: [PATCH 0086/1090] Bands Of Mourning item --- .../models/item/bands_of_mourning.json | 6 ++ .../data/curios/tags/items/bracelet.json | 1 + .../cosmere/charge/MetalmindChargeHelper.java | 8 +-- .../cosmere/datagen/items/ItemTagsGen.java | 4 ++ .../leaf/cosmere/handlers/ColorHandler.java | 2 + .../leaf/cosmere/items/MetalmindItem.java | 8 +-- .../items/curio/BandsOfMourningItem.java | 62 +++++++++++++++++++ .../leaf/cosmere/registry/ItemsRegistry.java | 9 +-- 8 files changed, 88 insertions(+), 12 deletions(-) create mode 100644 src/main/generated/assets/cosmere/models/item/bands_of_mourning.json create mode 100644 src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java diff --git a/src/main/generated/assets/cosmere/models/item/bands_of_mourning.json b/src/main/generated/assets/cosmere/models/item/bands_of_mourning.json new file mode 100644 index 000000000..06680964f --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/bands_of_mourning.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/metal_bracelet" + } +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/bracelet.json b/src/main/generated/data/curios/tags/items/bracelet.json index 0d74bc4e8..aa0a8e5e4 100644 --- a/src/main/generated/data/curios/tags/items/bracelet.json +++ b/src/main/generated/data/curios/tags/items/bracelet.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ + "cosmere:bands_of_mourning", "cosmere:iron_bracelet_metalmind", "cosmere:steel_bracelet_metalmind", "cosmere:tin_bracelet_metalmind", diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index af49335be..0ddb526af 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -41,10 +41,10 @@ public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalTy //update the nbt. //this will add/remove powers based on what the user currently has. //todo, come back to this later when more sleep. bugs me about losing potential stored powers - nbt.putBoolean( - manifestationType.getManifestation(i).getRegistryName().getPath(), - data.hasManifestation(manifestationType, i) - ); + if (data.hasManifestation(manifestationType, i)) + { + nbt.putDouble(manifestationType.getManifestation(i).getName(), data.manifestation(manifestationType, i).getStrength(data)); + } } } } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index aa6bbdc74..16425488e 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -8,6 +8,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalIngotItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.data.BlockTagsProvider; import net.minecraft.data.DataGenerator; @@ -30,6 +31,9 @@ public ItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvi @Override protected void addTags() { + + add(TagsRegistry.Items.CURIO_BRACELET, ItemsRegistry.BANDS_OF_MOURNING.get()); + for (Metals.MetalType metalType : Metals.MetalType.values()) { if (metalType.hasFeruchemicalEffect()) diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index f3600afc6..037d82ef9 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -8,6 +8,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.color.BlockColors; import net.minecraft.client.renderer.color.IBlockColor; @@ -38,6 +39,7 @@ public static void init() ? ((IHasMetalType) blockState.getBlock()).getMetalType().getColorValue() : -1; + itemColors.register(metalColorHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); for (Metals.MetalType metalType : Metals.MetalType.values()) { diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 6b8aee1d8..f6ec3858f 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -7,12 +7,12 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import leaf.cosmere.constants.Metals; -import leaf.cosmere.properties.PropTypes; -import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.items.curio.IHemalurgicInfo; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.properties.PropTypes; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.CompoundNBTHelper; import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.item.ItemGroup; @@ -55,7 +55,7 @@ public Multimap getAttributeModifiers(SlotContext } //todo better nicrosil tracking. - if (metalType == Metals.MetalType.NICROSIL) + if (metalType == Metals.MetalType.NICROSIL || metalType == Metals.MetalType.HARMONIUM) { CompoundNBT nbt = stack.getOrCreateTagElement("StoredInvestiture"); //for each power the user has access to @@ -68,7 +68,7 @@ public Multimap getAttributeModifiers(SlotContext continue; } - if (nbt.getBoolean(manifestationName)) + if (CompoundNBTHelper.getDouble(nbt, manifestationName, 0) > 0) { UUID someUUID = UUID.nameUUIDFromBytes((manifestationName + uuid.toString()).getBytes()); attributeModifiers.put( diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java new file mode 100644 index 000000000..c77dc174c --- /dev/null +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -0,0 +1,62 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.items.curio; + +import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.constants.Metals; +import net.minecraft.item.ItemGroup; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.CompoundNBT; +import net.minecraft.util.NonNullList; + +import javax.annotation.Nonnull; +import java.util.Optional; + +public class BandsOfMourningItem extends BraceletMetalmindItem +{ + public BandsOfMourningItem() + { + super(Metals.MetalType.HARMONIUM); + } + + @Override + public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) + { + if (allowdedIn(tab)) + { + ItemStack fullPower = new ItemStack(this); + setCharge(fullPower, getMaxCharge(fullPower)); + + CompoundNBT nbt = fullPower.getOrCreateTagElement("StoredInvestiture"); + //for each power the user has access to + for (int i = 0; i < 16; i++) + { + //even if it's granted from hemalurgy/temporary + //update the nbt. + //this will add/remove powers based on what the user currently has. + //todo, come back to this later when more sleep. bugs me about losing potential stored powers + final Optional metalType = Metals.MetalType.valueOf(i); + if (metalType.isPresent()) + { + nbt.putDouble(metalType.get().getAllomancyRegistryName(), 20); + nbt.putDouble(metalType.get().getFeruchemyRegistryName(), 20); + } + } + + stacks.add(fullPower); + } + } + + @Override + public float getMaxChargeModifier() + { + return 1; + } + @Override + public int getMaxCharge(ItemStack stack) + { + return Integer.MAX_VALUE; + } +} diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 8ea9f2ab8..f3e40c79a 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -11,10 +11,7 @@ import leaf.cosmere.constants.Constants.RegNameStubs; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.*; -import leaf.cosmere.items.curio.BraceletMetalmindItem; -import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.items.curio.NecklaceMetalmindItem; -import leaf.cosmere.items.curio.RingMetalmindItem; +import leaf.cosmere.items.curio.*; import leaf.cosmere.properties.PropTypes; import net.minecraft.item.ItemTier; import net.minecraftforge.fml.RegistryObject; @@ -41,6 +38,10 @@ public class ItemsRegistry public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + + public static final RegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", () -> createItem(new BandsOfMourningItem())); + + //public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); //public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); From ccc44175795bc1f51e81139fd226c4b8cb9e9a3a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 12:15:54 +1200 Subject: [PATCH 0087/1090] Fixed scadrial manifestation names. Breaks old saves. --- .../cap/entity/SpiritwebCapability.java | 13 +++++++++---- .../java/leaf/cosmere/constants/Metals.java | 9 +++++++++ .../leaf/cosmere/handlers/ModBusEvents.java | 4 ++-- .../allomancy/AllomancyBase.java | 2 +- .../feruchemy/FeruchemyBase.java | 2 +- .../cosmere/registry/AttributesRegistry.java | 19 +++++++++---------- .../registry/ManifestationRegistry.java | 4 ++-- 7 files changed, 33 insertions(+), 20 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index c4a9ce459..3e8c0e256 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -112,8 +112,8 @@ public SpiritwebCapability(LivingEntity ent) @Nonnull public static LazyOptional get(LivingEntity entity) { - return entity instanceof LivingEntity ? entity.getCapability(SpiritwebCapability.CAPABILITY, null) - : LazyOptional.empty(); + return entity != null ? entity.getCapability(SpiritwebCapability.CAPABILITY, null) + : LazyOptional.empty(); } @Override @@ -131,10 +131,13 @@ public CompoundNBT serializeNBT() nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); } + + final CompoundNBT ingestedMetals = new CompoundNBT(); for (Metals.MetalType metalType : Metals.MetalType.values()) { - nbt.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); + ingestedMetals.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); } + nbt.put("ingested_metals", ingestedMetals); return nbt; } @@ -160,9 +163,11 @@ public void deserializeNBT(CompoundNBT nbt) biochromaticBreathStored = nbt.getInt("stored_breaths"); stormlightStored = nbt.getInt("stored_stormlight"); + + final CompoundNBT ingestedMetals = nbt.getCompound("ingested_metals"); for (Metals.MetalType metalType : Metals.MetalType.values()) { - METALS_INGESTED.put(metalType, nbt.getInt(metalType.getName() + "_ingested")); + METALS_INGESTED.put(metalType, ingestedMetals.getInt(metalType.getName() + "_ingested")); } } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index c812587ca..30f39e0e4 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -917,6 +917,15 @@ public Ingredient getRepairIngredient() return Ingredient.of(getMetalIngotTag()); } + public String getAllomancyRegistryName() + { + return "allomantic_" + this.getName(); + } + + public String getFeruchemyRegistryName() + { + return "feruchemical_" + this.getName(); + } } private static class MetalColor diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index fe326cff5..620ad1eaa 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -55,8 +55,8 @@ public static void onEntityAttributeModificationEvent(EntityAttributeModificatio continue; } - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getMistingName()); - RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFerringName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); + RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); event.add(entityType, mistingAttribute.get()); event.add(entityType, ferringAttribute.get()); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 07b31804e..807b47cab 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -144,7 +144,7 @@ else if (getMetalType().isPushMetal()) public double getStrength(ISpiritweb cap) { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getMistingName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); return attribute != null ? attribute.getValue() : 0; } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 275c7cf90..3ad9bf68e 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -134,7 +134,7 @@ else if (mode < 0) public double getStrength(ISpiritweb cap) { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFerringName()); + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); return attribute != null ? attribute.getValue() : 0; } diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index dabb0325a..dcbb5ecf1 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -35,26 +35,25 @@ public static Map> makeAttributeMap() if (!metalType.hasAssociatedManifestation()) continue; - String mistingNamePath = metalType.getMistingName(); - String ferringNamePath = metalType.getFerringName(); - + String mistingNamePath = metalType.getAllomancyRegistryName(); + String ferringNamePath = metalType.getFeruchemyRegistryName(); RegistryObject mistingAttribute = ATTRIBUTES.register( - mistingNamePath.toLowerCase(), + mistingNamePath, () -> (new RangedAttribute( - Cosmere.MODID + "." + mistingNamePath.toLowerCase(), + "manifestation." + Cosmere.MODID + "." + mistingNamePath, 0, 0, - 1000)).setSyncable(true) + 20)).setSyncable(true) ); RegistryObject ferringAttribute = ATTRIBUTES.register( - ferringNamePath.toLowerCase(), + ferringNamePath, () -> (new RangedAttribute( - Cosmere.MODID + "." + ferringNamePath.toLowerCase(), + "manifestation." + Cosmere.MODID + "." + ferringNamePath, 0, 0, - 1000)).setSyncable(true) + 20)).setSyncable(true) ); attributeModifiers.put(mistingNamePath, mistingAttribute); @@ -65,7 +64,7 @@ public static Map> makeAttributeMap() RegistryObject tin_senses_attribute = ATTRIBUTES.register( tinName, () -> (new RangedAttribute( - Cosmere.MODID + "." + tinName, + Cosmere.MODID + "." + "eye_sight", 0, 0, 1)).setSyncable(true) diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index 72b823a08..83e6e317c 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -40,7 +40,7 @@ public class ManifestationRegistry Function.identity(), metalType -> MANIFESTATIONS.register( - metalType.getMistingName(), + metalType.getAllomancyRegistryName(), () -> makeAllomancyManifestation(metalType))//get the specific instance of the manifestation for allomancy )); @@ -52,7 +52,7 @@ public class ManifestationRegistry Function.identity(), metalType -> MANIFESTATIONS.register( - metalType.getFerringName(), + metalType.getFeruchemyRegistryName(), () -> makeFeruchemyManifestation(metalType))//feruchemy can be base manifestation type because it mostly functions through effects )); From 6efef8d393384172e30c86a7c307dd64fd39145e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 12:16:10 +1200 Subject: [PATCH 0088/1090] Updated/Fixed some localisation --- src/main/generated/.cache/cache | 39 ++--- .../generated/assets/cosmere/lang/en_us.json | 139 +++++++++--------- .../cosmere.entry.feruchemical_aluminum.json | 2 +- .../cosmere.entry.feruchemical_atium.json | 2 +- .../cosmere.entry.feruchemical_bendalloy.json | 2 +- .../cosmere.entry.feruchemical_brass.json | 2 +- .../cosmere.entry.feruchemical_bronze.json | 2 +- .../cosmere.entry.feruchemical_cadmium.json | 2 +- .../cosmere.entry.feruchemical_chromium.json | 2 +- .../cosmere.entry.feruchemical_copper.json | 2 +- .../cosmere.entry.feruchemical_duralumin.json | 2 +- .../cosmere.entry.feruchemical_electrum.json | 2 +- .../cosmere.entry.feruchemical_gold.json | 2 +- .../cosmere.entry.feruchemical_iron.json | 2 +- .../cosmere.entry.feruchemical_nicrosil.json | 2 +- .../cosmere.entry.feruchemical_pewter.json | 2 +- .../cosmere.entry.feruchemical_steel.json | 2 +- .../cosmere.entry.feruchemical_tin.json | 2 +- .../cosmere.entry.feruchemical_zinc.json | 2 +- .../cosmere/datagen/language/EngLangGen.java | 18 ++- 20 files changed, 124 insertions(+), 106 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index c0b07d13f..8ef55f334 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -0c44074d7cd836b90f5604c8c13aed9af7fbfd3c assets/cosmere/lang/en_us.json +6810f57ae7575184659b62793446acefb613ab63 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -51,6 +51,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/atium_bracel 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/atium_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/atium_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/atium_spike.json +c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bands_of_mourning.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/bendalloy_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bendalloy_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bendalloy_bracelet_metalmind.json @@ -515,23 +516,23 @@ ece30aa503d0f189c56c30dafdeb30d8dcd9adc9 data/cosmere/patchouli_books/guide/en_u e92429bf020c5d0c4ac81201233c8e614c5eaf2f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json 906b21ce375cea37513cb6a09c2643295c1fd6d0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json 2e960b5355f77cbff7074e8ac3b384c5fb2baa93 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json -e507645841d29dd59b28aead198089100af08d36 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json -f028d57776521b0ac29e4f06086272e0d2652d3e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json -51ba03788ed162dbb8fee4c854270d970a49bbab data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json -ed1b12e36db8aeb4845191778a00ecdabba87b13 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json -965e059a712b69b344351efab8bf1116b1240a92 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json -5a856665f888fdd72e21f31c148c761a8952a459 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json -765a07e84eaadad09141bd685a689c5b5edecf89 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json -c48f1da3c997d6c4bc657a249fbc3a6b2d3a4080 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json -5d6a523309a773e8d858bb75b3abe34ca1e73de7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json -31782bb61a8825e8db918812a238d13aab88b7c8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json -c009a2c7fcf9579ed29e44f58a757a72ba745339 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json -bf984299a06ddca74348e6f94f31e84b69788beb data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json -1bf116e5dd7e113fe4ca60944360857c5b8ace30 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json -314bacbd0d0e9f9a0ed25559328851fe03c077aa data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json -02027a198d15381cd70997502adf151e0b20b38e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json -6ed1546706b86191948b2ebdb96cc2f1d85e4631 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json -30a3298737e37af35eb2396de6ae832d02a269e9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json +0b0aef6a72074556b93fd084c9969c5dc73b3da4 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json +3f6fa10fc1a6ce42300d95b4570a82d5bc111d6c data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json +538303df8e7edff9b2b3b1ee0adc9da3fdfab8dd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json +166436cb42fcaaeea5891cdc6e4d02cecbf831c5 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json +9963ea5dc66ff9286c48ab73577d40ef25f85ea6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json +c089fbe533f5e35e57e63a5dcd21030502bdf595 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json +45c072669eab716bf8670afbfa70c2265a49d81a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json +3993457a3b9320adb280a337dae34780f6deedee data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json +ee825c9afcad597658d90758b97b12ecf90758a8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json +1e82ff8f7b37028a7889d4fc3e7d475de62c4772 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json +1091a88e9be3f1c3cae0ad0e50647c7b979faf1f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json +e5f8bad38fc1d401ba33acfc6fb2bc89f0db52f8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json +ddd05ae8e07d051dcfd261ab18cbafa6d6276629 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json +8c3d5ba087fc23324b0b4754e3f5b7acb8b5a366 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json +cb3ec91194045f0ec38ae859d209f0841fc27206 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json +f05a8a17586f78d62f7b2d496f868330f4f347f0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json +cf0ab5fbf06db36f08dabdc9c63f0af083cc68d3 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json 0f591cd5c97282338bdc30f97c054c33da541be9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json f444f8be35beae1a18c36031b61e7cc79c925022 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json a534f1356f2b92fef1d2b00da60298ab687b133a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json @@ -773,7 +774,7 @@ ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_meta d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json 6fe02255d6c35f42bd3f9234b1c239022e995d8a data/cosmere/recipes/zinc_spike.json b37675f80320064d0f85e5df877ce3291f7e861c data/cosmere/tags/items/spike.json -6b0291b7ca4411d32c2e8892f97decbbcd600d54 data/curios/tags/items/bracelet.json +6d2602fc3592bdf26c0b7f56b7960810f0b7daf0 data/curios/tags/items/bracelet.json b37675f80320064d0f85e5df877ce3291f7e861c data/curios/tags/items/curio.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index ddb4665f8..4a1740e27 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -121,6 +121,7 @@ "cosmere.entry.hemalurgic_steel": "Steel", "cosmere.entry.hemalurgic_tin": "Tin", "cosmere.entry.hemalurgic_zinc": "Zinc", + "cosmere.eye_sight": "Eye Sight", "cosmere.firesoul": "Firesoul", "cosmere.gasper": "Gasper", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", @@ -216,6 +217,8 @@ "item.cosmere.atium_ring_metalmind.tooltip": "Not yet implemented.", "item.cosmere.atium_spike": "Atium Spike", "item.cosmere.atium_spike.tooltip": "Steals an Allomantic or Feruchemical power. Must be refined.", + "item.cosmere.bands_of_mourning": "Bands Of Mourning", + "item.cosmere.bands_of_mourning.tooltip": "Unknown...", "item.cosmere.bendalloy_blend": "Bendalloy Blend", "item.cosmere.bendalloy_bracelet_metalmind": "Bendalloy Bracelet Metalmind", "item.cosmere.bendalloy_bracelet_metalmind.tooltip": "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later.", @@ -419,76 +422,76 @@ "key.cosmere.powers.previous": "Previous Power", "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", - "manifestation.cosmere.aluminum_gnat": "Allomantic Aluminum", - "manifestation.cosmere.aluminum_gnat.description": "Users can burn aluminum", - "manifestation.cosmere.archivist": "Feruchemical Copper", - "manifestation.cosmere.archivist.description": "Users can tap copper", - "manifestation.cosmere.augur": "Allomantic Gold", - "manifestation.cosmere.augur.description": "Users can burn gold", - "manifestation.cosmere.bloodmaker": "Feruchemical Gold", - "manifestation.cosmere.bloodmaker.description": "Users can tap gold", - "manifestation.cosmere.brute": "Feruchemical Pewter", - "manifestation.cosmere.brute.description": "Users can tap pewter", - "manifestation.cosmere.coinshot": "Allomantic Steel", - "manifestation.cosmere.coinshot.description": "Users can burn steel", - "manifestation.cosmere.connector": "Feruchemical Duralumin", - "manifestation.cosmere.connector.description": "Users can tap duralumin", - "manifestation.cosmere.duralumin_gnat": "Allomantic Duralumin", - "manifestation.cosmere.duralumin_gnat.description": "Users can burn duralumin", - "manifestation.cosmere.elderling": "Feruchemical Atium", - "manifestation.cosmere.elderling.description": "Users can tap atium", - "manifestation.cosmere.firesoul": "Feruchemical Brass", - "manifestation.cosmere.firesoul.description": "Users can tap brass", - "manifestation.cosmere.gasper": "Feruchemical Cadmium", - "manifestation.cosmere.gasper.description": "Users can tap cadmium", - "manifestation.cosmere.leecher": "Allomantic Chromium", - "manifestation.cosmere.leecher.description": "Users can burn chromium", - "manifestation.cosmere.lurcher": "Allomantic Iron", - "manifestation.cosmere.lurcher.description": "Users can burn iron", - "manifestation.cosmere.nicroburst": "Allomantic Nicrosil", - "manifestation.cosmere.nicroburst.description": "Users can burn nicrosil", + "manifestation.cosmere.allomantic_aluminum": "Allomantic Aluminum", + "manifestation.cosmere.allomantic_aluminum.description": "Users can burn aluminum", + "manifestation.cosmere.allomantic_atium": "Allomantic Atium", + "manifestation.cosmere.allomantic_atium.description": "Users can burn atium", + "manifestation.cosmere.allomantic_bendalloy": "Allomantic Bendalloy", + "manifestation.cosmere.allomantic_bendalloy.description": "Users can burn bendalloy", + "manifestation.cosmere.allomantic_brass": "Allomantic Brass", + "manifestation.cosmere.allomantic_brass.description": "Users can burn brass", + "manifestation.cosmere.allomantic_bronze": "Allomantic Bronze", + "manifestation.cosmere.allomantic_bronze.description": "Users can burn bronze", + "manifestation.cosmere.allomantic_cadmium": "Allomantic Cadmium", + "manifestation.cosmere.allomantic_cadmium.description": "Users can burn cadmium", + "manifestation.cosmere.allomantic_chromium": "Allomantic Chromium", + "manifestation.cosmere.allomantic_chromium.description": "Users can burn chromium", + "manifestation.cosmere.allomantic_copper": "Allomantic Copper", + "manifestation.cosmere.allomantic_copper.description": "Users can burn copper", + "manifestation.cosmere.allomantic_duralumin": "Allomantic Duralumin", + "manifestation.cosmere.allomantic_duralumin.description": "Users can burn duralumin", + "manifestation.cosmere.allomantic_electrum": "Allomantic Electrum", + "manifestation.cosmere.allomantic_electrum.description": "Users can burn electrum", + "manifestation.cosmere.allomantic_gold": "Allomantic Gold", + "manifestation.cosmere.allomantic_gold.description": "Users can burn gold", + "manifestation.cosmere.allomantic_iron": "Allomantic Iron", + "manifestation.cosmere.allomantic_iron.description": "Users can burn iron", + "manifestation.cosmere.allomantic_nicrosil": "Allomantic Nicrosil", + "manifestation.cosmere.allomantic_nicrosil.description": "Users can burn nicrosil", + "manifestation.cosmere.allomantic_pewter": "Allomantic Pewter", + "manifestation.cosmere.allomantic_pewter.description": "Users can burn pewter", + "manifestation.cosmere.allomantic_steel": "Allomantic Steel", + "manifestation.cosmere.allomantic_steel.description": "Users can burn steel", + "manifestation.cosmere.allomantic_tin": "Allomantic Tin", + "manifestation.cosmere.allomantic_tin.description": "Users can burn tin", + "manifestation.cosmere.allomantic_zinc": "Allomantic Zinc", + "manifestation.cosmere.allomantic_zinc.description": "Users can burn zinc", + "manifestation.cosmere.feruchemical_aluminum": "Feruchemical Aluminum", + "manifestation.cosmere.feruchemical_aluminum.description": "Users can tap aluminum", + "manifestation.cosmere.feruchemical_atium": "Feruchemical Atium", + "manifestation.cosmere.feruchemical_atium.description": "Users can tap atium", + "manifestation.cosmere.feruchemical_bendalloy": "Feruchemical Bendalloy", + "manifestation.cosmere.feruchemical_bendalloy.description": "Users can tap bendalloy", + "manifestation.cosmere.feruchemical_brass": "Feruchemical Brass", + "manifestation.cosmere.feruchemical_brass.description": "Users can tap brass", + "manifestation.cosmere.feruchemical_bronze": "Feruchemical Bronze", + "manifestation.cosmere.feruchemical_bronze.description": "Users can tap bronze", + "manifestation.cosmere.feruchemical_cadmium": "Feruchemical Cadmium", + "manifestation.cosmere.feruchemical_cadmium.description": "Users can tap cadmium", + "manifestation.cosmere.feruchemical_chromium": "Feruchemical Chromium", + "manifestation.cosmere.feruchemical_chromium.description": "Users can tap chromium", + "manifestation.cosmere.feruchemical_copper": "Feruchemical Copper", + "manifestation.cosmere.feruchemical_copper.description": "Users can tap copper", + "manifestation.cosmere.feruchemical_duralumin": "Feruchemical Duralumin", + "manifestation.cosmere.feruchemical_duralumin.description": "Users can tap duralumin", + "manifestation.cosmere.feruchemical_electrum": "Feruchemical Electrum", + "manifestation.cosmere.feruchemical_electrum.description": "Users can tap electrum", + "manifestation.cosmere.feruchemical_gold": "Feruchemical Gold", + "manifestation.cosmere.feruchemical_gold.description": "Users can tap gold", + "manifestation.cosmere.feruchemical_iron": "Feruchemical Iron", + "manifestation.cosmere.feruchemical_iron.description": "Users can tap iron", + "manifestation.cosmere.feruchemical_nicrosil": "Feruchemical Nicrosil", + "manifestation.cosmere.feruchemical_nicrosil.description": "Users can tap nicrosil", + "manifestation.cosmere.feruchemical_pewter": "Feruchemical Pewter", + "manifestation.cosmere.feruchemical_pewter.description": "Users can tap pewter", + "manifestation.cosmere.feruchemical_steel": "Feruchemical Steel", + "manifestation.cosmere.feruchemical_steel.description": "Users can tap steel", + "manifestation.cosmere.feruchemical_tin": "Feruchemical Tin", + "manifestation.cosmere.feruchemical_tin.description": "Users can tap tin", + "manifestation.cosmere.feruchemical_zinc": "Feruchemical Zinc", + "manifestation.cosmere.feruchemical_zinc.description": "Users can tap zinc", "manifestation.cosmere.none": "None", "manifestation.cosmere.none.description": "No Special Powers", - "manifestation.cosmere.oracle": "Allomantic Electrum", - "manifestation.cosmere.oracle.description": "Users can burn electrum", - "manifestation.cosmere.pinnacle": "Feruchemical Electrum", - "manifestation.cosmere.pinnacle.description": "Users can tap electrum", - "manifestation.cosmere.pulser": "Allomantic Cadmium", - "manifestation.cosmere.pulser.description": "Users can burn cadmium", - "manifestation.cosmere.rioter": "Allomantic Zinc", - "manifestation.cosmere.rioter.description": "Users can burn zinc", - "manifestation.cosmere.seeker": "Allomantic Bronze", - "manifestation.cosmere.seeker.description": "Users can burn bronze", - "manifestation.cosmere.seer": "Allomantic Atium", - "manifestation.cosmere.seer.description": "Users can burn atium", - "manifestation.cosmere.sentry": "Feruchemical Bronze", - "manifestation.cosmere.sentry.description": "Users can tap bronze", - "manifestation.cosmere.skimmer": "Feruchemical Iron", - "manifestation.cosmere.skimmer.description": "Users can tap iron", - "manifestation.cosmere.slider": "Allomantic Bendalloy", - "manifestation.cosmere.slider.description": "Users can burn bendalloy", - "manifestation.cosmere.smoker": "Allomantic Copper", - "manifestation.cosmere.smoker.description": "Users can burn copper", - "manifestation.cosmere.soother": "Allomantic Brass", - "manifestation.cosmere.soother.description": "Users can burn brass", - "manifestation.cosmere.soulbearer": "Feruchemical Nicrosil", - "manifestation.cosmere.soulbearer.description": "Users can tap nicrosil", - "manifestation.cosmere.sparker": "Feruchemical Zinc", - "manifestation.cosmere.sparker.description": "Users can tap zinc", - "manifestation.cosmere.spinner": "Feruchemical Chromium", - "manifestation.cosmere.spinner.description": "Users can tap chromium", - "manifestation.cosmere.steelrunner": "Feruchemical Steel", - "manifestation.cosmere.steelrunner.description": "Users can tap steel", - "manifestation.cosmere.subsumer": "Feruchemical Bendalloy", - "manifestation.cosmere.subsumer.description": "Users can tap bendalloy", - "manifestation.cosmere.thug": "Allomantic Pewter", - "manifestation.cosmere.thug.description": "Users can burn pewter", - "manifestation.cosmere.tineye": "Allomantic Tin", - "manifestation.cosmere.tineye.description": "Users can burn tin", - "manifestation.cosmere.trueself": "Feruchemical Aluminum", - "manifestation.cosmere.trueself.description": "Users can tap aluminum", - "manifestation.cosmere.windwhisperer": "Feruchemical Tin", - "manifestation.cosmere.windwhisperer.description": "Users can tap tin", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json index c293b5f72..dca955838 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.trueself.description" + "text": "manifestation.cosmere.feruchemical_aluminum.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json index c17cbd8bb..a3ce389b9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.elderling.description" + "text": "manifestation.cosmere.feruchemical_atium.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json index 05158718b..7044500d1 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.subsumer.description" + "text": "manifestation.cosmere.feruchemical_bendalloy.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json index 1b2b96fba..26fe47a38 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.firesoul.description" + "text": "manifestation.cosmere.feruchemical_brass.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json index a5e00f9d3..a1cbfcf79 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.sentry.description" + "text": "manifestation.cosmere.feruchemical_bronze.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json index d3b7e0d36..4c8777ad4 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.gasper.description" + "text": "manifestation.cosmere.feruchemical_cadmium.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json index 420046dad..2f0438c04 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.spinner.description" + "text": "manifestation.cosmere.feruchemical_chromium.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json index 4de57de43..27c835eb8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.archivist.description" + "text": "manifestation.cosmere.feruchemical_copper.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json index 9250d2f0d..14978eda5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.connector.description" + "text": "manifestation.cosmere.feruchemical_duralumin.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json index 98be0c87f..24ef07a0a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.pinnacle.description" + "text": "manifestation.cosmere.feruchemical_electrum.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json index 9859f478c..012478924 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.bloodmaker.description" + "text": "manifestation.cosmere.feruchemical_gold.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json index 842c48fda..7ffe4f931 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.skimmer.description" + "text": "manifestation.cosmere.feruchemical_iron.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json index fcb61b3c7..cc3fa4bc9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.soulbearer.description" + "text": "manifestation.cosmere.feruchemical_nicrosil.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json index d35578e3e..2ed9dc938 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.brute.description" + "text": "manifestation.cosmere.feruchemical_pewter.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json index 9feda4e69..34c64de5c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.steelrunner.description" + "text": "manifestation.cosmere.feruchemical_steel.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json index 6922259b8..e72ab44fc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.windwhisperer.description" + "text": "manifestation.cosmere.feruchemical_tin.description" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json index fea25a4ad..5d083c7c8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "manifestation.cosmere.sparker.description" + "text": "manifestation.cosmere.feruchemical_zinc.description" } ], "priority": false, diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index b5738aaa9..a94a4b401 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -10,11 +10,13 @@ import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.data.DataGenerator; import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.item.Item; import net.minecraft.potion.Effect; import net.minecraft.util.SoundEvent; @@ -123,6 +125,18 @@ else if (item instanceof MetalmindItem) add(manifestation.description().getKey(), description); } + //Attributes + for (RegistryObject registryObject : AttributesRegistry.ATTRIBUTES.getEntries()) + { + //no duplicates pls + final String descriptionId = registryObject.get().getDescriptionId(); + if (!descriptionId.startsWith("manifestation")) + { + String translation = descriptionId.split("\\.")[1]; + add(descriptionId, StringHelper.fixCapitalisation(translation)); + } + } + //guidebook for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -134,8 +148,8 @@ else if (item instanceof MetalmindItem) String a = name + " - " + mistingName; String f = name + " - " + ferringName; - String aKey = "allomantic_" + name; - String fKey = "feruchemical_" + name; + String aKey = metalType.getAllomancyRegistryName(); + String fKey = metalType.getFeruchemyRegistryName(); String hKey = "hemalurgic_" + name; String allomancyGuide = "cosmere.entry." + aKey; From ad1307a1843e26849b471655d1f8540e162eacb7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 12:42:46 +1200 Subject: [PATCH 0089/1090] Fixing Spikes not getting ability strength correctly --- .../leaf/cosmere/cap/entity/SpiritwebCapability.java | 4 ++-- .../leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 9 ++------- .../java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 8 ++++---- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 3e8c0e256..996df59d4 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -127,7 +127,7 @@ public CompoundNBT serializeNBT() for (ManifestationTypes manifestationType : ManifestationTypes.values()) { - String manifestationTypeName = manifestationType.name().toLowerCase(); + String manifestationTypeName = manifestationType.getName(); nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); } @@ -147,7 +147,7 @@ public void deserializeNBT(CompoundNBT nbt) { for (ManifestationTypes manifestationType : ManifestationTypes.values()) { - String manifestationTypeName = manifestationType.name().toLowerCase(); + String manifestationTypeName = manifestationType.getName(); int[] storedIntArray = nbt.getIntArray(manifestationTypeName + "_mode"); int length = storedIntArray.length; diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 4ae781b7d..37bb8c07b 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -106,16 +106,11 @@ public float getMaxChargeModifier() @Override public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) { + super.fillItemCategory(tab, stacks); if (allowdedIn(tab)) { - ItemStack stack = new ItemStack(this); - stacks.add(stack); - if (getMetalType().hasFeruchemicalEffect()) { - ItemStack fullPower = new ItemStack(this); - setCharge(fullPower, getMaxCharge(fullPower)); - stacks.add(fullPower); //what powers can this metal type contain @@ -129,7 +124,7 @@ public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList getHemalurgicAttributes(Multimap< attribute, new AttributeModifier( hemalurgicIdentity, - "Hemalurgic " + metalType.name(), + "Hemalurgic " + metalType.getName(), strength, attributeModifier)); } @@ -295,7 +295,7 @@ default Multimap getHemalurgicAttributes(Multimap< default double getHemalurgicStrength(ItemStack stack, Metals.MetalType metalType) { - return getHemalurgicStrength(stack, metalType.name()); + return getHemalurgicStrength(stack, metalType.getName()); } default double getHemalurgicStrength(ItemStack stack, AManifestation manifestation) @@ -313,7 +313,7 @@ default double getHemalurgicStrength(ItemStack stack, String name) default void setHemalurgicStrength(ItemStack stack, Metals.MetalType metalType, double val) { - setHemalurgicStrength(stack,metalType.getName(),val); + setHemalurgicStrength(stack, metalType.getName(),val); } default void setHemalurgicStrength(ItemStack stack, AManifestation manifestation, double val) @@ -347,7 +347,7 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema } else { - s = "+" + hemalurgicStrength + " Hemalurgic " + StringHelper.fixCapitalisation(hemalurgicSpikeItem.getMetalType().name()); + s = "+" + hemalurgicStrength + " Hemalurgic " + StringHelper.fixCapitalisation(hemalurgicSpikeItem.getMetalType().getName()); } //todo, make this translated text tooltip.add(TextHelper.createText(s)); From 93661657f0cda7b59a76eb65e39ca329638f895b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Apr 2022 13:45:50 +1200 Subject: [PATCH 0090/1090] Bands of Mourning as universal metalmind --- .../cosmere/charge/MetalmindChargeHelper.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 0ddb526af..8d7ac2b55 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -13,6 +13,7 @@ import net.minecraft.nbt.CompoundNBT; import java.util.List; +import java.util.function.Predicate; public class MetalmindChargeHelper { @@ -58,23 +59,24 @@ public static ItemStack adjustMetalmindChargeExact(PlayerEntity player, Metals.M List acc = ItemChargeHelper.getChargeCurios(player); //remove items that don't match the metal type we are looking for - items.removeIf(obj -> - { - boolean objectIsNotMetalmind = !(obj.getItem() instanceof MetalmindItem); - boolean metalMindIsNotCorrectType = ((MetalmindItem) obj.getItem()).getMetalType() != metalType; + items.removeIf(getIsItemInvalidMetalmind(metalType)); + acc.removeIf(getIsItemInvalidMetalmind(metalType)); - return (objectIsNotMetalmind || metalMindIsNotCorrectType); - } - ); - acc.removeIf(obj -> - { - boolean objectIsNotMetalmind = !(obj.getItem() instanceof MetalmindItem); - boolean metalMindIsNotCorrectType = ((MetalmindItem) obj.getItem()).getMetalType() != metalType; + return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); + } - return (objectIsNotMetalmind || metalMindIsNotCorrectType); - } - ); + private static Predicate getIsItemInvalidMetalmind(Metals.MetalType metalType) + { + return obj -> + { + if (obj.getItem() instanceof MetalmindItem) + { + final MetalmindItem item = (MetalmindItem) obj.getItem(); - return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); + //Correct metal or harmonium which I'm using as universal + return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; + } + return false; + }; } } From 931960cdbe73539068af352bf5a0a9fa64e7c352 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 4 Apr 2022 20:43:21 +1200 Subject: [PATCH 0091/1090] Copper spikes --- .../java/leaf/cosmere/constants/Metals.java | 52 +++-- .../cosmere/handlers/EntityEventHandler.java | 21 ++ .../leaf/cosmere/handlers/ModBusEvents.java | 105 +++++----- .../cosmere/handlers/PlayerEventHandler.java | 193 ++++++++++++------ .../items/curio/HemalurgicSpikeItem.java | 6 +- .../cosmere/items/curio/IHemalurgicInfo.java | 4 +- .../feruchemy/FeruchemyZinc.java | 43 ---- .../cosmere/registry/AttributesRegistry.java | 146 +++++++------ .../registry/ManifestationRegistry.java | 2 - .../resources/META-INF/accesstransformer.cfg | 23 +-- 10 files changed, 339 insertions(+), 256 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 30f39e0e4..099bd51bf 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -12,10 +12,7 @@ import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.items.curio.NecklaceMetalmindItem; import leaf.cosmere.items.curio.RingMetalmindItem; -import leaf.cosmere.registry.BlocksRegistry; -import leaf.cosmere.registry.EffectsRegistry; -import leaf.cosmere.registry.ItemsRegistry; -import leaf.cosmere.registry.TagsRegistry; +import leaf.cosmere.registry.*; import net.minecraft.block.OreBlock; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.ai.attributes.Attributes; @@ -625,25 +622,13 @@ public int getAllomancyBurnTimeSeconds() break; case ATIUM: break; - case LERASIUM: - break; - case HARMONIUM: - break; case MALATIUM: break; - case LERASATIUM: - break; - case NICKEL: - break; - case LEAD: - break; - case SILVER: - break; } return burnTimeInSeconds; } - public double getEntityAbilityStrength(LivingEntity killedEntity) + public double getEntityAbilityStrength(LivingEntity killedEntity, PlayerEntity playerEntity) { //Steals non-manifestation based abilities. traits inherent to an entity? double strengthToAdd = 0; @@ -694,7 +679,38 @@ else if (killedEntity instanceof PlayerEntity) break; case COPPER: //Steals mental fortitude, memory, and intelligence - //todo increase base xp gain? + //increase base xp gain rate + final float potentialRewardRate = killedEntity.getExperienceReward(playerEntity) / 150f; + + if (killedEntity instanceof PlayerEntity) + { + final ModifiableAttributeInstance attribute = killedEntity.getAttribute(AttributesRegistry.COSMERE_ATTRIBUTES.get(MetalType.COPPER.getName()).get()); + if (attribute != null) + { + //70% strength to spike + strengthToAdd = attribute.getValue() * 0.70; + //25% remaining on player + final double newBaseValue = attribute.getValue() * 0.25; + attribute.setBaseValue(((int)(newBaseValue * 100)) / 100f); + } + else + { + strengthToAdd = potentialRewardRate; + } + } + else if (killedEntity instanceof EnderDragonEntity) + { + EnderDragonEntity dragonEntity = (EnderDragonEntity) killedEntity; + //dragon doesn't reward xp in a typical way + strengthToAdd = + dragonEntity.getDragonFight() != null && !dragonEntity.getDragonFight().hasPreviouslyKilledDragon() + ? 1 //give first person to kill dragon a full rate increase spike + : 0.33;//else similar to wither rate. + } + else + { + strengthToAdd = potentialRewardRate; + } break; case ZINC: //Steals emotional fortitude diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 85098448e..d4dc12f49 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -13,11 +13,14 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.ai.attributes.Attribute; +import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; import net.minecraft.entity.merchant.villager.VillagerEntity; import net.minecraft.entity.monster.*; @@ -37,6 +40,7 @@ import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import java.util.Arrays; @@ -78,6 +82,23 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) { //give random power giveEntityStartingManifestation(livingEntity, spiritweb); + + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + ModifiableAttributeInstance newPlayerAttribute = ((PlayerEntity) eventEntity).getAttribute(metalRelatedAttribute.get()); + + if (newPlayerAttribute != null) + { + newPlayerAttribute.setBaseValue(newPlayerAttribute.getBaseValue()); + } + + } + } } } else if (eventEntity instanceof AbstractVillagerEntity diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index 620ad1eaa..9174a2ed7 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -15,61 +15,60 @@ import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; -import java.util.Locale; - @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) public class ModBusEvents { - private final static EntityType[] entityTypes = { - EntityType.PLAYER, - - EntityType.VILLAGER, - EntityType.WANDERING_TRADER, - - EntityType.ZOMBIE_VILLAGER, - EntityType.WITCH, - - EntityType.PILLAGER, - EntityType.EVOKER, - EntityType.ILLUSIONER, - EntityType.VINDICATOR, - - EntityType.PIGLIN, - - EntityType.CAT, - EntityType.LLAMA, - EntityType.TRADER_LLAMA, - }; - - - @SubscribeEvent(priority = EventPriority.HIGH) - public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) - { - for (EntityType entityType : entityTypes) - { - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } - - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); - RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); - - event.add(entityType, mistingAttribute.get()); - event.add(entityType, ferringAttribute.get()); - - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) - { - event.add(entityType, metalRelatedAttribute.get()); - } - - } - } - } + private final static EntityType[] entityTypes = { + EntityType.PLAYER, + + EntityType.VILLAGER, + EntityType.WANDERING_TRADER, + + EntityType.ZOMBIE_VILLAGER, + EntityType.WITCH, + + EntityType.PILLAGER, + EntityType.EVOKER, + EntityType.ILLUSIONER, + EntityType.VINDICATOR, + + EntityType.PIGLIN, + + EntityType.CAT, + EntityType.LLAMA, + EntityType.TRADER_LLAMA, + }; + + + @SubscribeEvent(priority = EventPriority.HIGH) + public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) + { + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasAssociatedManifestation()) + { + for (EntityType entityType : entityTypes) + { + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); + RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); + + event.add(entityType, mistingAttribute.get()); + event.add(entityType, ferringAttribute.get()); + } + } + + { + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + //player only, because it doesn't make sense for mobs to have them. + //eg xp gain rate, + event.add(EntityType.PLAYER, metalRelatedAttribute.get()); + } + + } + } + } } diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index 88c9e299c..d94eb1b92 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -7,82 +7,112 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.EffectsRegistry; +import net.minecraft.entity.EntityType; +import net.minecraft.entity.ai.attributes.Attribute; +import net.minecraft.entity.ai.attributes.AttributeModifierManager; +import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.potion.EffectInstance; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.player.PlayerEvent; +import net.minecraftforge.event.entity.player.PlayerXpEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class PlayerEventHandler { - @SubscribeEvent - public static void onPlayerClone(PlayerEvent.Clone event) - { - Capability.IStorage storage = SpiritwebCapability.CAPABILITY.getStorage(); - event.getOriginal().revive(); - SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> SpiritwebCapability.get(event.getPlayer()).ifPresent((newSpiritWeb) -> - { - //clear out the attributes that were placed on the newly cloned player at creation - // and make sure that they then match what the old player entity had. - newSpiritWeb.clearManifestations(); - for (AManifestation manifestation : oldSpiritWeb.getAvailableManifestations(true)) - { - newSpiritWeb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - } - - CompoundNBT nbt = (CompoundNBT) storage.writeNBT(SpiritwebCapability.CAPABILITY, oldSpiritWeb, null); - storage.readNBT(SpiritwebCapability.CAPABILITY, newSpiritWeb, null, nbt); - })); - } - - @SubscribeEvent - public static void onTrackPlayer(PlayerEvent.StartTracking startTracking) - { - SpiritwebCapability.get(startTracking.getPlayer()).ifPresent(cap -> - { - cap.syncToClients(null); - }); - } - - @SubscribeEvent - public void onPlayerTick(TickEvent.PlayerTickEvent event) - { - PlayerEntity player = event.player; - - //charge gemstones in inventory if the player is outside during a thunderstorm - if (player.level.isRainingAt(player.blockPosition()) && player.level.isThundering()) - { - IInventory mainInv = player.inventory; - int size = mainInv.getContainerSize(); - - for (int i = 0; i < size; i++) - { - IInventory inv = mainInv; - int slot = i; - - ItemStack stackInSlot = inv.getItem(slot); - //todo finish :D - //if (stackInSlot != null && stackInSlot.getItem() instanceof ItemGemstone) - { - } - } - } - } - - @SubscribeEvent - public void onItemTossEvent(ItemTossEvent event) - { - if (!event.getPlayer().level.isClientSide) - { - //if (event.getEntityItem().getItem().getItem() instanceof ItemShardBlade) - { + @SubscribeEvent + public static void onPlayerClone(PlayerEvent.Clone event) + { + Capability.IStorage storage = SpiritwebCapability.CAPABILITY.getStorage(); + event.getOriginal().revive(); + SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> + SpiritwebCapability.get(event.getPlayer()).ifPresent((newSpiritWeb) -> + { + //clear out the attributes that were placed on the newly cloned player at creation + // and make sure that they then match what the old player entity had. + newSpiritWeb.clearManifestations(); + for (AManifestation manifestation : oldSpiritWeb.getAvailableManifestations(true)) + { + newSpiritWeb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + } + + CompoundNBT nbt = (CompoundNBT) storage.writeNBT(SpiritwebCapability.CAPABILITY, oldSpiritWeb, null); + storage.readNBT(SpiritwebCapability.CAPABILITY, newSpiritWeb, null, nbt); + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + ModifiableAttributeInstance oldPlayerAttribute = event.getOriginal().getAttribute(metalRelatedAttribute.get()); + ModifiableAttributeInstance newPlayerAttribute = event.getPlayer().getAttribute(metalRelatedAttribute.get()); + + if (newPlayerAttribute != null && oldPlayerAttribute != null) + { + newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); + } + + } + } + })); + + + } + + @SubscribeEvent + public static void onTrackPlayer(PlayerEvent.StartTracking startTracking) + { + SpiritwebCapability.get(startTracking.getPlayer()).ifPresent(cap -> + { + cap.syncToClients(null); + }); + } + + @SubscribeEvent + public void onPlayerTick(TickEvent.PlayerTickEvent event) + { + PlayerEntity player = event.player; + + //charge gemstones in inventory if the player is outside during a thunderstorm + if (player.level.isRainingAt(player.blockPosition()) && player.level.isThundering()) + { + IInventory mainInv = player.inventory; + int size = mainInv.getContainerSize(); + + for (int i = 0; i < size; i++) + { + IInventory inv = mainInv; + int slot = i; + + ItemStack stackInSlot = inv.getItem(slot); + //todo finish :D + //if (stackInSlot != null && stackInSlot.getItem() instanceof ItemGemstone) + { + } + } + } + } + + @SubscribeEvent + public void onItemTossEvent(ItemTossEvent event) + { + if (!event.getPlayer().level.isClientSide) + { + //if (event.getEntityItem().getItem().getItem() instanceof ItemShardBlade) + { /* //if we haven't got a shard blade in inv, put it in the inventory if (event.getPlayer().getCapability(CosmereCapabilities.SUMMON_SHARDBLADE, null).getInventoryShardblade().getStackInSlot(0) == null) @@ -99,7 +129,42 @@ public void onItemTossEvent(ItemTossEvent event) } PacketDispatcher.sendTo(new SyncShardbladeData(event.getPlayer().getCapability(CosmereCapabilities.SUMMON_SHARDBLADE, null)), (EntityPlayerMP) event.getPlayer()); */ - } - } - } + } + } + } + + @SubscribeEvent + public void onXPChange(PlayerXpEvent.XpChange event) + { + boolean isRemote = event.getEntityLiving().level.isClientSide; + if (isRemote) + { + return; + } + + //Feruchemical Zinc + { + EffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); + EffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); + + if (tappingZincEffect != null) + { + event.setAmount(event.getAmount() * (tappingZincEffect.getAmplifier() + 2)); + } + if (storingZincEffect != null) + { + event.setAmount(event.getAmount() / (storingZincEffect.getAmplifier() + 2)); + } + } + + RegistryObject xpGainRateAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()); + if (xpGainRateAttribute != null && xpGainRateAttribute.isPresent()) + { + ModifiableAttributeInstance attribute = event.getPlayer().getAttribute(xpGainRateAttribute.get()); + if (attribute != null) + { + event.setAmount((int) (event.getAmount() * attribute.getValue())); + } + } + } } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 37bb8c07b..397e91840 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -265,14 +265,14 @@ public static void onEntityDeath(LivingDeathEvent event) //entity was killed by a spike HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) itemstack.getItem(); //pass in killed entity for the item to figure out what to do - spikeItem.killedEntity(itemstack, event.getEntityLiving()); + spikeItem.killedEntity(itemstack, playerEntity, event.getEntityLiving()); } }); } } - public void killedEntity(ItemStack stack, LivingEntity entityKilled) + public void killedEntity(ItemStack stack, PlayerEntity playerEntity, LivingEntity entityKilled) { //https://wob.coppermind.net/events/332/#e9569 @@ -283,7 +283,7 @@ public void killedEntity(ItemStack stack, LivingEntity entityKilled) } // ensure we set the stolen identity - stealFromSpiritweb(stack, getMetalType(), entityKilled); + stealFromSpiritweb(stack, getMetalType(), playerEntity, entityKilled); } @Override diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 5c3927e25..60893988e 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -66,7 +66,7 @@ default CompoundNBT getHemalurgicInfo(ItemStack stack) return stack.getOrCreateTagElement("hemalurgy"); } - default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, LivingEntity entityKilled) + default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, PlayerEntity playerEntity, LivingEntity entityKilled) { //todo //we should probably check a config to see if pvp real stealing of attributes is wanted. @@ -89,7 +89,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //How much is already stored? (like koloss spikes could keep storing strength on the same spike) final double strengthCurrent = getHemalurgicStrength(stack,spikeMetalType); //how much should we add. - final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled); + final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); final double strengthToAdd = strengthCurrent + entityAbilityStrength; if (strengthToAdd > 0) { diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java deleted file mode 100644 index 893a73076..000000000 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyZinc.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * File created ~ 27 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.manifestation.feruchemy; - -import leaf.cosmere.constants.Metals; -import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.potion.EffectInstance; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.player.PlayerXpEvent; - -public class FeruchemyZinc extends FeruchemyBase -{ - public FeruchemyZinc(Metals.MetalType metalType) - { - super(metalType); - MinecraftForge.EVENT_BUS.addListener(this::onXPChange); - } - - public void onXPChange(PlayerXpEvent.XpChange event) - { - boolean isRemote = event.getEntityLiving().level.isClientSide; - if (isRemote) - { - return; - } - EffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); - EffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); - - if (tappingZincEffect != null) - { - event.setAmount(event.getAmount() * (tappingZincEffect.getAmplifier() + 2)); - - } - else if (storingZincEffect != null) - { - event.setAmount(event.getAmount() / (storingZincEffect.getAmplifier() + 2)); - } - - } - -} diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index dcbb5ecf1..4a5ae68e2 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -6,7 +6,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; -import net.minecraft.entity.*; +import net.minecraft.entity.CreatureAttribute; import net.minecraft.entity.ai.attributes.Attribute; import net.minecraft.entity.ai.attributes.RangedAttribute; import net.minecraftforge.fml.RegistryObject; @@ -14,66 +14,98 @@ import net.minecraftforge.registries.ForgeRegistries; import java.util.HashMap; -import java.util.Locale; import java.util.Map; public class AttributesRegistry { - public static final DeferredRegister ATTRIBUTES = DeferredRegister.create(ForgeRegistries.ATTRIBUTES, Cosmere.MODID); - - public static final Map> COSMERE_ATTRIBUTES = makeAttributeMap(); - - - public static final CreatureAttribute SPREN = new CreatureAttribute(); - - public static Map> makeAttributeMap() - { - Map> attributeModifiers = new HashMap<>(); - - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - continue; - - String mistingNamePath = metalType.getAllomancyRegistryName(); - String ferringNamePath = metalType.getFeruchemyRegistryName(); - - RegistryObject mistingAttribute = ATTRIBUTES.register( - mistingNamePath, - () -> (new RangedAttribute( - "manifestation." + Cosmere.MODID + "." + mistingNamePath, - 0, - 0, - 20)).setSyncable(true) - ); - - RegistryObject ferringAttribute = ATTRIBUTES.register( - ferringNamePath, - () -> (new RangedAttribute( - "manifestation." + Cosmere.MODID + "." + ferringNamePath, - 0, - 0, - 20)).setSyncable(true) - ); - - attributeModifiers.put(mistingNamePath, mistingAttribute); - attributeModifiers.put(ferringNamePath, ferringAttribute); - } - - final String tinName = Metals.MetalType.TIN.getName(); - RegistryObject tin_senses_attribute = ATTRIBUTES.register( - tinName, - () -> (new RangedAttribute( - Cosmere.MODID + "." + "eye_sight", - 0, - 0, - 1)).setSyncable(true) - ); - attributeModifiers.put(tinName, tin_senses_attribute); - - return attributeModifiers; - } - + public static final DeferredRegister ATTRIBUTES = DeferredRegister.create(ForgeRegistries.ATTRIBUTES, Cosmere.MODID); + + public static final Map> COSMERE_ATTRIBUTES = makeAttributeMap(); + + + public static final CreatureAttribute SPREN = new CreatureAttribute(); + + public static Map> makeAttributeMap() + { + Map> attributeModifiers = new HashMap<>(); + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasAssociatedManifestation()) + { + String mistingNamePath = metalType.getAllomancyRegistryName(); + String ferringNamePath = metalType.getFeruchemyRegistryName(); + + RegistryObject mistingAttribute = ATTRIBUTES.register( + mistingNamePath, + () -> (new RangedAttribute( + "manifestation." + Cosmere.MODID + "." + mistingNamePath, + 0, + 0, + 20)).setSyncable(true) + ); + + RegistryObject ferringAttribute = ATTRIBUTES.register( + ferringNamePath, + () -> (new RangedAttribute( + "manifestation." + Cosmere.MODID + "." + ferringNamePath, + 0, + 0, + 20)).setSyncable(true) + ); + + attributeModifiers.put(mistingNamePath, mistingAttribute); + attributeModifiers.put(ferringNamePath, ferringAttribute); + } + + if (metalType != Metals.MetalType.COPPER && metalType != Metals.MetalType.TIN) + { + continue; + } + + final String metalName = metalType.getName(); + + int defaultVal = 0; + int min = 0; + int max = 0; + + + switch (metalType) + { + case TIN: + { + defaultVal = 0; + min = 0; + max = 1; + } + break; + case COPPER: + { + defaultVal = 1; + min = 0; + max = 20; + } + break; + } + + //requires effectively final values + int finalDefaultVal = defaultVal; + int finalMin = min; + int finalMax = max; + attributeModifiers.put(metalName, ATTRIBUTES.register( + metalName, + () -> (new RangedAttribute( + Cosmere.MODID + "." + metalName, + finalDefaultVal, + finalMin, + finalMax)) + .setSyncable(true) + )); + } + + + return attributeModifiers; + } } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index 83e6e317c..93bc8c348 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -145,8 +145,6 @@ private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalTy return new FeruchemyCopper(metalType); case BRONZE: return new FeruchemyBronze(metalType); - case ZINC: - return new FeruchemyZinc(metalType); case ALUMINUM: return new FeruchemyAluminum(metalType); case NICROSIL: diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 03efbff93..ef05745bf 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,14 +1,9 @@ -public net.minecraft.entity.player.ServerPlayerEntity func_213846_b(Lnet/minecraft/world/server/ServerWorld;)V # func_213846_b -public net.minecraft.entity.player.ServerPlayerEntity field_193110_cw # enteredNetherPosition -public net.minecraft.entity.passive.SquidEntity func_203039_dq()V # squirtInk -public net.minecraft.entity.item.ArmorStandEntity func_175413_k(Z)V # setShowArms -public net.minecraft.entity.ai.goal.GoalSelector field_220892_d # goals in GoalSelector -public net.minecraft.network.play.ServerPlayNetHandler field_147365_f # floatingTickCount, so you don't get kicked for flying in space -public net.minecraft.server.MinecraftServer field_213220_d # chunkStatusListenerFactory -public net.minecraft.server.MinecraftServer field_213217_au # backgroundExecutor -public net.minecraft.server.MinecraftServer field_71310_m # anvilConverterForAnvilFile -public-f net.minecraft.world.gen.feature.structure.Structure field_236384_t_ #LAND_TRANSFORMING_STRUCTURES -public-f net.minecraft.world.gen.settings.DimensionStructuresSettings field_236191_b_ #DEFAULT_STRUCTURE_CONFIGS -public-f net.minecraft.world.gen.FlatGenerationSettings field_202247_j #STRUCTURES -public-f net.minecraft.world.gen.settings.DimensionStructuresSettings field_236193_d_ #structures -public-f net.minecraft.client.world.DimensionRenderInfo field_239208_a_ #SKY_PROPERTIES \ No newline at end of file +public net.minecraft.entity.LivingEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.MobEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.player.PlayerEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.passive.AnimalEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.passive.ChickenEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.passive.WaterMobEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.monster.ZombieEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.monster.HoglinEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward +public net.minecraft.entity.monster.piglin.PiglinEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward \ No newline at end of file From 54e299286c98fcc0b73e4b4a1588742f780e51ed Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Apr 2022 13:39:41 +1200 Subject: [PATCH 0092/1090] chromium spikes --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 3 +- .../java/leaf/cosmere/constants/Metals.java | 30 +++++++++++++++++ .../cosmere/items/curio/IHemalurgicInfo.java | 32 ++++++++----------- 4 files changed, 46 insertions(+), 21 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 8ef55f334..559d5177c 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -6810f57ae7575184659b62793446acefb613ab63 assets/cosmere/lang/en_us.json +f17a9e5586f9a01a0cd4a96215984c191f43f705 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 4a1740e27..d96512a09 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -47,6 +47,7 @@ "cosmere.category.hemalurgy": "Hemalurgy", "cosmere.coinshot": "Coinshot", "cosmere.connector": "Connector", + "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", "cosmere.elderling": "Elderling", "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", @@ -121,7 +122,6 @@ "cosmere.entry.hemalurgic_steel": "Steel", "cosmere.entry.hemalurgic_tin": "Tin", "cosmere.entry.hemalurgic_zinc": "Zinc", - "cosmere.eye_sight": "Eye Sight", "cosmere.firesoul": "Firesoul", "cosmere.gasper": "Gasper", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", @@ -145,6 +145,7 @@ "cosmere.steelrunner": "Steelrunner", "cosmere.subsumer": "Subsumer", "cosmere.thug": "Thug", + "cosmere.tin": "Tin", "cosmere.tineye": "Tineye", "cosmere.trueself": "Trueself", "cosmere.windwhisperer": "Windwhisperer", diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 099bd51bf..cb15380f9 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -19,6 +19,10 @@ import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; import net.minecraft.entity.boss.dragon.EnderDragonEntity; import net.minecraft.entity.monster.PhantomEntity; +import net.minecraft.entity.monster.WitherSkeletonEntity; +import net.minecraft.entity.passive.CatEntity; +import net.minecraft.entity.passive.RabbitEntity; +import net.minecraft.entity.passive.fish.PufferfishEntity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.IItemTier; import net.minecraft.item.Item; @@ -727,6 +731,32 @@ else if (killedEntity instanceof EnderDragonEntity) case CHROMIUM: //Might steal destiny //so we could add some permanent luck? + + if (killedEntity instanceof RabbitEntity) + { + strengthToAdd = 0.77; + } + else if (killedEntity instanceof WitherSkeletonEntity) + { + strengthToAdd = -0.77; + } + else if (killedEntity instanceof PufferfishEntity) + { + strengthToAdd = -0.05; + } + else if (killedEntity instanceof CatEntity) + { + CatEntity cat = (CatEntity) killedEntity; + final int catType = cat.getCatType(); + if (catType == 10)//all black + { + strengthToAdd = -1; + } + else if (catType == 8)//white + { + strengthToAdd = 0.35; + } + } break; case NICROSIL: //Steals Investiture diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 60893988e..3ee3b4edd 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -91,7 +91,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //how much should we add. final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); final double strengthToAdd = strengthCurrent + entityAbilityStrength; - if (strengthToAdd > 0) + if (strengthToAdd > 0.01 || strengthToAdd < -0.01) { Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); } @@ -224,11 +224,16 @@ default Multimap getHemalurgicAttributes(Multimap< case IRON: attribute = Attributes.ATTACK_DAMAGE; break; + case CHROMIUM: + attribute = Attributes.LUCK; + break; default: //TIN: //Steals senses //a type of night vision + //Copper: + //Steals mental fortitude, memory, and intelligence final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) @@ -241,14 +246,6 @@ default Multimap getHemalurgicAttributes(Multimap< //Steals emotional fortitude //todo figure out what that means break; - case COPPER: - //Steals mental fortitude, memory, and intelligence - //todo increase base xp gain? - break; - case CHROMIUM: - //Might steal destiny - //so we could add some permanent luck? - break; case NICROSIL: //Steals Investiture //todo figure out what that means @@ -338,19 +335,14 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema if (hasHemalurgicPower(stack, hemalurgicSpikeItem.getMetalType())) { - double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); - String s; + tooltip.add(TextHelper.createTranslatedText("tooltip.hemalurgy." + hemalurgicSpikeItem.getMetalType())); if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) { - s = "+" + hemalurgicStrength + " Attack Damage"; - } - else - { - s = "+" + hemalurgicStrength + " Hemalurgic " + StringHelper.fixCapitalisation(hemalurgicSpikeItem.getMetalType().getName()); + double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); + String s = "+" + hemalurgicStrength + " Attack Damage"; + tooltip.add(TextHelper.createText(s)); } - //todo, make this translated text - tooltip.add(TextHelper.createText(s)); } IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); @@ -372,7 +364,9 @@ default boolean hasHemalurgicPower(ItemStack stack, AManifestation manifestation default boolean hasHemalurgicPower(ItemStack stack, Metals.MetalType metalType) { - return getHemalurgicStrength(stack,metalType) > 0; + final double hemalurgicStrength = getHemalurgicStrength(stack, metalType); + final double marginOfError = 0.01; + return hemalurgicStrength > marginOfError || hemalurgicStrength < -marginOfError; } default void Invest(ItemStack stack, AManifestation manifestation, double level, UUID identity) From 3df29d7bd7feeaa173f863c25e5d7c8d13045197 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 13:35:26 +1200 Subject: [PATCH 0093/1090] Aluminum Spikes --- .../cap/entity/SpiritwebCapability.java | 9 ++++++ .../leaf/cosmere/constants/Constants.java | 1 + .../java/leaf/cosmere/constants/Metals.java | 1 + .../leaf/cosmere/items/MetalmindItem.java | 18 ----------- .../items/curio/HemalurgicSpikeItem.java | 24 +++++++++++--- .../cosmere/items/curio/IHemalurgicInfo.java | 31 +++++++++++++++++-- 6 files changed, 59 insertions(+), 25 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 996df59d4..fa159bb53 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -184,6 +184,15 @@ public void tick() didSetup = true; } + if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID())) + { + selectedManifestation = ManifestationRegistry.NONE.get(); + if (getLiving() instanceof ServerPlayerEntity) + { + syncToClients((ServerPlayerEntity)getLiving()); + } + } + //Tick for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index ff61649e3..5e9cc4a1b 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -42,6 +42,7 @@ public static class NBT public static final UUID UNSEALED_UUID = UUID.fromString("422fc419-1e39-4eac-ac01-6fc98512c122"); + public static final UUID ALUMINUM_UUID = UUID.fromString("8da98b83-be5e-4b34-b51e-5fdd79700893"); } //todo rename this when I remember the word diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index cb15380f9..45bb04351 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -134,6 +134,7 @@ public boolean hasAssociatedManifestation() { switch (this) { + case ATIUM: case MALATIUM: case LERASIUM: //these are mistborn, but its handled by giving access to all other metals case LERASATIUM: //these are feruchemists, but its handled by giving access to all other metals diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index f6ec3858f..1b665fbd2 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -88,22 +88,4 @@ public Multimap getAttributeModifiers(SlotContext return attributeModifiers; } - - @Override - public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) - { - //todo better logic. - boolean isEquipping = prevStack == null || stack.getItem() != prevStack.getItem(); - onEquipStatusChanged(slotContext, stack, isEquipping); - } - - @Override - public void onUnequip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) - { - onEquipStatusChanged(slotContext, stack, false); - } - - protected void onEquipStatusChanged(SlotContext slotContext, ItemStack stack, boolean isEquipping) - { - } } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 397e91840..c37d7760f 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -12,6 +12,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.renderer.wearables.SpikeModel; import leaf.cosmere.compat.curios.CosmereCurios; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; @@ -338,18 +339,33 @@ public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack) } @Override - protected void onEquipStatusChanged(SlotContext slotContext, ItemStack stack, boolean isEquipping) + public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) { - //first do normal equip status changed, in case this spike metalmind has nicrosil powers stored - super.onEquipStatusChanged(slotContext, stack, isEquipping); + //todo better logic. + boolean isEquipping = prevStack == null || stack.getItem() != prevStack.getItem(); if (isEquipping) { //then do hemalurgy spike logic //hurt the user //spiritweb attributes are handled in metalmind - slotContext.getWearer().hurt(SPIKED, 4); + final LivingEntity entity = slotContext.getWearer(); + entity.hurt(SPIKED, 4); } + + } + + @Override + public boolean showAttributesTooltip(String identifier, ItemStack stack) + { + return false; + } + + @Override + public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) + { + final LivingEntity entity = slotContext.getWearer(); + entity.hurt(SPIKED, 4); } @Override diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 3ee3b4edd..f47bb03b1 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -14,7 +14,6 @@ import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.StackNBTHelper; -import leaf.cosmere.utils.helpers.StringHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.ai.attributes.Attribute; @@ -206,10 +205,30 @@ default AManifestation getRandomMetalPowerFromList( default Multimap getHemalurgicAttributes(Multimap attributeModifiers, ItemStack stack, Metals.MetalType metalType) { - CompoundNBT hemalurgyInfo = getHemalurgicInfo(stack); UUID hemalurgicIdentity = getHemalurgicIdentity(stack); - if (hemalurgicIdentity == null) + if (metalType == Metals.MetalType.ALUMINUM) + { + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String path = manifestation.getName(); + + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + { + continue; + } + + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), + new AttributeModifier( + Constants.NBT.ALUMINUM_UUID, + manifestation.translation().getKey(), + -100, + AttributeModifier.Operation.ADDITION)); + } + return attributeModifiers; + } + else if (hemalurgicIdentity == null) { return attributeModifiers; } @@ -380,5 +399,11 @@ default void Invest(ItemStack stack, Metals.MetalType metalType, double level, U setHemalurgicStrength(stack, metalType, level); setHemalurgicIdentity(stack, identity); } + + default void Divest(ItemStack stack) + { + StackNBTHelper.removeEntry(stack, "hemalurgy"); + StackNBTHelper.removeEntry(stack, stolen_identity_tag); + } } From b4e694a6958a451ff82fd3e2cc3134b822d45c7e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 16:40:49 +1200 Subject: [PATCH 0094/1090] Roshar enums --- .../java/leaf/cosmere/constants/Roshar.java | 248 ++++++++++++++++++ 1 file changed, 248 insertions(+) create mode 100644 src/main/java/leaf/cosmere/constants/Roshar.java diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java new file mode 100644 index 000000000..71ffb24f5 --- /dev/null +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -0,0 +1,248 @@ +/* + * File created ~ 9 - 4 - 2022 ~ Leaf + */ + +package leaf.cosmere.constants; + +import leaf.cosmere.registry.ItemsRegistry; +import net.minecraft.item.IItemTier; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.util.IItemProvider; + +import java.awt.*; +import java.util.Arrays; +import java.util.Locale; +import java.util.Optional; + +public class Roshar +{ + public enum GemSize + { + BROAM, + MARK, + CHIP; + + public float getChargeModifier() + { + switch (this) + { + case BROAM: + return 1f; + case MARK: + return 0.5f; + case CHIP: + return 0.1f; + } + return 0; + } + } + + public enum Surges + { + ADHESION(0), + GRAVITATION(1), + DIVISION(2), + ABRASION(3), + PROGRESSION(4), + ILLUMINATION(5), + TRANSFORMATION(6), + TRANSPORTATION(7), + COHESION(8), + TENSION(9); + + private final int id; + + Surges(int id) + { + this.id = id; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(surge -> surge.id == value) + .findFirst(); + } + + public int getID() + { + return id; + } + + public String getName(){ return name().toLowerCase(Locale.ROOT);} + + + public int getColor() + { + return 0; + } + } + + public enum Polestone implements IItemTier + { + SAPPHIRE(0), + SMOKESTONE(1), + RUBY(2), + DIAMOND(3), + EMERALD(4), + GARNET(5), + ZIRCON(6), + AMETHYST(7), + TOPAZ(8), + HELIODOR(9); + + + private final int id; + + Polestone(int id) + { + this.id = id; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(gemType -> gemType.id == value) + .findFirst(); + } + + public int getID() + { + return id; + } + + public String getName(){ return name().toLowerCase(Locale.ROOT);} + + + public String getAssociatedOrder() + { + switch (this) + { + default: + case SAPPHIRE: + return "windrunner"; + case SMOKESTONE: + return "skybreaker"; + case RUBY: + return "dustbringer"; + case DIAMOND: + return "edgedancer"; + case EMERALD: + return "truthwatcher"; + case GARNET: + return "lightweaver"; + case ZIRCON: + return "elsecaller"; + case AMETHYST: + return "willshaper"; + case TOPAZ: + return "stoneward"; + case HELIODOR: + return "bondsmith"; + } + } + + public int getColorValue() + { + return getColor().getRGB(); + } + + public Color getColor() + { + switch (this) + { + default: + case SAPPHIRE: + return GemColours.WINDRUNNER; + case SMOKESTONE: + return GemColours.SKYBREAKER; + case RUBY: + return GemColours.DUSTBRINGER; + case DIAMOND: + return GemColours.EDGEDANCER; + case EMERALD: + return GemColours.TRUTHWATCHER; + case GARNET: + return GemColours.LIGHTWEAVER; + case ZIRCON: + return GemColours.ELSECALLER; + case AMETHYST: + return GemColours.WILLSHAPER; + case TOPAZ: + return GemColours.STONEWARD; + case HELIODOR: + return GemColours.BONDSMITH; + } + } + + + + public IItemProvider getPolestoneItem(GemSize size) + { + switch (size) + { + case BROAM: + return ItemsRegistry.POLESTONE_BROAMS.get(this).get(); + case MARK: + return ItemsRegistry.POLESTONE_MARKS.get(this).get(); + case CHIP: + return ItemsRegistry.POLESTONE_CHIPS.get(this).get(); + } + + return null; + } + + + @Override + public int getUses() + { + return 0; + } + + @Override + public float getSpeed() + { + return 0; + } + + @Override + public float getAttackDamageBonus() + { + return 0; + } + + @Override + public int getLevel() + { + return 0; + } + + @Override + public int getEnchantmentValue() + { + return 0; + } + + @Override + public Ingredient getRepairIngredient() + { + return null; + } + + } + + + private static class GemColours + { + public static final Color WINDRUNNER = Color.decode("#4a6682"); + public static final Color SKYBREAKER = Color.decode("#716b79"); + public static final Color DUSTBRINGER = Color.decode("#8c4f49"); + public static final Color EDGEDANCER = Color.decode("#8d8e92"); + public static final Color TRUTHWATCHER = Color.decode("#4d7661"); + public static final Color LIGHTWEAVER = Color.decode("#7c515b"); + public static final Color ELSECALLER = Color.decode("#4f5b6d"); + public static final Color WILLSHAPER = Color.decode("#6b4b66"); + public static final Color STONEWARD = Color.decode("#807158"); + public static final Color BONDSMITH = Color.decode("#aeac79"); + } +} From a3825a236a26492a095fc9f514acfa3a82e11e0e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 16:42:24 +1200 Subject: [PATCH 0095/1090] Update surge manifestations to match roshar enums --- .../surgebinding/SurgeAbrasion.java | 6 +-- .../surgebinding/SurgeAdhesion.java | 6 +-- .../surgebinding/SurgeCohesion.java | 6 +-- .../surgebinding/SurgeDivision.java | 5 +- .../surgebinding/SurgeGravitation.java | 9 ++-- .../surgebinding/SurgeIllumination.java | 6 +-- .../surgebinding/SurgeProgression.java | 6 +-- .../surgebinding/SurgeTension.java | 6 +-- .../surgebinding/SurgeTransformation.java | 6 +-- .../surgebinding/SurgeTransportation.java | 6 +-- .../surgebinding/SurgebindingBase.java | 5 +- .../registry/ManifestationRegistry.java | 51 +++++++++++++++---- 12 files changed, 76 insertions(+), 42 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java index f132d3757..46ca33d5c 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeAbrasion extends SurgebindingBase { - public SurgeAbrasion(int color) + public SurgeAbrasion(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java index da2bdc2f5..f66dc69bc 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java @@ -5,6 +5,7 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -12,12 +13,11 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeAdhesion extends SurgebindingBase { - public SurgeAdhesion(int color) + public SurgeAdhesion(Roshar.Surges surge) { - super(color); + super(surge); } //bind things together diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java index 5c525cf31..de0f5860d 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeCohesion extends SurgebindingBase { - public SurgeCohesion(int color) + public SurgeCohesion(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java index b8e31dcc2..04c6b4628 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java @@ -5,14 +5,15 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeDivision extends SurgebindingBase { - public SurgeDivision(int color) + public SurgeDivision(Roshar.Surges surge) { - super(color); + super(surge); } //power over destruction and decay diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java index 23ec3b14a..b651be85e 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java @@ -5,6 +5,7 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.item.ItemStack; @@ -12,18 +13,18 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +//@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeGravitation extends SurgebindingBase { - public SurgeGravitation(int color) + public SurgeGravitation(Roshar.Surges surge) { - super(color); + super(surge); } //gravitational attraction - @SubscribeEvent + //@SubscribeEvent public void onLivingHurtEvent(LivingHurtEvent event) { if (event.getSource().getEntity() instanceof PlayerEntity) diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java index db875ac4f..940492b75 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeIllumination extends SurgebindingBase { - public SurgeIllumination(int color) + public SurgeIllumination(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java index 2d1f68910..a67051cc6 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeProgression extends SurgebindingBase { - public SurgeProgression(int color) + public SurgeProgression(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java index bcc4375fb..65b422b39 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeTension extends SurgebindingBase { - public SurgeTension(int color) + public SurgeTension(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java index 4f258887d..196e70720 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeTransformation extends SurgebindingBase { - public SurgeTransformation(int color) + public SurgeTransformation(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java index 1e2b59a71..9724ee56d 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java @@ -5,14 +5,14 @@ package leaf.cosmere.manifestation.surgebinding; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import net.minecraftforge.fml.common.Mod; -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeTransportation extends SurgebindingBase { - public SurgeTransportation(int color) + public SurgeTransportation(Roshar.Surges surge) { - super(color); + super(surge); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java index 0855fde5a..cb7aff75f 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java @@ -4,13 +4,14 @@ package leaf.cosmere.manifestation.surgebinding; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.manifestation.ManifestationBase; public class SurgebindingBase extends ManifestationBase { - public SurgebindingBase(int color) + public SurgebindingBase(Roshar.Surges surge) { - super(Manifestations.ManifestationTypes.RADIANT, color); + super(Manifestations.ManifestationTypes.RADIANT, surge.getColor()); } } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index 93bc8c348..a9151117c 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -5,12 +5,14 @@ package leaf.cosmere.registry; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.manifestation.allomancy.*; import leaf.cosmere.manifestation.feruchemy.*; +import leaf.cosmere.manifestation.surgebinding.*; import net.minecraft.util.ResourceLocation; import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.DeferredRegister; @@ -66,16 +68,16 @@ public class ManifestationRegistry // Surgebinder //todo knights radiant - //public static final RegistryObject WINDRUNNER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.WINDRUNNER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject SKYBREAKER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.SKYBREAKER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject DUSTBRINGER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.DUSTBRINGER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject EDGEDANCER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.EDGEDANCER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject TRUTHWATCHER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.TRUTHWATCHER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject LIGHTWEAVER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.LIGHTWEAVER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject ELSECALLER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.ELSECALLER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject WILLSHAPER = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.WILLSHAPER, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject STONEWARD = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.STONEWARD, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - //public static final RegistryObject BONDSMITH = MANIFESTATIONS.register(Constants.Manifestations.Surgebinding.BONDSMITH, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); + + public static final Map> SURGEBINDING_POWERS = + Arrays.stream(Roshar.Surges.values()) + .collect(Collectors.toMap( + Function.identity(), + surge -> + MANIFESTATIONS.register( + surge.getName(), + () -> makeSurgebindingManifestation(surge))//get the specific instance of the manifestation for allomancy + )); //Create Registry public static AManifestation fromID(String location) @@ -155,6 +157,35 @@ private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalTy return new FeruchemyBase(metalType); } } + private static SurgebindingBase makeSurgebindingManifestation(Roshar.Surges surge) + { + switch (surge) + { + case ADHESION: + return new SurgeAdhesion(surge); + case GRAVITATION: + return new SurgeGravitation(surge); + case DIVISION: + return new SurgeDivision(surge); + case ABRASION: + return new SurgeAbrasion(surge); + case PROGRESSION: + return new SurgeProgression(surge); + case ILLUMINATION: + return new SurgeIllumination(surge); + case TRANSFORMATION: + return new SurgeTransformation(surge); + case TRANSPORTATION: + return new SurgeTransportation(surge); + case COHESION: + return new SurgeCohesion(surge); + case TENSION: + return new SurgeTension(surge); + } + + //shouldn't ever make it here + return new SurgebindingBase(surge); + } public static Map getManifestations() { From bbf8f43373965b9fc171be852c99415a68ceb6bd Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 16:43:03 +1200 Subject: [PATCH 0096/1090] Stormlight gemstones that charge during thunderstorms --- .../java/leaf/cosmere/charge/IChargeable.java | 10 +- .../leaf/cosmere/constants/Constants.java | 5 + .../cosmere/datagen/items/ItemModelsGen.java | 17 ++++ .../leaf/cosmere/handlers/ColorHandler.java | 17 +++- .../cosmere/handlers/PlayerEventHandler.java | 26 +----- .../cosmere/items/gems/IHasPolestoneType.java | 12 +++ .../cosmere/items/gems/PolestoneItem.java | 87 ++++++++++++++++++ .../leaf/cosmere/registry/ItemsRegistry.java | 32 +++++++ .../cosmere/textures/item/polestone_broam.png | Bin 0 -> 3829 bytes .../cosmere/textures/item/polestone_chip.png | Bin 0 -> 3829 bytes .../cosmere/textures/item/polestone_mark.png | Bin 0 -> 3829 bytes 11 files changed, 177 insertions(+), 29 deletions(-) create mode 100644 src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java create mode 100644 src/main/java/leaf/cosmere/items/gems/PolestoneItem.java create mode 100644 src/main/resources/assets/cosmere/textures/item/polestone_broam.png create mode 100644 src/main/resources/assets/cosmere/textures/item/polestone_chip.png create mode 100644 src/main/resources/assets/cosmere/textures/item/polestone_mark.png diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index ae057bf29..dde974d17 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -127,9 +127,12 @@ default void adjustCharge(ItemStack stack, int chargeToAdjustBy) default void increaseCurrentCharge(ItemStack itemStack) { - int currentCharge = getCharge(itemStack); - int nextChargeLevel = currentCharge + 1; - setCharge(itemStack, (int) nextChargeLevel); + increaseCurrentCharge(itemStack, 1); + } + + default void increaseCurrentCharge(ItemStack stack, int i) + { + setCharge(stack, getCharge(stack) + i); } default void decreaseCurrentCharge(ItemStack itemStack) @@ -148,4 +151,5 @@ default boolean canReceiveChargeFromItem(ItemStack stack, ItemStack stackInSlot) { return true; } + } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 5e9cc4a1b..101ab6867 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -62,6 +62,11 @@ public static class RegNameStubs public static final String NUGGET = "_nugget"; public static final String SHAVINGS = "_shavings"; public static final String SPIKE = "_spike"; + + + public static final String CHIP = "_chip"; + public static final String MARK = "_mark"; + public static final String BROAM = "_broam"; } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 0863dfd6f..df61b68c8 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -13,6 +13,7 @@ import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.items.curio.NecklaceMetalmindItem; import leaf.cosmere.items.curio.RingMetalmindItem; +import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.data.DataGenerator; import net.minecraft.item.BlockItem; @@ -92,6 +93,22 @@ else if (item instanceof MetalRawOreItem) simpleItem(path, "metal_raw"); continue; } + else if (item instanceof PolestoneItem) + { + switch (((PolestoneItem)item).getSize()) + { + case BROAM: + simpleItem(path, "polestone_broam"); + break; + case MARK: + simpleItem(path, "polestone_mark"); + break; + case CHIP: + simpleItem(path, "polestone_chip"); + break; + } + continue; + } //else normal item texture rules apply simpleItem(path, path); diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index 037d82ef9..36ea6761b 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -7,7 +7,9 @@ package leaf.cosmere.handlers; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.items.gems.IHasPolestoneType; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.color.BlockColors; @@ -42,7 +44,6 @@ public static void init() itemColors.register(metalColorHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (metalType.hasOre()) { //blocks in world @@ -79,5 +80,19 @@ public static void init() itemColors.register(metalColorHandler, metalType.getSpikeItem()); } } + + IItemColor gemColorHandler = + (itemStack, tintIndex) -> tintIndex == 0 + ? ((IHasPolestoneType) itemStack.getItem()).getPolestoneType().getColorValue() + : -1; + + for (Roshar.Polestone polestone : Roshar.Polestone.values()) + { + //blockColors.register(metalBlockColorHandler, metalType.getOreBlock()); + for (Roshar.GemSize size : Roshar.GemSize.values()) + { + itemColors.register(gemColorHandler, polestone.getPolestoneItem(size)); + } + } } } diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index d94eb1b92..ecf448111 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -8,6 +8,7 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.EffectsRegistry; @@ -81,31 +82,6 @@ public static void onTrackPlayer(PlayerEvent.StartTracking startTracking) }); } - @SubscribeEvent - public void onPlayerTick(TickEvent.PlayerTickEvent event) - { - PlayerEntity player = event.player; - - //charge gemstones in inventory if the player is outside during a thunderstorm - if (player.level.isRainingAt(player.blockPosition()) && player.level.isThundering()) - { - IInventory mainInv = player.inventory; - int size = mainInv.getContainerSize(); - - for (int i = 0; i < size; i++) - { - IInventory inv = mainInv; - int slot = i; - - ItemStack stackInSlot = inv.getItem(slot); - //todo finish :D - //if (stackInSlot != null && stackInSlot.getItem() instanceof ItemGemstone) - { - } - } - } - } - @SubscribeEvent public void onItemTossEvent(ItemTossEvent event) { diff --git a/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java new file mode 100644 index 000000000..a55bbffdc --- /dev/null +++ b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java @@ -0,0 +1,12 @@ +/* + * File created ~ 9 - 4 - 2022 ~ Leaf + */ + +package leaf.cosmere.items.gems; + +import leaf.cosmere.constants.Roshar; + +public interface IHasPolestoneType +{ + Roshar.Polestone getPolestoneType(); +} diff --git a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java new file mode 100644 index 000000000..3cfbf3ef6 --- /dev/null +++ b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java @@ -0,0 +1,87 @@ +/* + * File created ~ 9 - 4 - 2022 ~ Leaf + */ + +package leaf.cosmere.items.gems; + +import leaf.cosmere.constants.Roshar; +import leaf.cosmere.itemgroups.CosmereItemGroups; +import leaf.cosmere.items.ChargeableItemBase; +import leaf.cosmere.properties.PropTypes; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.ItemEntity; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Rarity; +import net.minecraft.util.math.MathHelper; +import net.minecraft.world.World; + +public class PolestoneItem extends ChargeableItemBase implements IHasPolestoneType +{ + private final Roshar.Polestone polestone; + private final Roshar.GemSize gemSize; + + public PolestoneItem(Roshar.Polestone polestone, Roshar.GemSize gemSize) + { + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); + this.polestone = polestone; + this.gemSize = gemSize; + } + + @Override + public int getMaxCharge(ItemStack itemStack) + { + return MathHelper.floor(10000 * getMaxChargeModifier()); + } + + @Override + public float getMaxChargeModifier() + { + return gemSize.getChargeModifier(); + } + + @Override + public Roshar.Polestone getPolestoneType() + { + return polestone; + } + + public Roshar.GemSize getSize() + { + return this.gemSize; + } + + @Override + public int getEntityLifespan(ItemStack itemStack, World world) + { + return Integer.MAX_VALUE; + } + + @Override + public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) + { + if (entityItem.level.isRainingAt(entityItem.blockPosition()) && entityItem.level.isThundering()) + { + if (getCharge(stack) < getMaxCharge(stack)) + { + //gemstones charge faster in the world + this.increaseCurrentCharge(stack, 5); + } + } + return super.onEntityItemUpdate(stack,entityItem); + } + + @Override + public void inventoryTick(ItemStack pStack, World pLevel, Entity pEntity, int pItemSlot, boolean pIsSelected) + { + if (pLevel.isRainingAt(pEntity.blockPosition()) && pLevel.isThundering()) + { + if (pStack.getItem() instanceof PolestoneItem) + { + PolestoneItem polestoneItem = (PolestoneItem) pStack.getItem(); + polestoneItem.increaseCurrentCharge(pStack); + } + } + + super.inventoryTick(pStack, pLevel, pEntity, pItemSlot, pIsSelected); + } +} diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index f3e40c79a..7996dc472 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -10,8 +10,10 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Constants.RegNameStubs; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.items.*; import leaf.cosmere.items.curio.*; +import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.properties.PropTypes; import net.minecraft.item.ItemTier; import net.minecraftforge.fml.RegistryObject; @@ -146,6 +148,36 @@ public class ItemsRegistry ))); + public static final Map> POLESTONE_CHIPS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.CHIP, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.CHIP)) + ))); + + + public static final Map> POLESTONE_MARKS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.MARK, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.MARK)) + ))); + + + public static final Map> POLESTONE_BROAMS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.BROAM, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.BROAM)) + ))); + + private static T createItem(T item) { return item; diff --git a/src/main/resources/assets/cosmere/textures/item/polestone_broam.png b/src/main/resources/assets/cosmere/textures/item/polestone_broam.png new file mode 100644 index 0000000000000000000000000000000000000000..909b1e8413c673d80675acc6d530bee1a509d87b GIT binary patch literal 3829 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 Wy}c5j(DU>{WFtLu-Ex>?JVT478_d0RRj}hPqbA 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 NqrSF@Rt3Z%@_!~|-*Er{ literal 0 HcmV?d00001 From f1a77b233314b37cc6d49c9cad1feb25309fa303 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 16:43:21 +1200 Subject: [PATCH 0097/1090] Run data generation --- src/main/generated/.cache/cache | 36 ++++++++++-- .../generated/assets/cosmere/lang/en_us.json | 56 +++++++++++++++++-- .../cosmere/models/item/amethyst_broam.json | 6 ++ .../cosmere/models/item/amethyst_chip.json | 6 ++ .../cosmere/models/item/amethyst_mark.json | 6 ++ .../cosmere/models/item/diamond_broam.json | 6 ++ .../cosmere/models/item/diamond_chip.json | 6 ++ .../cosmere/models/item/diamond_mark.json | 6 ++ .../cosmere/models/item/emerald_broam.json | 6 ++ .../cosmere/models/item/emerald_chip.json | 6 ++ .../cosmere/models/item/emerald_mark.json | 6 ++ .../cosmere/models/item/garnet_broam.json | 6 ++ .../cosmere/models/item/garnet_chip.json | 6 ++ .../cosmere/models/item/garnet_mark.json | 6 ++ .../cosmere/models/item/heliodor_broam.json | 6 ++ .../cosmere/models/item/heliodor_chip.json | 6 ++ .../cosmere/models/item/heliodor_mark.json | 6 ++ .../cosmere/models/item/ruby_broam.json | 6 ++ .../assets/cosmere/models/item/ruby_chip.json | 6 ++ .../assets/cosmere/models/item/ruby_mark.json | 6 ++ .../cosmere/models/item/sapphire_broam.json | 6 ++ .../cosmere/models/item/sapphire_chip.json | 6 ++ .../cosmere/models/item/sapphire_mark.json | 6 ++ .../cosmere/models/item/smokestone_broam.json | 6 ++ .../cosmere/models/item/smokestone_chip.json | 6 ++ .../cosmere/models/item/smokestone_mark.json | 6 ++ .../cosmere/models/item/topaz_broam.json | 6 ++ .../cosmere/models/item/topaz_chip.json | 6 ++ .../cosmere/models/item/topaz_mark.json | 6 ++ .../cosmere/models/item/zircon_broam.json | 6 ++ .../cosmere/models/item/zircon_chip.json | 6 ++ .../cosmere/models/item/zircon_mark.json | 6 ++ .../cosmere/advancements/allomancy/atium.json | 36 ------------ .../cosmere/advancements/feruchemy/atium.json | 36 ------------ .../cosmere.entry.allomantic_atium.json | 18 ------ .../cosmere.entry.feruchemical_atium.json | 15 ----- 36 files changed, 261 insertions(+), 116 deletions(-) create mode 100644 src/main/generated/assets/cosmere/models/item/amethyst_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/amethyst_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/amethyst_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/diamond_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/diamond_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/diamond_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/emerald_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/emerald_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/emerald_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/garnet_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/garnet_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/garnet_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/heliodor_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/heliodor_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/heliodor_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/ruby_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/ruby_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/ruby_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/sapphire_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/sapphire_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/sapphire_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/smokestone_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/smokestone_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/smokestone_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/topaz_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/topaz_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/topaz_mark.json create mode 100644 src/main/generated/assets/cosmere/models/item/zircon_broam.json create mode 100644 src/main/generated/assets/cosmere/models/item/zircon_chip.json create mode 100644 src/main/generated/assets/cosmere/models/item/zircon_mark.json delete mode 100644 src/main/generated/data/cosmere/advancements/allomancy/atium.json delete mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/atium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 559d5177c..b7ea439ba 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -31,7 +31,7 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.js b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -f17a9e5586f9a01a0cd4a96215984c191f43f705 assets/cosmere/lang/en_us.json +b51a1c5ceb343b5a38def33c6ae04130c6daa3a3 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -44,6 +44,9 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/aluminum_bra b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/aluminum_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/aluminum_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/aluminum_spike.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/amethyst_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/amethyst_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/amethyst_mark.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/atium_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/atium_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/atium_ingot.json @@ -100,6 +103,9 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_brace b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/copper_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/copper_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/copper_spike.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/diamond_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/diamond_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/diamond_mark.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/duralumin_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/duralumin_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/duralumin_bracelet_metalmind.json @@ -116,6 +122,12 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bra 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/electrum_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/electrum_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spike.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/emerald_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/emerald_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/emerald_mark.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/garnet_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/garnet_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/garnet_mark.json 093a7aadc79fe47013d29ba53bb9df540b27dba5 assets/cosmere/models/item/gem_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json @@ -125,6 +137,9 @@ f9c2f8e60d6f55d0b91bf2558b3d7f6a84f3b9b5 assets/cosmere/models/item/guide.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/harmonium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/harmonium_nugget.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/heliodor_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/heliodor_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/heliodor_mark.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/iron_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/iron_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/iron_ring_metalmind.json @@ -174,10 +189,19 @@ e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_nickel_o e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_silver_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_tin_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_zinc_ore.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/ruby_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/ruby_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/ruby_mark.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/sapphire_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/sapphire_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/sapphire_mark.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/silver_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/silver_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/silver_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/silver_ore.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/smokestone_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/smokestone_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/smokestone_mark.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/steel_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/steel_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/steel_bracelet_metalmind.json @@ -194,6 +218,9 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/tin_bracelet b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/tin_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/tin_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/tin_spike.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/topaz_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/topaz_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/topaz_mark.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/zinc_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/zinc_ingot.json @@ -202,8 +229,10 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracele b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/zinc_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/zinc_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.json +320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/zircon_broam.json +8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/zircon_chip.json +2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/zircon_mark.json fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/aluminum.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/atium.json fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bendalloy.json fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/brass.json fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bronze.json @@ -223,7 +252,6 @@ fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/zin 5be2dd766b670c65d5a918b91b782c924d981ec8 data/cosmere/advancements/core/mine_stone.json 8111d290678c7f53e005d8aeb84d73d23cade9fe data/cosmere/advancements/core/root.json bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/aluminum.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/atium.json bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bendalloy.json bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/brass.json bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bronze.json @@ -500,7 +528,6 @@ f95b389fa24ceb0f69609c04812443232ac5e96c data/cosmere/patchouli_books/guide/en_u a1ea0b0941a7aa11e598176f56b6c761626940e8 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json 6491d28017c2cb713b3125a2159358bc1b121818 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json 52946b0b3cda9a5ef67cafc8478c65e2ad21c7f6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json -c69d3f8400bc6f3e287e0f6e0ca958326584a0ec data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json f82614dde57cc23adeabc9f77b604049e550e3fc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json eaee86596fb39c19706ca4f760bd7c8562c47324 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json 4eec3fa0163a89d722dd5d05cecc41b7be811736 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json @@ -517,7 +544,6 @@ e92429bf020c5d0c4ac81201233c8e614c5eaf2f data/cosmere/patchouli_books/guide/en_u 906b21ce375cea37513cb6a09c2643295c1fd6d0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json 2e960b5355f77cbff7074e8ac3b384c5fb2baa93 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json 0b0aef6a72074556b93fd084c9969c5dc73b3da4 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json -3f6fa10fc1a6ce42300d95b4570a82d5bc111d6c data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json 538303df8e7edff9b2b3b1ee0adc9da3fdfab8dd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json 166436cb42fcaaeea5891cdc6e4d02cecbf831c5 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json 9963ea5dc66ff9286c48ab73577d40ef25f85ea6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index d96512a09..21b9ea3b1 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -49,7 +49,6 @@ "cosmere.connector": "Connector", "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", - "cosmere.elderling": "Elderling", "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", "cosmere.entry.allomantic_atium": "Atium - Seer", "cosmere.entry.allomantic_bendalloy": "Bendalloy - Slider", @@ -133,7 +132,6 @@ "cosmere.pulser": "Pulser", "cosmere.rioter": "Rioter", "cosmere.seeker": "Seeker", - "cosmere.seer": "Seer", "cosmere.sentry": "Sentry", "cosmere.skimmer": "Skimmer", "cosmere.slider": "Slider", @@ -208,6 +206,9 @@ "item.cosmere.aluminum_ring_metalmind.tooltip": "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind.", "item.cosmere.aluminum_spike": "Aluminum Spike", "item.cosmere.aluminum_spike.tooltip": "Removes all powers.", + "item.cosmere.amethyst_broam": "Amethyst Broam", + "item.cosmere.amethyst_chip": "Amethyst Chip", + "item.cosmere.amethyst_mark": "Amethyst Mark", "item.cosmere.atium_bracelet_metalmind": "Atium Bracelet Metalmind", "item.cosmere.atium_bracelet_metalmind.tooltip": "Not yet implemented.", "item.cosmere.atium_ingot": "Atium Ingot", @@ -283,6 +284,9 @@ "item.cosmere.copper_ring_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", "item.cosmere.copper_spike": "Copper Spike", "item.cosmere.copper_spike.tooltip": "Steals mental fortitude, memory, and intelligence.", + "item.cosmere.diamond_broam": "Diamond Broam", + "item.cosmere.diamond_chip": "Diamond Chip", + "item.cosmere.diamond_mark": "Diamond Mark", "item.cosmere.duralumin_blend": "Duralumin Blend", "item.cosmere.duralumin_bracelet_metalmind": "Duralumin Bracelet Metalmind", "item.cosmere.duralumin_bracelet_metalmind.tooltip": "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.", @@ -305,6 +309,12 @@ "item.cosmere.electrum_ring_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_spike": "Electrum Spike", "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", + "item.cosmere.emerald_broam": "Emerald Broam", + "item.cosmere.emerald_chip": "Emerald Chip", + "item.cosmere.emerald_mark": "Emerald Mark", + "item.cosmere.garnet_broam": "Garnet Broam", + "item.cosmere.garnet_chip": "Garnet Chip", + "item.cosmere.garnet_mark": "Garnet Mark", "item.cosmere.gold_block": "Gold Block", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", "item.cosmere.gold_bracelet_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", @@ -319,6 +329,9 @@ "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", + "item.cosmere.heliodor_broam": "Heliodor Broam", + "item.cosmere.heliodor_chip": "Heliodor Chip", + "item.cosmere.heliodor_mark": "Heliodor Mark", "item.cosmere.iron_block": "Iron Block", "item.cosmere.iron_bracelet_metalmind": "Iron Bracelet Metalmind", "item.cosmere.iron_bracelet_metalmind.tooltip": "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later.", @@ -376,8 +389,17 @@ "item.cosmere.raw_silver_ore": "Raw Silver Ore", "item.cosmere.raw_tin_ore": "Raw Tin Ore", "item.cosmere.raw_zinc_ore": "Raw Zinc Ore", + "item.cosmere.ruby_broam": "Ruby Broam", + "item.cosmere.ruby_chip": "Ruby Chip", + "item.cosmere.ruby_mark": "Ruby Mark", + "item.cosmere.sapphire_broam": "Sapphire Broam", + "item.cosmere.sapphire_chip": "Sapphire Chip", + "item.cosmere.sapphire_mark": "Sapphire Mark", "item.cosmere.silver_ingot": "Silver Ingot", "item.cosmere.silver_nugget": "Silver Nugget", + "item.cosmere.smokestone_broam": "Smokestone Broam", + "item.cosmere.smokestone_chip": "Smokestone Chip", + "item.cosmere.smokestone_mark": "Smokestone Mark", "item.cosmere.steel_blend": "Steel Blend", "item.cosmere.steel_bracelet_metalmind": "Steel Bracelet Metalmind", "item.cosmere.steel_bracelet_metalmind.tooltip": "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later.", @@ -400,6 +422,9 @@ "item.cosmere.tin_ring_metalmind.tooltip": "Stores Eyesight senses. Tapping will zoom in.", "item.cosmere.tin_spike": "Tin Spike", "item.cosmere.tin_spike.tooltip": "Steals senses.", + "item.cosmere.topaz_broam": "Topaz Broam", + "item.cosmere.topaz_chip": "Topaz Chip", + "item.cosmere.topaz_mark": "Topaz Mark", "item.cosmere.zinc_bracelet_metalmind": "Zinc Bracelet Metalmind", "item.cosmere.zinc_bracelet_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_ingot": "Zinc Ingot", @@ -410,6 +435,9 @@ "item.cosmere.zinc_ring_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_spike": "Zinc Spike", "item.cosmere.zinc_spike.tooltip": "Steals emotional fortitude.", + "item.cosmere.zircon_broam": "Zircon Broam", + "item.cosmere.zircon_chip": "Zircon Chip", + "item.cosmere.zircon_mark": "Zircon Mark", "itemGroup.cosmere.blocks": "Cosmere Blocks", "itemGroup.cosmere.items": "Cosmere Items", "itemGroup.cosmere.metalminds": "Cosmere Metalminds", @@ -423,10 +451,12 @@ "key.cosmere.powers.previous": "Previous Power", "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", + "manifestation.cosmere.abrasion": "Abrasion", + "manifestation.cosmere.abrasion.description": "No Special Powers", + "manifestation.cosmere.adhesion": "Adhesion", + "manifestation.cosmere.adhesion.description": "No Special Powers", "manifestation.cosmere.allomantic_aluminum": "Allomantic Aluminum", "manifestation.cosmere.allomantic_aluminum.description": "Users can burn aluminum", - "manifestation.cosmere.allomantic_atium": "Allomantic Atium", - "manifestation.cosmere.allomantic_atium.description": "Users can burn atium", "manifestation.cosmere.allomantic_bendalloy": "Allomantic Bendalloy", "manifestation.cosmere.allomantic_bendalloy.description": "Users can burn bendalloy", "manifestation.cosmere.allomantic_brass": "Allomantic Brass", @@ -457,10 +487,12 @@ "manifestation.cosmere.allomantic_tin.description": "Users can burn tin", "manifestation.cosmere.allomantic_zinc": "Allomantic Zinc", "manifestation.cosmere.allomantic_zinc.description": "Users can burn zinc", + "manifestation.cosmere.cohesion": "Cohesion", + "manifestation.cosmere.cohesion.description": "No Special Powers", + "manifestation.cosmere.division": "Division", + "manifestation.cosmere.division.description": "No Special Powers", "manifestation.cosmere.feruchemical_aluminum": "Feruchemical Aluminum", "manifestation.cosmere.feruchemical_aluminum.description": "Users can tap aluminum", - "manifestation.cosmere.feruchemical_atium": "Feruchemical Atium", - "manifestation.cosmere.feruchemical_atium.description": "Users can tap atium", "manifestation.cosmere.feruchemical_bendalloy": "Feruchemical Bendalloy", "manifestation.cosmere.feruchemical_bendalloy.description": "Users can tap bendalloy", "manifestation.cosmere.feruchemical_brass": "Feruchemical Brass", @@ -491,8 +523,20 @@ "manifestation.cosmere.feruchemical_tin.description": "Users can tap tin", "manifestation.cosmere.feruchemical_zinc": "Feruchemical Zinc", "manifestation.cosmere.feruchemical_zinc.description": "Users can tap zinc", + "manifestation.cosmere.gravitation": "Gravitation", + "manifestation.cosmere.gravitation.description": "No Special Powers", + "manifestation.cosmere.illumination": "Illumination", + "manifestation.cosmere.illumination.description": "No Special Powers", "manifestation.cosmere.none": "None", "manifestation.cosmere.none.description": "No Special Powers", + "manifestation.cosmere.progression": "Progression", + "manifestation.cosmere.progression.description": "No Special Powers", + "manifestation.cosmere.tension": "Tension", + "manifestation.cosmere.tension.description": "No Special Powers", + "manifestation.cosmere.transformation": "Transformation", + "manifestation.cosmere.transformation.description": "No Special Powers", + "manifestation.cosmere.transportation": "Transportation", + "manifestation.cosmere.transportation.description": "No Special Powers", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/main/generated/assets/cosmere/models/item/amethyst_broam.json b/src/main/generated/assets/cosmere/models/item/amethyst_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/amethyst_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/amethyst_chip.json b/src/main/generated/assets/cosmere/models/item/amethyst_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/amethyst_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/amethyst_mark.json b/src/main/generated/assets/cosmere/models/item/amethyst_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/amethyst_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/diamond_broam.json b/src/main/generated/assets/cosmere/models/item/diamond_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/diamond_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/diamond_chip.json b/src/main/generated/assets/cosmere/models/item/diamond_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/diamond_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/diamond_mark.json b/src/main/generated/assets/cosmere/models/item/diamond_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/diamond_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/emerald_broam.json b/src/main/generated/assets/cosmere/models/item/emerald_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/emerald_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/emerald_chip.json b/src/main/generated/assets/cosmere/models/item/emerald_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/emerald_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/emerald_mark.json b/src/main/generated/assets/cosmere/models/item/emerald_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/emerald_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/garnet_broam.json b/src/main/generated/assets/cosmere/models/item/garnet_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/garnet_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/garnet_chip.json b/src/main/generated/assets/cosmere/models/item/garnet_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/garnet_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/garnet_mark.json b/src/main/generated/assets/cosmere/models/item/garnet_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/garnet_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/heliodor_broam.json b/src/main/generated/assets/cosmere/models/item/heliodor_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/heliodor_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/heliodor_chip.json b/src/main/generated/assets/cosmere/models/item/heliodor_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/heliodor_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/heliodor_mark.json b/src/main/generated/assets/cosmere/models/item/heliodor_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/heliodor_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/ruby_broam.json b/src/main/generated/assets/cosmere/models/item/ruby_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/ruby_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/ruby_chip.json b/src/main/generated/assets/cosmere/models/item/ruby_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/ruby_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/ruby_mark.json b/src/main/generated/assets/cosmere/models/item/ruby_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/ruby_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/sapphire_broam.json b/src/main/generated/assets/cosmere/models/item/sapphire_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/sapphire_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/sapphire_chip.json b/src/main/generated/assets/cosmere/models/item/sapphire_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/sapphire_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/sapphire_mark.json b/src/main/generated/assets/cosmere/models/item/sapphire_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/sapphire_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/smokestone_broam.json b/src/main/generated/assets/cosmere/models/item/smokestone_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/smokestone_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/smokestone_chip.json b/src/main/generated/assets/cosmere/models/item/smokestone_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/smokestone_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/smokestone_mark.json b/src/main/generated/assets/cosmere/models/item/smokestone_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/smokestone_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/topaz_broam.json b/src/main/generated/assets/cosmere/models/item/topaz_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/topaz_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/topaz_chip.json b/src/main/generated/assets/cosmere/models/item/topaz_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/topaz_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/topaz_mark.json b/src/main/generated/assets/cosmere/models/item/topaz_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/topaz_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/zircon_broam.json b/src/main/generated/assets/cosmere/models/item/zircon_broam.json new file mode 100644 index 000000000..6e944b9c8 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/zircon_broam.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_broam" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/zircon_chip.json b/src/main/generated/assets/cosmere/models/item/zircon_chip.json new file mode 100644 index 000000000..c3a187940 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/zircon_chip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_chip" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/zircon_mark.json b/src/main/generated/assets/cosmere/models/item/zircon_mark.json new file mode 100644 index 000000000..4f08b8cd3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/zircon_mark.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/polestone_mark" + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/atium.json b/src/main/generated/data/cosmere/advancements/allomancy/atium.json deleted file mode 100644 index 2ad158432..000000000 --- a/src/main/generated/data/cosmere/advancements/allomancy/atium.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "parent": "minecraft:allomancy/root", - "display": { - "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" - }, - "title": { - "translate": "advancements.cosmere.allomancy.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "get_stone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:stone_tool_materials" - } - ] - } - } - }, - "requirements": [ - [ - "get_stone" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json deleted file mode 100644 index e8cb7a13f..000000000 --- a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "parent": "minecraft:feruchemy/root", - "display": { - "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "get_stone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:stone_tool_materials" - } - ] - } - } - }, - "requirements": [ - [ - "get_stone" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json deleted file mode 100644 index 4e7b2de7a..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_atium.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "cosmere.entry.allomantic_atium", - "category": "cosmere.category.allomancy", - "icon": "atium_ingot", - "pages": [ - { - "type": "text", - "text": "A misting who burns atium is known as a \"Seer\"." - }, - { - "type": "text" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 16 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json deleted file mode 100644 index a3ce389b9..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_atium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "cosmere.entry.feruchemical_atium", - "category": "cosmere.category.feruchemy", - "icon": "cosmere:atium_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_atium.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 16 -} \ No newline at end of file From 63193354f10ce142668d9592a347306aaa8130f0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 17:04:03 +1200 Subject: [PATCH 0098/1090] adding gemstone item tags --- src/main/generated/.cache/cache | 11 ++++++ .../generated/data/forge/tags/items/gems.json | 35 +++++++++++++++++++ .../data/forge/tags/items/gems/amethyst.json | 8 +++++ .../data/forge/tags/items/gems/diamond.json | 8 +++++ .../data/forge/tags/items/gems/emerald.json | 8 +++++ .../data/forge/tags/items/gems/garnet.json | 8 +++++ .../data/forge/tags/items/gems/heliodor.json | 8 +++++ .../data/forge/tags/items/gems/ruby.json | 8 +++++ .../data/forge/tags/items/gems/sapphire.json | 8 +++++ .../forge/tags/items/gems/smokestone.json | 8 +++++ .../data/forge/tags/items/gems/topaz.json | 8 +++++ .../data/forge/tags/items/gems/zircon.json | 8 +++++ .../java/leaf/cosmere/constants/Roshar.java | 16 +++++---- .../cosmere/datagen/items/ItemTagsGen.java | 12 +++++++ .../leaf/cosmere/registry/TagsRegistry.java | 9 +++++ 15 files changed, 157 insertions(+), 6 deletions(-) create mode 100644 src/main/generated/data/forge/tags/items/gems.json create mode 100644 src/main/generated/data/forge/tags/items/gems/amethyst.json create mode 100644 src/main/generated/data/forge/tags/items/gems/diamond.json create mode 100644 src/main/generated/data/forge/tags/items/gems/emerald.json create mode 100644 src/main/generated/data/forge/tags/items/gems/garnet.json create mode 100644 src/main/generated/data/forge/tags/items/gems/heliodor.json create mode 100644 src/main/generated/data/forge/tags/items/gems/ruby.json create mode 100644 src/main/generated/data/forge/tags/items/gems/sapphire.json create mode 100644 src/main/generated/data/forge/tags/items/gems/smokestone.json create mode 100644 src/main/generated/data/forge/tags/items/gems/topaz.json create mode 100644 src/main/generated/data/forge/tags/items/gems/zircon.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index b7ea439ba..d90d706c2 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -836,6 +836,17 @@ c263527b3a980fa055242e5a14f9abb8d7b3669f data/forge/tags/blocks/storage_blocks/p dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/blocks/storage_blocks/steel.json 2186f095063727aa76a726cb4f4203e9c01f0d53 data/forge/tags/blocks/storage_blocks/tin.json ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/blocks/storage_blocks/zinc.json +519be0abe6d74794730327106eee397ce85a1f3f data/forge/tags/items/gems.json +fbe7b971352a8c7b774b0f60283e44682341d013 data/forge/tags/items/gems/amethyst.json +1e4fc7207d7240a184909b620f49c07458979b1c data/forge/tags/items/gems/diamond.json +89bc5e5ed8b87c7bae80e95548288730004f9c3e data/forge/tags/items/gems/emerald.json +5c98eead69c1e69d93bbf543a6347d45d7704479 data/forge/tags/items/gems/garnet.json +b72a38c5578ecaed94990359c28e2667bedb1b4d data/forge/tags/items/gems/heliodor.json +e5e5b55aa8694f98f8688cd2d2f2e6142bea1cf3 data/forge/tags/items/gems/ruby.json +3f40d895cf00a15049349bc9012dfc557c15e067 data/forge/tags/items/gems/sapphire.json +99043e2828836a2de58fcd82bc997836f8d748cd data/forge/tags/items/gems/smokestone.json +a71df79cb107e3e476a2347b7c3a97d48edca537 data/forge/tags/items/gems/topaz.json +071d6ebbe4248609cbd8a35e2d8de33cf5e4765e data/forge/tags/items/gems/zircon.json 923618653a5da1a3e7c61e5d4f870bb89e525d60 data/forge/tags/items/ingots.json e1e14cdbd80f6a0fed198cbf570e0f55647ba5bc data/forge/tags/items/ingots/aluminum.json 955c5a6dda0e6ef7a1125f926cbeddcf34b637c2 data/forge/tags/items/ingots/atium.json diff --git a/src/main/generated/data/forge/tags/items/gems.json b/src/main/generated/data/forge/tags/items/gems.json new file mode 100644 index 000000000..20a4ac4c5 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems.json @@ -0,0 +1,35 @@ +{ + "replace": false, + "values": [ + "cosmere:sapphire_broam", + "cosmere:sapphire_mark", + "cosmere:sapphire_chip", + "cosmere:smokestone_broam", + "cosmere:smokestone_mark", + "cosmere:smokestone_chip", + "cosmere:ruby_broam", + "cosmere:ruby_mark", + "cosmere:ruby_chip", + "cosmere:diamond_broam", + "cosmere:diamond_mark", + "cosmere:diamond_chip", + "cosmere:emerald_broam", + "cosmere:emerald_mark", + "cosmere:emerald_chip", + "cosmere:garnet_broam", + "cosmere:garnet_mark", + "cosmere:garnet_chip", + "cosmere:zircon_broam", + "cosmere:zircon_mark", + "cosmere:zircon_chip", + "cosmere:amethyst_broam", + "cosmere:amethyst_mark", + "cosmere:amethyst_chip", + "cosmere:topaz_broam", + "cosmere:topaz_mark", + "cosmere:topaz_chip", + "cosmere:heliodor_broam", + "cosmere:heliodor_mark", + "cosmere:heliodor_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/amethyst.json b/src/main/generated/data/forge/tags/items/gems/amethyst.json new file mode 100644 index 000000000..3acf9acfa --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/amethyst.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:amethyst_broam", + "cosmere:amethyst_mark", + "cosmere:amethyst_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/diamond.json b/src/main/generated/data/forge/tags/items/gems/diamond.json new file mode 100644 index 000000000..a7c6ec55c --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/diamond.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:diamond_broam", + "cosmere:diamond_mark", + "cosmere:diamond_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/emerald.json b/src/main/generated/data/forge/tags/items/gems/emerald.json new file mode 100644 index 000000000..30f4cbd46 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/emerald.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:emerald_broam", + "cosmere:emerald_mark", + "cosmere:emerald_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/garnet.json b/src/main/generated/data/forge/tags/items/gems/garnet.json new file mode 100644 index 000000000..e73052067 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/garnet.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:garnet_broam", + "cosmere:garnet_mark", + "cosmere:garnet_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/heliodor.json b/src/main/generated/data/forge/tags/items/gems/heliodor.json new file mode 100644 index 000000000..4900c014b --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/heliodor.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:heliodor_broam", + "cosmere:heliodor_mark", + "cosmere:heliodor_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/ruby.json b/src/main/generated/data/forge/tags/items/gems/ruby.json new file mode 100644 index 000000000..9b41a87aa --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/ruby.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:ruby_broam", + "cosmere:ruby_mark", + "cosmere:ruby_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/sapphire.json b/src/main/generated/data/forge/tags/items/gems/sapphire.json new file mode 100644 index 000000000..ef762ffb6 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/sapphire.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:sapphire_broam", + "cosmere:sapphire_mark", + "cosmere:sapphire_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/smokestone.json b/src/main/generated/data/forge/tags/items/gems/smokestone.json new file mode 100644 index 000000000..a2452cc08 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/smokestone.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:smokestone_broam", + "cosmere:smokestone_mark", + "cosmere:smokestone_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/topaz.json b/src/main/generated/data/forge/tags/items/gems/topaz.json new file mode 100644 index 000000000..136201337 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/topaz.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:topaz_broam", + "cosmere:topaz_mark", + "cosmere:topaz_chip" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/zircon.json b/src/main/generated/data/forge/tags/items/gems/zircon.json new file mode 100644 index 000000000..7695c6060 --- /dev/null +++ b/src/main/generated/data/forge/tags/items/gems/zircon.json @@ -0,0 +1,8 @@ +{ + "replace": false, + "values": [ + "cosmere:zircon_broam", + "cosmere:zircon_mark", + "cosmere:zircon_chip" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java index 71ffb24f5..b544049a8 100644 --- a/src/main/java/leaf/cosmere/constants/Roshar.java +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -6,8 +6,8 @@ import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.item.IItemTier; +import net.minecraft.item.Item; import net.minecraft.item.crafting.Ingredient; -import net.minecraft.util.IItemProvider; import java.awt.*; import java.util.Arrays; @@ -69,7 +69,10 @@ public int getID() return id; } - public String getName(){ return name().toLowerCase(Locale.ROOT);} + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } public int getColor() @@ -111,7 +114,10 @@ public int getID() return id; } - public String getName(){ return name().toLowerCase(Locale.ROOT);} + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } public String getAssociatedOrder() @@ -175,9 +181,7 @@ public Color getColor() } } - - - public IItemProvider getPolestoneItem(GemSize size) + public Item getPolestoneItem(GemSize size) { switch (size) { diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 16425488e..30a92f796 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -6,8 +6,10 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.items.MetalIngotItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.data.BlockTagsProvider; @@ -85,6 +87,16 @@ protected void addTags() add(metalType.getMetalRawTag(), metalType.getRawMetalItem()); } } + + for (Roshar.Polestone polestone : Roshar.Polestone.values()) + { + for (Roshar.GemSize size : Roshar.GemSize.values()) + { + final Item polestoneItem = polestone.getPolestoneItem(size); + add(Tags.Items.GEMS, polestoneItem); + add(TagsRegistry.Items.GEM_TAGS.get(polestone), polestoneItem); + } + } } public void add(ITag.INamedTag branch, Item item) diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 1a2bae84a..96ebc2b7c 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -5,6 +5,7 @@ package leaf.cosmere.registry; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.tags.BlockTags; @@ -89,6 +90,14 @@ public static class Items type -> forgeItemTag("storage_blocks/" + type.getName()))); + + public static final Map> GEM_TAGS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("gems/" + type.getName()))); + + private static ITag.INamedTag itemTag(String name) { return ItemTags.bind(prefix(name).toString()); From c3ed986d4658a666e8aa80edb10335631a0ab7a5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 19:53:34 +1200 Subject: [PATCH 0099/1090] Update changelist --- Changelog.md | 7 ++++++- src/main/java/leaf/cosmere/constants/Roshar.java | 1 + src/main/java/leaf/cosmere/items/gems/PolestoneItem.java | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index d85d9222d..bd2a106e6 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,8 +2,13 @@ The Cosmere Project - For 1.16 Minecraft B26 +This build contains breaking changes. Players, metalminds and spikes will not load related powers that were saved to them. Removed accidental character left in village_blacksmith loot table json. -Hemalurgic Tin spikes implemented. +Hemalurgic Tin, Copper, Chromium, Aluminum spikes implemented. +Added Bands Of Mourning creative item. Grants allomancy & feruchemy. +Fixed metal vial amounts. Made nuggets annoying to eat, to encourage vial use. +Prep work for Roshar. +Gem stone item added (not yet available via world gen). Gemstones charge when outside in thunderstorms. Charge faster when not in player inventory. B25 diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java index b544049a8..c8fab56ec 100644 --- a/src/main/java/leaf/cosmere/constants/Roshar.java +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -81,6 +81,7 @@ public int getColor() } } + //https://coppermind.net/wiki/Polestone public enum Polestone implements IItemTier { SAPPHIRE(0), diff --git a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java index 3cfbf3ef6..3a110100f 100644 --- a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java +++ b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java @@ -1,5 +1,7 @@ /* * File created ~ 9 - 4 - 2022 ~ Leaf + * The Gemstones of Roshar + * https://coppermind.net/wiki/Polestone */ package leaf.cosmere.items.gems; From 585a22b5deae04d095f59efc8107c62ddc6adce5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 9 Apr 2022 20:57:49 +1200 Subject: [PATCH 0100/1090] IHasColor interface. Updated ColorHandler. --- .../cosmere/datagen/items/ItemTagsGen.java | 1 - .../leaf/cosmere/handlers/ColorHandler.java | 41 ++++++++----------- .../java/leaf/cosmere/items/IHasColour.java | 13 ++++++ .../leaf/cosmere/items/IHasMetalType.java | 14 ++++++- .../java/leaf/cosmere/items/MetalItem.java | 8 ++++ .../cosmere/items/gems/IHasPolestoneType.java | 15 ++++++- 6 files changed, 66 insertions(+), 26 deletions(-) create mode 100644 src/main/java/leaf/cosmere/items/IHasColour.java diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 30a92f796..2d29a908a 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -9,7 +9,6 @@ import leaf.cosmere.constants.Roshar; import leaf.cosmere.items.MetalIngotItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.data.BlockTagsProvider; diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index 36ea6761b..e65086046 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -8,7 +8,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.constants.Roshar; -import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.items.IHasColour; import leaf.cosmere.items.gems.IHasPolestoneType; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.client.Minecraft; @@ -26,9 +26,9 @@ public static void init() BlockColors blockColors = Minecraft.getInstance().getBlockColors(); ItemColors itemColors = Minecraft.getInstance().getItemColors(); - IItemColor metalColorHandler = + IItemColor cosmereColourHandler = (itemStack, tintIndex) -> tintIndex == 0 - ? ((IHasMetalType) itemStack.getItem()).getMetalType().getColorValue() + ? ((IHasColour) itemStack.getItem()).getColourValue() : -1; IItemColor blockItemColorHandler = @@ -36,62 +36,57 @@ public static void init() ? Minecraft.getInstance().getBlockColors().getColor(((BlockItem) itemStack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex) : -1; - IBlockColor metalBlockColorHandler = + IBlockColor cosmereBlockColorHandler = (blockState, world, pos, tintIndex) -> tintIndex == 0 - ? ((IHasMetalType) blockState.getBlock()).getMetalType().getColorValue() + ? ((IHasColour) blockState.getBlock()).getColourValue() : -1; - itemColors.register(metalColorHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); + itemColors.register(cosmereColourHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); for (Metals.MetalType metalType : Metals.MetalType.values()) { if (metalType.hasOre()) { //blocks in world - blockColors.register(metalBlockColorHandler, metalType.getOreBlock()); + blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); itemColors.register(blockItemColorHandler, metalType.getOreBlock()); - itemColors.register(metalColorHandler, metalType.getRawMetalItem()); + itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); } if (metalType.isAlloy()) { - itemColors.register(metalColorHandler, metalType.getRawMetalItem()); + itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); } if (metalType.hasMaterialItem()) { //ingots - itemColors.register(metalColorHandler, metalType.getNuggetItem()); - itemColors.register(metalColorHandler, metalType.getIngotItem()); + itemColors.register(cosmereColourHandler, metalType.getNuggetItem()); + itemColors.register(cosmereColourHandler, metalType.getIngotItem()); //blocks in inventory itemColors.register(blockItemColorHandler, metalType.getBlock()); //blocks in world - blockColors.register(metalBlockColorHandler, metalType.getBlock()); + blockColors.register(cosmereBlockColorHandler, metalType.getBlock()); } if (metalType.hasFeruchemicalEffect()) { - itemColors.register(metalColorHandler, metalType.getRingItem()); - itemColors.register(metalColorHandler, metalType.getBraceletItem()); - itemColors.register(metalColorHandler, metalType.getNecklaceItem()); + itemColors.register(cosmereColourHandler, metalType.getRingItem()); + itemColors.register(cosmereColourHandler, metalType.getBraceletItem()); + itemColors.register(cosmereColourHandler, metalType.getNecklaceItem()); } if (metalType.hasHemalurgicEffect()) { - itemColors.register(metalColorHandler, metalType.getSpikeItem()); + itemColors.register(cosmereColourHandler, metalType.getSpikeItem()); } } - IItemColor gemColorHandler = - (itemStack, tintIndex) -> tintIndex == 0 - ? ((IHasPolestoneType) itemStack.getItem()).getPolestoneType().getColorValue() - : -1; - for (Roshar.Polestone polestone : Roshar.Polestone.values()) { - //blockColors.register(metalBlockColorHandler, metalType.getOreBlock()); + //blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); for (Roshar.GemSize size : Roshar.GemSize.values()) { - itemColors.register(gemColorHandler, polestone.getPolestoneItem(size)); + itemColors.register(cosmereColourHandler, polestone.getPolestoneItem(size)); } } } diff --git a/src/main/java/leaf/cosmere/items/IHasColour.java b/src/main/java/leaf/cosmere/items/IHasColour.java new file mode 100644 index 000000000..2caa76033 --- /dev/null +++ b/src/main/java/leaf/cosmere/items/IHasColour.java @@ -0,0 +1,13 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.items; + +import java.awt.*; + +public interface IHasColour +{ + Color getColour(); + int getColourValue(); +} diff --git a/src/main/java/leaf/cosmere/items/IHasMetalType.java b/src/main/java/leaf/cosmere/items/IHasMetalType.java index 837d0ea99..5d88c1ca7 100644 --- a/src/main/java/leaf/cosmere/items/IHasMetalType.java +++ b/src/main/java/leaf/cosmere/items/IHasMetalType.java @@ -6,7 +6,19 @@ import leaf.cosmere.constants.Metals; -public interface IHasMetalType +import java.awt.*; + +public interface IHasMetalType extends IHasColour { Metals.MetalType getMetalType(); + + default Color getColour() + { + return getMetalType().getColor(); + } + + default int getColourValue() + { + return getColour().getRGB(); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalItem.java b/src/main/java/leaf/cosmere/items/MetalItem.java index 9791b4aab..2e1ef8072 100644 --- a/src/main/java/leaf/cosmere/items/MetalItem.java +++ b/src/main/java/leaf/cosmere/items/MetalItem.java @@ -13,6 +13,8 @@ import net.minecraft.util.ActionResultType; import net.minecraft.util.Hand; +import java.awt.*; + public class MetalItem extends BaseItem implements IHasMetalType { private final Metals.MetalType metalType; @@ -25,6 +27,12 @@ public MetalItem(Metals.MetalType metalType) } + @Override + public Color getColour() + { + return metalType.getColor(); + } + /** * Returns true if the item can be used on the given entity, e.g. shears on sheep. */ diff --git a/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java index a55bbffdc..e3131bec0 100644 --- a/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java +++ b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java @@ -5,8 +5,21 @@ package leaf.cosmere.items.gems; import leaf.cosmere.constants.Roshar; +import leaf.cosmere.items.IHasColour; -public interface IHasPolestoneType +import java.awt.*; + +public interface IHasPolestoneType extends IHasColour { Roshar.Polestone getPolestoneType(); + + default Color getColour() + { + return getPolestoneType().getColor(); + } + + default int getColourValue() + { + return getColour().getRGB(); + } } From a66ef2043fbb73ed9651a34abe2b601d4a80996a Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 11 Apr 2022 18:57:23 +1200 Subject: [PATCH 0101/1090] texture prep --- src/main/generated/.cache/cache | 16 ++++++++-------- .../cosmere/models/item/bendalloy_blend.json | 2 +- .../assets/cosmere/models/item/brass_blend.json | 2 +- .../cosmere/models/item/bronze_blend.json | 2 +- .../cosmere/models/item/duralumin_blend.json | 2 +- .../cosmere/models/item/electrum_blend.json | 2 +- .../cosmere/models/item/nicrosil_blend.json | 2 +- .../cosmere/models/item/pewter_blend.json | 2 +- .../assets/cosmere/models/item/steel_blend.json | 2 +- .../cosmere/datagen/items/ItemModelsGen.java | 8 ++------ .../java/leaf/cosmere/items/MetalmindItem.java | 8 ++++++++ .../items/curio/HemalurgicSpikeItem.java | 10 ---------- .../manifestation/allomancy/AllomancyBase.java | 1 + .../cosmere/textures/item/metal_blend.png | Bin 0 -> 3829 bytes 14 files changed, 27 insertions(+), 32 deletions(-) create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_blend.png diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index d90d706c2..abc568851 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -55,7 +55,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/atium_bracel b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/atium_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/atium_spike.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bands_of_mourning.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/bendalloy_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bendalloy_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bendalloy_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bendalloy_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/bendalloy_ingot.json @@ -63,7 +63,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bendalloy_br 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/bendalloy_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/bendalloy_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/bendalloy_spike.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/brass_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/brass_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/brass_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/brass_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/brass_ingot.json @@ -71,7 +71,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/brass_bracel 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/brass_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/brass_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/brass_spike.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/bronze_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bronze_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bronze_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bronze_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/bronze_ingot.json @@ -106,7 +106,7 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/copper_spike 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/diamond_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/diamond_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/diamond_mark.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/duralumin_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/duralumin_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/duralumin_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/duralumin_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/duralumin_ingot.json @@ -114,7 +114,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/duralumin_br 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/duralumin_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/duralumin_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/duralumin_spike.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/electrum_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/electrum_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/electrum_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/electrum_ingot.json @@ -164,7 +164,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nickel_block 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nickel_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nickel_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/nickel_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/nicrosil_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/nicrosil_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nicrosil_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nicrosil_ingot.json @@ -172,7 +172,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bra 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nicrosil_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/nicrosil_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/nicrosil_spike.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/pewter_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/pewter_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/pewter_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/pewter_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/pewter_ingot.json @@ -202,7 +202,7 @@ b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/silver_ore.j 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/smokestone_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/smokestone_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/smokestone_mark.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/steel_blend.json +564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/steel_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/steel_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/steel_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/steel_ingot.json diff --git a/src/main/generated/assets/cosmere/models/item/bendalloy_blend.json b/src/main/generated/assets/cosmere/models/item/bendalloy_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/bendalloy_blend.json +++ b/src/main/generated/assets/cosmere/models/item/bendalloy_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/brass_blend.json b/src/main/generated/assets/cosmere/models/item/brass_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/brass_blend.json +++ b/src/main/generated/assets/cosmere/models/item/brass_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/bronze_blend.json b/src/main/generated/assets/cosmere/models/item/bronze_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/bronze_blend.json +++ b/src/main/generated/assets/cosmere/models/item/bronze_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/duralumin_blend.json b/src/main/generated/assets/cosmere/models/item/duralumin_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/duralumin_blend.json +++ b/src/main/generated/assets/cosmere/models/item/duralumin_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/electrum_blend.json b/src/main/generated/assets/cosmere/models/item/electrum_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/electrum_blend.json +++ b/src/main/generated/assets/cosmere/models/item/electrum_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/nicrosil_blend.json b/src/main/generated/assets/cosmere/models/item/nicrosil_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/nicrosil_blend.json +++ b/src/main/generated/assets/cosmere/models/item/nicrosil_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/pewter_blend.json b/src/main/generated/assets/cosmere/models/item/pewter_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/pewter_blend.json +++ b/src/main/generated/assets/cosmere/models/item/pewter_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/steel_blend.json b/src/main/generated/assets/cosmere/models/item/steel_blend.json index cc5a03884..745ba787d 100644 --- a/src/main/generated/assets/cosmere/models/item/steel_blend.json +++ b/src/main/generated/assets/cosmere/models/item/steel_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/metal_blend" } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index df61b68c8..bab761840 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -85,12 +85,8 @@ else if (item instanceof ShardbladeItem) } else if (item instanceof MetalRawOreItem) { - //todo split between raw ore and alloy blend - //MetalRawOreItem rawItem = (MetalRawOreItem)item; - //if (rawItem.getMetalType().isAlloy()) - // simpleItem(path, "metal_blend"); - //else - simpleItem(path, "metal_raw"); + MetalRawOreItem rawItem = (MetalRawOreItem)item; + simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); continue; } else if (item instanceof PolestoneItem) diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 1b665fbd2..82bdf9cbe 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -21,6 +21,7 @@ import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; +import java.awt.*; import java.util.UUID; public class MetalmindItem extends ChargeableItemBase implements IHasMetalType, ICurioItem @@ -39,6 +40,13 @@ public Metals.MetalType getMetalType() return this.metalType; } + + @Override + public boolean showAttributesTooltip(String identifier, ItemStack stack) + { + return false; + } + /** * generate new map of attributes for when used as a curio item. */ diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index c37d7760f..7a91db252 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -11,14 +11,11 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.renderer.wearables.SpikeModel; -import leaf.cosmere.compat.curios.CosmereCurios; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; -import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.client.renderer.IRenderTypeBuffer; import net.minecraft.client.renderer.ItemRenderer; @@ -36,7 +33,6 @@ import net.minecraft.inventory.EquipmentSlotType; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.DamageSource; import net.minecraft.util.NonNullList; import net.minecraft.util.ResourceLocation; @@ -355,12 +351,6 @@ public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stac } - @Override - public boolean showAttributesTooltip(String identifier, ItemStack stack) - { - return false; - } - @Override public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 807b47cab..a471fdf2e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -116,6 +116,7 @@ public void tick(ISpiritweb data) //feruchemy power exists and is active if (feruchemyMode != 0 && isActiveTick) { + //todo config variable int secondsOfFeruchemyToAdd = 5; if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) { diff --git a/src/main/resources/assets/cosmere/textures/item/metal_blend.png b/src/main/resources/assets/cosmere/textures/item/metal_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..72ea90905dde11c926b5e5cc87db1283e899f431 GIT binary patch literal 3829 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 literal 0 HcmV?d00001 From 33aef8b853b5a4d5ef1af65b02e40028daf9cbf2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 5 May 2022 10:04:48 +1200 Subject: [PATCH 0102/1090] Fixing crash in spike "canEquip" function that occurs when finding curios that are not spikes. --- .../cosmere/items/curio/HemalurgicSpikeItem.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 7a91db252..1b2b9386c 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -57,6 +57,10 @@ import java.util.UUID; import java.util.function.Predicate; +//Other ideas? +//Spike Guns? +//https://wob.coppermind.net/events/390-stuttgart-signing/#e12677 + @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class HemalurgicSpikeItem extends MetalmindItem implements IHemalurgicInfo { @@ -313,10 +317,15 @@ public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack Predicate spikePredicate = stackToFind -> { final boolean isSpike = stackToFind.getItem() instanceof HemalurgicSpikeItem; + + if (!isSpike) + { + return false; + } + final HemalurgicSpikeItem hemalurgicSpikeItem = (HemalurgicSpikeItem) stackToFind.getItem(); final UUID foundSpikeUUID = getHemalurgicIdentity(stackToFind); - return isSpike - && hemalurgicSpikeItem.getMetalType() == getMetalType() + return hemalurgicSpikeItem.getMetalType() == getMetalType() && foundSpikeUUID != null && foundSpikeUUID.compareTo(stackWeWantToEquipUUID) == 0; }; From 9dc7f4f349eb4c43ea239af9c4654d439594e000 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 7 May 2022 10:39:15 +1200 Subject: [PATCH 0103/1090] Update EffectInstanceMixin.java --- .../java/leaf/cosmere/mixin/EffectInstanceMixin.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index ddb432ff0..b43552e3a 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -27,6 +27,17 @@ private void getIsFeruchemyEffect(CallbackInfoReturnable cir) cir.setReturnValue(true); } } + @Inject(at = @At("RETURN"), + method = "showIcon", + cancellable = true + ) + private void getShowIcon(CallbackInfoReturnable cir) + { + if (getEffect() instanceof FeruchemyEffectBase) + { + cir.setReturnValue(false); + } + } @Shadow From 2960bf191f260bbc372eb3539fc0afa59b07e2b8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 7 May 2022 22:06:46 +1200 Subject: [PATCH 0104/1090] 1.18.2 compiles - Some stuff disabled Disabled features: GUI, Flamespren, metalmind/spike rendering --- build.gradle | 69 +- gradle.properties | 20 +- gradle/wrapper/gradle-wrapper.jar | Bin 59203 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 282 ++- src/main/java/leaf/cosmere/Cosmere.java | 139 +- .../java/leaf/cosmere/blocks/BaseBlock.java | 22 +- .../java/leaf/cosmere/blocks/MetalBlock.java | 24 +- .../leaf/cosmere/blocks/MetalOreBlock.java | 24 +- .../blocks/MetalworkingTableBlock.java | 10 +- .../java/leaf/cosmere/blocks/TileBlock.java | 10 +- .../java/leaf/cosmere/cap/Capabilities.java | 15 - .../leaf/cosmere/cap/entity/ISpiritweb.java | 119 +- .../cap/entity/SpiritwebCapability.java | 1254 +++++----- .../java/leaf/cosmere/charge/IChargeable.java | 266 +-- .../leaf/cosmere/charge/ItemChargeHelper.java | 718 +++--- .../cosmere/charge/MetalmindChargeHelper.java | 114 +- .../leaf/cosmere/client/ClientEvents.java | 289 ++- .../leaf/cosmere/client/ClientHelper.java | 40 +- .../java/leaf/cosmere/client/ClientSetup.java | 269 +-- .../leaf/cosmere/client/TextureUtils.java | 44 +- .../leaf/cosmere/client/gui/ButtonAction.java | 8 +- .../leaf/cosmere/client/gui/DrawUtils.java | 74 +- .../cosmere/client/gui/SpiritwebMenu.java | 1272 +++++----- .../renderer/entity/SprenFlameRenderer.java | 40 - .../entity/model/SprenFlameModel.java | 141 -- .../renderer/wearables/BraceletModel.java | 56 - .../client/renderer/wearables/CurioModel.java | 81 - .../client/renderer/wearables/SpikeModel.java | 105 - .../client/settings/KeyConflictContext.java | 22 +- .../leaf/cosmere/commands/CosmereCommand.java | 18 +- .../arguments/ManifestationsArgumentType.java | 60 +- .../commands/permissions/PermissionEnum.java | 42 - .../permissions/PermissionManager.java | 18 - .../subcommands/ManifestationCommand.java | 314 +-- .../commands/subcommands/ModCommand.java | 26 +- .../commands/subcommands/TestCommand.java | 58 +- .../cosmere/compat/curios/CosmereCurios.java | 51 +- .../cosmere/compat/curios/CuriosCompat.java | 88 +- .../leaf/cosmere/compat/curios/TestCurio.java | 32 - .../cosmere/compat/hwyla/HwylaCompat.java | 17 +- .../compat/hwyla/SpiritWebTooltip.java | 78 +- .../leaf/cosmere/compat/jei/JEICompat.java | 85 +- .../compat/patchouli/PatchouliCompat.java | 27 +- .../leaf/cosmere/config/ClientConfig.java | 24 - .../leaf/cosmere/config/CommonConfig.java | 50 - src/main/java/leaf/cosmere/config/Config.java | 94 - .../leaf/cosmere/config/CosmereConfig.java | 55 + .../leaf/cosmere/constants/Constants.java | 181 +- .../cosmere/constants/Manifestations.java | 218 +- .../java/leaf/cosmere/constants/Metals.java | 2063 +++++++++-------- .../java/leaf/cosmere/constants/Roshar.java | 8 +- .../java/leaf/cosmere/datagen/DataGen.java | 40 +- .../java/leaf/cosmere/datagen/RecipeGen.java | 412 ++-- .../datagen/advancements/AdvancementGen.java | 119 +- .../advancements/AllomancyAdvancements.java | 97 +- .../advancements/CoreAdvancements.java | 90 +- .../advancements/FeruchemyAdvancements.java | 97 +- .../advancements/HemalurgyAdvancements.java | 48 +- .../datagen/blocks/BlockModelsGen.java | 126 +- .../cosmere/datagen/blocks/BlockTagsGen.java | 78 +- .../cosmere/datagen/items/ItemModelsGen.java | 184 +- .../cosmere/datagen/items/ItemTagsGen.java | 174 +- .../cosmere/datagen/language/EngLangGen.java | 482 ++-- .../datagen/loottables/BlockLootTableGen.java | 55 +- .../datagen/loottables/LootTableGen.java | 42 +- .../cosmere/datagen/patchouli/BookStuff.java | 956 ++++---- .../datagen/patchouli/PatchouliGen.java | 319 ++- .../categories/PatchouliAllomancy.java | 137 +- .../patchouli/categories/PatchouliBasics.java | 18 +- .../categories/PatchouliFeruchemy.java | 65 +- .../categories/PatchouliHemalurgy.java | 73 +- .../allomancy/AllomancyBoostEffect.java | 120 +- .../allomancy/AllomancyEffectBase.java | 70 +- .../feruchemy/FeruchemyEffectBase.java | 70 +- .../feruchemy/store/BendalloyStoreEffect.java | 66 +- .../feruchemy/store/BrassStoreEffect.java | 34 +- .../feruchemy/store/CadmiumStoreEffect.java | 42 +- .../feruchemy/store/ChromiumStoreEffect.java | 92 +- .../feruchemy/store/DuraluminStoreEffect.java | 92 +- .../feruchemy/store/GoldStoreEffect.java | 25 +- .../feruchemy/store/IronStoreEffect.java | 50 +- .../feruchemy/store/PewterStoreEffect.java | 34 +- .../feruchemy/store/SteelStoreEffect.java | 34 +- .../feruchemy/tap/BendalloyTapEffect.java | 68 +- .../effects/feruchemy/tap/BrassTapEffect.java | 94 +- .../feruchemy/tap/CadmiumTapEffect.java | 32 +- .../feruchemy/tap/ChromiumTapEffect.java | 85 +- .../feruchemy/tap/DuraluminTapEffect.java | 34 +- .../effects/feruchemy/tap/GoldTapEffect.java | 56 +- .../effects/feruchemy/tap/IronTapEffect.java | 50 +- .../feruchemy/tap/PewterTapEffect.java | 34 +- .../effects/feruchemy/tap/SteelTapEffect.java | 92 +- .../cosmere/entities/spren/ASprenEntity.java | 103 - .../entities/spren/SprenFlameEntity.java | 660 ------ .../leaf/cosmere/handlers/ColorHandler.java | 131 +- .../leaf/cosmere/handlers/CommonEvents.java | 384 ++- .../cosmere/handlers/EntityEventHandler.java | 405 ++-- .../leaf/cosmere/handlers/ModBusEvents.java | 6 +- .../cosmere/handlers/PlayerEventHandler.java | 60 +- .../cosmere/itemgroups/CosmereItemGroups.java | 74 +- .../java/leaf/cosmere/items/BaseItem.java | 23 +- .../java/leaf/cosmere/items/CapWrapper.java | 132 +- .../cosmere/items/ChargeableItemBase.java | 144 +- src/main/java/leaf/cosmere/items/GemItem.java | 10 +- .../java/leaf/cosmere/items/GuideItem.java | 182 +- .../leaf/cosmere/items/IContainsMetal.java | 10 +- .../java/leaf/cosmere/items/IHasColour.java | 5 +- .../leaf/cosmere/items/IHasMetalType.java | 18 +- .../leaf/cosmere/items/MetalFileItem.java | 8 +- .../leaf/cosmere/items/MetalIngotItem.java | 8 +- .../java/leaf/cosmere/items/MetalItem.java | 68 +- .../leaf/cosmere/items/MetalNuggetItem.java | 22 +- .../leaf/cosmere/items/MetalRawOreItem.java | 8 +- .../leaf/cosmere/items/MetalShavingsItem.java | 8 +- .../leaf/cosmere/items/MetalVialItem.java | 432 ++-- .../leaf/cosmere/items/MetalmindItem.java | 129 +- .../leaf/cosmere/items/ShardbladeItem.java | 24 +- .../items/curio/BandsOfMourningItem.java | 96 +- .../items/curio/BraceletMetalmindItem.java | 157 +- .../items/curio/HemalurgicSpikeItem.java | 799 ++++--- .../cosmere/items/curio/IHemalurgicInfo.java | 748 +++--- .../items/curio/NecklaceMetalmindItem.java | 18 +- .../items/curio/RingMetalmindItem.java | 18 +- .../cosmere/items/gems/IHasPolestoneType.java | 18 +- .../cosmere/items/gems/PolestoneItem.java | 20 +- .../cosmere/loot/FortuneBonusModifier.java | 194 +- .../loot/InvestMetalmindLootFunction.java | 99 +- .../cosmere/loot/InvestSpikeLootFunction.java | 242 +- .../java/leaf/cosmere/loot/LootHandler.java | 99 +- .../loot/RandomiseMetalTypeLootFunction.java | 264 +-- .../cosmere/manifestation/AManifestation.java | 60 +- .../manifestation/ManifestationBase.java | 136 +- .../allomancy/AllomancyAluminum.java | 48 +- .../allomancy/AllomancyBase.java | 296 +-- .../allomancy/AllomancyBendalloy.java | 60 +- .../allomancy/AllomancyBrass.java | 84 +- .../allomancy/AllomancyBronze.java | 174 +- .../allomancy/AllomancyCadmium.java | 104 +- .../allomancy/AllomancyChromium.java | 180 +- .../allomancy/AllomancyCopper.java | 56 +- .../allomancy/AllomancyDuralumin.java | 48 +- .../allomancy/AllomancyElectrum.java | 26 +- .../allomancy/AllomancyGold.java | 26 +- .../allomancy/AllomancyIronSteel.java | 493 ++-- .../allomancy/AllomancyNicrosil.java | 110 +- .../allomancy/AllomancyPewter.java | 56 +- .../manifestation/allomancy/AllomancyTin.java | 76 +- .../allomancy/AllomancyZinc.java | 88 +- .../feruchemy/FeruchemyAluminum.java | 28 +- .../feruchemy/FeruchemyBase.java | 250 +- .../feruchemy/FeruchemyBronze.java | 355 ++- .../feruchemy/FeruchemyCopper.java | 228 +- .../feruchemy/FeruchemyElectrum.java | 46 +- .../feruchemy/FeruchemyNicrosil.java | 134 +- .../surgebinding/SurgeAbrasion.java | 12 +- .../surgebinding/SurgeAdhesion.java | 17 +- .../surgebinding/SurgeCohesion.java | 14 +- .../surgebinding/SurgeDivision.java | 10 +- .../surgebinding/SurgeGravitation.java | 63 +- .../surgebinding/SurgeIllumination.java | 12 +- .../surgebinding/SurgeProgression.java | 12 +- .../surgebinding/SurgeTension.java | 14 +- .../surgebinding/SurgeTransformation.java | 12 +- .../surgebinding/SurgeTransportation.java | 12 +- .../surgebinding/SurgebindingBase.java | 10 +- .../cosmere/mixin/EffectInstanceMixin.java | 60 +- .../java/leaf/cosmere/mixin/EntityMixin.java | 138 +- .../leaf/cosmere/mixin/GameRendererMixin.java | 78 +- .../leaf/cosmere/mixin/LightTextureMixin.java | 12 +- .../java/leaf/cosmere/network/Network.java | 127 +- .../ChangeManifestationModeMessage.java | 104 +- .../ChangeSelectedManifestationMessage.java | 84 +- .../DeactivateAllManifestationsMessage.java | 56 +- ...eactivateCurrentManifestationsMessage.java | 56 +- .../SetSelectedManifestationMessage.java | 70 +- .../packets/SyncPlayerSpiritwebMessage.java | 76 +- .../network/packets/SyncPushPullMessage.java | 103 +- .../leaf/cosmere/properties/PropTypes.java | 53 +- .../cosmere/recipes/VialMixingRecipe.java | 242 +- .../registry/AdvancementTriggerRegistry.java | 10 +- .../cosmere/registry/AttributesRegistry.java | 10 +- .../leaf/cosmere/registry/BlocksRegistry.java | 74 +- .../registry/DataSerializersRegistry.java | 58 +- .../cosmere/registry/EffectsRegistry.java | 175 +- .../leaf/cosmere/registry/EntityRegistry.java | 20 +- .../cosmere/registry/FeatureRegistry.java | 160 +- .../leaf/cosmere/registry/ItemsRegistry.java | 262 +-- .../cosmere/registry/KeybindingRegistry.java | 54 +- .../registry/LootFunctionRegistry.java | 35 +- .../registry/LootModifierRegistry.java | 11 +- .../registry/ManifestationRegistry.java | 345 +-- .../registry/PointOfInterestRegistry.java | 26 +- .../leaf/cosmere/registry/RecipeRegistry.java | 27 +- .../cosmere/registry/ResourceKeyRegistry.java | 18 + .../leaf/cosmere/registry/TagsRegistry.java | 243 +- .../registry/VillagerProfessionRegistry.java | 42 +- .../cosmere/utils/helpers/CodecHelper.java | 4 +- .../cosmere/utils/helpers/CommandHelper.java | 32 +- .../utils/helpers/CompoundNBTHelper.java | 462 ++-- .../cosmere/utils/helpers/EffectsHelper.java | 26 +- .../cosmere/utils/helpers/EntityHelper.java | 190 +- .../leaf/cosmere/utils/helpers/LogHelper.java | 78 +- .../cosmere/utils/helpers/MathHelper.java | 78 +- .../cosmere/utils/helpers/PlayerHelper.java | 11 +- .../utils/helpers/ResourceLocationHelper.java | 10 +- .../cosmere/utils/helpers/StackNBTHelper.java | 500 ++-- .../cosmere/utils/helpers/StringHelper.java | 12 +- .../cosmere/utils/helpers/TextHelper.java | 96 +- .../cosmere/utils/helpers/VectorHelper.java | 190 +- .../leaf/cosmere/utils/helpers/XPHelper.java | 84 +- .../java/leaf/cosmere/utils/math/Vector2.java | 94 +- .../resources/META-INF/accesstransformer.cfg | 18 +- src/main/resources/META-INF/mods.toml | 10 +- 214 files changed, 13243 insertions(+), 14679 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/cap/Capabilities.java delete mode 100644 src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java delete mode 100644 src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java delete mode 100644 src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java delete mode 100644 src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java delete mode 100644 src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java delete mode 100644 src/main/java/leaf/cosmere/commands/permissions/PermissionEnum.java delete mode 100644 src/main/java/leaf/cosmere/commands/permissions/PermissionManager.java delete mode 100644 src/main/java/leaf/cosmere/compat/curios/TestCurio.java delete mode 100644 src/main/java/leaf/cosmere/config/ClientConfig.java delete mode 100644 src/main/java/leaf/cosmere/config/CommonConfig.java delete mode 100644 src/main/java/leaf/cosmere/config/Config.java create mode 100644 src/main/java/leaf/cosmere/config/CosmereConfig.java delete mode 100644 src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java delete mode 100644 src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java create mode 100644 src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java diff --git a/build.gradle b/build.gradle index c407c6290..d6fe8b83e 100644 --- a/build.gradle +++ b/build.gradle @@ -18,7 +18,6 @@ apply plugin: 'org.parchmentmc.librarian.forgegradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' - ext.configFile = file('gradle.properties') ext.config = parseConfig(configFile) @@ -26,8 +25,7 @@ version = "${forge_version}-b${build_number}" group = 'leaf.cosmere' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "${project.jar_name}" -java.toolchain.languageVersion = JavaLanguageVersion.of(8) // Mojang ships Java 8 to end users, so your mod should target Java 8. -println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch')) +java.toolchain.languageVersion = JavaLanguageVersion.of(17) // Mojang ships Java 8 to end users, so your mod should target Java 8. // Include resources generated by data generators. sourceSets { @@ -35,24 +33,9 @@ sourceSets { } minecraft { - // The mappings can be changed at any time, and must be in the following format. - // Channel: Version: - // snapshot YYYYMMDD Snapshot are built nightly. - // stable # Stables are built at the discretion of the MCP team. - // official MCVersion Official field/method names from Mojang mapping files - // - // You must be aware of the Mojang license when using the 'official' mappings. - // See more information here: https://github.com/MinecraftForge/MCPConfig/blob/master/Mojang.md - // - // Use non-default mappings at your own risk. they may not always work. - // Simply re-run your setup task after changing the mappings to update your workspace. - mappings channel: 'parchment', version: '2022.03.06-1.16.5' - // makeObfSourceJar = false // an Srg named sources jar is made by default. uncomment this to disable. - - // accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') - - // Default run configurations. - // These can be tweaked, removed, or duplicated as needed. + mappings channel: 'official', version: "${minecraft_version}" + accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') + runs { client { property 'mixin.env.remapRefMap', 'true' @@ -61,16 +44,7 @@ minecraft { workingDirectory project.file('run') arg "-mixin.config=cosmere.mixins.json" - // Recommended logging data for a userdev environment - // The markers can be changed as needed. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { @@ -84,16 +58,7 @@ minecraft { properties 'mixin.env.disableRefMap': 'true' workingDirectory project.file('run') - // Recommended logging data for a userdev environment - // The markers can be changed as needed. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' mods { @@ -107,16 +72,7 @@ minecraft { properties 'mixin.env.disableRefMap': 'true' workingDirectory project.file('run') - // Recommended logging data for a userdev environment - // The markers can be changed as needed. - // "SCAN": For mods scan. - // "REGISTRIES": For firing of registry events. - // "REGISTRYDUMP": For getting the contents of all registries. property 'forge.logging.markers', 'REGISTRIES' - - // Recommended logging level for the console - // You can set various levels here. - // Please read: https://stackoverflow.com/questions/2031163/when-to-use-the-different-log-levels property 'forge.logging.console.level', 'debug' // Specify the modid for data generation, where to output the resulting resource, and where to look for existing resources. @@ -130,7 +86,6 @@ minecraft { } } - accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') } mixin { @@ -150,10 +105,6 @@ repositories { //curio url = "https://maven.theillusivec4.top/" } - maven { - //HWYLA - url "https://maven.tehnut.info" - } maven { //Mekanism Maven url 'https://modmaven.dev/' @@ -168,15 +119,12 @@ repositories { } dependencies { - // Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed - // that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied. - // The userdev artifact is a special name and will get all sorts of transformations applied to it. minecraft "net.minecraftforge:forge:${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - compileOnly fg.deobf("mezz.jei:jei-${jei_version}:api") - runtimeOnly fg.deobf("mezz.jei:jei-${jei_version}") + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api") + runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") @@ -184,11 +132,8 @@ dependencies { compileOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}:api") runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}") - compileOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}:api") - runtimeOnly fg.deobf("mcp.mobius.waila:Hwyla:${hwyla_version}") + implementation fg.deobf("curse.maven:jade-324717:${jade_id}") - //runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}")// core - //runtimeOnly fg.deobf("mekanism:Mekanism:${mekanism_version}:generators")// Mekanism: Generators //modname-modid:fileid? //runtimeOnly fg.deobf("curse.maven:appleskin-248787:3035787") diff --git a/gradle.properties b/gradle.properties index 3a364743a..cf5d5d9d8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,13 +1,15 @@ +org.gradle.daemon=false +org.gradle.jvmargs=-Xmx8G + # #Tue Feb 01 08:46:10 NZDT 2022 -forge_version=1.16.5-36.2.20 -org.gradle.daemon=false +minecraft_version=1.18.2 +forge_version=1.18.2-40.1.0 + jar_name=Cosmere-Mod -jei_version=1.16.4\:7.6.0.62 -hwyla_version=1.10.11-B78_1.16.2 -org.gradle.jvmargs=-Xmx8G -curios_version=1.16.5-4.0.6.8 build_number=26 -patchouli_version=1.16.4-51 -mekanism_version=1.16.5-10.1.2.457 -configured_version=3546348 \ No newline at end of file + +jei_version=9.7.0.194 +curios_version=1.18.2-5.0.7.0 +patchouli_version=1.18.2-67 +jade_id=3761542 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..7454180f2ae8848c63b8b4dea2cb829da983f2fa 100644 GIT binary patch delta 18435 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 B8dv}T delta 17845 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 X49Luk)baa85H9$5YCsTPT`SVRWMtMW diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 05679dc3c..41dfb8790 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.1.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index cccdd3d51..c53aefaa5 100644 --- a/gradlew +++ b/gradlew @@ -1,78 +1,129 @@ -#!/usr/bin/env sh +#!/bin/sh + +# +# Copyright © 2015-2021 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS="" +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -81,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -89,84 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=$((i+1)) + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=$(save "$@") - -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" - -# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong -if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then - cd "$(dirname "$0")" -fi +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 8b589eb77..bebc46664 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -5,17 +5,16 @@ package leaf.cosmere; import leaf.cosmere.cap.entity.ISpiritweb; -import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientSetup; import leaf.cosmere.compat.curios.CuriosCompat; import leaf.cosmere.compat.patchouli.PatchouliCompat; import leaf.cosmere.handlers.ColorHandler; -import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.network.Network; import leaf.cosmere.registry.*; +import leaf.cosmere.utils.helpers.LogHelper; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; @@ -26,69 +25,73 @@ @Mod(Cosmere.MODID) public class Cosmere { - public static final String MODID = "cosmere"; - - public Cosmere() - { - LogHelper.info("Registering Cosmere related mcgubbins!"); - IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); - - modBus.addListener(this::commonSetup); - modBus.addListener(this::loadComplete); - - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::init)); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::registerIconTextures)); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::retrieveRegisteredIconSprites)); - - - MinecraftForge.EVENT_BUS.register(this); - - //Register our deferred registries - BlocksRegistry.BLOCKS.register(modBus); - ItemsRegistry.ITEMS.register(modBus); - EffectsRegistry.EFFECTS.register(modBus); - LootModifierRegistry.LOOT_MODIFIERS.register(modBus); - ManifestationRegistry.MANIFESTATIONS.register(modBus); - AttributesRegistry.ATTRIBUTES.register(modBus); - EntityRegistry.ENTITIES.register(modBus); - PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); - VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); - - FeatureRegistry.FEATURES.register(modBus); - RecipeRegistry.SPECIAL_RECIPES.register(modBus); - - AdvancementTriggerRegistry.init(); - - Network.init(); - - // init cross mod compatibility stuff, if relevant - CuriosCompat.init(); - PatchouliCompat.init(); - } - - private void commonSetup(FMLCommonSetupEvent event) - { - event.enqueueWork(() -> - { - FeatureRegistry.registerConfiguredFeatures(); - EntityRegistry.PrepareEntityAttributes(); - LootFunctionRegistry.Register(); - }); - - //Entity Caps - CapabilityManager.INSTANCE.register(ISpiritweb.class, new ISpiritweb.Storage(), () -> new SpiritwebCapability(null)); - - DataSerializersRegistry.register(); - - LogHelper.info("Common setup complete!"); - } - - private void loadComplete(FMLLoadCompleteEvent event) - { - event.enqueueWork(() -> - { - ColorHandler.init(); - - }); - } + public static final String MODID = "cosmere"; + + public Cosmere() + { + LogHelper.info("Registering Cosmere related mcgubbins!"); + IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); + + modBus.addListener(this::commonSetup); + modBus.addListener(this::loadComplete); + modBus.addListener(this::onAddCaps); + + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::init)); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::registerIconTextures)); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::retrieveRegisteredIconSprites)); + + + MinecraftForge.EVENT_BUS.register(this); + + //Register our deferred registries + BlocksRegistry.BLOCKS.register(modBus); + ItemsRegistry.ITEMS.register(modBus); + EffectsRegistry.EFFECTS.register(modBus); + LootModifierRegistry.LOOT_MODIFIERS.register(modBus); + ManifestationRegistry.MANIFESTATIONS.register(modBus); + AttributesRegistry.ATTRIBUTES.register(modBus); + EntityRegistry.ENTITIES.register(modBus); + PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); + VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); + + FeatureRegistry.FEATURES.register(modBus); + RecipeRegistry.SPECIAL_RECIPES.register(modBus); + + AdvancementTriggerRegistry.init(); + + Network.init(); + + // init cross mod compatibility stuff, if relevant + CuriosCompat.init(); + PatchouliCompat.init(); + } + + private void commonSetup(FMLCommonSetupEvent event) + { + event.enqueueWork(() -> + { + FeatureRegistry.ConfiguredFeatures.registerConfiguredFeatures(); + FeatureRegistry.PlacedFeatures.registerPlacedFeatures(); + EntityRegistry.PrepareEntityAttributes(); + LootFunctionRegistry.Register(); + }); + + DataSerializersRegistry.register(); + + LogHelper.info("Common setup complete!"); + } + + private void onAddCaps(RegisterCapabilitiesEvent capabilitiesEvent) + { + capabilitiesEvent.register(ISpiritweb.class); + } + + private void loadComplete(FMLLoadCompleteEvent event) + { + event.enqueueWork(() -> + { + ColorHandler.init(); + + }); + } } diff --git a/src/main/java/leaf/cosmere/blocks/BaseBlock.java b/src/main/java/leaf/cosmere/blocks/BaseBlock.java index b47eee710..14a07eb64 100644 --- a/src/main/java/leaf/cosmere/blocks/BaseBlock.java +++ b/src/main/java/leaf/cosmere/blocks/BaseBlock.java @@ -4,22 +4,20 @@ package leaf.cosmere.blocks; -import net.minecraft.block.Block; -import net.minecraft.block.SoundType; - -import net.minecraft.block.AbstractBlock.Properties; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; public class BaseBlock extends Block { - public BaseBlock(Properties properties, SoundType sound, float hardness, float resistance) - { - super(properties.sound(sound).strength(hardness, resistance)); - } + public BaseBlock(Properties properties, SoundType sound, float hardness, float resistance) + { + super(properties.sound(sound).strength(hardness, resistance)); + } - public BaseBlock(Properties properties) - { - super(properties); + public BaseBlock(Properties properties) + { + super(properties); - } + } } diff --git a/src/main/java/leaf/cosmere/blocks/MetalBlock.java b/src/main/java/leaf/cosmere/blocks/MetalBlock.java index 05080bd81..a0026fce3 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalBlock.java @@ -7,21 +7,21 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.properties.PropTypes; -import net.minecraft.block.SoundType; +import net.minecraft.world.level.block.SoundType; public class MetalBlock extends BaseBlock implements IHasMetalType { - private final Metals.MetalType metalType; + private final Metals.MetalType metalType; - public MetalBlock(Metals.MetalType metalType) - { - super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); - this.metalType = metalType; - } + public MetalBlock(Metals.MetalType metalType) + { + super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); + this.metalType = metalType; + } - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } } diff --git a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java index 88ffe35f4..32bb4ad09 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java @@ -7,21 +7,21 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.properties.PropTypes; -import net.minecraft.block.OreBlock; +import net.minecraft.world.level.block.OreBlock; public class MetalOreBlock extends OreBlock implements IHasMetalType { - private final Metals.MetalType metalType; + private final Metals.MetalType metalType; - public MetalOreBlock(Metals.MetalType metalType) - { - super(PropTypes.Blocks.METAL.get()); - this.metalType = metalType; - } + public MetalOreBlock(Metals.MetalType metalType) + { + super(PropTypes.Blocks.METAL.get()); + this.metalType = metalType; + } - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } } diff --git a/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java b/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java index 6f4d65b8f..2241ef37b 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalworkingTableBlock.java @@ -5,12 +5,12 @@ package leaf.cosmere.blocks; import leaf.cosmere.properties.PropTypes; -import net.minecraft.block.SoundType; +import net.minecraft.world.level.block.SoundType; public class MetalworkingTableBlock extends BaseBlock { - public MetalworkingTableBlock() - { - super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); - } + public MetalworkingTableBlock() + { + super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); + } } diff --git a/src/main/java/leaf/cosmere/blocks/TileBlock.java b/src/main/java/leaf/cosmere/blocks/TileBlock.java index 47de079b7..18a5e777f 100644 --- a/src/main/java/leaf/cosmere/blocks/TileBlock.java +++ b/src/main/java/leaf/cosmere/blocks/TileBlock.java @@ -4,12 +4,12 @@ package leaf.cosmere.blocks; -import net.minecraft.block.Block; +import net.minecraft.world.level.block.Block; public class TileBlock extends Block { - public TileBlock(Block.Properties properties) - { - super(properties); - } + public TileBlock(Block.Properties properties) + { + super(properties); + } } diff --git a/src/main/java/leaf/cosmere/cap/Capabilities.java b/src/main/java/leaf/cosmere/cap/Capabilities.java deleted file mode 100644 index d9a21f611..000000000 --- a/src/main/java/leaf/cosmere/cap/Capabilities.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.cap; - -import leaf.cosmere.cap.entity.ISpiritweb; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityInject; - -public class Capabilities -{ - @CapabilityInject(ISpiritweb.class) - public static final Capability SPIRITWEB_CAPABILITY = null; -} diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index 126980d39..2cf37b19a 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -8,127 +8,68 @@ package leaf.cosmere.cap.entity; -import leaf.cosmere.cap.Capabilities; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.util.Direction; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.client.event.RenderWorldLastEvent; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.common.util.INBTSerializable; -import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nullable; import java.util.List; -public interface ISpiritweb extends INBTSerializable +public interface ISpiritweb extends INBTSerializable { - void tick(); + void tick(); - LivingEntity getLiving(); + LivingEntity getLiving(); - boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID); + boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID); - boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID, boolean ignoreTemporaryPower); + boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID, boolean ignoreTemporaryPower); - void giveManifestation(Manifestations.ManifestationTypes type, int powerID); + void giveManifestation(Manifestations.ManifestationTypes type, int powerID); - void removeManifestation(Manifestations.ManifestationTypes type, int powerID); + void removeManifestation(Manifestations.ManifestationTypes type, int powerID); - AManifestation manifestation(); + AManifestation manifestation(); - AManifestation manifestation(Manifestations.ManifestationTypes powerType, int powerID); + AManifestation manifestation(Manifestations.ManifestationTypes powerType, int powerID); - boolean canTickManifestation(Manifestations.ManifestationTypes powerType, int powerID); + boolean canTickManifestation(Manifestations.ManifestationTypes powerType, int powerID); - boolean canTickSelectedManifestation(); + boolean canTickSelectedManifestation(); - int nextMode(Manifestations.ManifestationTypes powerType, int powerID); + int nextMode(Manifestations.ManifestationTypes powerType, int powerID); - int previousMode(Manifestations.ManifestationTypes powerType, int powerID); + int previousMode(Manifestations.ManifestationTypes powerType, int powerID); - void setMode(Manifestations.ManifestationTypes powerType, int powerID, int mode); + void setMode(Manifestations.ManifestationTypes powerType, int powerID, int mode); - int getMode(Manifestations.ManifestationTypes powerType, int powerID); + int getMode(Manifestations.ManifestationTypes powerType, int powerID); - void syncToClients(@Nullable ServerPlayerEntity serverPlayerEntity); + void syncToClients(@Nullable ServerPlayer serverPlayerEntity); - void deactivateCurrentManifestation(); + void deactivateCurrentManifestation(); - void deactivateManifestations(); + void deactivateManifestations(); - void clearManifestations(); + void clearManifestations(); - List getAvailableManifestations(); + List getAvailableManifestations(); - List getAvailableManifestations(boolean ignoreTemporaryPower); + List getAvailableManifestations(boolean ignoreTemporaryPower); - String changeManifestation(int dir); + String changeManifestation(int dir); - void renderWorldEffects(RenderWorldLastEvent event); + void renderWorldEffects(RenderLevelLastEvent event); - void setSelectedManifestation(AManifestation manifestation); + void setSelectedManifestation(AManifestation manifestation); - int getIngestedMetal(Metals.MetalType metalType); + int getIngestedMetal(Metals.MetalType metalType); - boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust); + boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust); - class Storage implements Capability.IStorage - { - - @Override - public INBT writeNBT(Capability capability, ISpiritweb instance, Direction side) - { - return instance.serializeNBT(); - } - - @Override - public void readNBT(Capability capability, ISpiritweb instance, Direction side, INBT nbt) - { - if (nbt instanceof CompoundNBT) - { - instance.deserializeNBT((CompoundNBT) nbt); - } - } - } - - - class Provider implements ICapabilitySerializable - { - - ISpiritweb data; - - public Provider(ISpiritweb data) - { - this.data = data; - } - - @SuppressWarnings("unchecked") - @Override - public LazyOptional getCapability(Capability cap, Direction side) - { - return cap == Capabilities.SPIRITWEB_CAPABILITY ? (LazyOptional) LazyOptional.of(() -> data) - : LazyOptional.empty(); - } - - @Override - public CompoundNBT serializeNBT() - { - return data.serializeNBT(); - } - - @Override - public void deserializeNBT(CompoundNBT nbt) - { - data.deserializeNBT(nbt); - } - - } } diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index fa159bb53..60f6d9f3b 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -10,7 +10,8 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.client.gui.DrawUtils; import leaf.cosmere.constants.Manifestations.ManifestationTypes; import leaf.cosmere.constants.Metals; @@ -20,28 +21,28 @@ import leaf.cosmere.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.block.Blocks; -import net.minecraft.client.MainWindow; import net.minecraft.client.Minecraft; -import net.minecraft.client.resources.I18n; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityInject; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.RegistryObject; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -59,622 +60,623 @@ public class SpiritwebCapability implements ISpiritweb { - //region Render stuff. - final static ItemStack positiveActiveStack = new ItemStack(Blocks.SOUL_TORCH); - final static ItemStack negativeActiveStack = new ItemStack(Blocks.REDSTONE_TORCH); - final static ItemStack inactiveStack = new ItemStack(Items.STICK); - //endregion + //region Render stuff. + final static ItemStack positiveActiveStack = new ItemStack(Blocks.SOUL_TORCH); + final static ItemStack negativeActiveStack = new ItemStack(Blocks.REDSTONE_TORCH); + final static ItemStack inactiveStack = new ItemStack(Items.STICK); + //endregion - //Injection - @CapabilityInject(ISpiritweb.class) - public static final Capability CAPABILITY = null; + //Injection + public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken() + { + }); - //detect if capability has been set up yet - private boolean didSetup = false; + //detect if capability has been set up yet + private boolean didSetup = false; - private final LivingEntity livingEntity; + private final LivingEntity livingEntity; - public final Map MANIFESTATIONS_MODE = - Arrays.stream(ManifestationTypes.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> new int[Metals.MetalType.values().length]));//todo come back here eventually because not all power types will be the same as num metals. and some metals don't have powers >:( - - private AManifestation selectedManifestation = ManifestationRegistry.NONE.get(); - - //biochromatic breaths stored. - //todo, figure out how the passive buff works - private int biochromaticBreathStored = 0; - - //stormlight stored - - private int stormlightStored = 0; - - //metals ingested - public final Map METALS_INGESTED = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap(Function.identity(), type -> 0)); - - public List pushBlocks = new ArrayList<>(4); - public List pushEntities = new ArrayList<>(4); - - public List pullBlocks = new ArrayList<>(4); - public List pullEntities = new ArrayList<>(4); - - - public SpiritwebCapability(LivingEntity ent) - { - this.livingEntity = ent; - } - - - @Nonnull - public static LazyOptional get(LivingEntity entity) - { - return entity != null ? entity.getCapability(SpiritwebCapability.CAPABILITY, null) - : LazyOptional.empty(); - } - - @Override - public CompoundNBT serializeNBT() - { - CompoundNBT nbt = new CompoundNBT(); - - nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); - nbt.putInt("stored_breaths", biochromaticBreathStored); - nbt.putInt("stored_stormlight", stormlightStored); - - for (ManifestationTypes manifestationType : ManifestationTypes.values()) - { - String manifestationTypeName = manifestationType.getName(); - nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); - } - - - final CompoundNBT ingestedMetals = new CompoundNBT(); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - ingestedMetals.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); - } - nbt.put("ingested_metals", ingestedMetals); - - return nbt; - } - - @Override - public void deserializeNBT(CompoundNBT nbt) - { - for (ManifestationTypes manifestationType : ManifestationTypes.values()) - { - String manifestationTypeName = manifestationType.getName(); - - int[] storedIntArray = nbt.getIntArray(manifestationTypeName + "_mode"); - int length = storedIntArray.length; - - for (int i = 0; i < length; i++) - { - //doing it this way for backwards compatibility in cases where we add new powers. - MANIFESTATIONS_MODE.get(manifestationType)[i] = storedIntArray[i]; - } - } - selectedManifestation = ManifestationRegistry.fromID(nbt.getString("selected_power")); - - biochromaticBreathStored = nbt.getInt("stored_breaths"); - stormlightStored = nbt.getInt("stored_stormlight"); - - - final CompoundNBT ingestedMetals = nbt.getCompound("ingested_metals"); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - METALS_INGESTED.put(metalType, ingestedMetals.getInt(metalType.getName() + "_ingested")); - } - } - - @Override - public void tick() - { - //if server - if (!livingEntity.level.isClientSide) - { - //Login setup - if (!didSetup) - { - syncToClients(null); - didSetup = true; - } - - if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID())) - { - selectedManifestation = ManifestationRegistry.NONE.get(); - if (getLiving() instanceof ServerPlayerEntity) - { - syncToClients((ServerPlayerEntity)getLiving()); - } - } - - //Tick - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - //don't tick powers that the user doesn't have - //don't tick powers that are not active - if (manifestation.isActive(this)) - { - manifestation.tick(this); - } - } - - //tick metals - if (livingEntity.tickCount % 1200 == 0) - { - //metals can't stay in your system forever, y'know? - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - Integer metalIngestAmount = METALS_INGESTED.get(metalType); - if (metalIngestAmount > 0) - { - //todo decide how and when we poison the user for eating metal, that sure ain't safe champ. - - - //todo, decide what's appropriate for reducing ingested metal amounts - METALS_INGESTED.put(metalType, metalIngestAmount - 1); - } - } - - - } - - //tick stormlight - if (stormlightStored > 0 && livingEntity.tickCount % 100 == 0) - { - //todo decide what's appropriate for reducing stormlight - //maybe reducing cost based on how many ideals they have sworn? - stormlightStored--; - } - - } - else//if client - { - AManifestation iron = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); - if (iron.isActive(this)) - { - ((AllomancyIronSteel) iron).performEffect(this); - } - - AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - if (steel.isActive(this)) - { - ((AllomancyIronSteel) steel).performEffect(this); - } - } - } - - @Override - public LivingEntity getLiving() - { - return livingEntity; - } - - @Override - public int getIngestedMetal(Metals.MetalType metalType) - { - return METALS_INGESTED.get(metalType); - } - - @Override - public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust) - { - int ingestedMetal = getIngestedMetal(metalType); - boolean addingToInternalMetals = amountToAdjust < 0; - - if (addingToInternalMetals || ingestedMetal > amountToAdjust) - { - if (doAdjust) - { - METALS_INGESTED.put(metalType, ingestedMetal - amountToAdjust); - } - - return true; - } - - return false; - } - - @OnlyIn(Dist.CLIENT) - @Override - public void renderWorldEffects(RenderWorldLastEvent event) - { - Multimap> linesToDrawByColor = LinkedHashMultimap.create(); - - //if user has iron or steel manifestation - if (hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.IRON.getID()) - || hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.STEEL.getID())) - { - AllomancyIronSteel iron = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); - AllomancyIronSteel steel = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - - //is zero if the manifestation is not active. - int range = Math.max(iron.getRange(this), steel.getRange(this)); - - if (range > 0) - { - linesToDrawByColor.put(Color.BLUE, AllomancyIronSteel.getDrawLines(range)); - } - } - if (linesToDrawByColor.size() > 0) - { - Vector3d originPoint = getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); - for (Map.Entry> entry : linesToDrawByColor.entries()) - { - //For all found things, draw the line - DrawUtils.drawLinesFromPoint(event, originPoint, entry.getValue(), entry.getKey()); - } - } - } - - - public void renderSelectedHUD(MatrixStack ms) - { - Minecraft mc = Minecraft.getInstance(); - MainWindow mainWindow = mc.getWindow(); - int x = 10; - int y = mainWindow.getGuiScaledHeight() / 5; - - //todo translations - String stringToDraw = I18n.get(selectedManifestation.translation().getString()); - mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); - - int mode = getMode(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); - - String stringToDraw2 = ""; - - if (selectedManifestation.getManifestationType() == ManifestationTypes.FERUCHEMY) - { - stringToDraw2 = "Mode: " + (mode < 0 ? "Tapping " : "Storing ") + mode; - } - else - { - stringToDraw2 = "Mode: " + mode; - } - - mc.font.drawShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); - - - ItemStack stack; - - if (mode > 0) - { - stack = positiveActiveStack; - } - else if (mode < 0) - { - stack = negativeActiveStack; - } - else - { - stack = inactiveStack; - } - - mc.getItemRenderer().renderAndDecorateItem(stack, x, y); - - } - - @Override - public void setSelectedManifestation(AManifestation manifestation) - { - selectedManifestation = manifestation; - } - - public boolean hasAnyPowers() - { - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) - { - continue; - } - - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); - Attribute attribute = attributeRegistryObject.get(); - - ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); - if (manifestationAttribute == null) - { - continue; - } - - if (manifestationAttribute.getValue() > 5) - { - return true; - } - } - - - return false; - } - - @Override - public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID) - { - return hasManifestation(manifestationTypeID, powerID, false); - } - - @Override - public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID, boolean ignoreTemporaryPower) - { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) - { - return false; - } - - Attribute attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); - ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); - - if (manifestationAttribute != null) - { - double manifestationStrength = - ignoreTemporaryPower ? manifestationAttribute.getBaseValue() : manifestationAttribute.getValue(); - - return manifestationStrength > 5; - } - return false; - } - - - @Override - public void giveManifestation(ManifestationTypes manifestationTypeID, int powerID) - { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) - { - return; - } - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); - - Attribute attribute = attributeRegistryObject.get(); - ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); - - if (manifestationAttribute != null) - { - manifestationAttribute.setBaseValue(10); + public final Map MANIFESTATIONS_MODE = + Arrays.stream(ManifestationTypes.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> new int[Metals.MetalType.values().length]));//todo come back here eventually because not all power types will be the same as num metals. and some metals don't have powers >:( + + private AManifestation selectedManifestation = ManifestationRegistry.NONE.get(); + + //biochromatic breaths stored. + //todo, figure out how the passive buff works + private int biochromaticBreathStored = 0; + + //stormlight stored + + private int stormlightStored = 0; + + //metals ingested + public final Map METALS_INGESTED = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap(Function.identity(), type -> 0)); + + public List pushBlocks = new ArrayList<>(4); + public List pushEntities = new ArrayList<>(4); + + public List pullBlocks = new ArrayList<>(4); + public List pullEntities = new ArrayList<>(4); + + + public SpiritwebCapability(LivingEntity ent) + { + this.livingEntity = ent; + } + + + @Nonnull + public static LazyOptional get(LivingEntity entity) + { + return entity != null ? entity.getCapability(SpiritwebCapability.CAPABILITY, null) + : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() + { + CompoundTag nbt = new CompoundTag(); + + nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); + nbt.putInt("stored_breaths", biochromaticBreathStored); + nbt.putInt("stored_stormlight", stormlightStored); + + for (ManifestationTypes manifestationType : ManifestationTypes.values()) + { + String manifestationTypeName = manifestationType.getName(); + nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); + } + + + final CompoundTag ingestedMetals = new CompoundTag(); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + ingestedMetals.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); + } + nbt.put("ingested_metals", ingestedMetals); + + return nbt; + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + for (ManifestationTypes manifestationType : ManifestationTypes.values()) + { + String manifestationTypeName = manifestationType.getName(); + + int[] storedIntArray = nbt.getIntArray(manifestationTypeName + "_mode"); + int length = storedIntArray.length; + + for (int i = 0; i < length; i++) + { + //doing it this way for backwards compatibility in cases where we add new powers. + MANIFESTATIONS_MODE.get(manifestationType)[i] = storedIntArray[i]; + } + } + selectedManifestation = ManifestationRegistry.fromID(nbt.getString("selected_power")); + + biochromaticBreathStored = nbt.getInt("stored_breaths"); + stormlightStored = nbt.getInt("stored_stormlight"); + + + final CompoundTag ingestedMetals = nbt.getCompound("ingested_metals"); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + METALS_INGESTED.put(metalType, ingestedMetals.getInt(metalType.getName() + "_ingested")); + } + } + + @Override + public void tick() + { + //if server + if (!livingEntity.level.isClientSide) + { + //Login setup + if (!didSetup) + { + syncToClients(null); + didSetup = true; + } + + if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID())) + { + selectedManifestation = ManifestationRegistry.NONE.get(); + if (getLiving() instanceof ServerPlayer) + { + syncToClients((ServerPlayer) getLiving()); + } + } + + //Tick + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + //don't tick powers that the user doesn't have + //don't tick powers that are not active + if (manifestation.isActive(this)) + { + manifestation.tick(this); + } + } + + //tick metals + if (livingEntity.tickCount % 1200 == 0) + { + //metals can't stay in your system forever, y'know? + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + Integer metalIngestAmount = METALS_INGESTED.get(metalType); + if (metalIngestAmount > 0) + { + //todo decide how and when we poison the user for eating metal, that sure ain't safe champ. + + + //todo, decide what's appropriate for reducing ingested metal amounts + METALS_INGESTED.put(metalType, metalIngestAmount - 1); + } + } + + + } + + //tick stormlight + if (stormlightStored > 0 && livingEntity.tickCount % 100 == 0) + { + //todo decide what's appropriate for reducing stormlight + //maybe reducing cost based on how many ideals they have sworn? + stormlightStored--; + } + + } + else//if client + { + AManifestation iron = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); + if (iron.isActive(this)) + { + ((AllomancyIronSteel) iron).performEffect(this); + } + + AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); + if (steel.isActive(this)) + { + ((AllomancyIronSteel) steel).performEffect(this); + } + } + } + + @Override + public LivingEntity getLiving() + { + return livingEntity; + } + + @Override + public int getIngestedMetal(Metals.MetalType metalType) + { + return METALS_INGESTED.get(metalType); + } + + @Override + public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust) + { + int ingestedMetal = getIngestedMetal(metalType); + boolean addingToInternalMetals = amountToAdjust < 0; + + if (addingToInternalMetals || ingestedMetal > amountToAdjust) + { + if (doAdjust) + { + METALS_INGESTED.put(metalType, ingestedMetal - amountToAdjust); + } + + return true; + } + + return false; + } + + @OnlyIn(Dist.CLIENT) + @Override + public void renderWorldEffects(RenderLevelLastEvent event) + { + Multimap> linesToDrawByColor = LinkedHashMultimap.create(); + + //if user has iron or steel manifestation + if (hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.IRON.getID()) + || hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.STEEL.getID())) + { + AllomancyIronSteel iron = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); + AllomancyIronSteel steel = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); + + //is zero if the manifestation is not active. + int range = Math.max(iron.getRange(this), steel.getRange(this)); + + if (range > 0) + { + linesToDrawByColor.put(Color.BLUE, AllomancyIronSteel.getDrawLines(range)); + } + } + if (linesToDrawByColor.size() > 0) + { + Vec3 originPoint = getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); + for (Map.Entry> entry : linesToDrawByColor.entries()) + { + //For all found things, draw the line + DrawUtils.drawLinesFromPoint(event, originPoint, entry.getValue(), entry.getKey()); + } + } + } + + + public void renderSelectedHUD(PoseStack ms) + { + Minecraft mc = Minecraft.getInstance(); + Window mainWindow = mc.getWindow(); + int x = 10; + int y = mainWindow.getGuiScaledHeight() / 5; + + //todo translations + String stringToDraw = I18n.get(selectedManifestation.translation().getString()); + mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); + + int mode = getMode(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); + + String stringToDraw2 = ""; + + if (selectedManifestation.getManifestationType() == ManifestationTypes.FERUCHEMY) + { + stringToDraw2 = "Mode: " + (mode < 0 ? "Tapping " : "Storing ") + mode; + } + else + { + stringToDraw2 = "Mode: " + mode; + } + + mc.font.drawShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); + + + ItemStack stack; + + if (mode > 0) + { + stack = positiveActiveStack; + } + else if (mode < 0) + { + stack = negativeActiveStack; + } + else + { + stack = inactiveStack; + } + + mc.getItemRenderer().renderAndDecorateItem(stack, x, y); + + } + + @Override + public void setSelectedManifestation(AManifestation manifestation) + { + selectedManifestation = manifestation; + } + + public boolean hasAnyPowers() + { + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String path = manifestation.getName(); + + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + { + continue; + } + + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); + Attribute attribute = attributeRegistryObject.get(); + + AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); + if (manifestationAttribute == null) + { + continue; + } + + if (manifestationAttribute.getValue() > 5) + { + return true; + } + } + + + return false; + } + + @Override + public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID) + { + return hasManifestation(manifestationTypeID, powerID, false); + } + + @Override + public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID, boolean ignoreTemporaryPower) + { + AManifestation manifestation = manifestationTypeID.getManifestation(powerID); + String manifestationName = manifestation.getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + return false; + } + + Attribute attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); + AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); + + if (manifestationAttribute != null) + { + double manifestationStrength = + ignoreTemporaryPower ? manifestationAttribute.getBaseValue() : manifestationAttribute.getValue(); + + return manifestationStrength > 5; + } + return false; + } + + + @Override + public void giveManifestation(ManifestationTypes manifestationTypeID, int powerID) + { + AManifestation manifestation = manifestationTypeID.getManifestation(powerID); + + String manifestationName = manifestation.getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + return; + } + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); + + Attribute attribute = attributeRegistryObject.get(); + AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); + + if (manifestationAttribute != null) + { + manifestationAttribute.setBaseValue(10); /*AttributeModifier attributeModifier = AttributeHelper.makeAttribute(manifestationName, "inherent ", 10, AttributeModifier.Operation.ADDITION); manifestationAttribute.removeModifier(attributeModifier); manifestationAttribute.applyNonPersistentModifier(attributeModifier);*/ - } - } - - @Override - public void removeManifestation(ManifestationTypes manifestationTypeID, int powerID) - { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) - { - return; - } - - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); - - Attribute attribute = attributeRegistryObject.get(); - ModifiableAttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); - if (manifestationAttribute != null) - { - manifestationAttribute.setBaseValue(0); - } - } - - @Override - public boolean canTickManifestation(ManifestationTypes manifestationType, int powerID) - { - if (!hasManifestation(manifestationType, powerID)) - { - return false; - } - - int[] manifestationPowersModes = MANIFESTATIONS_MODE.get(manifestationType); - - if (manifestationType == ManifestationTypes.NONE || manifestationPowersModes.length == 0) - { - return false; - } - - return manifestationPowersModes[powerID] != 0; - } - - @Override - public boolean canTickSelectedManifestation() - { - if (selectedManifestation == null) - { - return false; - } - - return canTickManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); - } - - @Override - public void deactivateCurrentManifestation() - { - MANIFESTATIONS_MODE.get(selectedManifestation.getManifestationType())[selectedManifestation.getPowerID()] = 0; - } - - @Override - public void deactivateManifestations() - { - for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) - { - Arrays.fill(MANIFESTATIONS_MODE.get(manifestationTypes), 0); - } - } - - @Override - public void clearManifestations() - { - deactivateManifestations(); - - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - } - } - - @Override - public List getAvailableManifestations() - { - return getAvailableManifestations(false); - } - - @Override - public List getAvailableManifestations(boolean ignoreTemporaryPower) - { - List list = new ArrayList(); - - //todo intelligently handle multiple powers - for (int i = 0; i < 16; i++) - { - for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) - { - if (hasManifestation(manifestationTypes, i, ignoreTemporaryPower)) - { - list.add(manifestationTypes.getManifestation(i)); - } - } - } - - return list; - } - - @Override - public AManifestation manifestation() - { - return selectedManifestation; - } - - - @Override - public AManifestation manifestation(ManifestationTypes manifestationType, int powerID) - { - return manifestationType.getManifestation(powerID); - } - - @Override - public String changeManifestation(int dir) - { - List unlockedManifestations = getAvailableManifestations(); - - if (selectedManifestation == ManifestationRegistry.NONE.get()) - { - selectedManifestation = unlockedManifestations.get(0); - } - else - { - for (int index = 0; index < unlockedManifestations.size(); index++) - { - AManifestation manifestation = unlockedManifestations.get(index); - if (selectedManifestation == manifestation) - { - //found a match, - int selection = index; - - selection += (dir < 0) ? 1 : -1; - selection = (selection + unlockedManifestations.size()) % unlockedManifestations.size(); - - selectedManifestation = unlockedManifestations.get(selection); - break; - } - - } - } - return selectedManifestation.translation().getKey(); - } - - @Override - public void setMode(ManifestationTypes manifestationTypeID, int powerID, int mode) - { - AManifestation aim = manifestationTypeID.getManifestation(powerID); - mode = MathHelper.clamp(mode, aim.modeMin(this),aim.modeMax(this)); - - MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID] = mode; - } - - @Override - public int getMode(ManifestationTypes manifestationTypeID, int powerID) - { - return MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID]; - } - - @Override - public int nextMode(ManifestationTypes manifestationType, int powerID) - { - AManifestation aim = manifestationType.getManifestation(powerID); - - int currentMode = getMode(manifestationType, powerID); - - if (aim.modeWraps(this) && currentMode == aim.modeMax(this)) - { - int modeMin = aim.modeMin(this); - this.setMode(manifestationType, powerID, modeMin); - return modeMin; - } - - int mode = Math.min(currentMode + 1, aim.modeMax(this)); - this.setMode(manifestationType, powerID, mode); - - return mode; - } - - @Override - public int previousMode(ManifestationTypes manifestationType, int powerID) - { - AManifestation aim = manifestationType.getManifestation(powerID); - - int currentMode = getMode(manifestationType, powerID); - - if (aim.modeWraps(this) && currentMode == aim.modeMin(this)) - { - int modeMax = aim.modeMax(this); - this.setMode(manifestationType, powerID, modeMax); - return modeMax; - } - - int mode = Math.max(currentMode - 1, aim.modeMin(this)); - this.setMode(manifestationType, powerID, mode); - return mode; - } - - @Override - public void syncToClients(@Nullable ServerPlayerEntity serverPlayerEntity) - { - if (livingEntity != null && livingEntity.level.isClientSide) - { - throw new IllegalStateException("Don't sync client -> server"); - } - - if (manifestation() == ManifestationRegistry.NONE.get()) - { - //find first power - Optional first = getAvailableManifestations().stream().findFirst(); - first.ifPresent(this::setSelectedManifestation); - } - - CompoundNBT nbt = serializeNBT(); - - if (serverPlayerEntity == null) - { - Network.sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), (ServerWorld) livingEntity.level); - } - else - { - Network.sendTo(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), serverPlayerEntity); - } - } + } + } + + @Override + public void removeManifestation(ManifestationTypes manifestationTypeID, int powerID) + { + AManifestation manifestation = manifestationTypeID.getManifestation(powerID); + String path = manifestation.getName(); + + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + { + return; + } + + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); + + Attribute attribute = attributeRegistryObject.get(); + AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); + if (manifestationAttribute != null) + { + manifestationAttribute.setBaseValue(0); + } + } + + @Override + public boolean canTickManifestation(ManifestationTypes manifestationType, int powerID) + { + if (!hasManifestation(manifestationType, powerID)) + { + return false; + } + + int[] manifestationPowersModes = MANIFESTATIONS_MODE.get(manifestationType); + + if (manifestationType == ManifestationTypes.NONE || manifestationPowersModes.length == 0) + { + return false; + } + + return manifestationPowersModes[powerID] != 0; + } + + @Override + public boolean canTickSelectedManifestation() + { + if (selectedManifestation == null) + { + return false; + } + + return canTickManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); + } + + @Override + public void deactivateCurrentManifestation() + { + MANIFESTATIONS_MODE.get(selectedManifestation.getManifestationType())[selectedManifestation.getPowerID()] = 0; + } + + @Override + public void deactivateManifestations() + { + for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) + { + Arrays.fill(MANIFESTATIONS_MODE.get(manifestationTypes), 0); + } + } + + @Override + public void clearManifestations() + { + deactivateManifestations(); + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + } + } + + @Override + public List getAvailableManifestations() + { + return getAvailableManifestations(false); + } + + @Override + public List getAvailableManifestations(boolean ignoreTemporaryPower) + { + List list = new ArrayList(); + + //todo intelligently handle multiple powers + for (int i = 0; i < 16; i++) + { + for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) + { + if (hasManifestation(manifestationTypes, i, ignoreTemporaryPower)) + { + list.add(manifestationTypes.getManifestation(i)); + } + } + } + + return list; + } + + @Override + public AManifestation manifestation() + { + return selectedManifestation; + } + + + @Override + public AManifestation manifestation(ManifestationTypes manifestationType, int powerID) + { + return manifestationType.getManifestation(powerID); + } + + @Override + public String changeManifestation(int dir) + { + List unlockedManifestations = getAvailableManifestations(); + + if (selectedManifestation == ManifestationRegistry.NONE.get()) + { + selectedManifestation = unlockedManifestations.get(0); + } + else + { + for (int index = 0; index < unlockedManifestations.size(); index++) + { + AManifestation manifestation = unlockedManifestations.get(index); + if (selectedManifestation == manifestation) + { + //found a match, + int selection = index; + + selection += (dir < 0) ? 1 : -1; + selection = (selection + unlockedManifestations.size()) % unlockedManifestations.size(); + + selectedManifestation = unlockedManifestations.get(selection); + break; + } + + } + } + return selectedManifestation.translation().getKey(); + } + + @Override + public void setMode(ManifestationTypes manifestationTypeID, int powerID, int mode) + { + AManifestation aim = manifestationTypeID.getManifestation(powerID); + mode = Mth.clamp(mode, aim.modeMin(this), aim.modeMax(this)); + + MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID] = mode; + } + + @Override + public int getMode(ManifestationTypes manifestationTypeID, int powerID) + { + return MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID]; + } + + @Override + public int nextMode(ManifestationTypes manifestationType, int powerID) + { + AManifestation aim = manifestationType.getManifestation(powerID); + + int currentMode = getMode(manifestationType, powerID); + + if (aim.modeWraps(this) && currentMode == aim.modeMax(this)) + { + int modeMin = aim.modeMin(this); + this.setMode(manifestationType, powerID, modeMin); + return modeMin; + } + + int mode = Math.min(currentMode + 1, aim.modeMax(this)); + this.setMode(manifestationType, powerID, mode); + + return mode; + } + + @Override + public int previousMode(ManifestationTypes manifestationType, int powerID) + { + AManifestation aim = manifestationType.getManifestation(powerID); + + int currentMode = getMode(manifestationType, powerID); + + if (aim.modeWraps(this) && currentMode == aim.modeMin(this)) + { + int modeMax = aim.modeMax(this); + this.setMode(manifestationType, powerID, modeMax); + return modeMax; + } + + int mode = Math.max(currentMode - 1, aim.modeMin(this)); + this.setMode(manifestationType, powerID, mode); + return mode; + } + + @Override + public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) + { + if (livingEntity != null && livingEntity.level.isClientSide) + { + throw new IllegalStateException("Don't sync client -> server"); + } + + if (manifestation() == ManifestationRegistry.NONE.get()) + { + //find first power + Optional first = getAvailableManifestations().stream().findFirst(); + first.ifPresent(this::setSelectedManifestation); + } + + CompoundTag nbt = serializeNBT(); + + if (serverPlayerEntity == null) + { + Network.sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), (ServerLevel) livingEntity.level); + } + else + { + Network.sendTo(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), serverPlayerEntity); + } + } } diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index dde974d17..753f2ec05 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -11,145 +11,145 @@ import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.StackNBTHelper; -import leaf.cosmere.utils.helpers.PlayerHelper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.EffectInstance; -import net.minecraft.util.math.MathHelper; +import leaf.cosmere.utils.helpers.PlayerHelper; +import leaf.cosmere.utils.helpers.StackNBTHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import java.util.UUID; //item based chargeable public interface IChargeable { - default int getMaxCharge(ItemStack itemStack) - { - return MathHelper.floor(9000 * getMaxChargeModifier()); - } - - default float getMaxChargeModifier() - { - return 1; - } - - default int getCharge(ItemStack itemStack) - { - return StackNBTHelper.getInt(itemStack, Constants.NBT.CHARGE_LEVEL, 0); - } - - default void setCharge(ItemStack itemStack, int chargeLevel) - { - StackNBTHelper.setInt(itemStack, Constants.NBT.CHARGE_LEVEL, MathHelper.clamp(chargeLevel, 0, this.getMaxCharge(itemStack))); - } - - default boolean trySetAttunedPlayer(ItemStack itemStack, PlayerEntity entity) - { - UUID attunedPlayerID = getAttunedPlayer(itemStack); - UUID playerID = entity.getUUID(); - - boolean noAttunedPlayer = attunedPlayerID == null; - - if (noAttunedPlayer) - { - //No attuned player! Check to see whether they are storing identity - EffectInstance storingIdentity = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); - //if they are - if (storingIdentity != null && storingIdentity.getDuration() > 0) - { - //then set the metalmind to "unsealed". Any feruchemist with access to that power can use the metalmind - StackNBTHelper.setUuid(itemStack,Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); - StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation - return true; - - } - } - - //if theres no attuned player on the metalmind - //or if the player is attuned to the metalmind - //or if the metalmind is unsealed (anyone can access) - if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNSEALED_UUID) == 0) - { - if (noAttunedPlayer) - { - setAttunedPlayer(itemStack, entity); - setAttunedPlayerName(itemStack, entity); - } - //auto success if that player is already attuned - return true; - } - - return false; - } - - default void setAttunedPlayer(ItemStack itemStack, PlayerEntity entity) - { - StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, entity.getUUID()); - } - - default UUID getAttunedPlayer(ItemStack itemStack) - { - return StackNBTHelper.getUuid(itemStack, Constants.NBT.ATTUNED_PLAYER); - } - - default void setAttunedPlayerName(ItemStack itemStack, PlayerEntity entity) - { - String playerName = PlayerHelper.getPlayerName(entity.getUUID(), entity.getServer()); - StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, playerName); - } - - default String getAttunedPlayerName(ItemStack itemStack) - { - return StackNBTHelper.getString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, ""); - } - - default boolean getPlayerIsAttuned(ItemStack itemStack, PlayerEntity entity) - { - EffectInstance storingIdentityEffect = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); - boolean noIdentityPlayer = storingIdentityEffect != null && storingIdentityEffect.getDuration() > 0; - - UUID itemAttunedPlayerUUID = getAttunedPlayer(itemStack); - //null means not attuned at all, so can assume player is attuned with it - return noIdentityPlayer || itemAttunedPlayerUUID == null || itemAttunedPlayerUUID == entity.getUUID(); - } - - - default void adjustCharge(ItemStack stack, int chargeToAdjustBy) - { - int currentCharge = getCharge(stack); - int goalCharge = currentCharge + chargeToAdjustBy; - int actualGoalCharge = Math.min(goalCharge, getMaxCharge(stack)); - int finalChargeValue = (int) (actualGoalCharge / stack.getCount()); - - setCharge(stack, finalChargeValue); - } - - default void increaseCurrentCharge(ItemStack itemStack) - { - increaseCurrentCharge(itemStack, 1); - } - - default void increaseCurrentCharge(ItemStack stack, int i) - { - setCharge(stack, getCharge(stack) + i); - } - - default void decreaseCurrentCharge(ItemStack itemStack) - { - int currentCharge = getCharge(itemStack); - int nextChargeLevel = currentCharge - 1; - setCharge(itemStack, (int) nextChargeLevel); - } - - default boolean canGiveChargeToItem(ItemStack stackInSlot, ItemStack stack) - { - return true; - } - - default boolean canReceiveChargeFromItem(ItemStack stack, ItemStack stackInSlot) - { - return true; - } + default int getMaxCharge(ItemStack itemStack) + { + return Mth.floor(9000 * getMaxChargeModifier()); + } + + default float getMaxChargeModifier() + { + return 1; + } + + default int getCharge(ItemStack itemStack) + { + return StackNBTHelper.getInt(itemStack, Constants.NBT.CHARGE_LEVEL, 0); + } + + default void setCharge(ItemStack itemStack, int chargeLevel) + { + StackNBTHelper.setInt(itemStack, Constants.NBT.CHARGE_LEVEL, Mth.clamp(chargeLevel, 0, this.getMaxCharge(itemStack))); + } + + default boolean trySetAttunedPlayer(ItemStack itemStack, Player entity) + { + UUID attunedPlayerID = getAttunedPlayer(itemStack); + UUID playerID = entity.getUUID(); + + boolean noAttunedPlayer = attunedPlayerID == null; + + if (noAttunedPlayer) + { + //No attuned player! Check to see whether they are storing identity + MobEffectInstance storingIdentity = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + //if they are + if (storingIdentity != null && storingIdentity.getDuration() > 0) + { + //then set the metalmind to "unsealed". Any feruchemist with access to that power can use the metalmind + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); + StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation + return true; + + } + } + + //if theres no attuned player on the metalmind + //or if the player is attuned to the metalmind + //or if the metalmind is unsealed (anyone can access) + if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNSEALED_UUID) == 0) + { + if (noAttunedPlayer) + { + setAttunedPlayer(itemStack, entity); + setAttunedPlayerName(itemStack, entity); + } + //auto success if that player is already attuned + return true; + } + + return false; + } + + default void setAttunedPlayer(ItemStack itemStack, Player entity) + { + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, entity.getUUID()); + } + + default UUID getAttunedPlayer(ItemStack itemStack) + { + return StackNBTHelper.getUuid(itemStack, Constants.NBT.ATTUNED_PLAYER); + } + + default void setAttunedPlayerName(ItemStack itemStack, Player entity) + { + String playerName = PlayerHelper.getPlayerName(entity.getUUID(), entity.getServer()); + StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, playerName); + } + + default String getAttunedPlayerName(ItemStack itemStack) + { + return StackNBTHelper.getString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, ""); + } + + default boolean getPlayerIsAttuned(ItemStack itemStack, Player entity) + { + MobEffectInstance storingIdentityEffect = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + boolean noIdentityPlayer = storingIdentityEffect != null && storingIdentityEffect.getDuration() > 0; + + UUID itemAttunedPlayerUUID = getAttunedPlayer(itemStack); + //null means not attuned at all, so can assume player is attuned with it + return noIdentityPlayer || itemAttunedPlayerUUID == null || itemAttunedPlayerUUID == entity.getUUID(); + } + + + default void adjustCharge(ItemStack stack, int chargeToAdjustBy) + { + int currentCharge = getCharge(stack); + int goalCharge = currentCharge + chargeToAdjustBy; + int actualGoalCharge = Math.min(goalCharge, getMaxCharge(stack)); + int finalChargeValue = actualGoalCharge / stack.getCount(); + + setCharge(stack, finalChargeValue); + } + + default void increaseCurrentCharge(ItemStack itemStack) + { + increaseCurrentCharge(itemStack, 1); + } + + default void increaseCurrentCharge(ItemStack stack, int i) + { + setCharge(stack, getCharge(stack) + i); + } + + default void decreaseCurrentCharge(ItemStack itemStack) + { + int currentCharge = getCharge(itemStack); + int nextChargeLevel = currentCharge - 1; + setCharge(itemStack, nextChargeLevel); + } + + default boolean canGiveChargeToItem(ItemStack stackInSlot, ItemStack stack) + { + return true; + } + + default boolean canReceiveChargeFromItem(ItemStack stack, ItemStack stackInSlot) + { + return true; + } } diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 6c236dbaa..e811460d5 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -15,10 +15,10 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.CapWrapper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.Container; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.wrapper.EmptyHandler; import net.minecraftforge.items.wrapper.PlayerInvWrapper; import top.theillusivec4.curios.api.CuriosApi; @@ -30,359 +30,359 @@ public class ItemChargeHelper { - public static List getChargeItems(PlayerEntity player) - { - if (player == null) - { - return Collections.emptyList(); - } - - IInventory acc = new CapWrapper(new PlayerInvWrapper(player.inventory)); - - List toReturn = getChargeableItemStacks(acc); - - return toReturn; - } - - public static List getChargeCurios(PlayerEntity player) - { - if (player == null || !CuriosCompat.CuriosIsPresent()) - { - return Collections.emptyList(); - } - - IInventory acc = new CapWrapper(CuriosApi.getCuriosHelper().getEquippedCurios(player).orElseGet(EmptyHandler::new)); - - List toReturn = getChargeableItemStacks(acc); - - return toReturn; - } - - private static List getChargeableItemStacks(IInventory acc) - { - List toReturn = new ArrayList<>(acc.getContainerSize()); - - for (int slot = 0; slot < acc.getContainerSize(); slot++) - { - ItemStack stackInSlot = acc.getItem(slot); - - if (!stackInSlot.isEmpty() && stackInSlot.getItem() instanceof IChargeable) - { - toReturn.add(stackInSlot); - } - } - return toReturn; - } - - public static int requestCharge(ItemStack stack, PlayerEntity player, int chargeToGet, boolean remove) - { - return requestCharge(stack, player, chargeToGet, remove, false); - } - - public static int requestCharge(ItemStack stack, PlayerEntity player, int chargeToGet, boolean remove, boolean checkPlayerID) - { - if (stack.isEmpty()) - { - return 0; - } - - List items = getChargeItems(player); - List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - if (stackInSlot == stack) - { - continue; - } - IChargeable chargeItem = (IChargeable) stackInSlot.getItem(); - if (chargeItem.canGiveChargeToItem(stackInSlot, stack) && chargeItem.getCharge(stackInSlot) > 0) - { - if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) - { - continue; - } - //don't let non attuned players use the charge if not allowed. - if (checkPlayerID && !chargeItem.getPlayerIsAttuned(stackInSlot, player)) - { - continue; - } - - int charge = Math.min(chargeToGet, chargeItem.getCharge(stackInSlot)); - - if (remove) - { - chargeItem.adjustCharge(stackInSlot, -charge); - } - - return charge; - } - } - - return 0; - } - - - public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean remove) - { - return adjustChargeExact(player, chargeToGet, remove, false); - } - - public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean remove, boolean checkPlayer) - { - List items = getChargeItems(player); - List acc = getChargeCurios(player); - - return adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); - } - - public static ItemStack adjustChargeExact(PlayerEntity player, int chargeToGet, boolean doAdjust, boolean checkPlayer, List items, List acc) - { - EffectInstance storingIdentity = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); - boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); - - - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - - boolean playerUnableToAccess = !chargeItemSlot.trySetAttunedPlayer(stackInSlot, player); - if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not - || //or if the player is trying to store in an unsealed metalmind but have identity - chargeToGet < 0 && !isStoringIdentity && chargeItemSlot.getAttunedPlayer(stackInSlot).compareTo(Constants.NBT.UNSEALED_UUID) == 0) - { - continue; - } - - boolean storing = chargeToGet < 0; - - int slotCharge = chargeItemSlot.getCharge(stackInSlot); - int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); - - - if ((storing && (slotCharge + (-chargeToGet)) < slotMaxCharge)//storing and can fit in this item - || !storing && slotCharge > chargeToGet) - { - if (doAdjust) - { - chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); - } - - return stackInSlot; - } - } - - return null; - } - - - public static boolean requestChargeExact(ItemStack stack, PlayerEntity player, int chargeToGet, boolean remove) - { - if (stack.isEmpty()) - { - return false; - } - - List items = getChargeItems(player); - List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - if (stackInSlot == stack) - { - continue; - } - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - if (chargeItemSlot.canGiveChargeToItem(stackInSlot, stack) && chargeItemSlot.getCharge(stackInSlot) > chargeToGet) - { - if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) - { - continue; - } - - if (remove) - { - chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); - } - - return true; - } - } - - return false; - } - - public static int dispatchCharge(PlayerEntity player, int chargeToSend, boolean add) - { - List items = getChargeItems(player); - List acc = getChargeCurios(player); - - Iterable itemStacksIterable = Iterables.concat(items, acc); - - for (ItemStack stackInSlot : itemStacksIterable) - { - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - - int received; - if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot)) - { - received = chargeToSend; - } - else - { - received = chargeToSend - (chargeItemSlot.getCharge(stackInSlot) + chargeToSend - chargeItemSlot.getMaxCharge(stackInSlot)); - } - - if (add) - { - chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); - } - - return received; - } - - return 0; - } - - public static int dispatchCharge(ItemStack stack, PlayerEntity player, int chargeToSend, boolean add) - { - if (stack.isEmpty()) - { - return 0; - } - - List items = getChargeItems(player); - List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - if (stackInSlot == stack) - { - continue; - } - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - if (chargeItemSlot.canReceiveChargeFromItem(stackInSlot, stack)) - { - if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canGiveChargeToItem(stack, stackInSlot)) - { - continue; - } - - int received; - if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot)) - { - received = chargeToSend; - } - else - { - received = chargeToSend - (chargeItemSlot.getCharge(stackInSlot) + chargeToSend - chargeItemSlot.getMaxCharge(stackInSlot)); - } - - if (add) - { - chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); - } - - return received; - } - } - - return 0; - } - - - public static boolean dispatchChargeExact(ItemStack stack, PlayerEntity player, int chargeToSend, boolean add) - { - if (stack.isEmpty()) - { - return false; - } - - List items = getChargeItems(player); - List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - if (stackInSlot == stack) - { - continue; - } - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot) && chargeItemSlot.canReceiveChargeFromItem(stackInSlot, stack)) - { - if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canGiveChargeToItem(stack, stackInSlot)) - { - continue; - } - - if (add) - { - chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); - } - - return true; - } - } - - return false; - } - - private static int discountChargeForTool(ItemStack stack, PlayerEntity player, int inCost) - { - float multiplier = Math.max(0F, 1F - getFullDiscountForTools(player, stack)); - return (int) (inCost * multiplier); - } - - - public static int requestChargeForTool(ItemStack stack, PlayerEntity player, int chargeToGet, boolean remove) - { - int cost = discountChargeForTool(stack, player, chargeToGet); - return requestCharge(stack, player, cost, remove); - } - - - public static boolean requestChargeExactForTool(ItemStack stack, PlayerEntity player, int chargeToGet, boolean remove) - { - int cost = discountChargeForTool(stack, player, chargeToGet); - return requestChargeExact(stack, player, cost, remove); - } - - - public static int getInvocationCountForTool(ItemStack stack, PlayerEntity player, int chargeToGet) - { - if (stack.isEmpty()) - { - return 0; - } - - int cost = discountChargeForTool(stack, player, chargeToGet); - int invocations = 0; - - List items = getChargeItems(player); - List acc = getChargeCurios(player); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) - { - if (stackInSlot == stack) - { - continue; - } - IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); - int availableCharge = chargeItemSlot.getCharge(stackInSlot); - if (chargeItemSlot.canGiveChargeToItem(stackInSlot, stack) && availableCharge > cost) - { - if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) - { - continue; - } - - invocations += availableCharge / cost; - } - } - - return invocations; - } - - - public static float getFullDiscountForTools(PlayerEntity player, ItemStack tool) - { - float discount = 0F; - //todo discount + public static List getChargeItems(Player player) + { + if (player == null) + { + return Collections.emptyList(); + } + + Container acc = new CapWrapper(new PlayerInvWrapper(player.getInventory())); + + List toReturn = getChargeableItemStacks(acc); + + return toReturn; + } + + public static List getChargeCurios(Player player) + { + if (player == null || !CuriosCompat.CuriosIsPresent()) + { + return Collections.emptyList(); + } + + Container acc = new CapWrapper(CuriosApi.getCuriosHelper().getEquippedCurios(player).orElseGet(EmptyHandler::new)); + + List toReturn = getChargeableItemStacks(acc); + + return toReturn; + } + + private static List getChargeableItemStacks(Container acc) + { + List toReturn = new ArrayList<>(acc.getContainerSize()); + + for (int slot = 0; slot < acc.getContainerSize(); slot++) + { + ItemStack stackInSlot = acc.getItem(slot); + + if (!stackInSlot.isEmpty() && stackInSlot.getItem() instanceof IChargeable) + { + toReturn.add(stackInSlot); + } + } + return toReturn; + } + + public static int requestCharge(ItemStack stack, Player player, int chargeToGet, boolean remove) + { + return requestCharge(stack, player, chargeToGet, remove, false); + } + + public static int requestCharge(ItemStack stack, Player player, int chargeToGet, boolean remove, boolean checkPlayerID) + { + if (stack.isEmpty()) + { + return 0; + } + + List items = getChargeItems(player); + List acc = getChargeCurios(player); + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (stackInSlot == stack) + { + continue; + } + IChargeable chargeItem = (IChargeable) stackInSlot.getItem(); + if (chargeItem.canGiveChargeToItem(stackInSlot, stack) && chargeItem.getCharge(stackInSlot) > 0) + { + if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) + { + continue; + } + //don't let non attuned players use the charge if not allowed. + if (checkPlayerID && !chargeItem.getPlayerIsAttuned(stackInSlot, player)) + { + continue; + } + + int charge = Math.min(chargeToGet, chargeItem.getCharge(stackInSlot)); + + if (remove) + { + chargeItem.adjustCharge(stackInSlot, -charge); + } + + return charge; + } + } + + return 0; + } + + + public static ItemStack adjustChargeExact(Player player, int chargeToGet, boolean remove) + { + return adjustChargeExact(player, chargeToGet, remove, false); + } + + public static ItemStack adjustChargeExact(Player player, int chargeToGet, boolean remove, boolean checkPlayer) + { + List items = getChargeItems(player); + List acc = getChargeCurios(player); + + return adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); + } + + public static ItemStack adjustChargeExact(Player player, int chargeToGet, boolean doAdjust, boolean checkPlayer, List items, List acc) + { + MobEffectInstance storingIdentity = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); + + + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + + boolean playerUnableToAccess = !chargeItemSlot.trySetAttunedPlayer(stackInSlot, player); + if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not + || //or if the player is trying to store in an unsealed metalmind but have identity + chargeToGet < 0 && !isStoringIdentity && chargeItemSlot.getAttunedPlayer(stackInSlot).compareTo(Constants.NBT.UNSEALED_UUID) == 0) + { + continue; + } + + boolean storing = chargeToGet < 0; + + int slotCharge = chargeItemSlot.getCharge(stackInSlot); + int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); + + + if ((storing && (slotCharge + (-chargeToGet)) < slotMaxCharge)//storing and can fit in this item + || !storing && slotCharge > chargeToGet) + { + if (doAdjust) + { + chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); + } + + return stackInSlot; + } + } + + return null; + } + + + public static boolean requestChargeExact(ItemStack stack, Player player, int chargeToGet, boolean remove) + { + if (stack.isEmpty()) + { + return false; + } + + List items = getChargeItems(player); + List acc = getChargeCurios(player); + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (stackInSlot == stack) + { + continue; + } + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + if (chargeItemSlot.canGiveChargeToItem(stackInSlot, stack) && chargeItemSlot.getCharge(stackInSlot) > chargeToGet) + { + if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) + { + continue; + } + + if (remove) + { + chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); + } + + return true; + } + } + + return false; + } + + public static int dispatchCharge(Player player, int chargeToSend, boolean add) + { + List items = getChargeItems(player); + List acc = getChargeCurios(player); + + Iterable itemStacksIterable = Iterables.concat(items, acc); + + for (ItemStack stackInSlot : itemStacksIterable) + { + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + + int received; + if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot)) + { + received = chargeToSend; + } + else + { + received = chargeToSend - (chargeItemSlot.getCharge(stackInSlot) + chargeToSend - chargeItemSlot.getMaxCharge(stackInSlot)); + } + + if (add) + { + chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); + } + + return received; + } + + return 0; + } + + public static int dispatchCharge(ItemStack stack, Player player, int chargeToSend, boolean add) + { + if (stack.isEmpty()) + { + return 0; + } + + List items = getChargeItems(player); + List acc = getChargeCurios(player); + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (stackInSlot == stack) + { + continue; + } + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + if (chargeItemSlot.canReceiveChargeFromItem(stackInSlot, stack)) + { + if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canGiveChargeToItem(stack, stackInSlot)) + { + continue; + } + + int received; + if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot)) + { + received = chargeToSend; + } + else + { + received = chargeToSend - (chargeItemSlot.getCharge(stackInSlot) + chargeToSend - chargeItemSlot.getMaxCharge(stackInSlot)); + } + + if (add) + { + chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); + } + + return received; + } + } + + return 0; + } + + + public static boolean dispatchChargeExact(ItemStack stack, Player player, int chargeToSend, boolean add) + { + if (stack.isEmpty()) + { + return false; + } + + List items = getChargeItems(player); + List acc = getChargeCurios(player); + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (stackInSlot == stack) + { + continue; + } + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + if (chargeItemSlot.getCharge(stackInSlot) + chargeToSend <= chargeItemSlot.getMaxCharge(stackInSlot) && chargeItemSlot.canReceiveChargeFromItem(stackInSlot, stack)) + { + if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canGiveChargeToItem(stack, stackInSlot)) + { + continue; + } + + if (add) + { + chargeItemSlot.adjustCharge(stackInSlot, chargeToSend); + } + + return true; + } + } + + return false; + } + + private static int discountChargeForTool(ItemStack stack, Player player, int inCost) + { + float multiplier = Math.max(0F, 1F - getFullDiscountForTools(player, stack)); + return (int) (inCost * multiplier); + } + + + public static int requestChargeForTool(ItemStack stack, Player player, int chargeToGet, boolean remove) + { + int cost = discountChargeForTool(stack, player, chargeToGet); + return requestCharge(stack, player, cost, remove); + } + + + public static boolean requestChargeExactForTool(ItemStack stack, Player player, int chargeToGet, boolean remove) + { + int cost = discountChargeForTool(stack, player, chargeToGet); + return requestChargeExact(stack, player, cost, remove); + } + + + public static int getInvocationCountForTool(ItemStack stack, Player player, int chargeToGet) + { + if (stack.isEmpty()) + { + return 0; + } + + int cost = discountChargeForTool(stack, player, chargeToGet); + int invocations = 0; + + List items = getChargeItems(player); + List acc = getChargeCurios(player); + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (stackInSlot == stack) + { + continue; + } + IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + int availableCharge = chargeItemSlot.getCharge(stackInSlot); + if (chargeItemSlot.canGiveChargeToItem(stackInSlot, stack) && availableCharge > cost) + { + if (stack.getItem() instanceof IChargeable && !((IChargeable) stack.getItem()).canReceiveChargeFromItem(stack, stackInSlot)) + { + continue; + } + + invocations += availableCharge / cost; + } + } + + return invocations; + } + + + public static float getFullDiscountForTools(Player player, ItemStack tool) + { + float discount = 0F; + //todo discount /*for (int i = 0; i < player.inventory.armorInventory.size(); i++) { ItemStack armor = player.inventory.armorInventory.get(i); if (!armor.isEmpty() && armor.getItem() instanceof IChargeDiscountArmor) { @@ -397,6 +397,6 @@ public static float getFullDiscountForTools(PlayerEntity player, ItemStack tool) MinecraftForge.EVENT_BUS.post(event); discount = event.getDiscount();*/ - return discount; - } + return discount; + } } diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 8d7ac2b55..01b866942 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -8,75 +8,75 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalmindItem; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import java.util.List; import java.util.function.Predicate; public class MetalmindChargeHelper { - public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) - { - PlayerEntity player = (PlayerEntity) data.getLiving(); - ItemStack metalmind = adjustMetalmindChargeExact(player, metalType, chargeToGet, remove, checkPlayer); - boolean success = metalmind != null; + public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) + { + Player player = (Player) data.getLiving(); + ItemStack metalmind = adjustMetalmindChargeExact(player, metalType, chargeToGet, remove, checkPlayer); + boolean success = metalmind != null; - //extra metalmind logic. - //if we are actually updating the charge inside - //and if we are adding to it (chargeToGet is negative if adding to metalmind) - // and if the metal is nicrosil, which is the storing investiture type. - if (success && remove && chargeToGet < 0 && metalType == Metals.MetalType.NICROSIL) - { - //player is storing investiture, - //set the powers they have to the stack. + //extra metalmind logic. + //if we are actually updating the charge inside + //and if we are adding to it (chargeToGet is negative if adding to metalmind) + // and if the metal is nicrosil, which is the storing investiture type. + if (success && remove && chargeToGet < 0 && metalType == Metals.MetalType.NICROSIL) + { + //player is storing investiture, + //set the powers they have to the stack. - CompoundNBT nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); - //for each power the user has access to - for (Manifestations.ManifestationTypes manifestationType : Manifestations.ManifestationTypes.values()) - { - for (int i = 0; i < 16; i++) - { - //even if it's granted from hemalurgy/temporary - //update the nbt. - //this will add/remove powers based on what the user currently has. - //todo, come back to this later when more sleep. bugs me about losing potential stored powers - if (data.hasManifestation(manifestationType, i)) - { - nbt.putDouble(manifestationType.getManifestation(i).getName(), data.manifestation(manifestationType, i).getStrength(data)); - } - } - } - } + CompoundTag nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); + //for each power the user has access to + for (Manifestations.ManifestationTypes manifestationType : Manifestations.ManifestationTypes.values()) + { + for (int i = 0; i < 16; i++) + { + //even if it's granted from hemalurgy/temporary + //update the nbt. + //this will add/remove powers based on what the user currently has. + //todo, come back to this later when more sleep. bugs me about losing potential stored powers + if (data.hasManifestation(manifestationType, i)) + { + nbt.putDouble(manifestationType.getManifestation(i).getName(), data.manifestation(manifestationType, i).getStrength(data)); + } + } + } + } - return success; - } + return success; + } - public static ItemStack adjustMetalmindChargeExact(PlayerEntity player, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) - { - List items = ItemChargeHelper.getChargeItems(player); - List acc = ItemChargeHelper.getChargeCurios(player); + public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) + { + List items = ItemChargeHelper.getChargeItems(player); + List acc = ItemChargeHelper.getChargeCurios(player); - //remove items that don't match the metal type we are looking for - items.removeIf(getIsItemInvalidMetalmind(metalType)); - acc.removeIf(getIsItemInvalidMetalmind(metalType)); + //remove items that don't match the metal type we are looking for + items.removeIf(getIsItemInvalidMetalmind(metalType)); + acc.removeIf(getIsItemInvalidMetalmind(metalType)); - return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); - } + return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); + } - private static Predicate getIsItemInvalidMetalmind(Metals.MetalType metalType) - { - return obj -> - { - if (obj.getItem() instanceof MetalmindItem) - { - final MetalmindItem item = (MetalmindItem) obj.getItem(); + private static Predicate getIsItemInvalidMetalmind(Metals.MetalType metalType) + { + return obj -> + { + if (obj.getItem() instanceof MetalmindItem) + { + final MetalmindItem item = (MetalmindItem) obj.getItem(); - //Correct metal or harmonium which I'm using as universal - return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; - } - return false; - }; - } + //Correct metal or harmonium which I'm using as universal + return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; + } + return false; + }; + } } diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index da90db903..bf6d61266 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -13,19 +13,18 @@ import leaf.cosmere.network.packets.ChangeSelectedManifestationMessage; import leaf.cosmere.network.packets.DeactivateCurrentManifestationsMessage; import leaf.cosmere.registry.KeybindingRegistry; +import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.item.ItemStack; -import net.minecraft.profiler.IProfiler; -import net.minecraft.util.Hand; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.util.Mth; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.client.event.InputEvent.MouseScrollEvent; -import net.minecraftforge.client.event.InputUpdateEvent; import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -33,146 +32,138 @@ public class ClientEvents { - @SubscribeEvent - public static void handleScroll(MouseScrollEvent event) - { - final ClientPlayerEntity player = Minecraft.getInstance().player; - final ItemStack held = player.getItemInHand(Hand.MAIN_HAND); - - SpiritwebCapability.get(player).ifPresent(spiritweb -> - { - - if (held.isEmpty() && player.isCrouching() && event.isRightDown()) - { - final int delta = MathHelper.clamp((int) Math.round(event.getScrollDelta()), -1, 1); - - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), delta)); - - event.setCanceled(true); - - } - }); - } - - @SubscribeEvent - public static void input(InputUpdateEvent event) - { - if (event.getMovementInput().jumping) - { - } - } - - @SubscribeEvent - public static void onKey(InputEvent.KeyInputEvent event) - { - final ClientPlayerEntity player = Minecraft.getInstance().player; - - if (player == null) - { - return; - } - - SpiritwebCapability.get(player).ifPresent(spiritweb -> - { - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_TOGGLE)) - { - //if crouching, only turn off. - if (player.isCrouching() && spiritweb.canTickSelectedManifestation()) - { - Network.sendToServer(new DeactivateCurrentManifestationsMessage()); - } - //otherwise do a normal toggle - else if (!player.isCrouching()) - { - //todo decide if there is an activation state? - } - } - - //check keybinds with modifiers first? - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_PREVIOUS)) - { - Network.sendToServer(new ChangeSelectedManifestationMessage(-1)); - } - else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_NEXT)) - { - Network.sendToServer(new ChangeSelectedManifestationMessage(1)); - } - - - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE)) - { - int dir = (player.isCrouching() ? 3 : 1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); - } - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE)) - { - int dir = (player.isCrouching() ? -3 : -1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); - } - }); - } - - private static boolean isKeyPressed(InputEvent.KeyInputEvent event, KeyBinding keyBinding) - { - return event.getKey() == keyBinding.getKey().getValue() && keyBinding.consumeClick(); - } - - @SubscribeEvent - public static void onRenderGUI(final RenderGameOverlayEvent.Post event) - { - renderSpiritwebHUD(event); - } - - @SubscribeEvent - public static void onRenderWorldLastEvent(final RenderWorldLastEvent event) - { - renderManifestationsHUD(event); - } - - public static void renderManifestationsHUD(final RenderWorldLastEvent event) - { - Minecraft mc = Minecraft.getInstance(); - IProfiler profiler = mc.getProfiler(); - ClientPlayerEntity playerEntity = mc.player; - { - profiler.push("cosmere-hud"); - - if (Minecraft.getInstance().gameMode.canHurtPlayer()) - { - SpiritwebCapability.get(playerEntity).ifPresent(spiritweb -> - { - profiler.push(spiritweb.manifestation().getName()); - spiritweb.renderWorldEffects(event); - profiler.pop(); - - }); - } - profiler.pop(); - - RenderSystem.color4f(1F, 1F, 1F, 1F); - } - - } - - public static void renderSpiritwebHUD(final RenderGameOverlayEvent.Post event) - { - final RenderGameOverlayEvent.ElementType type = event.getType(); - if (type != RenderGameOverlayEvent.ElementType.ALL) - { - return; - } - - SpiritwebCapability.get(Minecraft.getInstance().player).ifPresent(cap -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) cap; - spiritweb.renderSelectedHUD(event.getMatrixStack()); - - if (spiritweb.hasAnyPowers()) - { - SpiritwebMenu.instance.postRender(event, spiritweb); - } - }); - - } + @SubscribeEvent + public static void handleScroll(MouseScrollEvent event) + { + final LocalPlayer player = Minecraft.getInstance().player; + final ItemStack held = player.getItemInHand(InteractionHand.MAIN_HAND); + + SpiritwebCapability.get(player).ifPresent(spiritweb -> + { + + if (held.isEmpty() && player.isCrouching() && event.isRightDown()) + { + final int delta = Mth.clamp((int) Math.round(event.getScrollDelta()), -1, 1); + + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), delta)); + + event.setCanceled(true); + + } + }); + } + + @SubscribeEvent + public static void onKey(InputEvent.KeyInputEvent event) + { + final LocalPlayer player = Minecraft.getInstance().player; + + if (player == null) + { + return; + } + + SpiritwebCapability.get(player).ifPresent(spiritweb -> + { + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_TOGGLE)) + { + //if crouching, only turn off. + if (player.isCrouching() && spiritweb.canTickSelectedManifestation()) + { + Network.sendToServer(new DeactivateCurrentManifestationsMessage()); + } + //otherwise do a normal toggle + else if (!player.isCrouching()) + { + //todo decide if there is an activation state? + } + } + + //check keybinds with modifiers first? + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_PREVIOUS)) + { + Network.sendToServer(new ChangeSelectedManifestationMessage(-1)); + } + else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_NEXT)) + { + Network.sendToServer(new ChangeSelectedManifestationMessage(1)); + } + + + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE)) + { + int dir = (player.isCrouching() ? 3 : 1); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + } + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE)) + { + int dir = (player.isCrouching() ? -3 : -1); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + } + }); + } + + private static boolean isKeyPressed(InputEvent.KeyInputEvent event, KeyMapping keyBinding) + { + return event.getKey() == keyBinding.getKey().getValue() && keyBinding.consumeClick(); + } + + @SubscribeEvent + public static void onRenderGUI(final RenderGameOverlayEvent.Post event) + { + renderSpiritwebHUD(event); + } + + @SubscribeEvent + public static void onRenderLevelLastEvent(final RenderLevelLastEvent event) + { + renderManifestationsHUD(event); + } + + public static void renderManifestationsHUD(final RenderLevelLastEvent event) + { + Minecraft mc = Minecraft.getInstance(); + ProfilerFiller profiler = mc.getProfiler(); + LocalPlayer playerEntity = mc.player; + { + profiler.push("cosmere-hud"); + + if (Minecraft.getInstance().gameMode.canHurtPlayer()) + { + SpiritwebCapability.get(playerEntity).ifPresent(spiritweb -> + { + profiler.push(spiritweb.manifestation().getName()); + spiritweb.renderWorldEffects(event); + profiler.pop(); + + }); + } + profiler.pop(); + + RenderSystem.setShaderColor(1F, 1F, 1F, 1F); + } + + } + + public static void renderSpiritwebHUD(final RenderGameOverlayEvent.Post event) + { + final RenderGameOverlayEvent.ElementType type = event.getType(); + if (type != RenderGameOverlayEvent.ElementType.ALL) + { + return; + } + + SpiritwebCapability.get(Minecraft.getInstance().player).ifPresent(cap -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) cap; + spiritweb.renderSelectedHUD(event.getMatrixStack()); + + if (spiritweb.hasAnyPowers()) + { + SpiritwebMenu.instance.postRender(event, spiritweb); + } + }); + + } } diff --git a/src/main/java/leaf/cosmere/client/ClientHelper.java b/src/main/java/leaf/cosmere/client/ClientHelper.java index 344da20ed..d34999d78 100644 --- a/src/main/java/leaf/cosmere/client/ClientHelper.java +++ b/src/main/java/leaf/cosmere/client/ClientHelper.java @@ -12,26 +12,26 @@ public class ClientHelper { - public static ClientHelper instance = new ClientHelper(); - public static TextureAtlasSprite arrowUp; - public static TextureAtlasSprite arrowDown; - public static TextureAtlasSprite on; - public static TextureAtlasSprite off; - private final HashMap manifestationSprites = new HashMap<>(); - public static TextureAtlasSprite blank; - public static SpriteIconPositioning blankSIP; + public static ClientHelper instance = new ClientHelper(); + public static TextureAtlasSprite arrowUp; + public static TextureAtlasSprite arrowDown; + public static TextureAtlasSprite on; + public static TextureAtlasSprite off; + private final HashMap manifestationSprites = new HashMap<>(); + public static TextureAtlasSprite blank; + public static SpriteIconPositioning blankSIP; - public void setIconForManifestation(AManifestation manifestation, SpriteIconPositioning sip) - { - manifestationSprites.put(manifestation, sip); - } + public void setIconForManifestation(AManifestation manifestation, SpriteIconPositioning sip) + { + manifestationSprites.put(manifestation, sip); + } - public SpriteIconPositioning getIconForManifestation(AManifestation manifestation) - { - if(!manifestationSprites.containsKey(manifestation)) - { - return blankSIP; - } - return manifestationSprites.get(manifestation); - } + public SpriteIconPositioning getIconForManifestation(AManifestation manifestation) + { + if (!manifestationSprites.containsKey(manifestation)) + { + return blankSIP; + } + return manifestationSprites.get(manifestation); + } } diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index a98d08478..968d70d26 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -6,24 +6,22 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.client.gui.SpriteIconPositioning; -import leaf.cosmere.client.renderer.entity.*; import leaf.cosmere.constants.Metals; -import leaf.cosmere.registry.*; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.ResourceLocationHelper; -import leaf.cosmere.manifestation.AManifestation; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.RenderTypeLookup; -import net.minecraft.client.renderer.texture.AtlasTexture; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.resources.IResource; -import net.minecraft.util.ResourceLocation; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.client.registry.*; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -36,140 +34,145 @@ public class ClientSetup { - @SubscribeEvent - public static void init(final FMLClientSetupEvent event) - { - event.enqueueWork(() -> - { - }); + @SubscribeEvent + public static void init(final FMLClientSetupEvent event) + { + event.enqueueWork(() -> + { + }); - //special thank you to @Random on the forge discord who told me that you have to tell the block it has transparency - for (Metals.MetalType metalType : Metals.MetalType.values()) - { + //special thank you to @Random on the forge discord who told me that you have to tell the block it has transparency + for (Metals.MetalType metalType : Metals.MetalType.values()) + { if (!metalType.hasOre()) + { continue; + } - RenderType cutoutMipped = RenderType.cutoutMipped(); - RenderTypeLookup.setRenderLayer(metalType.getOreBlock(), cutoutMipped); - } - - RenderingRegistry.registerEntityRenderingHandler(EntityRegistry.SPREN_FIRE.get(), SprenFlameRenderer::new); - - LogHelper.info("Client setup complete!"); - } - - //special thank you to the chisels and bits team who have an example of how to to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final AtlasTexture map = event.getMap(); - if (!map.location().equals(PlayerContainer.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(ResourceLocationHelper.prefix("icon/blank")); - event.addSprite(ResourceLocationHelper.prefix("icon/arrow_up")); - event.addSprite(ResourceLocationHelper.prefix("icon/arrow_down")); - event.addSprite(ResourceLocationHelper.prefix("icon/on")); - event.addSprite(ResourceLocationHelper.prefix("icon/off")); - - for (final Metals.MetalType metalType : Metals.MetalType.values()) - { + RenderType cutoutMipped = RenderType.cutoutMipped(); + ItemBlockRenderTypes.setRenderLayer(metalType.getOreBlock(), cutoutMipped); + } + + LogHelper.info("Client setup complete!"); + } + + //special thank you to the chisels and bits team who have an example of how to to register other sprites + @SubscribeEvent + public static void registerIconTextures(TextureStitchEvent.Pre event) + { + final TextureAtlas map = event.getAtlas(); + if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) + { + return; + } + + event.addSprite(ResourceLocationHelper.prefix("icon/blank")); + event.addSprite(ResourceLocationHelper.prefix("icon/arrow_up")); + event.addSprite(ResourceLocationHelper.prefix("icon/arrow_down")); + event.addSprite(ResourceLocationHelper.prefix("icon/on")); + event.addSprite(ResourceLocationHelper.prefix("icon/off")); + + for (final Metals.MetalType metalType : Metals.MetalType.values()) + { if (!metalType.hasAssociatedManifestation()) + { continue; + } - String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); - event.addSprite(ResourceLocationHelper.prefix("icon/allomancy/" + metalToLower)); - event.addSprite(ResourceLocationHelper.prefix("icon/feruchemy/" + metalToLower)); - } - } - - //special thank you to the chisels and bits team who have an example of how to to register other sprites - @SubscribeEvent - public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post event) - { - final AtlasTexture map = event.getMap(); - if (!map.location().equals(PlayerContainer.BLOCK_ATLAS)) - { - return; - } - - ClientHelper.blank = map.getSprite(ResourceLocationHelper.prefix("icon/blank")); - ClientHelper.arrowUp = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_up")); - ClientHelper.arrowDown = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_down")); - ClientHelper.on = map.getSprite(ResourceLocationHelper.prefix("icon/on")); - ClientHelper.off = map.getSprite(ResourceLocationHelper.prefix("icon/off")); - - ClientHelper.blankSIP = getSIP(map,"blank"); - - for (final Metals.MetalType metalType : Metals.MetalType.values()) - { + String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); + event.addSprite(ResourceLocationHelper.prefix("icon/allomancy/" + metalToLower)); + event.addSprite(ResourceLocationHelper.prefix("icon/feruchemy/" + metalToLower)); + } + } + + //special thank you to the chisels and bits team who have an example of how to to register other sprites + @SubscribeEvent + public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post event) + { + final TextureAtlas map = event.getAtlas(); + if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) + { + return; + } + + ClientHelper.blank = map.getSprite(ResourceLocationHelper.prefix("icon/blank")); + ClientHelper.arrowUp = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_up")); + ClientHelper.arrowDown = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_down")); + ClientHelper.on = map.getSprite(ResourceLocationHelper.prefix("icon/on")); + ClientHelper.off = map.getSprite(ResourceLocationHelper.prefix("icon/off")); + + ClientHelper.blankSIP = getSIP(map, "blank"); + + for (final Metals.MetalType metalType : Metals.MetalType.values()) + { if (!metalType.hasAssociatedManifestation()) - continue; - - //get allomantic version - AManifestation allo = ManifestationRegistry.ALLOMANCY_POWERS.get(metalType).get(); - AManifestation feru = ManifestationRegistry.FERUCHEMY_POWERS.get(metalType).get(); - - ClientHelper.instance.setIconForManifestation(allo, getSIP(map, "allomancy/" + metalType.toString())); - ClientHelper.instance.setIconForManifestation(feru, getSIP(map, "feruchemy/" + metalType.toString())); - } - } - - @OnlyIn(Dist.CLIENT) - private static SpriteIconPositioning getSIP(final AtlasTexture map, final String path) - { - final SpriteIconPositioning sip = new SpriteIconPositioning(); - - final ResourceLocation sprite = new ResourceLocation("cosmere", "icon/" + path.toLowerCase(Locale.ROOT)); - final ResourceLocation png = new ResourceLocation("cosmere", "textures/icon/" + path.toLowerCase(Locale.ROOT) + ".png"); - - sip.sprite = map.getSprite(sprite); - - try - { - final IResource iresource = Minecraft.getInstance().getResourceManager().getResource(png); - final BufferedImage bi = TextureUtils.readBufferedImage(iresource.getInputStream()); - - int bottom = 0; - int right = 0; - sip.left = bi.getWidth(); - sip.top = bi.getHeight(); - - for (int x = 0; x < bi.getWidth(); x++) { - for (int y = 0; y < bi.getHeight(); y++) - { - final int color = bi.getRGB(x, y); - final int a = color >> 24 & 0xff; - if (a > 0) - { - sip.left = Math.min(sip.left, x); - right = Math.max(right, x); - - sip.top = Math.min(sip.top, y); - bottom = Math.max(bottom, y); - } - } + continue; } - sip.height = bottom - sip.top + 1; - sip.width = right - sip.left + 1; - - sip.left /= bi.getWidth(); - sip.width /= bi.getWidth(); - sip.top /= bi.getHeight(); - sip.height /= bi.getHeight(); - } catch (final IOException e) - { - sip.height = 1; - sip.width = 1; - sip.left = 0; - sip.top = 0; - } - - return sip; - } + //get allomantic version + AManifestation allo = ManifestationRegistry.ALLOMANCY_POWERS.get(metalType).get(); + AManifestation feru = ManifestationRegistry.FERUCHEMY_POWERS.get(metalType).get(); + + ClientHelper.instance.setIconForManifestation(allo, getSIP(map, "allomancy/" + metalType.toString())); + ClientHelper.instance.setIconForManifestation(feru, getSIP(map, "feruchemy/" + metalType.toString())); + } + } + + @OnlyIn(Dist.CLIENT) + private static SpriteIconPositioning getSIP(final TextureAtlas map, final String path) + { + final SpriteIconPositioning sip = new SpriteIconPositioning(); + + final ResourceLocation sprite = new ResourceLocation("cosmere", "icon/" + path.toLowerCase(Locale.ROOT)); + final ResourceLocation png = new ResourceLocation("cosmere", "textures/icon/" + path.toLowerCase(Locale.ROOT) + ".png"); + + sip.sprite = map.getSprite(sprite); + + try + { + final Resource iresource = Minecraft.getInstance().getResourceManager().getResource(png); + final BufferedImage bi = TextureUtils.readBufferedImage(iresource.getInputStream()); + + int bottom = 0; + int right = 0; + sip.left = bi.getWidth(); + sip.top = bi.getHeight(); + + for (int x = 0; x < bi.getWidth(); x++) + { + for (int y = 0; y < bi.getHeight(); y++) + { + final int color = bi.getRGB(x, y); + final int a = color >> 24 & 0xff; + if (a > 0) + { + sip.left = Math.min(sip.left, x); + right = Math.max(right, x); + + sip.top = Math.min(sip.top, y); + bottom = Math.max(bottom, y); + } + } + } + + sip.height = bottom - sip.top + 1; + sip.width = right - sip.left + 1; + + sip.left /= bi.getWidth(); + sip.width /= bi.getWidth(); + sip.top /= bi.getHeight(); + sip.height /= bi.getHeight(); + } + catch (final IOException e) + { + sip.height = 1; + sip.width = 1; + sip.left = 0; + sip.top = 0; + } + + return sip; + } } diff --git a/src/main/java/leaf/cosmere/client/TextureUtils.java b/src/main/java/leaf/cosmere/client/TextureUtils.java index b165f30de..146e216bd 100644 --- a/src/main/java/leaf/cosmere/client/TextureUtils.java +++ b/src/main/java/leaf/cosmere/client/TextureUtils.java @@ -17,27 +17,27 @@ public final class TextureUtils { - private TextureUtils() - { - throw new IllegalStateException("Tried to initialize: TextureUtils but this is a Utility class."); - } - - - //special thank you to the chisels and bits team who have an example of how to to register other sprites - public static BufferedImage readBufferedImage(InputStream imageStream) throws IOException - { - BufferedImage bufferedimage; - - try - { - bufferedimage = ImageIO.read(imageStream); - } - finally - { - IOUtils.closeQuietly(imageStream); - } - - return bufferedimage; - } + private TextureUtils() + { + throw new IllegalStateException("Tried to initialize: TextureUtils but this is a Utility class."); + } + + + //special thank you to the chisels and bits team who have an example of how to to register other sprites + public static BufferedImage readBufferedImage(InputStream imageStream) throws IOException + { + BufferedImage bufferedimage; + + try + { + bufferedimage = ImageIO.read(imageStream); + } + finally + { + IOUtils.closeQuietly(imageStream); + } + + return bufferedimage; + } } diff --git a/src/main/java/leaf/cosmere/client/gui/ButtonAction.java b/src/main/java/leaf/cosmere/client/gui/ButtonAction.java index fd8e35706..9bd00f6fe 100644 --- a/src/main/java/leaf/cosmere/client/gui/ButtonAction.java +++ b/src/main/java/leaf/cosmere/client/gui/ButtonAction.java @@ -6,8 +6,8 @@ public enum ButtonAction { - INACTIVE, - ACTIVE, - MODE_INCREASE, - MODE_DECREASE, + INACTIVE, + ACTIVE, + MODE_INCREASE, + MODE_DECREASE, } diff --git a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java index 406864ab7..6026931c9 100644 --- a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java +++ b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java @@ -4,15 +4,15 @@ package leaf.cosmere.client.gui; -import com.mojang.blaze3d.matrix.MatrixStack; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Matrix4f; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.util.math.vector.Matrix4f; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.event.RenderLevelLastEvent; import java.awt.*; import java.util.List; @@ -20,35 +20,35 @@ public class DrawUtils { - //https://forums.minecraftforge.net/topic/81895-problems-with-rendering-a-line-1152/?tab=comments#comment-388662 - public static void drawLinesFromPoint(RenderWorldLastEvent event, Vector3d point, List endPoints, Color color) - { - IRenderTypeBuffer.Impl buffer = Minecraft.getInstance().renderBuffers().bufferSource(); - IVertexBuilder builder = buffer.getBuffer(RenderType.LINES); - - //move where the line is in the world. otherwise it is drawn around origin 0,0,0 I think? - Vector3d view = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); - MatrixStack matrixStack = event.getMatrixStack(); - RenderSystem.lineWidth(3); - - matrixStack.pushPose(); - matrixStack.translate(-view.x, -view.y, -view.z); - Matrix4f matrix = matrixStack.last().pose(); - - for (Vector3d endPoint : endPoints) - { - builder.vertex(matrix,(float) point.x(), (float) point.y(), (float) point.z()) - .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) - .endVertex(); - - builder.vertex(matrix, (float) endPoint.x(), (float) endPoint.y(), (float) endPoint.z()) - .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) - .endVertex(); - } - - matrixStack.popPose(); - RenderSystem.disableDepthTest(); - buffer.endBatch(RenderType.LINES); - - } + //https://forums.minecraftforge.net/topic/81895-problems-with-rendering-a-line-1152/?tab=comments#comment-388662 + public static void drawLinesFromPoint(RenderLevelLastEvent event, Vec3 point, List endPoints, Color color) + { + MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource(); + VertexConsumer builder = buffer.getBuffer(RenderType.LINES); + + //move where the line is in the world. otherwise it is drawn around origin 0,0,0 I think? + Vec3 view = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); + PoseStack matrixStack = event.getPoseStack(); + RenderSystem.lineWidth(3); + + matrixStack.pushPose(); + matrixStack.translate(-view.x, -view.y, -view.z); + Matrix4f matrix = matrixStack.last().pose(); + + for (Vec3 endPoint : endPoints) + { + builder.vertex(matrix, (float) point.x(), (float) point.y(), (float) point.z()) + .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) + .endVertex(); + + builder.vertex(matrix, (float) endPoint.x(), (float) endPoint.y(), (float) endPoint.z()) + .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) + .endVertex(); + } + + matrixStack.popPose(); + RenderSystem.disableDepthTest(); + buffer.endBatch(RenderType.LINES); + + } } diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index c94e0b86a..bd1918163 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -12,8 +12,9 @@ package leaf.cosmere.client.gui; import com.google.common.base.Stopwatch; -import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.*; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientHelper; import leaf.cosmere.manifestation.AManifestation; @@ -23,23 +24,18 @@ import leaf.cosmere.network.packets.SetSelectedManifestationMessage; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.math.Vector2; -import net.minecraft.client.MainWindow; +import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.renderer.BufferBuilder; -import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.client.renderer.vertex.DefaultVertexFormats; -import net.minecraft.client.resources.I18n; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.inventory.container.PlayerContainer; -import net.minecraft.util.Direction; -import net.minecraft.util.text.StringTextComponent; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.core.Direction; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.client.event.RenderGameOverlayEvent; import org.lwjgl.opengl.GL11; import java.util.ArrayList; -import java.util.Locale; import java.util.concurrent.TimeUnit; import static leaf.cosmere.registry.KeybindingRegistry.MANIFESTATION_MENU; @@ -47,637 +43,637 @@ public class SpiritwebMenu extends Screen { - private final float TIME_SCALE = 0.01f; - final double TEXT_DISTANCE = 30; - - public static final SpiritwebMenu instance = new SpiritwebMenu(); - private SpiritwebCapability spiritweb = null; - - private float visibility = 0.0f; - private boolean canShow = true; - private Stopwatch lastChange = Stopwatch.createStarted(); - public AManifestation switchToPower = null; - public ButtonAction doAction = null; - public boolean actionUsed = false; - - protected ArrayList radialButtonRegions = new ArrayList<>(); - protected ArrayList sidedMenuButtons = new ArrayList<>(); - - protected SpiritwebMenu() - { - super(new StringTextComponent("Menu")); - } - - public boolean raiseVisibility() - { - if (!canShow()) - { - return false; - } - - visibility = MathHelper.clamp01(visibility + lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); - lastChange = Stopwatch.createStarted(); - return true; - } - - public void decreaseVisibility() - { - setCanShow(true); - visibility = MathHelper.clamp01(visibility - lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); - lastChange = Stopwatch.createStarted(); - } - - public boolean canShow() - { - return canShow; - } - - public void setCanShow(final boolean canShow) - { - this.canShow = canShow; - } - - public boolean isVisible() - { - return visibility > 0.001; - } - - public void setScaledResolution(final int scaledWidth, final int scaledHeight) - { - width = scaledWidth; - height = scaledHeight; - } - - @Override - public Minecraft getMinecraft() - { - return Minecraft.getInstance(); - } - - - public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability spiritweb) - { - this.spiritweb = spiritweb; - final boolean wasVisible = isVisible(); - - if (!MANIFESTATION_MENU.isUnbound() && MANIFESTATION_MENU.isDown()) - { - actionUsed = false; - if (raiseVisibility()) - { - getMinecraft().mouseHandler.releaseMouse(); - } - } - else - { - if (!actionUsed) - { - if (switchToPower != null) - { - //todo open menu sound - //ClientSide.instance.playRadialMenu(); - - Network.sendToServer(new SetSelectedManifestationMessage(switchToPower)); - } - - if (doAction != null) - { - //todo open menu sound - //ClientSide.instance.playRadialMenu(); - switch (doAction) - { + private final float TIME_SCALE = 0.01f; + final double TEXT_DISTANCE = 30; + + public static final SpiritwebMenu instance = new SpiritwebMenu(); + private SpiritwebCapability spiritweb = null; + + private float visibility = 0.0f; + private boolean canShow = true; + private Stopwatch lastChange = Stopwatch.createStarted(); + public AManifestation switchToPower = null; + public ButtonAction doAction = null; + public boolean actionUsed = false; + + protected ArrayList radialButtonRegions = new ArrayList<>(); + protected ArrayList sidedMenuButtons = new ArrayList<>(); + + protected SpiritwebMenu() + { + super(new TextComponent("Menu")); + } + + public boolean raiseVisibility() + { + if (!canShow()) + { + return false; + } + + visibility = MathHelper.clamp01(visibility + lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); + lastChange = Stopwatch.createStarted(); + return true; + } + + public void decreaseVisibility() + { + setCanShow(true); + visibility = MathHelper.clamp01(visibility - lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); + lastChange = Stopwatch.createStarted(); + } + + public boolean canShow() + { + return canShow; + } + + public void setCanShow(final boolean canShow) + { + this.canShow = canShow; + } + + public boolean isVisible() + { + return visibility > 0.001; + } + + public void setScaledResolution(final int scaledWidth, final int scaledHeight) + { + width = scaledWidth; + height = scaledHeight; + } + + @Override + public Minecraft getMinecraft() + { + return Minecraft.getInstance(); + } + + + public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability spiritweb) + { + this.spiritweb = spiritweb; + final boolean wasVisible = isVisible(); + + if (!MANIFESTATION_MENU.isUnbound() && MANIFESTATION_MENU.isDown()) + { + actionUsed = false; + if (raiseVisibility()) + { + getMinecraft().mouseHandler.releaseMouse(); + } + } + else + { + if (!actionUsed) + { + if (switchToPower != null) + { + //todo open menu sound + //ClientSide.instance.playRadialMenu(); + + Network.sendToServer(new SetSelectedManifestationMessage(switchToPower)); + } + + if (doAction != null) + { + //todo open menu sound + //ClientSide.instance.playRadialMenu(); + switch (doAction) + { /* case ROLL_X: PacketRotateVoxelBlob pri = new PacketRotateVoxelBlob(Direction.Axis.X, Rotation.CLOCKWISE_90); ChiselsAndBits.getNetworkChannel().sendToServer(pri); break;*/ - case INACTIVE: - //deactivate current - if (spiritweb.canTickSelectedManifestation()) - { - Network.sendToServer(new DeactivateCurrentManifestationsMessage()); - } - break; - case ACTIVE: - //activate current - if (!spiritweb.canTickSelectedManifestation()) - { - //Network.sendToServer(new ToggleManifestationMessage()); - } - break; - case MODE_INCREASE: - //change mode to positive - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), 1)); - break; - case MODE_DECREASE: - //change mode to negative. - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), -1)); - break; - } - } - } - - actionUsed = true; - decreaseVisibility(); - } - - if (isVisible()) - { - final MainWindow window = event.getWindow(); - init(Minecraft.getInstance(), window.getGuiScaledWidth(), window.getGuiScaledHeight()); - setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); - - if (!wasVisible) - { - getMinecraft().screen = SpiritwebMenu.instance; - getMinecraft().mouseHandler.releaseMouse(); - } - - if (getMinecraft().mouseHandler.isMouseGrabbed()) - { - KeyBinding.releaseAll(); - } - } - else - { - if (wasVisible) - { - getMinecraft().mouseHandler.grabMouse(); - } - } - } - - @Override - public boolean mouseClicked(final double mouseX, final double mouseY, final int button) - { - this.visibility = 0f; - canShow = false; - this.minecraft.setScreen(null); - - if (this.minecraft.screen == null) - { - this.minecraft.setWindowActive(true); - this.minecraft.getSoundManager().resume(); - this.minecraft.mouseHandler.grabMouse(); - } - return true; - } - - private static class SidedMenuButton - { - - public double x1, x2; - public double y1, y2; - public boolean highlighted; - - public final ButtonAction action; - public TextureAtlasSprite icon; - public int color; - public String name; - public Direction textSide; - - public SidedMenuButton( - final String name, - final ButtonAction action, - final double x, - final double y, - final TextureAtlasSprite ico, - final Direction textSide) - { - this.name = name; - this.action = action; - x1 = x; - x2 = x + 18; - y1 = y; - y2 = y + 18; - icon = ico; - color = 0xffffff; - this.textSide = textSide; - } - - public SidedMenuButton( - final String name, - final ButtonAction action, - final double x, - final double y, - final int col, - final Direction textSide) - { - this.name = name; - this.action = action; - x1 = x; - x2 = x + 18; - y1 = y; - y2 = y + 18; - color = col; - this.textSide = textSide; - } - - } - - static class RadialButtonRegion - { - - public final AManifestation manifestation; - public double centerX; - public double centerY; - public boolean highlighted; - - public RadialButtonRegion(final AManifestation manifestation) - { - this.manifestation = manifestation; - } - - } - - protected void SetupButtons() - { - - //todo buttons - //todo button icons - sidedMenuButtons.add(spiritweb.canTickSelectedManifestation() - ? new SidedMenuButton("gui.cosmere.other.inactive", ButtonAction.INACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.off, Direction.WEST) - : new SidedMenuButton("gui.cosmere.other.active", ButtonAction.ACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.on, Direction.WEST)); - - sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.increase", ButtonAction.MODE_INCREASE, TEXT_DISTANCE * 2, -10, ClientHelper.arrowUp, Direction.EAST)); - sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.decrease", ButtonAction.MODE_DECREASE, TEXT_DISTANCE * 2, 10, ClientHelper.arrowDown, Direction.EAST)); - - - for (AManifestation manifestation : spiritweb.getAvailableManifestations()) - { - radialButtonRegions.add(new RadialButtonRegion(manifestation)); - } - } - - @Override - public void render(final MatrixStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) - { - if (spiritweb == null) - { - return; - } - - matrixStack.pushPose(); - - final int start = (int) (visibility * 98) << 24; - final int end = (int) (visibility * 128) << 24; - - fillGradient(matrixStack, 0, 0, width, height, start, end); - - RenderSystem.disableTexture(); - RenderSystem.enableBlend(); - RenderSystem.disableAlphaTest(); - RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); - RenderSystem.shadeModel(GL11.GL_SMOOTH); - final Tessellator tessellator = Tessellator.getInstance(); - final BufferBuilder buffer = tessellator.getBuilder(); - - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); - - final double mouseVecX = mouseX - width / 2f; - final double mouseVecY = (mouseY - height / 2f); - - final double middle_x = width / 2f; - final double middle_y = height / 2f; - - radialButtonRegions.clear(); - sidedMenuButtons.clear(); - - SetupButtons(); - - switchToPower = null; - doAction = null; - - setupRadialButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); - - setupSidedButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); - - //draw out what we've asked for - tessellator.end(); - - //then we switch to icons - RenderSystem.shadeModel(GL11.GL_FLAT); - - RenderSystem.enableTexture(); - RenderSystem.color4f(1, 1, 1, 1.0f); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); - RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(PlayerContainer.BLOCK_ATLAS).getId()); - - buffer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR); - - //put the icons on the region buttons - setupRadialButtonIcons(buffer, middle_x, middle_y); - - //put the icons on the sided buttons - setupSidedButtonIcons(buffer, middle_x, middle_y); - - tessellator.end(); - - // draw radial button strings - setupRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); - - //draw sided button strings - setupSidedButtonStrings(matrixStack, middle_x, middle_y); - - //do extra text info stuff - setupAnyExtraInfoTexts(matrixStack, (int) middle_y); - - matrixStack.popPose(); - } - - private void setupAnyExtraInfoTexts(MatrixStack matrixStack, int middle_y) - { - int x = 10; - final int[] y = {middle_y / 2}; - - spiritweb.METALS_INGESTED.forEach((key, value) -> - { - if (value > 0) - { - //todo localisation check - final String text = key.getName() + ": " + value; - font.drawShadow(matrixStack, text, x, (int) y[0], 0xffffffff); - y[0] += 10; - } - }); - } - - private void setupSidedButtonStrings(MatrixStack matrixStack, double middle_x, double middle_y) - { - for (final SidedMenuButton sideButton : sidedMenuButtons) - { - //but only if that sided button is highlighted - if (sideButton.highlighted) - { - final String text = I18n.get(sideButton.name); - - switch (sideButton.textSide) - { - case WEST: - font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x1 - 8) - font.width(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); - break; - case EAST: - font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); - break; - case UP: - font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); - break; - case DOWN: - font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); - break; - } - - } - } - } - - private void setupRadialButtonStrings(MatrixStack matrixStack, int middle_x, int middle_y) - { - for (final RadialButtonRegion button : radialButtonRegions) - { - //but only if that button is highlighted - if (button.highlighted) - { - final double x = button.centerX; - final double y = button.centerY; - - int fixed_x = (int) x;//(x + TEXT_DISTANCE); - final int fixed_y = (int) y;//(y + TEXT_DISTANCE); - - //todo localisation check - final String text = I18n.get(button.manifestation.translation().getKey()); - - fixed_x = (int) (x < 0 - ? fixed_x - (font.width(text) + TEXT_DISTANCE) - : fixed_x + TEXT_DISTANCE); - - font.drawShadow(matrixStack, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); - - //no need to keep searching, we only keep one highlighted at a time. - break; - } - } - } - - private void setupSidedButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) - { - for (final SidedMenuButton button : sidedMenuButtons) - { - final float f = switchToPower == null ? 1.0f : 0.5f; - final float a = 1.0f; - - final double u1 = 0; - final double u2 = 16; - final double v1 = 0; - final double v2 = 16; - - final TextureAtlasSprite sprite = button.icon == null ? ClientHelper.blank : button.icon; - - final double btnx1 = button.x1 + 1; - final double btnx2 = button.x2 - 1; - final double btny1 = button.y1 + 1; - final double btny2 = button.y2 - 1; - - final float red = f * ((button.color >> 16 & 0xff) / 255.0f); - final float green = f * ((button.color >> 8 & 0xff) / 255.0f); - final float blue = f * ((button.color & 0xff) / 255.0f); - - buffer.vertex(middle_x + btnx1, middle_y + btny1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx1, middle_y + btny2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx2, middle_y + btny2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx2, middle_y + btny1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(red, green, blue, a).endVertex(); - } - } - - private void setupRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) - { - for (final RadialButtonRegion mnuRgn : radialButtonRegions) - { - final double x = mnuRgn.centerX; - final double y = mnuRgn.centerY; - - final SpriteIconPositioning sip = ClientHelper.instance.getIconForManifestation(mnuRgn.manifestation); - - final double scalex = 15 * sip.width * 0.5; - final double scaley = 15 * sip.height * 0.5; - final double x1 = x - scalex; - final double x2 = x + scalex; - final double y1 = y - scaley; - final double y2 = y + scaley; - - final TextureAtlasSprite sprite = sip.sprite; - - final float f = 1.0f; - final float a = 1.0f; - - final double u1 = sip.left * 16.0; - final double u2 = (sip.left + sip.width) * 16.0; - final double v1 = sip.top * 16.0; - final double v2 = (sip.top + sip.height) * 16.0; - - buffer.vertex(middle_x + x1, middle_y + y1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1, middle_y + y2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2, middle_y + y2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2, middle_y + y1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(f, f, f, a).endVertex(); - } - } - - private void setupSidedButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) - { - for (final SidedMenuButton button : sidedMenuButtons) - { - final float a = 0.5f; - float f = 0f; - - if (button.x1 <= mouseVecX && button.x2 >= mouseVecX && button.y1 <= mouseVecY && button.y2 >= mouseVecY) - { - f = 1; - button.highlighted = true; - doAction = button.action; - } - - //set first triangle - buffer.vertex(middle_x + button.x1, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + button.x1, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); - //set second triangle - buffer.vertex(middle_x + button.x2, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + button.x2, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); - } - } - - private void setupRadialButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) - { - if (!radialButtonRegions.isEmpty()) - { - - final float ring_inner_edge = -10; - final float ring_outer_edge = -50; - - // todo test if I can get down to one button only - final int totalButtons = radialButtonRegions.size(); - - Vector2 innerEdge; - Vector2 outerEdge; - - boolean smallMode = radialButtonRegions.size() == 2; - - innerEdge = new Vector2(0, ring_inner_edge); - outerEdge = new Vector2(0, ring_outer_edge); - - - for (final RadialButtonRegion region : radialButtonRegions) - { - //left side inner point - double x1m1; - double y1m1; - - //left side outer point - double x2m1; - double y2m1; - - //right side inner point - double x1m2; - double y1m2; - //right side outer point - double x2m2; - double y2m2; - - if (smallMode) - { - //1 - x1m1 = outerEdge.x; - y1m1 = outerEdge.y; - outerEdge.Rotate(60); - - //2 - x2m1 = outerEdge.x; - y2m1 = outerEdge.y; - outerEdge.Rotate(60); - - //3 - x1m2 = outerEdge.x; - y1m2 = outerEdge.y; - outerEdge.Rotate(60); - - //4 - x2m2 = outerEdge.x; - y2m2 = outerEdge.y; - } - else - { - - //left side inner point - x1m1 = innerEdge.x; - y1m1 = innerEdge.y; - - //left side outer point - x2m1 = outerEdge.x; - y2m1 = outerEdge.y; - - //rotate vectors around the point - innerEdge.Rotate(-(360f / totalButtons)); - outerEdge.Rotate(-(360f / totalButtons)); - - //right side inner point - x1m2 = innerEdge.x; - y1m2 = innerEdge.y; - //right side outer point - x2m2 = outerEdge.x; - y2m2 = outerEdge.y; - - } - - //the center of a regular polygon can be found by adding up - // all corner positions and divide by the total count - region.centerX = (x1m1 + x2m1 + x1m2 + x2m2) / 4; - region.centerY = (y1m1 + y2m1 + y1m2 + y2m2) / 4; - - - final float a = 0.5f; - float f = 0f; - - final boolean showHighlight = - MathHelper.inTriangle( - x1m1, y1m1, - x2m2, y2m2, - x2m1, y2m1, - mouseVecX, mouseVecY) - || MathHelper.inTriangle( - x1m1, y1m1, - x1m2, y1m2, - x2m2, y2m2, - mouseVecX, mouseVecY); - - //if mouse is within the region, as defined by the two triangles - //if (begin_rad <= mouseAngle && mouseAngle <= end_rad && showHighlight) - if (showHighlight) - { - f = 1; - region.highlighted = true; - switchToPower = region.manifestation; - } - - - if (smallMode) - { - buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); - } - else - { - //set the square pos - buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); - } - - } - } - } + case INACTIVE: + //deactivate current + if (spiritweb.canTickSelectedManifestation()) + { + Network.sendToServer(new DeactivateCurrentManifestationsMessage()); + } + break; + case ACTIVE: + //activate current + if (!spiritweb.canTickSelectedManifestation()) + { + //Network.sendToServer(new ToggleManifestationMessage()); + } + break; + case MODE_INCREASE: + //change mode to positive + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), 1)); + break; + case MODE_DECREASE: + //change mode to negative. + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), -1)); + break; + } + } + } + + actionUsed = true; + decreaseVisibility(); + } + + if (isVisible()) + { + final Window window = event.getWindow(); + init(Minecraft.getInstance(), window.getGuiScaledWidth(), window.getGuiScaledHeight()); + setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); + + if (!wasVisible) + { + getMinecraft().screen = SpiritwebMenu.instance; + getMinecraft().mouseHandler.releaseMouse(); + } + + if (getMinecraft().mouseHandler.isMouseGrabbed()) + { + KeyMapping.releaseAll(); + } + } + else + { + if (wasVisible) + { + getMinecraft().mouseHandler.grabMouse(); + } + } + } + + @Override + public boolean mouseClicked(final double mouseX, final double mouseY, final int button) + { + this.visibility = 0f; + canShow = false; + this.minecraft.setScreen(null); + + if (this.minecraft.screen == null) + { + this.minecraft.setWindowActive(true); + this.minecraft.getSoundManager().resume(); + this.minecraft.mouseHandler.grabMouse(); + } + return true; + } + + private static class SidedMenuButton + { + + public double x1, x2; + public double y1, y2; + public boolean highlighted; + + public final ButtonAction action; + public TextureAtlasSprite icon; + public int color; + public String name; + public Direction textSide; + + public SidedMenuButton( + final String name, + final ButtonAction action, + final double x, + final double y, + final TextureAtlasSprite ico, + final Direction textSide) + { + this.name = name; + this.action = action; + x1 = x; + x2 = x + 18; + y1 = y; + y2 = y + 18; + icon = ico; + color = 0xffffff; + this.textSide = textSide; + } + + public SidedMenuButton( + final String name, + final ButtonAction action, + final double x, + final double y, + final int col, + final Direction textSide) + { + this.name = name; + this.action = action; + x1 = x; + x2 = x + 18; + y1 = y; + y2 = y + 18; + color = col; + this.textSide = textSide; + } + + } + + static class RadialButtonRegion + { + + public final AManifestation manifestation; + public double centerX; + public double centerY; + public boolean highlighted; + + public RadialButtonRegion(final AManifestation manifestation) + { + this.manifestation = manifestation; + } + + } + + protected void SetupButtons() + { + + //todo buttons + //todo button icons + sidedMenuButtons.add(spiritweb.canTickSelectedManifestation() + ? new SidedMenuButton("gui.cosmere.other.inactive", ButtonAction.INACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.off, Direction.WEST) + : new SidedMenuButton("gui.cosmere.other.active", ButtonAction.ACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.on, Direction.WEST)); + + sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.increase", ButtonAction.MODE_INCREASE, TEXT_DISTANCE * 2, -10, ClientHelper.arrowUp, Direction.EAST)); + sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.decrease", ButtonAction.MODE_DECREASE, TEXT_DISTANCE * 2, 10, ClientHelper.arrowDown, Direction.EAST)); + + + for (AManifestation manifestation : spiritweb.getAvailableManifestations()) + { + radialButtonRegions.add(new RadialButtonRegion(manifestation)); + } + } + + @Override + public void render(final PoseStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) + { + if (spiritweb == null) + { + return; + } +/* + matrixStack.pushPose(); + + final int start = (int) (visibility * 98) << 24; + final int end = (int) (visibility * 128) << 24; + + fillGradient(matrixStack, 0, 0, width, height, start, end); + + RenderSystem.disableTexture(); + RenderSystem.enableBlend(); + RenderSystem.disableAlphaTest(); + RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); + RenderSystem.shadeModel(GL11.GL_SMOOTH); + final Tesselator tessellator = Tesselator.getInstance(); + final BufferBuilder buffer = tessellator.getBuilder(); + + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + + final double mouseVecX = mouseX - width / 2f; + final double mouseVecY = (mouseY - height / 2f); + + final double middle_x = width / 2f; + final double middle_y = height / 2f; + + radialButtonRegions.clear(); + sidedMenuButtons.clear(); + + SetupButtons(); + + switchToPower = null; + doAction = null; + + setupRadialButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); + + setupSidedButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); + + //draw out what we've asked for + tessellator.end(); + + //then we switch to icons + RenderSystem.shadeModel(GL11.GL_FLAT); + + RenderSystem.enableTexture(); + RenderSystem.setShaderColor(1, 1, 1, 1.0f); + RenderSystem.disableBlend(); + RenderSystem.enableAlphaTest(); + RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(InventoryMenu.BLOCK_ATLAS).getId()); + + buffer.begin(GL11.GL_QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + + //put the icons on the region buttons + setupRadialButtonIcons(buffer, middle_x, middle_y); + + //put the icons on the sided buttons + setupSidedButtonIcons(buffer, middle_x, middle_y); + + tessellator.end(); + + // draw radial button strings + setupRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); + + //draw sided button strings + setupSidedButtonStrings(matrixStack, middle_x, middle_y); + + //do extra text info stuff + setupAnyExtraInfoTexts(matrixStack, (int) middle_y); + + matrixStack.popPose();*/ + } + + private void setupAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) + { + int x = 10; + final int[] y = {middle_y / 2}; + + spiritweb.METALS_INGESTED.forEach((key, value) -> + { + if (value > 0) + { + //todo localisation check + final String text = key.getName() + ": " + value; + font.drawShadow(matrixStack, text, x, y[0], 0xffffffff); + y[0] += 10; + } + }); + } + + private void setupSidedButtonStrings(PoseStack matrixStack, double middle_x, double middle_y) + { + for (final SidedMenuButton sideButton : sidedMenuButtons) + { + //but only if that sided button is highlighted + if (sideButton.highlighted) + { + final String text = I18n.get(sideButton.name); + + switch (sideButton.textSide) + { + case WEST: + font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x1 - 8) - font.width(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + break; + case EAST: + font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + break; + case UP: + font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); + break; + case DOWN: + font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); + break; + } + + } + } + } + + private void setupRadialButtonStrings(PoseStack matrixStack, int middle_x, int middle_y) + { + for (final RadialButtonRegion button : radialButtonRegions) + { + //but only if that button is highlighted + if (button.highlighted) + { + final double x = button.centerX; + final double y = button.centerY; + + int fixed_x = (int) x;//(x + TEXT_DISTANCE); + final int fixed_y = (int) y;//(y + TEXT_DISTANCE); + + //todo localisation check + final String text = I18n.get(button.manifestation.translation().getKey()); + + fixed_x = (int) (x < 0 + ? fixed_x - (font.width(text) + TEXT_DISTANCE) + : fixed_x + TEXT_DISTANCE); + + font.drawShadow(matrixStack, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); + + //no need to keep searching, we only keep one highlighted at a time. + break; + } + } + } + + private void setupSidedButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + { + for (final SidedMenuButton button : sidedMenuButtons) + { + final float f = switchToPower == null ? 1.0f : 0.5f; + final float a = 1.0f; + + final double u1 = 0; + final double u2 = 16; + final double v1 = 0; + final double v2 = 16; + + final TextureAtlasSprite sprite = button.icon == null ? ClientHelper.blank : button.icon; + + final double btnx1 = button.x1 + 1; + final double btnx2 = button.x2 - 1; + final double btny1 = button.y1 + 1; + final double btny2 = button.y2 - 1; + + final float red = f * ((button.color >> 16 & 0xff) / 255.0f); + final float green = f * ((button.color >> 8 & 0xff) / 255.0f); + final float blue = f * ((button.color & 0xff) / 255.0f); + + buffer.vertex(middle_x + btnx1, middle_y + btny1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx1, middle_y + btny2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx2, middle_y + btny2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(red, green, blue, a).endVertex(); + buffer.vertex(middle_x + btnx2, middle_y + btny1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(red, green, blue, a).endVertex(); + } + } + + private void setupRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + { + for (final RadialButtonRegion mnuRgn : radialButtonRegions) + { + final double x = mnuRgn.centerX; + final double y = mnuRgn.centerY; + + final SpriteIconPositioning sip = ClientHelper.instance.getIconForManifestation(mnuRgn.manifestation); + + final double scalex = 15 * sip.width * 0.5; + final double scaley = 15 * sip.height * 0.5; + final double x1 = x - scalex; + final double x2 = x + scalex; + final double y1 = y - scaley; + final double y2 = y + scaley; + + final TextureAtlasSprite sprite = sip.sprite; + + final float f = 1.0f; + final float a = 1.0f; + + final double u1 = sip.left * 16.0; + final double u2 = (sip.left + sip.width) * 16.0; + final double v1 = sip.top * 16.0; + final double v2 = (sip.top + sip.height) * 16.0; + + buffer.vertex(middle_x + x1, middle_y + y1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1, middle_y + y2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2, middle_y + y2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2, middle_y + y1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(f, f, f, a).endVertex(); + } + } + + private void setupSidedButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) + { + for (final SidedMenuButton button : sidedMenuButtons) + { + final float a = 0.5f; + float f = 0f; + + if (button.x1 <= mouseVecX && button.x2 >= mouseVecX && button.y1 <= mouseVecY && button.y2 >= mouseVecY) + { + f = 1; + button.highlighted = true; + doAction = button.action; + } + + //set first triangle + buffer.vertex(middle_x + button.x1, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x1, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); + //set second triangle + buffer.vertex(middle_x + button.x2, middle_y + button.y2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + button.x2, middle_y + button.y1, 0).color(f, f, f, a).endVertex(); + } + } + + private void setupRadialButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) + { + if (!radialButtonRegions.isEmpty()) + { + + final float ring_inner_edge = -10; + final float ring_outer_edge = -50; + + // todo test if I can get down to one button only + final int totalButtons = radialButtonRegions.size(); + + Vector2 innerEdge; + Vector2 outerEdge; + + boolean smallMode = radialButtonRegions.size() == 2; + + innerEdge = new Vector2(0, ring_inner_edge); + outerEdge = new Vector2(0, ring_outer_edge); + + + for (final RadialButtonRegion region : radialButtonRegions) + { + //left side inner point + double x1m1; + double y1m1; + + //left side outer point + double x2m1; + double y2m1; + + //right side inner point + double x1m2; + double y1m2; + //right side outer point + double x2m2; + double y2m2; + + if (smallMode) + { + //1 + x1m1 = outerEdge.x; + y1m1 = outerEdge.y; + outerEdge.Rotate(60); + + //2 + x2m1 = outerEdge.x; + y2m1 = outerEdge.y; + outerEdge.Rotate(60); + + //3 + x1m2 = outerEdge.x; + y1m2 = outerEdge.y; + outerEdge.Rotate(60); + + //4 + x2m2 = outerEdge.x; + y2m2 = outerEdge.y; + } + else + { + + //left side inner point + x1m1 = innerEdge.x; + y1m1 = innerEdge.y; + + //left side outer point + x2m1 = outerEdge.x; + y2m1 = outerEdge.y; + + //rotate vectors around the point + innerEdge.Rotate(-(360f / totalButtons)); + outerEdge.Rotate(-(360f / totalButtons)); + + //right side inner point + x1m2 = innerEdge.x; + y1m2 = innerEdge.y; + //right side outer point + x2m2 = outerEdge.x; + y2m2 = outerEdge.y; + + } + + //the center of a regular polygon can be found by adding up + // all corner positions and divide by the total count + region.centerX = (x1m1 + x2m1 + x1m2 + x2m2) / 4; + region.centerY = (y1m1 + y2m1 + y1m2 + y2m2) / 4; + + + final float a = 0.5f; + float f = 0f; + + final boolean showHighlight = + MathHelper.inTriangle( + x1m1, y1m1, + x2m2, y2m2, + x2m1, y2m1, + mouseVecX, mouseVecY) + || MathHelper.inTriangle( + x1m1, y1m1, + x1m2, y1m2, + x2m2, y2m2, + mouseVecX, mouseVecY); + + //if mouse is within the region, as defined by the two triangles + //if (begin_rad <= mouseAngle && mouseAngle <= end_rad && showHighlight) + if (showHighlight) + { + f = 1; + region.highlighted = true; + switchToPower = region.manifestation; + } + + + if (smallMode) + { + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + } + else + { + //set the square pos + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + } + + } + } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java b/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java deleted file mode 100644 index 78cdafaf4..000000000 --- a/src/main/java/leaf/cosmere/client/renderer/entity/SprenFlameRenderer.java +++ /dev/null @@ -1,40 +0,0 @@ -package leaf.cosmere.client.renderer.entity; - -import com.mojang.blaze3d.matrix.*; -import leaf.cosmere.client.renderer.entity.model.*; -import leaf.cosmere.entities.spren.*; -import leaf.cosmere.utils.helpers.*; -import net.minecraft.client.renderer.entity.*; -import net.minecraft.util.*; -import net.minecraft.util.math.MathHelper; -import net.minecraftforge.api.distmarker.*; - -@OnlyIn(Dist.CLIENT) -public class SprenFlameRenderer extends MobRenderer> -{ - private static final ResourceLocation FIRE_SPREN_TEXTURES = ResourceLocationHelper.prefix("textures/entity/spren_flame.png"); - - public SprenFlameRenderer(EntityRendererManager renderManagerIn) - { - super(renderManagerIn, new SprenFlameModel(), 0.25F); - } - - /** - * Returns the location of an entity's texture. - */ - public ResourceLocation getTextureLocation(SprenFlameEntity entity) - { - return FIRE_SPREN_TEXTURES; - } - - protected void scale(SprenFlameEntity entitylivingbaseIn, MatrixStack matrixStackIn, float partialTickTime) - { - matrixStackIn.scale(0.8F, 0.8F, 0.8F); - } - - protected void setupRotations(SprenFlameEntity entityLiving, MatrixStack matrixStackIn, float ageInTicks, float rotationYaw, float partialTicks) - { - matrixStackIn.translate(0.0D, (double) (MathHelper.cos(ageInTicks * 0.3F) * 0.1F), 0.0D); - super.setupRotations(entityLiving, matrixStackIn, ageInTicks, rotationYaw, partialTicks); - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java b/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java deleted file mode 100644 index 8e9bd7e63..000000000 --- a/src/main/java/leaf/cosmere/client/renderer/entity/model/SprenFlameModel.java +++ /dev/null @@ -1,141 +0,0 @@ -package leaf.cosmere.client.renderer.entity.model;// Made with Blockbench 3.8.3 -// Exported for Minecraft version 1.15 - 1.16 -// Paste this class into your mod and generate all required imports - - -import com.google.common.collect.*; -import com.mojang.blaze3d.matrix.*; -import com.mojang.blaze3d.vertex.*; -import leaf.cosmere.entities.spren.*; -import net.minecraft.client.renderer.entity.model.*; -import net.minecraft.client.renderer.model.*; -import net.minecraft.entity.*; -import net.minecraft.entity.passive.*; -import net.minecraft.util.math.*; - -public class SprenFlameModel extends AgeableModel -{ - private final ModelRenderer body; - private final ModelRenderer wingLeft; - private final ModelRenderer wingLeftUpper_r1; - private final ModelRenderer wingLeftLower_r1; - private final ModelRenderer wingRight; - private final ModelRenderer wingRightLower_r1; - private final ModelRenderer wingRightUpper_r1; - - private float bodyPitch; - - public SprenFlameModel() - { - texWidth = 16; - texHeight = 16; - - body = new ModelRenderer(this); - body.setPos(0.0F, 24.0F, 0.0F); - body.texOffs(0, 0).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 0.0F, 0.0F, false); - body.texOffs(0, 0).addBox(-1.0F, -3.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false); - - wingLeft = new ModelRenderer(this); - wingLeft.setPos(0.0F, 0.0F, 0.0F); - body.addChild(wingLeft); - - - wingLeftUpper_r1 = new ModelRenderer(this); - wingLeftUpper_r1.setPos(0.0F, 0.0F, 0.0F); - wingLeft.addChild(wingLeftUpper_r1); - setRotationAngle(wingLeftUpper_r1, 0.0F, 0.7854F, -0.1745F); - wingLeftUpper_r1.texOffs(0, 0).addBox(1.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); - - wingLeftLower_r1 = new ModelRenderer(this); - wingLeftLower_r1.setPos(0.0F, 0.0F, 0.0F); - wingLeft.addChild(wingLeftLower_r1); - setRotationAngle(wingLeftLower_r1, 0.0F, 0.3491F, 0.0F); - wingLeftLower_r1.texOffs(0, 0).addBox(0.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); - - wingRight = new ModelRenderer(this); - wingRight.setPos(0.0F, 0.0F, 0.0F); - body.addChild(wingRight); - - - wingRightLower_r1 = new ModelRenderer(this); - wingRightLower_r1.setPos(0.0F, 0.0F, 0.0F); - wingRight.addChild(wingRightLower_r1); - setRotationAngle(wingRightLower_r1, 0.0F, -0.3491F, 0.0F); - wingRightLower_r1.texOffs(0, 0).addBox(-3.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); - - wingRightUpper_r1 = new ModelRenderer(this); - wingRightUpper_r1.setPos(0.0F, 0.0F, 0.0F); - wingRight.addChild(wingRightUpper_r1); - setRotationAngle(wingRightUpper_r1, 0.0F, -0.7854F, 0.1745F); - wingRightUpper_r1.texOffs(0, 0).addBox(-5.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); - } - - @Override - public void setupAnim(T entityIn, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) - { - this.wingRight.xRot = 0.0F; - - this.body.xRot = 0.0F; - this.body.y = 19.0F; - - boolean flag = entityIn.isOnGround() && entityIn.getDeltaMovement().lengthSqr() < 1.0E-7D; - if (flag) - { - this.wingRight.yRot = -0.2618F; - this.wingRight.zRot = 0.0F; - this.wingLeft.xRot = 0.0F; - this.wingLeft.yRot = 0.2618F; - this.wingLeft.zRot = 0.0F; - } - else - { - float f = ageInTicks * 2.1F; - this.wingRight.yRot = 0.0F; - this.wingRight.zRot = MathHelper.cos(f) * (float) Math.PI * 0.15F; - this.wingLeft.xRot = this.wingRight.xRot; - this.wingLeft.yRot = this.wingRight.yRot; - this.wingLeft.zRot = -this.wingRight.zRot; - this.body.xRot = 0.0F; - this.body.yRot = 180.0F; - this.body.zRot = 0.0F; - } - - - if (this.bodyPitch > 0.0F) - { - this.body.xRot = ModelUtils.rotlerpRad(this.body.xRot, 3.0915928F, this.bodyPitch); - } - } - - @Override - public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) - { - body.render(matrixStack, buffer, packedLight, packedOverlay); - } - - @Override - protected Iterable headParts() - { - return ImmutableList.of(); - } - - - @Override - protected Iterable bodyParts() - { - return ImmutableList.of(this.body); - } - - public void prepareMobModel(T entityIn, float limbSwing, float limbSwingAmount, float partialTick) - { - super.prepareMobModel(entityIn, limbSwing, limbSwingAmount, partialTick); - this.bodyPitch = entityIn.getBodyPitch(partialTick); - } - - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) - { - modelRenderer.xRot = x; - modelRenderer.yRot = y; - modelRenderer.zRot = z; - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java deleted file mode 100644 index 404ff9da8..000000000 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/BraceletModel.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - * - * Special thank you to TheIllusiveC4 and their mod Curios for their example of rendering an extra model on the player. - * https://github.com/TheIllusiveC4/Curios - * - * Eventually this script will change to take in where exactly the user is spiked. - * https://coppermind.net/w/images/Hemalurgy_table.jpg - * - */ - -package leaf.cosmere.client.renderer.wearables; - -import com.mojang.blaze3d.matrix.*; -import com.mojang.blaze3d.vertex.*; -import net.minecraft.client.renderer.entity.model.*; -import net.minecraft.client.renderer.model.*; -import net.minecraft.entity.*; -import top.theillusivec4.curios.api.*; - -import javax.annotation.*; -import java.util.*; - -public class BraceletModel extends CurioModel -{ - - public BraceletModel() - { - super(1f); - - //left arm - this.leftArm = new ModelRenderer(this, 0, 0); - //this.leftArm.mirror = false; - this.leftArm.setPos(1.0F, 2.0F, 0.0F); - this.leftArm.addBox(2.2F, 6.0F, -2.5F, 1, 1, 5, 0.4F); - - //right arm - this.rightArm = new ModelRenderer(this, 0, 0); - this.rightArm.setPos(1.0F, 2.0F, 0.0F); - this.rightArm.addBox(-3.2F, 6.0F, -2.5F, 1, 1, 5, 0.4F); - - - } - - @Override - public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) - { - Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); - if (!slotTypePreset.isPresent()) - { - return; - } - - super.renderToBuffer(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } -} diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java deleted file mode 100644 index 7e5526681..000000000 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/CurioModel.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - * - * Special thank you to TheIllusiveC4 and their mod Curios for their example of rendering an extra model on the player. - * https://github.com/TheIllusiveC4/Curios - * - * Eventually this script will change to take in where exactly the user is spiked. - * https://coppermind.net/w/images/Hemalurgy_table.jpg - * - */ - -package leaf.cosmere.client.renderer.wearables; - -import com.mojang.blaze3d.matrix.*; -import com.mojang.blaze3d.vertex.*; -import net.minecraft.client.renderer.entity.model.*; -import net.minecraft.client.renderer.model.*; -import net.minecraft.entity.*; -import top.theillusivec4.curios.api.*; - -import javax.annotation.*; -import java.util.*; - -public abstract class CurioModel extends BipedModel -{ - public String renderMode; - public int renderIndex; - - public CurioModel(float modelSize) - { - super(modelSize); - this.texWidth = 16; - this.texHeight = 16; - } - - public void setupAnim(@Nonnull T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float netHeadPitch) - { - } - - @Override - public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) - { - Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); - if (!slotTypePreset.isPresent()) - { - return; - } - - switch (slotTypePreset.get()) - { - case BACK: - case BODY: - this.body.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - break; - case BRACELET: - case HANDS: - case RING: - if (renderIndex == 0) - { - this.leftArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - else - { - this.rightArm.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - break; - case BELT: - break; - case CHARM: - if (renderIndex == 0) - { - this.leftLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - else - { - this.rightLeg.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - break; - } - } -} diff --git a/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java b/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java deleted file mode 100644 index 27d9cca00..000000000 --- a/src/main/java/leaf/cosmere/client/renderer/wearables/SpikeModel.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - * - * Special thank you to TheIllusiveC4 and their mod Curios for their example of rendering an extra model on the player. - * https://github.com/TheIllusiveC4/Curios - * - * Eventually this script will change to take in where exactly the user is spiked. - * https://coppermind.net/w/images/Hemalurgy_table.jpg - * - */ - -package leaf.cosmere.client.renderer.wearables; - -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; -import net.minecraft.client.renderer.model.ModelRenderer; -import net.minecraft.entity.LivingEntity; -import top.theillusivec4.curios.api.SlotTypePreset; - -import javax.annotation.Nonnull; -import java.util.Optional; - -public class SpikeModel extends CurioModel -{ - public ModelRenderer leftEyeSpike; - public ModelRenderer rightEyeSpike; - public ModelRenderer neckSpike; - - public SpikeModel() - { - super(1f); - - //left eye - this.leftEyeSpike = new ModelRenderer(this, 0, 0); - this.leftEyeSpike.setPos(0.0F, 0.0F, 0.0F); - this.leftEyeSpike.addBox(1.0F, -3.0F, -7.0F, 2.0F, 2.0F, 14.0F, 0.0F); - - //right eye - this.rightEyeSpike = new ModelRenderer(this, 0, 0); - this.rightEyeSpike.setPos(0.0F, 0.0F, 0.0F); - this.rightEyeSpike.addBox(-3.0F, -3.0F, -7.0F, 2.0F, 2.0F, 14.0F, 0.0F); - - //neck - this.neckSpike = new ModelRenderer(this, 0, 0); - this.neckSpike.setPos(0.0F, 0.0F, 0.0F); - this.neckSpike.addBox(-0.5F, -1.0F, 4.0F, 1.0F, 1.0F, 2.0F, 0.0F); - - //body - this.body = new ModelRenderer(this, 16, 16); - this.body.setPos(0.0F, 0.0F, 0.0F); - this.body.addBox(-1F, 2.0F, 0.0F, 2.0F, 2.0F, 3.0F, 0.0F); - - //left arm - this.leftArm = new ModelRenderer(this, 0, 0); - this.leftArm.mirror = true; - this.leftArm.setPos(-5.0F, 2.0F, 0.0F); - this.leftArm.addBox(-2.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); - - //right arm - this.rightArm = new ModelRenderer(this, 0, 0); - this.rightArm.setPos(-5.0F, 2.0F, 0.0F); - this.rightArm.addBox(-3.0F, 4.0F, -0.5F, 5, 1, 1, 0.4F); - - //left leg - this.leftLeg = new ModelRenderer(this, 0, 0); - this.leftLeg.mirror = true; - this.leftLeg.setPos(-5.0F, 2.0F, 0.0F); - this.leftLeg.addBox(0.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); - - //right leg - this.rightLeg = new ModelRenderer(this, 0, 0); - this.rightLeg.setPos(-5.0F, 2.0F, 0.0F); - this.rightLeg.addBox(-1.0F, 4.0F, -0.5F, 1, 1, 5, 0.4F); - - } - - @Override - public void renderToBuffer(@Nonnull MatrixStack matrixStack, @Nonnull IVertexBuilder vertexBuilder, int light, int overlay, float red, float green, float blue, float alpha) - { - Optional slotTypePreset = SlotTypePreset.findPreset(renderMode); - if (!slotTypePreset.isPresent()) - { - return; - } - - switch (slotTypePreset.get()) - { - case HEAD: - if (renderIndex == 0) - { - this.leftEyeSpike.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - else - { - this.rightEyeSpike.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } - break; - case NECKLACE: - this.neckSpike.render(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - break; - } - - super.renderToBuffer(matrixStack, vertexBuilder, light, overlay, red, green, blue, alpha); - } -} diff --git a/src/main/java/leaf/cosmere/client/settings/KeyConflictContext.java b/src/main/java/leaf/cosmere/client/settings/KeyConflictContext.java index 2744967be..6428aa8ed 100644 --- a/src/main/java/leaf/cosmere/client/settings/KeyConflictContext.java +++ b/src/main/java/leaf/cosmere/client/settings/KeyConflictContext.java @@ -8,17 +8,17 @@ public class KeyConflictContext implements IKeyConflictContext { - public static final KeyConflictContext DEFAULT = new KeyConflictContext(); + public static final KeyConflictContext DEFAULT = new KeyConflictContext(); - @Override - public boolean isActive() - { - return true; - } + @Override + public boolean isActive() + { + return true; + } - @Override - public boolean conflicts(IKeyConflictContext other) - { - return false; - } + @Override + public boolean conflicts(IKeyConflictContext other) + { + return false; + } } diff --git a/src/main/java/leaf/cosmere/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/commands/CosmereCommand.java index 10f9a0b3a..23f22e897 100644 --- a/src/main/java/leaf/cosmere/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/commands/CosmereCommand.java @@ -12,18 +12,18 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.commands.subcommands.ManifestationCommand; import leaf.cosmere.commands.subcommands.TestCommand; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; public class CosmereCommand { - public static void register(CommandDispatcher dispatcher) - { - dispatcher.register(Commands.literal(Cosmere.MODID) - .then(TestCommand.register(dispatcher)) - .then(ManifestationCommand.register(dispatcher)) - ); - } + public static void register(CommandDispatcher dispatcher) + { + dispatcher.register(Commands.literal(Cosmere.MODID) + .then(TestCommand.register(dispatcher)) + .then(ManifestationCommand.register(dispatcher)) + ); + } } diff --git a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java index f6198dfa0..d4fdc9419 100644 --- a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java +++ b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java @@ -12,43 +12,43 @@ import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import leaf.cosmere.constants.Constants; -import leaf.cosmere.utils.helpers.CommandHelper; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.command.ISuggestionProvider; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; +import leaf.cosmere.utils.helpers.CommandHelper; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import java.util.Collections; import java.util.concurrent.CompletableFuture; public class ManifestationsArgumentType implements ArgumentType { - public static final DynamicCommandExceptionType INVALID_MANIFESTATION_EXCEPTION = - new DynamicCommandExceptionType((manifestation) -> - new TranslationTextComponent(Constants.Strings.POWER_INVALID, manifestation)); - - public static ManifestationsArgumentType createArgument() - { - return new ManifestationsArgumentType(); - } - - @Override - public AManifestation parse(StringReader reader) throws CommandSyntaxException - { - ResourceLocation location = ResourceLocation.read(reader); - AManifestation manifestation = ManifestationRegistry.MANIFESTATION_REGISTRY.get().getValue(location); - if (manifestation != null) - { - return manifestation; - } - throw INVALID_MANIFESTATION_EXCEPTION.create(location); - } - - @Override - public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) - { - return ISuggestionProvider.suggest(Collections.emptyList(), CommandHelper.addManifestationNamesWithTooltip(builder)); - } + public static final DynamicCommandExceptionType INVALID_MANIFESTATION_EXCEPTION = + new DynamicCommandExceptionType((manifestation) -> + new TranslatableComponent(Constants.Strings.POWER_INVALID, manifestation)); + + public static ManifestationsArgumentType createArgument() + { + return new ManifestationsArgumentType(); + } + + @Override + public AManifestation parse(StringReader reader) throws CommandSyntaxException + { + ResourceLocation location = ResourceLocation.read(reader); + AManifestation manifestation = ManifestationRegistry.MANIFESTATION_REGISTRY.get().getValue(location); + if (manifestation != null) + { + return manifestation; + } + throw INVALID_MANIFESTATION_EXCEPTION.create(location); + } + + @Override + public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) + { + return SharedSuggestionProvider.suggest(Collections.emptyList(), CommandHelper.addManifestationNamesWithTooltip(builder)); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/commands/permissions/PermissionEnum.java b/src/main/java/leaf/cosmere/commands/permissions/PermissionEnum.java deleted file mode 100644 index eb69d8574..000000000 --- a/src/main/java/leaf/cosmere/commands/permissions/PermissionEnum.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.commands.permissions; - -import leaf.cosmere.Cosmere; -import net.minecraftforge.server.permission.DefaultPermissionLevel; - -import java.text.MessageFormat; - -public enum PermissionEnum -{ - TEST("test", DefaultPermissionLevel.OP, ""), - ; - - private final String path; - private final DefaultPermissionLevel level; - private final String description; - - PermissionEnum(String path, DefaultPermissionLevel level, String description) - { - this.path = path; - this.level = level; - this.description = description; - } - - public String getNode() - { - return MessageFormat.format("{0}.command.{1}", Cosmere.MODID, this.path); - } - - public DefaultPermissionLevel getLevel() - { - return level; - } - - public String getDescription() - { - return description; - } -} diff --git a/src/main/java/leaf/cosmere/commands/permissions/PermissionManager.java b/src/main/java/leaf/cosmere/commands/permissions/PermissionManager.java deleted file mode 100644 index 0fc0f5f5a..000000000 --- a/src/main/java/leaf/cosmere/commands/permissions/PermissionManager.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.commands.permissions; - -import net.minecraftforge.server.permission.PermissionAPI; - -import java.util.Arrays; - -public class PermissionManager -{ - - public static void init() - { - Arrays.stream(PermissionEnum.values()).forEach(perm -> PermissionAPI.registerNode(perm.getNode(), perm.getLevel(), perm.getDescription())); - } -} diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index 2e3898693..f2aacb8ef 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -16,174 +16,174 @@ import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.EntityHelper; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextComponent; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.BaseComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.server.level.ServerPlayer; import static leaf.cosmere.constants.Constants.Strings.POWERS_FOUND; public class ManifestationCommand extends ModCommand { - @Override - public int run(CommandContext context) throws CommandSyntaxException - { - return Command.SINGLE_SUCCESS; - } - - private static int check(CommandContext context, ServerPlayerEntity player) - { - SpiritwebCapability.get(player).ifPresent(spiritweb -> - { - CommandSource source = context.getSource(); - - TranslationTextComponent powersFound = new TranslationTextComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID())); - - final TextComponent leftBracketTextComponent = new StringTextComponent("["); - final TextComponent rightBracketTextComponent = new StringTextComponent("]"); - final StringTextComponent space = new StringTextComponent(" "); - - //figure out which manifestations a player has - for (AManifestation manifestation : spiritweb.getAvailableManifestations()) - { - powersFound.append(leftBracketTextComponent); - powersFound.append(TextHelper.createTextWithTooltip( - manifestation.translation(), - manifestation.description())); - powersFound.append(rightBracketTextComponent); - powersFound.append(space); - } - source.sendSuccess(powersFound, true); - }); - - return Command.SINGLE_SUCCESS; - } - - private static int clear(CommandContext context, ServerPlayerEntity player) - { - SpiritwebCapability.get(player).ifPresent(iSpiritweb -> - { - CommandSource source = context.getSource(); - iSpiritweb.clearManifestations(); - iSpiritweb.syncToClients(null); - TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); - }); - - return Command.SINGLE_SUCCESS; - } - - private static int reroll(CommandContext context, ServerPlayerEntity player) - { - SpiritwebCapability.get(player).ifPresent(iSpiritweb -> - { - CommandSource source = context.getSource(); - iSpiritweb.clearManifestations(); - EntityHelper.giveEntityStartingManifestation(player, (SpiritwebCapability) iSpiritweb); - //set to none so that it auto updates to the new available ones on sync - iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); - iSpiritweb.syncToClients(null); - TextComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); - }); - - return Command.SINGLE_SUCCESS; - } - - private static int set(CommandContext context, ServerPlayerEntity player) - { - CommandSource source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - - TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - - TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); - - if (player == null || manifestation == null) - { - source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; - } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.clearManifestations(); - spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - spiritweb.syncToClients(null); - source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - }); - return Command.SINGLE_SUCCESS; - } - - private static int give(CommandContext context, ServerPlayerEntity player) - { - CommandSource source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - - TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - - TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); - - if (player == null || manifestation == null) - { - source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; - } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - spiritweb.syncToClients(null); - }); - return Command.SINGLE_SUCCESS; - } - - private static int remove(CommandContext context, ServerPlayerEntity player) - { - CommandSource source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - - TextComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - - TextComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); - - if (player == null || manifestation == null) - { - source.sendFailure(new TranslationTextComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; - } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - spiritweb.syncToClients(null); - source.sendSuccess(new TranslationTextComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - }); - return Command.SINGLE_SUCCESS; - } - - public static ArgumentBuilder register(CommandDispatcher dispatcher) - { - return Commands.literal("powers") - .requires(context -> context.hasPermission(2)) - .then(Commands.literal("check") - .executes(context -> check(context, context.getSource().getPlayerOrException()))) + @Override + public int run(CommandContext context) throws CommandSyntaxException + { + return Command.SINGLE_SUCCESS; + } + + private static int check(CommandContext context, ServerPlayer player) + { + SpiritwebCapability.get(player).ifPresent(spiritweb -> + { + CommandSourceStack source = context.getSource(); + + TranslatableComponent powersFound = new TranslatableComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID())); + + final BaseComponent leftBracketTextComponent = new TextComponent("["); + final BaseComponent rightBracketTextComponent = new TextComponent("]"); + final TextComponent space = new TextComponent(" "); + + //figure out which manifestations a player has + for (AManifestation manifestation : spiritweb.getAvailableManifestations()) + { + powersFound.append(leftBracketTextComponent); + powersFound.append(TextHelper.createTextWithTooltip( + manifestation.translation(), + manifestation.description())); + powersFound.append(rightBracketTextComponent); + powersFound.append(space); + } + source.sendSuccess(powersFound, true); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int clear(CommandContext context, ServerPlayer player) + { + SpiritwebCapability.get(player).ifPresent(iSpiritweb -> + { + CommandSourceStack source = context.getSource(); + iSpiritweb.clearManifestations(); + iSpiritweb.syncToClients(null); + BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int reroll(CommandContext context, ServerPlayer player) + { + SpiritwebCapability.get(player).ifPresent(iSpiritweb -> + { + CommandSourceStack source = context.getSource(); + iSpiritweb.clearManifestations(); + EntityHelper.giveEntityStartingManifestation(player, (SpiritwebCapability) iSpiritweb); + //set to none so that it auto updates to the new available ones on sync + iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); + iSpiritweb.syncToClients(null); + BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + }); + + return Command.SINGLE_SUCCESS; + } + + private static int set(CommandContext context, ServerPlayer player) + { + CommandSourceStack source = context.getSource(); + AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); + + BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + + BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + + if (player == null || manifestation == null) + { + source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + return 0; + } + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.clearManifestations(); + spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + spiritweb.syncToClients(null); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + }); + return Command.SINGLE_SUCCESS; + } + + private static int give(CommandContext context, ServerPlayer player) + { + CommandSourceStack source = context.getSource(); + AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); + + BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + + BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + + if (player == null || manifestation == null) + { + source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + return 0; + } + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + spiritweb.syncToClients(null); + }); + return Command.SINGLE_SUCCESS; + } + + private static int remove(CommandContext context, ServerPlayer player) + { + CommandSourceStack source = context.getSource(); + AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); + + BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + + BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + + if (player == null || manifestation == null) + { + source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + return 0; + } + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + spiritweb.syncToClients(null); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + }); + return Command.SINGLE_SUCCESS; + } + + public static ArgumentBuilder register(CommandDispatcher dispatcher) + { + return Commands.literal("powers") + .requires(context -> context.hasPermission(2)) + .then(Commands.literal("check") + .executes(context -> check(context, context.getSource().getPlayerOrException()))) /* .then(Commands.literal("clear") .executes(context -> clear(context, context.getSource().asPlayer()))) .then(Commands.literal("set") .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) .executes(context -> set(context, context.getSource().asPlayer()))) )*/ - .then(Commands.literal("reroll") - .executes(context -> reroll(context, context.getSource().getPlayerOrException()))) - .then(Commands.literal("give") - .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> give(context, context.getSource().getPlayerOrException())))) - .then(Commands.literal("remove") - .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> remove(context, context.getSource().getPlayerOrException())))) - ; // end add - } + .then(Commands.literal("reroll") + .executes(context -> reroll(context, context.getSource().getPlayerOrException()))) + .then(Commands.literal("give") + .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) + .executes(context -> give(context, context.getSource().getPlayerOrException())))) + .then(Commands.literal("remove") + .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) + .executes(context -> remove(context, context.getSource().getPlayerOrException())))) + ; // end add + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java index d47ccf669..f7021742b 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java @@ -6,21 +6,23 @@ import com.mojang.brigadier.Command; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; +import net.minecraft.commands.CommandSourceStack; -public abstract class ModCommand implements Command +public abstract class ModCommand implements Command { - private int permLevel = 2; + private int permLevel = 2; - public ModCommand(){} + public ModCommand() + { + } - public ModCommand(int level) - { - this.permLevel = level; - } + public ModCommand(int level) + { + this.permLevel = level; + } - public boolean canExecute(CommandSource source) throws CommandSyntaxException - { - return source.hasPermission(permLevel); - } + public boolean canExecute(CommandSourceStack source) throws CommandSyntaxException + { + return source.hasPermission(permLevel); + } } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java index 5fcf4cacf..875d53b1a 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java @@ -8,38 +8,38 @@ import com.mojang.brigadier.builder.ArgumentBuilder; import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; -import net.minecraft.command.CommandSource; -import net.minecraft.command.Commands; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; public class TestCommand extends ModCommand { - private static int testSub(CommandContext context, ServerPlayerEntity player) - { - return testSub(context, player.getLevel()); - } - - private static int testSub(CommandContext context, ServerWorld world) - { - CommandSource source = context.getSource(); - source.sendSuccess(new TranslationTextComponent("command.cosmere.test.sub"), true); - - return SINGLE_SUCCESS; - } - - public static ArgumentBuilder register(CommandDispatcher dispatcher) - { - return Commands.literal("test") - .requires(context -> context.hasPermission(2)).then(Commands.literal("sub").executes(context -> testSub(context, context.getSource().getPlayerOrException()))); // end add - } - - @Override - public int run(CommandContext context) throws CommandSyntaxException - { - return SINGLE_SUCCESS; - } + private static int testSub(CommandContext context, ServerPlayer player) + { + return testSub(context, player.getLevel()); + } + + private static int testSub(CommandContext context, ServerLevel world) + { + CommandSourceStack source = context.getSource(); + source.sendSuccess(new TranslatableComponent("command.cosmere.test.sub"), true); + + return SINGLE_SUCCESS; + } + + public static ArgumentBuilder register(CommandDispatcher dispatcher) + { + return Commands.literal("test") + .requires(context -> context.hasPermission(2)).then(Commands.literal("sub").executes(context -> testSub(context, context.getSource().getPlayerOrException()))); // end add + } + + @Override + public int run(CommandContext context) throws CommandSyntaxException + { + return SINGLE_SUCCESS; + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java b/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java index 5dfdb6e40..8c8b2f5d2 100644 --- a/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java +++ b/src/main/java/leaf/cosmere/compat/curios/CosmereCurios.java @@ -6,9 +6,9 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import org.apache.commons.lang3.tuple.ImmutableTriple; import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.type.capability.ICurio; @@ -18,31 +18,24 @@ public class CosmereCurios { - - public static ICurio createTestCurioProvider() - { - return new TestCurio(); - } - - - public static Optional> getEquippedSpikeCurio(LivingEntity livingEntity, Metals.MetalType metalType) - { - Predicate spikePredicate = stack -> - { - final boolean isSpike = stack.getItem() instanceof HemalurgicSpikeItem; - return isSpike && ((HemalurgicSpikeItem) stack.getItem()).getMetalType() == metalType; - }; - return CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, livingEntity); - } - - public static ItemStack getEquippedSpikeCurioStack(PlayerEntity player, Metals.MetalType metalType) - { - final Optional> curioSpike = getEquippedSpikeCurio(player, metalType); - if(curioSpike.isPresent()) - { - return curioSpike.get().getRight(); - } - return ItemStack.EMPTY; - } + public static Optional> getEquippedSpikeCurio(LivingEntity livingEntity, Metals.MetalType metalType) + { + Predicate spikePredicate = stack -> + { + final boolean isSpike = stack.getItem() instanceof HemalurgicSpikeItem; + return isSpike && ((HemalurgicSpikeItem) stack.getItem()).getMetalType() == metalType; + }; + return CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, livingEntity); + } + + public static ItemStack getEquippedSpikeCurioStack(Player player, Metals.MetalType metalType) + { + final Optional> curioSpike = getEquippedSpikeCurio(player, metalType); + if (curioSpike.isPresent()) + { + return curioSpike.get().getRight(); + } + return ItemStack.EMPTY; + } } diff --git a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java index dee52f5a9..39647404e 100644 --- a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java +++ b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java @@ -15,60 +15,60 @@ public class CuriosCompat { - private static boolean curiosModDetected; + private static boolean curiosModDetected; - public static boolean CuriosIsPresent() - { - return curiosModDetected; - } + public static boolean CuriosIsPresent() + { + return curiosModDetected; + } - public static void init() - { - curiosModDetected = ModList.get().isLoaded("curios"); + public static void init() + { + curiosModDetected = ModList.get().isLoaded("curios"); - if (!curiosModDetected) - { - return; - } + if (!curiosModDetected) + { + return; + } - IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); - modBus.addListener(CuriosCompat::onEnqueueIMC); - } + IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); + modBus.addListener(CuriosCompat::onEnqueueIMC); + } - private static void onEnqueueIMC(InterModEnqueueEvent event) - { - if (!curiosModDetected) - { - return; - } + private static void onEnqueueIMC(InterModEnqueueEvent event) + { + if (!curiosModDetected) + { + return; + } - SlotTypePreset[] oneSlot = { - SlotTypePreset.BACK, - SlotTypePreset.BELT, - SlotTypePreset.BODY, - SlotTypePreset.HEAD, - SlotTypePreset.NECKLACE, - }; + SlotTypePreset[] oneSlot = { + SlotTypePreset.BACK, + SlotTypePreset.BELT, + SlotTypePreset.BODY, + SlotTypePreset.HEAD, + SlotTypePreset.NECKLACE, + }; - for (SlotTypePreset type : oneSlot) - { - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> type.getMessageBuilder().build()); - } + for (SlotTypePreset type : oneSlot) + { + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> type.getMessageBuilder().build()); + } - SlotTypePreset[] twoSlot = { - SlotTypePreset.HANDS, - SlotTypePreset.RING, - SlotTypePreset.CHARM, - SlotTypePreset.BRACELET, - SlotTypePreset.NECKLACE, - }; + SlotTypePreset[] twoSlot = { + SlotTypePreset.HANDS, + SlotTypePreset.RING, + SlotTypePreset.CHARM, + SlotTypePreset.BRACELET, + SlotTypePreset.NECKLACE, + }; - for (SlotTypePreset type : twoSlot) - { - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> type.getMessageBuilder().size(2).build()); - } + for (SlotTypePreset type : twoSlot) + { + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> type.getMessageBuilder().size(2).build()); + } - } + } } diff --git a/src/main/java/leaf/cosmere/compat/curios/TestCurio.java b/src/main/java/leaf/cosmere/compat/curios/TestCurio.java deleted file mode 100644 index ce23ddc68..000000000 --- a/src/main/java/leaf/cosmere/compat/curios/TestCurio.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.compat.curios; - -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import top.theillusivec4.curios.api.SlotContext; -import top.theillusivec4.curios.api.type.capability.ICurio; - -//Adding extra curio functionality, BUT ONLY if curio mod is installed. -//'ideally' you would extend ICurioItem on the key item itself, but that makes the Curio mod required to be installed, which isn't guaranteed. -public class TestCurio implements ICurio -{ - - @Override - public void curioTick(String identifier, int index, LivingEntity livingEntity) - { - //don't check every tick. - if (livingEntity.tickCount % 20 == 0) - { - - } - } - - @Override - public void onUnequip(SlotContext slotContext, ItemStack newStack) - { - - } -} diff --git a/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java b/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java index d6ed35c9c..69be583cd 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java @@ -4,18 +4,15 @@ package leaf.cosmere.compat.hwyla; -import mcp.mobius.waila.api.IRegistrar; -import mcp.mobius.waila.api.IWailaPlugin; -import mcp.mobius.waila.api.TooltipPosition; -import mcp.mobius.waila.api.WailaPlugin; -import net.minecraft.entity.LivingEntity; +import mcp.mobius.waila.api.*; +import net.minecraft.world.entity.LivingEntity; @WailaPlugin public class HwylaCompat implements IWailaPlugin { - @Override - public void register(IRegistrar iRegistrar) - { - iRegistrar.registerComponentProvider(SpiritWebTooltip.INSTANCE, TooltipPosition.BODY, LivingEntity.class); - } + @Override + public void registerClient(IWailaClientRegistration registration) + { + registration.registerComponentProvider(SpiritWebTooltip.INSTANCE, TooltipPosition.BODY, LivingEntity.class); + } } diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 1ad626970..c3922f01c 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -7,24 +7,22 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.TextHelper; import leaf.cosmere.manifestation.AManifestation; -import mcp.mobius.waila.api.IEntityAccessor; +import leaf.cosmere.utils.helpers.TextHelper; +import mcp.mobius.waila.api.EntityAccessor; import mcp.mobius.waila.api.IEntityComponentProvider; -import mcp.mobius.waila.api.IPluginConfig; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.text.ITextComponent; - -import java.util.List; +import mcp.mobius.waila.api.ITooltip; +import mcp.mobius.waila.api.config.IPluginConfig; +import net.minecraft.world.entity.LivingEntity; public class SpiritWebTooltip implements IEntityComponentProvider { - static final SpiritWebTooltip INSTANCE = new SpiritWebTooltip(); + static final SpiritWebTooltip INSTANCE = new SpiritWebTooltip(); - @Override - public void appendBody(List tooltip, IEntityAccessor accessor, IPluginConfig config) - { + @Override + public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig iPluginConfig) + { /* //todo add other ways we would allow the user to see spiritweb info if (!accessor.getPlayer().isCreative()) @@ -32,33 +30,33 @@ public void appendBody(List tooltip, IEntityAccessor accessor, I return; }*/ - //check the entity we are trying to - SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(iSpiritweb -> - { - - //todo check mistborn/feruchemist status - boolean mistborn = false;//iSpiritweb.isMistborn(); - boolean fullFeruchemist = false;//iSpiritweb.isFullFeruchemist(); - if (mistborn) - { - tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASIUM.getMistingName())); - } - if (fullFeruchemist) - { - tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASATIUM.getFerringName())); - } - - - //show all manifestations, including hemalurgic based ones. - for (AManifestation manifestation : iSpiritweb.getAvailableManifestations()) - { - if ((mistborn && manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY) - || (fullFeruchemist && manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY)) - { - continue; - } - tooltip.add(manifestation.translation()); - } - }); - } + //check the entity we are trying to + SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(iSpiritweb -> + { + + //todo check mistborn/feruchemist status + boolean mistborn = false;//iSpiritweb.isMistborn(); + boolean fullFeruchemist = false;//iSpiritweb.isFullFeruchemist(); + if (mistborn) + { + tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASIUM.getMistingName())); + } + if (fullFeruchemist) + { + tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASATIUM.getFerringName())); + } + + + //show all manifestations, including hemalurgic based ones. + for (AManifestation manifestation : iSpiritweb.getAvailableManifestations()) + { + if ((mistborn && manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY) + || (fullFeruchemist && manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY)) + { + continue; + } + tooltip.add(manifestation.translation()); + } + }); + } } diff --git a/src/main/java/leaf/cosmere/compat/jei/JEICompat.java b/src/main/java/leaf/cosmere/compat/jei/JEICompat.java index 63a76fb69..ce7272fad 100644 --- a/src/main/java/leaf/cosmere/compat/jei/JEICompat.java +++ b/src/main/java/leaf/cosmere/compat/jei/JEICompat.java @@ -7,61 +7,66 @@ import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.utils.helpers.TextHelper; import mezz.jei.api.IModPlugin; import mezz.jei.api.JeiPlugin; import mezz.jei.api.constants.VanillaTypes; import mezz.jei.api.registration.IGuiHandlerRegistration; import mezz.jei.api.registration.IRecipeCategoryRegistration; import mezz.jei.api.registration.IRecipeRegistration; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; @JeiPlugin public class JEICompat implements IModPlugin { - @Override - public ResourceLocation getPluginUid() - { - return Constants.Resources.JEI; - } + @Override + public ResourceLocation getPluginUid() + { + return Constants.Resources.JEI; + } - @Override - public void registerCategories(IRecipeCategoryRegistration reg) - { - } + @Override + public void registerCategories(IRecipeCategoryRegistration reg) + { + } - @Override - public void registerGuiHandlers(IGuiHandlerRegistration registry) - { - } + @Override + public void registerGuiHandlers(IGuiHandlerRegistration registry) + { + } - @Override - public void registerRecipes(IRecipeRegistration reg) - { - //for (RegistryObject itemRO : ItemsRegistry.ITEMS.get()) - //reg.addRecipes(TestRecipe.getAllRecipes(world), TestRecipeCategory.NAME); + @Override + public void registerRecipes(IRecipeRegistration reg) + { + //for (RegistryObject itemRO : ItemsRegistry.ITEMS.get()) + //reg.addRecipes(TestRecipe.getAllRecipes(world), TestRecipeCategory.NAME); - addItemInfoPage(reg, ItemsRegistry.GUIDE.get()); + addItemInfoPage(reg, ItemsRegistry.GUIDE.get()); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasFeruchemicalEffect()) - { - addItemInfoPage(reg, metalType.getNecklaceItem()); - addItemInfoPage(reg, metalType.getRingItem()); - addItemInfoPage(reg, metalType.getBraceletItem()); - } - if (metalType.hasHemalurgicEffect()) - { - addItemInfoPage(reg, metalType.getSpikeItem()); - } - } - } + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasFeruchemicalEffect()) + { + addItemInfoPage(reg, metalType.getNecklaceItem()); + addItemInfoPage(reg, metalType.getRingItem()); + addItemInfoPage(reg, metalType.getBraceletItem()); + } + if (metalType.hasHemalurgicEffect()) + { + addItemInfoPage(reg, metalType.getSpikeItem()); + } + } + } - private void addItemInfoPage(IRecipeRegistration reg, Item item) - { - reg.addIngredientInfo(new ItemStack(item), VanillaTypes.ITEM, String.format("item.cosmere.%s.tooltip", item.getRegistryName().getPath())); - } + private void addItemInfoPage(IRecipeRegistration reg, Item item) + { + reg.addIngredientInfo( + new ItemStack(item), + VanillaTypes.ITEM_STACK, + TextHelper.createTranslatedText(String.format("item.cosmere.%s.tooltip", item.getRegistryName().getPath()) + )); + } } diff --git a/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java b/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java index 70cbea058..c1a86aa74 100644 --- a/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java +++ b/src/main/java/leaf/cosmere/compat/patchouli/PatchouliCompat.java @@ -5,28 +5,21 @@ package leaf.cosmere.compat.patchouli; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModList; -import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import top.theillusivec4.curios.api.CuriosApi; -import top.theillusivec4.curios.api.SlotTypeMessage; -import top.theillusivec4.curios.api.SlotTypePreset; public class PatchouliCompat { - private static boolean patchouliModDetected; + private static boolean patchouliModDetected; - public static boolean PatchouliIsPresent() - { - return patchouliModDetected; - } + public static boolean PatchouliIsPresent() + { + return patchouliModDetected; + } - public static void init() - { - patchouliModDetected = ModList.get().isLoaded("patchouli"); - LogHelper.info("Patchouli detected, cosmere can use it's guide item."); - } + public static void init() + { + patchouliModDetected = ModList.get().isLoaded("patchouli"); + LogHelper.info("Patchouli detected, cosmere can use it's guide item."); + } } diff --git a/src/main/java/leaf/cosmere/config/ClientConfig.java b/src/main/java/leaf/cosmere/config/ClientConfig.java deleted file mode 100644 index 465fa9c00..000000000 --- a/src/main/java/leaf/cosmere/config/ClientConfig.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.config; - -import leaf.cosmere.Cosmere; -import net.minecraftforge.common.ForgeConfigSpec; - -public class ClientConfig -{ - - final ForgeConfigSpec.BooleanValue clientBool; - - ClientConfig(ForgeConfigSpec.Builder builder) - { - builder.push("clientSection1"); - clientBool = builder - .worldRestart() - .comment("comment for 2nd config value") - .translation(Cosmere.MODID + ".config.translation.key") - .define("config_name_1", true); - } -} diff --git a/src/main/java/leaf/cosmere/config/CommonConfig.java b/src/main/java/leaf/cosmere/config/CommonConfig.java deleted file mode 100644 index 7b8749dd6..000000000 --- a/src/main/java/leaf/cosmere/config/CommonConfig.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.config; - -import com.google.common.collect.Lists; -import leaf.cosmere.Cosmere; -import net.minecraftforge.common.ForgeConfigSpec; - -import java.util.List; - -public class CommonConfig -{ - - final ForgeConfigSpec.ConfigValue> stringConfigList; - final ForgeConfigSpec.IntValue intConfigValue; - final ForgeConfigSpec.IntValue intConfigValue2; - final ForgeConfigSpec.BooleanValue boolConfigValue; - - CommonConfig(ForgeConfigSpec.Builder builder) - { - builder.comment("Comment for the config"); - - builder.push("section one"); - - stringConfigList = builder - .worldRestart() - .comment("comment for first config value") - .translation(Cosmere.MODID + ".config.translation.key") - .define("config_name_1", Lists.newArrayList("string 1", "string 2", "string 3")); - intConfigValue = builder - .comment("comment for 2nd config value") - .translation(Cosmere.MODID + ".config.translation.key") - .defineInRange("config_name_2", 123, 0, 1234); - boolConfigValue = builder - .comment("comment for 3rd config value") - .translation(Cosmere.MODID + ".config.translation.key") - .define("config_name_3", true); - - - builder.pop(); - builder.push("section two"); - intConfigValue2 = builder - .comment("comment for 4th config value") - .translation(Cosmere.MODID + ".config.translation.key") - .defineInRange("config_name_4", 1234, 0, Integer.MAX_VALUE); - builder.pop(); - } -} diff --git a/src/main/java/leaf/cosmere/config/Config.java b/src/main/java/leaf/cosmere/config/Config.java deleted file mode 100644 index 471ec634d..000000000 --- a/src/main/java/leaf/cosmere/config/Config.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.config; - -import leaf.cosmere.Cosmere; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.common.ForgeConfigSpec; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.ModLoadingContext; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.config.ModConfig; -import org.apache.commons.lang3.tuple.Pair; - -import javax.annotation.Nullable; -import java.util.Set; -import java.util.stream.Collectors; - -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class Config -{ - - public static final ForgeConfigSpec COMMON_SPEC; - private static final CommonConfig COMMON; - - public static final ForgeConfigSpec CLIENT_SPEC; - private static final ClientConfig CLIENT; - public static boolean clientConfigBool; - - static - { - final Pair specPair = new ForgeConfigSpec.Builder().configure(CommonConfig::new); - COMMON = specPair.getLeft(); - COMMON_SPEC = specPair.getRight(); - } - - private static Set stringConfigList; - public static int intConfigValue; - public static boolean boolConfigValue; - - public static int intConfigValue2; - - static - { - final Pair specPair = new ForgeConfigSpec.Builder().configure(ClientConfig::new); - CLIENT_SPEC = specPair.getRight(); - CLIENT = specPair.getLeft(); - } - - public static boolean isBlacklisted(@Nullable ResourceLocation biome) - { - return biome != null && (stringConfigList.contains(biome)); - } - - public static void bakeCommon() - { - Config.stringConfigList = COMMON.stringConfigList.get() - .stream() - .filter(string -> string.endsWith(":*")) - .map(string -> string.substring(0, string.length() - 2)) - .collect(Collectors.toSet()); - - Config.intConfigValue = COMMON.intConfigValue.get(); - Config.boolConfigValue = COMMON.boolConfigValue.get(); - - Config.intConfigValue2 = COMMON.intConfigValue2.get(); - } - - public static void bakeClient() - { - Config.clientConfigBool = CLIENT.clientBool.get(); - } - - public static void register() - { - ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, Config.COMMON_SPEC); - ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Config.CLIENT_SPEC); - } - - @SubscribeEvent - @SuppressWarnings("unused") - public static void onModConfigEvent(ModConfig.ModConfigEvent configEvent) - { - if (configEvent.getConfig().getSpec() == Config.COMMON_SPEC) - { - bakeCommon(); - } - else if (configEvent.getConfig().getSpec() == Config.CLIENT_SPEC) - { - bakeClient(); - } - } -} diff --git a/src/main/java/leaf/cosmere/config/CosmereConfig.java b/src/main/java/leaf/cosmere/config/CosmereConfig.java new file mode 100644 index 000000000..a4dc1a0e8 --- /dev/null +++ b/src/main/java/leaf/cosmere/config/CosmereConfig.java @@ -0,0 +1,55 @@ +/* + * File created ~ 7 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.config; + +import net.minecraftforge.common.ForgeConfigSpec; +import org.apache.commons.lang3.tuple.Pair; + +public class CosmereConfig +{ + public static Common COMMON; + public static ForgeConfigSpec COMMON_SPEC; + public static Client CLIENT; + public static ForgeConfigSpec CLIENT_SPEC; + + static + { + Pair specPair = new ForgeConfigSpec.Builder().configure(Common::new); + COMMON_SPEC = specPair.getRight(); + COMMON = specPair.getLeft(); + + Pair specClientPair = new ForgeConfigSpec.Builder().configure(Client::new); + CLIENT_SPEC = specClientPair.getRight(); + CLIENT = specClientPair.getLeft(); + } + + + public static class Client + { + public final ForgeConfigSpec.BooleanValue clientConfigTest; + + Client(ForgeConfigSpec.Builder builder) + { + builder.comment("Client Cosmere Settings").push("client"); + clientConfigTest = builder.comment("clientConfigTest").translation("config.cosmere.clientconfigtest").define("clientconfigtest", true); + builder.pop(); + } + + } + + public static class Common + { + public final ForgeConfigSpec.IntValue commonConfigTest; + + Common(ForgeConfigSpec.Builder builder) + { + builder.comment("General Cosmere Settings").push("common"); + commonConfigTest = builder.comment("commonConfigTest.").translation("config.cosmere.commonconfigtest").defineInRange("commonconfigtest", 5, 0, Integer.MAX_VALUE); + builder.pop(); + + } + } + +} diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 101ab6867..db8495dfe 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -5,131 +5,132 @@ package leaf.cosmere.constants; import leaf.cosmere.Cosmere; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.IFormattableTextComponent; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import java.util.UUID; public class Constants { - public static class Resources - { - /** - * Generic ResourceLocation to allow for all entries in a command suggestion to be used for the command - */ - public static final ResourceLocation ALL = new ResourceLocation(Cosmere.MODID, "all"); + public static class Resources + { + /** + * Generic ResourceLocation to allow for all entries in a command suggestion to be used for the command + */ + public static final ResourceLocation ALL = new ResourceLocation(Cosmere.MODID, "all"); - public static final ResourceLocation JEI = new ResourceLocation(Cosmere.MODID, "jei"); - public static final ResourceLocation SPIRITWEB_CAP = new ResourceLocation(Cosmere.MODID, "innate_investiture"); - } + public static final ResourceLocation JEI = new ResourceLocation(Cosmere.MODID, "jei"); + public static final ResourceLocation SPIRITWEB_CAP = new ResourceLocation(Cosmere.MODID, "innate_investiture"); + } - public static class Suffix - { - public static final IFormattableTextComponent INVESTITURE_UNITS = new StringTextComponent(" IU").withStyle(TextFormatting.RESET); - public static final IFormattableTextComponent STORMLIGHT_UNITS = new StringTextComponent(" SU").withStyle(TextFormatting.RESET); - } + public static class Suffix + { + public static final MutableComponent INVESTITURE_UNITS = new TextComponent(" IU").withStyle(ChatFormatting.RESET); + public static final MutableComponent STORMLIGHT_UNITS = new TextComponent(" SU").withStyle(ChatFormatting.RESET); + } - public static class NBT - { + public static class NBT + { - public static final String CHARGE_LEVEL = "charge_level"; + public static final String CHARGE_LEVEL = "charge_level"; - public static final String ATTUNED_PLAYER = "attuned_player"; - public static final String ATTUNED_PLAYER_NAME = "attuned_player_name"; + public static final String ATTUNED_PLAYER = "attuned_player"; + public static final String ATTUNED_PLAYER_NAME = "attuned_player_name"; - public static final UUID UNSEALED_UUID = UUID.fromString("422fc419-1e39-4eac-ac01-6fc98512c122"); - public static final UUID ALUMINUM_UUID = UUID.fromString("8da98b83-be5e-4b34-b51e-5fdd79700893"); - } + public static final UUID UNSEALED_UUID = UUID.fromString("422fc419-1e39-4eac-ac01-6fc98512c122"); + public static final UUID ALUMINUM_UUID = UUID.fromString("8da98b83-be5e-4b34-b51e-5fdd79700893"); + } - //todo rename this when I remember the word - public static class RegNameStubs - { - public static final String BLOCK = "_block"; - public static final String RAW = "raw_"; - public static final String ORE = "_ore"; - public static final String BLEND = "_blend"; + //todo rename this when I remember the word + public static class RegNameStubs + { + public static final String BLOCK = "_block"; + public static final String RAW = "raw_"; + public static final String ORE = "_ore"; + public static final String DEEPSLATE_ORE = "_deepslate"; + public static final String BLEND = "_blend"; - public static final String METALMIND = "_metalmind"; + public static final String METALMIND = "_metalmind"; - public static final String BRACELET = "_bracelet"; - public static final String RING = "_ring"; - public static final String NECKLACE = "_necklace"; - public static final String INGOT = "_ingot"; - public static final String NUGGET = "_nugget"; - public static final String SHAVINGS = "_shavings"; - public static final String SPIKE = "_spike"; + public static final String BRACELET = "_bracelet"; + public static final String RING = "_ring"; + public static final String NECKLACE = "_necklace"; + public static final String INGOT = "_ingot"; + public static final String NUGGET = "_nugget"; + public static final String SHAVINGS = "_shavings"; + public static final String SPIKE = "_spike"; - public static final String CHIP = "_chip"; - public static final String MARK = "_mark"; - public static final String BROAM = "_broam"; - } + public static final String CHIP = "_chip"; + public static final String MARK = "_mark"; + public static final String BROAM = "_broam"; + } - public static class Gui - { - public static final int NONE = 0; - public static final int GUIDE = 1; - } + public static class Gui + { + public static final int NONE = 0; + public static final int GUIDE = 1; + } - public static class Strings - { - public static final String KEYS_CATEGORY = "keys.cosmere.main"; + public static class Strings + { + public static final String KEYS_CATEGORY = "keys.cosmere.main"; - public static final String KEY_MANIFESTATION_MODE_INCREASE = "key.cosmere.powers.mode.increase"; - public static final String KEY_MANIFESTATION_MODE_DECREASE = "key.cosmere.powers.mode.decrease"; + public static final String KEY_MANIFESTATION_MODE_INCREASE = "key.cosmere.powers.mode.increase"; + public static final String KEY_MANIFESTATION_MODE_DECREASE = "key.cosmere.powers.mode.decrease"; - public static final String KEY_MANIFESTATION_NEXT = "key.cosmere.powers.next"; - public static final String KEY_MANIFESTATION_PREVIOUS = "key.cosmere.powers.previous"; + public static final String KEY_MANIFESTATION_NEXT = "key.cosmere.powers.next"; + public static final String KEY_MANIFESTATION_PREVIOUS = "key.cosmere.powers.previous"; - public static final String KEY_MANIFESTATION_TOGGLE = "key.cosmere.powers.toggle"; - public static final String KEY_MANIFESTATION_MENU = "key.cosmere.powers.menu"; + public static final String KEY_MANIFESTATION_TOGGLE = "key.cosmere.powers.toggle"; + public static final String KEY_MANIFESTATION_MENU = "key.cosmere.powers.menu"; - public static final String KEY_ALLOMANCY_PUSH = "key.cosmere.allomancy.push"; - public static final String KEY_ALLOMANCY_PULL = "key.cosmere.allomancy.pull"; + public static final String KEY_ALLOMANCY_PUSH = "key.cosmere.allomancy.push"; + public static final String KEY_ALLOMANCY_PULL = "key.cosmere.allomancy.pull"; - public static final String GUI = "gui.cosmere."; - public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; - public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; + public static final String GUI = "gui.cosmere."; + public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; + public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; - public static final String POWER_INVALID = "argument.cosmere.power.invalid"; - public static final String POWER_SET_SUCCESS = "command.cosmere.power.set.success"; - public static final String POWER_SET_FAIL = "command.cosmere.power.set.fail"; - public static final String POWER_MODE_SET = "power.cosmere.mode.set"; - public static final String POWER_ACTIVE = "power.cosmere.toggle.active"; - public static final String POWER_INACTIVE = "power.cosmere.toggle.inactive"; + public static final String POWER_INVALID = "argument.cosmere.power.invalid"; + public static final String POWER_SET_SUCCESS = "command.cosmere.power.set.success"; + public static final String POWER_SET_FAIL = "command.cosmere.power.set.fail"; + public static final String POWER_MODE_SET = "power.cosmere.mode.set"; + public static final String POWER_ACTIVE = "power.cosmere.toggle.active"; + public static final String POWER_INACTIVE = "power.cosmere.toggle.inactive"; - public static final String POWERS_FOUND = "command.cosmere.power.found"; + public static final String POWERS_FOUND = "command.cosmere.power.found"; - public static final String CONTAINED_METALS = "tooltip.cosmere.metals.contained"; + public static final String CONTAINED_METALS = "tooltip.cosmere.metals.contained"; - public static final String PATCHOULI_NOT_INSTALLED = "tooltip.cosmere.patchouli.not_installed"; - } + public static final String PATCHOULI_NOT_INSTALLED = "tooltip.cosmere.patchouli.not_installed"; + } - public static class Translations - { - public static final TranslationTextComponent TOOLTIP_HOLD_SHIFT = new TranslationTextComponent(Strings.TOOLTIP_ITEM_INFO + "shift"); - public static final TranslationTextComponent TOOLTIP_CONTROL = new TranslationTextComponent(Strings.TOOLTIP_ITEM_INFO + "control"); - public static final TranslationTextComponent TOOLTIP_SHIFT_AND_CONTROL = new TranslationTextComponent(Strings.TOOLTIP_ITEM_INFO + "shift_control"); + public static class Translations + { + public static final TranslatableComponent TOOLTIP_HOLD_SHIFT = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "shift"); + public static final TranslatableComponent TOOLTIP_CONTROL = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "control"); + public static final TranslatableComponent TOOLTIP_SHIFT_AND_CONTROL = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "shift_control"); - public static final TranslationTextComponent GUI_NEXT = new TranslationTextComponent(Strings.GUI + "next"); - public static final TranslationTextComponent GUI_PREV = new TranslationTextComponent(Strings.GUI + "previous"); - public static final TranslationTextComponent GUI_SELECT = new TranslationTextComponent(Strings.GUI + "select"); - public static final TranslationTextComponent GUI_CONFIRM = new TranslationTextComponent(Strings.GUI + "confirm"); - public static final TranslationTextComponent GUI_SAVE = new TranslationTextComponent(Strings.GUI + "save"); - public static final TranslationTextComponent GUI_CANCEL = new TranslationTextComponent(Strings.GUI + "cancel"); + public static final TranslatableComponent GUI_NEXT = new TranslatableComponent(Strings.GUI + "next"); + public static final TranslatableComponent GUI_PREV = new TranslatableComponent(Strings.GUI + "previous"); + public static final TranslatableComponent GUI_SELECT = new TranslatableComponent(Strings.GUI + "select"); + public static final TranslatableComponent GUI_CONFIRM = new TranslatableComponent(Strings.GUI + "confirm"); + public static final TranslatableComponent GUI_SAVE = new TranslatableComponent(Strings.GUI + "save"); + public static final TranslatableComponent GUI_CANCEL = new TranslatableComponent(Strings.GUI + "cancel"); - public static final TranslationTextComponent GUI_BACK = new TranslationTextComponent(Strings.GUI + "button.back"); + public static final TranslatableComponent GUI_BACK = new TranslatableComponent(Strings.GUI + "button.back"); - public static final TranslationTextComponent POWER_ACTIVE = new TranslationTextComponent(Strings.POWER_ACTIVE); - public static final TranslationTextComponent POWER_INACTIVE = new TranslationTextComponent(Strings.POWER_INACTIVE); - } + public static final TranslatableComponent POWER_ACTIVE = new TranslatableComponent(Strings.POWER_ACTIVE); + public static final TranslatableComponent POWER_INACTIVE = new TranslatableComponent(Strings.POWER_INACTIVE); + } } diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index a5533f6d0..e62ec2cdd 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -13,113 +13,113 @@ public class Manifestations { - public final static int ALLOMANCY_ID = 1; - public final static int FERUCHEMY_ID = 2; - public final static int RADIANT_ID = 3; - public final static int ELANTRIAN_ID = 4; - public final static int AWAKENER_ID = 5; - - public enum ManifestationTypes - { - NONE(0), - //Allomancy Section - ALLOMANCY(ALLOMANCY_ID), - - //Feruchemy Section - FERUCHEMY(FERUCHEMY_ID), - - //Knight Radiant Section - RADIANT(RADIANT_ID), - - // AonDor - ELANTRIAN(ELANTRIAN_ID), - - // AonDor - AWAKENER(AWAKENER_ID); - - - ManifestationTypes(int id) - { - this.id = id; - } - - final int id; - - public int getID() - { - return id; - } - - - public static Optional valueOf(int value) - { - return Arrays.stream(values()) - .filter(powerTypes -> powerTypes.id == value) - .findFirst(); - } - - public AManifestation getManifestation(int powerID) - { - Optional metalType = Metals.MetalType.valueOf(powerID); - switch (this) - { - case ALLOMANCY: - if (metalType.isPresent()) - { - return ManifestationRegistry.ALLOMANCY_POWERS.get(metalType.get()).get(); - } - break; - case FERUCHEMY: - if (metalType.isPresent()) - { - return ManifestationRegistry.FERUCHEMY_POWERS.get(metalType.get()).get(); - } - break; - case RADIANT: - break; - case ELANTRIAN: - break; - case AWAKENER: - break; - } - return ManifestationRegistry.NONE.get(); - } - - public String getName() - { - return this.name().toLowerCase(Locale.ROOT); - } - } - - - public static final String NONE = "none"; - - public static class AonDor - { - public static final String ELANTRIAN = "elantrian"; - } - - public static class Biochroma - { - public static final String AWAKENING = "awakening"; - } - - public static class Hemalurgy - { - public static final String NONE = "none"; - } - - public static class Surgebinding - { - public static final String WINDRUNNER = "windrunner"; - public static final String SKYBREAKER = "skybreaker"; - public static final String DUSTBRINGER = "dustbringer"; - public static final String EDGEDANCER = "edgedancer"; - public static final String TRUTHWATCHER = "truthwatcher"; - public static final String LIGHTWEAVER = "lightweaver"; - public static final String ELSECALLER = "elsecaller"; - public static final String WILLSHAPER = "willshaper"; - public static final String STONEWARD = "stoneward"; - public static final String BONDSMITH = "bondsmith"; - } + public final static int ALLOMANCY_ID = 1; + public final static int FERUCHEMY_ID = 2; + public final static int RADIANT_ID = 3; + public final static int ELANTRIAN_ID = 4; + public final static int AWAKENER_ID = 5; + + public enum ManifestationTypes + { + NONE(0), + //Allomancy Section + ALLOMANCY(ALLOMANCY_ID), + + //Feruchemy Section + FERUCHEMY(FERUCHEMY_ID), + + //Knight Radiant Section + RADIANT(RADIANT_ID), + + // AonDor + ELANTRIAN(ELANTRIAN_ID), + + // AonDor + AWAKENER(AWAKENER_ID); + + + ManifestationTypes(int id) + { + this.id = id; + } + + final int id; + + public int getID() + { + return id; + } + + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(powerTypes -> powerTypes.id == value) + .findFirst(); + } + + public AManifestation getManifestation(int powerID) + { + Optional metalType = Metals.MetalType.valueOf(powerID); + switch (this) + { + case ALLOMANCY: + if (metalType.isPresent()) + { + return ManifestationRegistry.ALLOMANCY_POWERS.get(metalType.get()).get(); + } + break; + case FERUCHEMY: + if (metalType.isPresent()) + { + return ManifestationRegistry.FERUCHEMY_POWERS.get(metalType.get()).get(); + } + break; + case RADIANT: + break; + case ELANTRIAN: + break; + case AWAKENER: + break; + } + return ManifestationRegistry.NONE.get(); + } + + public String getName() + { + return this.name().toLowerCase(Locale.ROOT); + } + } + + + public static final String NONE = "none"; + + public static class AonDor + { + public static final String ELANTRIAN = "elantrian"; + } + + public static class Biochroma + { + public static final String AWAKENING = "awakening"; + } + + public static class Hemalurgy + { + public static final String NONE = "none"; + } + + public static class Surgebinding + { + public static final String WINDRUNNER = "windrunner"; + public static final String SKYBREAKER = "skybreaker"; + public static final String DUSTBRINGER = "dustbringer"; + public static final String EDGEDANCER = "edgedancer"; + public static final String TRUTHWATCHER = "truthwatcher"; + public static final String LIGHTWEAVER = "lightweaver"; + public static final String ELSECALLER = "elsecaller"; + public static final String WILLSHAPER = "willshaper"; + public static final String STONEWARD = "stoneward"; + public static final String BONDSMITH = "bondsmith"; + } } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 45bb04351..c14077002 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -13,23 +13,23 @@ import leaf.cosmere.items.curio.NecklaceMetalmindItem; import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.registry.*; -import net.minecraft.block.OreBlock; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.boss.dragon.EnderDragonEntity; -import net.minecraft.entity.monster.PhantomEntity; -import net.minecraft.entity.monster.WitherSkeletonEntity; -import net.minecraft.entity.passive.CatEntity; -import net.minecraft.entity.passive.RabbitEntity; -import net.minecraft.entity.passive.fish.PufferfishEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.IItemTier; -import net.minecraft.item.Item; -import net.minecraft.item.Rarity; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.potion.Effect; -import net.minecraft.tags.ITag; +import net.minecraft.tags.TagKey; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.animal.Cat; +import net.minecraft.world.entity.animal.Pufferfish; +import net.minecraft.world.entity.animal.Rabbit; +import net.minecraft.world.entity.boss.enderdragon.EnderDragon; +import net.minecraft.world.entity.monster.Phantom; +import net.minecraft.world.entity.monster.WitherSkeleton; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.block.OreBlock; import java.awt.*; import java.util.Arrays; @@ -51,1017 +51,1020 @@ public class Metals { - public enum MetalType implements IItemTier - { - //Physical/Physical - IRON(0), - STEEL(1),//alloy of iron and carbon (coal/charcoal) 1/4 ? - TIN(2), - PEWTER(3),//alloy of tin and lead 4/1 - - //Mental/Cognitive - ZINC(4), - BRASS(5),//allot of zinc and copper 50/50 ? - COPPER(6), - BRONZE(7),//alloy of copper and tin? 3/1 ? - - //Enhancement/spiritual - ALUMINUM(8), - DURALUMIN(9),//alloy of aluminum and copper 4/1 - CHROMIUM(10), - NICROSIL(11),//alloy of chromium and nickel 1/3 - - //temporal/hybrid - CADMIUM(12), - BENDALLOY(13),//alloy of 70% lead, 20% tin, and 10% cadmium by mass - GOLD(14), - ELECTRUM(15),//alloy of gold and silver 1/1 - - //god metals - ATIUM(16), - LERASIUM(17), - HARMONIUM(18), - - //god metal alloys - MALATIUM(19),//atium and gold? - LERASATIUM(20),// atium and lerasium - - - //non-allomantic metals - - NICKEL(21), - LEAD(22), - SILVER(23); - - private final int id; - - MetalType(int id) - { - this.id = id; - } - - public static Optional valueOf(int value) - { - return Arrays.stream(values()) - .filter(metalType -> metalType.id == value) - .findFirst(); - } - - public int getID() - { - return id; - } - - public String getName(){ return name().toLowerCase(Locale.ROOT);} - - public Rarity getRarity() - { - switch (this) - { - case ATIUM: - case MALATIUM: - return Rarity.RARE; - case LERASIUM: - case LERASATIUM: - case HARMONIUM: - return Rarity.EPIC; - default: - return Rarity.COMMON; - } - } - - public boolean hasAssociatedManifestation() - { - switch (this) - { - case ATIUM: - case MALATIUM: - case LERASIUM: //these are mistborn, but its handled by giving access to all other metals - case LERASATIUM: //these are feruchemists, but its handled by giving access to all other metals - case HARMONIUM: //different way of melding preservation and ruin. No idea what it does - case NICKEL: - case SILVER: - case LEAD: - return false; - default: - return true; - } - } - - public boolean hasHemalurgicEffect() - { - switch (this) - { - case MALATIUM: - case LERASATIUM: - case HARMONIUM: - case NICKEL: - case LEAD: - case SILVER: - return false; - default: - return true; - } - } - - public boolean hasFeruchemicalEffect() - { - switch (this) - { - case LERASIUM://no idea what lerasium would do - case MALATIUM: - case LERASATIUM: - case HARMONIUM: - case NICKEL: - case SILVER: - case LEAD: - return false; - default: - return true; - } - } - - public boolean hasOre() - { - switch (this) - { - case ALUMINUM: - case CADMIUM: - case CHROMIUM: - //case IRON: // covered by minecraft - case NICKEL: - case COPPER: - case ZINC: - case SILVER: - case TIN: - //case GOLD: // covered by minecraft - case LEAD: - return true; - default: - return false; - } - } - - public boolean isAlloy() - { - switch (this) - { - case STEEL: - case PEWTER: - case BRASS: - case BRONZE: - case DURALUMIN: - case NICROSIL: - case BENDALLOY: - case ELECTRUM: - return true; - default: - return false; - } - } - - //Used for metals that exist in the base minecraft - //todo add copper in 1.18 - public boolean hasMaterialItem() - { - switch (this) - { - case IRON: - case GOLD: - //case COPPER: - return false; - default: - return true; - } - } - - //All the helper functions. - - public Effect getStoringEffect() - { - return EffectsRegistry.STORING_EFFECTS.get(this).get(); - } - - public Effect getTappingEffect() - { - return EffectsRegistry.TAPPING_EFFECTS.get(this).get(); - } - - public NecklaceMetalmindItem getNecklaceItem() - { - return (NecklaceMetalmindItem) ItemsRegistry.METAL_NECKLACES.get(this).get(); - } - - public RingMetalmindItem getRingItem() - { - return (RingMetalmindItem) ItemsRegistry.METAL_RINGS.get(this).get(); - } - - public BraceletMetalmindItem getBraceletItem() - { - return (BraceletMetalmindItem) ItemsRegistry.METAL_BRACELETS.get(this).get(); - } - - public MetalIngotItem getIngotItem() - { - return (MetalIngotItem) ItemsRegistry.METAL_INGOTS.get(this).get(); - } - - public MetalNuggetItem getNuggetItem() - { - return (MetalNuggetItem) ItemsRegistry.METAL_NUGGETS.get(this).get(); - } - - public HemalurgicSpikeItem getSpikeItem() - { - return (HemalurgicSpikeItem) ItemsRegistry.METAL_SPIKE.get(this).get(); - } - - public MetalRawOreItem getRawMetalItem() - { - if (this.isAlloy()) - { - return (MetalRawOreItem) ItemsRegistry.METAL_RAW_BLEND.get(this).get(); - } - // if (this.hasOre()) - else - { - return (MetalRawOreItem) ItemsRegistry.METAL_RAW_ORE.get(this).get(); - } - - } - - public MetalBlock getBlock() - { - return BlocksRegistry.METAL_BLOCKS.get(this).get(); - } - - public OreBlock getOreBlock() - { - return BlocksRegistry.METAL_ORE.get(this).get(); - } - - public ITag.INamedTag getMetalRawTag() - { - return TagsRegistry.Items.METAL_RAW_TAGS.get(this); - } - - public ITag.INamedTag getMetalIngotTag() - { - return TagsRegistry.Items.METAL_INGOT_TAGS.get(this); - } - - public ITag.INamedTag getMetalNuggetTag() - { - return TagsRegistry.Items.METAL_NUGGET_TAGS.get(this); - } - - - public Color getColor() - { - switch (this) - { - default: - case IRON: - return MetalColor.IRON; - case STEEL: - return MetalColor.STEEL; - case TIN: - return MetalColor.TIN; - case PEWTER: - return MetalColor.PEWTER; - case ALUMINUM: - return MetalColor.ALUMINUM; - case DURALUMIN: - return MetalColor.DURALUMIN; - case CHROMIUM: - return MetalColor.CHROMIUM; - case NICROSIL: - return MetalColor.NICROSIL; - case ZINC: - return MetalColor.ZINC; - case BRASS: - return MetalColor.BRASS; - case COPPER: - return MetalColor.COPPER; - case BRONZE: - return MetalColor.BRONZE; - case GOLD: - return MetalColor.GOLD; - case ELECTRUM: - return MetalColor.ELECTRUM; - case CADMIUM: - return MetalColor.CADMIUM; - case BENDALLOY: - return MetalColor.BENDALLOY; - case LERASIUM: - return MetalColor.LERASIUM; - case ATIUM: - return MetalColor.ATIUM; - case MALATIUM: - return MetalColor.MALATIUM; - case LERASATIUM: - return MetalColor.LERASATIUM; - case HARMONIUM: - return MetalColor.HARMONIUM; - case NICKEL: - return MetalColor.NICKEL; - case LEAD: - return MetalColor.LEAD; - case SILVER: - return MetalColor.SILVER; - } - } - - public int getColorValue() - { - return getColor().getRGB(); - } - - public String getFerringName() - { - switch (this) - { - case IRON: - return FerringNames.IRON; - case STEEL: - return FerringNames.STEEL; - case TIN: - return FerringNames.TIN; - case PEWTER: - return FerringNames.PEWTER; - case ALUMINUM: - return FerringNames.ALUMINUM; - case DURALUMIN: - return FerringNames.DURALUMIN; - case CHROMIUM: - return FerringNames.CHROMIUM; - case NICROSIL: - return FerringNames.NICROSIL; - case ZINC: - return FerringNames.ZINC; - case BRASS: - return FerringNames.BRASS; - case COPPER: - return FerringNames.COPPER; - case BRONZE: - return FerringNames.BRONZE; - case GOLD: - return FerringNames.GOLD; - case ELECTRUM: - return FerringNames.ELECTRUM; - case CADMIUM: - return FerringNames.CADMIUM; - case BENDALLOY: - return FerringNames.BENDALLOY; - case ATIUM: - return FerringNames.ATIUM; - case LERASATIUM: - return FerringNames.ALL; - default: - case LERASIUM: - case MALATIUM: - return "ferring_" + this.getName(); - } - } - - public boolean isPushMetal() - { - switch (this) - { - case STEEL: - case PEWTER: - case BRASS: - case BRONZE: - case DURALUMIN: - case NICROSIL: - case BENDALLOY: - case ELECTRUM: - return true; - default: - return false; - } - } - - public boolean isPullMetal() - { - switch (this) - { - case IRON: - case TIN: - case ALUMINUM: - case CHROMIUM: - case ZINC: - case COPPER: - case GOLD: - case CADMIUM: - return true; - default: - return false; - } - } - - public String getMistingName() - { - switch (this) - { - case IRON: - return MistingNames.IRON; - - case STEEL: - return MistingNames.STEEL; - - case TIN: - return MistingNames.TIN; - - case PEWTER: - return MistingNames.PEWTER; - - case ALUMINUM: - return MistingNames.ALUMINUM; - - case DURALUMIN: - return MistingNames.DURALUMIN; - - case CHROMIUM: - return MistingNames.CHROMIUM; - - case NICROSIL: - return MistingNames.NICROSIL; - - case ZINC: - return MistingNames.ZINC; - - case BRASS: - return MistingNames.BRASS; - - case COPPER: - return MistingNames.COPPER; - - case BRONZE: - return MistingNames.BRONZE; - - case GOLD: - return MistingNames.GOLD; - - case ELECTRUM: - return MistingNames.ELECTRUM; - - case CADMIUM: - return MistingNames.CADMIUM; - - case BENDALLOY: - return MistingNames.BENDALLOY; - - case ATIUM: - return MistingNames.ATIUM; - - case LERASIUM: - return MistingNames.ALL; - - default: - case MALATIUM: - case LERASATIUM: - return "misting_" + this.getName(); - - } - } - - public Collection getHemalurgyStealWhitelist() - { - switch (this) - { - case STEEL: - //Steals a physical allomantic power - //Iron//Steel//Tin//Pewter - case PEWTER: - //Steals a physical feruchemical power - //Iron//Steel//Tin//Pewter - return Arrays.asList( - Metals.MetalType.IRON, - Metals.MetalType.STEEL, - Metals.MetalType.TIN, - Metals.MetalType.PEWTER); - case BRASS: - //Steals a cognitive feruchemical power - //Zinc//Brass//Copper//Bronze - case BRONZE: - //Steals a Mental Allomantic power - //Zinc//Brass//Copper//Bronze - return Arrays.asList( - Metals.MetalType.ZINC, - Metals.MetalType.BRASS, - Metals.MetalType.COPPER, - Metals.MetalType.BRONZE); - case CADMIUM: - //Steals a Temporal Allomantic power - //Cadmium//Bendalloy//Gold//Electrum - case GOLD: - //Steals a Hybrid Feruchemical power - //Cadmium//Bendalloy//Gold//Electrum - return Arrays.asList( - Metals.MetalType.CADMIUM, - Metals.MetalType.BENDALLOY, - Metals.MetalType.GOLD, - Metals.MetalType.ELECTRUM); - case BENDALLOY: - //Steals a Spiritual Feruchemical power - //Chromium//Nicrosil//Aluminum//Duralumin - case ELECTRUM: - //Steals an Enhancement Allomantic power - //Chromium//Nicrosil//Aluminum//Duralumin - return Arrays.asList( - Metals.MetalType.CHROMIUM, - Metals.MetalType.NICROSIL, - Metals.MetalType.ALUMINUM, - Metals.MetalType.DURALUMIN); - case ATIUM: - case LERASIUM: - return Arrays.stream(MetalType.values()).filter(MetalType::hasAssociatedManifestation).collect(Collectors.toList()); - case MALATIUM: - case LERASATIUM: - break; - } - - return null; - } - - public int getAllomancyBurnTimeSeconds() - { - //todo decide burn rate of metals - //todo convert to config item - int burnTimeInSeconds = 99; - switch (this) - { - case IRON: - break; - case STEEL: - break; - case TIN: - break; - case PEWTER: - break; - case ZINC: - break; - case BRASS: - break; - case COPPER: - break; - case BRONZE: - break; - case ALUMINUM: - break; - case DURALUMIN: - break; - case CHROMIUM: - break; - case NICROSIL: - break; - case CADMIUM: - break; - case BENDALLOY: - break; - case GOLD: - break; - case ELECTRUM: - break; - case ATIUM: - break; - case MALATIUM: - break; - } - return burnTimeInSeconds; - } - - public double getEntityAbilityStrength(LivingEntity killedEntity, PlayerEntity playerEntity) - { - //Steals non-manifestation based abilities. traits inherent to an entity? - double strengthToAdd = 0; - switch (this) - { - case IRON: - //steals physical strength - //don't steal modified values, only base value - //todo decide how much strength is reasonable to steal and how much goes to waste - //currently will try 70% - strengthToAdd = killedEntity.getAttributes().getBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; - - break; - case TIN: - //Steals senses - - //can track you on a huge island, even underground. - if (killedEntity instanceof EnderDragonEntity) - { - strengthToAdd = 0.77; - } - //Literally hunt players at night - else if (killedEntity instanceof PhantomEntity) - { - strengthToAdd = 0.66; - } - else if (killedEntity instanceof PlayerEntity) - { - strengthToAdd = 0.25; - } - else - { - final ModifiableAttributeInstance attribute = killedEntity.getAttribute(Attributes.FOLLOW_RANGE); - - if (attribute != null) - { - //ghasts have 100 base follow range, - //most others have 16-40 - final int hemalurgicDecay = 150; - strengthToAdd = attribute.getBaseValue() / hemalurgicDecay; - } - else - { - //at this point, who cares. - strengthToAdd = 0.10; - } - } - break; - case COPPER: - //Steals mental fortitude, memory, and intelligence - //increase base xp gain rate - final float potentialRewardRate = killedEntity.getExperienceReward(playerEntity) / 150f; - - if (killedEntity instanceof PlayerEntity) - { - final ModifiableAttributeInstance attribute = killedEntity.getAttribute(AttributesRegistry.COSMERE_ATTRIBUTES.get(MetalType.COPPER.getName()).get()); - if (attribute != null) - { - //70% strength to spike - strengthToAdd = attribute.getValue() * 0.70; - //25% remaining on player - final double newBaseValue = attribute.getValue() * 0.25; - attribute.setBaseValue(((int)(newBaseValue * 100)) / 100f); - } - else - { - strengthToAdd = potentialRewardRate; - } - } - else if (killedEntity instanceof EnderDragonEntity) - { - EnderDragonEntity dragonEntity = (EnderDragonEntity) killedEntity; - //dragon doesn't reward xp in a typical way - strengthToAdd = - dragonEntity.getDragonFight() != null && !dragonEntity.getDragonFight().hasPreviouslyKilledDragon() - ? 1 //give first person to kill dragon a full rate increase spike - : 0.33;//else similar to wither rate. - } - else - { - strengthToAdd = potentialRewardRate; - } - break; - case ZINC: - //Steals emotional fortitude - //todo figure out what that means - break; - case ALUMINUM: - //Removes all powers - //... ooops? - //maybe its an item you can equip on others that they then have to remove? - break; - case DURALUMIN: - //Steals Connection/Identity - break; - case CHROMIUM: - //Might steal destiny - //so we could add some permanent luck? - - if (killedEntity instanceof RabbitEntity) - { - strengthToAdd = 0.77; - } - else if (killedEntity instanceof WitherSkeletonEntity) - { - strengthToAdd = -0.77; - } - else if (killedEntity instanceof PufferfishEntity) - { - strengthToAdd = -0.05; - } - else if (killedEntity instanceof CatEntity) - { - CatEntity cat = (CatEntity) killedEntity; - final int catType = cat.getCatType(); - if (catType == 10)//all black - { - strengthToAdd = -1; - } - else if (catType == 8)//white - { - strengthToAdd = 0.35; - } - } - break; - case NICROSIL: - //Steals Investiture - break; - } - return strengthToAdd; - } - - public String getHemalurgicUseString() - { - switch (this) - { - case IRON: - return "Steals physical strength."; - case STEEL: - return "Steals a physical allomantic power."; - //Iron//Steel//Tin//Pewter - case TIN: - return "Steals senses."; - case PEWTER: - return "Steals a physical feruchemical power."; - //Iron//Steel//Tin//Pewter - case ZINC: - return "Steals emotional fortitude."; - case BRASS: - return "Steals a cognitive feruchemical power."; - //Zinc//Brass//Copper//Bronze - case COPPER: - return "Steals mental fortitude, memory, and intelligence."; - case BRONZE: - return "Steals a Mental Allomantic power."; - //Zinc//Brass//Copper//Bronze - case ALUMINUM: - return "Removes all powers."; - case DURALUMIN: - return "Steals Connection/Identity."; - case CHROMIUM: - return "Might steal destiny..."; - case NICROSIL: - return "Steals Investiture."; - case CADMIUM: - return "Steals a Temporal Allomantic power."; - //Cadmium//Bendalloy//Gold//Electrum - case GOLD: - return "Steals a Hybrid Feruchemical power."; - //Cadmium//Bendalloy//Gold//Electrum - case BENDALLOY: - return "Steals a Spiritual Feruchemical power."; - //Chromium//Nicrosil//Aluminum//Duralumin - case ELECTRUM: - return "Steals an Enhancement Allomantic power."; - //Chromium//Nicrosil//Aluminum//Duralumin - case ATIUM: - return "Steals an Allomantic or Feruchemical power. Must be refined."; - case LERASIUM: - return "Steals all powers..."; - } - - return "Unknown..."; - } - - public String GetAllomancyDescription() - { - switch (this) - { - case IRON: - return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them." ;//+ - //"The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + - //"The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; - - case STEEL: - return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." ;//+ - //"Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction." + - //"Clever Allomancers use steel to allow themselves to fly through the air."; - - case TIN: - return "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from."; - - case PEWTER: - return "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." ;//+ - //"The major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; - - case ZINC: - return "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\""; - - case BRASS: - return "In allomancy, brass gives the ability to \"soothe\" the emotions of others."; - - case COPPER: - return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. " ;//+ - //"Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; - - case BRONZE: - return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.";//+ - //"Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; - - case ALUMINUM: - return "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself."; - - case DURALUMIN: - return "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly."; - - case CHROMIUM: - return "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)."; - - case NICROSIL: - return "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves."; - - case CADMIUM: - return "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble."; - - case BENDALLOY: - return "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!"; - - case GOLD: - return "$(#f00)(NYI)$()"; - - case ELECTRUM: - return "$(#f00)(NYI)$()"; - - } - return ""; - } - - - public String getFeruchemyMetalmindUse() - { - switch (this) - { - case IRON: - return "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later."; - case STEEL: - return "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later."; - case TIN: - return "Stores Eyesight senses. Tapping will zoom in."; - case PEWTER: - return "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later."; - case ZINC: - return "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later."; - case BRASS: - return "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind."; - case COPPER: - return "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal."; - case BRONZE: - return "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later."; - case ALUMINUM: - return "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind."; - case DURALUMIN: - return "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.";//todo change when tapping works - case CHROMIUM: - return "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later."; - case NICROSIL: - return "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)"; - case CADMIUM: - return "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on."; - case GOLD: - return "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later."; - case ELECTRUM: - return "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later."; - case BENDALLOY: - return "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later."; - case ATIUM: - return "Not yet implemented."; - } - - return "Unknown..."; - } - - //todo implement item tiers - - @Override - public int getUses() - { - return 0; - } - - @Override - public float getSpeed() - { - return 0; - } - - @Override - public float getAttackDamageBonus() - { - return 0; - } - - @Override - public int getLevel() - { - return 0; - } - - @Override - public int getEnchantmentValue() - { - return 0; - } - - @Override - public Ingredient getRepairIngredient() - { - return Ingredient.of(getMetalIngotTag()); - } - - public String getAllomancyRegistryName() - { - return "allomantic_" + this.getName(); - } - - public String getFeruchemyRegistryName() - { - return "feruchemical_" + this.getName(); - } - } - - private static class MetalColor - { - - //Iron(0.560f,0.579f,0.580f) - public static final Color IRON = Color.decode("#f2f2f2"); - public static final Color STEEL = Color.decode("#727273"); - public static final Color TIN = Color.decode("#79b7bc"); - public static final Color PEWTER = Color.decode("#a39b90"); - //Aluminium(0.913f,0.921f,0.925f) - public static final Color ALUMINUM = Color.decode("#d9d9d9"); - public static final Color DURALUMIN = Color.decode("#a6a486"); - //Chromium(0.550f,0.556f,0.554f) - public static final Color CHROMIUM = Color.decode("#595959"); - public static final Color NICROSIL = Color.decode("#59503e"); - public static final Color ZINC = Color.decode("#d7d9c7"); - public static final Color BRASS = Color.decode("#bc6330"); - //Copper(0.955f,0.637f,0.538f) - public static final Color COPPER = Color.decode("#fba634"); - public static final Color BRONZE = Color.decode("#8c5b30"); - //Gold(1.000f,0.766f,0.336f) - public static final Color GOLD = Color.decode("#faf25e"); - public static final Color ELECTRUM = Color.decode("#d9b166"); - public static final Color CADMIUM = Color.decode("#F5926C"); - public static final Color BENDALLOY = Color.decode("#46473e"); - - //new Color(0.860f, 0.870f, 0.880f); - public static final Color LERASIUM = Color.decode("#f2dea0"); - public static final Color ATIUM = Color.decode("#262626"); - - //godmetal/metal alloys - public static final Color MALATIUM = Color.decode("#bfbfbf"); - - - //god metal only alloys - public static final Color HARMONIUM = Color.decode("#88b9d9"); - - // made up - public static final Color LERASATIUM = new Color(0.560f, 0.570f, 0.580f); - - //non-special - public static final Color NICKEL = Color.decode("#eeedcb"); - public static final Color LEAD = Color.decode("#8392c2"); - public static final Color SILVER = Color.decode("#d3e5eb"); - } - - private static class FerringNames - { - public static final String ALL = "feruchemist"; - public static final String IRON = "skimmer"; - public static final String STEEL = "steelrunner"; - public static final String TIN = "windwhisperer"; - public static final String PEWTER = "brute"; - public static final String ALUMINUM = "trueself"; - public static final String DURALUMIN = "connector"; - public static final String CHROMIUM = "spinner"; - public static final String NICROSIL = "soulbearer"; - public static final String ZINC = "sparker"; - public static final String BRASS = "firesoul"; - public static final String COPPER = "archivist"; - public static final String BRONZE = "sentry"; - public static final String GOLD = "bloodmaker"; - public static final String ELECTRUM = "pinnacle"; - public static final String CADMIUM = "gasper"; - public static final String BENDALLOY = "subsumer"; - public static final String ATIUM = "elderling"; - } - - private static class MistingNames - { - public static final String ALL = "mistborn"; - public static final String IRON = "lurcher"; - public static final String STEEL = "coinshot"; - public static final String TIN = "tineye"; - public static final String PEWTER = "thug"; - public static final String ALUMINUM = "aluminum_gnat"; - public static final String DURALUMIN = "duralumin_gnat"; - public static final String CHROMIUM = "leecher"; - public static final String NICROSIL = "nicroburst"; - public static final String ZINC = "rioter"; - public static final String BRASS = "soother"; - public static final String COPPER = "smoker"; - public static final String BRONZE = "seeker"; - public static final String GOLD = "augur"; - public static final String ELECTRUM = "oracle"; - public static final String CADMIUM = "pulser"; - public static final String BENDALLOY = "slider"; - public static final String ATIUM = "seer"; - - } + public enum MetalType implements Tier + { + //Physical/Physical + IRON(0), + STEEL(1),//alloy of iron and carbon (coal/charcoal) 1/4 ? + TIN(2), + PEWTER(3),//alloy of tin and lead 4/1 + + //Mental/Cognitive + ZINC(4), + BRASS(5),//allot of zinc and copper 50/50 ? + COPPER(6), + BRONZE(7),//alloy of copper and tin? 3/1 ? + + //Enhancement/spiritual + ALUMINUM(8), + DURALUMIN(9),//alloy of aluminum and copper 4/1 + CHROMIUM(10), + NICROSIL(11),//alloy of chromium and nickel 1/3 + + //temporal/hybrid + CADMIUM(12), + BENDALLOY(13),//alloy of 70% lead, 20% tin, and 10% cadmium by mass + GOLD(14), + ELECTRUM(15),//alloy of gold and silver 1/1 + + //god metals + ATIUM(16), + LERASIUM(17), + HARMONIUM(18), + + //god metal alloys + MALATIUM(19),//atium and gold? + LERASATIUM(20),// atium and lerasium + + + //non-allomantic metals + + NICKEL(21), + LEAD(22), + SILVER(23); + + private final int id; + + MetalType(int id) + { + this.id = id; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(metalType -> metalType.id == value) + .findFirst(); + } + + public int getID() + { + return id; + } + + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } + + public Rarity getRarity() + { + switch (this) + { + case ATIUM: + case MALATIUM: + return Rarity.RARE; + case LERASIUM: + case LERASATIUM: + case HARMONIUM: + return Rarity.EPIC; + default: + return Rarity.COMMON; + } + } + + public boolean hasAssociatedManifestation() + { + switch (this) + { + case ATIUM: + case MALATIUM: + case LERASIUM: //these are mistborn, but its handled by giving access to all other metals + case LERASATIUM: //these are feruchemists, but its handled by giving access to all other metals + case HARMONIUM: //different way of melding preservation and ruin. No idea what it does + case NICKEL: + case SILVER: + case LEAD: + return false; + default: + return true; + } + } + + public boolean hasHemalurgicEffect() + { + switch (this) + { + case MALATIUM: + case LERASATIUM: + case HARMONIUM: + case NICKEL: + case LEAD: + case SILVER: + return false; + default: + return true; + } + } + + public boolean hasFeruchemicalEffect() + { + switch (this) + { + case LERASIUM://no idea what lerasium would do + case MALATIUM: + case LERASATIUM: + case HARMONIUM: + case NICKEL: + case SILVER: + case LEAD: + return false; + default: + return true; + } + } + + public boolean hasOre() + { + switch (this) + { + case ALUMINUM: + case CADMIUM: + case CHROMIUM: + //case IRON: // covered by minecraft + case NICKEL: + case COPPER: + case ZINC: + case SILVER: + case TIN: + //case GOLD: // covered by minecraft + case LEAD: + return true; + default: + return false; + } + } + + public boolean isAlloy() + { + switch (this) + { + case STEEL: + case PEWTER: + case BRASS: + case BRONZE: + case DURALUMIN: + case NICROSIL: + case BENDALLOY: + case ELECTRUM: + return true; + default: + return false; + } + } + + //Used for metals that exist in the base minecraft + //todo add copper in 1.18 + public boolean hasMaterialItem() + { + switch (this) + { + case IRON: + case GOLD: + //case COPPER: + return false; + default: + return true; + } + } + + //All the helper functions. + + public MobEffect getStoringEffect() + { + return EffectsRegistry.STORING_EFFECTS.get(this).get(); + } + + public MobEffect getTappingEffect() + { + return EffectsRegistry.TAPPING_EFFECTS.get(this).get(); + } + + public NecklaceMetalmindItem getNecklaceItem() + { + return (NecklaceMetalmindItem) ItemsRegistry.METAL_NECKLACES.get(this).get(); + } + + public RingMetalmindItem getRingItem() + { + return (RingMetalmindItem) ItemsRegistry.METAL_RINGS.get(this).get(); + } + + public BraceletMetalmindItem getBraceletItem() + { + return (BraceletMetalmindItem) ItemsRegistry.METAL_BRACELETS.get(this).get(); + } + + public MetalIngotItem getIngotItem() + { + return (MetalIngotItem) ItemsRegistry.METAL_INGOTS.get(this).get(); + } + + public MetalNuggetItem getNuggetItem() + { + return (MetalNuggetItem) ItemsRegistry.METAL_NUGGETS.get(this).get(); + } + + public HemalurgicSpikeItem getSpikeItem() + { + return (HemalurgicSpikeItem) ItemsRegistry.METAL_SPIKE.get(this).get(); + } + + public MetalRawOreItem getRawMetalItem() + { + if (this.isAlloy()) + { + return (MetalRawOreItem) ItemsRegistry.METAL_RAW_BLEND.get(this).get(); + } + // if (this.hasOre()) + else + { + return (MetalRawOreItem) ItemsRegistry.METAL_RAW_ORE.get(this).get(); + } + + } + + public MetalBlock getBlock() + { + return BlocksRegistry.METAL_BLOCKS.get(this).get(); + } + + public OreBlock getOreBlock() + { + return BlocksRegistry.METAL_ORE.get(this).get(); + } + + public TagKey getMetalRawTag() + { + return TagsRegistry.Items.METAL_RAW_TAGS.get(this); + } + + public TagKey getMetalIngotTag() + { + return TagsRegistry.Items.METAL_INGOT_TAGS.get(this); + } + + public TagKey getMetalNuggetTag() + { + return TagsRegistry.Items.METAL_NUGGET_TAGS.get(this); + } + + + public Color getColor() + { + switch (this) + { + default: + case IRON: + return MetalColor.IRON; + case STEEL: + return MetalColor.STEEL; + case TIN: + return MetalColor.TIN; + case PEWTER: + return MetalColor.PEWTER; + case ALUMINUM: + return MetalColor.ALUMINUM; + case DURALUMIN: + return MetalColor.DURALUMIN; + case CHROMIUM: + return MetalColor.CHROMIUM; + case NICROSIL: + return MetalColor.NICROSIL; + case ZINC: + return MetalColor.ZINC; + case BRASS: + return MetalColor.BRASS; + case COPPER: + return MetalColor.COPPER; + case BRONZE: + return MetalColor.BRONZE; + case GOLD: + return MetalColor.GOLD; + case ELECTRUM: + return MetalColor.ELECTRUM; + case CADMIUM: + return MetalColor.CADMIUM; + case BENDALLOY: + return MetalColor.BENDALLOY; + case LERASIUM: + return MetalColor.LERASIUM; + case ATIUM: + return MetalColor.ATIUM; + case MALATIUM: + return MetalColor.MALATIUM; + case LERASATIUM: + return MetalColor.LERASATIUM; + case HARMONIUM: + return MetalColor.HARMONIUM; + case NICKEL: + return MetalColor.NICKEL; + case LEAD: + return MetalColor.LEAD; + case SILVER: + return MetalColor.SILVER; + } + } + + public int getColorValue() + { + return getColor().getRGB(); + } + + public String getFerringName() + { + switch (this) + { + case IRON: + return FerringNames.IRON; + case STEEL: + return FerringNames.STEEL; + case TIN: + return FerringNames.TIN; + case PEWTER: + return FerringNames.PEWTER; + case ALUMINUM: + return FerringNames.ALUMINUM; + case DURALUMIN: + return FerringNames.DURALUMIN; + case CHROMIUM: + return FerringNames.CHROMIUM; + case NICROSIL: + return FerringNames.NICROSIL; + case ZINC: + return FerringNames.ZINC; + case BRASS: + return FerringNames.BRASS; + case COPPER: + return FerringNames.COPPER; + case BRONZE: + return FerringNames.BRONZE; + case GOLD: + return FerringNames.GOLD; + case ELECTRUM: + return FerringNames.ELECTRUM; + case CADMIUM: + return FerringNames.CADMIUM; + case BENDALLOY: + return FerringNames.BENDALLOY; + case ATIUM: + return FerringNames.ATIUM; + case LERASATIUM: + return FerringNames.ALL; + default: + case LERASIUM: + case MALATIUM: + return "ferring_" + this.getName(); + } + } + + public boolean isPushMetal() + { + switch (this) + { + case STEEL: + case PEWTER: + case BRASS: + case BRONZE: + case DURALUMIN: + case NICROSIL: + case BENDALLOY: + case ELECTRUM: + return true; + default: + return false; + } + } + + public boolean isPullMetal() + { + switch (this) + { + case IRON: + case TIN: + case ALUMINUM: + case CHROMIUM: + case ZINC: + case COPPER: + case GOLD: + case CADMIUM: + return true; + default: + return false; + } + } + + public String getMistingName() + { + switch (this) + { + case IRON: + return MistingNames.IRON; + + case STEEL: + return MistingNames.STEEL; + + case TIN: + return MistingNames.TIN; + + case PEWTER: + return MistingNames.PEWTER; + + case ALUMINUM: + return MistingNames.ALUMINUM; + + case DURALUMIN: + return MistingNames.DURALUMIN; + + case CHROMIUM: + return MistingNames.CHROMIUM; + + case NICROSIL: + return MistingNames.NICROSIL; + + case ZINC: + return MistingNames.ZINC; + + case BRASS: + return MistingNames.BRASS; + + case COPPER: + return MistingNames.COPPER; + + case BRONZE: + return MistingNames.BRONZE; + + case GOLD: + return MistingNames.GOLD; + + case ELECTRUM: + return MistingNames.ELECTRUM; + + case CADMIUM: + return MistingNames.CADMIUM; + + case BENDALLOY: + return MistingNames.BENDALLOY; + + case ATIUM: + return MistingNames.ATIUM; + + case LERASIUM: + return MistingNames.ALL; + + default: + case MALATIUM: + case LERASATIUM: + return "misting_" + this.getName(); + + } + } + + public Collection getHemalurgyStealWhitelist() + { + switch (this) + { + case STEEL: + //Steals a physical allomantic power + //Iron//Steel//Tin//Pewter + case PEWTER: + //Steals a physical feruchemical power + //Iron//Steel//Tin//Pewter + return Arrays.asList( + Metals.MetalType.IRON, + Metals.MetalType.STEEL, + Metals.MetalType.TIN, + Metals.MetalType.PEWTER); + case BRASS: + //Steals a cognitive feruchemical power + //Zinc//Brass//Copper//Bronze + case BRONZE: + //Steals a Mental Allomantic power + //Zinc//Brass//Copper//Bronze + return Arrays.asList( + Metals.MetalType.ZINC, + Metals.MetalType.BRASS, + Metals.MetalType.COPPER, + Metals.MetalType.BRONZE); + case CADMIUM: + //Steals a Temporal Allomantic power + //Cadmium//Bendalloy//Gold//Electrum + case GOLD: + //Steals a Hybrid Feruchemical power + //Cadmium//Bendalloy//Gold//Electrum + return Arrays.asList( + Metals.MetalType.CADMIUM, + Metals.MetalType.BENDALLOY, + Metals.MetalType.GOLD, + Metals.MetalType.ELECTRUM); + case BENDALLOY: + //Steals a Spiritual Feruchemical power + //Chromium//Nicrosil//Aluminum//Duralumin + case ELECTRUM: + //Steals an Enhancement Allomantic power + //Chromium//Nicrosil//Aluminum//Duralumin + return Arrays.asList( + Metals.MetalType.CHROMIUM, + Metals.MetalType.NICROSIL, + Metals.MetalType.ALUMINUM, + Metals.MetalType.DURALUMIN); + case ATIUM: + case LERASIUM: + return Arrays.stream(MetalType.values()).filter(MetalType::hasAssociatedManifestation).collect(Collectors.toList()); + case MALATIUM: + case LERASATIUM: + break; + } + + return null; + } + + public int getAllomancyBurnTimeSeconds() + { + //todo decide burn rate of metals + //todo convert to config item + int burnTimeInSeconds = 99; + switch (this) + { + case IRON: + break; + case STEEL: + break; + case TIN: + break; + case PEWTER: + break; + case ZINC: + break; + case BRASS: + break; + case COPPER: + break; + case BRONZE: + break; + case ALUMINUM: + break; + case DURALUMIN: + break; + case CHROMIUM: + break; + case NICROSIL: + break; + case CADMIUM: + break; + case BENDALLOY: + break; + case GOLD: + break; + case ELECTRUM: + break; + case ATIUM: + break; + case MALATIUM: + break; + } + return burnTimeInSeconds; + } + + public double getEntityAbilityStrength(LivingEntity killedEntity, Player playerEntity) + { + //Steals non-manifestation based abilities. traits inherent to an entity? + double strengthToAdd = 0; + switch (this) + { + case IRON: + //steals physical strength + //don't steal modified values, only base value + //todo decide how much strength is reasonable to steal and how much goes to waste + //currently will try 70% + strengthToAdd = killedEntity.getAttributes().getBaseValue(Attributes.ATTACK_DAMAGE) * 0.7D; + + break; + case TIN: + //Steals senses + + //can track you on a huge island, even underground. + if (killedEntity instanceof EnderDragon) + { + strengthToAdd = 0.77; + } + //Literally hunt players at night + else if (killedEntity instanceof Phantom) + { + strengthToAdd = 0.66; + } + else if (killedEntity instanceof Player) + { + strengthToAdd = 0.25; + } + else + { + final AttributeInstance attribute = killedEntity.getAttribute(Attributes.FOLLOW_RANGE); + + if (attribute != null) + { + //ghasts have 100 base follow range, + //most others have 16-40 + final int hemalurgicDecay = 150; + strengthToAdd = attribute.getBaseValue() / hemalurgicDecay; + } + else + { + //at this point, who cares. + strengthToAdd = 0.10; + } + } + break; + case COPPER: + //Steals mental fortitude, memory, and intelligence + //increase base xp gain rate + final float potentialRewardRate = killedEntity.getExperienceReward(playerEntity) / 150f; + + if (killedEntity instanceof Player) + { + final AttributeInstance attribute = killedEntity.getAttribute(AttributesRegistry.COSMERE_ATTRIBUTES.get(MetalType.COPPER.getName()).get()); + if (attribute != null) + { + //70% strength to spike + strengthToAdd = attribute.getValue() * 0.70; + //25% remaining on player + final double newBaseValue = attribute.getValue() * 0.25; + attribute.setBaseValue(((int) (newBaseValue * 100)) / 100f); + } + else + { + strengthToAdd = potentialRewardRate; + } + } + else if (killedEntity instanceof EnderDragon) + { + EnderDragon dragonEntity = (EnderDragon) killedEntity; + //dragon doesn't reward xp in a typical way + strengthToAdd = + dragonEntity.getDragonFight() != null && !dragonEntity.getDragonFight().hasPreviouslyKilledDragon() + ? 1 //give first person to kill dragon a full rate increase spike + : 0.33;//else similar to wither rate. + } + else + { + strengthToAdd = potentialRewardRate; + } + break; + case ZINC: + //Steals emotional fortitude + //todo figure out what that means + break; + case ALUMINUM: + //Removes all powers + //... ooops? + //maybe its an item you can equip on others that they then have to remove? + break; + case DURALUMIN: + //Steals Connection/Identity + break; + case CHROMIUM: + //Might steal destiny + //so we could add some permanent luck? + + if (killedEntity instanceof Rabbit) + { + strengthToAdd = 0.77; + } + else if (killedEntity instanceof WitherSkeleton) + { + strengthToAdd = -0.77; + } + else if (killedEntity instanceof Pufferfish) + { + strengthToAdd = -0.05; + } + else if (killedEntity instanceof Cat) + { + Cat cat = (Cat) killedEntity; + final int catType = cat.getCatType(); + if (catType == 10)//all black + { + strengthToAdd = -1; + } + else if (catType == 8)//white + { + strengthToAdd = 0.35; + } + } + break; + case NICROSIL: + //Steals Investiture + break; + } + return strengthToAdd; + } + + public String getHemalurgicUseString() + { + switch (this) + { + case IRON: + return "Steals physical strength."; + case STEEL: + return "Steals a physical allomantic power."; + //Iron//Steel//Tin//Pewter + case TIN: + return "Steals senses."; + case PEWTER: + return "Steals a physical feruchemical power."; + //Iron//Steel//Tin//Pewter + case ZINC: + return "Steals emotional fortitude."; + case BRASS: + return "Steals a cognitive feruchemical power."; + //Zinc//Brass//Copper//Bronze + case COPPER: + return "Steals mental fortitude, memory, and intelligence."; + case BRONZE: + return "Steals a Mental Allomantic power."; + //Zinc//Brass//Copper//Bronze + case ALUMINUM: + return "Removes all powers."; + case DURALUMIN: + return "Steals Connection/Identity."; + case CHROMIUM: + return "Might steal destiny..."; + case NICROSIL: + return "Steals Investiture."; + case CADMIUM: + return "Steals a Temporal Allomantic power."; + //Cadmium//Bendalloy//Gold//Electrum + case GOLD: + return "Steals a Hybrid Feruchemical power."; + //Cadmium//Bendalloy//Gold//Electrum + case BENDALLOY: + return "Steals a Spiritual Feruchemical power."; + //Chromium//Nicrosil//Aluminum//Duralumin + case ELECTRUM: + return "Steals an Enhancement Allomantic power."; + //Chromium//Nicrosil//Aluminum//Duralumin + case ATIUM: + return "Steals an Allomantic or Feruchemical power. Must be refined."; + case LERASIUM: + return "Steals all powers..."; + } + + return "Unknown..."; + } + + public String GetAllomancyDescription() + { + switch (this) + { + case IRON: + return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them.";//+ + //"The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + + //"The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; + + case STEEL: + return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object.";//+ + //"Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction." + + //"Clever Allomancers use steel to allow themselves to fly through the air."; + + case TIN: + return "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from."; + + case PEWTER: + return "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself.";//+ + //"The major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; + + case ZINC: + return "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\""; + + case BRASS: + return "In allomancy, brass gives the ability to \"soothe\" the emotions of others."; + + case COPPER: + return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. ";//+ + //"Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; + + case BRONZE: + return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.";//+ + //"Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; + + case ALUMINUM: + return "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself."; + + case DURALUMIN: + return "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly."; + + case CHROMIUM: + return "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)."; + + case NICROSIL: + return "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves."; + + case CADMIUM: + return "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble."; + + case BENDALLOY: + return "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!"; + + case GOLD: + return "$(#f00)(NYI)$()"; + + case ELECTRUM: + return "$(#f00)(NYI)$()"; + + } + return ""; + } + + + public String getFeruchemyMetalmindUse() + { + switch (this) + { + case IRON: + return "Stores Weight. Less weight slows descent. A Skimmer Ferring using this will decrease the pull of gravity on them in exchange for increasing it later."; + case STEEL: + return "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later."; + case TIN: + return "Stores Eyesight senses. Tapping will zoom in."; + case PEWTER: + return "Stores Strength. A Brute Ferring using this will lessen the size of his muscles to increase them later."; + case ZINC: + return "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later."; + case BRASS: + return "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind."; + case COPPER: + return "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal."; + case BRONZE: + return "Stores Wakefulness. A Sentry Ferring using this will sleep or be drowsier now in exchange for staying awake longer later."; + case ALUMINUM: + return "Stores Identity. Trueself Ferrings can store their spiritual sense of self within an aluminum metalmind."; + case DURALUMIN: + return "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.";//todo change when tapping works + case CHROMIUM: + return "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later."; + case NICROSIL: + return "Stores Investiture. Little is known about Soulbearer Ferrings. (Not yet implemented)"; + case CADMIUM: + return "Stores Breath. A Gasper Ferring may hyperventilate while storing breath in exchange for eliminating or reducing the need to breathe later on."; + case GOLD: + return "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later."; + case ELECTRUM: + return "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later."; + case BENDALLOY: + return "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later."; + case ATIUM: + return "Not yet implemented."; + } + + return "Unknown..."; + } + + //todo implement item tiers + + @Override + public int getUses() + { + return 0; + } + + @Override + public float getSpeed() + { + return 0; + } + + @Override + public float getAttackDamageBonus() + { + return 0; + } + + @Override + public int getLevel() + { + return 0; + } + + @Override + public int getEnchantmentValue() + { + return 0; + } + + @Override + public Ingredient getRepairIngredient() + { + return Ingredient.of(getMetalIngotTag()); + } + + public String getAllomancyRegistryName() + { + return "allomantic_" + this.getName(); + } + + public String getFeruchemyRegistryName() + { + return "feruchemical_" + this.getName(); + } + } + + private static class MetalColor + { + + //Iron(0.560f,0.579f,0.580f) + public static final Color IRON = Color.decode("#f2f2f2"); + public static final Color STEEL = Color.decode("#727273"); + public static final Color TIN = Color.decode("#79b7bc"); + public static final Color PEWTER = Color.decode("#a39b90"); + //Aluminium(0.913f,0.921f,0.925f) + public static final Color ALUMINUM = Color.decode("#d9d9d9"); + public static final Color DURALUMIN = Color.decode("#a6a486"); + //Chromium(0.550f,0.556f,0.554f) + public static final Color CHROMIUM = Color.decode("#595959"); + public static final Color NICROSIL = Color.decode("#59503e"); + public static final Color ZINC = Color.decode("#d7d9c7"); + public static final Color BRASS = Color.decode("#bc6330"); + //Copper(0.955f,0.637f,0.538f) + public static final Color COPPER = Color.decode("#fba634"); + public static final Color BRONZE = Color.decode("#8c5b30"); + //Gold(1.000f,0.766f,0.336f) + public static final Color GOLD = Color.decode("#faf25e"); + public static final Color ELECTRUM = Color.decode("#d9b166"); + public static final Color CADMIUM = Color.decode("#F5926C"); + public static final Color BENDALLOY = Color.decode("#46473e"); + + //new Color(0.860f, 0.870f, 0.880f); + public static final Color LERASIUM = Color.decode("#f2dea0"); + public static final Color ATIUM = Color.decode("#262626"); + + //godmetal/metal alloys + public static final Color MALATIUM = Color.decode("#bfbfbf"); + + + //god metal only alloys + public static final Color HARMONIUM = Color.decode("#88b9d9"); + + // made up + public static final Color LERASATIUM = new Color(0.560f, 0.570f, 0.580f); + + //non-special + public static final Color NICKEL = Color.decode("#eeedcb"); + public static final Color LEAD = Color.decode("#8392c2"); + public static final Color SILVER = Color.decode("#d3e5eb"); + } + + private static class FerringNames + { + public static final String ALL = "feruchemist"; + public static final String IRON = "skimmer"; + public static final String STEEL = "steelrunner"; + public static final String TIN = "windwhisperer"; + public static final String PEWTER = "brute"; + public static final String ALUMINUM = "trueself"; + public static final String DURALUMIN = "connector"; + public static final String CHROMIUM = "spinner"; + public static final String NICROSIL = "soulbearer"; + public static final String ZINC = "sparker"; + public static final String BRASS = "firesoul"; + public static final String COPPER = "archivist"; + public static final String BRONZE = "sentry"; + public static final String GOLD = "bloodmaker"; + public static final String ELECTRUM = "pinnacle"; + public static final String CADMIUM = "gasper"; + public static final String BENDALLOY = "subsumer"; + public static final String ATIUM = "elderling"; + } + + private static class MistingNames + { + public static final String ALL = "mistborn"; + public static final String IRON = "lurcher"; + public static final String STEEL = "coinshot"; + public static final String TIN = "tineye"; + public static final String PEWTER = "thug"; + public static final String ALUMINUM = "aluminum_gnat"; + public static final String DURALUMIN = "duralumin_gnat"; + public static final String CHROMIUM = "leecher"; + public static final String NICROSIL = "nicroburst"; + public static final String ZINC = "rioter"; + public static final String BRASS = "soother"; + public static final String COPPER = "smoker"; + public static final String BRONZE = "seeker"; + public static final String GOLD = "augur"; + public static final String ELECTRUM = "oracle"; + public static final String CADMIUM = "pulser"; + public static final String BENDALLOY = "slider"; + public static final String ATIUM = "seer"; + + } } diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java index c8fab56ec..5ae501e71 100644 --- a/src/main/java/leaf/cosmere/constants/Roshar.java +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -5,9 +5,9 @@ package leaf.cosmere.constants; import leaf.cosmere.registry.ItemsRegistry; -import net.minecraft.item.IItemTier; -import net.minecraft.item.Item; -import net.minecraft.item.crafting.Ingredient; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Tier; +import net.minecraft.world.item.crafting.Ingredient; import java.awt.*; import java.util.Arrays; @@ -82,7 +82,7 @@ public int getColor() } //https://coppermind.net/wiki/Polestone - public enum Polestone implements IItemTier + public enum Polestone implements Tier { SAPPHIRE(0), SMOKESTONE(1), diff --git a/src/main/java/leaf/cosmere/datagen/DataGen.java b/src/main/java/leaf/cosmere/datagen/DataGen.java index f5b6c95ab..d5a25e047 100644 --- a/src/main/java/leaf/cosmere/datagen/DataGen.java +++ b/src/main/java/leaf/cosmere/datagen/DataGen.java @@ -23,40 +23,40 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; -import net.minecraftforge.fml.event.lifecycle.GatherDataEvent; +import net.minecraftforge.forge.event.lifecycle.GatherDataEvent; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Bus.MOD) public class DataGen { - public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - @SubscribeEvent - public static void onDataGen(GatherDataEvent event) - { - DataGenerator generator = event.getGenerator(); - ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + @SubscribeEvent + public static void onDataGen(GatherDataEvent event) + { + DataGenerator generator = event.getGenerator(); + ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(new EngLangGen(generator)); + generator.addProvider(new EngLangGen(generator)); - BlockTagsGen blockTags = new BlockTagsGen(generator, existingFileHelper); - generator.addProvider(blockTags); - generator.addProvider(new ItemTagsGen(generator, blockTags, existingFileHelper)); + BlockTagsGen blockTags = new BlockTagsGen(generator, existingFileHelper); + generator.addProvider(blockTags); + generator.addProvider(new ItemTagsGen(generator, blockTags, existingFileHelper)); - if (!event.includeClient()) - { - return; - } + if (!event.includeClient()) + { + return; + } - generator.addProvider(new ItemModelsGen(generator, existingFileHelper)); - generator.addProvider(new BlockModelsGen(generator, existingFileHelper)); - generator.addProvider(new LootTableGen(generator)); - generator.addProvider(new RecipeGen(generator)); + generator.addProvider(new ItemModelsGen(generator, existingFileHelper)); + generator.addProvider(new BlockModelsGen(generator, existingFileHelper)); + generator.addProvider(new LootTableGen(generator)); + generator.addProvider(new RecipeGen(generator)); generator.addProvider(new AdvancementGen(generator)); generator.addProvider(new PatchouliGen(generator)); - } + } } diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index dbb4a223c..6a7101e5b 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -6,89 +6,89 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.ResourceLocationHelper; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.RecipeRegistry; import leaf.cosmere.registry.TagsRegistry; -import net.minecraft.data.*; -import net.minecraft.item.Item; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.tags.ITag; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.recipes.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; -import net.minecraft.util.IItemProvider; -import net.minecraft.util.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; import javax.annotation.Nullable; import java.util.Arrays; -import java.util.Locale; import java.util.Map; import java.util.function.Consumer; public class RecipeGen extends RecipeProvider implements IConditionBuilder { - public RecipeGen(DataGenerator generatorIn) - { - super(generatorIn); - } + public RecipeGen(DataGenerator generatorIn) + { + super(generatorIn); + } - @Override - protected void buildShapelessRecipes(Consumer consumer) - { + @Override + protected void buildCraftingRecipes(Consumer consumer) + { - //example recipes obtained from following website on 3rd April '21. Thank you ChampionAsh5357! - //https://github.com/ChampionAsh5357/1.16.x-Minecraft-Tutorial/blob/1.16.1-32.0.61-web/src/main/java/io/github/championash5357/tutorial/data/TutorialRecipeProvider.java + //example recipes obtained from following website on 3rd April '21. Thank you ChampionAsh5357! + //https://github.com/ChampionAsh5357/1.16.x-Minecraft-Tutorial/blob/1.16.1-32.0.61-web/src/main/java/io/github/championash5357/tutorial/data/TutorialRecipeProvider.java - //addBasicArmorRecipes(consumer, ItemsRegistry.RUBY.get(), ItemsRegistry.RUBY_HELMET.get(), ItemsRegistry.RUBY_CHESTPLATE.get(), ItemsRegistry.RUBY_LEGGINGS.get(), ItemsRegistry.RUBY_BOOTS.get()); - //ShapedRecipeBuilder.shapedRecipe(BlocksRegistry.WASHER.get()).key('I', Items.IRON_INGOT).key('W', Items.WATER_BUCKET).patternLine("III").patternLine("IWI").patternLine("III").addCriterion("in_water", enteredBlock(Blocks.WATER)).build(consumer); + //addBasicArmorRecipes(consumer, ItemsRegistry.RUBY.get(), ItemsRegistry.RUBY_HELMET.get(), ItemsRegistry.RUBY_CHESTPLATE.get(), ItemsRegistry.RUBY_LEGGINGS.get(), ItemsRegistry.RUBY_BOOTS.get()); + //ShapedRecipeBuilder.shapedRecipe(BlocksRegistry.WASHER.get()).key('I', Items.IRON_INGOT).key('W', Items.WATER_BUCKET).patternLine("III").patternLine("IWI").patternLine("III").addCriterion("in_water", enteredBlock(Blocks.WATER)).build(consumer); - //addOreSmeltingRecipes(consumer, BlocksRegistry.GEM_BLOCK.get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); - addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); + //addOreSmeltingRecipes(consumer, BlocksRegistry.GEM_BLOCK.get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); + addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), ItemsRegistry.GUIDE.get(), 1.0f, 200); - ShapedRecipeBuilder.shaped(ItemsRegistry.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); + ShapedRecipeBuilder.shaped(ItemsRegistry.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); - ShapedRecipeBuilder - .shaped(BlocksRegistry.METALWORKING_TABLE.get()) - .define('X', Tags.Items.INGOTS) - .define('Y', ItemTags.PLANKS) - .pattern("XX") - .pattern("YY") - .pattern("YY") - .unlockedBy("has_material", has(Tags.Items.INGOTS)) - .save(consumer); + ShapedRecipeBuilder + .shaped(BlocksRegistry.METALWORKING_TABLE.get()) + .define('X', Tags.Items.INGOTS) + .define('Y', ItemTags.PLANKS) + .pattern("XX") + .pattern("YY") + .pattern("YY") + .unlockedBy("has_material", has(Tags.Items.INGOTS)) + .save(consumer); - CustomRecipeBuilder.special(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).save(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); + SpecialRecipeBuilder.special(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).save(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - addBasicMetalmindRecipes(consumer, metalType); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + addBasicMetalmindRecipes(consumer, metalType); - //theres no reason for uss to add ways to recipe blocks/ingots that minecraft already has - final Metals.MetalType[] blacklistedTypes = {Metals.MetalType.IRON, Metals.MetalType.GOLD,}; - if (Arrays.stream(blacklistedTypes).anyMatch(metalType::equals)) - { - continue; - } + //theres no reason for uss to add ways to recipe blocks/ingots that minecraft already has + final Metals.MetalType[] blacklistedTypes = {Metals.MetalType.IRON, Metals.MetalType.GOLD,}; + if (Arrays.stream(blacklistedTypes).anyMatch(metalType::equals)) + { + continue; + } - compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType), metalType.getName() + "_block_deconstruct"); + compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType), metalType.getName() + "_block_deconstruct"); - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), TagsRegistry.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - if (metalType.hasOre()) - { - addOreSmeltingRecipes(consumer, metalType.getOreBlock(), metalType.getIngotItem(), 1.0f, 200); - addOreSmeltingRecipes(consumer, metalType.getRawMetalItem(), metalType.getIngotItem(), 1.0f, 200); - } + if (metalType.hasOre()) + { + addOreSmeltingRecipes(consumer, metalType.getOreBlock(), metalType.getIngotItem(), 1.0f, 200); + addOreSmeltingRecipes(consumer, metalType.getRawMetalItem(), metalType.getIngotItem(), 1.0f, 200); + } - if (metalType.isAlloy()) - { + if (metalType.isAlloy()) + { /* Item outputNugget = ItemsRegistry.METAL_NUGGETS.get(metalType).get(); Item outputIngot = ItemsRegistry.METAL_INGOTS.get(metalType).get(); Item outputBlock = BlocksRegistry.METAL_BLOCKS.get(metalType).get(); @@ -96,168 +96,168 @@ protected void buildShapelessRecipes(Consumer consumer) addAlloyRecipes(consumer, metalType, outputIngot, TagsRegistry.Items.METAL_INGOT_TAGS,"ingot"); addAlloyRecipes(consumer, metalType, outputBlock, TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS,"block");*/ - Item outputBlend = metalType.getRawMetalItem(); - addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_RAW_TAGS, "blend"); + Item outputBlend = metalType.getRawMetalItem(); + addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_RAW_TAGS, "blend"); - addOreSmeltingRecipes(consumer, outputBlend, metalType.getIngotItem(), 1.0f, 200); - } + addOreSmeltingRecipes(consumer, outputBlend, metalType.getIngotItem(), 1.0f, 200); + } - } - } + } + } - //todo better alloying recipes than these debug shenanigans - private void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) - { - String s = String.format("alloying/%s/", recipe); - switch (metalType) - { - case STEEL: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) - .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case PEWTER: - ShapelessRecipeBuilder.shapeless(output, 5) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case BRASS: - ShapelessRecipeBuilder.shapeless(output, 2) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.ZINC)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case BRONZE: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case DURALUMIN: - ShapelessRecipeBuilder.shapeless(output, 5) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case NICROSIL: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.CHROMIUM)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case BENDALLOY: - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.CADMIUM)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - case ELECTRUM: - ShapelessRecipeBuilder.shapeless(output, 2) - .unlockedBy("has_item", has(output)) - .requires(Ingredient.of(Tags.Items.INGOTS_GOLD)) - .requires(materialTag.get(Metals.MetalType.SILVER)) - .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); - break; - } - } + //todo better alloying recipes than these debug shenanigans + private void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) + { + String s = String.format("alloying/%s/", recipe); + switch (metalType) + { + case STEEL: + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case PEWTER: + ShapelessRecipeBuilder.shapeless(output, 5) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case BRASS: + ShapelessRecipeBuilder.shapeless(output, 2) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.ZINC)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case BRONZE: + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case DURALUMIN: + ShapelessRecipeBuilder.shapeless(output, 5) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.ALUMINUM)) + .requires(materialTag.get(Metals.MetalType.COPPER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case NICROSIL: + ShapelessRecipeBuilder.shapeless(output, 4) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.CHROMIUM)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .requires(materialTag.get(Metals.MetalType.NICKEL)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case BENDALLOY: + ShapelessRecipeBuilder.shapeless(output, 9) + .unlockedBy("has_item", has(output)) + .requires(materialTag.get(Metals.MetalType.CADMIUM)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.LEAD)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .requires(materialTag.get(Metals.MetalType.TIN)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + case ELECTRUM: + ShapelessRecipeBuilder.shapeless(output, 2) + .unlockedBy("has_item", has(output)) + .requires(Ingredient.of(Tags.Items.INGOTS_GOLD)) + .requires(materialTag.get(Metals.MetalType.SILVER)) + .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); + break; + } + } - protected static void addBasicArmorRecipes(Consumer consumer, ITag inputMaterial, @Nullable Item head, @Nullable Item chest, @Nullable Item legs, @Nullable Item feet) - { - if (head != null) - { - ShapedRecipeBuilder.shaped(head).define('X', inputMaterial).pattern("XXX").pattern("X X").group("helmets").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (chest != null) - { - ShapedRecipeBuilder.shaped(chest).define('X', inputMaterial).pattern("X X").pattern("XXX").pattern("XXX").group("chestplates").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (legs != null) - { - ShapedRecipeBuilder.shaped(legs).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern("X X").group("leggings").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (feet != null) - { - ShapedRecipeBuilder.shaped(feet).define('X', inputMaterial).pattern("X X").pattern("X X").group("boots").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - } + protected static void addBasicArmorRecipes(Consumer consumer, TagKey inputMaterial, @Nullable Item head, @Nullable Item chest, @Nullable Item legs, @Nullable Item feet) + { + if (head != null) + { + ShapedRecipeBuilder.shaped(head).define('X', inputMaterial).pattern("XXX").pattern("X X").group("helmets").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + if (chest != null) + { + ShapedRecipeBuilder.shaped(chest).define('X', inputMaterial).pattern("X X").pattern("XXX").pattern("XXX").group("chestplates").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + if (legs != null) + { + ShapedRecipeBuilder.shaped(legs).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern("X X").group("leggings").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + if (feet != null) + { + ShapedRecipeBuilder.shaped(feet).define('X', inputMaterial).pattern("X X").pattern("X X").group("boots").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + } - protected static void addBasicMetalmindRecipes(Consumer consumer, Metals.MetalType metalType) - { - ITag.INamedTag inputMaterial = metalType.getMetalIngotTag(); + protected static void addBasicMetalmindRecipes(Consumer consumer, Metals.MetalType metalType) + { + TagKey inputMaterial = metalType.getMetalIngotTag(); - if (metalType.hasFeruchemicalEffect()) - { - ShapedRecipeBuilder.shaped(metalType.getNecklaceItem()).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern(" X ").group("necklace").unlockedBy("has_material", has(inputMaterial)).save(consumer); - ShapedRecipeBuilder.shaped(metalType.getRingItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern(" X ").group("ring").unlockedBy("has_material", has(inputMaterial)).save(consumer); - ShapedRecipeBuilder.shaped(metalType.getBraceletItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern("X X").group("bracelet").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (metalType.hasHemalurgicEffect()) - { - ShapedRecipeBuilder.shaped(metalType.getSpikeItem()).define('X', inputMaterial).pattern("X").pattern("X").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - } + if (metalType.hasFeruchemicalEffect()) + { + ShapedRecipeBuilder.shaped(metalType.getNecklaceItem()).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern(" X ").group("necklace").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(metalType.getRingItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern(" X ").group("ring").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(metalType.getBraceletItem()).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern("X X").group("bracelet").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + if (metalType.hasHemalurgicEffect()) + { + ShapedRecipeBuilder.shaped(metalType.getSpikeItem()).define('X', inputMaterial).pattern("X").pattern("X").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); + } + } - private void decompressRecipe(Consumer consumer, IItemProvider output, ITag input, String name) - { - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(input) - .save(consumer, ResourceLocationHelper.prefix("conversions/" + name)); - } + private void decompressRecipe(Consumer consumer, ItemLike output, TagKey input, String name) + { + ShapelessRecipeBuilder.shapeless(output, 9) + .unlockedBy("has_item", has(output)) + .requires(input) + .save(consumer, ResourceLocationHelper.prefix("conversions/" + name)); + } - private ShapedRecipeBuilder compressRecipe(IItemProvider output, ITag input) - { - return ShapedRecipeBuilder.shaped(output) - .define('I', input) - .pattern("III") - .pattern("III") - .pattern("III") - .unlockedBy("has_item", has(input)); - } + private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) + { + return ShapedRecipeBuilder.shaped(output) + .define('I', input) + .pattern("III") + .pattern("III") + .pattern("III") + .unlockedBy("has_item", has(input)); + } - protected static void addOreSmeltingRecipes(Consumer consumer, IItemProvider ore, Item result, float experience, int time) - { - String name = result.getRegistryName().getPath(); - String path = ore.asItem().getRegistryName().getPath(); - CookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); - CookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); - } + protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + { + String name = result.getRegistryName().getPath(); + String path = ore.asItem().getRegistryName().getPath(); + SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); + SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); + } - protected static void addCookingRecipes(Consumer consumer, IItemProvider inputItem, Item result, float experience, int time) - { - String name = result.getRegistryName().getPath(); - CookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); - CookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, IRecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); - CookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, IRecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); - } + protected static void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) + { + String name = result.getRegistryName().getPath(); + SimpleCookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); + SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, RecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); + SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, RecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); + } } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java index 131866618..e51e35161 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java @@ -8,13 +8,12 @@ import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.advancements.Advancement; import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; -import net.minecraft.util.ResourceLocation; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; +import net.minecraft.resources.ResourceLocation; import java.io.IOException; import java.nio.file.Path; @@ -22,68 +21,68 @@ import java.util.Set; import java.util.function.Consumer; -public class AdvancementGen implements IDataProvider +public class AdvancementGen implements DataProvider { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new CoreAdvancements(), - new AllomancyAdvancements(), - new FeruchemyAdvancements(), - new HemalurgyAdvancements() - ); + private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); + private final DataGenerator generator; + private final List>> advancements = ImmutableList.of( + new CoreAdvancements(), + new AllomancyAdvancements(), + new FeruchemyAdvancements(), + new HemalurgyAdvancements() + ); - public AdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } + public AdvancementGen(DataGenerator generatorIn) + { + this.generator = generatorIn; + } - /** - * Performs this provider's action. - */ - public void run(DirectoryCache cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); + /** + * Performs this provider's action. + */ + public void run(HashCache cache) throws IOException + { + Path path = this.generator.getOutputFolder(); + Set set = Sets.newHashSet(); + Consumer consumer = (advancement) -> + { + if (!set.add(advancement.getId())) + { + throw new IllegalStateException("Duplicate advancement " + advancement.getId()); + } + else + { + Path path1 = getPath(path, advancement); - try - { - IDataProvider.save(GSON, cache, advancement.deconstruct().serializeToJson(), path1); - } catch (IOException ioexception) - { - LOGGER.error("Couldn't save advancement {}", path1, ioexception); - } + try + { + DataProvider.save(GSON, cache, advancement.deconstruct().serializeToJson(), path1); + } + catch (IOException ioexception) + { + LogHelper.LOGGER.error("Couldn't save advancement {}", path1, ioexception); + } - } - }; + } + }; - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } + for (Consumer> consumer1 : this.advancements) + { + consumer1.accept(consumer); + } - } + } - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/cosmere/advancements/" + advancementIn.getId().getPath() + ".json"); - } + private static Path getPath(Path pathIn, Advancement advancementIn) + { + return pathIn.resolve("data/cosmere/advancements/" + advancementIn.getId().getPath() + ".json"); + } - /** - * Gets a name for this provider, to use in logging. - */ - public String getName() - { - return "Cosmere Advancements"; - } + /** + * Gets a name for this provider, to use in logging. + */ + public String getName() + { + return "Cosmere Advancements"; + } } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index d046bac8c..d9f55af1a 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -11,65 +11,64 @@ import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.criterion.EntityPredicate; -import net.minecraft.advancements.criterion.InventoryChangeTrigger; -import net.minecraft.advancements.criterion.ItemPredicate; -import net.minecraft.advancements.criterion.TickTrigger; -import net.minecraft.item.Items; +import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.item.Items; +import net.minecraftforge.registries.RegistryObject; -import java.util.Locale; import java.util.function.Consumer; public class AllomancyAdvancements implements Consumer> { - public AllomancyAdvancements() - { - } + public AllomancyAdvancements() + { + } - public void accept(Consumer advancementConsumer) - { - String categoryName = "allomancy"; - Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false, - false, - false) - .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); + public void accept(Consumer advancementConsumer) + { + String categoryName = "allomancy"; + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .save(advancementConsumer, categoryName + "/root"); - for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) - { - AllomancyBase allomancyBase = (AllomancyBase) manifestation.get(); + for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) + { + AllomancyBase allomancyBase = (AllomancyBase) manifestation.get(); - Metals.MetalType metalType = allomancyBase.getMetalType(); - String metalName = metalType.getName(); + Metals.MetalType metalType = allomancyBase.getMetalType(); + String metalName = metalType.getName(); - Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() - .parent(root) - .display( - Items.WOODEN_PICKAXE, - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - (ResourceLocation) null, - FrameType.TASK, - true, - true, - false) - .addCriterion( - "get_stone", - InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, categoryName + "/" + metalName); - } + Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + .parent(root) + .display( + Items.WOODEN_PICKAXE, + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + null, + FrameType.TASK, + true, + true, + false) + .addCriterion( + "get_stone", + InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, categoryName + "/" + metalName); + } - } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java index cd1d0fb80..120533898 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java @@ -7,55 +7,55 @@ import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.criterion.EntityPredicate; -import net.minecraft.advancements.criterion.InventoryChangeTrigger; -import net.minecraft.advancements.criterion.ItemPredicate; -import net.minecraft.advancements.criterion.TickTrigger; -import net.minecraft.item.Items; +import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.world.item.Items; import java.util.function.Consumer; public class CoreAdvancements implements Consumer> { - public CoreAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - final String categoryName = "root"; - - Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false, - false, - false) - .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, "core/" + categoryName); - - Advancement advancement1 = Advancement.Builder.advancement() - .parent(root) - .display( - Items.WOODEN_PICKAXE, - new TranslationTextComponent("advancements.cosmere.mine_stone.title"), - new TranslationTextComponent("advancements.cosmere.mine_stone.description"), - (ResourceLocation) null, - FrameType.TASK, - true, - true, - false) - .addCriterion( - "get_stone", - InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, "core/mine_stone"); - - } + public CoreAdvancements() + { + } + + public void accept(Consumer advancementConsumer) + { + final String categoryName = "root"; + + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .save(advancementConsumer, "core/" + categoryName); + + Advancement advancement1 = Advancement.Builder.advancement() + .parent(root) + .display( + Items.WOODEN_PICKAXE, + new TranslatableComponent("advancements.cosmere.mine_stone.title"), + new TranslatableComponent("advancements.cosmere.mine_stone.description"), + null, + FrameType.TASK, + true, + true, + false) + .addCriterion( + "get_stone", + InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, "core/mine_stone"); + + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java index 769d6205d..07f761260 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -11,66 +11,65 @@ import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.criterion.EntityPredicate; -import net.minecraft.advancements.criterion.InventoryChangeTrigger; -import net.minecraft.advancements.criterion.ItemPredicate; -import net.minecraft.advancements.criterion.TickTrigger; -import net.minecraft.item.Items; +import net.minecraft.advancements.critereon.EntityPredicate; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.item.Items; +import net.minecraftforge.registries.RegistryObject; -import java.util.Locale; import java.util.function.Consumer; public class FeruchemyAdvancements implements Consumer> { - public FeruchemyAdvancements() - { - } + public FeruchemyAdvancements() + { + } - public void accept(Consumer advancementConsumer) - { - final String categoryName = "feruchemy"; + public void accept(Consumer advancementConsumer) + { + final String categoryName = "feruchemy"; - Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false, - false, - false) - .addCriterion("tick", new TickTrigger.Instance(EntityPredicate.AndPredicate.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .save(advancementConsumer, categoryName + "/root"); - for (RegistryObject manifestation : ManifestationRegistry.FERUCHEMY_POWERS.values()) - { - FeruchemyBase feruchemyBase = (FeruchemyBase) manifestation.get(); + for (RegistryObject manifestation : ManifestationRegistry.FERUCHEMY_POWERS.values()) + { + FeruchemyBase feruchemyBase = (FeruchemyBase) manifestation.get(); - Metals.MetalType metalType = feruchemyBase.getMetalType(); - String metalName = metalType.getName(); + Metals.MetalType metalType = feruchemyBase.getMetalType(); + String metalName = metalType.getName(); - Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() - .parent(root) - .display( - Items.WOODEN_PICKAXE, - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - (ResourceLocation) null, - FrameType.TASK, - true, - true, - false) - .addCriterion( - "get_stone", - InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, categoryName + "/" + metalName); - } + Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + .parent(root) + .display( + Items.WOODEN_PICKAXE, + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + null, + FrameType.TASK, + true, + true, + false) + .addCriterion( + "get_stone", + InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) + .save(advancementConsumer, categoryName + "/" + metalName); + } - } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java index 6a64951a1..003093d0f 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java @@ -4,39 +4,37 @@ package leaf.cosmere.datagen.advancements; -import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.advancements.Advancement; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.criterion.InventoryChangeTrigger; -import net.minecraft.advancements.criterion.ItemPredicate; -import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.advancements.critereon.InventoryChangeTrigger; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import java.util.function.Consumer; public class HemalurgyAdvancements implements Consumer> { - public HemalurgyAdvancements() - { - } + public HemalurgyAdvancements() + { + } - public void accept(Consumer advancementConsumer) - { - final String categoryName = "hemalurgy"; - Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".title"), - new TranslationTextComponent("advancements.cosmere." + categoryName + ".description"), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false, - false, - false) - .addCriterion("spike", InventoryChangeTrigger.Instance.hasItems(ItemPredicate.Builder.item().of(TagsRegistry.Items.METAL_SPIKE).build())) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); - } + public void accept(Consumer advancementConsumer) + { + final String categoryName = "hemalurgy"; + Advancement root = Advancement.Builder.advancement() + .display(ItemsRegistry.GUIDE.get(), + new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), + new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), + FrameType.TASK, + false, + false, + false) + .addCriterion("spike", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(TagsRegistry.Items.METAL_SPIKE).build())) + //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) + .save(advancementConsumer, categoryName + "/root"); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java index 5c0360a09..9d0eba3dc 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java @@ -9,85 +9,85 @@ import leaf.cosmere.blocks.MetalworkingTableBlock; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.utils.helpers.ResourceLocationHelper; -import net.minecraft.block.Block; -import net.minecraft.block.OreBlock; import net.minecraft.data.DataGenerator; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.OreBlock; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class BlockModelsGen extends BlockStateProvider { - public BlockModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) - { - super(generator, Cosmere.MODID, existingFileHelper); - } + public BlockModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + { + super(generator, Cosmere.MODID, existingFileHelper); + } - @Override - protected void registerStatesAndModels() - { - for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) - { - if (itemRegistryObject.get() instanceof MetalBlock) - { - //ModelFile blockModel = models().cubeAll(getPath(itemRegistryObject), new ResourceLocation(Cosmere.MODID, "block/metal_block")); + @Override + protected void registerStatesAndModels() + { + for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) + { + if (itemRegistryObject.get() instanceof MetalBlock) + { + //ModelFile blockModel = models().cubeAll(getPath(itemRegistryObject), new ResourceLocation(Cosmere.MODID, "block/metal_block")); - //thank you botania! <3 tinting is awesome - ModelFile blockModel = models().withExistingParent("metal_block", ResourceLocationHelper.prefix("block/shapes/cube_all_tinted")) - .texture("all", ResourceLocationHelper.prefix("block/metal_block")); + //thank you botania! <3 tinting is awesome + ModelFile blockModel = models().withExistingParent("metal_block", ResourceLocationHelper.prefix("block/shapes/cube_all_tinted")) + .texture("all", ResourceLocationHelper.prefix("block/metal_block")); - simpleBlock(itemRegistryObject.get(), blockModel); - continue; - } - else if (itemRegistryObject.get() instanceof MetalworkingTableBlock) - { - ModelFile blockModel = models().withExistingParent("metalworking_table", new ResourceLocation("block/cube")) - .texture("particle", ResourceLocationHelper.prefix("block/metalworking_table_front")) - .texture("north", ResourceLocationHelper.prefix("block/metalworking_table_front")) - .texture("south", ResourceLocationHelper.prefix("block/metalworking_table_front")) - .texture("east", ResourceLocationHelper.prefix("block/metalworking_table_side")) - .texture("west", ResourceLocationHelper.prefix("block/metalworking_table_side")) - .texture("up", ResourceLocationHelper.prefix("block/metalworking_table_top")) - .texture("down", ResourceLocationHelper.prefix("block/metalworking_table_bottom")); - simpleBlock(itemRegistryObject.get(), blockModel); - continue; - } - else if (itemRegistryObject.get() instanceof OreBlock) - { - //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running - //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. - ModelFile blockModel = models().withExistingParent("ore_block", ResourceLocationHelper.prefix("block/shapes/cube_with_tint_overlay")) - .texture("all", ResourceLocationHelper.prefix("block/ore_block")) - .texture("overlay",ResourceLocationHelper.prefix("block/ore_block_tint_overlay")); + simpleBlock(itemRegistryObject.get(), blockModel); + continue; + } + else if (itemRegistryObject.get() instanceof MetalworkingTableBlock) + { + ModelFile blockModel = models().withExistingParent("metalworking_table", new ResourceLocation("block/cube")) + .texture("particle", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("north", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("south", ResourceLocationHelper.prefix("block/metalworking_table_front")) + .texture("east", ResourceLocationHelper.prefix("block/metalworking_table_side")) + .texture("west", ResourceLocationHelper.prefix("block/metalworking_table_side")) + .texture("up", ResourceLocationHelper.prefix("block/metalworking_table_top")) + .texture("down", ResourceLocationHelper.prefix("block/metalworking_table_bottom")); + simpleBlock(itemRegistryObject.get(), blockModel); + continue; + } + else if (itemRegistryObject.get() instanceof OreBlock) + { + //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running + //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. + ModelFile blockModel = models().withExistingParent("ore_block", ResourceLocationHelper.prefix("block/shapes/cube_with_tint_overlay")) + .texture("all", ResourceLocationHelper.prefix("block/ore_block")) + .texture("overlay", ResourceLocationHelper.prefix("block/ore_block_tint_overlay")); - simpleBlock(itemRegistryObject.get(), blockModel); - continue; - } + simpleBlock(itemRegistryObject.get(), blockModel); + continue; + } - simpleBlock(itemRegistryObject); - } + simpleBlock(itemRegistryObject); + } - } + } - public void simpleBlock(Supplier blockSupplier) - { - simpleBlock(blockSupplier.get()); - } + public void simpleBlock(Supplier blockSupplier) + { + simpleBlock(blockSupplier.get()); + } - public String getPath(Supplier blockSupplier) - { - ResourceLocation location = blockSupplier.get().getRegistryName(); - return location.getPath(); - } + public String getPath(Supplier blockSupplier) + { + ResourceLocation location = blockSupplier.get().getRegistryName(); + return location.getPath(); + } - @Override - public void simpleBlock(Block block, ModelFile model) - { - super.simpleBlock(block, model); - this.simpleBlockItem(block, model); - } + @Override + public void simpleBlock(Block block, ModelFile model) + { + super.simpleBlock(block, model); + this.simpleBlockItem(block, model); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 1bbe61e20..8bf48e0cb 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -9,56 +9,58 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.TagsRegistry; -import net.minecraft.block.Block; -import net.minecraft.data.BlockTagsProvider; import net.minecraft.data.DataGenerator; +import net.minecraft.data.tags.BlockTagsProvider; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ITag; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; public class BlockTagsGen extends BlockTagsProvider { - public BlockTagsGen(DataGenerator generatorIn, ExistingFileHelper existingFileHelper) - { - super(generatorIn, Cosmere.MODID, existingFileHelper); - } + public BlockTagsGen(DataGenerator generatorIn, ExistingFileHelper existingFileHelper) + { + super(generatorIn, Cosmere.MODID, existingFileHelper); + } - @Override - protected void addTags() - { - add(TagsRegistry.Blocks.DRAGON_PROOF, BlocksRegistry.GEM_BLOCK.get()); - add(TagsRegistry.Blocks.WITHER_PROOF, BlocksRegistry.GEM_BLOCK.get()); - add(BlockTags.BEACON_BASE_BLOCKS, BlocksRegistry.GEM_BLOCK.get()); + @Override + protected void addTags() + { + add(TagsRegistry.Blocks.DRAGON_PROOF, BlocksRegistry.GEM_BLOCK.get()); + add(TagsRegistry.Blocks.WITHER_PROOF, BlocksRegistry.GEM_BLOCK.get()); + add(BlockTags.BEACON_BASE_BLOCKS, BlocksRegistry.GEM_BLOCK.get()); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasMaterialItem()) - continue; + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasMaterialItem()) + { + continue; + } - if (metalType.hasOre()) - { - add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), metalType.getOreBlock()); - } + if (metalType.hasOre()) + { + add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), metalType.getOreBlock()); + } - //put metal type tag on block - MetalBlock metalBlock = metalType.getBlock(); + //put metal type tag on block + MetalBlock metalBlock = metalType.getBlock(); - add(TagsRegistry.Blocks.METAL_BLOCK_TAGS.get(metalType), metalBlock); - //put storage block tag on block, though I don't know what it is for. - add(Tags.Blocks.STORAGE_BLOCKS, metalBlock); - //put beacon tag on block - add(BlockTags.BEACON_BASE_BLOCKS, metalBlock); - } - } + add(TagsRegistry.Blocks.METAL_BLOCK_TAGS.get(metalType), metalBlock); + //put storage block tag on block, though I don't know what it is for. + add(Tags.Blocks.STORAGE_BLOCKS, metalBlock); + //put beacon tag on block + add(BlockTags.BEACON_BASE_BLOCKS, metalBlock); + } + } - public void add(ITag.INamedTag branch, Block block) - { - this.tag(branch).add(block); - } + public void add(TagKey branch, Block block) + { + this.tag(branch).add(block); + } - public void add(ITag.INamedTag branch, Block... block) - { - this.tag(branch).add(block); - } + public void add(TagKey branch, Block... block) + { + this.tag(branch).add(block); + } } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index bab761840..7782a45de 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -16,112 +16,112 @@ import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.data.DataGenerator; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class ItemModelsGen extends ItemModelProvider { - public ItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) - { - super(generator, Cosmere.MODID, existingFileHelper); - } + public ItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + { + super(generator, Cosmere.MODID, existingFileHelper); + } - @Override - protected void registerModels() - { - for (RegistryObject itemRegistryObject : ItemsRegistry.ITEMS.getEntries()) - { - String path = getPath(itemRegistryObject); - Item item = itemRegistryObject.get(); + @Override + protected void registerModels() + { + for (RegistryObject itemRegistryObject : ItemsRegistry.ITEMS.getEntries()) + { + String path = getPath(itemRegistryObject); + Item item = itemRegistryObject.get(); - //blocks have their own model rules - if (item instanceof BlockItem) - { - continue; - } - //otherwise set specific textures based on these item types - else if (item instanceof MetalIngotItem) - { - simpleItem(path, "metal_ingot"); - continue; - } - else if (item instanceof MetalNuggetItem) - { - simpleItem(path, "metal_nugget"); - continue; - } - else if (item instanceof BraceletMetalmindItem) - { - simpleItem(path, "metal_bracelet"); - continue; - } - else if (item instanceof RingMetalmindItem) - { - simpleItem(path, "metal_ring"); - continue; - } - else if (item instanceof NecklaceMetalmindItem) - { - simpleItem(path, "metal_necklace"); - continue; - } - else if (item instanceof HemalurgicSpikeItem) - { - simpleItem(path, "metal_spike"); - continue; - } - else if (item instanceof ShardbladeItem) - { - continue; - } - else if (item instanceof MetalRawOreItem) - { - MetalRawOreItem rawItem = (MetalRawOreItem)item; - simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); - continue; - } - else if (item instanceof PolestoneItem) - { - switch (((PolestoneItem)item).getSize()) - { - case BROAM: - simpleItem(path, "polestone_broam"); - break; - case MARK: - simpleItem(path, "polestone_mark"); - break; - case CHIP: - simpleItem(path, "polestone_chip"); - break; - } - continue; - } + //blocks have their own model rules + if (item instanceof BlockItem) + { + continue; + } + //otherwise set specific textures based on these item types + else if (item instanceof MetalIngotItem) + { + simpleItem(path, "metal_ingot"); + continue; + } + else if (item instanceof MetalNuggetItem) + { + simpleItem(path, "metal_nugget"); + continue; + } + else if (item instanceof BraceletMetalmindItem) + { + simpleItem(path, "metal_bracelet"); + continue; + } + else if (item instanceof RingMetalmindItem) + { + simpleItem(path, "metal_ring"); + continue; + } + else if (item instanceof NecklaceMetalmindItem) + { + simpleItem(path, "metal_necklace"); + continue; + } + else if (item instanceof HemalurgicSpikeItem) + { + simpleItem(path, "metal_spike"); + continue; + } + else if (item instanceof ShardbladeItem) + { + continue; + } + else if (item instanceof MetalRawOreItem) + { + MetalRawOreItem rawItem = (MetalRawOreItem) item; + simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); + continue; + } + else if (item instanceof PolestoneItem) + { + switch (((PolestoneItem) item).getSize()) + { + case BROAM: + simpleItem(path, "polestone_broam"); + break; + case MARK: + simpleItem(path, "polestone_mark"); + break; + case CHIP: + simpleItem(path, "polestone_chip"); + break; + } + continue; + } - //else normal item texture rules apply - simpleItem(path, path); - } + //else normal item texture rules apply + simpleItem(path, path); + } - } + } - public String getPath(Supplier itemSupplier) - { - ResourceLocation location = itemSupplier.get().getRegistryName(); - return location.getPath(); - } + public String getPath(Supplier itemSupplier) + { + ResourceLocation location = itemSupplier.get().getRegistryName(); + return location.getPath(); + } - public ItemModelBuilder simpleItem(String path, String texturePath) - { - return this.getBuilder(path) - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", modLoc("item/" + texturePath)); - } + public ItemModelBuilder simpleItem(String path, String texturePath) + { + return this.getBuilder(path) + .parent(new ModelFile.UncheckedModelFile("item/generated")) + .texture("layer0", modLoc("item/" + texturePath)); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 2d29a908a..57a3bcf27 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -11,11 +11,11 @@ import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.TagsRegistry; -import net.minecraft.data.BlockTagsProvider; import net.minecraft.data.DataGenerator; -import net.minecraft.data.ItemTagsProvider; -import net.minecraft.item.Item; -import net.minecraft.tags.ITag; +import net.minecraft.data.tags.BlockTagsProvider; +import net.minecraft.data.tags.ItemTagsProvider; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; @@ -24,89 +24,89 @@ public class ItemTagsGen extends ItemTagsProvider { - public ItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvider, @Nullable ExistingFileHelper existingFileHelper) - { - super(dataGenerator, blockTagsProvider, Cosmere.MODID, existingFileHelper); - } - - @Override - protected void addTags() - { - - add(TagsRegistry.Items.CURIO_BRACELET, ItemsRegistry.BANDS_OF_MOURNING.get()); - - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasFeruchemicalEffect()) - { - //curio stuff - add(TagsRegistry.Items.CURIO_NECKLACE, metalType.getNecklaceItem()); - add(TagsRegistry.Items.CURIO_RING, metalType.getRingItem()); - add(TagsRegistry.Items.CURIO_BRACELET, metalType.getBraceletItem()); - } - - if (metalType.hasHemalurgicEffect()) - { - HemalurgicSpikeItem spikeItem = metalType.getSpikeItem(); - - add(TagsRegistry.Items.CURIO_ANY, spikeItem); - add(TagsRegistry.Items.METAL_SPIKE, spikeItem); - } - // tell the ingots that our ingots are related - - if (metalType.hasMaterialItem()) - { - MetalIngotItem ingotItem = metalType.getIngotItem(); - add(Tags.Items.INGOTS, ingotItem); - // tell our ingots what their tags are. - add(metalType.getMetalIngotTag(), ingotItem); - - //tell the ingots that our ingot tags are part of them - this.tag(Tags.Items.INGOTS).addTag(metalType.getMetalIngotTag()); - - //tell the nuggets that our nugget tags are part of them - this.tag(Tags.Items.NUGGETS).addTag(metalType.getMetalNuggetTag()); - - // tell the Nugget that our Nuggets are related - Item item = metalType.getNuggetItem(); - add(Tags.Items.NUGGETS, item); - // tell our ingots what their tags are. - add(metalType.getMetalNuggetTag(), item); - - //associate block tags with their item counterparts - this.copy(TagsRegistry.Blocks.METAL_BLOCK_TAGS.get(metalType), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType)); - - - //not sure why this is needed, but botania had it ^_^;; - this.copy(Tags.Blocks.STORAGE_BLOCKS, Tags.Items.STORAGE_BLOCKS); - } - - if (metalType.isAlloy() || metalType.hasOre()) - { - add(metalType.getMetalRawTag(), metalType.getRawMetalItem()); - } - } - - for (Roshar.Polestone polestone : Roshar.Polestone.values()) - { - for (Roshar.GemSize size : Roshar.GemSize.values()) - { - final Item polestoneItem = polestone.getPolestoneItem(size); - add(Tags.Items.GEMS, polestoneItem); - add(TagsRegistry.Items.GEM_TAGS.get(polestone), polestoneItem); - } - } - } - - public void add(ITag.INamedTag branch, Item item) - { - this.tag(branch).add(item); - } - - public void add(ITag.INamedTag branch, Item... item) - { - this.tag(branch).add(item); - } + public ItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvider, @Nullable ExistingFileHelper existingFileHelper) + { + super(dataGenerator, blockTagsProvider, Cosmere.MODID, existingFileHelper); + } + + @Override + protected void addTags() + { + + add(TagsRegistry.Items.CURIO_BRACELET, ItemsRegistry.BANDS_OF_MOURNING.get()); + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasFeruchemicalEffect()) + { + //curio stuff + add(TagsRegistry.Items.CURIO_NECKLACE, metalType.getNecklaceItem()); + add(TagsRegistry.Items.CURIO_RING, metalType.getRingItem()); + add(TagsRegistry.Items.CURIO_BRACELET, metalType.getBraceletItem()); + } + + if (metalType.hasHemalurgicEffect()) + { + HemalurgicSpikeItem spikeItem = metalType.getSpikeItem(); + + add(TagsRegistry.Items.CURIO_ANY, spikeItem); + add(TagsRegistry.Items.METAL_SPIKE, spikeItem); + } + // tell the ingots that our ingots are related + + if (metalType.hasMaterialItem()) + { + MetalIngotItem ingotItem = metalType.getIngotItem(); + add(Tags.Items.INGOTS, ingotItem); + // tell our ingots what their tags are. + add(metalType.getMetalIngotTag(), ingotItem); + + //tell the ingots that our ingot tags are part of them + this.tag(Tags.Items.INGOTS).addTag(metalType.getMetalIngotTag()); + + //tell the nuggets that our nugget tags are part of them + this.tag(Tags.Items.NUGGETS).addTag(metalType.getMetalNuggetTag()); + + // tell the Nugget that our Nuggets are related + Item item = metalType.getNuggetItem(); + add(Tags.Items.NUGGETS, item); + // tell our ingots what their tags are. + add(metalType.getMetalNuggetTag(), item); + + //associate block tags with their item counterparts + this.copy(TagsRegistry.Blocks.METAL_BLOCK_TAGS.get(metalType), TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS.get(metalType)); + + + //not sure why this is needed, but botania had it ^_^;; + this.copy(Tags.Blocks.STORAGE_BLOCKS, Tags.Items.STORAGE_BLOCKS); + } + + if (metalType.isAlloy() || metalType.hasOre()) + { + add(metalType.getMetalRawTag(), metalType.getRawMetalItem()); + } + } + + for (Roshar.Polestone polestone : Roshar.Polestone.values()) + { + for (Roshar.GemSize size : Roshar.GemSize.values()) + { + final Item polestoneItem = polestone.getPolestoneItem(size); + add(Tags.Items.GEMS, polestoneItem); + add(TagsRegistry.Items.GEM_TAGS.get(polestone), polestoneItem); + } + } + } + + public void add(TagKey branch, Item item) + { + this.tag(branch).add(item); + } + + public void add(TagKey branch, Item... item) + { + this.tag(branch).add(item); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index a94a4b401..d0b4d73b2 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -14,16 +14,16 @@ import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.StringHelper; +import net.minecraft.Util; import net.minecraft.data.DataGenerator; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.item.Item; -import net.minecraft.potion.Effect; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.Util; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.nio.file.Path; import java.util.Locale; @@ -32,251 +32,251 @@ public class EngLangGen extends LanguageProvider { - private final DataGenerator generator; - - public EngLangGen(DataGenerator gen) - { - super(gen, Cosmere.MODID, "en_us"); - this.generator = gen; - } - - @Override - protected void addTranslations() - { - - //Items and Blocks - for (Item item : ForgeRegistries.ITEMS.getValues()) - { - if (item.getRegistryName().getNamespace().contentEquals(Cosmere.MODID)) - { - String localisedString = StringHelper.fixCapitalisation(item.getRegistryName().getPath()); - - //string overrides - switch (localisedString) - { - case "Guide": - localisedString = "Ars Arcanum";//after the book that is written by Khriss - break; - } - - if (item instanceof HemalurgicSpikeItem) - { - String use = ((HemalurgicSpikeItem) item).getMetalType().getHemalurgicUseString(); - add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); - } - else if (item instanceof MetalmindItem) - { - String use = ((MetalmindItem) item).getMetalType().getFeruchemyMetalmindUse(); - add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); - } - - - add(item.getDescriptionId(), localisedString); - } - } - - //Entities - add("entity.minecraft.villager.cosmere.metal_trader", "Metal Trader"); - for (EntityType type : ForgeRegistries.ENTITIES) - { - if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) - { - add(type.getDescriptionId(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); - } - } - - - //innate - - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - //power type - String key = manifestation.translation().getKey(); - String path = manifestation.getName(); - - - //description - //can't auto generate the descriptions ya dingleberry - String name = path; - String description; - - String metalName = Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); - switch (manifestation.getManifestationType()) - { - case ALLOMANCY: - name = "Allomantic " + metalName; - description = "Users can burn " + metalName; - break; - case FERUCHEMY: - name = "Feruchemical " + metalName; - description = "Users can tap " + metalName; - break; - case RADIANT: - case ELANTRIAN: - case AWAKENER: - default: - case NONE: - description = "No Special Powers"; - break; - } - - //Name - add(key, StringHelper.fixCapitalisation(name)); - add(manifestation.description().getKey(), description); - } - - //Attributes - for (RegistryObject registryObject : AttributesRegistry.ATTRIBUTES.getEntries()) - { - //no duplicates pls - final String descriptionId = registryObject.get().getDescriptionId(); - if (!descriptionId.startsWith("manifestation")) - { - String translation = descriptionId.split("\\.")[1]; - add(descriptionId, StringHelper.fixCapitalisation(translation)); - } - } - - //guidebook - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - final String name = metalType.getName(); - - final String mistingName = metalType.getMistingName(); - final String ferringName = metalType.getFerringName(); - - String a = name + " - " + mistingName; - String f = name + " - " + ferringName; - - String aKey = metalType.getAllomancyRegistryName(); - String fKey = metalType.getFeruchemyRegistryName(); - String hKey = "hemalurgic_" + name; - - String allomancyGuide = "cosmere.entry." + aKey; - String feruchemyGuide = "cosmere.entry." + fKey; - String hemalurgyGuide = "cosmere.entry." + hKey; - - add(allomancyGuide, StringHelper.fixCapitalisation(a)); - add(feruchemyGuide, StringHelper.fixCapitalisation(f)); - add(hemalurgyGuide, StringHelper.fixCapitalisation(name)); - - if (!metalType.hasMaterialItem()) - { - //if a vanilla metal, like iron/gold - //add(item.getDescriptionId(), localisedString); - final String n = name + "_nugget"; - final String i = name + "_ingot"; - final String b = name + "_block"; - add("item.cosmere." + n, StringHelper.fixCapitalisation(n)); - add("item.cosmere." + i, StringHelper.fixCapitalisation(i)); - add("item.cosmere." + b, StringHelper.fixCapitalisation(b)); - } - - - if (metalType.hasAssociatedManifestation()) - { - add("cosmere." + mistingName, StringHelper.fixCapitalisation(mistingName)); - add("cosmere." + ferringName, StringHelper.fixCapitalisation(ferringName)); - } - - } - - - add("tooltip.cosmere.metals.contained", "Contained Metals:"); - - add("cosmere.category.basics", "Basics"); - add("cosmere.category.allomancy", "Allomancy"); - add("cosmere.category.feruchemy", "Feruchemy"); - add("cosmere.category.hemalurgy", "Hemalurgy"); - - //ItemGroups/Tabs - add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); - add("itemGroup." + CosmereItemGroups.METALMINDS.getRecipeFolderName(), "Cosmere Metalminds"); - add("itemGroup." + CosmereItemGroups.HEMALURGIC_SPIKES.getRecipeFolderName(), "Cosmere Spikes"); - add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); - - //Damage Sources - - //Containers - - //effects - for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) - { - add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); - } - - //Sound Schemes - - //Configs - - //Commands - - - //Tooltips - add("tooltip.item.info.shift", "\u00A77Hold \u00A78[\u00A7eShift\u00A78]"); - add("tooltip.item.info.shift_control", "\u00A77Hold \u00A78[\u00A7eShift\u00A78] \u00A77and \u00A78[\u00A7eControl\u00A78]"); - add("tooltip.item.info.control", "\u00A77Hold \u00A78[\u00A7eControl\u00A78]"); - - //GUI elements - add("gui.cosmere.previous", "> Previous"); - add("gui.cosmere.next", "> Next"); - add("gui.cosmere.select", "> Select"); - add("gui.cosmere.confirm", "> Confirm"); - add("gui.cosmere.save", "> Save"); - add("gui.cosmere.cancel", "> Cancel"); - add("gui.cosmere.button.back", "Back"); - - - add("gui.cosmere.other.inactive", "Inactive"); - add("gui.cosmere.other.active", "Active"); - add("gui.cosmere.mode.increase", "Increase"); - add("gui.cosmere.mode.decrease", "Decrease"); + private final DataGenerator generator; + + public EngLangGen(DataGenerator gen) + { + super(gen, Cosmere.MODID, "en_us"); + this.generator = gen; + } + + @Override + protected void addTranslations() + { + + //Items and Blocks + for (Item item : ForgeRegistries.ITEMS.getValues()) + { + if (item.getRegistryName().getNamespace().contentEquals(Cosmere.MODID)) + { + String localisedString = StringHelper.fixCapitalisation(item.getRegistryName().getPath()); + + //string overrides + switch (localisedString) + { + case "Guide": + localisedString = "Ars Arcanum";//after the book that is written by Khriss + break; + } + + if (item instanceof HemalurgicSpikeItem) + { + String use = ((HemalurgicSpikeItem) item).getMetalType().getHemalurgicUseString(); + add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + } + else if (item instanceof MetalmindItem) + { + String use = ((MetalmindItem) item).getMetalType().getFeruchemyMetalmindUse(); + add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + } + + + add(item.getDescriptionId(), localisedString); + } + } + + //Entities + add("entity.minecraft.villager.cosmere.metal_trader", "Metal Trader"); + for (EntityType type : ForgeRegistries.ENTITIES) + { + if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) + { + add(type.getDescriptionId(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); + } + } + + + //innate + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + //power type + String key = manifestation.translation().getKey(); + String path = manifestation.getName(); + + + //description + //can't auto generate the descriptions ya dingleberry + String name = path; + String description; + + String metalName = Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); + switch (manifestation.getManifestationType()) + { + case ALLOMANCY: + name = "Allomantic " + metalName; + description = "Users can burn " + metalName; + break; + case FERUCHEMY: + name = "Feruchemical " + metalName; + description = "Users can tap " + metalName; + break; + case RADIANT: + case ELANTRIAN: + case AWAKENER: + default: + case NONE: + description = "No Special Powers"; + break; + } + + //Name + add(key, StringHelper.fixCapitalisation(name)); + add(manifestation.description().getKey(), description); + } + + //Attributes + for (RegistryObject registryObject : AttributesRegistry.ATTRIBUTES.getEntries()) + { + //no duplicates pls + final String descriptionId = registryObject.get().getDescriptionId(); + if (!descriptionId.startsWith("manifestation")) + { + String translation = descriptionId.split("\\.")[1]; + add(descriptionId, StringHelper.fixCapitalisation(translation)); + } + } + + //guidebook + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + final String name = metalType.getName(); + + final String mistingName = metalType.getMistingName(); + final String ferringName = metalType.getFerringName(); + + String a = name + " - " + mistingName; + String f = name + " - " + ferringName; + + String aKey = metalType.getAllomancyRegistryName(); + String fKey = metalType.getFeruchemyRegistryName(); + String hKey = "hemalurgic_" + name; + + String allomancyGuide = "cosmere.entry." + aKey; + String feruchemyGuide = "cosmere.entry." + fKey; + String hemalurgyGuide = "cosmere.entry." + hKey; + + add(allomancyGuide, StringHelper.fixCapitalisation(a)); + add(feruchemyGuide, StringHelper.fixCapitalisation(f)); + add(hemalurgyGuide, StringHelper.fixCapitalisation(name)); + + if (!metalType.hasMaterialItem()) + { + //if a vanilla metal, like iron/gold + //add(item.getDescriptionId(), localisedString); + final String n = name + "_nugget"; + final String i = name + "_ingot"; + final String b = name + "_block"; + add("item.cosmere." + n, StringHelper.fixCapitalisation(n)); + add("item.cosmere." + i, StringHelper.fixCapitalisation(i)); + add("item.cosmere." + b, StringHelper.fixCapitalisation(b)); + } + + + if (metalType.hasAssociatedManifestation()) + { + add("cosmere." + mistingName, StringHelper.fixCapitalisation(mistingName)); + add("cosmere." + ferringName, StringHelper.fixCapitalisation(ferringName)); + } + + } + + + add("tooltip.cosmere.metals.contained", "Contained Metals:"); + + add("cosmere.category.basics", "Basics"); + add("cosmere.category.allomancy", "Allomancy"); + add("cosmere.category.feruchemy", "Feruchemy"); + add("cosmere.category.hemalurgy", "Hemalurgy"); + + //ItemGroups/Tabs + add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); + add("itemGroup." + CosmereItemGroups.METALMINDS.getRecipeFolderName(), "Cosmere Metalminds"); + add("itemGroup." + CosmereItemGroups.HEMALURGIC_SPIKES.getRecipeFolderName(), "Cosmere Spikes"); + add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); + + //Damage Sources + + //Containers + + //effects + for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) + { + add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); + } + + //Sound Schemes + + //Configs + + //Commands + + + //Tooltips + add("tooltip.item.info.shift", "\u00A77Hold \u00A78[\u00A7eShift\u00A78]"); + add("tooltip.item.info.shift_control", "\u00A77Hold \u00A78[\u00A7eShift\u00A78] \u00A77and \u00A78[\u00A7eControl\u00A78]"); + add("tooltip.item.info.control", "\u00A77Hold \u00A78[\u00A7eControl\u00A78]"); + + //GUI elements + add("gui.cosmere.previous", "> Previous"); + add("gui.cosmere.next", "> Next"); + add("gui.cosmere.select", "> Select"); + add("gui.cosmere.confirm", "> Confirm"); + add("gui.cosmere.save", "> Save"); + add("gui.cosmere.cancel", "> Cancel"); + add("gui.cosmere.button.back", "Back"); + + + add("gui.cosmere.other.inactive", "Inactive"); + add("gui.cosmere.other.active", "Active"); + add("gui.cosmere.mode.increase", "Increase"); + add("gui.cosmere.mode.decrease", "Decrease"); - //ARS Arcanum - add("cosmere.landing", "The Cosmere is filled with many fantastical things. I have left my findings written within this book."); + //ARS Arcanum + add("cosmere.landing", "The Cosmere is filled with many fantastical things. I have left my findings written within this book."); - //KeyBindings - add(KEYS_CATEGORY, "Cosmere"); - add(KEY_MANIFESTATION_MENU, "Powers Menu"); - add(KEY_MANIFESTATION_TOGGLE, "Toggle Current Powers"); - add(KEY_MANIFESTATION_NEXT, "Next Power"); - add(KEY_MANIFESTATION_PREVIOUS, "Previous Power"); - add(KEY_MANIFESTATION_MODE_INCREASE, "Mode Increase"); - add(KEY_MANIFESTATION_MODE_DECREASE, "Mode Decrease"); + //KeyBindings + add(KEYS_CATEGORY, "Cosmere"); + add(KEY_MANIFESTATION_MENU, "Powers Menu"); + add(KEY_MANIFESTATION_TOGGLE, "Toggle Current Powers"); + add(KEY_MANIFESTATION_NEXT, "Next Power"); + add(KEY_MANIFESTATION_PREVIOUS, "Previous Power"); + add(KEY_MANIFESTATION_MODE_INCREASE, "Mode Increase"); + add(KEY_MANIFESTATION_MODE_DECREASE, "Mode Decrease"); - add(KEY_ALLOMANCY_PUSH, "Push"); - add(KEY_ALLOMANCY_PULL, "Pull"); + add(KEY_ALLOMANCY_PUSH, "Push"); + add(KEY_ALLOMANCY_PULL, "Pull"); - //powers - add(POWER_INVALID, "Invalid power"); - add(POWER_SET_SUCCESS, "Successfully set power to: %s"); - add(POWER_SET_FAIL, "Failed to update power"); - add(POWER_MODE_SET, "Mode set to: %s"); - add(POWER_ACTIVE, "Power now active: %s"); - add(POWER_INACTIVE, "Power now inactive: %s"); + //powers + add(POWER_INVALID, "Invalid power"); + add(POWER_SET_SUCCESS, "Successfully set power to: %s"); + add(POWER_SET_FAIL, "Failed to update power"); + add(POWER_MODE_SET, "Mode set to: %s"); + add(POWER_ACTIVE, "Power now active: %s"); + add(POWER_INACTIVE, "Power now inactive: %s"); - add(POWERS_FOUND, "Powers found for: %s \n"); - add(CONTAINED_POWERS_FOUND, "Hemalurgic Charge:"); + add(POWERS_FOUND, "Powers found for: %s \n"); + add(CONTAINED_POWERS_FOUND, "Hemalurgic Charge:"); - } + } - public Path getSoundPath(Path path, String modid) - { - return path.resolve("data/" + modid + "/sounds/" + "sounds.json"); - } + public Path getSoundPath(Path path, String modid) + { + return path.resolve("data/" + modid + "/sounds/" + "sounds.json"); + } - public String getTranslationKey(SoundEvent sound) - { - String subtitleTranslationKey = ""; - if (subtitleTranslationKey.isEmpty() || subtitleTranslationKey == null) - { - subtitleTranslationKey = Util.makeDescriptionId("subtitle", sound.getRegistryName()); - } - return subtitleTranslationKey; - } + public String getTranslationKey(SoundEvent sound) + { + String subtitleTranslationKey = ""; + if (subtitleTranslationKey.isEmpty() || subtitleTranslationKey == null) + { + subtitleTranslationKey = Util.makeDescriptionId("subtitle", sound.getRegistryName()); + } + return subtitleTranslationKey; + } } diff --git a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java index 0051ef3cd..7df8ccdce 100644 --- a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java @@ -6,39 +6,40 @@ import leaf.cosmere.blocks.MetalOreBlock; import leaf.cosmere.registry.BlocksRegistry; -import net.minecraft.block.Block; -import net.minecraft.data.loot.BlockLootTables; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.data.loot.BlockLoot; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.RegistryObject; -public class BlockLootTableGen extends BlockLootTables +public class BlockLootTableGen extends BlockLoot { - @Override - protected void addTables() - { + @Override + protected void addTables() + { /*this.registerLootTable(BlocksRegistry.atium_geode.get(), (block) -> { return droppingItemWithFortune(block, ItemsRegistry.ATIUM.get()); });*/ - for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) - { - if ((itemRegistryObject.get() instanceof MetalOreBlock)) - { - MetalOreBlock oreBlock = (MetalOreBlock) itemRegistryObject.get(); + for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) + { + if ((itemRegistryObject.get() instanceof MetalOreBlock)) + { + MetalOreBlock oreBlock = (MetalOreBlock) itemRegistryObject.get(); - this.add(oreBlock, (ore) -> { - return createOreDrop(ore, oreBlock.getMetalType().getRawMetalItem()); - }); - } - else - { - this.dropSelf(itemRegistryObject.get()); - } - } - } + this.add(oreBlock, (ore) -> + { + return createOreDrop(ore, oreBlock.getMetalType().getRawMetalItem()); + }); + } + else + { + this.dropSelf(itemRegistryObject.get()); + } + } + } - @Override - protected Iterable getKnownBlocks() - { - return BlocksRegistry.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator; - } + @Override + protected Iterable getKnownBlocks() + { + return BlocksRegistry.BLOCKS.getEntries().stream().map(RegistryObject::get)::iterator; + } } diff --git a/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java index 66df5e8ce..53b37b4e3 100644 --- a/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/LootTableGen.java @@ -7,13 +7,13 @@ import com.google.common.collect.ImmutableList; import com.mojang.datafixers.util.Pair; import net.minecraft.data.DataGenerator; -import net.minecraft.data.LootTableProvider; -import net.minecraft.loot.LootParameterSet; -import net.minecraft.loot.LootParameterSets; -import net.minecraft.loot.LootTable; -import net.minecraft.loot.LootTable.Builder; -import net.minecraft.loot.ValidationTracker; -import net.minecraft.util.ResourceLocation; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.LootTable.Builder; +import net.minecraft.world.level.storage.loot.ValidationContext; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; import java.util.Map; @@ -23,21 +23,21 @@ public class LootTableGen extends LootTableProvider { - private final List>>, LootParameterSet>> loot_tables = ImmutableList.of(Pair.of(BlockLootTableGen::new, LootParameterSets.BLOCK)); + private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(BlockLootTableGen::new, LootContextParamSets.BLOCK)); - public LootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } + public LootTableGen(DataGenerator dataGeneratorIn) + { + super(dataGeneratorIn); + } - @Override - protected List>>, LootParameterSet>> getTables() - { - return this.loot_tables; - } + @Override + protected List>>, LootContextParamSet>> getTables() + { + return this.loot_tables; + } - @Override - protected void validate(Map map, ValidationTracker validationtracker) - { - } + @Override + protected void validate(Map map, ValidationContext validationtracker) + { + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java index 9269ed285..91dce6000 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java @@ -12,484 +12,484 @@ public class BookStuff { - public static class Category - { - public String name; - public String description; - public String icon; - public String parent = ""; - public String flag = ""; - public Integer sortnum = 0; - public boolean secret = false; - - public Category(String name, String description, String icon) - { - this.name = "cosmere.category." + name.toLowerCase(); - this.description = description; - this.icon = icon; - } - - - public JsonElement serialize() - { - JsonObject jsonobject = new JsonObject(); - - jsonobject.addProperty("name", this.name); - jsonobject.addProperty("description", this.description); - jsonobject.addProperty("icon", this.icon); - - if (!this.parent.isEmpty()) - { - jsonobject.addProperty("parent", this.parent); - } - if (!this.flag.isEmpty()) - { - jsonobject.addProperty("flag", this.flag); - } - jsonobject.addProperty("sortnum", this.sortnum); - jsonobject.addProperty("secret", this.secret); - - return jsonobject; - } - } - - public static class Entry - { - public String name; - public Category category; - public String icon; - - public Page[] pages; - - public String advancement = ""; - public String flag = ""; - - public boolean priority = false; - public boolean secret = false; - public boolean read_by_default = false; - public Integer sortnum = 0; - - public String turnin = ""; // advancement needed to mark entry complete - - //itemstack strings -> page 0-index num - public Map extra_recipe_mappings; - - public Entry(String name, Category category, String icon) - { - this.name = "cosmere.entry." + name.toLowerCase(); - this.category = category; - this.icon = icon; - } - - - public JsonElement serialize() - { - JsonObject jsonobject = new JsonObject(); - - //enforced - jsonobject.addProperty("name", this.name); - jsonobject.addProperty("category", this.category.name); - jsonobject.addProperty("icon", this.icon); - - JsonArray jsonarray = new JsonArray(); - for (Page page : this.pages) - { - jsonarray.add(page.serialize()); - } - jsonobject.add("pages", jsonarray); - - if (advancement != null && !this.advancement.isEmpty()) - { - jsonobject.addProperty("advancement", this.advancement); - } - - if (!this.flag.isEmpty()) - { - jsonobject.addProperty("advancement", this.flag); - } - - jsonobject.addProperty("priority", this.priority); - jsonobject.addProperty("secret", this.secret); - jsonobject.addProperty("read_by_default", this.read_by_default); - - jsonobject.addProperty("sortnum", this.sortnum); - - if (!this.turnin.isEmpty()) - { - jsonobject.addProperty("turnin", this.turnin); - } - - if (extra_recipe_mappings != null && !extra_recipe_mappings.isEmpty()) - { - JsonObject extraRecipeMappingsArray = new JsonObject(); - for (Map.Entry entry : this.extra_recipe_mappings.entrySet()) - { - extraRecipeMappingsArray.addProperty(entry.getKey(), entry.getValue()); - } - jsonobject.add("extra_recipe_mappings", extraRecipeMappingsArray); - } - - - return jsonobject; - } - } - - public abstract static class Page - { - public String type; - public String text; - public String title = ""; - public String advancement = ""; - public String flag = ""; - public String anchor = ""; - public String[] recipes = null; - - public Page(String type, String text) - { - this.type = type; - this.text = text; - } - - public Page(String type, String text, String title) - { - this.type = type; - this.text = text; - this.title = title; - } - - public Page(String type, String text, String[] recipes) - { - this.type = type; - this.text = text; - this.recipes = recipes; - } - - public JsonElement serialize() - { - JsonObject jsonObject = new JsonObject(); - - addElement(jsonObject, "type", this.type); - addElement(jsonObject, "text", this.text); - addElement(jsonObject, "advancement", this.advancement); - addElement(jsonObject, "title", this.title); - - if (recipes != null && recipes.length > 0) - { - JsonArray jsonArray = new JsonArray(); - for (String recipe : this.recipes) - { - jsonArray.add(recipe); - } - jsonObject.add("pages", jsonArray); - } - - return jsonObject; - } - - protected void addElement(JsonObject jsonObject, String key, String value) - { - if (!value.isEmpty()) - { - jsonObject.addProperty(key, value); - } - } - } - - public static class CraftingPage extends Page - { - public String recipe; - public String recipe2 = ""; - - public CraftingPage(String recipe) - { - super("crafting", ""); - this.recipe = recipe; - } - - public CraftingPage(String text, String recipe) - { - super("crafting", text); - this.recipe = recipe; - } - - public CraftingPage(String text, String recipe, String recipe2) - { - super("crafting", text); - this.recipe = recipe; - this.recipe2 = recipe2; - } - - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - jsonObject.addProperty("recipe", this.recipe); - jsonObject.addProperty("recipe2", this.recipe2); - - - return jsonObject; - } - } - - static class EmptyPage extends Page - { - public boolean draw_filler = true; - - public EmptyPage() - { - super("empty", ""); - } - - public EmptyPage(boolean draw_filler) - { - super("empty", ""); - this.draw_filler = draw_filler; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - jsonObject.addProperty("draw_filler", draw_filler); - - return jsonObject; - } - } - - static class EntityPage extends Page - { - public String name = ""; - public String entity = ""; - public float scale = 1; - public float offset = 0; - public boolean rotate = false; - public float default_rotation = -45; - - public EntityPage(String entity) - { - super("entity", ""); - this.entity = entity; - } - - public EntityPage(String text, String entity) - { - super("entity", text); - this.entity = entity; - } - - public EntityPage(String text, String name, String entity) - { - super("entity", text); - this.name = name; - this.entity = entity; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - addElement(jsonObject, "name", this.name); - addElement(jsonObject, "entity", this.entity); - jsonObject.addProperty("scale", this.scale); - jsonObject.addProperty("offset", this.offset); - jsonObject.addProperty("rotate", this.rotate); - jsonObject.addProperty("default_rotation", this.default_rotation); - - return jsonObject; - } - } - - static class ImagePage extends Page - { - public String[] images; - public boolean border = false; - - public ImagePage(String text, String[] images) - { - super("image", text); - this.images = images; - } - - public ImagePage(String text, String title, String[] images) - { - super("image", text, title); - this.images = images; - } - - public ImagePage(String text, String title, boolean border, String[] images) - { - super("image", text, title); - this.images = images; - this.border = border; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - jsonObject.addProperty("border", this.border); - - if (images != null && images.length > 0) - { - JsonArray jsonarray = new JsonArray(); - for (String image : this.images) - { - jsonarray.add(image); - } - jsonObject.add("images", jsonarray); - } - - return jsonObject; - } - } - - static class QuestPage extends Page - { - public String trigger; - - public QuestPage(String text, String trigger) - { - super("quest", text); - this.trigger = trigger; - } - - public QuestPage(String text, String title, String trigger) - { - super("quest", text, title); - this.trigger = trigger; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - addElement(jsonObject, "trigger", this.trigger); - - return jsonObject; - } - } - - static class RelationsPage extends Page - { - public String[] entries; - - public RelationsPage(String text, String[] entries) - { - super("relations", text); - this.entries = entries; - } - - public RelationsPage(String text, String title, String[] entries) - { - super("relations", text, title); - this.entries = entries; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - if (entries != null && entries.length > 0) - { - JsonArray jsonarray = new JsonArray(); - for (String entry : this.entries) - { - jsonarray.add(entry); - } - jsonObject.add("entries", jsonarray); - } - - return jsonObject; - } - - - } - - static class SmeltingPage extends Page - { - public String recipe; - public String recipe2 = ""; - - public SmeltingPage(String recipe) - { - super("smelting", ""); - this.recipe = recipe; - } - - public SmeltingPage(String text, String recipe) - { - super("smelting", text); - this.recipe = recipe; - } - - public SmeltingPage(String text, String recipe, String recipe2) - { - super("smelting", text); - this.recipe = recipe; - this.recipe2 = recipe2; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - jsonObject.addProperty("recipe", this.recipe); - jsonObject.addProperty("recipe2", this.recipe2); - - - return jsonObject; - } - } - - public static class SpotlightPage extends Page - { - public String item; - public boolean link_recipe = false; - - public SpotlightPage(String text, String item) - { - super("spotlight", text); - this.item = item; - } - - public SpotlightPage(String text, String title, String item) - { - super("spotlight", text, title); - this.item = item; - } - - @Override - public JsonElement serialize() - { - JsonObject jsonObject = (JsonObject) super.serialize(); - - jsonObject.addProperty("item", this.item); - jsonObject.addProperty("link_recipe", this.link_recipe); - - return jsonObject; - } - } - - public static class TextPage extends Page - { - public TextPage(String text) - { - super("text", text); - } - - public TextPage(String text, String title) - { - super("text", text, title); - } - } + public static class Category + { + public String name; + public String description; + public String icon; + public String parent = ""; + public String flag = ""; + public Integer sortnum = 0; + public boolean secret = false; + + public Category(String name, String description, String icon) + { + this.name = "cosmere.category." + name.toLowerCase(); + this.description = description; + this.icon = icon; + } + + + public JsonElement serialize() + { + JsonObject jsonobject = new JsonObject(); + + jsonobject.addProperty("name", this.name); + jsonobject.addProperty("description", this.description); + jsonobject.addProperty("icon", this.icon); + + if (!this.parent.isEmpty()) + { + jsonobject.addProperty("parent", this.parent); + } + if (!this.flag.isEmpty()) + { + jsonobject.addProperty("flag", this.flag); + } + jsonobject.addProperty("sortnum", this.sortnum); + jsonobject.addProperty("secret", this.secret); + + return jsonobject; + } + } + + public static class Entry + { + public String name; + public Category category; + public String icon; + + public Page[] pages; + + public String advancement = ""; + public String flag = ""; + + public boolean priority = false; + public boolean secret = false; + public boolean read_by_default = false; + public Integer sortnum = 0; + + public String turnin = ""; // advancement needed to mark entry complete + + //itemstack strings -> page 0-index num + public Map extra_recipe_mappings; + + public Entry(String name, Category category, String icon) + { + this.name = "cosmere.entry." + name.toLowerCase(); + this.category = category; + this.icon = icon; + } + + + public JsonElement serialize() + { + JsonObject jsonobject = new JsonObject(); + + //enforced + jsonobject.addProperty("name", this.name); + jsonobject.addProperty("category", this.category.name); + jsonobject.addProperty("icon", this.icon); + + JsonArray jsonarray = new JsonArray(); + for (Page page : this.pages) + { + jsonarray.add(page.serialize()); + } + jsonobject.add("pages", jsonarray); + + if (advancement != null && !this.advancement.isEmpty()) + { + jsonobject.addProperty("advancement", this.advancement); + } + + if (!this.flag.isEmpty()) + { + jsonobject.addProperty("advancement", this.flag); + } + + jsonobject.addProperty("priority", this.priority); + jsonobject.addProperty("secret", this.secret); + jsonobject.addProperty("read_by_default", this.read_by_default); + + jsonobject.addProperty("sortnum", this.sortnum); + + if (!this.turnin.isEmpty()) + { + jsonobject.addProperty("turnin", this.turnin); + } + + if (extra_recipe_mappings != null && !extra_recipe_mappings.isEmpty()) + { + JsonObject extraRecipeMappingsArray = new JsonObject(); + for (Map.Entry entry : this.extra_recipe_mappings.entrySet()) + { + extraRecipeMappingsArray.addProperty(entry.getKey(), entry.getValue()); + } + jsonobject.add("extra_recipe_mappings", extraRecipeMappingsArray); + } + + + return jsonobject; + } + } + + public abstract static class Page + { + public String type; + public String text; + public String title = ""; + public String advancement = ""; + public String flag = ""; + public String anchor = ""; + public String[] recipes = null; + + public Page(String type, String text) + { + this.type = type; + this.text = text; + } + + public Page(String type, String text, String title) + { + this.type = type; + this.text = text; + this.title = title; + } + + public Page(String type, String text, String[] recipes) + { + this.type = type; + this.text = text; + this.recipes = recipes; + } + + public JsonElement serialize() + { + JsonObject jsonObject = new JsonObject(); + + addElement(jsonObject, "type", this.type); + addElement(jsonObject, "text", this.text); + addElement(jsonObject, "advancement", this.advancement); + addElement(jsonObject, "title", this.title); + + if (recipes != null && recipes.length > 0) + { + JsonArray jsonArray = new JsonArray(); + for (String recipe : this.recipes) + { + jsonArray.add(recipe); + } + jsonObject.add("pages", jsonArray); + } + + return jsonObject; + } + + protected void addElement(JsonObject jsonObject, String key, String value) + { + if (!value.isEmpty()) + { + jsonObject.addProperty(key, value); + } + } + } + + public static class CraftingPage extends Page + { + public String recipe; + public String recipe2 = ""; + + public CraftingPage(String recipe) + { + super("crafting", ""); + this.recipe = recipe; + } + + public CraftingPage(String text, String recipe) + { + super("crafting", text); + this.recipe = recipe; + } + + public CraftingPage(String text, String recipe, String recipe2) + { + super("crafting", text); + this.recipe = recipe; + this.recipe2 = recipe2; + } + + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("recipe", this.recipe); + jsonObject.addProperty("recipe2", this.recipe2); + + + return jsonObject; + } + } + + static class EmptyPage extends Page + { + public boolean draw_filler = true; + + public EmptyPage() + { + super("empty", ""); + } + + public EmptyPage(boolean draw_filler) + { + super("empty", ""); + this.draw_filler = draw_filler; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("draw_filler", draw_filler); + + return jsonObject; + } + } + + static class EntityPage extends Page + { + public String name = ""; + public String entity = ""; + public float scale = 1; + public float offset = 0; + public boolean rotate = false; + public float default_rotation = -45; + + public EntityPage(String entity) + { + super("entity", ""); + this.entity = entity; + } + + public EntityPage(String text, String entity) + { + super("entity", text); + this.entity = entity; + } + + public EntityPage(String text, String name, String entity) + { + super("entity", text); + this.name = name; + this.entity = entity; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + addElement(jsonObject, "name", this.name); + addElement(jsonObject, "entity", this.entity); + jsonObject.addProperty("scale", this.scale); + jsonObject.addProperty("offset", this.offset); + jsonObject.addProperty("rotate", this.rotate); + jsonObject.addProperty("default_rotation", this.default_rotation); + + return jsonObject; + } + } + + static class ImagePage extends Page + { + public String[] images; + public boolean border = false; + + public ImagePage(String text, String[] images) + { + super("image", text); + this.images = images; + } + + public ImagePage(String text, String title, String[] images) + { + super("image", text, title); + this.images = images; + } + + public ImagePage(String text, String title, boolean border, String[] images) + { + super("image", text, title); + this.images = images; + this.border = border; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("border", this.border); + + if (images != null && images.length > 0) + { + JsonArray jsonarray = new JsonArray(); + for (String image : this.images) + { + jsonarray.add(image); + } + jsonObject.add("images", jsonarray); + } + + return jsonObject; + } + } + + static class QuestPage extends Page + { + public String trigger; + + public QuestPage(String text, String trigger) + { + super("quest", text); + this.trigger = trigger; + } + + public QuestPage(String text, String title, String trigger) + { + super("quest", text, title); + this.trigger = trigger; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + addElement(jsonObject, "trigger", this.trigger); + + return jsonObject; + } + } + + static class RelationsPage extends Page + { + public String[] entries; + + public RelationsPage(String text, String[] entries) + { + super("relations", text); + this.entries = entries; + } + + public RelationsPage(String text, String title, String[] entries) + { + super("relations", text, title); + this.entries = entries; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + if (entries != null && entries.length > 0) + { + JsonArray jsonarray = new JsonArray(); + for (String entry : this.entries) + { + jsonarray.add(entry); + } + jsonObject.add("entries", jsonarray); + } + + return jsonObject; + } + + + } + + static class SmeltingPage extends Page + { + public String recipe; + public String recipe2 = ""; + + public SmeltingPage(String recipe) + { + super("smelting", ""); + this.recipe = recipe; + } + + public SmeltingPage(String text, String recipe) + { + super("smelting", text); + this.recipe = recipe; + } + + public SmeltingPage(String text, String recipe, String recipe2) + { + super("smelting", text); + this.recipe = recipe; + this.recipe2 = recipe2; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("recipe", this.recipe); + jsonObject.addProperty("recipe2", this.recipe2); + + + return jsonObject; + } + } + + public static class SpotlightPage extends Page + { + public String item; + public boolean link_recipe = false; + + public SpotlightPage(String text, String item) + { + super("spotlight", text); + this.item = item; + } + + public SpotlightPage(String text, String title, String item) + { + super("spotlight", text, title); + this.item = item; + } + + @Override + public JsonElement serialize() + { + JsonObject jsonObject = (JsonObject) super.serialize(); + + jsonObject.addProperty("item", this.item); + jsonObject.addProperty("link_recipe", this.link_recipe); + + return jsonObject; + } + } + + public static class TextPage extends Page + { + public TextPage(String text) + { + super("text", text); + } + + public TextPage(String text, String title) + { + super("text", text, title); + } + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java index 227e94aaf..89dfce946 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -4,181 +4,174 @@ package leaf.cosmere.datagen.patchouli; -import java.io.IOException; -import java.nio.file.Path; -import java.util.*; -import java.util.function.Consumer; - -import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; -import com.google.gson.*; - -import leaf.cosmere.constants.Metals; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import leaf.cosmere.datagen.patchouli.categories.PatchouliAllomancy; import leaf.cosmere.datagen.patchouli.categories.PatchouliBasics; import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; -import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.manifestation.allomancy.AllomancyBase; -import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; +import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.data.DataGenerator; -import net.minecraft.data.DirectoryCache; -import net.minecraft.data.IDataProvider; +import net.minecraft.data.DataProvider; +import net.minecraft.data.HashCache; -import net.minecraftforge.fml.RegistryObject; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; - -import static leaf.cosmere.registry.ManifestationRegistry.*; +import java.io.IOException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.function.Consumer; // // In-Game Documentation generator // -public class PatchouliGen implements IDataProvider +public class PatchouliGen implements DataProvider { - private static final Logger LOGGER = LogManager.getLogger(); - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - public static final String GUIDE_NAME = "guide"; - private final DataGenerator generator; - - - private List categories = new ArrayList<>(); - private List entries = new ArrayList<>(); - - public PatchouliGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - public void run(DirectoryCache cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set entryIDs = Sets.newHashSet(); - - Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); - Consumer categoryConsumer = getCategoryConsumer(cache, path, entryIDs); - - //adds to our categories and entries fields. - collectInfoForBook(); - - for (BookStuff.Category categoryToConsume : this.categories) - { - categoryConsumer.accept(categoryToConsume); - } - - for (BookStuff.Entry entryToConsume : this.entries) - { - entryConsumer.accept(entryToConsume); - } - - } - - private void collectInfoForBook() - { - //dynamically figure out all the things we wanna generate categories/entries for? - //------------------------------------------// - // Categories // - //------------------------------------------// - // - Basics // - // - Manifestations (parent category?) // - // - Feruchemy // - // - Allomancy // - // - Hemalurgy // - // - Curios // - // - Machines ? // - // - Challenges ? // - // - // - // - // - // - // - // - // - // - // - //------------------------------------------// - - PatchouliBasics.collect(this.categories, this.entries); - PatchouliAllomancy.collect(this.categories, this.entries); - PatchouliFeruchemy.collect(this.categories, this.entries); - PatchouliHemalurgy.collect(this.categories, this.entries); - - - } - - private Consumer getCategoryConsumer(DirectoryCache cache, Path path, Set categoryIDs) - { - return category -> - { - if (!categoryIDs.add(category.name)) - { - throw new IllegalStateException("Duplicate page " + category.name); - } - else - { - Path path1 = getCategoryPath(path, category); - - try - { - IDataProvider.save(GSON, cache, category.serialize(), path1); - } catch (IOException ioexception) - { - LOGGER.error("Couldn't save page {}", path1, ioexception); - } - - } - }; - } - - private Consumer getEntryConsumer(DirectoryCache cache, Path path, Set entryIDs) - { - return entry -> - { - if (!entryIDs.add(entry.name)) - { - throw new IllegalStateException("Duplicate page " + entry.name); - } - else - { - Path path1 = getEntryPath(path, entry); - - try - { - IDataProvider.save(GSON, cache, entry.serialize(), path1); - } catch (IOException ioexception) - { - LOGGER.error("Couldn't save page {}", path1, ioexception); - } - - } - }; - } - - private static Path getCategoryPath(Path pathIn, BookStuff.Category category) - { - return pathIn.resolve( - String.format( - "data/cosmere/patchouli_books/%s/en_us/categories/%s.json", - GUIDE_NAME, - category.name)); - } - - private static Path getEntryPath(Path pathIn, BookStuff.Entry entry) - { - return pathIn.resolve( - String.format( - "data/cosmere/patchouli_books/%s/en_us/entries/%s/%s.json", - GUIDE_NAME, - entry.category.name, - entry.name)); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public String getName() - { - return "PatchouliGeneration"; - } + private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); + public static final String GUIDE_NAME = "guide"; + private final DataGenerator generator; + + + private final List categories = new ArrayList<>(); + private final List entries = new ArrayList<>(); + + public PatchouliGen(DataGenerator generatorIn) + { + this.generator = generatorIn; + } + + /** + * Performs this provider's action. + */ + public void run(HashCache cache) throws IOException + { + Path path = this.generator.getOutputFolder(); + Set entryIDs = Sets.newHashSet(); + + Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); + Consumer categoryConsumer = getCategoryConsumer(cache, path, entryIDs); + + //adds to our categories and entries fields. + collectInfoForBook(); + + for (BookStuff.Category categoryToConsume : this.categories) + { + categoryConsumer.accept(categoryToConsume); + } + + for (BookStuff.Entry entryToConsume : this.entries) + { + entryConsumer.accept(entryToConsume); + } + + } + + private void collectInfoForBook() + { + //dynamically figure out all the things we wanna generate categories/entries for? + //------------------------------------------// + // Categories // + //------------------------------------------// + // - Basics // + // - Manifestations (parent category?) // + // - Feruchemy // + // - Allomancy // + // - Hemalurgy // + // - Curios // + // - Machines ? // + // - Challenges ? // + // - // + // - // + // - // + // - // + // - // + //------------------------------------------// + + PatchouliBasics.collect(this.categories, this.entries); + PatchouliAllomancy.collect(this.categories, this.entries); + PatchouliFeruchemy.collect(this.categories, this.entries); + PatchouliHemalurgy.collect(this.categories, this.entries); + + + } + + private Consumer getCategoryConsumer(HashCache cache, Path path, Set categoryIDs) + { + return category -> + { + if (!categoryIDs.add(category.name)) + { + throw new IllegalStateException("Duplicate page " + category.name); + } + else + { + Path path1 = getCategoryPath(path, category); + + try + { + DataProvider.save(GSON, cache, category.serialize(), path1); + } + catch (IOException ioexception) + { + LogHelper.LOGGER.error("Couldn't save page {}", path1, ioexception); + } + + } + }; + } + + private Consumer getEntryConsumer(HashCache cache, Path path, Set entryIDs) + { + return entry -> + { + if (!entryIDs.add(entry.name)) + { + throw new IllegalStateException("Duplicate page " + entry.name); + } + else + { + Path path1 = getEntryPath(path, entry); + + try + { + DataProvider.save(GSON, cache, entry.serialize(), path1); + } + catch (IOException ioexception) + { + LogHelper.LOGGER.error("Couldn't save page {}", path1, ioexception); + } + + } + }; + } + + private static Path getCategoryPath(Path pathIn, BookStuff.Category category) + { + return pathIn.resolve( + String.format( + "data/cosmere/patchouli_books/%s/en_us/categories/%s.json", + GUIDE_NAME, + category.name)); + } + + private static Path getEntryPath(Path pathIn, BookStuff.Entry entry) + { + return pathIn.resolve( + String.format( + "data/cosmere/patchouli_books/%s/en_us/entries/%s/%s.json", + GUIDE_NAME, + entry.category.name, + entry.name)); + } + + /** + * Gets a name for this provider, to use in logging. + */ + public String getName() + { + return "PatchouliGeneration"; + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index a151706bd..5c5755354 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -5,84 +5,83 @@ package leaf.cosmere.datagen.patchouli.categories; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.patchouli.*; +import leaf.cosmere.datagen.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.utils.helpers.StringHelper; -import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.RegistryObject; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import static leaf.cosmere.registry.ManifestationRegistry.ALLOMANCY_POWERS; public class PatchouliAllomancy { - public static void collect(List categories, List entries) - { - BookStuff.Category allomancy = new BookStuff.Category( - "allomancy", - "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", - "cosmere:pewter_nugget"); - allomancy.sortnum = 1; - - - categories.add(allomancy); - - - BookStuff.Entry allomancyBasics = new BookStuff.Entry("allomancy_basics", allomancy, allomancy.icon); - allomancyBasics.pages = new BookStuff.Page[] - { - new BookStuff.TextPage("If you entered this world with an allomantic ability, you're called a $(6)misting$().", allomancy.icon), - new BookStuff.SpotlightPage("Metal vial", "cosmere:metal_vial"), - new BookStuff.CraftingPage("Metal vial", "cosmere:metal_vial"), - }; - allomancyBasics.priority = true; - List pages = new ArrayList<>(); - - entries.add(allomancyBasics); - - //allomancy - for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) - { - AManifestation aManifestation = manifestation.get(); - AllomancyBase allomancyManifestation = (AllomancyBase) aManifestation; - Metals.MetalType metalType = allomancyManifestation.getMetalType(); - - if (!metalType.hasFeruchemicalEffect()) - { - continue; - } - - String metalName = metalType.getName(); - - BookStuff.Entry entryForThisPower = new BookStuff.Entry( - "allomantic_" + metalName, - allomancy, - String.format("%s_ingot", metalName)); - entryForThisPower.sortnum = metalType.getID(); - - pages.clear(); - String mistingName = StringHelper.fixCapitalisation(metalType.getMistingName()); - - - switch (metalType) - { - default: - pages.add(new BookStuff.TextPage("A misting who burns " + metalName + " is known as a \"" + mistingName + "\".")); - break; - case ALUMINUM: - case DURALUMIN: - //add extra note so that these people will know of their shame. - pages.add(new BookStuff.TextPage("A misting who can only burn " + metalName + " is known as a \"" + mistingName + "\" as they gain no discernible effect from burning their metal.")); - break; - } - - pages.add(new BookStuff.TextPage(metalType.GetAllomancyDescription())); - - entryForThisPower.pages = pages.stream().toArray(BookStuff.Page[]::new); - entries.add(entryForThisPower); - } - } + public static void collect(List categories, List entries) + { + BookStuff.Category allomancy = new BookStuff.Category( + "allomancy", + "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", + "cosmere:pewter_nugget"); + allomancy.sortnum = 1; + + + categories.add(allomancy); + + + BookStuff.Entry allomancyBasics = new BookStuff.Entry("allomancy_basics", allomancy, allomancy.icon); + allomancyBasics.pages = new BookStuff.Page[] + { + new BookStuff.TextPage("If you entered this world with an allomantic ability, you're called a $(6)misting$().", allomancy.icon), + new BookStuff.SpotlightPage("Metal vial", "cosmere:metal_vial"), + new BookStuff.CraftingPage("Metal vial", "cosmere:metal_vial"), + }; + allomancyBasics.priority = true; + List pages = new ArrayList<>(); + + entries.add(allomancyBasics); + + //allomancy + for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) + { + AManifestation aManifestation = manifestation.get(); + AllomancyBase allomancyManifestation = (AllomancyBase) aManifestation; + Metals.MetalType metalType = allomancyManifestation.getMetalType(); + + if (!metalType.hasFeruchemicalEffect()) + { + continue; + } + + String metalName = metalType.getName(); + + BookStuff.Entry entryForThisPower = new BookStuff.Entry( + "allomantic_" + metalName, + allomancy, + String.format("%s_ingot", metalName)); + entryForThisPower.sortnum = metalType.getID(); + + pages.clear(); + String mistingName = StringHelper.fixCapitalisation(metalType.getMistingName()); + + + switch (metalType) + { + default: + pages.add(new BookStuff.TextPage("A misting who burns " + metalName + " is known as a \"" + mistingName + "\".")); + break; + case ALUMINUM: + case DURALUMIN: + //add extra note so that these people will know of their shame. + pages.add(new BookStuff.TextPage("A misting who can only burn " + metalName + " is known as a \"" + mistingName + "\" as they gain no discernible effect from burning their metal.")); + break; + } + + pages.add(new BookStuff.TextPage(metalType.GetAllomancyDescription())); + + entryForThisPower.pages = pages.stream().toArray(BookStuff.Page[]::new); + entries.add(entryForThisPower); + } + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java index eeb63ab37..a407de7cd 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java @@ -10,16 +10,16 @@ public class PatchouliBasics { - public static void collect(List categories, List entries) - { - //BookStuff.Category basics = new BookStuff.Category( - // "basics", - // "Everything you've learnt so far", - // "cosmere:guide"); + public static void collect(List categories, List entries) + { + //BookStuff.Category basics = new BookStuff.Category( + // "basics", + // "Everything you've learnt so far", + // "cosmere:guide"); // - //basics.sortnum = 0; + //basics.sortnum = 0; // // - //categories.add(basics); - } + //categories.add(basics); + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java index 5a0b3793f..061ed2545 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java @@ -8,55 +8,54 @@ import leaf.cosmere.datagen.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; -import net.minecraftforge.fml.RegistryObject; +import net.minecraftforge.registries.RegistryObject; import java.util.List; -import java.util.Locale; import static leaf.cosmere.registry.ManifestationRegistry.FERUCHEMY_POWERS; public class PatchouliFeruchemy { - public static void collect(List categories, List entries) - { + public static void collect(List categories, List entries) + { - BookStuff.Category feruchemy = new BookStuff.Category( - "feruchemy", - "The art of equivalent exchange when it comes to the body. ", - "cosmere:copper_bracelet_metalmind"); - feruchemy.sortnum = 2; + BookStuff.Category feruchemy = new BookStuff.Category( + "feruchemy", + "The art of equivalent exchange when it comes to the body. ", + "cosmere:copper_bracelet_metalmind"); + feruchemy.sortnum = 2; - categories.add(feruchemy); + categories.add(feruchemy); - //feruchemy - for (RegistryObject manifestation : FERUCHEMY_POWERS.values()) - { - AManifestation aManifestation = manifestation.get(); - FeruchemyBase feruchemyManifestation = (FeruchemyBase) aManifestation; - Metals.MetalType metalType = feruchemyManifestation.getMetalType(); + //feruchemy + for (RegistryObject manifestation : FERUCHEMY_POWERS.values()) + { + AManifestation aManifestation = manifestation.get(); + FeruchemyBase feruchemyManifestation = (FeruchemyBase) aManifestation; + Metals.MetalType metalType = feruchemyManifestation.getMetalType(); - if (!metalType.hasFeruchemicalEffect()) - { - continue; - } + if (!metalType.hasFeruchemicalEffect()) + { + continue; + } - String metalName = metalType.getName(); + String metalName = metalType.getName(); - BookStuff.Entry e = new BookStuff.Entry( - "feruchemical_" + metalName, - feruchemy, - feruchemy.icon.replace("copper", metalName)); - e.sortnum = metalType.getID(); + BookStuff.Entry e = new BookStuff.Entry( + "feruchemical_" + metalName, + feruchemy, + feruchemy.icon.replace("copper", metalName)); + e.sortnum = metalType.getID(); - e.pages = new BookStuff.Page[] - { - new BookStuff.TextPage(feruchemyManifestation.description().getKey()) - }; + e.pages = new BookStuff.Page[] + { + new BookStuff.TextPage(feruchemyManifestation.description().getKey()) + }; - entries.add(e); - } - } + entries.add(e); + } + } } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java index 2df1b076e..dbbceff1d 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java @@ -8,44 +8,43 @@ import leaf.cosmere.datagen.patchouli.BookStuff; import java.util.List; -import java.util.Locale; public class PatchouliHemalurgy { - public static void collect(List categories, List entries) - { - BookStuff.Category hemalurgy = new BookStuff.Category( - "hemalurgy", - "The forbidden field of magic that takes from others so that you may get stronger.", - "cosmere:atium_spike"); - hemalurgy.sortnum = 3; - hemalurgy.secret = true; - - - categories.add(hemalurgy); - - - //hemalurgy - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasHemalurgicEffect()) - { - continue; - } - - String metalName = metalType.getName(); - BookStuff.Entry e = new BookStuff.Entry( - "hemalurgic_" + metalName, - hemalurgy, - hemalurgy.icon.replace("atium", metalName)); - e.sortnum = metalType.getID(); - - e.pages = new BookStuff.Page[] - { - new BookStuff.TextPage(metalType.getHemalurgicUseString()) - }; - - entries.add(e); - } - } + public static void collect(List categories, List entries) + { + BookStuff.Category hemalurgy = new BookStuff.Category( + "hemalurgy", + "The forbidden field of magic that takes from others so that you may get stronger.", + "cosmere:atium_spike"); + hemalurgy.sortnum = 3; + hemalurgy.secret = true; + + + categories.add(hemalurgy); + + + //hemalurgy + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasHemalurgicEffect()) + { + continue; + } + + String metalName = metalType.getName(); + BookStuff.Entry e = new BookStuff.Entry( + "hemalurgic_" + metalName, + hemalurgy, + hemalurgy.icon.replace("atium", metalName)); + e.sortnum = metalType.getID(); + + e.pages = new BookStuff.Page[] + { + new BookStuff.TextPage(metalType.getHemalurgicUseString()) + }; + + entries.add(e); + } + } } diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index f5b4f42c7..49390a120 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -8,76 +8,76 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.AttributesRegistry; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; -public class AllomancyBoostEffect extends Effect +public class AllomancyBoostEffect extends MobEffect { - public AllomancyBoostEffect(Metals.MetalType type, EffectType effectType) - { - super(effectType, type.getColorValue()); + public AllomancyBoostEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(effectType, type.getColorValue()); - AttributesRegistry.COSMERE_ATTRIBUTES.entrySet() - .forEach(attributeRegistered -> - { - //todo powers to NOT increase? - //skip duralumin and nicrosil? + AttributesRegistry.COSMERE_ATTRIBUTES.entrySet() + .forEach(attributeRegistered -> + { + //todo powers to NOT increase? + //skip duralumin and nicrosil? - addAttributeModifier( - attributeRegistered.getValue().get(), - "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", - 0.334D, - AttributeModifier.Operation.MULTIPLY_TOTAL); - }); - } + addAttributeModifier( + attributeRegistered.getValue().get(), + "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", + 0.334D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + }); + } - @Override - public void applyEffectTick(LivingEntity livingEntity, int amplifier) - { - //todo boost metal drain balancing - //4 times a second? - boolean isActiveTick = livingEntity.tickCount % 5 == 0; + @Override + public void applyEffectTick(LivingEntity livingEntity, int amplifier) + { + //todo boost metal drain balancing + //4 times a second? + boolean isActiveTick = livingEntity.tickCount % 5 == 0; - if (isActiveTick) - { - //todo change the allomancy boost effect to be the one that drains the metals. - //just run the duralumin effect on the other entity - SpiritwebCapability.get(livingEntity).ifPresent(data -> - { - //drain metals that are actively being burned - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } + if (isActiveTick) + { + //todo change the allomancy boost effect to be the one that drains the metals. + //just run the duralumin effect on the other entity + SpiritwebCapability.get(livingEntity).ifPresent(data -> + { + //drain metals that are actively being burned + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasAssociatedManifestation()) + { + continue; + } - //if metal is active - if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getID())) - { - int ingestedMetalAmount = data.getIngestedMetal(metalType); + //if metal is active + if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getID())) + { + int ingestedMetalAmount = data.getIngestedMetal(metalType); - if (ingestedMetalAmount > 0) - { - if (ingestedMetalAmount > 27) - { - data.adjustIngestedMetal(metalType, 27, true); - } - else - { - data.adjustIngestedMetal(metalType, ingestedMetalAmount, true); - } - } - } - } + if (ingestedMetalAmount > 0) + { + if (ingestedMetalAmount > 27) + { + data.adjustIngestedMetal(metalType, 27, true); + } + else + { + data.adjustIngestedMetal(metalType, ingestedMetalAmount, true); + } + } + } + } - } - ); + } + ); - } + } - } + } } diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java index f3d37889d..958ca8804 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java @@ -6,41 +6,41 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; -public class AllomancyEffectBase extends Effect implements IHasMetalType +public class AllomancyEffectBase extends MobEffect implements IHasMetalType { - protected final Metals.MetalType metalType; - - public AllomancyEffectBase(Metals.MetalType type, EffectType effectType) - { - super(effectType, type.getColorValue()); - metalType = type; - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } - - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.level.isClientSide) - { - //client side only? - } - } - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; + protected final Metals.MetalType metalType; + + public AllomancyEffectBase(Metals.MetalType type, MobEffectCategory effectType) + { + super(effectType, type.getColorValue()); + metalType = type; + } + + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } + + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (entityLivingBaseIn.level.isClientSide) + { + //client side only? + } + } + + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + //assume we can apply the effect regardless + boolean result = true; /* //but if we are a specific effect if (metalType == Metals.MetalType.BENDALLOY) @@ -51,6 +51,6 @@ public boolean isDurationEffectTick(int duration, int amplifier) result = duration % k == 0; } }*/ - return result; - } + return result; + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java index e50e0d540..6a739c897 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java @@ -6,41 +6,41 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; -public class FeruchemyEffectBase extends Effect implements IHasMetalType +public class FeruchemyEffectBase extends MobEffect implements IHasMetalType { - protected final Metals.MetalType metalType; - final double bonusPerLevel = 1; - - public FeruchemyEffectBase(Metals.MetalType type, EffectType effectType) - { - super(effectType, type.getColorValue()); - metalType = type; - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } - - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.level.isClientSide) - { - //client side only? - } - } - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - return true; - } + protected final Metals.MetalType metalType; + final double bonusPerLevel = 1; + + public FeruchemyEffectBase(Metals.MetalType type, MobEffectCategory effectType) + { + super(effectType, type.getColorValue()); + metalType = type; + } + + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } + + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (entityLivingBaseIn.level.isClientSide) + { + //client side only? + } + } + + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + //assume we can apply the effect regardless + return true; + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java index 59a23ebb5..5b08d20ba 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java @@ -6,41 +6,41 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; // food public class BendalloyStoreEffect extends FeruchemyEffectBase { - public BendalloyStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; - - int k = 50 >> amplifier; - if (k > 0) - { - result = duration % k == 0; - } - - return result; - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (!entityLivingBaseIn.level.isClientSide) - { - ((PlayerEntity) entityLivingBaseIn).getFoodData().addExhaustion(0.5F * (float) (amplifier + 1)); - - //todo add tough as nails mod compatibility? - } - } + public BendalloyStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } + + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + //assume we can apply the effect regardless + boolean result = true; + + int k = 50 >> amplifier; + if (k > 0) + { + result = duration % k == 0; + } + + return result; + } + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (!entityLivingBaseIn.level.isClientSide) + { + ((Player) entityLivingBaseIn).getFoodData().addExhaustion(0.5F * (float) (amplifier + 1)); + + //todo add tough as nails mod compatibility? + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java index cb69d1e87..03bdf9d73 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java @@ -7,27 +7,27 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; //warmth public class BrassStoreEffect extends FeruchemyEffectBase { - public BrassStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } + public BrassStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //ensure the user has fire resistence at least as strong as their store effect + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //ensure the user has fire resistence at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) - { - return; - } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.FIRE_RESISTANCE, amplifier)); - } + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + { + return; + } + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.FIRE_RESISTANCE, amplifier)); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java index be486f3ed..585a1188c 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/CadmiumStoreEffect.java @@ -6,32 +6,32 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; -import net.minecraft.util.DamageSource; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; // air public class CadmiumStoreEffect extends FeruchemyEffectBase { - public CadmiumStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } + public CadmiumStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.level.isClientSide) - { - return; - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (entityLivingBaseIn.level.isClientSide) + { + return; + } - entityLivingBaseIn.setAirSupply(MathHelper.clamp(entityLivingBaseIn.getAirSupply() - 4 - (amplifier), -20, entityLivingBaseIn.getMaxAirSupply())); + entityLivingBaseIn.setAirSupply(Mth.clamp(entityLivingBaseIn.getAirSupply() - 4 - (amplifier), -20, entityLivingBaseIn.getMaxAirSupply())); - if (entityLivingBaseIn.getAirSupply() < -10 && entityLivingBaseIn.tickCount % 50 == 0) - { - entityLivingBaseIn.hurt(DamageSource.DROWN, 2.0F); - } - } + if (entityLivingBaseIn.getAirSupply() < -10 && entityLivingBaseIn.tickCount % 50 == 0) + { + entityLivingBaseIn.hurt(DamageSource.DROWN, 2.0F); + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java index 31709433d..0fef71100 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/ChromiumStoreEffect.java @@ -6,55 +6,57 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.AttributeModifierManager; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LootingLevelEvent; //luck public class ChromiumStoreEffect extends FeruchemyEffectBase { - public ChromiumStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - - addAttributeModifier( - Attributes.LUCK, - "97c8b98f-fb33-4218-bd32-1ace62d75019", - -1.0D, - AttributeModifier.Operation.ADDITION); - - MinecraftForge.EVENT_BUS.addListener(this::onLootingLevelEvent); - } - - public void onLootingLevelEvent(LootingLevelEvent event) - { - if (event.getDamageSource() == null) - return; - - boolean isRemote = event.getEntityLiving().level.isClientSide; - boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); - - if (isRemote || entityNotLiving) - { - return; - } - - EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); - if (effectInstance != null && effectInstance.getDuration() > 0) - { - event.setLootingLevel(event.getLootingLevel() - effectInstance.getAmplifier()); - } - } - - - @Override - public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) - { - super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); - } + public ChromiumStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + + addAttributeModifier( + Attributes.LUCK, + "97c8b98f-fb33-4218-bd32-1ace62d75019", + -1.0D, + AttributeModifier.Operation.ADDITION); + + MinecraftForge.EVENT_BUS.addListener(this::onLootingLevelEvent); + } + + public void onLootingLevelEvent(LootingLevelEvent event) + { + if (event.getDamageSource() == null) + { + return; + } + + boolean isRemote = event.getEntityLiving().level.isClientSide; + boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); + + if (isRemote || entityNotLiving) + { + return; + } + + MobEffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + event.setLootingLevel(event.getLootingLevel() - effectInstance.getAmplifier()); + } + } + + + @Override + public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeMap attributeMapIn, int amplifier) + { + super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index 678237f51..cc5de0e10 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -6,9 +6,9 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.client.event.RenderNameplateEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingEvent; @@ -17,47 +17,47 @@ //connection aka ability for people to notice you public class DuraluminStoreEffect extends FeruchemyEffectBase { - public DuraluminStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - MinecraftForge.EVENT_BUS.addListener(this::onLivingVisibilityEvent); - MinecraftForge.EVENT_BUS.addListener(this::onRenderNameplateEvent); - } - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - return true; - } - - public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) - { - EffectInstance effectInstance = event.getEntityLiving().getEffect(this); - if (effectInstance != null && effectInstance.getDuration() > 0) - { - //at max strength and wearing no armor, you could stand a block or two away from a creeper and it wont see you. - //walk right into it though, and it will blow up. - event.modifyVisibility(1f / (effectInstance.getAmplifier() + 2)); - } - } - - public void onRenderNameplateEvent(RenderNameplateEvent event) - { - if (!(event.getEntity() instanceof LivingEntity)) - { - return; - } - - LivingEntity livingEntity = (LivingEntity) event.getEntity(); - - EffectInstance effectInstance = livingEntity.getEffect(this); - if (effectInstance != null && effectInstance.getDuration() > 0) - { - if (effectInstance.getAmplifier() > 2) - { - event.setResult(Event.Result.DENY); - } - - } - } + public DuraluminStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + MinecraftForge.EVENT_BUS.addListener(this::onLivingVisibilityEvent); + MinecraftForge.EVENT_BUS.addListener(this::onRenderNameplateEvent); + } + + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + return true; + } + + public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) + { + MobEffectInstance effectInstance = event.getEntityLiving().getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + //at max strength and wearing no armor, you could stand a block or two away from a creeper and it wont see you. + //walk right into it though, and it will blow up. + event.modifyVisibility(1f / (effectInstance.getAmplifier() + 2)); + } + } + + public void onRenderNameplateEvent(RenderNameplateEvent event) + { + if (!(event.getEntity() instanceof LivingEntity)) + { + return; + } + + LivingEntity livingEntity = (LivingEntity) event.getEntity(); + + MobEffectInstance effectInstance = livingEntity.getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + if (effectInstance.getAmplifier() > 2) + { + event.setResult(Event.Result.DENY); + } + + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java index aab79829e..e0e6c2dde 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java @@ -6,21 +6,20 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; //health public class GoldStoreEffect extends FeruchemyEffectBase { - public GoldStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - addAttributeModifier( - Attributes.MAX_HEALTH, - "2ee9153f-372f-4bd2-b21a-ccf08fecb8fa", - -4.0D, - AttributeModifier.Operation.ADDITION); - } + public GoldStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + Attributes.MAX_HEALTH, + "2ee9153f-372f-4bd2-b21a-ccf08fecb8fa", + -4.0D, + AttributeModifier.Operation.ADDITION); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java index bf7b7f3ee..d4aff39e5 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java @@ -7,34 +7,34 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class IronStoreEffect extends FeruchemyEffectBase { - public IronStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - addAttributeModifier( - Attributes.KNOCKBACK_RESISTANCE, - "a8fade1f-573d-405d-9885-39da3906d5f6", - -0.1D, - AttributeModifier.Operation.MULTIPLY_TOTAL); - } + public IronStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + Attributes.KNOCKBACK_RESISTANCE, + "a8fade1f-573d-405d-9885-39da3906d5f6", + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) - { - return; - } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, amplifier)); - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.JUMP, amplifier)); - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //ensure the user has correct buffs at least as strong as their store effect + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + { + return; + } + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.SLOW_FALLING, amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, amplifier)); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java index 3a8c0f35c..ced9b457b 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/PewterStoreEffect.java @@ -6,25 +6,25 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class PewterStoreEffect extends FeruchemyEffectBase { - public PewterStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - addAttributeModifier( - Attributes.ATTACK_DAMAGE, - "e8f5c2b2-f724-4514-82b8-9d10be304c42", - -1.0D, - AttributeModifier.Operation.ADDITION); - addAttributeModifier( - Attributes.ATTACK_KNOCKBACK, - "cb83254e-f9c4-4d67-9976-f2fdf69061ce", - -1.0D, - AttributeModifier.Operation.ADDITION); - } + public PewterStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + Attributes.ATTACK_DAMAGE, + "e8f5c2b2-f724-4514-82b8-9d10be304c42", + -1.0D, + AttributeModifier.Operation.ADDITION); + addAttributeModifier( + Attributes.ATTACK_KNOCKBACK, + "cb83254e-f9c4-4d67-9976-f2fdf69061ce", + -1.0D, + AttributeModifier.Operation.ADDITION); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java index fb4d95988..1d5d0a30d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/SteelStoreEffect.java @@ -6,27 +6,27 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class SteelStoreEffect extends FeruchemyEffectBase { - public SteelStoreEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); + public SteelStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); - this.addAttributeModifier( - Attributes.ATTACK_SPEED, - "bc7ff64b-f90c-49c0-81e1-6a6df3a3e612", - (double)-0.1F, - AttributeModifier.Operation.MULTIPLY_TOTAL); + this.addAttributeModifier( + Attributes.ATTACK_SPEED, + "bc7ff64b-f90c-49c0-81e1-6a6df3a3e612", + -0.1F, + AttributeModifier.Operation.MULTIPLY_TOTAL); - this.addAttributeModifier( - Attributes.MOVEMENT_SPEED, - "52583b16-7124-4443-b4e8-1497d6c793f2", - (double)-0.15F, - AttributeModifier.Operation.MULTIPLY_TOTAL); - } + this.addAttributeModifier( + Attributes.MOVEMENT_SPEED, + "52583b16-7124-4443-b4e8-1497d6c793f2", + -0.15F, + AttributeModifier.Operation.MULTIPLY_TOTAL); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java index 979823bea..e6f0ce98f 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java @@ -6,42 +6,42 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; public class BendalloyTapEffect extends FeruchemyEffectBase { - public BendalloyTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } - - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; - - int k = 50 >> amplifier + 1; - if (k > 0) - { - result = duration % k == 0; - } - - return result; - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (!entityLivingBaseIn.level.isClientSide) - { - ((PlayerEntity) entityLivingBaseIn).getFoodData().eat(amplifier + 1, 0.0F); - - //todo add tough as nails mod compatibility? - } - } + public BendalloyTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } + + + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + //assume we can apply the effect regardless + boolean result = true; + + int k = 50 >> amplifier + 1; + if (k > 0) + { + result = duration % k == 0; + } + + return result; + } + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (!entityLivingBaseIn.level.isClientSide) + { + ((Player) entityLivingBaseIn).getFoodData().eat(amplifier + 1, 0.0F); + + //todo add tough as nails mod compatibility? + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java index 1bc528a5f..bb1430ecc 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java @@ -8,9 +8,9 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingDamageEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -20,58 +20,58 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class BrassTapEffect extends FeruchemyEffectBase { - public BrassTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); + public BrassTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); - //reduce frost damage? theres no cold damage in base minecraft is there? + //reduce frost damage? theres no cold damage in base minecraft is there? - //add fire damage? - } + //add fire damage? + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (!entityLivingBaseIn.level.isClientSide && amplifier > 10 && !entityLivingBaseIn.isInWater()) - { - //set user on fire - entityLivingBaseIn.setSecondsOnFire(3); - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (!entityLivingBaseIn.level.isClientSide && amplifier > 10 && !entityLivingBaseIn.isInWater()) + { + //set user on fire + entityLivingBaseIn.setSecondsOnFire(3); + } - } + } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + //assume we can apply the effect regardless + boolean result = true; - //but if we are a specific effect - if (metalType == Metals.MetalType.BENDALLOY) - { - int k = 100 >> amplifier; - if (k > 0) - { - result = duration % k == 0; - } - } - return result; - } + //but if we are a specific effect + if (metalType == Metals.MetalType.BENDALLOY) + { + int k = 100 >> amplifier; + if (k > 0) + { + result = duration % k == 0; + } + } + return result; + } - @SubscribeEvent - public static void onLivingDamageEvent(LivingDamageEvent event) - { - if (event.getSource().getEntity() instanceof LivingEntity) - { - LivingEntity livingEntity = (LivingEntity) event.getSource().getEntity(); - EffectInstance effectInstance = livingEntity.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.BRASS).get()); + @SubscribeEvent + public static void onLivingDamageEvent(LivingDamageEvent event) + { + if (event.getSource().getEntity() instanceof LivingEntity) + { + LivingEntity livingEntity = (LivingEntity) event.getSource().getEntity(); + MobEffectInstance effectInstance = livingEntity.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.BRASS).get()); - if (effectInstance != null && effectInstance.getDuration() > 0 && effectInstance.getAmplifier() > 3) - { - event.getEntityLiving().setSecondsOnFire(effectInstance.getAmplifier()); - } - } - } + if (effectInstance != null && effectInstance.getDuration() > 0 && effectInstance.getAmplifier() > 3) + { + event.getEntityLiving().setSecondsOnFire(effectInstance.getAmplifier()); + } + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java index 14fe2152d..069226f84 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java @@ -6,27 +6,27 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; public class CadmiumTapEffect extends FeruchemyEffectBase { - public CadmiumTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } + public CadmiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.level.isClientSide) - { - return; - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (entityLivingBaseIn.level.isClientSide) + { + return; + } - entityLivingBaseIn.setAirSupply(MathHelper.clamp(entityLivingBaseIn.getAirSupply() + 3 + (amplifier), entityLivingBaseIn.getAirSupply(), entityLivingBaseIn.getMaxAirSupply())); + entityLivingBaseIn.setAirSupply(Mth.clamp(entityLivingBaseIn.getAirSupply() + 3 + (amplifier), entityLivingBaseIn.getAirSupply(), entityLivingBaseIn.getMaxAirSupply())); - } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java index ab8439e64..93b70daa5 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java @@ -6,53 +6,52 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.AttributeModifierManager; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LootingLevelEvent; public class ChromiumTapEffect extends FeruchemyEffectBase { - public ChromiumTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - - addAttributeModifier( - Attributes.LUCK, - "7faaa8a8-fee1-422c-8f85-6794042e8f09", - 1.0D, - AttributeModifier.Operation.ADDITION); - - MinecraftForge.EVENT_BUS.addListener(this::onLootingLevelEvent); - } - - public void onLootingLevelEvent(LootingLevelEvent event) - { - boolean isRemote = event.getEntityLiving().level.isClientSide; - boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); - - if (isRemote || entityNotLiving) - { - return; - } - - EffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); - if (effectInstance != null && effectInstance.getDuration() > 0) - { - event.setLootingLevel(event.getLootingLevel() + effectInstance.getAmplifier()); - } - } - - - - @Override - public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeModifierManager attributeMapIn, int amplifier) - { - super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); - } + public ChromiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + + addAttributeModifier( + Attributes.LUCK, + "7faaa8a8-fee1-422c-8f85-6794042e8f09", + 1.0D, + AttributeModifier.Operation.ADDITION); + + MinecraftForge.EVENT_BUS.addListener(this::onLootingLevelEvent); + } + + public void onLootingLevelEvent(LootingLevelEvent event) + { + boolean isRemote = event.getEntityLiving().level.isClientSide; + boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); + + if (isRemote || entityNotLiving) + { + return; + } + + MobEffectInstance effectInstance = ((LivingEntity) event.getDamageSource().getEntity()).getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + event.setLootingLevel(event.getLootingLevel() + effectInstance.getAmplifier()); + } + } + + + @Override + public void addAttributeModifiers(LivingEntity entityLivingBaseIn, AttributeMap attributeMapIn, int amplifier) + { + super.addAttributeModifiers(entityLivingBaseIn, attributeMapIn, amplifier); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java index a4e07674e..0cf5c6c66 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/DuraluminTapEffect.java @@ -7,27 +7,27 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; public class DuraluminTapEffect extends FeruchemyEffectBase { - public DuraluminTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } + public DuraluminTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) - { - return; - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //ensure the user has correct buffs at least as strong as their store effect + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + { + return; + } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.HERO_OF_THE_VILLAGE, amplifier)); - } + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.HERO_OF_THE_VILLAGE, amplifier)); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 6c56ef816..4e6ef6855 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -6,39 +6,39 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; public class GoldTapEffect extends FeruchemyEffectBase { - public GoldTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - } + public GoldTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) - { - entityLivingBaseIn.heal(amplifier + 1); - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) + { + entityLivingBaseIn.heal(amplifier + 1); + } - //todo reduce harmful effects timer - } + //todo reduce harmful effects timer + } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - int k = 40 >> amplifier; - if (k > 0) - { - return duration % k == 0; - } - else - { - return true; - } - } + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + int k = 40 >> amplifier; + if (k > 0) + { + return duration % k == 0; + } + else + { + return true; + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java index 8d6a3e3df..6988603bb 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java @@ -7,34 +7,34 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class IronTapEffect extends FeruchemyEffectBase { - public IronTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); - addAttributeModifier( - Attributes.KNOCKBACK_RESISTANCE, - "bb29d10a-c58f-4f7e-956b-133b2685831f", - 0.1D, - AttributeModifier.Operation.ADDITION); - } + public IronTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + Attributes.KNOCKBACK_RESISTANCE, + "bb29d10a-c58f-4f7e-956b-133b2685831f", + 0.1D, + AttributeModifier.Operation.ADDITION); + } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) - { - return; - } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.SLOW_FALLING, -amplifier)); - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(Effects.JUMP, -amplifier)); - } + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //ensure the user has correct buffs at least as strong as their store effect + if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + { + return; + } + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.SLOW_FALLING, -amplifier)); + entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, -amplifier)); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java index 0940978e2..66f078fed 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/PewterTapEffect.java @@ -6,26 +6,26 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class PewterTapEffect extends FeruchemyEffectBase { - public PewterTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); + public PewterTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); - addAttributeModifier( - Attributes.ATTACK_DAMAGE, - "00bebe52-fe9e-4966-989c-28de0cd2eb1f", - 1.0D, - AttributeModifier.Operation.ADDITION); - addAttributeModifier( - Attributes.ATTACK_KNOCKBACK, - "74b5b82b-58e0-4a34-9cc2-fd4b92f0b11b", - 1.0D, - AttributeModifier.Operation.ADDITION); - } + addAttributeModifier( + Attributes.ATTACK_DAMAGE, + "00bebe52-fe9e-4966-989c-28de0cd2eb1f", + 1.0D, + AttributeModifier.Operation.ADDITION); + addAttributeModifier( + Attributes.ATTACK_KNOCKBACK, + "74b5b82b-58e0-4a34-9cc2-fd4b92f0b11b", + 1.0D, + AttributeModifier.Operation.ADDITION); + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java index 41875e446..98de1b9e2 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/SteelTapEffect.java @@ -6,64 +6,64 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.block.material.Material; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.potion.EffectType; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraftforge.client.event.FOVUpdateEvent; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.level.material.Material; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.client.event.FOVModifierEvent; import net.minecraftforge.common.MinecraftForge; public class SteelTapEffect extends FeruchemyEffectBase { - public SteelTapEffect(Metals.MetalType type, EffectType effectType) - { - super(type, effectType); + public SteelTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); - this.addAttributeModifier( - Attributes.ATTACK_SPEED, - "0191c754-d7a2-4c78-9e14-896ecc7ed0e2", - (double) 0.1F, - AttributeModifier.Operation.MULTIPLY_TOTAL); + this.addAttributeModifier( + Attributes.ATTACK_SPEED, + "0191c754-d7a2-4c78-9e14-896ecc7ed0e2", + 0.1F, + AttributeModifier.Operation.MULTIPLY_TOTAL); - this.addAttributeModifier( - Attributes.MOVEMENT_SPEED, - "ede32ebb-1e66-4d26-b414-c14467885e7a", - (double) 0.2F, - AttributeModifier.Operation.MULTIPLY_TOTAL); + this.addAttributeModifier( + Attributes.MOVEMENT_SPEED, + "ede32ebb-1e66-4d26-b414-c14467885e7a", + 0.2F, + AttributeModifier.Operation.MULTIPLY_TOTAL); - MinecraftForge.EVENT_BUS.addListener(this::onFOVUpdate); + MinecraftForge.EVENT_BUS.addListener(this::onFOVUpdate); - } + } - public void onFOVUpdate(FOVUpdateEvent event) - { - //todo remember to make this better? clamp isn't necessarily the best way to stop it going over the top - event.setNewfov(MathHelper.clamp(event.getNewfov(), 0.8f, 1.2f)); - } + public void onFOVUpdate(FOVModifierEvent event) + { + //todo remember to make this better? clamp isn't necessarily the best way to stop it going over the top + event.setNewfov(Mth.clamp(event.getNewfov(), 0.8f, 1.2f)); + } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - return amplifier > 2; - } + @Override + public boolean isDurationEffectTick(int duration, int amplifier) + { + return amplifier > 2; + } - final Vector3d vec = new Vector3d(1.02d, 0d, 1.02d); + final Vec3 vec = new Vec3(1.02d, 0d, 1.02d); - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //todo replace this with something better - //code for checking block under player - //https://stackoverflow.com/a/62026168 - if (entityLivingBaseIn.level.getBlockState(entityLivingBaseIn.blockPosition().below()).getMaterial() == Material.WATER) - { + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + //todo replace this with something better + //code for checking block under player + //https://stackoverflow.com/a/62026168 + if (entityLivingBaseIn.level.getBlockState(entityLivingBaseIn.blockPosition().below()).getMaterial() == Material.WATER) + { - Vector3d motion = entityLivingBaseIn.getDeltaMovement().multiply(vec); - entityLivingBaseIn.setDeltaMovement(motion); - } - } + Vec3 motion = entityLivingBaseIn.getDeltaMovement().multiply(vec); + entityLivingBaseIn.setDeltaMovement(motion); + } + } } diff --git a/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java b/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java deleted file mode 100644 index dcd002bf2..000000000 --- a/src/main/java/leaf/cosmere/entities/spren/ASprenEntity.java +++ /dev/null @@ -1,103 +0,0 @@ -package leaf.cosmere.entities.spren; - -import leaf.cosmere.registry.*; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.ai.goal.*; -import net.minecraft.entity.passive.*; -import net.minecraft.util.math.*; -import net.minecraft.util.math.vector.*; -import net.minecraft.world.*; - -import javax.annotation.*; -import java.util.*; - -public abstract class ASprenEntity extends AnimalEntity implements IFlyingAnimal -{ - protected ASprenEntity(EntityType type, World worldIn) - { - super(type, worldIn); - } - - public CreatureAttribute getMobType() - { - return AttributesRegistry.SPREN; - } - - - public class WanderGoal extends Goal - { - WanderGoal() - { - this.setFlags(EnumSet.of(Goal.Flag.MOVE)); - } - - /** - * Returns whether execution should begin. You can also read and cache any state necessary for execution in this - * method as well. - */ - public boolean canUse() - { - return ASprenEntity.this.navigation.isDone() && ASprenEntity.this.random.nextInt(10) == 0; - } - - /** - * Returns whether an in-progress EntityAIBase should continue executing - */ - public boolean canContinueToUse() - { - return ASprenEntity.this.navigation.isInProgress(); - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void start() - { - Vector3d vector3d = this.getRandomLocation(); - if (vector3d != null) - { - ASprenEntity.this.navigation.moveTo(ASprenEntity.this.navigation.createPath(new BlockPos(vector3d), 1), 1.0D); - } - - } - - @Nullable - private Vector3d getRandomLocation() - { - Vector3d vector3d = ASprenEntity.this.getViewVector(0.0F); - - Vector3d vector3d2 = RandomPositionGenerator.getAboveLandPos(ASprenEntity.this, 8, 7, vector3d, ((float) Math.PI / 2F), 2, 1); - return vector3d2 != null ? vector3d2 : RandomPositionGenerator.getAirPos(ASprenEntity.this, 8, 4, -2, vector3d, (double) ((float) Math.PI / 2F)); - } - } - - protected abstract class PassiveGoal extends Goal - { - public PassiveGoal() - { - - } - - public abstract boolean canSprenStart(); - - public abstract boolean canSprenContinue(); - - /** - * Returns whether execution should begin. You can also read and cache any state necessary for execution in this - * method as well. - */ - public boolean canUse() - { - return this.canSprenStart(); - } - - /** - * Returns whether an in-progress EntityAIBase should continue executing - */ - public boolean canContinueToUse() - { - return this.canSprenContinue(); - } - } -} diff --git a/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java b/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java deleted file mode 100644 index e11c210b7..000000000 --- a/src/main/java/leaf/cosmere/entities/spren/SprenFlameEntity.java +++ /dev/null @@ -1,660 +0,0 @@ -package leaf.cosmere.entities.spren; - -import com.google.common.collect.*; -import leaf.cosmere.registry.*; -import net.minecraft.block.*; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.ai.attributes.*; -import net.minecraft.entity.ai.controller.*; -import net.minecraft.entity.ai.goal.*; -import net.minecraft.fluid.*; -import net.minecraft.item.*; -import net.minecraft.item.crafting.*; -import net.minecraft.nbt.*; -import net.minecraft.network.datasync.*; -import net.minecraft.particles.*; -import net.minecraft.pathfinding.*; -import net.minecraft.tags.*; -import net.minecraft.util.*; -import net.minecraft.util.math.*; -import net.minecraft.util.math.vector.*; -import net.minecraft.world.*; -import net.minecraft.world.server.*; -import net.minecraftforge.api.distmarker.*; - -import javax.annotation.*; -import java.util.*; - -public class SprenFlameEntity extends ASprenEntity -{ - private static final DataParameter DATA_FLAGS_ID = EntityDataManager.defineId(SprenFlameEntity.class, DataSerializers.BYTE); - - private float rollAmount; - private float rollAmountO; - - private int stayOutOfFireCountdown; - - private int remainingCooldownBeforeLocatingNewFire = 0; - private int remainingCooldownBeforeLocatingNewFlower = 0; - - @Nullable - private BlockPos firePos = null; - - private MoveToFireGoal moveToFireGoal; - - private int underWaterTicks; - - public SprenFlameEntity(EntityType type, World worldIn) - { - super(type, worldIn); - this.moveControl = new FlyingMovementController(this, 20, true); - this.lookControl = new LookController(this); - this.setPathfindingMalus(PathNodeType.WATER, -1.0F); - this.setPathfindingMalus(PathNodeType.WATER_BORDER, 16.0F); - this.setPathfindingMalus(PathNodeType.COCOA, -1.0F); - this.setPathfindingMalus(PathNodeType.FENCE, -1.0F); - } - - @Override - public boolean fireImmune() - { - return true; - } - - protected void defineSynchedData() - { - super.defineSynchedData(); - this.entityData.define(DATA_FLAGS_ID, (byte) 0); - } - - public static AttributeModifierMap.MutableAttribute prepareAttributes() - { - return MobEntity.createMobAttributes() - .add(Attributes.MAX_HEALTH, 10.0D) - .add(Attributes.FLYING_SPEED, 0.6F) - .add(Attributes.MOVEMENT_SPEED, 0.3F) - .add(Attributes.ATTACK_DAMAGE, 2.0D) - .add(Attributes.FOLLOW_RANGE, 48.0D); - } - - public float getWalkTargetValue(BlockPos pos, IWorldReader worldIn) - { - return worldIn.getBlockState(pos).isAir() ? 10.0F : 0.0F; - } - - protected void registerGoals() - { - this.goalSelector.addGoal(1, new SprenFlameEntity.EnterFireGoal()); - this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.TORCH, Items.SOUL_TORCH), false)); - this.goalSelector.addGoal(5, new FollowParentGoal(this, 1.25D)); - - this.goalSelector.addGoal(5, new SprenFlameEntity.UpdateFireGoal()); - - this.moveToFireGoal = new MoveToFireGoal(); - this.goalSelector.addGoal(5, this.moveToFireGoal); - - this.goalSelector.addGoal(8, new SprenFlameEntity.WanderGoal()); - - this.goalSelector.addGoal(9, new SwimGoal(this)); - } - - public void addAdditionalSaveData(CompoundNBT compound) - { - super.addAdditionalSaveData(compound); - - if (this.hasFire()) - { - compound.put("FirePos", NBTUtil.writeBlockPos(this.getFirePos())); - } - - compound.putInt("CannotEnterFireTicks", this.stayOutOfFireCountdown); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - public void readAdditionalSaveData(CompoundNBT compound) - { - this.firePos = null; - if (compound.contains("FirePos")) - { - this.firePos = NBTUtil.readBlockPos(compound.getCompound("FirePos")); - } - - this.stayOutOfFireCountdown = compound.getInt("CannotEnterFireTicks"); - } - - - /** - * Called to update the entity's position/logic. - */ - public void tick() - { - super.tick(); - if (this.random.nextFloat() < 0.05F) - { - for (int i = 0; i < this.random.nextInt(2) + 1; ++i) - { - this.addParticle(this.level, - this.getX() - (double) 0.3F, - this.getX() + (double) 0.3F, - this.getZ() - (double) 0.3F, - this.getZ() + (double) 0.3F, - this.getY(0.5D)); - } - } - - this.updateBodyPitch(); - } - - private void addParticle(World worldIn, double p_226397_2_, double p_226397_4_, double p_226397_6_, double p_226397_8_, double posY) - { - worldIn.addParticle(ParticleTypes.CAMPFIRE_COSY_SMOKE, MathHelper.lerp(worldIn.random.nextDouble(), p_226397_2_, p_226397_4_), posY, MathHelper.lerp(worldIn.random.nextDouble(), p_226397_6_, p_226397_8_), 0.0D, 0.0D, 0.0D); - } - - private void startMovingTo(BlockPos pos) - { - Vector3d vector3d = Vector3d.atBottomCenterOf(pos); - int i = 0; - BlockPos blockpos = this.blockPosition(); - int j = (int) vector3d.y - blockpos.getY(); - if (j > 2) - { - i = 4; - } - else if (j < -2) - { - i = -4; - } - - int k = 6; - int l = 8; - int i1 = blockpos.distManhattan(pos); - if (i1 < 15) - { - k = i1 / 2; - l = i1 / 2; - } - - Vector3d vector3d1 = RandomPositionGenerator.getAirPosTowards(this, k, l, i, vector3d, (float) Math.PI / 10F); - if (vector3d1 != null) - { - this.navigation.setMaxVisitedNodesMultiplier(0.5F); - this.navigation.moveTo(vector3d1.x, vector3d1.y, vector3d1.z, 1.0D); - } - } - - - private boolean canEnterFire() - { - return (this.stayOutOfFireCountdown <= 0) || (this.level.isRaining() || this.level.isNight()); - } - - @OnlyIn(Dist.CLIENT) - public float getBodyPitch(float p_226455_1_) - { - return MathHelper.lerp(p_226455_1_, this.rollAmountO, this.rollAmount); - } - - private void updateBodyPitch() - { - this.rollAmountO = this.rollAmount; - this.rollAmount = Math.max(0.0F, this.rollAmount - 0.24F); - } - - protected void customServerAiStep() - { - if (this.isInWaterOrBubble()) - { - ++this.underWaterTicks; - } - else - { - this.underWaterTicks = 0; - } - - if (this.underWaterTicks > 20) - { - this.hurt(DamageSource.DROWN, 10.0F); - } - - } - - public boolean hasFire() - { - return this.firePos != null; - } - - @Nullable - public BlockPos getFirePos() - { - return this.firePos; - } - - /** - * Called frequently so the entity can update its state every tick as required. For example, zombies and skeletons - * use this to react to sunlight and start to burn. - */ - public void aiStep() - { - super.aiStep(); - if (!this.level.isClientSide) - { - if (this.stayOutOfFireCountdown > 0) - { - --this.stayOutOfFireCountdown; - } - - if (this.remainingCooldownBeforeLocatingNewFire > 0) - { - --this.remainingCooldownBeforeLocatingNewFire; - } - - if (this.remainingCooldownBeforeLocatingNewFlower > 0) - { - --this.remainingCooldownBeforeLocatingNewFlower; - } - - if (this.tickCount % 20 == 0 && !this.isFireValid()) - { - this.firePos = null; - } - } - - } - - private boolean isFireValid() - { - if (!this.hasFire()) - { - return false; - } - else - { - return this.level.getBlockState(this.firePos).getBlock() == Blocks.FIRE; - } - } - - private boolean isTooFar(BlockPos pos) - { - return !this.isWithinDistance(pos, 32); - } - - /** - * Returns new PathNavigateGround instance - */ - protected PathNavigator createNavigation(World worldIn) - { - FlyingPathNavigator flyingpathnavigator = new FlyingPathNavigator(this, worldIn) - { - public boolean isStableDestination(BlockPos pos) - { - return !this.level.getBlockState(pos.below()).isAir(); - } - - public void tick() - { - super.tick(); - } - }; - flyingpathnavigator.setCanOpenDoors(false); - flyingpathnavigator.setCanFloat(false); - flyingpathnavigator.setCanPassDoors(true); - return flyingpathnavigator; - } - - /** - * Checks if the parameter is an item which this animal can be fed to breed it (wheat, carrots or seeds depending on - * the animal type) - */ - public boolean isFood(ItemStack stack) - { - return stack.getItem().is(ItemTags.FLOWERS); - } - - protected void playStepSound(BlockPos pos, BlockState blockIn) - { - } - - protected SoundEvent getAmbientSound() - { - return null; - } - - protected SoundEvent getHurtSound(DamageSource damageSourceIn) - { - return SoundEvents.BEE_HURT; - } - - protected SoundEvent getDeathSound() - { - return SoundEvents.BEE_DEATH; - } - - /** - * Returns the volume for the sounds this mob makes. - */ - protected float getSoundVolume() - { - return 0.4F; - } - - public SprenFlameEntity getBreedOffspring(ServerWorld world, AgeableEntity mate) - { - return EntityRegistry.SPREN_FIRE.get().create(world); - } - - protected float getStandingEyeHeight(Pose poseIn, EntitySize sizeIn) - { - return this.isBaby() ? sizeIn.height * 0.5F : sizeIn.height * 0.5F; - } - - public boolean causeFallDamage(float distance, float damageMultiplier) - { - return false; - } - - protected void checkFallDamage(double y, boolean onGroundIn, BlockState state, BlockPos pos) - { - } - - protected boolean makeFlySound() - { - return true; - } - - /** - * Called when the entity is attacked. - */ - public boolean hurt(DamageSource source, float amount) - { - if (this.isInvulnerableTo(source)) - { - return false; - } - else - { - return super.hurt(source, amount); - } - } - - public CreatureAttribute getMobType() - { - return AttributesRegistry.SPREN; - } - - protected void jumpInLiquid(ITag fluidTag) - { - this.setDeltaMovement(this.getDeltaMovement().add(0.0D, 0.01D, 0.0D)); - } - - @OnlyIn(Dist.CLIENT) - public Vector3d getLeashOffset() - { - return new Vector3d(0.0D, 0.5F * this.getEyeHeight(), this.getBbWidth() * 0.2F); - } - - private boolean isWithinDistance(BlockPos pos, int distance) - { - try - { - SprenFlameEntity sprenFlameEntity = this; - BlockPos position = sprenFlameEntity.blockPosition(); - return pos != null && pos.closerThan(position, distance); - - } - catch (Exception e) - { - return false; - } - } - - class EnterFireGoal extends SprenFlameEntity.PassiveGoal - { - protected EnterFireGoal() - { - } - - public boolean canSprenStart() - { - if (SprenFlameEntity.this.hasFire() && SprenFlameEntity.this.canEnterFire() && SprenFlameEntity.this.firePos.closerThan(SprenFlameEntity.this.position(), 2.0D)) - { - return true; - } - - return false; - } - - public boolean canSprenContinue() - { - return false; - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void start() - { - if (isFireValid()) - { - SprenFlameEntity.this.remove(); - } - } - } - - public class MoveToFireGoal extends SprenFlameEntity.PassiveGoal - { - private int ticks = SprenFlameEntity.this.level.random.nextInt(10); - private List possibleFires = Lists.newArrayList(); - @Nullable - private Path path = null; - private int ticksStuck; - - MoveToFireGoal() - { - this.setFlags(EnumSet.of(Goal.Flag.MOVE)); - } - - public boolean canSprenStart() - { - return SprenFlameEntity.this.firePos != null && !SprenFlameEntity.this.hasRestriction() && SprenFlameEntity.this.canEnterFire() && !this.isCloseEnough(SprenFlameEntity.this.firePos); - } - - public boolean canSprenContinue() - { - return this.canSprenStart(); - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void start() - { - this.ticks = 0; - this.ticksStuck = 0; - super.start(); - } - - /** - * Reset the task's internal state. Called when this task is interrupted by another one - */ - public void stop() - { - this.ticks = 0; - this.ticksStuck = 0; - SprenFlameEntity.this.navigation.stop(); - SprenFlameEntity.this.navigation.resetMaxVisitedNodesMultiplier(); - } - - /** - * Keep ticking a continuous task that has already been started - */ - public void tick() - { - if (SprenFlameEntity.this.firePos != null) - { - ++this.ticks; - if (this.ticks > 600) - { - this.makeChosenFirePossibleFire(); - } - else if (!SprenFlameEntity.this.navigation.isInProgress()) - { - if (!SprenFlameEntity.this.isWithinDistance(SprenFlameEntity.this.firePos, 16)) - { - if (SprenFlameEntity.this.isTooFar(SprenFlameEntity.this.firePos)) - { - this.reset(); - } - else - { - SprenFlameEntity.this.startMovingTo(SprenFlameEntity.this.firePos); - } - } - else - { - boolean flag = this.startMovingToFar(SprenFlameEntity.this.firePos); - if (!flag) - { - this.makeChosenFirePossibleFire(); - } - else if (this.path != null && SprenFlameEntity.this.navigation.getPath().sameAs(this.path)) - { - ++this.ticksStuck; - if (this.ticksStuck > 60) - { - this.reset(); - this.ticksStuck = 0; - } - } - else - { - this.path = SprenFlameEntity.this.navigation.getPath(); - } - - } - } - } - } - - private boolean startMovingToFar(BlockPos pos) - { - SprenFlameEntity.this.navigation.setMaxVisitedNodesMultiplier(10.0F); - SprenFlameEntity.this.navigation.moveTo(pos.getX(), pos.getY(), pos.getZ(), 1.0D); - return SprenFlameEntity.this.navigation.getPath() != null && SprenFlameEntity.this.navigation.getPath().canReach(); - } - - private boolean isPossibleFire(BlockPos pos) - { - return this.possibleFires.contains(pos); - } - - private void addPossibleFires(BlockPos pos) - { - this.possibleFires.add(pos); - - while (this.possibleFires.size() > 3) - { - this.possibleFires.remove(0); - } - - } - - private void clearPossibleFires() - { - this.possibleFires.clear(); - } - - private void makeChosenFirePossibleFire() - { - if (SprenFlameEntity.this.firePos != null) - { - this.addPossibleFires(SprenFlameEntity.this.firePos); - } - - this.reset(); - } - - private void reset() - { - SprenFlameEntity.this.firePos = null; - SprenFlameEntity.this.remainingCooldownBeforeLocatingNewFire = 200; - } - - private boolean isCloseEnough(BlockPos pos) - { - if (SprenFlameEntity.this.isWithinDistance(pos, 2)) - { - return true; - } - else - { - Path path = SprenFlameEntity.this.navigation.getPath(); - return path != null && path.getTarget().equals(pos) && path.canReach() && path.isDone(); - } - } - } - - class UpdateFireGoal extends SprenFlameEntity.PassiveGoal - { - private UpdateFireGoal() - { - } - - public boolean canSprenStart() - { - return SprenFlameEntity.this.remainingCooldownBeforeLocatingNewFire == 0 && !SprenFlameEntity.this.hasFire() && SprenFlameEntity.this.canEnterFire(); - } - - public boolean canSprenContinue() - { - return false; - } - - /** - * Execute a one shot task or start executing a continuous task - */ - public void start() - { - SprenFlameEntity.this.remainingCooldownBeforeLocatingNewFire = 200; - List list = this.getNearbyFreeFires(); - if (!list.isEmpty()) - { - for (BlockPos blockpos : list) - { - if (!SprenFlameEntity.this.moveToFireGoal.isPossibleFire(blockpos)) - { - SprenFlameEntity.this.firePos = blockpos; - return; - } - } - - SprenFlameEntity.this.moveToFireGoal.clearPossibleFires(); - SprenFlameEntity.this.firePos = list.get(0); - } - } - - private List getNearbyFreeFires() - { - List found = new ArrayList<>(); - BlockPos.withinManhattanStream(SprenFlameEntity.this.blockPosition(), 15, 15, 15) - .filter(blockPos -> - { - Block block = SprenFlameEntity.this.level.getBlockState(blockPos).getBlock(); - - if (block instanceof FireBlock) - { - return true; - } - - return false; - }) - .forEach(found::add); - return found; - } - } - -} - diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index e65086046..dd88256e6 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -9,85 +9,84 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.constants.Roshar; import leaf.cosmere.items.IHasColour; -import leaf.cosmere.items.gems.IHasPolestoneType; import leaf.cosmere.registry.ItemsRegistry; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.color.BlockColors; -import net.minecraft.client.renderer.color.IBlockColor; -import net.minecraft.client.renderer.color.IItemColor; -import net.minecraft.client.renderer.color.ItemColors; -import net.minecraft.item.BlockItem; +import net.minecraft.client.color.block.BlockColor; +import net.minecraft.client.color.block.BlockColors; +import net.minecraft.client.color.item.ItemColor; +import net.minecraft.client.color.item.ItemColors; +import net.minecraft.world.item.BlockItem; public final class ColorHandler { - public static void init() - { - BlockColors blockColors = Minecraft.getInstance().getBlockColors(); - ItemColors itemColors = Minecraft.getInstance().getItemColors(); + public static void init() + { + BlockColors blockColors = Minecraft.getInstance().getBlockColors(); + ItemColors itemColors = Minecraft.getInstance().getItemColors(); - IItemColor cosmereColourHandler = - (itemStack, tintIndex) -> tintIndex == 0 - ? ((IHasColour) itemStack.getItem()).getColourValue() - : -1; + ItemColor cosmereColourHandler = + (itemStack, tintIndex) -> tintIndex == 0 + ? ((IHasColour) itemStack.getItem()).getColourValue() + : -1; - IItemColor blockItemColorHandler = - (itemStack, tintIndex) -> tintIndex == 0 - ? Minecraft.getInstance().getBlockColors().getColor(((BlockItem) itemStack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex) - : -1; + ItemColor blockItemColorHandler = + (itemStack, tintIndex) -> tintIndex == 0 + ? Minecraft.getInstance().getBlockColors().getColor(((BlockItem) itemStack.getItem()).getBlock().defaultBlockState(), null, null, tintIndex) + : -1; - IBlockColor cosmereBlockColorHandler = - (blockState, world, pos, tintIndex) -> tintIndex == 0 - ? ((IHasColour) blockState.getBlock()).getColourValue() - : -1; + BlockColor cosmereBlockColorHandler = + (blockState, world, pos, tintIndex) -> tintIndex == 0 + ? ((IHasColour) blockState.getBlock()).getColourValue() + : -1; - itemColors.register(cosmereColourHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasOre()) - { - //blocks in world - blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); - itemColors.register(blockItemColorHandler, metalType.getOreBlock()); - itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); - } + itemColors.register(cosmereColourHandler, ItemsRegistry.BANDS_OF_MOURNING.get()); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasOre()) + { + //blocks in world + blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); + itemColors.register(blockItemColorHandler, metalType.getOreBlock()); + itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); + } - if (metalType.isAlloy()) - { - itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); - } + if (metalType.isAlloy()) + { + itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); + } - if (metalType.hasMaterialItem()) - { - //ingots - itemColors.register(cosmereColourHandler, metalType.getNuggetItem()); - itemColors.register(cosmereColourHandler, metalType.getIngotItem()); - //blocks in inventory - itemColors.register(blockItemColorHandler, metalType.getBlock()); - //blocks in world - blockColors.register(cosmereBlockColorHandler, metalType.getBlock()); - } + if (metalType.hasMaterialItem()) + { + //ingots + itemColors.register(cosmereColourHandler, metalType.getNuggetItem()); + itemColors.register(cosmereColourHandler, metalType.getIngotItem()); + //blocks in inventory + itemColors.register(blockItemColorHandler, metalType.getBlock()); + //blocks in world + blockColors.register(cosmereBlockColorHandler, metalType.getBlock()); + } - if (metalType.hasFeruchemicalEffect()) - { - itemColors.register(cosmereColourHandler, metalType.getRingItem()); - itemColors.register(cosmereColourHandler, metalType.getBraceletItem()); - itemColors.register(cosmereColourHandler, metalType.getNecklaceItem()); - } + if (metalType.hasFeruchemicalEffect()) + { + itemColors.register(cosmereColourHandler, metalType.getRingItem()); + itemColors.register(cosmereColourHandler, metalType.getBraceletItem()); + itemColors.register(cosmereColourHandler, metalType.getNecklaceItem()); + } - if (metalType.hasHemalurgicEffect()) - { - itemColors.register(cosmereColourHandler, metalType.getSpikeItem()); - } - } + if (metalType.hasHemalurgicEffect()) + { + itemColors.register(cosmereColourHandler, metalType.getSpikeItem()); + } + } - for (Roshar.Polestone polestone : Roshar.Polestone.values()) - { - //blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); - for (Roshar.GemSize size : Roshar.GemSize.values()) - { - itemColors.register(cosmereColourHandler, polestone.getPolestoneItem(size)); - } - } - } + for (Roshar.Polestone polestone : Roshar.Polestone.values()) + { + //blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); + for (Roshar.GemSize size : Roshar.GemSize.values()) + { + itemColors.register(cosmereColourHandler, polestone.getPolestoneItem(size)); + } + } + } } diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 107286bcc..8039b605d 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -8,218 +8,214 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.blocks.MetalOreBlock; import leaf.cosmere.commands.CosmereCommand; -import leaf.cosmere.commands.permissions.PermissionManager; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.FeatureRegistry; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.VillagerProfessionRegistry; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.entity.merchant.villager.VillagerTrades; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.biome.Biome; -import net.minecraft.world.gen.GenerationStage; -import net.minecraftforge.common.BasicTrade; +import net.minecraft.world.entity.npc.VillagerTrades; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraftforge.common.BasicItemListing; import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.event.village.VillagerTradesEvent; import net.minecraftforge.event.world.BiomeLoadingEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.server.FMLServerStartingEvent; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.List; -import java.util.Locale; import java.util.stream.Collectors; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class CommonEvents { - @SubscribeEvent - public static void registerCommands(RegisterCommandsEvent event) - { - CosmereCommand.register(event.getDispatcher()); - } - - @SubscribeEvent - public static void onServerStarting(FMLServerStartingEvent event) - { - PermissionManager.init(); - } - - @SubscribeEvent(priority = EventPriority.HIGH) - public static void onBiomeLoad(BiomeLoadingEvent event) - { - Biome.Category biomeCategory = event.getCategory(); - - //whitelist only vanilla biomes. - //todo may have compatibility issues with mining dimension type mods - //don't really want to deprive people of easier access to ores if they want to play that way. something to look into. - List whitelist = - Arrays.stream(Biome.Category.values()) - .filter(biomeType -> biomeType != Biome.Category.NONE && biomeType != Biome.Category.NETHER && biomeType != Biome.Category.THEEND) - .collect(Collectors.toList()); - - - if (whitelist.contains(biomeCategory)) - { - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasOre()) - { - event.getGeneration().addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, FeatureRegistry.ConfiguredFeatures.ORE_FEATURES.get(metalType)); - LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); - } - } - - } - } - - @SubscribeEvent - public static void registerTrades(VillagerTradesEvent event) - { - if (event.getType() == VillagerProfessionRegistry.METAL_TRADER.get()) - { - for (int i = 1; i <= 5; i++) - { - final List tradesForLevel = event.getTrades().get(i); - switch (i) - { - case 1: - for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; - case 2: - for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; - case 3: - tradesForLevel.add(makeTrade(ItemsRegistry.METAL_VIAL.get())); - break; - case 4: - for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; - case 5: - for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) - { - tradesForLevel.add(makeTrade(item.get().asItem())); - } - break; - } - } - } - } - - - private static BasicTrade makeTrade(Item item) - { - ItemStack itemStackForSale = new ItemStack(item, 1); - - itemStackForSale.setCount(getCount(itemStackForSale)); - - return new BasicTrade( - getCost(itemStackForSale), - itemStackForSale, - getMaxTradesPerDay(itemStackForSale), - getXpPerTrade(itemStackForSale)); - - } - - private static int getCost(ItemStack item) - { - int cost = 0; - switch (item.getItem().getRarity(item)) - { - case COMMON: - cost = 1; - break; - case UNCOMMON: - cost = 16; - break; - case RARE: - cost = 32; - break; - case EPIC: - cost = 64; - break; - } - - return cost; - } - - private static int getCount(ItemStack item) - { - int count = 0; - switch (item.getItem().getRarity(item)) - { - case COMMON: - count = 16; - break; - case UNCOMMON: - count = 8; - break; - case RARE: - count = 4; - break; - case EPIC: - count = 1; - break; - } - - return count; - } - - private static int getMaxTradesPerDay(ItemStack item) - { - int count = 0; - switch (item.getItem().getRarity(item)) - { - case COMMON: - count = 8; - break; - case UNCOMMON: - count = 5; - break; - case RARE: - count = 3; - break; - case EPIC: - count = 1; - break; - } - - return count; - } - - private static int getXpPerTrade(ItemStack item) - { - int count = 0; - switch (item.getItem().getRarity(item)) - { - case COMMON: - count = 2; - break; - case UNCOMMON: - count = 4; - break; - case RARE: - count = 6; - break; - case EPIC: - count = 8; - break; - } - - return count; - } + @SubscribeEvent + public static void registerCommands(RegisterCommandsEvent event) + { + CosmereCommand.register(event.getDispatcher()); + } + + + @SubscribeEvent(priority = EventPriority.HIGH) + public static void onBiomeLoad(BiomeLoadingEvent event) + { + Biome.BiomeCategory biomeCategory = event.getCategory(); + + //whitelist only vanilla biomes. + //todo may have compatibility issues with mining dimension type mods + //don't really want to deprive people of easier access to ores if they want to play that way. something to look into. + List whitelist = + Arrays.stream(Biome.BiomeCategory.values()) + .filter(biomeType -> biomeType != Biome.BiomeCategory.NONE && biomeType != Biome.BiomeCategory.NETHER && biomeType != Biome.BiomeCategory.THEEND) + .collect(Collectors.toList()); + + + if (whitelist.contains(biomeCategory)) + { + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasOre()) + { + event.getGeneration().addFeature( + GenerationStep.Decoration.UNDERGROUND_ORES, + FeatureRegistry.PlacedFeatures.PLACED_ORE_FEATURES.get(metalType) + ); + + LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); + } + } + + } + } + + @SubscribeEvent + public static void registerTrades(VillagerTradesEvent event) + { + if (event.getType() == VillagerProfessionRegistry.METAL_TRADER.get()) + { + for (int i = 1; i <= 5; i++) + { + final List tradesForLevel = event.getTrades().get(i); + switch (i) + { + case 1: + for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) + { + tradesForLevel.add(makeTrade(item.get())); + } + break; + case 2: + for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) + { + tradesForLevel.add(makeTrade(item.get())); + } + break; + case 3: + tradesForLevel.add(makeTrade(ItemsRegistry.METAL_VIAL.get())); + break; + case 4: + for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) + { + tradesForLevel.add(makeTrade(item.get())); + } + break; + case 5: + for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) + { + tradesForLevel.add(makeTrade(item.get().asItem())); + } + break; + } + } + } + } + + + private static VillagerTrades.ItemListing makeTrade(Item item) + { + ItemStack itemStackForSale = new ItemStack(item, 1); + + itemStackForSale.setCount(getCount(itemStackForSale)); + + return new BasicItemListing( + getCost(itemStackForSale), + itemStackForSale, + getMaxTradesPerDay(itemStackForSale), + getXpPerTrade(itemStackForSale)); + + } + + private static int getCost(ItemStack item) + { + int cost = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + cost = 1; + break; + case UNCOMMON: + cost = 16; + break; + case RARE: + cost = 32; + break; + case EPIC: + cost = 64; + break; + } + + return cost; + } + + private static int getCount(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 16; + break; + case UNCOMMON: + count = 8; + break; + case RARE: + count = 4; + break; + case EPIC: + count = 1; + break; + } + + return count; + } + + private static int getMaxTradesPerDay(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 8; + break; + case UNCOMMON: + count = 5; + break; + case RARE: + count = 3; + break; + case EPIC: + count = 1; + break; + } + + return count; + } + + private static int getXpPerTrade(ItemStack item) + { + int count = 0; + switch (item.getItem().getRarity(item)) + { + case COMMON: + count = 2; + break; + case UNCOMMON: + count = 4; + break; + case RARE: + count = 6; + break; + case EPIC: + count = 8; + break; + } + + return count; + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index d4dc12f49..22726f4a6 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -7,42 +7,45 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.charge.ItemChargeHelper; import leaf.cosmere.constants.Constants; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.registry.AttributesRegistry; -import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.merchant.villager.AbstractVillagerEntity; -import net.minecraft.entity.merchant.villager.VillagerEntity; -import net.minecraft.entity.monster.*; -import net.minecraft.entity.monster.piglin.AbstractPiglinEntity; -import net.minecraft.entity.monster.piglin.PiglinEntity; -import net.minecraft.entity.passive.AnimalEntity; -import net.minecraft.entity.passive.CatEntity; -import net.minecraft.entity.passive.horse.LlamaEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.util.Hand; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.animal.Animal; +import net.minecraft.world.entity.animal.Cat; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.monster.Ravager; +import net.minecraft.world.entity.monster.ZombieVillager; +import net.minecraft.world.entity.monster.piglin.AbstractPiglin; +import net.minecraft.world.entity.npc.AbstractVillager; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.raid.Raider; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.RegistryObject; +import javax.annotation.Nonnull; import java.util.Arrays; import static leaf.cosmere.utils.helpers.EntityHelper.giveEntityStartingManifestation; @@ -51,192 +54,214 @@ public class EntityEventHandler { - @SubscribeEvent - public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) - { - Entity eventEntity = event.getEntity(); - - if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity)) - { - return; - } - - LivingEntity livingEntity = (LivingEntity) eventEntity; - SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - - //find out if any innate powers exist on the entity first - //if they do - if (spiritweb.hasAnyPowers()) - { - //then skip - //no need to give them extras just for rejoining the world. - return; - } - - //if player or villager - if (eventEntity instanceof PlayerEntity) - { - //from random powertype - { - //give random power - giveEntityStartingManifestation(livingEntity, spiritweb); - - - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) - { - ModifiableAttributeInstance newPlayerAttribute = ((PlayerEntity) eventEntity).getAttribute(metalRelatedAttribute.get()); - - if (newPlayerAttribute != null) - { - newPlayerAttribute.setBaseValue(newPlayerAttribute.getBaseValue()); - } - - } - } - } - } - else if (eventEntity instanceof AbstractVillagerEntity - || eventEntity instanceof ZombieVillagerEntity - || (eventEntity instanceof AbstractRaiderEntity && !(eventEntity instanceof RavagerEntity)) - || eventEntity instanceof AbstractPiglinEntity) - { - //random 1/16 - // only 1 in 16 will have the gene - if (MathHelper.randomInt(1, 16) % 16 == 0) - { - giveEntityStartingManifestation(livingEntity, spiritweb); - } - - } - }); - - } - - @SubscribeEvent - public static void attachEntityCapabilities(AttachCapabilitiesEvent event) - { - Entity eventEntity = event.getObject(); - - if (eventEntity instanceof PlayerEntity - || eventEntity instanceof AnimalEntity - || eventEntity instanceof AbstractVillagerEntity - || eventEntity instanceof MonsterEntity) - { - LivingEntity livingEntity = (LivingEntity) eventEntity; - SpiritwebCapability spiritwebCapability = new SpiritwebCapability(livingEntity); - - event.addCapability(Constants.Resources.SPIRITWEB_CAP, new ISpiritweb.Provider(spiritwebCapability)); - } - } - - @SubscribeEvent - public static void onLivingTick(LivingEvent.LivingUpdateEvent event) - { - SpiritwebCapability.get(event.getEntityLiving()).ifPresent(ISpiritweb::tick); - } - - @SubscribeEvent - public static void onEntityItemPickUp(EntityItemPickupEvent event) - { - //seriously, get item three times is stupid, I know it. - //but entity item, itemstack and then the actual item is needed. + @SubscribeEvent + public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) + { + Entity eventEntity = event.getEntity(); + + if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity)) + { + return; + } + + LivingEntity livingEntity = (LivingEntity) eventEntity; + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + + //find out if any innate powers exist on the entity first + //if they do + if (spiritweb.hasAnyPowers()) + { + //then skip + //no need to give them extras just for rejoining the world. + return; + } + + //if player or villager + if (eventEntity instanceof Player) + { + //from random powertype + { + //give random power + giveEntityStartingManifestation(livingEntity, spiritweb); + + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + AttributeInstance newPlayerAttribute = ((Player) eventEntity).getAttribute(metalRelatedAttribute.get()); + + if (newPlayerAttribute != null) + { + newPlayerAttribute.setBaseValue(newPlayerAttribute.getBaseValue()); + } + + } + } + } + } + else if (eventEntity instanceof AbstractVillager + || eventEntity instanceof ZombieVillager + || (eventEntity instanceof Raider && !(eventEntity instanceof Ravager)) + || eventEntity instanceof AbstractPiglin) + { + //random 1/16 + // only 1 in 16 will have the gene + if (MathHelper.randomInt(1, 16) % 16 == 0) + { + giveEntityStartingManifestation(livingEntity, spiritweb); + } + + } + }); + + } + + @SubscribeEvent + public static void attachEntityCapabilities(AttachCapabilitiesEvent event) + { + Entity eventEntity = event.getObject(); + + if (eventEntity instanceof Player + || eventEntity instanceof Animal + || eventEntity instanceof AbstractVillager + || eventEntity instanceof Monster) + { + LivingEntity livingEntity = (LivingEntity) eventEntity; + event.addCapability(Constants.Resources.SPIRITWEB_CAP, new ICapabilitySerializable() + { + final SpiritwebCapability spiritweb = new SpiritwebCapability(livingEntity); + final LazyOptional spiritwebInstance = LazyOptional.of(() -> spiritweb); + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @javax.annotation.Nullable Direction side) + { + return cap == SpiritwebCapability.CAPABILITY ? (LazyOptional) spiritwebInstance + : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() + { + return spiritweb.serializeNBT(); + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + spiritweb.deserializeNBT(nbt); + } + }); + } + } + + @SubscribeEvent + public static void onLivingTick(LivingEvent.LivingUpdateEvent event) + { + SpiritwebCapability.get(event.getEntityLiving()).ifPresent(ISpiritweb::tick); + } + + @SubscribeEvent + public static void onEntityItemPickUp(EntityItemPickupEvent event) + { + //seriously, get item three times is stupid, I know it. + //but entity item, itemstack and then the actual item is needed. /* if (event.getItem().getItem().getItem() == ItemsRegistry.INVESTITURE.get()) { event.getItem().getItem().shrink(1); ItemChargeHelper.dispatchCharge(event.getPlayer(), 1000, true); }*/ - } - - @SubscribeEvent - public static void onRightClickItem(PlayerInteractEvent.RightClickItem event) - { - final PlayerEntity player = event.getPlayer(); - ItemStack itemInHand = player.getItemInHand(event.getHand()); - - final Item[] allowedItems = {Items.IRON_NUGGET, Items.GOLD_NUGGET/*,Items.COPPER_NUGGET*/}; - - final Item handItem = itemInHand.getItem(); - - if (!itemInHand.isEmpty() && Arrays.asList(allowedItems).contains(handItem)) - { - Metals.MetalType metalType = null; - - if (handItem == Items.IRON_NUGGET) - { - metalType = Metals.MetalType.IRON; - } - else if (handItem == Items.GOLD_NUGGET) - { - metalType = Metals.MetalType.GOLD; - } + } + + @SubscribeEvent + public static void onRightClickItem(PlayerInteractEvent.RightClickItem event) + { + final Player player = event.getPlayer(); + ItemStack itemInHand = player.getItemInHand(event.getHand()); + + final Item[] allowedItems = {Items.IRON_NUGGET, Items.GOLD_NUGGET/*,Items.COPPER_NUGGET*/}; + + final Item handItem = itemInHand.getItem(); + + if (!itemInHand.isEmpty() && Arrays.asList(allowedItems).contains(handItem)) + { + Metals.MetalType metalType = null; + + if (handItem == Items.IRON_NUGGET) + { + metalType = Metals.MetalType.IRON; + } + else if (handItem == Items.GOLD_NUGGET) + { + metalType = Metals.MetalType.GOLD; + } /*else if (handItem == Items.COPPER_NUGGET)//todo copper 1.18 { metalType = Metals.MetalType.COPPER; }*/ - player.startUsingItem(event.getHand()); + player.startUsingItem(event.getHand()); - MetalNuggetItem.consumeNugget(player, metalType, itemInHand); - } + MetalNuggetItem.consumeNugget(player, metalType, itemInHand); + } - } + } - @SubscribeEvent - public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) - { - if (!(event.getTarget() instanceof LivingEntity)) - { - return; - } + @SubscribeEvent + public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) + { + if (!(event.getTarget() instanceof LivingEntity)) + { + return; + } - ItemStack stack = event.getPlayer().getItemInHand(Hand.MAIN_HAND); - LivingEntity target = (LivingEntity) event.getTarget(); + ItemStack stack = event.getPlayer().getItemInHand(InteractionHand.MAIN_HAND); + LivingEntity target = (LivingEntity) event.getTarget(); - SpiritwebCapability.get(target).ifPresent(cap -> - { - if (stack.getItem() instanceof MetalNuggetItem) - { - MetalNuggetItem beadItem = (MetalNuggetItem) stack.getItem(); - Metals.MetalType metalType = beadItem.getMetalType(); + SpiritwebCapability.get(target).ifPresent(cap -> + { + if (stack.getItem() instanceof MetalNuggetItem) + { + MetalNuggetItem beadItem = (MetalNuggetItem) stack.getItem(); + Metals.MetalType metalType = beadItem.getMetalType(); - if (metalType != Metals.MetalType.LERASATIUM && metalType != Metals.MetalType.LERASIUM) - { - return; - } + if (metalType != Metals.MetalType.LERASATIUM && metalType != Metals.MetalType.LERASIUM) + { + return; + } - MetalNuggetItem.consumeNugget(target, metalType, stack); - } - else if (stack.getItem() instanceof HemalurgicSpikeItem) - { - //https://www.theoryland.com/intvmain.php?i=977#43 - if (!(event.getTarget() instanceof CatEntity)) - { - return; - } + MetalNuggetItem.consumeNugget(target, metalType, stack); + } + else if (stack.getItem() instanceof HemalurgicSpikeItem) + { + //https://www.theoryland.com/intvmain.php?i=977#43 + if (!(event.getTarget() instanceof Cat)) + { + return; + } - HemalurgicSpikeItem spike = (HemalurgicSpikeItem) stack.getItem(); + HemalurgicSpikeItem spike = (HemalurgicSpikeItem) stack.getItem(); - //only apply spike if it has a power - //no accidentally losing spikes - if (!spike.hemalurgicIdentityExists(stack)) - { - return; - } + //only apply spike if it has a power + //no accidentally losing spikes + if (!spike.hemalurgicIdentityExists(stack)) + { + return; + } - //todo random list of catquisitor names - target.setCustomName(TextHelper.createTranslatedText("Catquisitor ")); + //todo random list of catquisitor names + target.setCustomName(TextHelper.createTranslatedText("Catquisitor ")); - boolean spikeApplied = false; + boolean spikeApplied = false; - //todo catquisitor + //todo catquisitor /* switch (spike.getMetalType()) { @@ -263,12 +288,12 @@ else if (stack.getItem() instanceof HemalurgicSpikeItem) break; }*/ - if (spikeApplied && !event.getPlayer().isCreative()) - { - stack.shrink(1); - } - } + if (spikeApplied && !event.getPlayer().isCreative()) + { + stack.shrink(1); + } + } - }); - } + }); + } } diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index 9174a2ed7..d81bdd3a9 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -7,13 +7,13 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.AttributesRegistry; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraftforge.event.entity.EntityAttributeModificationEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.RegistryObject; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index ecf448111..d3256b6c7 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -8,27 +8,20 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; -import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.EntityType; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifierManager; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.potion.EffectInstance; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.event.TickEvent; import net.minecraftforge.event.entity.item.ItemTossEvent; import net.minecraftforge.event.entity.player.PlayerEvent; import net.minecraftforge.event.entity.player.PlayerXpEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.RegistryObject; @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class PlayerEventHandler @@ -36,9 +29,10 @@ public class PlayerEventHandler @SubscribeEvent public static void onPlayerClone(PlayerEvent.Clone event) { - Capability.IStorage storage = SpiritwebCapability.CAPABILITY.getStorage(); event.getOriginal().revive(); - SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> + + +/* SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> SpiritwebCapability.get(event.getPlayer()).ifPresent((newSpiritWeb) -> { //clear out the attributes that were placed on the newly cloned player at creation @@ -49,28 +43,28 @@ public static void onPlayerClone(PlayerEvent.Clone event) newSpiritWeb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); } - CompoundNBT nbt = (CompoundNBT) storage.writeNBT(SpiritwebCapability.CAPABILITY, oldSpiritWeb, null); + CompoundTag nbt = (CompoundTag) storage.writeNBT(SpiritwebCapability.CAPABILITY, oldSpiritWeb, null); storage.readNBT(SpiritwebCapability.CAPABILITY, newSpiritWeb, null, nbt); - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) - { - ModifiableAttributeInstance oldPlayerAttribute = event.getOriginal().getAttribute(metalRelatedAttribute.get()); - ModifiableAttributeInstance newPlayerAttribute = event.getPlayer().getAttribute(metalRelatedAttribute.get()); + }));*/ - if (newPlayerAttribute != null && oldPlayerAttribute != null) - { - newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); - } - } - } - })); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + AttributeInstance oldPlayerAttribute = event.getOriginal().getAttribute(metalRelatedAttribute.get()); + AttributeInstance newPlayerAttribute = event.getPlayer().getAttribute(metalRelatedAttribute.get()); + if (newPlayerAttribute != null && oldPlayerAttribute != null) + { + newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); + } + } + } } @SubscribeEvent @@ -120,8 +114,8 @@ public void onXPChange(PlayerXpEvent.XpChange event) //Feruchemical Zinc { - EffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); - EffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); + MobEffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); + MobEffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); if (tappingZincEffect != null) { @@ -136,7 +130,7 @@ public void onXPChange(PlayerXpEvent.XpChange event) RegistryObject xpGainRateAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()); if (xpGainRateAttribute != null && xpGainRateAttribute.isPresent()) { - ModifiableAttributeInstance attribute = event.getPlayer().getAttribute(xpGainRateAttribute.get()); + AttributeInstance attribute = event.getPlayer().getAttribute(xpGainRateAttribute.get()); if (attribute != null) { event.setAmount((int) (event.getAmount() * attribute.getValue())); diff --git a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java index 51ade0d68..2a2fc2c36 100644 --- a/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java +++ b/src/main/java/leaf/cosmere/itemgroups/CosmereItemGroups.java @@ -7,46 +7,46 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.registry.ItemsRegistry; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; public class CosmereItemGroups { - public static ItemGroup ITEMS = new ItemGroup(Cosmere.MODID + ".items") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(ItemsRegistry.GUIDE.get()); - } - }; - - public static ItemGroup METALMINDS = new ItemGroup(Cosmere.MODID + ".metalminds") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(ItemsRegistry.METAL_BRACELETS.entrySet().stream().findAny().get().getValue().get()); - } - }; - - public static ItemGroup HEMALURGIC_SPIKES = new ItemGroup(Cosmere.MODID + ".spikes") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(ItemsRegistry.METAL_SPIKE.entrySet().stream().findAny().get().getValue().get()); - } - }; - - public static ItemGroup BLOCKS = new ItemGroup(Cosmere.MODID + ".blocks") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(BlocksRegistry.GEM_BLOCK.get()); - } - }; + public static CreativeModeTab ITEMS = new CreativeModeTab(Cosmere.MODID + ".items") + { + @Override + public ItemStack makeIcon() + { + return new ItemStack(ItemsRegistry.GUIDE.get()); + } + }; + + public static CreativeModeTab METALMINDS = new CreativeModeTab(Cosmere.MODID + ".metalminds") + { + @Override + public ItemStack makeIcon() + { + return new ItemStack(ItemsRegistry.METAL_BRACELETS.entrySet().stream().findAny().get().getValue().get()); + } + }; + + public static CreativeModeTab HEMALURGIC_SPIKES = new CreativeModeTab(Cosmere.MODID + ".spikes") + { + @Override + public ItemStack makeIcon() + { + return new ItemStack(ItemsRegistry.METAL_SPIKE.entrySet().stream().findAny().get().getValue().get()); + } + }; + + public static CreativeModeTab BLOCKS = new CreativeModeTab(Cosmere.MODID + ".blocks") + { + @Override + public ItemStack makeIcon() + { + return new ItemStack(BlocksRegistry.GEM_BLOCK.get()); + } + }; } diff --git a/src/main/java/leaf/cosmere/items/BaseItem.java b/src/main/java/leaf/cosmere/items/BaseItem.java index 1b4712173..fa38b11d3 100644 --- a/src/main/java/leaf/cosmere/items/BaseItem.java +++ b/src/main/java/leaf/cosmere/items/BaseItem.java @@ -6,20 +6,25 @@ import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; -import net.minecraft.item.Item; +import net.minecraft.world.item.Item; public class BaseItem extends Item { - public BaseItem() - { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS)); - } + public BaseItem() + { + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS)); + } - public BaseItem(Item.Properties prop) - { - super(prop); - } + public BaseItem(Item.Properties prop) + { + super(prop); + } + protected int getBarWidth(float value, float max) + { + return Math.round(13 - ((value * 13)) / max); + } + } diff --git a/src/main/java/leaf/cosmere/items/CapWrapper.java b/src/main/java/leaf/cosmere/items/CapWrapper.java index 9c1dd6325..9bc965c58 100644 --- a/src/main/java/leaf/cosmere/items/CapWrapper.java +++ b/src/main/java/leaf/cosmere/items/CapWrapper.java @@ -6,85 +6,85 @@ package leaf.cosmere.items; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.ItemStack; +import net.minecraft.world.Container; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; -public class CapWrapper implements IInventory +public class CapWrapper implements Container { - private final IItemHandler handler; + private final IItemHandler handler; - public CapWrapper(IItemHandler handler) - { - this.handler = handler; - } + public CapWrapper(IItemHandler handler) + { + this.handler = handler; + } - @Override - public int getContainerSize() - { - return handler.getSlots(); - } + @Override + public int getContainerSize() + { + return handler.getSlots(); + } - @Override - public boolean isEmpty() - { - for (int i = 0; i < getContainerSize(); i++) - { - if (!getItem(i).isEmpty()) - { - return false; - } - } - return true; - } + @Override + public boolean isEmpty() + { + for (int i = 0; i < getContainerSize(); i++) + { + if (!getItem(i).isEmpty()) + { + return false; + } + } + return true; + } - @Override - public ItemStack getItem(int index) - { - return handler.getStackInSlot(index); - } + @Override + public ItemStack getItem(int index) + { + return handler.getStackInSlot(index); + } - @Override - public ItemStack removeItem(int index, int count) - { - return handler.extractItem(index, count, false); - } + @Override + public ItemStack removeItem(int index, int count) + { + return handler.extractItem(index, count, false); + } - @Override - public ItemStack removeItemNoUpdate(int index) - { - return handler.extractItem(index, Integer.MAX_VALUE, false); - } + @Override + public ItemStack removeItemNoUpdate(int index) + { + return handler.extractItem(index, Integer.MAX_VALUE, false); + } - @Override - public void setItem(int index, ItemStack stack) - { - if (handler instanceof IItemHandlerModifiable) - { - ((IItemHandlerModifiable) handler).setStackInSlot(index, stack); - } - } + @Override + public void setItem(int index, ItemStack stack) + { + if (handler instanceof IItemHandlerModifiable) + { + ((IItemHandlerModifiable) handler).setStackInSlot(index, stack); + } + } - @Override - public void setChanged() - { + @Override + public void setChanged() + { - } + } - @Override - public boolean stillValid(PlayerEntity player) - { - return false; - } + @Override + public boolean stillValid(Player player) + { + return false; + } - @Override - public void clearContent() - { - for (int i = 0; i < getContainerSize(); i++) - { - removeItemNoUpdate(i); - } - } + @Override + public void clearContent() + { + for (int i = 0; i < getContainerSize(); i++) + { + removeItemNoUpdate(i); + } + } } diff --git a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java index afba35184..4c40e5ff6 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java @@ -6,14 +6,14 @@ import leaf.cosmere.charge.IChargeable; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.item.Item; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.util.NonNullList; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; +import net.minecraft.ChatFormatting; +import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -23,78 +23,78 @@ public abstract class ChargeableItemBase extends BaseItem implements IChargeable { - public ChargeableItemBase(Item.Properties prop) - { - super(prop); - } + public ChargeableItemBase(Item.Properties prop) + { + super(prop); + } - @Override - public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) - { - if (allowdedIn(tab)) - { - stacks.add(new ItemStack(this)); + @Override + public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) + { + if (allowdedIn(tab)) + { + stacks.add(new ItemStack(this)); - ItemStack fullPower = new ItemStack(this); - setCharge(fullPower, getMaxCharge(fullPower)); - stacks.add(fullPower); - } - } + ItemStack fullPower = new ItemStack(this); + setCharge(fullPower, getMaxCharge(fullPower)); + stacks.add(fullPower); + } + } - @Override - public int getEntityLifespan(ItemStack itemStack, World world) - { - return Integer.MAX_VALUE; - } + @Override + public int getEntityLifespan(ItemStack itemStack, Level world) + { + return Integer.MAX_VALUE; + } - @Override - public boolean showDurabilityBar(ItemStack stack) - { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); - return item.getCharge(stack) > 1; - } - return false; - } + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + String attunedPlayerName = getAttunedPlayerName(stack); + UUID attunedPlayer = getAttunedPlayer(stack); + if (attunedPlayer != null) + { + tooltip.add(TextHelper.createText(attunedPlayerName)); + } + tooltip.add(TextHelper.createText(String.format("%s/%s", getCharge(stack), getMaxCharge(stack))).withStyle(ChatFormatting.GRAY)); + } - @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) - { - String attunedPlayerName = getAttunedPlayerName(stack); - UUID attunedPlayer = getAttunedPlayer(stack); - if (attunedPlayer != null) - { - tooltip.add(TextHelper.createText(attunedPlayerName)); - } - tooltip.add(TextHelper.createText(String.format("%s/%s", getCharge(stack), getMaxCharge(stack))).withStyle(TextFormatting.GRAY)); - } + @Override + public boolean isBarVisible(ItemStack stack) + { + if (stack.getItem() instanceof IChargeable) + { + IChargeable item = (IChargeable) stack.getItem(); + return item.getCharge(stack) > 1; + } + return false; + } - @Override - public double getDurabilityForDisplay(ItemStack stack) - { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); + @Override + public int getBarWidth(ItemStack stack) + { + if (stack.getItem() instanceof IChargeable) + { + IChargeable item = (IChargeable) stack.getItem(); - int maxCharge = item.getMaxCharge(stack); - int charge = item.getCharge(stack); + int maxCharge = item.getMaxCharge(stack); + int charge = item.getCharge(stack); - return (double) (maxCharge - charge) / (double) maxCharge; - } + return getBarWidth(charge, maxCharge); + } - return 1d; - } + return 13; + } - @Override - public boolean isFoil(ItemStack stack) - { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); - return item.getCharge(stack) > 0; - } - return false; - } + @Override + public boolean isFoil(ItemStack stack) + { + if (stack.getItem() instanceof IChargeable) + { + IChargeable item = (IChargeable) stack.getItem(); + return item.getCharge(stack) > 0; + } + return false; + } } diff --git a/src/main/java/leaf/cosmere/items/GemItem.java b/src/main/java/leaf/cosmere/items/GemItem.java index 1c951d1f5..566c10788 100644 --- a/src/main/java/leaf/cosmere/items/GemItem.java +++ b/src/main/java/leaf/cosmere/items/GemItem.java @@ -6,13 +6,13 @@ import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; -import net.minecraft.item.Rarity; +import net.minecraft.world.item.Rarity; public class GemItem extends ChargeableItemBase { - public GemItem() - { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); - } + public GemItem() + { + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); + } } diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index 45c568773..a07dcf61c 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -8,20 +8,21 @@ import leaf.cosmere.properties.PropTypes; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Rarity; -import net.minecraft.util.ActionResult; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.RayTraceContext; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.world.World; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.BlockHitResult; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import vazkii.patchouli.api.PatchouliAPI; @@ -34,75 +35,86 @@ public class GuideItem extends Item { - public GuideItem() - { - super(PropTypes.Items.ONE.get().rarity(Rarity.RARE)); - } - - public static boolean isOpen() - { - return ItemsRegistry.GUIDE.getId().equals(PatchouliAPI.get().getOpenBookGui()); - } - - - public static ITextComponent getTitle(ItemStack stack) - { - ITextComponent title = stack.getHoverName(); - - String akashicTomeNBT = "akashictome:displayName"; - if (stack.hasTag() && stack.getTag().contains(akashicTomeNBT)) - { - title = ITextComponent.Serializer.fromJson(stack.getTag().getString(akashicTomeNBT)); - } - - return title; - } - - // Random item to expose this as public - public static BlockRayTraceResult doRayTrace(World world, PlayerEntity player, RayTraceContext.FluidMode fluidMode) - { - return Item.getPlayerPOVHitResult(world, player, fluidMode); - } - - /* - @Override - public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList list) { - if (isInGroup(tab)) { - list.add(new ItemStack(this)); - - } - } - */ - @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) - { - tooltip.add(getEdition().copy().withStyle(TextFormatting.GRAY)); - } - - public static ITextComponent getEdition() - { - if (PatchouliCompat.PatchouliIsPresent()) - return PatchouliAPI.get().getSubtitle(ItemsRegistry.GUIDE.getId()); - else - return TextHelper.createTranslatedText(PATCHOULI_NOT_INSTALLED); - } - - @Nonnull - @Override - public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) - { - ItemStack stack = playerIn.getItemInHand(handIn); - - if (playerIn instanceof ServerPlayerEntity) - { - ServerPlayerEntity player = (ServerPlayerEntity) playerIn; - - //UseItemSuccessTrigger.INSTANCE.trigger(player, stack, player.getServerWorld(), player.getPosX(), player.getPosY(), player.getPosZ()); - - PatchouliAPI.get().openBookGUI((ServerPlayerEntity) playerIn, ItemsRegistry.GUIDE.getId()); - } - - return new ActionResult<>(ActionResultType.SUCCESS, stack); - } + public GuideItem() + { + super(PropTypes.Items.ONE.get().rarity(Rarity.RARE)); + } + + public static boolean isOpen() + { + return ItemsRegistry.GUIDE.getId().equals(PatchouliAPI.get().getOpenBookGui()); + } + + + public static Component getTitle(ItemStack stack) + { + Component title = stack.getHoverName(); + + String akashicTomeNBT = "akashictome:displayName"; + if (stack.hasTag() && stack.getTag().contains(akashicTomeNBT)) + { + title = Component.Serializer.fromJson(stack.getTag().getString(akashicTomeNBT)); + } + + return title; + } + + // Random item to expose this as public + public static BlockHitResult doRayTrace(Level world, Player player, ClipContext.Fluid fluidMode) + { + return Item.getPlayerPOVHitResult(world, player, fluidMode); + } + + /* + @Override + public void fillItemGroup(@Nonnull ItemGroup tab, @Nonnull NonNullList list) { + if (isInGroup(tab)) { + list.add(new ItemStack(this)); + + } + } + */ + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + tooltip.add(getEdition().copy().withStyle(ChatFormatting.GRAY)); + } + + public static Component getEdition() + { + if (PatchouliCompat.PatchouliIsPresent()) + { + try + { + return PatchouliAPI.get().getSubtitle(ItemsRegistry.GUIDE.getId()); + } + catch (IllegalArgumentException e) + { + return new TextComponent(""); + } + } + else + { + return TextHelper.createTranslatedText(PATCHOULI_NOT_INSTALLED); + } + } + + @Nonnull + @Override + public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) + { + ItemStack stack = playerIn.getItemInHand(handIn); + + if (playerIn instanceof ServerPlayer) + { + ServerPlayer player = (ServerPlayer) playerIn; + + //UseItemSuccessTrigger.INSTANCE.trigger(player, stack, player.getServerWorld(), player.getPosX(), player.getPosY(), player.getPosZ()); + + PatchouliAPI.get().openBookGUI((ServerPlayer) playerIn, ItemsRegistry.GUIDE.getId()); + } + + return new InteractionResultHolder<>(InteractionResult.SUCCESS, stack); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/items/IContainsMetal.java b/src/main/java/leaf/cosmere/items/IContainsMetal.java index e7efe956e..499f4a739 100644 --- a/src/main/java/leaf/cosmere/items/IContainsMetal.java +++ b/src/main/java/leaf/cosmere/items/IContainsMetal.java @@ -4,12 +4,12 @@ package leaf.cosmere.items; -import net.minecraft.item.ItemStack; +import net.minecraft.world.item.ItemStack; public interface IContainsMetal { - default boolean containsMetal(ItemStack stack) - { - return true; - } + default boolean containsMetal(ItemStack stack) + { + return true; + } } diff --git a/src/main/java/leaf/cosmere/items/IHasColour.java b/src/main/java/leaf/cosmere/items/IHasColour.java index 2caa76033..eff245f4c 100644 --- a/src/main/java/leaf/cosmere/items/IHasColour.java +++ b/src/main/java/leaf/cosmere/items/IHasColour.java @@ -8,6 +8,7 @@ public interface IHasColour { - Color getColour(); - int getColourValue(); + Color getColour(); + + int getColourValue(); } diff --git a/src/main/java/leaf/cosmere/items/IHasMetalType.java b/src/main/java/leaf/cosmere/items/IHasMetalType.java index 5d88c1ca7..431f441f0 100644 --- a/src/main/java/leaf/cosmere/items/IHasMetalType.java +++ b/src/main/java/leaf/cosmere/items/IHasMetalType.java @@ -10,15 +10,15 @@ public interface IHasMetalType extends IHasColour { - Metals.MetalType getMetalType(); + Metals.MetalType getMetalType(); - default Color getColour() - { - return getMetalType().getColor(); - } + default Color getColour() + { + return getMetalType().getColor(); + } - default int getColourValue() - { - return getColour().getRGB(); - } + default int getColourValue() + { + return getColour().getRGB(); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalFileItem.java b/src/main/java/leaf/cosmere/items/MetalFileItem.java index 3ec0eb639..0c6efd732 100644 --- a/src/main/java/leaf/cosmere/items/MetalFileItem.java +++ b/src/main/java/leaf/cosmere/items/MetalFileItem.java @@ -8,9 +8,9 @@ public class MetalFileItem extends BaseItem { - public MetalFileItem() - { - super(PropTypes.Items.ONE.get()); - } + public MetalFileItem() + { + super(PropTypes.Items.ONE.get()); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalIngotItem.java b/src/main/java/leaf/cosmere/items/MetalIngotItem.java index 30e268b95..8b6a0959a 100644 --- a/src/main/java/leaf/cosmere/items/MetalIngotItem.java +++ b/src/main/java/leaf/cosmere/items/MetalIngotItem.java @@ -9,10 +9,10 @@ public class MetalIngotItem extends MetalItem { - public MetalIngotItem(Metals.MetalType metalType) - { - super(metalType); - } + public MetalIngotItem(Metals.MetalType metalType) + { + super(metalType); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalItem.java b/src/main/java/leaf/cosmere/items/MetalItem.java index 2e1ef8072..a3d441390 100644 --- a/src/main/java/leaf/cosmere/items/MetalItem.java +++ b/src/main/java/leaf/cosmere/items/MetalItem.java @@ -7,43 +7,43 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Hand; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import java.awt.*; public class MetalItem extends BaseItem implements IHasMetalType { - private final Metals.MetalType metalType; - - public MetalItem(Metals.MetalType metalType) - { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(metalType.getRarity())); - - this.metalType = metalType; - } - - - @Override - public Color getColour() - { - return metalType.getColor(); - } - - /** - * Returns true if the item can be used on the given entity, e.g. shears on sheep. - */ - public ActionResultType interactLivingEntity(ItemStack stack, PlayerEntity playerIn, LivingEntity target, Hand hand) - { - return ActionResultType.PASS; - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } + private final Metals.MetalType metalType; + + public MetalItem(Metals.MetalType metalType) + { + super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(metalType.getRarity())); + + this.metalType = metalType; + } + + + @Override + public Color getColour() + { + return metalType.getColor(); + } + + /** + * Returns true if the item can be used on the given entity, e.g. shears on sheep. + */ + public InteractionResult interactLivingEntity(ItemStack stack, Player playerIn, LivingEntity target, InteractionHand hand) + { + return InteractionResult.PASS; + } + + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } } diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 905e7fff7..bb384f9c0 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -8,13 +8,13 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.passive.horse.LlamaEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.world.World; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; public class MetalNuggetItem extends MetalItem { @@ -30,7 +30,7 @@ public int getUseDuration(ItemStack stack) return 16; } - public ActionResult use(World worldIn, PlayerEntity playerIn, Hand handIn) + public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { ItemStack itemstack = playerIn.getItemInHand(handIn); playerIn.startUsingItem(handIn); @@ -39,7 +39,7 @@ public ActionResult use(World worldIn, PlayerEntity playerIn, Hand ha consumeNugget(playerIn, getMetalType(), itemstack); - return ActionResult.consume(itemstack); + return InteractionResultHolder.consume(itemstack); } public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) @@ -56,7 +56,7 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met if (metalType == Metals.MetalType.LERASIUM || metalType == Metals.MetalType.LERASATIUM) { //https://www.theoryland.com/intvmain.php?i=977#43 - if (metalType == Metals.MetalType.LERASIUM && livingEntity instanceof LlamaEntity && !livingEntity.hasCustomName()) + if (metalType == Metals.MetalType.LERASIUM && livingEntity instanceof Llama && !livingEntity.hasCustomName()) { //todo translations livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); @@ -83,7 +83,7 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met spiritweb.METALS_INGESTED.put(metalType, metalIngested + metalType.getAllomancyBurnTimeSeconds()); } - if (livingEntity instanceof PlayerEntity && !((PlayerEntity) livingEntity).isCreative()) + if (livingEntity instanceof Player && !((Player) livingEntity).isCreative()) { itemstack.shrink(1); } diff --git a/src/main/java/leaf/cosmere/items/MetalRawOreItem.java b/src/main/java/leaf/cosmere/items/MetalRawOreItem.java index 35c98648d..3553d3dc9 100644 --- a/src/main/java/leaf/cosmere/items/MetalRawOreItem.java +++ b/src/main/java/leaf/cosmere/items/MetalRawOreItem.java @@ -8,9 +8,9 @@ public class MetalRawOreItem extends MetalItem { - public MetalRawOreItem(Metals.MetalType metalType) - { - super(metalType); - } + public MetalRawOreItem(Metals.MetalType metalType) + { + super(metalType); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalShavingsItem.java b/src/main/java/leaf/cosmere/items/MetalShavingsItem.java index 514cc3c5b..b21dd15a4 100644 --- a/src/main/java/leaf/cosmere/items/MetalShavingsItem.java +++ b/src/main/java/leaf/cosmere/items/MetalShavingsItem.java @@ -8,8 +8,8 @@ public class MetalShavingsItem extends MetalItem { - public MetalShavingsItem(Metals.MetalType metalType) - { - super(metalType); - } + public MetalShavingsItem(Metals.MetalType metalType) + { + super(metalType); + } } diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 78543f2e3..aa4295b3b 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -5,22 +5,23 @@ package leaf.cosmere.items; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.charge.IChargeable; import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; -import leaf.cosmere.registry.ItemsRegistry; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.UseAction; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.ActionResult; -import net.minecraft.util.Hand; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.World; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.UseAnim; +import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -36,203 +37,212 @@ public class MetalVialItem extends BaseItem implements IContainsMetal { - final String metals_contained = "metals_contained"; - final String metal_ids = "metalIDs"; - final String metal_amounts = "metalAmounts"; - private final double MAX_METALS_COUNT = 8; - - private CompoundNBT getContainedMetalsTag(ItemStack stack) - { - return stack.getOrCreateTagElement(metals_contained); - } - - @Override - public boolean containsMetal(ItemStack stack) - { - return getContainedMetalsTag(stack).contains(metal_ids); - } - - public boolean isFull(ItemStack stack) - { - return containedMetalCount(stack) >= MAX_METALS_COUNT; - } - - @Nonnull - @Override - public UseAction getUseAnimation(ItemStack stack) - { - return UseAction.DRINK; - } - - @Override - public int getUseDuration(ItemStack stack) - { - //same drink time as normal potions - return 32; - } - - - @Nonnull - @Override - public ActionResult use(World world, PlayerEntity player, @Nonnull Hand hand) - { - ItemStack stack = player.getItemInHand(hand); - if (player.canEat(true) && containedMetalCount(player.getItemInHand(hand)) > 0) - { - player.startUsingItem(hand); - return ActionResult.consume(stack); - } - return ActionResult.pass(stack); - } - - - @Override - public ItemStack finishUsingItem(ItemStack stack, World worldIn, LivingEntity entityLiving) - { - - PlayerEntity playerentity = entityLiving instanceof PlayerEntity ? (PlayerEntity) entityLiving : null; - - if (!worldIn.isClientSide) - { - SpiritwebCapability.get(entityLiving).ifPresent(iSpiritweb -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - - //for each metal in the vial - - Map metalsInVial = getStoredMetalsMap(getContainedMetalsTag(stack)); - - metalsInVial.entrySet().stream().forEach(metalInfo -> - { - // MetalName x Value - Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); - - //reference ConsumeNugget from metalNuggetItem - int secondsPerNugget = metalInfo.getValue() * metalType.getAllomancyBurnTimeSeconds(); - - //add to metal stored - spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + secondsPerNugget); - }); - - iSpiritweb.syncToClients(null); - }); - } - - - if (playerentity == null || !playerentity.abilities.instabuild) - { - if (stack.isEmpty()) - { - return new ItemStack(ItemsRegistry.METAL_VIAL.get()); - } - - if (playerentity != null) - { - if (stack.getCount() > 1) - { - //split 1 off the stack, if more than one - //drain that new stack - ItemStack splitStack = stack.split(1); - emptyMetals(splitStack); - - if (!playerentity.addItem(splitStack) && !playerentity.level.isClientSide) - { - ItemEntity entity = new ItemEntity(playerentity.getCommandSenderWorld(), playerentity.position().x(), playerentity.position().y(), playerentity.position().z(), splitStack); - playerentity.getCommandSenderWorld().addFreshEntity(entity); - } - } - else - { - emptyMetals(stack); - } - } - } - - return stack; - } - - public int containedMetalCount(ItemStack stack) - { - int count = 0; - int[] metalAmounts = CompoundNBTHelper.getIntArray(getContainedMetalsTag(stack), metal_amounts); - - for (int metalCount : metalAmounts) - count += metalCount; - - return count; - } - - public void addMetals(ItemStack stack, int metalID, int count) - { - //todo refactor this? seems so convoluted compared to what I'm used to - - //get and add - CompoundNBT nbt = getContainedMetalsTag(stack); - - Map sorted = getStoredMetalsMap(nbt); - - if (sorted.containsKey(metalID)) - { - count += sorted.get(metalID); - } - - sorted.put(metalID, count); - List keys = new ArrayList<>(sorted.keySet()); - List values = new ArrayList<>(sorted.values()); - - CompoundNBTHelper.setIntArray(nbt, metal_ids, keys); - CompoundNBTHelper.setIntArray(nbt, metal_amounts, values); - } - - private Map getStoredMetalsMap(CompoundNBT nbt) - { - int[] metalIDs = CompoundNBTHelper.getIntArray(nbt, metal_ids); - int[] metalAmounts = CompoundNBTHelper.getIntArray(nbt, metal_amounts); - - Map sorted = IntStream.range(0, metalIDs.length).boxed() - .collect(Collectors.toMap( - i -> metalIDs[i], i -> metalAmounts[i], - (i, j) -> i, LinkedHashMap::new)); - return sorted; - } - - public void emptyMetals(ItemStack stack) - { - CompoundNBT nbt = getContainedMetalsTag(stack); - nbt.remove(metal_ids); - nbt.remove(metal_amounts); - } - - @Override - public boolean showDurabilityBar(ItemStack stack) - { - return true; - } - - @Override - public double getDurabilityForDisplay(ItemStack stack) - { - return MathHelper.clamp01((float) (1 - (containedMetalCount(stack) / MAX_METALS_COUNT))); - } - - - @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) - { - Map sorted = getStoredMetalsMap(getContainedMetalsTag(stack)); - tooltip.add(TextHelper.createTranslatedText(CONTAINED_METALS)); - sorted.entrySet().stream().forEach(metalInfo -> - { - // MetalName x Value - String metalName = Metals.MetalType.valueOf(metalInfo.getKey()).get().getName(); - - String metalTranslation = String.format("item.cosmere.%s_nugget", metalName); - tooltip.add(TextHelper.createTranslatedText(metalTranslation).append(TextHelper.createText(String.format(": x%s", metalInfo.getValue())))); - - }); - - tooltip.add(TextHelper.createText(String.format("%s / %s", containedMetalCount(stack), MAX_METALS_COUNT))); - - } + final String metals_contained = "metals_contained"; + final String metal_ids = "metalIDs"; + final String metal_amounts = "metalAmounts"; + private final int MAX_METALS_COUNT = 8; + + private CompoundTag getContainedMetalsTag(ItemStack stack) + { + return stack.getOrCreateTagElement(metals_contained); + } + + @Override + public boolean containsMetal(ItemStack stack) + { + return getContainedMetalsTag(stack).contains(metal_ids); + } + + public boolean isFull(ItemStack stack) + { + return containedMetalCount(stack) >= MAX_METALS_COUNT; + } + + @Nonnull + @Override + public UseAnim getUseAnimation(ItemStack stack) + { + return UseAnim.DRINK; + } + + @Override + public int getUseDuration(ItemStack stack) + { + //same drink time as normal potions + return 32; + } + + + @Nonnull + @Override + public InteractionResultHolder use(Level world, Player player, @Nonnull InteractionHand hand) + { + ItemStack stack = player.getItemInHand(hand); + if (player.canEat(true) && containedMetalCount(player.getItemInHand(hand)) > 0) + { + player.startUsingItem(hand); + return InteractionResultHolder.consume(stack); + } + return InteractionResultHolder.pass(stack); + } + + + @Override + public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity entityLiving) + { + + Player playerentity = entityLiving instanceof Player ? (Player) entityLiving : null; + + if (!worldIn.isClientSide) + { + SpiritwebCapability.get(entityLiving).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + + //for each metal in the vial + + Map metalsInVial = getStoredMetalsMap(getContainedMetalsTag(stack)); + + metalsInVial.entrySet().stream().forEach(metalInfo -> + { + // MetalName x Value + Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); + + //reference ConsumeNugget from metalNuggetItem + int secondsPerNugget = metalInfo.getValue() * metalType.getAllomancyBurnTimeSeconds(); + + //add to metal stored + spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + secondsPerNugget); + }); + + iSpiritweb.syncToClients(null); + }); + } + + + if (playerentity == null || !playerentity.getAbilities().instabuild) + { + if (stack.isEmpty()) + { + return new ItemStack(ItemsRegistry.METAL_VIAL.get()); + } + + if (playerentity != null) + { + if (stack.getCount() > 1) + { + //split 1 off the stack, if more than one + //drain that new stack + ItemStack splitStack = stack.split(1); + emptyMetals(splitStack); + + if (!playerentity.addItem(splitStack) && !playerentity.level.isClientSide) + { + ItemEntity entity = new ItemEntity(playerentity.getCommandSenderWorld(), playerentity.position().x(), playerentity.position().y(), playerentity.position().z(), splitStack); + playerentity.getCommandSenderWorld().addFreshEntity(entity); + } + } + else + { + emptyMetals(stack); + } + } + } + + return stack; + } + + public int containedMetalCount(ItemStack stack) + { + int count = 0; + int[] metalAmounts = CompoundNBTHelper.getIntArray(getContainedMetalsTag(stack), metal_amounts); + + for (int metalCount : metalAmounts) + count += metalCount; + + return count; + } + + public void addMetals(ItemStack stack, int metalID, int count) + { + //todo refactor this? seems so convoluted compared to what I'm used to + + //get and add + CompoundTag nbt = getContainedMetalsTag(stack); + + Map sorted = getStoredMetalsMap(nbt); + + if (sorted.containsKey(metalID)) + { + count += sorted.get(metalID); + } + + sorted.put(metalID, count); + List keys = new ArrayList<>(sorted.keySet()); + List values = new ArrayList<>(sorted.values()); + + CompoundNBTHelper.setIntArray(nbt, metal_ids, keys); + CompoundNBTHelper.setIntArray(nbt, metal_amounts, values); + } + + private Map getStoredMetalsMap(CompoundTag nbt) + { + int[] metalIDs = CompoundNBTHelper.getIntArray(nbt, metal_ids); + int[] metalAmounts = CompoundNBTHelper.getIntArray(nbt, metal_amounts); + + Map sorted = IntStream.range(0, metalIDs.length).boxed() + .collect(Collectors.toMap( + i -> metalIDs[i], i -> metalAmounts[i], + (i, j) -> i, LinkedHashMap::new)); + return sorted; + } + + public void emptyMetals(ItemStack stack) + { + CompoundTag nbt = getContainedMetalsTag(stack); + nbt.remove(metal_ids); + nbt.remove(metal_amounts); + } + + @Override + public boolean isBarVisible(ItemStack stack) + { + return true; + } + + @Override + public int getBarWidth(ItemStack stack) + { + if (stack.getItem() instanceof IChargeable) + { + IChargeable item = (IChargeable) stack.getItem(); + + int maxCharge = item.getMaxCharge(stack); + int charge = item.getCharge(stack); + + return getBarWidth(containedMetalCount(stack), MAX_METALS_COUNT); + } + + return 13; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + Map sorted = getStoredMetalsMap(getContainedMetalsTag(stack)); + tooltip.add(TextHelper.createTranslatedText(CONTAINED_METALS)); + sorted.entrySet().stream().forEach(metalInfo -> + { + // MetalName x Value + String metalName = Metals.MetalType.valueOf(metalInfo.getKey()).get().getName(); + + String metalTranslation = String.format("item.cosmere.%s_nugget", metalName); + tooltip.add(TextHelper.createTranslatedText(metalTranslation).append(TextHelper.createText(String.format(": x%s", metalInfo.getValue())))); + + }); + + tooltip.add(TextHelper.createText(String.format("%s / %s", containedMetalCount(stack), MAX_METALS_COUNT))); + + } } diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 82bdf9cbe..5a4fd2edd 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -13,87 +13,86 @@ import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; -import java.awt.*; import java.util.UUID; public class MetalmindItem extends ChargeableItemBase implements IHasMetalType, ICurioItem { - private final Metals.MetalType metalType; + private final Metals.MetalType metalType; - public MetalmindItem(Metals.MetalType metalType, ItemGroup group) - { - super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); - this.metalType = metalType; - } + public MetalmindItem(Metals.MetalType metalType, CreativeModeTab group) + { + super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); + this.metalType = metalType; + } - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } - @Override - public boolean showAttributesTooltip(String identifier, ItemStack stack) - { - return false; - } + @Override + public boolean showAttributesTooltip(String identifier, ItemStack stack) + { + return false; + } - /** - * generate new map of attributes for when used as a curio item. - */ - @Override - public Multimap getAttributeModifiers(SlotContext slotContext, UUID uuid, ItemStack stack) - { - Multimap attributeModifiers = LinkedHashMultimap.create(); + /** + * generate new map of attributes for when used as a curio item. + */ + @Override + public Multimap getAttributeModifiers(SlotContext slotContext, UUID uuid, ItemStack stack) + { + Multimap attributeModifiers = LinkedHashMultimap.create(); - Metals.MetalType metalType = getMetalType(); - if (stack.getItem() instanceof IHemalurgicInfo) - { - //add hemalurgic attributes, if any. - ((IHemalurgicInfo) (stack.getItem())).getHemalurgicAttributes(attributeModifiers, stack, metalType); - } + Metals.MetalType metalType = getMetalType(); + if (stack.getItem() instanceof IHemalurgicInfo) + { + //add hemalurgic attributes, if any. + ((IHemalurgicInfo) (stack.getItem())).getHemalurgicAttributes(attributeModifiers, stack, metalType); + } - //todo better nicrosil tracking. - if (metalType == Metals.MetalType.NICROSIL || metalType == Metals.MetalType.HARMONIUM) - { - CompoundNBT nbt = stack.getOrCreateTagElement("StoredInvestiture"); - //for each power the user has access to + //todo better nicrosil tracking. + if (metalType == Metals.MetalType.NICROSIL || metalType == Metals.MetalType.HARMONIUM) + { + CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); + //for each power the user has access to - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) - { - continue; - } + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String manifestationName = manifestation.getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + continue; + } - if (CompoundNBTHelper.getDouble(nbt, manifestationName, 0) > 0) - { - UUID someUUID = UUID.nameUUIDFromBytes((manifestationName + uuid.toString()).getBytes()); - attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), - new AttributeModifier( - someUUID, - manifestationName, - CompoundNBTHelper.getDouble( - nbt, - manifestationName, - 0), - AttributeModifier.Operation.ADDITION)); + if (CompoundNBTHelper.getDouble(nbt, manifestationName, 0) > 0) + { + UUID someUUID = UUID.nameUUIDFromBytes((manifestationName + uuid.toString()).getBytes()); + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + new AttributeModifier( + someUUID, + manifestationName, + CompoundNBTHelper.getDouble( + nbt, + manifestationName, + 0), + AttributeModifier.Operation.ADDITION)); - } - } - } + } + } + } - return attributeModifiers; - } + return attributeModifiers; + } } diff --git a/src/main/java/leaf/cosmere/items/ShardbladeItem.java b/src/main/java/leaf/cosmere/items/ShardbladeItem.java index 0f8097cc1..ab7250274 100644 --- a/src/main/java/leaf/cosmere/items/ShardbladeItem.java +++ b/src/main/java/leaf/cosmere/items/ShardbladeItem.java @@ -4,21 +4,19 @@ package leaf.cosmere.items; -import net.minecraft.item.IItemTier; -import net.minecraft.item.SwordItem; - -import net.minecraft.item.Item.Properties; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tier; public class ShardbladeItem extends SwordItem { - public ShardbladeItem(IItemTier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) - { - super(tier, attackDamageIn, attackSpeedIn, builderIn); - } + public ShardbladeItem(Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) + { + super(tier, attackDamageIn, attackSpeedIn, builderIn); + } - @Override - public boolean isFireResistant() - { - return true; - } + @Override + public boolean isFireResistant() + { + return true; + } } diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java index c77dc174c..70638dd6e 100644 --- a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -4,59 +4,59 @@ package leaf.cosmere.items.curio; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.NonNullList; +import net.minecraft.core.NonNullList; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; import javax.annotation.Nonnull; import java.util.Optional; public class BandsOfMourningItem extends BraceletMetalmindItem { - public BandsOfMourningItem() - { - super(Metals.MetalType.HARMONIUM); - } - - @Override - public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) - { - if (allowdedIn(tab)) - { - ItemStack fullPower = new ItemStack(this); - setCharge(fullPower, getMaxCharge(fullPower)); - - CompoundNBT nbt = fullPower.getOrCreateTagElement("StoredInvestiture"); - //for each power the user has access to - for (int i = 0; i < 16; i++) - { - //even if it's granted from hemalurgy/temporary - //update the nbt. - //this will add/remove powers based on what the user currently has. - //todo, come back to this later when more sleep. bugs me about losing potential stored powers - final Optional metalType = Metals.MetalType.valueOf(i); - if (metalType.isPresent()) - { - nbt.putDouble(metalType.get().getAllomancyRegistryName(), 20); - nbt.putDouble(metalType.get().getFeruchemyRegistryName(), 20); - } - } - - stacks.add(fullPower); - } - } - - @Override - public float getMaxChargeModifier() - { - return 1; - } - @Override - public int getMaxCharge(ItemStack stack) - { - return Integer.MAX_VALUE; - } + public BandsOfMourningItem() + { + super(Metals.MetalType.HARMONIUM); + } + + @Override + public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) + { + if (allowdedIn(tab)) + { + ItemStack fullPower = new ItemStack(this); + setCharge(fullPower, getMaxCharge(fullPower)); + + CompoundTag nbt = fullPower.getOrCreateTagElement("StoredInvestiture"); + //for each power the user has access to + for (int i = 0; i < 16; i++) + { + //even if it's granted from hemalurgy/temporary + //update the nbt. + //this will add/remove powers based on what the user currently has. + //todo, come back to this later when more sleep. bugs me about losing potential stored powers + final Optional metalType = Metals.MetalType.valueOf(i); + if (metalType.isPresent()) + { + nbt.putDouble(metalType.get().getAllomancyRegistryName(), 20); + nbt.putDouble(metalType.get().getFeruchemyRegistryName(), 20); + } + } + + stacks.add(fullPower); + } + } + + @Override + public float getMaxChargeModifier() + { + return 1; + } + + @Override + public int getMaxCharge(ItemStack stack) + { + return Integer.MAX_VALUE; + } } diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java index 5343bb4bc..65b6a03cd 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java @@ -4,100 +4,101 @@ package leaf.cosmere.items.curio; -import com.mojang.blaze3d.matrix.*; -import com.mojang.blaze3d.vertex.*; -import leaf.cosmere.client.renderer.wearables.*; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; -import net.minecraft.client.renderer.*; -import net.minecraft.client.renderer.entity.model.*; -import net.minecraft.client.renderer.texture.*; -import net.minecraft.entity.*; -import net.minecraft.item.*; -import net.minecraft.util.*; -import top.theillusivec4.curios.api.*; -import top.theillusivec4.curios.api.type.capability.*; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotTypePreset; +import top.theillusivec4.curios.api.type.capability.ICurio; import java.awt.*; -import java.util.*; +import java.util.Optional; public class BraceletMetalmindItem extends MetalmindItem { - public BraceletMetalmindItem(Metals.MetalType metalType) - { - super(metalType, CosmereItemGroups.METALMINDS); - } - private static final ResourceLocation METAL_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); - private Object model; + public BraceletMetalmindItem(Metals.MetalType metalType) + { + super(metalType, CosmereItemGroups.METALMINDS); + } - @Override - public float getMaxChargeModifier() - { - return (5f / 9f); - } + private static final ResourceLocation METAL_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); + private Object model; - @Override - public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) - { - return true; - } + @Override + public float getMaxChargeModifier() + { + return (5f / 9f); + } +/* + @Override + public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) + { + return true; + } - @Override - public void render(String identifier, int index, MatrixStack matrixStack, - IRenderTypeBuffer renderTypeBuffer, int light, LivingEntity livingEntity, - float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, - float netHeadYaw, float headPitch, ItemStack stack) - { - //todo check if needed - // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); - // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); + @Override + public void render(String identifier, int index, PoseStack matrixStack, + MultiBufferSource renderTypeBuffer, int light, LivingEntity livingEntity, + float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, + float netHeadYaw, float headPitch, ItemStack stack) + { + //todo check if needed + // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); + // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); - if (!(this.model instanceof BraceletModel)) - { - //todo set bracelet position? - this.model = new BraceletModel<>(); - } + if (!(this.model instanceof BraceletModel)) + { + //todo set bracelet position? + this.model = new BraceletModel<>(); + } - BraceletModel bracelet = (BraceletModel) this.model; + BraceletModel bracelet = (BraceletModel) this.model; - Optional slotTypePreset = SlotTypePreset.findPreset(identifier); - if (!slotTypePreset.isPresent()) - { - return; - } + Optional slotTypePreset = SlotTypePreset.findPreset(identifier); + if (!slotTypePreset.isPresent()) + { + return; + } - bracelet.renderMode = identifier; - bracelet.renderIndex = index; + bracelet.renderMode = identifier; + bracelet.renderIndex = index; - switch (slotTypePreset.get()) - { - case BODY: - case BACK: - case BRACELET: - case HANDS: - case RING: - case BELT: - case CHARM: - case CURIO: - //setup biped model stuff - bracelet.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); - bracelet.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); - //and have it follow body rotations - ICurio.RenderHelper.followBodyRotations(livingEntity, (BipedModel) bracelet); - break; - } + switch (slotTypePreset.get()) + { + case BODY: + case BACK: + case BRACELET: + case HANDS: + case RING: + case BELT: + case CHARM: + case CURIO: + //setup biped model stuff + bracelet.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); + bracelet.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + //and have it follow body rotations + ICurio.RenderHelper.followBodyRotations(livingEntity, (HumanoidModel) bracelet); + break; + } - IVertexBuilder vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, bracelet.renderType(METAL_TEXTURE), false, false); + VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, bracelet.renderType(METAL_TEXTURE), false, false); - Color col = getMetalType().getColor(); - bracelet.renderToBuffer(matrixStack, - vertexBuilder, - light, - OverlayTexture.NO_OVERLAY, - col.getRed() / 255f, - col.getGreen() / 255f, - col.getBlue() / 255f, - 1.0F); - } + Color col = getMetalType().getColor(); + bracelet.renderToBuffer(matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + col.getRed() / 255f, + col.getGreen() / 255f, + col.getBlue() / 255f, + 1.0F); + }*/ } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 1b2b9386c..67a94c402 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -6,38 +6,37 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; -import com.mojang.blaze3d.matrix.MatrixStack; -import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.client.renderer.wearables.SpikeModel; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.entity.model.BipedModel; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.ItemRenderer; import net.minecraft.client.renderer.texture.OverlayTexture; -import net.minecraft.client.util.ITooltipFlag; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.inventory.EquipmentSlotType; -import net.minecraft.item.ItemGroup; -import net.minecraft.item.ItemStack; -import net.minecraft.util.DamageSource; -import net.minecraft.util.NonNullList; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.ITextComponent; -import net.minecraft.world.World; +import net.minecraft.core.NonNullList; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.event.entity.living.LivingDeathEvent; @@ -64,381 +63,381 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class HemalurgicSpikeItem extends MetalmindItem implements IHemalurgicInfo { - private final float attackDamage; - /** - * Modifiers applied when the item is in the mainhand of a user. copied from sword item - */ - private final Multimap attributeModifiers; - - - public static final DamageSource SPIKED = (new DamageSource("spiked")).bypassArmor().bypassMagic(); - - //todo move - private static final ResourceLocation SPIKE_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); - private Object model; - - public HemalurgicSpikeItem(Metals.MetalType metalType) - { - super(metalType, CosmereItemGroups.HEMALURGIC_SPIKES); - - //todo decide on damage - this.attackDamage = 2f + 1f;//tier.getAttackDamage(); - ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); - builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", (double) this.attackDamage, AttributeModifier.Operation.ADDITION)); - builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", (double) -2.4f, AttributeModifier.Operation.ADDITION)); - this.attributeModifiers = builder.build(); - } - - @Override - public boolean canUnequip(String identifier, LivingEntity livingEntity, ItemStack stack) - { - boolean hasBindingCurse = EnchantmentHelper.hasBindingCurse(stack); - boolean isPlayer = livingEntity instanceof PlayerEntity; - - return (!hasBindingCurse || (isPlayer && ((PlayerEntity) livingEntity).isCreative())); - } - - @Override - public float getMaxChargeModifier() - { - return (2f / 9f); - } - - @Override - public void fillItemCategory(@Nonnull ItemGroup tab, @Nonnull NonNullList stacks) - { - super.fillItemCategory(tab, stacks); - if (allowdedIn(tab)) - { - if (getMetalType().hasFeruchemicalEffect()) - { - - //what powers can this metal type contain - - if (this.getMetalType() == Metals.MetalType.IRON) - { - ItemStack filledIronSpike = new ItemStack(this); - //steals physical strength - //don't steal modified values, only base value - //todo decide how much strength is reasonable to steal and how much goes to waste - //currently will try 70% - double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have - - - Invest(filledIronSpike, this.getMetalType(), strengthToAdd, UUID.randomUUID()); - - stacks.add(filledIronSpike); - } - else if (this.getMetalType() == Metals.MetalType.TIN) - { - ItemStack filledIronSpike = new ItemStack(this); - Invest(filledIronSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); - stacks.add(filledIronSpike); - } - - - Collection hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); - if (hemalurgyStealWhitelist != null) - { - for (Metals.MetalType stealType : hemalurgyStealWhitelist) - { - if (!stealType.hasAssociatedManifestation()) - { - continue; - } - try - { - - //then we've found something to steal! - switch (this.getMetalType()) - { - //steals allomantic abilities - case STEEL: - case BRONZE: - case CADMIUM: - case ELECTRUM: - ItemStack allomancySpike = new ItemStack(this); - AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType).get(); - Invest(allomancySpike, allomancyMani,10, UUID.randomUUID()); - stacks.add(allomancySpike); - break; - //steals feruchemical abilities - case PEWTER: - case BRASS: - case BENDALLOY: - case GOLD: - ItemStack feruchemySpike = new ItemStack(this); - AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType).get(); - Invest(feruchemySpike, feruchemyMani,10, UUID.randomUUID()); - stacks.add(feruchemySpike); - break; - } - - - } - catch (Exception e) - { - LogHelper.info(String.format("remove %s from whitelist for %s spikes", stealType.toString(), getMetalType())); - } - } - } - } - - if (this.getMetalType() == Metals.MetalType.LERASIUM) - { - ItemStack bound = new ItemStack(this); - final UUID identity = UUID.randomUUID(); - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - Invest(bound, manifestation,6, identity); - } - - stacks.add(bound); - } - } - } - - //todo hemalurgic decay - //https://wob.coppermind.net/events/332/#e9534 - //https://wob.coppermind.net/events/121/#e5060 - private void addDecay(ItemStack stack) - { - - } - - @Override - public void inventoryTick(ItemStack stack, World worldIn, Entity entityIn, int itemSlot, boolean isSelected) - { - super.inventoryTick(stack, worldIn, entityIn, itemSlot, isSelected); - - //todo //add decay - - //add decay if not equipped - { - // unless its in a jar? - } - } - - @Override - public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) - { - //todo //add decay - - - return false; - } - - - @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, World worldIn, List tooltip, ITooltipFlag flagIn) - { - super.appendHoverText(stack, worldIn, tooltip, flagIn); - - // no extra info if there isn't any - if (getHemalurgicIdentity(stack) == null) - { - return; - } - - - //stolen identities listed? - - //extra investiture powers added - addInvestitureInformation(stack, this, tooltip); - - //etc? - - //don't need to do the attributes, since thats covered by curio - } - - @SubscribeEvent - public static void onEntityDeath(LivingDeathEvent event) - { - if (event.getSource().getEntity() instanceof PlayerEntity) - { - PlayerEntity playerEntity = (PlayerEntity) event.getSource().getEntity(); - SpiritwebCapability.get(playerEntity).ifPresent(iSpiritweb -> - { - ItemStack itemstack = playerEntity.getMainHandItem(); - if (itemstack.getItem() instanceof HemalurgicSpikeItem) - { - //entity was killed by a spike - HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) itemstack.getItem(); - //pass in killed entity for the item to figure out what to do - spikeItem.killedEntity(itemstack, playerEntity, event.getEntityLiving()); - } - - }); - } - } - - public void killedEntity(ItemStack stack, PlayerEntity playerEntity, LivingEntity entityKilled) - { - //https://wob.coppermind.net/events/332/#e9569 - - // do nothing if an identity exists and doesn't match - if (!matchHemalurgicIdentity(stack, entityKilled.getUUID())) - { - return; - } - - // ensure we set the stolen identity - stealFromSpiritweb(stack, getMetalType(), playerEntity, entityKilled); - } - - @Override - public boolean isFoil(@Nonnull ItemStack stack) - { - return super.isFoil(stack) || hemalurgicIdentityExists(stack); - } - - /** - * Gets a map of item attribute modifiers, used by damage when used as melee weapon. - */ - @Override - public Multimap getDefaultAttributeModifiers(EquipmentSlotType equipmentSlot) - { - return equipmentSlot == EquipmentSlotType.MAINHAND ? this.attributeModifiers - : super.getDefaultAttributeModifiers(equipmentSlot); - } - - @Override - public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack stack) - { - //do not allow players to wear two spikes of the same metal empowered by the same killed entity UUID - if (livingEntity instanceof PlayerEntity) - { - PlayerEntity player = (PlayerEntity)livingEntity; - final UUID stackWeWantToEquipUUID = getHemalurgicIdentity(stack); - - if (stackWeWantToEquipUUID != null) - { - Predicate spikePredicate = stackToFind -> - { - final boolean isSpike = stackToFind.getItem() instanceof HemalurgicSpikeItem; - - if (!isSpike) - { - return false; - } - - final HemalurgicSpikeItem hemalurgicSpikeItem = (HemalurgicSpikeItem) stackToFind.getItem(); - final UUID foundSpikeUUID = getHemalurgicIdentity(stackToFind); - return hemalurgicSpikeItem.getMetalType() == getMetalType() - && foundSpikeUUID != null - && foundSpikeUUID.compareTo(stackWeWantToEquipUUID) == 0; - }; - final Optional> curioSpike = CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, player); - return !curioSpike.isPresent(); - } - } - return true; - } - - @Override - public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack) - { - //has to be a conscious decision to stab yourself - return true; - } - - @Override - public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) - { - //todo better logic. - boolean isEquipping = prevStack == null || stack.getItem() != prevStack.getItem(); - - if (isEquipping) - { - //then do hemalurgy spike logic - //hurt the user - //spiritweb attributes are handled in metalmind - final LivingEntity entity = slotContext.getWearer(); - entity.hurt(SPIKED, 4); - } - - } - - @Override - public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) - { - final LivingEntity entity = slotContext.getWearer(); - entity.hurt(SPIKED, 4); - } - - @Override - public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) - { - return true; - } - - @Override - public void render(String identifier, int index, MatrixStack matrixStack, - IRenderTypeBuffer renderTypeBuffer, int light, LivingEntity livingEntity, - float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, - float netHeadYaw, float headPitch, ItemStack stack) - { - //todo check if needed - // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); - // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); - - if (!(this.model instanceof SpikeModel)) - { - //todo set spike position? - this.model = new SpikeModel<>(); - } - - SpikeModel spike = (SpikeModel) this.model; - - Optional slotTypePreset = SlotTypePreset.findPreset(identifier); - if (!slotTypePreset.isPresent()) - { - return; - } - - spike.renderMode = identifier; - spike.renderIndex = index; - - switch (slotTypePreset.get()) - { - - case HEAD: - //then set up the custom/non biped model stuff - //this could have been biped I guess, but was a good reference - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.leftEyeSpike); - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.rightEyeSpike); - break; - case NECKLACE: - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.neckSpike); - break; - case BODY: - case BACK: - case BRACELET: - case HANDS: - case RING: - case BELT: - case CHARM: - case CURIO: - //setup biped model stuff - spike.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); - spike.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); - //and have it follow body rotations - ICurio.RenderHelper.followBodyRotations(livingEntity, (BipedModel) spike); - break; - } - - - IVertexBuilder vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, spike.renderType(SPIKE_TEXTURE), false, false); - - Color col = getMetalType().getColor(); - spike.renderToBuffer(matrixStack, - vertexBuilder, - light, - OverlayTexture.NO_OVERLAY, - col.getRed() / 255f, - col.getGreen() / 255f, - col.getBlue() / 255f, - 1.0F); - } + private final float attackDamage; + /** + * Modifiers applied when the item is in the mainhand of a user. copied from sword item + */ + private final Multimap attributeModifiers; + + + public static final DamageSource SPIKED = (new DamageSource("spiked")).bypassArmor().bypassMagic(); + + //todo move + private static final ResourceLocation SPIKE_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); + private Object model; + + public HemalurgicSpikeItem(Metals.MetalType metalType) + { + super(metalType, CosmereItemGroups.HEMALURGIC_SPIKES); + + //todo decide on damage + this.attackDamage = 2f + 1f;//tier.getAttackDamage(); + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", this.attackDamage, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", -2.4f, AttributeModifier.Operation.ADDITION)); + this.attributeModifiers = builder.build(); + } + + @Override + public boolean canUnequip(String identifier, LivingEntity livingEntity, ItemStack stack) + { + boolean hasBindingCurse = EnchantmentHelper.hasBindingCurse(stack); + boolean isPlayer = livingEntity instanceof Player; + + return (!hasBindingCurse || (isPlayer && ((Player) livingEntity).isCreative())); + } + + @Override + public float getMaxChargeModifier() + { + return (2f / 9f); + } + + @Override + public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) + { + super.fillItemCategory(tab, stacks); + if (allowdedIn(tab)) + { + if (getMetalType().hasFeruchemicalEffect()) + { + + //what powers can this metal type contain + + if (this.getMetalType() == Metals.MetalType.IRON) + { + ItemStack filledIronSpike = new ItemStack(this); + //steals physical strength + //don't steal modified values, only base value + //todo decide how much strength is reasonable to steal and how much goes to waste + //currently will try 70% + double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have + + + Invest(filledIronSpike, this.getMetalType(), strengthToAdd, UUID.randomUUID()); + + stacks.add(filledIronSpike); + } + else if (this.getMetalType() == Metals.MetalType.TIN) + { + ItemStack filledIronSpike = new ItemStack(this); + Invest(filledIronSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); + stacks.add(filledIronSpike); + } + + + Collection hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + for (Metals.MetalType stealType : hemalurgyStealWhitelist) + { + if (!stealType.hasAssociatedManifestation()) + { + continue; + } + try + { + + //then we've found something to steal! + switch (this.getMetalType()) + { + //steals allomantic abilities + case STEEL: + case BRONZE: + case CADMIUM: + case ELECTRUM: + ItemStack allomancySpike = new ItemStack(this); + AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType).get(); + Invest(allomancySpike, allomancyMani, 10, UUID.randomUUID()); + stacks.add(allomancySpike); + break; + //steals feruchemical abilities + case PEWTER: + case BRASS: + case BENDALLOY: + case GOLD: + ItemStack feruchemySpike = new ItemStack(this); + AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType).get(); + Invest(feruchemySpike, feruchemyMani, 10, UUID.randomUUID()); + stacks.add(feruchemySpike); + break; + } + + + } + catch (Exception e) + { + LogHelper.info(String.format("remove %s from whitelist for %s spikes", stealType.toString(), getMetalType())); + } + } + } + } + + if (this.getMetalType() == Metals.MetalType.LERASIUM) + { + ItemStack bound = new ItemStack(this); + final UUID identity = UUID.randomUUID(); + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + Invest(bound, manifestation, 6, identity); + } + + stacks.add(bound); + } + } + } + + //todo hemalurgic decay + //https://wob.coppermind.net/events/332/#e9534 + //https://wob.coppermind.net/events/121/#e5060 + private void addDecay(ItemStack stack) + { + + } + + @Override + public void inventoryTick(ItemStack stack, Level worldIn, Entity entityIn, int itemSlot, boolean isSelected) + { + super.inventoryTick(stack, worldIn, entityIn, itemSlot, isSelected); + + //todo //add decay + + //add decay if not equipped + { + // unless its in a jar? + } + } + + @Override + public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entity) + { + //todo //add decay + + + return false; + } + + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + super.appendHoverText(stack, worldIn, tooltip, flagIn); + + // no extra info if there isn't any + if (getHemalurgicIdentity(stack) == null) + { + return; + } + + + //stolen identities listed? + + //extra investiture powers added + addInvestitureInformation(stack, this, tooltip); + + //etc? + + //don't need to do the attributes, since thats covered by curio + } + + @SubscribeEvent + public static void onEntityDeath(LivingDeathEvent event) + { + if (event.getSource().getEntity() instanceof Player) + { + Player playerEntity = (Player) event.getSource().getEntity(); + SpiritwebCapability.get(playerEntity).ifPresent(iSpiritweb -> + { + ItemStack itemstack = playerEntity.getMainHandItem(); + if (itemstack.getItem() instanceof HemalurgicSpikeItem) + { + //entity was killed by a spike + HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) itemstack.getItem(); + //pass in killed entity for the item to figure out what to do + spikeItem.killedEntity(itemstack, playerEntity, event.getEntityLiving()); + } + + }); + } + } + + public void killedEntity(ItemStack stack, Player playerEntity, LivingEntity entityKilled) + { + //https://wob.coppermind.net/events/332/#e9569 + + // do nothing if an identity exists and doesn't match + if (!matchHemalurgicIdentity(stack, entityKilled.getUUID())) + { + return; + } + + // ensure we set the stolen identity + stealFromSpiritweb(stack, getMetalType(), playerEntity, entityKilled); + } + + @Override + public boolean isFoil(@Nonnull ItemStack stack) + { + return super.isFoil(stack) || hemalurgicIdentityExists(stack); + } + + /** + * Gets a map of item attribute modifiers, used by damage when used as melee weapon. + */ + @Override + public Multimap getDefaultAttributeModifiers(EquipmentSlot equipmentSlot) + { + return equipmentSlot == EquipmentSlot.MAINHAND ? this.attributeModifiers + : super.getDefaultAttributeModifiers(equipmentSlot); + } + + @Override + public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack stack) + { + //do not allow players to wear two spikes of the same metal empowered by the same killed entity UUID + if (livingEntity instanceof Player) + { + Player player = (Player) livingEntity; + final UUID stackWeWantToEquipUUID = getHemalurgicIdentity(stack); + + if (stackWeWantToEquipUUID != null) + { + Predicate spikePredicate = stackToFind -> + { + final boolean isSpike = stackToFind.getItem() instanceof HemalurgicSpikeItem; + + if (!isSpike) + { + return false; + } + + final HemalurgicSpikeItem hemalurgicSpikeItem = (HemalurgicSpikeItem) stackToFind.getItem(); + final UUID foundSpikeUUID = getHemalurgicIdentity(stackToFind); + return hemalurgicSpikeItem.getMetalType() == getMetalType() + && foundSpikeUUID != null + && foundSpikeUUID.compareTo(stackWeWantToEquipUUID) == 0; + }; + final Optional> curioSpike = CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, player); + return !curioSpike.isPresent(); + } + } + return true; + } + + @Override + public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack) + { + //has to be a conscious decision to stab yourself + return true; + } + + @Override + public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) + { + //todo better logic. + boolean isEquipping = prevStack == null || stack.getItem() != prevStack.getItem(); + + if (isEquipping) + { + //then do hemalurgy spike logic + //hurt the user + //spiritweb attributes are handled in metalmind + final LivingEntity entity = slotContext.getWearer(); + entity.hurt(SPIKED, 4); + } + + } + + @Override + public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) + { + final LivingEntity entity = slotContext.getWearer(); + entity.hurt(SPIKED, 4); + } + + /*@Override + public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) + { + return true; + } + + @Override + public void render(String identifier, int index, PoseStack matrixStack, + MultiBufferSource renderTypeBuffer, int light, LivingEntity livingEntity, + float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, + float netHeadYaw, float headPitch, ItemStack stack) + { + //todo check if needed + // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); + // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); + + if (!(this.model instanceof SpikeModel)) + { + //todo set spike position? + this.model = new SpikeModel<>(); + } + + SpikeModel spike = (SpikeModel) this.model; + + Optional slotTypePreset = SlotTypePreset.findPreset(identifier); + if (!slotTypePreset.isPresent()) + { + return; + } + + spike.renderMode = identifier; + spike.renderIndex = index; + + switch (slotTypePreset.get()) + { + + case HEAD: + //then set up the custom/non biped model stuff + //this could have been biped I guess, but was a good reference + ICurio.RenderHelper.followHeadRotations(livingEntity, spike.leftEyeSpike); + ICurio.RenderHelper.followHeadRotations(livingEntity, spike.rightEyeSpike); + break; + case NECKLACE: + ICurio.RenderHelper.followHeadRotations(livingEntity, spike.neckSpike); + break; + case BODY: + case BACK: + case BRACELET: + case HANDS: + case RING: + case BELT: + case CHARM: + case CURIO: + //setup biped model stuff + spike.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); + spike.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + //and have it follow body rotations + ICurio.RenderHelper.followBodyRotations(livingEntity, (HumanoidModel) spike); + break; + } + + + VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, spike.renderType(SPIKE_TEXTURE), false, false); + + Color col = getMetalType().getColor(); + spike.renderToBuffer(matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + col.getRed() / 255f, + col.getGreen() / 255f, + col.getBlue() / 255f, + 1.0F); + }*/ } diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index f47bb03b1..55aaa5611 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -15,251 +15,251 @@ import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.StackNBTHelper; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.AttributeModifier; -import net.minecraft.entity.ai.attributes.Attributes; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.util.text.ITextComponent; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.registries.IForgeRegistry; +import net.minecraftforge.registries.RegistryObject; import java.util.*; public interface IHemalurgicInfo { - String stolen_identity_tag = "stolen_identity_tag"; - List whiteList = new ArrayList(4); - - default boolean matchHemalurgicIdentity(ItemStack stack, UUID uniqueID) - { - if (!hemalurgicIdentityExists(stack)) - { - return true; - } - - return StackNBTHelper.getUuid(stack, stolen_identity_tag).compareTo(uniqueID) == 0; - } - - default boolean hemalurgicIdentityExists(ItemStack stack) - { - return StackNBTHelper.verifyExistance(stack, stolen_identity_tag); - } - - default void setHemalurgicIdentity(ItemStack stack, UUID uniqueID) - { - StackNBTHelper.setUuid(stack, stolen_identity_tag, uniqueID); - - } - - default UUID getHemalurgicIdentity(ItemStack stack) - { - return StackNBTHelper.getUuid(stack, stolen_identity_tag); - } - - default CompoundNBT getHemalurgicInfo(ItemStack stack) - { - return stack.getOrCreateTagElement("hemalurgy"); - } - - default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, PlayerEntity playerEntity, LivingEntity entityKilled) - { - //todo - //we should probably check a config to see if pvp real stealing of attributes is wanted. - boolean isPlayerEntity = (entityKilled instanceof PlayerEntity); - - - //Steals non-manifestation based abilities. traits inherent to an entity? - switch (spikeMetalType) - { - case IRON: - case TIN: - case COPPER: - case ZINC: - case ALUMINUM: - case DURALUMIN: - case CHROMIUM: - case NICROSIL: - - //Non-Manifestation based hemalurgy all comes here - //How much is already stored? (like koloss spikes could keep storing strength on the same spike) - final double strengthCurrent = getHemalurgicStrength(stack,spikeMetalType); - //how much should we add. - final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); - final double strengthToAdd = strengthCurrent + entityAbilityStrength; - if (strengthToAdd > 0.01 || strengthToAdd < -0.01) - { - Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); - } - return; - } - - List manifestationsFound = new ArrayList<>(); - SpiritwebCapability.get(entityKilled).ifPresent(entityKilledSpiritWeb -> - { - //only grab innate manifestations, not ones added by hemalurgy - manifestationsFound.addAll(entityKilledSpiritWeb.getAvailableManifestations(true)); - - - if (manifestationsFound.size() > 0) - { - whiteList.clear(); - - //The type of thing you can steal is dependant on the type of metal. - Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); - if (hemalurgyStealWhitelist != null) - { - whiteList.addAll(hemalurgyStealWhitelist); - } - - switch (spikeMetalType) - { - //steals allomantic abilities - case STEEL: - case BRONZE: - case CADMIUM: - case ELECTRUM: - { - AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); - if (manifestation != null) - { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); - return; - } - - } - break; - //steals feruchemical abilities - case PEWTER: - case BRASS: - case BENDALLOY: - case GOLD: - { - AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); - if (manifestation != null) - { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); - return; - } - } - break; - //The god metals don't follow the 'normal' rules. - //Todo decide if they can steal powers from other investiture types or just scadrial related - case ATIUM: - { - //Steals any one power - //todo decide if we just pick a random power - //then try steal it - //todo decide if prefer allomancy over feruchemy? - AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); - if (manifestation == null) - { - manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); - } - - if (manifestation != null) - { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); - return; - } - } - break; - case LERASIUM: - { - for (AManifestation manifestation : manifestationsFound) - { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); - } - } - break; - } - } - }); - - } - - default AManifestation getRandomMetalPowerFromList( - List manifestationsFound, - List whiteList, - Manifestations.ManifestationTypes powerType) - { - Collections.shuffle(whiteList); - - //then check the entity has those types to steal - for (Metals.MetalType typeToTrySteal : whiteList) - { - int i = manifestationsFound.indexOf(powerType.getManifestation(typeToTrySteal.getID())); - //if it exists in the list - if (i >= 0) - { - //then we've found something to steal! - return manifestationsFound.get(i); - } - } - - return null; - } - - default Multimap getHemalurgicAttributes(Multimap attributeModifiers, ItemStack stack, Metals.MetalType metalType) - { - UUID hemalurgicIdentity = getHemalurgicIdentity(stack); - - if (metalType == Metals.MetalType.ALUMINUM) - { - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) - { - continue; - } - - attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), - new AttributeModifier( - Constants.NBT.ALUMINUM_UUID, - manifestation.translation().getKey(), - -100, - AttributeModifier.Operation.ADDITION)); - } - return attributeModifiers; - } - else if (hemalurgicIdentity == null) - { - return attributeModifiers; - } - - final double strength = getHemalurgicStrength(stack, metalType); - - Attribute attribute = null; - AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; - - switch (metalType) - { - case IRON: - attribute = Attributes.ATTACK_DAMAGE; - break; - case CHROMIUM: - attribute = Attributes.LUCK; - break; - default: - //TIN: - //Steals senses - //a type of night vision - - //Copper: - //Steals mental fortitude, memory, and intelligence - - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) - { - attribute = attributeRegistryObject.get(); - } - break; + String stolen_identity_tag = "stolen_identity_tag"; + List whiteList = new ArrayList(4); + + default boolean matchHemalurgicIdentity(ItemStack stack, UUID uniqueID) + { + if (!hemalurgicIdentityExists(stack)) + { + return true; + } + + return StackNBTHelper.getUuid(stack, stolen_identity_tag).compareTo(uniqueID) == 0; + } + + default boolean hemalurgicIdentityExists(ItemStack stack) + { + return StackNBTHelper.verifyExistance(stack, stolen_identity_tag); + } + + default void setHemalurgicIdentity(ItemStack stack, UUID uniqueID) + { + StackNBTHelper.setUuid(stack, stolen_identity_tag, uniqueID); + + } + + default UUID getHemalurgicIdentity(ItemStack stack) + { + return StackNBTHelper.getUuid(stack, stolen_identity_tag); + } + + default CompoundTag getHemalurgicInfo(ItemStack stack) + { + return stack.getOrCreateTagElement("hemalurgy"); + } + + default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType, Player playerEntity, LivingEntity entityKilled) + { + //todo + //we should probably check a config to see if pvp real stealing of attributes is wanted. + boolean isPlayerEntity = (entityKilled instanceof Player); + + + //Steals non-manifestation based abilities. traits inherent to an entity? + switch (spikeMetalType) + { + case IRON: + case TIN: + case COPPER: + case ZINC: + case ALUMINUM: + case DURALUMIN: + case CHROMIUM: + case NICROSIL: + + //Non-Manifestation based hemalurgy all comes here + //How much is already stored? (like koloss spikes could keep storing strength on the same spike) + final double strengthCurrent = getHemalurgicStrength(stack, spikeMetalType); + //how much should we add. + final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); + final double strengthToAdd = strengthCurrent + entityAbilityStrength; + if (strengthToAdd > 0.01 || strengthToAdd < -0.01) + { + Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); + } + return; + } + + List manifestationsFound = new ArrayList<>(); + SpiritwebCapability.get(entityKilled).ifPresent(entityKilledSpiritWeb -> + { + //only grab innate manifestations, not ones added by hemalurgy + manifestationsFound.addAll(entityKilledSpiritWeb.getAvailableManifestations(true)); + + + if (manifestationsFound.size() > 0) + { + whiteList.clear(); + + //The type of thing you can steal is dependant on the type of metal. + Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + whiteList.addAll(hemalurgyStealWhitelist); + } + + switch (spikeMetalType) + { + //steals allomantic abilities + case STEEL: + case BRONZE: + case CADMIUM: + case ELECTRUM: + { + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } + + } + break; + //steals feruchemical abilities + case PEWTER: + case BRASS: + case BENDALLOY: + case GOLD: + { + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } + } + break; + //The god metals don't follow the 'normal' rules. + //Todo decide if they can steal powers from other investiture types or just scadrial related + case ATIUM: + { + //Steals any one power + //todo decide if we just pick a random power + //then try steal it + //todo decide if prefer allomancy over feruchemy? + AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); + if (manifestation == null) + { + manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + } + + if (manifestation != null) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + return; + } + } + break; + case LERASIUM: + { + for (AManifestation manifestation : manifestationsFound) + { + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); + } + } + break; + } + } + }); + + } + + default AManifestation getRandomMetalPowerFromList( + List manifestationsFound, + List whiteList, + Manifestations.ManifestationTypes powerType) + { + Collections.shuffle(whiteList); + + //then check the entity has those types to steal + for (Metals.MetalType typeToTrySteal : whiteList) + { + int i = manifestationsFound.indexOf(powerType.getManifestation(typeToTrySteal.getID())); + //if it exists in the list + if (i >= 0) + { + //then we've found something to steal! + return manifestationsFound.get(i); + } + } + + return null; + } + + default Multimap getHemalurgicAttributes(Multimap attributeModifiers, ItemStack stack, Metals.MetalType metalType) + { + UUID hemalurgicIdentity = getHemalurgicIdentity(stack); + + if (metalType == Metals.MetalType.ALUMINUM) + { + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String path = manifestation.getName(); + + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + { + continue; + } + + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), + new AttributeModifier( + Constants.NBT.ALUMINUM_UUID, + manifestation.translation().getKey(), + -100, + AttributeModifier.Operation.ADDITION)); + } + return attributeModifiers; + } + else if (hemalurgicIdentity == null) + { + return attributeModifiers; + } + + final double strength = getHemalurgicStrength(stack, metalType); + + Attribute attribute = null; + AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; + + switch (metalType) + { + case IRON: + attribute = Attributes.ATTACK_DAMAGE; + break; + case CHROMIUM: + attribute = Attributes.LUCK; + break; + default: + //TIN: + //Steals senses + //a type of night vision + + //Copper: + //Steals mental fortitude, memory, and intelligence + + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) + { + attribute = attributeRegistryObject.get(); + } + break; /* case ZINC: //Steals emotional fortitude @@ -269,141 +269,141 @@ else if (hemalurgicIdentity == null) //Steals Investiture //todo figure out what that means break;*/ - } - - if (attribute != null) - { - attributeModifiers.put( - attribute, - new AttributeModifier( - hemalurgicIdentity, - "Hemalurgic " + metalType.getName(), - strength, - attributeModifier)); - } - - - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - String path = manifestation.getName(); - - final double hemalurgicStrength = getHemalurgicStrength(stack, manifestation); - if (hemalurgicStrength > 0) - { - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) - { - continue; - } - - attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), - new AttributeModifier( - hemalurgicIdentity, - String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), - hemalurgicStrength, - AttributeModifier.Operation.ADDITION)); - } - } - - - return attributeModifiers; - } - - default double getHemalurgicStrength(ItemStack stack, Metals.MetalType metalType) - { - return getHemalurgicStrength(stack, metalType.getName()); - } - - default double getHemalurgicStrength(ItemStack stack, AManifestation manifestation) - { - return getHemalurgicStrength(stack, "power_" + manifestation.getName()); - } - - default double getHemalurgicStrength(ItemStack stack, String name) - { - return CompoundNBTHelper.getDouble( - getHemalurgicInfo(stack), - name, - 0); - } - - default void setHemalurgicStrength(ItemStack stack, Metals.MetalType metalType, double val) - { - setHemalurgicStrength(stack, metalType.getName(),val); - } - - default void setHemalurgicStrength(ItemStack stack, AManifestation manifestation, double val) - { - setHemalurgicStrength(stack,"power_" + manifestation.getName(),val); - } - - default void setHemalurgicStrength(ItemStack stack, String name, double val) - { - CompoundNBTHelper.setDouble(getHemalurgicInfo(stack), name, val); - } - - - default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hemalurgicSpikeItem, List tooltip) - { - if (!hemalurgicIdentityExists(stack)) - { - return; - } - - tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); - - if (hasHemalurgicPower(stack, hemalurgicSpikeItem.getMetalType())) - { - tooltip.add(TextHelper.createTranslatedText("tooltip.hemalurgy." + hemalurgicSpikeItem.getMetalType())); - - if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) - { - double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); - String s = "+" + hemalurgicStrength + " Attack Damage"; - tooltip.add(TextHelper.createText(s)); - } - } - - IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); - for (AManifestation manifestation : manifestations) - { - // if this spike has that power - if (hasHemalurgicPower(stack, manifestation)) - { - //then grant it - tooltip.add(manifestation.translation()); - } - } - } - - default boolean hasHemalurgicPower(ItemStack stack, AManifestation manifestation) - { - return getHemalurgicStrength(stack,manifestation) > 0; - } - - default boolean hasHemalurgicPower(ItemStack stack, Metals.MetalType metalType) - { - final double hemalurgicStrength = getHemalurgicStrength(stack, metalType); - final double marginOfError = 0.01; - return hemalurgicStrength > marginOfError || hemalurgicStrength < -marginOfError; - } - - default void Invest(ItemStack stack, AManifestation manifestation, double level, UUID identity) - { - setHemalurgicStrength(stack, manifestation, level); - setHemalurgicIdentity(stack, identity); - } - - default void Invest(ItemStack stack, Metals.MetalType metalType, double level, UUID identity) - { - setHemalurgicStrength(stack, metalType, level); - setHemalurgicIdentity(stack, identity); - } - - default void Divest(ItemStack stack) - { - StackNBTHelper.removeEntry(stack, "hemalurgy"); - StackNBTHelper.removeEntry(stack, stolen_identity_tag); - } + } + + if (attribute != null) + { + attributeModifiers.put( + attribute, + new AttributeModifier( + hemalurgicIdentity, + "Hemalurgic " + metalType.getName(), + strength, + attributeModifier)); + } + + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String path = manifestation.getName(); + + final double hemalurgicStrength = getHemalurgicStrength(stack, manifestation); + if (hemalurgicStrength > 0) + { + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + { + continue; + } + + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), + new AttributeModifier( + hemalurgicIdentity, + String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), + hemalurgicStrength, + AttributeModifier.Operation.ADDITION)); + } + } + + + return attributeModifiers; + } + + default double getHemalurgicStrength(ItemStack stack, Metals.MetalType metalType) + { + return getHemalurgicStrength(stack, metalType.getName()); + } + + default double getHemalurgicStrength(ItemStack stack, AManifestation manifestation) + { + return getHemalurgicStrength(stack, "power_" + manifestation.getName()); + } + + default double getHemalurgicStrength(ItemStack stack, String name) + { + return CompoundNBTHelper.getDouble( + getHemalurgicInfo(stack), + name, + 0); + } + + default void setHemalurgicStrength(ItemStack stack, Metals.MetalType metalType, double val) + { + setHemalurgicStrength(stack, metalType.getName(), val); + } + + default void setHemalurgicStrength(ItemStack stack, AManifestation manifestation, double val) + { + setHemalurgicStrength(stack, "power_" + manifestation.getName(), val); + } + + default void setHemalurgicStrength(ItemStack stack, String name, double val) + { + CompoundNBTHelper.setDouble(getHemalurgicInfo(stack), name, val); + } + + + default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hemalurgicSpikeItem, List tooltip) + { + if (!hemalurgicIdentityExists(stack)) + { + return; + } + + tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); + + if (hasHemalurgicPower(stack, hemalurgicSpikeItem.getMetalType())) + { + tooltip.add(TextHelper.createTranslatedText("tooltip.hemalurgy." + hemalurgicSpikeItem.getMetalType())); + + if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) + { + double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); + String s = "+" + hemalurgicStrength + " Attack Damage"; + tooltip.add(TextHelper.createText(s)); + } + } + + IForgeRegistry manifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); + for (AManifestation manifestation : manifestations) + { + // if this spike has that power + if (hasHemalurgicPower(stack, manifestation)) + { + //then grant it + tooltip.add(manifestation.translation()); + } + } + } + + default boolean hasHemalurgicPower(ItemStack stack, AManifestation manifestation) + { + return getHemalurgicStrength(stack, manifestation) > 0; + } + + default boolean hasHemalurgicPower(ItemStack stack, Metals.MetalType metalType) + { + final double hemalurgicStrength = getHemalurgicStrength(stack, metalType); + final double marginOfError = 0.01; + return hemalurgicStrength > marginOfError || hemalurgicStrength < -marginOfError; + } + + default void Invest(ItemStack stack, AManifestation manifestation, double level, UUID identity) + { + setHemalurgicStrength(stack, manifestation, level); + setHemalurgicIdentity(stack, identity); + } + + default void Invest(ItemStack stack, Metals.MetalType metalType, double level, UUID identity) + { + setHemalurgicStrength(stack, metalType, level); + setHemalurgicIdentity(stack, identity); + } + + default void Divest(ItemStack stack) + { + StackNBTHelper.removeEntry(stack, "hemalurgy"); + StackNBTHelper.removeEntry(stack, stolen_identity_tag); + } } diff --git a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java index 203c83ffa..5209a20fd 100644 --- a/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/curio/NecklaceMetalmindItem.java @@ -10,14 +10,14 @@ public class NecklaceMetalmindItem extends MetalmindItem { - public NecklaceMetalmindItem(Metals.MetalType metalType) - { - super(metalType, CosmereItemGroups.METALMINDS); - } + public NecklaceMetalmindItem(Metals.MetalType metalType) + { + super(metalType, CosmereItemGroups.METALMINDS); + } - @Override - public float getMaxChargeModifier() - { - return (6f / 9f); - } + @Override + public float getMaxChargeModifier() + { + return (6f / 9f); + } } diff --git a/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java b/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java index a48793662..7032a6d1a 100644 --- a/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/curio/RingMetalmindItem.java @@ -10,14 +10,14 @@ public class RingMetalmindItem extends MetalmindItem { - public RingMetalmindItem(Metals.MetalType metalType) - { - super(metalType, CosmereItemGroups.METALMINDS); - } + public RingMetalmindItem(Metals.MetalType metalType) + { + super(metalType, CosmereItemGroups.METALMINDS); + } - @Override - public float getMaxChargeModifier() - { - return (4f / 9f); - } + @Override + public float getMaxChargeModifier() + { + return (4f / 9f); + } } diff --git a/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java index e3131bec0..1edeb504c 100644 --- a/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java +++ b/src/main/java/leaf/cosmere/items/gems/IHasPolestoneType.java @@ -11,15 +11,15 @@ public interface IHasPolestoneType extends IHasColour { - Roshar.Polestone getPolestoneType(); + Roshar.Polestone getPolestoneType(); - default Color getColour() - { - return getPolestoneType().getColor(); - } + default Color getColour() + { + return getPolestoneType().getColor(); + } - default int getColourValue() - { - return getColour().getRGB(); - } + default int getColourValue() + { + return getColour().getRGB(); + } } diff --git a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java index 3a110100f..235c5b06c 100644 --- a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java +++ b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java @@ -10,12 +10,12 @@ import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.ChargeableItemBase; import leaf.cosmere.properties.PropTypes; -import net.minecraft.entity.Entity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Rarity; -import net.minecraft.util.math.MathHelper; -import net.minecraft.world.World; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.level.Level; public class PolestoneItem extends ChargeableItemBase implements IHasPolestoneType { @@ -32,7 +32,7 @@ public PolestoneItem(Roshar.Polestone polestone, Roshar.GemSize gemSize) @Override public int getMaxCharge(ItemStack itemStack) { - return MathHelper.floor(10000 * getMaxChargeModifier()); + return Mth.floor(10000 * getMaxChargeModifier()); } @Override @@ -53,7 +53,7 @@ public Roshar.GemSize getSize() } @Override - public int getEntityLifespan(ItemStack itemStack, World world) + public int getEntityLifespan(ItemStack itemStack, Level world) { return Integer.MAX_VALUE; } @@ -69,11 +69,11 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) this.increaseCurrentCharge(stack, 5); } } - return super.onEntityItemUpdate(stack,entityItem); + return super.onEntityItemUpdate(stack, entityItem); } @Override - public void inventoryTick(ItemStack pStack, World pLevel, Entity pEntity, int pItemSlot, boolean pIsSelected) + public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pItemSlot, boolean pIsSelected) { if (pLevel.isRainingAt(pEntity.blockPosition()) && pLevel.isThundering()) { diff --git a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java index 990b77345..45d44a780 100644 --- a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java @@ -6,23 +6,23 @@ import com.google.gson.JsonObject; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.block.BlockState; -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -import net.minecraft.enchantment.Enchantments; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootParameterSets; -import net.minecraft.loot.LootParameters; -import net.minecraft.loot.LootTable; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.potion.EffectInstance; -import net.minecraft.util.ResourceLocation; +import leaf.cosmere.utils.helpers.LogHelper; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.enchantment.Enchantment; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; +import net.minecraft.world.level.storage.loot.parameters.LootContextParams; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.common.loot.LootModifier; @@ -36,85 +36,85 @@ public class FortuneBonusModifier extends LootModifier { - protected FortuneBonusModifier(ILootCondition[] conditions) - { - super(conditions); - } - - @Nonnull - protected List doApply(List generatedLoot, LootContext context) - { - final String hasCosmereFortuneBonus = "HasCosmereFortuneBonus"; - - ItemStack tool = context.getParamOrNull(LootParameters.TOOL); - - if (tool != null && (!tool.hasTag() || tool.getTag() == null || !tool.getTag().getBoolean(hasCosmereFortuneBonus))) - { - Entity entity = context.getParamOrNull(LootParameters.THIS_ENTITY); - BlockState blockState = context.getParamOrNull(LootParameters.BLOCK_STATE); - - if (blockState != null && entity instanceof LivingEntity) - { - LivingEntity player = (LivingEntity) entity; - - EffectInstance storingLuckEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); - EffectInstance tappingLuckEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); - - //bonus for tapping amplifier. - int totalFortuneBonus = 0; - if (tappingLuckEffect != null) - { - totalFortuneBonus = tappingLuckEffect.getAmplifier() + 1; - } - - //minus off the unlucky effect amplifier - - if (storingLuckEffect != null) - { - totalFortuneBonus -= (storingLuckEffect.getAmplifier() + 1); - } - - if (totalFortuneBonus != 0) - { - ItemStack fakeTool = tool.isEmpty() ? new ItemStack(Items.BARRIER) : tool.copy(); - - fakeTool.getOrCreateTag().putBoolean(hasCosmereFortuneBonus, true); - - Map enchantments = EnchantmentHelper.getEnchantments(fakeTool); - enchantments.put(Enchantments.BLOCK_FORTUNE, EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, fakeTool) + totalFortuneBonus); - - EnchantmentHelper.setEnchantments(enchantments, fakeTool); - - LootContext.Builder builder = new LootContext.Builder(context); - builder.withParameter(LootParameters.TOOL, fakeTool); - - LootContext newContext = builder.create(LootParameterSets.BLOCK); - LootTable lootTable = context.getLevel().getServer().getLootTables().get(blockState.getBlock().getLootTable()); - - return lootTable.getRandomItems(newContext); - } - } - } - - //otherwise return the context that was passed in. no modification needed. - return generatedLoot; - } - - public static class Serializer extends GlobalLootModifierSerializer - { - public Serializer() - { - LogHelper.info("Fortune bonus modifier setting up"); - } - - public FortuneBonusModifier read(ResourceLocation location, JsonObject object, ILootCondition[] conditions) - { - return new FortuneBonusModifier(conditions); - } - - public JsonObject write(FortuneBonusModifier instance) - { - return this.makeConditions(instance.conditions); - } - } + protected FortuneBonusModifier(LootItemCondition[] conditions) + { + super(conditions); + } + + @Nonnull + protected List doApply(List generatedLoot, LootContext context) + { + final String hasCosmereFortuneBonus = "HasCosmereFortuneBonus"; + + ItemStack tool = context.getParamOrNull(LootContextParams.TOOL); + + if (tool != null && (!tool.hasTag() || tool.getTag() == null || !tool.getTag().getBoolean(hasCosmereFortuneBonus))) + { + Entity entity = context.getParamOrNull(LootContextParams.THIS_ENTITY); + BlockState blockState = context.getParamOrNull(LootContextParams.BLOCK_STATE); + + if (blockState != null && entity instanceof LivingEntity) + { + LivingEntity player = (LivingEntity) entity; + + MobEffectInstance storingLuckEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); + MobEffectInstance tappingLuckEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); + + //bonus for tapping amplifier. + int totalFortuneBonus = 0; + if (tappingLuckEffect != null) + { + totalFortuneBonus = tappingLuckEffect.getAmplifier() + 1; + } + + //minus off the unlucky effect amplifier + + if (storingLuckEffect != null) + { + totalFortuneBonus -= (storingLuckEffect.getAmplifier() + 1); + } + + if (totalFortuneBonus != 0) + { + ItemStack fakeTool = tool.isEmpty() ? new ItemStack(Items.BARRIER) : tool.copy(); + + fakeTool.getOrCreateTag().putBoolean(hasCosmereFortuneBonus, true); + + Map enchantments = EnchantmentHelper.getEnchantments(fakeTool); + enchantments.put(Enchantments.BLOCK_FORTUNE, EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, fakeTool) + totalFortuneBonus); + + EnchantmentHelper.setEnchantments(enchantments, fakeTool); + + LootContext.Builder builder = new LootContext.Builder(context); + builder.withParameter(LootContextParams.TOOL, fakeTool); + + LootContext newContext = builder.create(LootContextParamSets.BLOCK); + LootTable lootTable = context.getLevel().getServer().getLootTables().get(blockState.getBlock().getLootTable()); + + return lootTable.getRandomItems(newContext); + } + } + } + + //otherwise return the context that was passed in. no modification needed. + return generatedLoot; + } + + public static class Serializer extends GlobalLootModifierSerializer + { + public Serializer() + { + LogHelper.info("Fortune bonus modifier setting up"); + } + + public FortuneBonusModifier read(ResourceLocation location, JsonObject object, LootItemCondition[] conditions) + { + return new FortuneBonusModifier(conditions); + } + + public JsonObject write(FortuneBonusModifier instance) + { + return this.makeConditions(instance.conditions); + } + } } diff --git a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java index ea10aee45..335e30d6c 100644 --- a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java @@ -10,72 +10,65 @@ import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalmindItem; -import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.LootFunctionRegistry; -import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.StackNBTHelper; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootFunction; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.util.math.MathHelper; - -import java.util.Collection; -import java.util.Optional; -import java.util.UUID; - -public class InvestMetalmindLootFunction extends LootFunction +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; + +public class InvestMetalmindLootFunction extends LootItemConditionalFunction { - protected InvestMetalmindLootFunction(ILootCondition[] conditionsIn) - { - super(conditionsIn); - } + protected InvestMetalmindLootFunction(LootItemCondition[] conditionsIn) + { + super(conditionsIn); + } - @Override - public LootFunctionType getType() - { - return LootFunctionRegistry.INVEST_METALMIND; - } + @Override + public LootItemFunctionType getType() + { + return LootFunctionRegistry.INVEST_METALMIND; + } - @Override - protected ItemStack run(ItemStack stack, LootContext lootContext) - { - if (!(stack.getItem() instanceof IChargeable)) - { - return stack; - } + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + if (!(stack.getItem() instanceof IChargeable)) + { + return stack; + } - MetalmindItem item = (MetalmindItem) stack.getItem(); - final Metals.MetalType metalType = item.getMetalType(); + MetalmindItem item = (MetalmindItem) stack.getItem(); + final Metals.MetalType metalType = item.getMetalType(); - if (!metalType.hasFeruchemicalEffect()) - { - return stack; - } + if (!metalType.hasFeruchemicalEffect()) + { + return stack; + } - int maxCharge = item.getMaxCharge(stack); + int maxCharge = item.getMaxCharge(stack); - final int strengthBeforeLuck = 2 + lootContext.getRandom().nextInt(8); + final int strengthBeforeLuck = 2 + lootContext.getRandom().nextInt(8); - final float strengthLevel = MathHelper.clamp(strengthBeforeLuck + lootContext.getLuck(), 1, 10); + final float strengthLevel = Mth.clamp(strengthBeforeLuck + lootContext.getLuck(), 1, 10); - item.setCharge(stack,(int) MathHelper.lerp(strengthLevel / 10,1,maxCharge)); + item.setCharge(stack, (int) Mth.lerp(strengthLevel / 10, 1, maxCharge)); - StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); - StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation + StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); + StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation - return stack; - } + return stack; + } - public static class Serializer extends LootFunction.Serializer - { - @Override - public InvestMetalmindLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) - { - return new InvestMetalmindLootFunction(lootConditions); - } - } + public static class Serializer extends LootItemConditionalFunction.Serializer + { + @Override + public InvestMetalmindLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, LootItemCondition[] lootConditions) + { + return new InvestMetalmindLootFunction(lootConditions); + } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java index 401de189a..9c55fda21 100644 --- a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -11,132 +11,132 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.LootFunctionRegistry; import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootFunction; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.util.math.MathHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import java.util.Collection; import java.util.Optional; import java.util.UUID; -public class InvestSpikeLootFunction extends LootFunction +public class InvestSpikeLootFunction extends LootItemConditionalFunction { - protected InvestSpikeLootFunction(ILootCondition[] conditionsIn) - { - super(conditionsIn); - } - - - @Override - public LootFunctionType getType() - { - return LootFunctionRegistry.INVEST_SPIKE; - } - - @Override - protected ItemStack run(ItemStack stack, LootContext lootContext) - { - if (!(stack.getItem() instanceof HemalurgicSpikeItem)) - { - return stack; - } - - HemalurgicSpikeItem item = (HemalurgicSpikeItem) stack.getItem(); - final Metals.MetalType spikeMetalType = item.getMetalType(); - - if (!spikeMetalType.hasHemalurgicEffect()) - { - return stack; - } - - Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); - - Optional stealType = - hemalurgyStealWhitelist == null - ? Optional.empty() - : hemalurgyStealWhitelist - .stream() - .filter(metalType -> metalType.hasAssociatedManifestation()) - .skip(lootContext.getRandom().nextInt(hemalurgyStealWhitelist.size())) - .findFirst(); - - - final float strengthLevel = MathHelper.clamp(5 + lootContext.getLuck(), 1, 10); - - switch (spikeMetalType) - { - case IRON: - // add strength - item.Invest(stack, spikeMetalType, strengthLevel, UUID.randomUUID()); - - break; - //steals allomantic abilities - case STEEL: - case BRONZE: - case CADMIUM: - case ELECTRUM: - { - if (!stealType.isPresent()) - { - return stack; - } - - AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); - item.Invest(stack, allomancyMani, strengthLevel, UUID.randomUUID()); - } - break; - //steals feruchemical abilities - case PEWTER: - case BRASS: - case BENDALLOY: - case GOLD: - { - if (!stealType.isPresent()) - { - return stack; - } - - AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); - - item.Invest(stack, feruchemyMani, strengthLevel, UUID.randomUUID()); - } - break; - case ATIUM: - - if (!stealType.isPresent()) - { - return stack; - } - - boolean isAllomancy = lootContext.getRandom().nextBoolean(); - AManifestation manifestation; - if (isAllomancy) - { - manifestation = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); - } - else - { - manifestation = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); - } - - item.Invest(stack, manifestation, strengthLevel, UUID.randomUUID()); - - break; - } - - return stack; - } - - public static class Serializer extends LootFunction.Serializer - { - @Override - public InvestSpikeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) - { - return new InvestSpikeLootFunction(lootConditions); - } - } + protected InvestSpikeLootFunction(LootItemCondition[] conditionsIn) + { + super(conditionsIn); + } + + + @Override + public LootItemFunctionType getType() + { + return LootFunctionRegistry.INVEST_SPIKE; + } + + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + if (!(stack.getItem() instanceof HemalurgicSpikeItem)) + { + return stack; + } + + HemalurgicSpikeItem item = (HemalurgicSpikeItem) stack.getItem(); + final Metals.MetalType spikeMetalType = item.getMetalType(); + + if (!spikeMetalType.hasHemalurgicEffect()) + { + return stack; + } + + Collection hemalurgyStealWhitelist = spikeMetalType.getHemalurgyStealWhitelist(); + + Optional stealType = + hemalurgyStealWhitelist == null + ? Optional.empty() + : hemalurgyStealWhitelist + .stream() + .filter(metalType -> metalType.hasAssociatedManifestation()) + .skip(lootContext.getRandom().nextInt(hemalurgyStealWhitelist.size())) + .findFirst(); + + + final float strengthLevel = Mth.clamp(5 + lootContext.getLuck(), 1, 10); + + switch (spikeMetalType) + { + case IRON: + // add strength + item.Invest(stack, spikeMetalType, strengthLevel, UUID.randomUUID()); + + break; + //steals allomantic abilities + case STEEL: + case BRONZE: + case CADMIUM: + case ELECTRUM: + { + if (!stealType.isPresent()) + { + return stack; + } + + AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); + item.Invest(stack, allomancyMani, strengthLevel, UUID.randomUUID()); + } + break; + //steals feruchemical abilities + case PEWTER: + case BRASS: + case BENDALLOY: + case GOLD: + { + if (!stealType.isPresent()) + { + return stack; + } + + AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); + + item.Invest(stack, feruchemyMani, strengthLevel, UUID.randomUUID()); + } + break; + case ATIUM: + + if (!stealType.isPresent()) + { + return stack; + } + + boolean isAllomancy = lootContext.getRandom().nextBoolean(); + AManifestation manifestation; + if (isAllomancy) + { + manifestation = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType.get()).get(); + } + else + { + manifestation = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType.get()).get(); + } + + item.Invest(stack, manifestation, strengthLevel, UUID.randomUUID()); + + break; + } + + return stack; + } + + public static class Serializer extends LootItemConditionalFunction.Serializer + { + @Override + public InvestSpikeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, LootItemCondition[] lootConditions) + { + return new InvestSpikeLootFunction(lootConditions); + } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index f5d00b62e..8f3e1acbb 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -5,10 +5,11 @@ package leaf.cosmere.loot; import leaf.cosmere.Cosmere; -import net.minecraft.loot.LootEntry; -import net.minecraft.loot.LootPool; -import net.minecraft.loot.TableLootEntry; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; +import net.minecraft.world.level.storage.loot.entries.LootTableReference; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.event.LootTableLoadEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -19,53 +20,53 @@ public final class LootHandler { - @SubscribeEvent - public static void lootLoad(LootTableLoadEvent evt) - { - String prefix = "minecraft:chests/"; - String name = evt.getName().toString(); + @SubscribeEvent + public static void lootLoad(LootTableLoadEvent evt) + { + String prefix = "minecraft:chests/"; + String name = evt.getName().toString(); - if (name.startsWith(prefix)) - { - String file = name.substring(name.indexOf(prefix) + prefix.length()); - switch (file) - { - case "abandoned_mineshaft": - case "bastion_treasure": - case "bastion_other": - case "bastion_bridge": - case "desert_pyramid": - case "end_city_treasure": - case "jungle_temple": - case "simple_dungeon": - case "spawn_bonus_chest": - case "stronghold_corridor": - case "stronghold_crossing": - case "stronghold_library": - case "village_blacksmith": - case "woodland_mansion": - evt.getTable().addPool(getInjectPool(file)); - break; - default: - break; - } - } - } + if (name.startsWith(prefix)) + { + String file = name.substring(name.indexOf(prefix) + prefix.length()); + switch (file) + { + case "abandoned_mineshaft": + case "bastion_treasure": + case "bastion_other": + case "bastion_bridge": + case "desert_pyramid": + case "end_city_treasure": + case "jungle_temple": + case "simple_dungeon": + case "spawn_bonus_chest": + case "stronghold_corridor": + case "stronghold_crossing": + case "stronghold_library": + case "village_blacksmith": + case "woodland_mansion": + evt.getTable().addPool(getInjectPool(file)); + break; + default: + break; + } + } + } - public static LootPool getInjectPool(String entryName) - { - return LootPool.lootPool() - .add(getInjectEntry(entryName, 1)) - .bonusRolls(0, 1) - .name("cosmere_inject") - .build(); - } + public static LootPool getInjectPool(String entryName) + { + return LootPool.lootPool() + .add(getInjectEntry(entryName, 1)) + .setBonusRolls(UniformGenerator.between(0,1)) + .name("cosmere_inject") + .build(); + } - private static LootEntry.Builder getInjectEntry(String name, int weight) - { - ResourceLocation table = prefix("inject/" + name); - return TableLootEntry.lootTableReference(table) - .setWeight(weight); - } + private static LootPoolEntryContainer.Builder getInjectEntry(String name, int weight) + { + ResourceLocation table = prefix("inject/" + name); + return LootTableReference.lootTableReference(table) + .setWeight(weight); + } } diff --git a/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java index bed76aad5..37c544a25 100644 --- a/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java @@ -14,13 +14,13 @@ import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.LootFunctionRegistry; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.loot.LootContext; -import net.minecraft.loot.LootFunction; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.loot.conditions.ILootCondition; -import net.minecraft.nbt.CompoundNBT; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; +import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import java.util.Arrays; import java.util.Collections; @@ -28,131 +28,131 @@ import java.util.Optional; import java.util.stream.Collectors; -public class RandomiseMetalTypeLootFunction extends LootFunction +public class RandomiseMetalTypeLootFunction extends LootItemConditionalFunction { - protected RandomiseMetalTypeLootFunction(ILootCondition[] conditionsIn) - { - super(conditionsIn); - } - - - @Override - public LootFunctionType getType() - { - return LootFunctionRegistry.RANDOMISE_METALTYPE; - } - - @Override - protected ItemStack run(ItemStack stack, LootContext lootContext) - { - final Item item = stack.getItem(); - if (!(item instanceof IHasMetalType)) - { - return stack; - } - - if (item instanceof HemalurgicSpikeItem) - { - List metalTypes = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasHemalurgicEffect) - .collect(Collectors.toList()); - Collections.shuffle(metalTypes); - Optional metalType = metalTypes.stream().findFirst(); - - if (metalType.isPresent()) - { - stack = new ItemStack(ItemsRegistry.METAL_SPIKE.get(metalType.get()).get()); - } - } - else if (item instanceof MetalmindItem) - { - List metalTypes = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toList()); - Collections.shuffle(metalTypes); - Optional metalType = metalTypes.stream().findFirst(); - - if (metalType.isPresent()) - { - Item metalmindItem; - - if (item instanceof RingMetalmindItem) - { - metalmindItem = ItemsRegistry.METAL_RINGS.get(metalType.get()).get(); - } - else if (item instanceof NecklaceMetalmindItem) - { - metalmindItem = ItemsRegistry.METAL_NECKLACES.get(metalType.get()).get(); - } - else if (item instanceof BraceletMetalmindItem) - { - metalmindItem = ItemsRegistry.METAL_BRACELETS.get(metalType.get()).get(); - } - else - { - metalmindItem = item; - } - - CompoundNBT nbt = stack.getOrCreateTag().copy(); - stack = new ItemStack(metalmindItem); - stack.setTag(nbt); - } - } - else if (item instanceof MetalRawOreItem) - { - List metalTypes = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toList()); - Collections.shuffle(metalTypes); - Optional metalType = metalTypes.stream().findFirst(); - - if (metalType.isPresent()) - { - stack = new ItemStack(ItemsRegistry.METAL_RAW_ORE.get(metalType.get()).get(), stack.getCount()); - } - } - else if (item instanceof MetalNuggetItem) - { - List metalTypes = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) - .collect(Collectors.toList()); - Collections.shuffle(metalTypes); - Optional metalType = metalTypes.stream().findFirst(); - - if (metalType.isPresent()) - { - stack = new ItemStack(ItemsRegistry.METAL_NUGGETS.get(metalType.get()).get(), stack.getCount()); - } - } - else if (item instanceof MetalIngotItem) - { - List metalTypes = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) - .collect(Collectors.toList()); - Collections.shuffle(metalTypes); - Optional metalType = metalTypes.stream().findFirst(); - - if (metalType.isPresent()) - { - stack = new ItemStack(ItemsRegistry.METAL_INGOTS.get(metalType.get()).get(), stack.getCount()); - } - } - - return stack; - } - - public static class Serializer extends LootFunction.Serializer - { - @Override - public RandomiseMetalTypeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, ILootCondition[] lootConditions) - { - return new RandomiseMetalTypeLootFunction(lootConditions); - } - } + protected RandomiseMetalTypeLootFunction(LootItemCondition[] conditionsIn) + { + super(conditionsIn); + } + + + @Override + public LootItemFunctionType getType() + { + return LootFunctionRegistry.RANDOMISE_METALTYPE; + } + + @Override + protected ItemStack run(ItemStack stack, LootContext lootContext) + { + final Item item = stack.getItem(); + if (!(item instanceof IHasMetalType)) + { + return stack; + } + + if (item instanceof HemalurgicSpikeItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasHemalurgicEffect) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_SPIKE.get(metalType.get()).get()); + } + } + else if (item instanceof MetalmindItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + Item metalmindItem; + + if (item instanceof RingMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_RINGS.get(metalType.get()).get(); + } + else if (item instanceof NecklaceMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_NECKLACES.get(metalType.get()).get(); + } + else if (item instanceof BraceletMetalmindItem) + { + metalmindItem = ItemsRegistry.METAL_BRACELETS.get(metalType.get()).get(); + } + else + { + metalmindItem = item; + } + + CompoundTag nbt = stack.getOrCreateTag().copy(); + stack = new ItemStack(metalmindItem); + stack.setTag(nbt); + } + } + else if (item instanceof MetalRawOreItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_RAW_ORE.get(metalType.get()).get(), stack.getCount()); + } + } + else if (item instanceof MetalNuggetItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_NUGGETS.get(metalType.get()).get(), stack.getCount()); + } + } + else if (item instanceof MetalIngotItem) + { + List metalTypes = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toList()); + Collections.shuffle(metalTypes); + Optional metalType = metalTypes.stream().findFirst(); + + if (metalType.isPresent()) + { + stack = new ItemStack(ItemsRegistry.METAL_INGOTS.get(metalType.get()).get(), stack.getCount()); + } + } + + return stack; + } + + public static class Serializer extends LootItemConditionalFunction.Serializer + { + @Override + public RandomiseMetalTypeLootFunction deserialize(JsonObject jsonObject, JsonDeserializationContext deserializationContext, LootItemCondition[] lootConditions) + { + return new RandomiseMetalTypeLootFunction(lootConditions); + } + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index 400ddca76..80aa772f9 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -6,11 +6,11 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Manifestations; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.client.event.RenderWorldLastEvent; +import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.registries.ForgeRegistryEntry; import java.util.Locale; @@ -18,43 +18,45 @@ public abstract class AManifestation extends ForgeRegistryEntry { - public abstract Manifestations.ManifestationTypes getManifestationType(); + public abstract Manifestations.ManifestationTypes getManifestationType(); - public abstract int getPowerID(); + public abstract int getPowerID(); - public abstract void onModeChange(ISpiritweb data); + public abstract void onModeChange(ISpiritweb data); - public abstract int getMode(ISpiritweb data); + public abstract int getMode(ISpiritweb data); - public abstract int modeMax(ISpiritweb data); + public abstract int modeMax(ISpiritweb data); - public abstract int modeMin(ISpiritweb data); + public abstract int modeMin(ISpiritweb data); - public abstract boolean modeWraps(ISpiritweb data); + public abstract boolean modeWraps(ISpiritweb data); - public abstract void tick(ISpiritweb data); + public abstract void tick(ISpiritweb data); - public abstract boolean isActive(ISpiritweb data); + public abstract boolean isActive(ISpiritweb data); - public abstract double getStrength(ISpiritweb data); + public abstract double getStrength(ISpiritweb data); - public TranslationTextComponent translation() - { - ResourceLocation regName = getRegistryName(); - return new TranslationTextComponent("manifestation." + regName.getNamespace() + "." + regName.getPath()); - } + public TranslatableComponent translation() + { + ResourceLocation regName = getRegistryName(); + return new TranslatableComponent("manifestation." + regName.getNamespace() + "." + regName.getPath()); + } - public TranslationTextComponent description() - { - ResourceLocation regName = getRegistryName(); - return new TranslationTextComponent("manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description"); - } + public TranslatableComponent description() + { + ResourceLocation regName = getRegistryName(); + return new TranslatableComponent("manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description"); + } - @OnlyIn(Dist.CLIENT) - public void renderWorldEffects(RenderWorldLastEvent event, ISpiritweb cap){} + @OnlyIn(Dist.CLIENT) + public void renderWorldEffects(RenderLevelLastEvent event, ISpiritweb cap) + { + } - public String getName() - { - return this.getRegistryName().getPath().toLowerCase(Locale.ROOT); - } + public String getName() + { + return this.getRegistryName().getPath().toLowerCase(Locale.ROOT); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 99ea36fd2..07009fe29 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -15,72 +15,72 @@ //Manifestation of investiture public class ManifestationBase extends AManifestation { - final protected Manifestations.ManifestationTypes manifestationType; - final protected int color; - - public ManifestationBase(Manifestations.ManifestationTypes manifestationType, int color) - { - this.manifestationType = manifestationType; - this.color = color; - } - - @Override - public Manifestations.ManifestationTypes getManifestationType() - { - return manifestationType; - } - - @Override - public int getPowerID() - { - return 0; - } - - @Override - public void onModeChange(ISpiritweb data) - { - - } - - @Override - public int getMode(ISpiritweb data) - { - return data.getMode(manifestationType, getPowerID()); - } - - @Override - public int modeMax(ISpiritweb data) - { - return 0; - } - - @Override - public int modeMin(ISpiritweb data) - { - return 0; - } - - @Override - public boolean modeWraps(ISpiritweb data) - { - return false; - } - - @Override - public void tick(ISpiritweb data) - { - - } - - @Override - public boolean isActive(ISpiritweb data) - { - return data.canTickManifestation(this.manifestationType, this.getPowerID()); - } - - @Override - public double getStrength(ISpiritweb data) - { - return 0; - } + final protected Manifestations.ManifestationTypes manifestationType; + final protected int color; + + public ManifestationBase(Manifestations.ManifestationTypes manifestationType, int color) + { + this.manifestationType = manifestationType; + this.color = color; + } + + @Override + public Manifestations.ManifestationTypes getManifestationType() + { + return manifestationType; + } + + @Override + public int getPowerID() + { + return 0; + } + + @Override + public void onModeChange(ISpiritweb data) + { + + } + + @Override + public int getMode(ISpiritweb data) + { + return data.getMode(manifestationType, getPowerID()); + } + + @Override + public int modeMax(ISpiritweb data) + { + return 0; + } + + @Override + public int modeMin(ISpiritweb data) + { + return 0; + } + + @Override + public boolean modeWraps(ISpiritweb data) + { + return false; + } + + @Override + public void tick(ISpiritweb data) + { + + } + + @Override + public boolean isActive(ISpiritweb data) + { + return data.canTickManifestation(this.manifestationType, this.getPowerID()); + } + + @Override + public double getStrength(ISpiritweb data) + { + return 0; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java index 47d550c56..34183331f 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java @@ -9,32 +9,32 @@ public class AllomancyAluminum extends AllomancyBase { - public AllomancyAluminum(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyAluminum(Metals.MetalType metalType) + { + super(metalType); + } - @Override - protected void performEffect(ISpiritweb data) - { - //passive active ability, if any - { - //drain all metals - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - int ingestedMetalAmount = data.getIngestedMetal(metalType); - if (ingestedMetalAmount > 5) - { - data.adjustIngestedMetal(metalType, ingestedMetalAmount / 2, true); - } - else - { - data.adjustIngestedMetal(metalType, ingestedMetalAmount, true); - } - } + @Override + protected void performEffect(ISpiritweb data) + { + //passive active ability, if any + { + //drain all metals + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + int ingestedMetalAmount = data.getIngestedMetal(metalType); + if (ingestedMetalAmount > 5) + { + data.adjustIngestedMetal(metalType, ingestedMetalAmount / 2, true); + } + else + { + data.adjustIngestedMetal(metalType, ingestedMetalAmount, true); + } + } - } - } + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index a471fdf2e..0dad01161 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -12,153 +12,157 @@ import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.KeybindingRegistry; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.util.math.*; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.client.KeyMapping; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraftforge.registries.RegistryObject; public class AllomancyBase extends ManifestationBase implements IHasMetalType { - private final Metals.MetalType metalType; - - public AllomancyBase(Metals.MetalType metalType) - { - super(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getColorValue()); - this.metalType = metalType; - } - - - @Override - public int getPowerID() - { - return metalType.getID(); - } - - @Override - public boolean modeWraps(ISpiritweb data) - { - return true; - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } - - //active or not active - @Override - public int modeMax(ISpiritweb data) - { - return 3; - } - - @Override - public int modeMin(ISpiritweb data) - { - return 0; - } - - @Override - public boolean isActive(ISpiritweb data) - { - return super.isActive(data) && isMetalBurning(data); - } - - public boolean isMetalBurning(ISpiritweb data) - { - int mode = data.getMode(manifestationType, metalType.getID()); - - //make sure the user can afford the cost of burning this metal - while (mode > 0) - { - //if not then try reduce the amount that they are burning - - if (data.adjustIngestedMetal(metalType, mode, false)) - { - return true; - } - else - { - mode--; - //set that mode back to the capability. - data.setMode(manifestationType, metalType.getID(), mode); - //if it hits zero then return out - //try again at a lower burn rate. - } - } - return false; - } - - @Override - public void tick(ISpiritweb data) - { - int mode = data.getMode(manifestationType, metalType.getID()); - - if (!isActive(data)) - { - return; - } - - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - data.adjustIngestedMetal(metalType, mode, isActiveTick); - - //if we get to this point, we are in an active burn state. - //check for compound. - int feruchemyMode = data.hasManifestation(Manifestations.ManifestationTypes.FERUCHEMY, getPowerID()) - ? data.getMode(Manifestations.ManifestationTypes.FERUCHEMY, metalType.getID()) - : 0; - - //feruchemy power exists and is active - if (feruchemyMode != 0 && isActiveTick) - { - //todo config variable - int secondsOfFeruchemyToAdd = 5; - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) - { - //compound successful - } - } - - performEffect(data); - } - - protected void performEffect(ISpiritweb data) { } - - protected KeyBinding getKeyBinding() - { - if (getMetalType().isPullMetal()) - { - return KeybindingRegistry.ALLOMANCY_PULL; - } - else if (getMetalType().isPushMetal()) - { - return KeybindingRegistry.ALLOMANCY_PUSH; - } - - return null; - } - - public double getStrength(ISpiritweb cap) - { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); - ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); - return attribute != null ? attribute.getValue() : 0; - } - - - public int getRange(ISpiritweb cap) - { - if (!isActive(cap)) - return 0; - - //get allomantic strength - double allomanticStrength = getStrength(cap); - return MathHelper.floor(allomanticStrength * cap.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID())); - - } + private final Metals.MetalType metalType; + + public AllomancyBase(Metals.MetalType metalType) + { + super(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getColorValue()); + this.metalType = metalType; + } + + + @Override + public int getPowerID() + { + return metalType.getID(); + } + + @Override + public boolean modeWraps(ISpiritweb data) + { + return true; + } + + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } + + //active or not active + @Override + public int modeMax(ISpiritweb data) + { + return 3; + } + + @Override + public int modeMin(ISpiritweb data) + { + return 0; + } + + @Override + public boolean isActive(ISpiritweb data) + { + return super.isActive(data) && isMetalBurning(data); + } + + public boolean isMetalBurning(ISpiritweb data) + { + int mode = data.getMode(manifestationType, metalType.getID()); + + //make sure the user can afford the cost of burning this metal + while (mode > 0) + { + //if not then try reduce the amount that they are burning + + if (data.adjustIngestedMetal(metalType, mode, false)) + { + return true; + } + else + { + mode--; + //set that mode back to the capability. + data.setMode(manifestationType, metalType.getID(), mode); + //if it hits zero then return out + //try again at a lower burn rate. + } + } + return false; + } + + @Override + public void tick(ISpiritweb data) + { + int mode = data.getMode(manifestationType, metalType.getID()); + + if (!isActive(data)) + { + return; + } + + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; + data.adjustIngestedMetal(metalType, mode, isActiveTick); + + //if we get to this point, we are in an active burn state. + //check for compound. + int feruchemyMode = data.hasManifestation(Manifestations.ManifestationTypes.FERUCHEMY, getPowerID()) + ? data.getMode(Manifestations.ManifestationTypes.FERUCHEMY, metalType.getID()) + : 0; + + //feruchemy power exists and is active + if (feruchemyMode != 0 && isActiveTick) + { + //todo config variable + int secondsOfFeruchemyToAdd = 5; + if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) + { + //compound successful + } + } + + performEffect(data); + } + + protected void performEffect(ISpiritweb data) + { + } + + protected KeyMapping getKeyBinding() + { + if (getMetalType().isPullMetal()) + { + return KeybindingRegistry.ALLOMANCY_PULL; + } + else if (getMetalType().isPushMetal()) + { + return KeybindingRegistry.ALLOMANCY_PUSH; + } + + return null; + } + + public double getStrength(ISpiritweb cap) + { + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); + AttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); + return attribute != null ? attribute.getValue() : 0; + } + + + public int getRange(ISpiritweb cap) + { + if (!isActive(cap)) + { + return 0; + } + + //get allomantic strength + double allomanticStrength = getStrength(cap); + return Mth.floor(allomanticStrength * cap.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID())); + + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index 191e103b8..d9c42f579 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -7,8 +7,8 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; import java.util.List; @@ -16,32 +16,32 @@ public class AllomancyBendalloy extends AllomancyBase { - public AllomancyBendalloy(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - protected void performEffect(ISpiritweb data) - { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - - //Slows Down Time for the entities around the user - if (isActiveTick) - { - int mode = data.getMode(manifestationType, getMetalType().getID()); - - int range = 5 * mode; - - List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); - - for (LivingEntity e : entitiesToAffect) - { - e.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SLOWDOWN,mode)); - } - - //todo slow tile entities? not sure how to do that. cadmium just calls tick more often. - } - } + public AllomancyBendalloy(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + protected void performEffect(ISpiritweb data) + { + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; + + //Slows Down Time for the entities around the user + if (isActiveTick) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); + + int range = 5 * mode; + + List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); + + for (LivingEntity e : entitiesToAffect) + { + e.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SLOWDOWN, mode)); + } + + //todo slow tile entities? not sure how to do that. cadmium just calls tick more often. + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 489d9dd5c..9d015c782 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -6,8 +6,8 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.MobEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; import java.util.List; @@ -15,44 +15,44 @@ public class AllomancyBrass extends AllomancyBase { - public AllomancyBrass(Metals.MetalType metalType) - { - super(metalType); - } - - //Dampens Emotions - @Override - protected void performEffect(ISpiritweb data) - { - int mode = data.getMode(manifestationType, getMetalType().getID()); - - //todo, replace x * mode with config based value - double allomanticStrength = getStrength(data); - - int range = (int) (allomanticStrength * mode); - - List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); - - for (LivingEntity e : entitiesToAffect) - { - if (e instanceof MobEntity) - { - MobEntity mob = (MobEntity) e; - mob.setNoAi(mode == 3 && allomanticStrength > 15); - - switch (mode) - { - case 3: - mob.setTarget(null); - case 2: - mob.setAggressive(false); - case 1: - default: - //stop angry targets from attacking things - e.setLastHurtByMob(null); - - } - } - } - } + public AllomancyBrass(Metals.MetalType metalType) + { + super(metalType); + } + + //Dampens Emotions + @Override + protected void performEffect(ISpiritweb data) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); + + //todo, replace x * mode with config based value + double allomanticStrength = getStrength(data); + + int range = (int) (allomanticStrength * mode); + + List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); + + for (LivingEntity e : entitiesToAffect) + { + if (e instanceof Mob) + { + Mob mob = (Mob) e; + mob.setNoAi(mode == 3 && allomanticStrength > 15); + + switch (mode) + { + case 3: + mob.setTarget(null); + case 2: + mob.setAggressive(false); + case 1: + default: + //stop angry targets from attacking things + e.setLastHurtByMob(null); + + } + } + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index 0b355ee5e..84033774d 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -8,15 +8,15 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.registry.*; +import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.utils.helpers.VectorHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.particles.ParticleTypes; -import net.minecraft.potion.*; -import net.minecraft.state.properties.NoteBlockInstrument; -import net.minecraft.util.SoundCategory; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.block.state.properties.NoteBlockInstrument; import java.util.List; @@ -24,83 +24,83 @@ public class AllomancyBronze extends AllomancyBase { - public AllomancyBronze(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - protected void performEffect(ISpiritweb data) - { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - //Detects Allomantic Pulses - - //passive active ability, if any - if (livingEntity instanceof ServerPlayerEntity && isActiveTick) - { - ServerPlayerEntity playerEntity = (ServerPlayerEntity) livingEntity; - - int distance = getRange(data); - List entitiesToCheckForAllomancy = getLivingEntitiesInRange(livingEntity, distance, false); - - for (LivingEntity targetEntity : entitiesToCheckForAllomancy) - { - EffectInstance copperEffect = targetEntity.getEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); - if (copperEffect != null && copperEffect.getDuration() > 0) - { - //skip clouded entities. - continue; - } - - SpiritwebCapability.get(targetEntity).ifPresent(targetSpiritweb -> - { - //check if any allomantic powers are active - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } - - int metalTypeID = metalType.getID(); - //todo decide what to do about this part - //since this is running on the server specifically. - if (targetSpiritweb.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) - { - //found one - - //todo play thump sound - //get the position between the user and the entity we found - - //end point minus start point, then normalize - BlockPos destinationPosition = targetEntity.blockPosition(); - BlockPos startingPosition = livingEntity.blockPosition(); - - BlockPos direction = new BlockPos(VectorHelper.Normalize(destinationPosition.subtract(startingPosition))); - - playerEntity.playNotifySound( - NoteBlockInstrument.BASEDRUM.getSoundEvent(), - SoundCategory.PLAYERS, //todo check this category - 3.0F, //volume - 1.0F); //pitch - - //todo visual cue? - //todo make this stuff only happen for the user - targetEntity.level.addParticle( - ParticleTypes.NOTE, - (double) direction.getX() + 0.5D, - (double) direction.getY() + 1.2D, - (double) direction.getZ() + 0.5D, - (double) metalTypeID / 24.0D, - 0.0D, - 0.0D); - - break; - } - } - }); - } - } - } + public AllomancyBronze(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + protected void performEffect(ISpiritweb data) + { + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; + //Detects Allomantic Pulses + + //passive active ability, if any + if (livingEntity instanceof ServerPlayer && isActiveTick) + { + ServerPlayer playerEntity = (ServerPlayer) livingEntity; + + int distance = getRange(data); + List entitiesToCheckForAllomancy = getLivingEntitiesInRange(livingEntity, distance, false); + + for (LivingEntity targetEntity : entitiesToCheckForAllomancy) + { + MobEffectInstance copperEffect = targetEntity.getEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); + if (copperEffect != null && copperEffect.getDuration() > 0) + { + //skip clouded entities. + continue; + } + + SpiritwebCapability.get(targetEntity).ifPresent(targetSpiritweb -> + { + //check if any allomantic powers are active + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasAssociatedManifestation()) + { + continue; + } + + int metalTypeID = metalType.getID(); + //todo decide what to do about this part + //since this is running on the server specifically. + if (targetSpiritweb.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) + { + //found one + + //todo play thump sound + //get the position between the user and the entity we found + + //end point minus start point, then normalize + BlockPos destinationPosition = targetEntity.blockPosition(); + BlockPos startingPosition = livingEntity.blockPosition(); + + BlockPos direction = new BlockPos(VectorHelper.Normalize(destinationPosition.subtract(startingPosition))); + + playerEntity.playNotifySound( + NoteBlockInstrument.BASEDRUM.getSoundEvent(), + SoundSource.PLAYERS, //todo check this category + 3.0F, //volume + 1.0F); //pitch + + //todo visual cue? + //todo make this stuff only happen for the user + targetEntity.level.addParticle( + ParticleTypes.NOTE, + (double) direction.getX() + 0.5D, + (double) direction.getY() + 1.2D, + (double) direction.getZ() + 0.5D, + (double) metalTypeID / 24.0D, + 0.0D, + 0.0D); + + break; + } + } + }); + } + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java index 69bb61938..278ae4e20 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java @@ -7,11 +7,11 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import net.minecraft.block.BlockState; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; import java.util.List; @@ -19,53 +19,53 @@ public class AllomancyCadmium extends AllomancyBase { - public AllomancyCadmium(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - protected void performEffect(ISpiritweb data) - { - //Speeds Up Time for everything around the user, implying the user is slower - { - //tick entities around user - if (data.getLiving().tickCount % 6 == 0) - { - int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); - int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); - int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); - - for (int i = 4; i > -2; i--) - { - int y = data.getLiving().blockPosition().getY() + i; - BlockPos pos = new BlockPos(x, y, z); - World world = data.getLiving().level; - - if (world.isEmptyBlock(pos)) - { - continue; - } - - BlockState state = world.getBlockState(pos); - state.randomTick((ServerWorld) world, pos, world.random); - - break; - } - - //todo tick living entities? - - List entitiesToCheck = getLivingEntitiesInRange(data.getLiving(), range, true); - - for (LivingEntity e : entitiesToCheck) - { - e.aiStep(); - } - } - } - - - } + public AllomancyCadmium(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + protected void performEffect(ISpiritweb data) + { + //Speeds Up Time for everything around the user, implying the user is slower + { + //tick entities around user + if (data.getLiving().tickCount % 6 == 0) + { + int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); + int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); + int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); + + for (int i = 4; i > -2; i--) + { + int y = data.getLiving().blockPosition().getY() + i; + BlockPos pos = new BlockPos(x, y, z); + Level world = data.getLiving().level; + + if (world.isEmptyBlock(pos)) + { + continue; + } + + BlockState state = world.getBlockState(pos); + state.randomTick((ServerLevel) world, pos, world.random); + + break; + } + + //todo tick living entities? + + List entitiesToCheck = getLivingEntitiesInRange(data.getLiving(), range, true); + + for (LivingEntity e : entitiesToCheck) + { + e.aiStep(); + } + } + } + + + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java index a00bfba49..5e23256b9 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java @@ -7,101 +7,101 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.World; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import java.util.List; public class AllomancyChromium extends AllomancyBase { - public AllomancyChromium(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - protected void performEffect(ISpiritweb data) - { - //Wipes Allomantic Reserves of Target - { - int range = data.getMode(manifestationType, getMetalType().getID()); - - LivingEntity living = data.getLiving(); - World world = living.level; - boolean isActiveTick = living.level.getGameTime() % 20 == 0; - if (!world.isClientSide && isActiveTick) - { - //thank you to CyclopsMC and their repo EverlastingAbilities for their section on detecting enemies you are looking at - //https://github.com/CyclopsMC/EverlastingAbilities/blob/master-1.16/src/main/java/org/cyclops/everlastingabilities/ability/AbilityTypePowerStare.java - - double eyeHeight = living.getEyeHeight(); - Vector3d lookVec = living.getLookAngle(); - Vector3d origin = new Vector3d(living.getX(), living.getY() + eyeHeight, living.getZ()); - Vector3d direction = origin.add(lookVec.x * range, lookVec.y * range, lookVec.z * range); - - List entitiesInRange = world.getEntities(living, - living.getBoundingBox() - .inflate( - lookVec.x * range, - lookVec.y * range, - lookVec.z * range) - .inflate(range)); - - for (Entity e : entitiesInRange) - { - if (!(e instanceof LivingEntity)) - { - continue; - } - SpiritwebCapability.get((LivingEntity) e).ifPresent(iSpiritweb -> - { - Entity entity = null; - - float f10 = e.getPickRadius(); - AxisAlignedBB axisalignedbb = e.getBoundingBox().expandTowards((double) f10, (double) f10, (double) f10); - Vector3d hitVec = axisalignedbb.clip(origin, direction).orElse(null); - - if (axisalignedbb.contains(origin)) - { - entity = e; - } - else if (hitVec != null) - { - double distance = origin.distanceTo(hitVec); - if (distance < range || range == 0.0D) - { - if (e == living.getVehicle() && !living.canRiderInteract()) - { - if (range == 0.0D) - { - entity = e; - } - } - else - { - entity = e; - } - } - } - - if (entity != null) - { - for(Metals.MetalType metalType : Metals.MetalType.values()) - { - iSpiritweb.adjustIngestedMetal(metalType, 9, true); - } - } - }); - - } - } - } - - - } + public AllomancyChromium(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + protected void performEffect(ISpiritweb data) + { + //Wipes Allomantic Reserves of Target + { + int range = data.getMode(manifestationType, getMetalType().getID()); + + LivingEntity living = data.getLiving(); + Level world = living.level; + boolean isActiveTick = living.level.getGameTime() % 20 == 0; + if (!world.isClientSide && isActiveTick) + { + //thank you to CyclopsMC and their repo EverlastingAbilities for their section on detecting enemies you are looking at + //https://github.com/CyclopsMC/EverlastingAbilities/blob/master-1.16/src/main/java/org/cyclops/everlastingabilities/ability/AbilityTypePowerStare.java + + double eyeHeight = living.getEyeHeight(); + Vec3 lookVec = living.getLookAngle(); + Vec3 origin = new Vec3(living.getX(), living.getY() + eyeHeight, living.getZ()); + Vec3 direction = origin.add(lookVec.x * range, lookVec.y * range, lookVec.z * range); + + List entitiesInRange = world.getEntities(living, + living.getBoundingBox() + .inflate( + lookVec.x * range, + lookVec.y * range, + lookVec.z * range) + .inflate(range)); + + for (Entity e : entitiesInRange) + { + if (!(e instanceof LivingEntity)) + { + continue; + } + SpiritwebCapability.get((LivingEntity) e).ifPresent(iSpiritweb -> + { + Entity entity = null; + + float f10 = e.getPickRadius(); + AABB axisalignedbb = e.getBoundingBox().expandTowards(f10, f10, f10); + Vec3 hitVec = axisalignedbb.clip(origin, direction).orElse(null); + + if (axisalignedbb.contains(origin)) + { + entity = e; + } + else if (hitVec != null) + { + double distance = origin.distanceTo(hitVec); + if (distance < range || range == 0.0D) + { + if (e == living.getVehicle() && !living.canRiderInteract()) + { + if (range == 0.0D) + { + entity = e; + } + } + else + { + entity = e; + } + } + } + + if (entity != null) + { + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + iSpiritweb.adjustIngestedMetal(metalType, 9, true); + } + } + }); + + } + } + } + + + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java index 74c70c05b..7a6c501db 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java @@ -6,10 +6,10 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectInstance; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; import java.util.List; @@ -17,29 +17,29 @@ public class AllomancyCopper extends AllomancyBase { - public AllomancyCopper(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - protected void performEffect(ISpiritweb data) - { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - - //Hides Allomantic Pulses - if (isActiveTick) - { - int mode = data.getMode(manifestationType, getMetalType().getID()); - EffectInstance newEffect = EffectsHelper.getNewEffect(EffectsRegistry.ALLOMANTIC_COPPER.get(), mode - 1); - - List entitiesToApplyEffect = getLivingEntitiesInRange(livingEntity, 5, true); - - for (LivingEntity e : entitiesToApplyEffect) - { - e.addEffect(newEffect); - } - } - } + public AllomancyCopper(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + protected void performEffect(ISpiritweb data) + { + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; + + //Hides Allomantic Pulses + if (isActiveTick) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); + MobEffectInstance newEffect = EffectsHelper.getNewEffect(EffectsRegistry.ALLOMANTIC_COPPER.get(), mode - 1); + + List entitiesToApplyEffect = getLivingEntitiesInRange(livingEntity, 5, true); + + for (LivingEntity e : entitiesToApplyEffect) + { + e.addEffect(newEffect); + } + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java index 134681355..d96bf2b8e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java @@ -6,34 +6,34 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.util.math.MathHelper; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; public class AllomancyDuralumin extends AllomancyBase { - public AllomancyDuralumin(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyDuralumin(Metals.MetalType metalType) + { + super(metalType); + } - //Enhances Current Metals Burned - @Override - public void performEffect(ISpiritweb data) - { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; + //Enhances Current Metals Burned + @Override + public void performEffect(ISpiritweb data) + { + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; - if (isActiveTick) - { - //apply the effect regardless, because duralumin is currently active. - EffectInstance newEffect = EffectsHelper.getNewEffect( - EffectsRegistry.ALLOMANCY_BOOST.get(), - MathHelper.floor(getStrength(data)) - ); - data.getLiving().addEffect(newEffect); - } - } + if (isActiveTick) + { + //apply the effect regardless, because duralumin is currently active. + MobEffectInstance newEffect = EffectsHelper.getNewEffect( + EffectsRegistry.ALLOMANCY_BOOST.get(), + Mth.floor(getStrength(data)) + ); + data.getLiving().addEffect(newEffect); + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java index 63ea512d7..3c2f9d3aa 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java @@ -9,19 +9,19 @@ public class AllomancyElectrum extends AllomancyBase { - public AllomancyElectrum(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyElectrum(Metals.MetalType metalType) + { + super(metalType); + } - @Override - protected void performEffect(ISpiritweb data) - { - //Reveals Your Future - { - //todo - } - } - //add client side stuff + @Override + protected void performEffect(ISpiritweb data) + { + //Reveals Your Future + { + //todo + } + } + //add client side stuff } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java index b5aa1c3f6..830bea64d 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java @@ -9,19 +9,19 @@ public class AllomancyGold extends AllomancyBase { - public AllomancyGold(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyGold(Metals.MetalType metalType) + { + super(metalType); + } - @Override - protected void performEffect(ISpiritweb data) - { - //Reveals Your Past Self - { - //todo - } - } - //add client side stuff + @Override + protected void performEffect(ISpiritweb data) + { + //Reveals Your Past Self + { + //todo + } + } + //add client side stuff } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 60bf981ce..4d28f5055 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -14,22 +14,22 @@ import leaf.cosmere.utils.helpers.CodecHelper; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.VectorHelper; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; import net.minecraft.client.Minecraft; -import net.minecraft.client.entity.player.ClientPlayerEntity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.item.ItemEntity; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTDynamicOps; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.BlockRayTraceResult; -import net.minecraft.util.math.EntityRayTraceResult; -import net.minecraft.util.math.RayTraceResult; -import net.minecraft.util.math.vector.Vector3d; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -40,240 +40,235 @@ public class AllomancyIronSteel extends AllomancyBase { - private final boolean isPush; - - public AllomancyIronSteel(Metals.MetalType metalType) - { - super(metalType); - this.isPush = metalType == Metals.MetalType.STEEL; - } - - @Override - public void performEffect(ISpiritweb data) - { - if (data.getLiving().level.isClientSide) - { - performEffectClient(data); - } - else - { - performEffectServer(data); - } - } - - private List blocks; - private List entities; - - @OnlyIn(Dist.CLIENT) - private void performEffectClient(ISpiritweb cap) - { - boolean hasChanged = false; - SpiritwebCapability data = (SpiritwebCapability) cap; - blocks = isPush ? data.pushBlocks : data.pullBlocks; - entities = isPush ? data.pushEntities : data.pullEntities; - - //Pushes on Nearby Metals - if (getKeyBinding().isDown()) - { - Minecraft mc = Minecraft.getInstance(); - RayTraceResult ray = cap.getLiving().pick(getRange(cap), 0, false); - - if (ray.getType() == RayTraceResult.Type.BLOCK && !blocks.contains(((BlockRayTraceResult) ray).getBlockPos())) - { - BlockPos pos = ((BlockRayTraceResult) ray).getBlockPos(); - //todo check block is of ihasmetal type - BlockState state = mc.level.getBlockState(pos); - if (state.getBlock() instanceof IHasMetalType) - { - blocks.add(pos.immutable()); - - if (blocks.size() > 5) - { - blocks.remove(0); - } - hasChanged = true; - } - } - else if (ray.getType() == RayTraceResult.Type.ENTITY && !entities.contains(((EntityRayTraceResult) ray).getEntity().getId())) - { - //todo check for metal - entities.add(((EntityRayTraceResult) ray).getEntity().getId()); - - if (entities.size() > 5) - { - entities.remove(0); - } - hasChanged = true; - } - } - else - { - //clear list - if (blocks.size() > 0) - { - blocks.clear(); - hasChanged = true; - } - if (entities.size() > 0) - { - entities.clear(); - hasChanged = true; - } - - } - - //sync the move things. - //we don't let the spirit web sync from client back to server, so this is needed. - if (hasChanged) - { - CompoundNBT nbt = new CompoundNBT(); - - final String pushBlocks = "pushBlocks"; - final String pullBlocks = "pullBlocks"; - String target = isPush ? pushBlocks : pullBlocks; - - CodecHelper.BlockPosListCodec.encodeStart(NBTDynamicOps.INSTANCE, blocks) - .resultOrPartial(LogHelper.LOGGER::error) - .ifPresent(inbt1 -> nbt.put(target, inbt1)); - - Network.sendToServer(new SyncPushPullMessage(nbt)); - } - } - - private void performEffectServer(ISpiritweb cap) - { - if (cap.getLiving().tickCount % 3 == 0) - { - return; - } - - //perform the entity move thing. - SpiritwebCapability data = (SpiritwebCapability) cap; - blocks = isPush ? data.pushBlocks : data.pullBlocks; - entities = isPush ? data.pushEntities : data.pullEntities; - - int blockListCount = blocks.size(); - - if (blockListCount == 0) - { - return; - } - - LivingEntity living = data.getLiving(); - Vector3d direction; - float renderPartialTicks = Minecraft.getInstance().getFrameTime(); - - double strength = getStrength(cap); - - for (int i = blockListCount - 1; i >= 0; i--) - { - BlockPos blockPos = blocks.get(i); - if (!isPush && blockPos.distManhattan(living.blockPosition()) < 2) - { - //stop shoving the user into the block - continue; - } - - - //if the entity is in range of being able to push or pull from - double maxDistance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; - if (blockPos.closerThan(living.position(), maxDistance)) - { - Vector3d blockCenter = Vector3d.atCenterOf(blockPos); - - direction = VectorHelper.getDirection( - blockCenter, - living.position(), - (isPush ? -1f : 2f) * renderPartialTicks); - - //todo, clean up all the unnecessary calculations once we find what feels good at run time - Vector3d normalize = direction.normalize(); - - double shortenFactor = isPush ? 0.2 : 0.4; - Vector3d add = living.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); - - //don't let the motion go crazy large - living.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); - - //let people get damaged but not too much? - //todo check what a good max fall distance would be - //todo add to config - if (living.fallDistance > 3) - { - living.fallDistance = Math.min(living.fallDistance, 3); - } - } - else - { - //remove blocks that are out of distance - blocks.remove(i); - } - } - living.hurtMarked = true; - } - - private static List found = new ArrayList<>(); - - @OnlyIn(Dist.CLIENT) - public static List getDrawLines(int range) - { - Minecraft mc = Minecraft.getInstance(); - ClientPlayerEntity playerEntity = mc.player; - //only update box list every so often - if (playerEntity.tickCount % 5 != 0 && found.size() > 0) - { - return found; - } - - found.clear(); - - //find all the things that we want to draw a line to from the player - - //todo stop aluminum showing up, check IHasMetalType.getMetalType != aluminum - - //metal blocks - BlockPos.withinManhattanStream(playerEntity.blockPosition(), range, range, range) - .filter(blockPos -> - { - Block block = playerEntity.level.getBlockState(blockPos).getBlock(); - - if (block instanceof IHasMetalType) - { - return true; - } - - return false; - }) - .forEach(blockPos -> found.add(new Vector3d(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5))); - - - //entities with metal armor/tools - - getEntitiesInRange(playerEntity, range, false).forEach(entity -> - { - if (entity instanceof LivingEntity) - { - //check for metal items on the entity - - } - else if (entity instanceof ItemEntity) - { - ItemStack stack = ((ItemEntity) entity).getItem(); - Item item = stack.getItem(); - - if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType) - { - found.add(entity.position()); - } - else if (item instanceof IHasMetalType) - { - found.add(entity.position()); - } - } - }); - - return found; - } + private final boolean isPush; + + public AllomancyIronSteel(Metals.MetalType metalType) + { + super(metalType); + this.isPush = metalType == Metals.MetalType.STEEL; + } + + @Override + public void performEffect(ISpiritweb data) + { + if (data.getLiving().level.isClientSide) + { + performEffectClient(data); + } + else + { + performEffectServer(data); + } + } + + private List blocks; + private List entities; + + @OnlyIn(Dist.CLIENT) + private void performEffectClient(ISpiritweb cap) + { + boolean hasChanged = false; + SpiritwebCapability data = (SpiritwebCapability) cap; + blocks = isPush ? data.pushBlocks : data.pullBlocks; + entities = isPush ? data.pushEntities : data.pullEntities; + + //Pushes on Nearby Metals + if (getKeyBinding().isDown()) + { + Minecraft mc = Minecraft.getInstance(); + HitResult ray = cap.getLiving().pick(getRange(cap), 0, false); + + if (ray.getType() == HitResult.Type.BLOCK && !blocks.contains(((BlockHitResult) ray).getBlockPos())) + { + BlockPos pos = ((BlockHitResult) ray).getBlockPos(); + //todo check block is of ihasmetal type + BlockState state = mc.level.getBlockState(pos); + if (state.getBlock() instanceof IHasMetalType) + { + blocks.add(pos.immutable()); + + if (blocks.size() > 5) + { + blocks.remove(0); + } + hasChanged = true; + } + } + else if (ray.getType() == HitResult.Type.ENTITY && !entities.contains(((EntityHitResult) ray).getEntity().getId())) + { + //todo check for metal + entities.add(((EntityHitResult) ray).getEntity().getId()); + + if (entities.size() > 5) + { + entities.remove(0); + } + hasChanged = true; + } + } + else + { + //clear list + if (blocks.size() > 0) + { + blocks.clear(); + hasChanged = true; + } + if (entities.size() > 0) + { + entities.clear(); + hasChanged = true; + } + + } + + //sync the move things. + //we don't let the spirit web sync from client back to server, so this is needed. + if (hasChanged) + { + CompoundTag nbt = new CompoundTag(); + + final String pushBlocks = "pushBlocks"; + final String pullBlocks = "pullBlocks"; + String target = isPush ? pushBlocks : pullBlocks; + + CodecHelper.BlockPosListCodec.encodeStart(NbtOps.INSTANCE, blocks) + .resultOrPartial(LogHelper.LOGGER::error) + .ifPresent(inbt1 -> nbt.put(target, inbt1)); + + Network.sendToServer(new SyncPushPullMessage(nbt)); + } + } + + private void performEffectServer(ISpiritweb cap) + { + if (cap.getLiving().tickCount % 3 == 0) + { + return; + } + + //perform the entity move thing. + SpiritwebCapability data = (SpiritwebCapability) cap; + blocks = isPush ? data.pushBlocks : data.pullBlocks; + entities = isPush ? data.pushEntities : data.pullEntities; + + int blockListCount = blocks.size(); + + if (blockListCount == 0) + { + return; + } + + LivingEntity living = data.getLiving(); + Vec3 direction; + float renderPartialTicks = Minecraft.getInstance().getFrameTime(); + + double strength = getStrength(cap); + + for (int i = blockListCount - 1; i >= 0; i--) + { + BlockPos blockPos = blocks.get(i); + if (!isPush && blockPos.distManhattan(living.blockPosition()) < 2) + { + //stop shoving the user into the block + continue; + } + + + //if the entity is in range of being able to push or pull from + double maxDistance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; + if (blockPos.closerThan(living.blockPosition(), maxDistance)) + { + Vec3 blockCenter = Vec3.atCenterOf(blockPos); + + direction = VectorHelper.getDirection( + blockCenter, + living.position(), + (isPush ? -1f : 2f) * renderPartialTicks); + + //todo, clean up all the unnecessary calculations once we find what feels good at run time + Vec3 normalize = direction.normalize(); + + double shortenFactor = isPush ? 0.2 : 0.4; + Vec3 add = living.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); + + //don't let the motion go crazy large + living.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); + + //let people get damaged but not too much? + //todo check what a good max fall distance would be + //todo add to config + if (living.fallDistance > 3) + { + living.fallDistance = Math.min(living.fallDistance, 3); + } + } + else + { + //remove blocks that are out of distance + blocks.remove(i); + } + } + living.hurtMarked = true; + } + + private static final List found = new ArrayList<>(); + + @OnlyIn(Dist.CLIENT) + public static List getDrawLines(int range) + { + Minecraft mc = Minecraft.getInstance(); + LocalPlayer playerEntity = mc.player; + //only update box list every so often + if (playerEntity.tickCount % 5 != 0 && found.size() > 0) + { + return found; + } + + found.clear(); + + //find all the things that we want to draw a line to from the player + + //todo stop aluminum showing up, check IHasMetalType.getMetalType != aluminum + + //metal blocks + BlockPos.withinManhattanStream(playerEntity.blockPosition(), range, range, range) + .filter(blockPos -> + { + Block block = playerEntity.level.getBlockState(blockPos).getBlock(); + + return block instanceof IHasMetalType; + }) + .forEach(blockPos -> found.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5))); + + + //entities with metal armor/tools + + getEntitiesInRange(playerEntity, range, false).forEach(entity -> + { + if (entity instanceof LivingEntity) + { + //check for metal items on the entity + + } + else if (entity instanceof ItemEntity) + { + ItemStack stack = ((ItemEntity) entity).getItem(); + Item item = stack.getItem(); + + if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType) + { + found.add(entity.position()); + } + else if (item instanceof IHasMetalType) + { + found.add(entity.position()); + } + } + }); + + return found; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java index 36bf2c7db..0f5fa6b3a 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java @@ -7,72 +7,72 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraft.potion.EffectInstance; -import net.minecraft.util.math.MathHelper; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; public class AllomancyNicrosil extends AllomancyBase { - public AllomancyNicrosil(Metals.MetalType metalType) - { - super(metalType); - MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); - } + public AllomancyNicrosil(Metals.MetalType metalType) + { + super(metalType); + MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); + } - //active or not active - @Override - public int modeMax(ISpiritweb data) - { - return 1; - } + //active or not active + @Override + public int modeMax(ISpiritweb data) + { + return 1; + } - @Override - public int modeMin(ISpiritweb data) - { - return 0; - } + @Override + public int modeMin(ISpiritweb data) + { + return 0; + } - @Override - public boolean modeWraps(ISpiritweb data) - { - return false; - } + @Override + public boolean modeWraps(ISpiritweb data) + { + return false; + } - //Enhances Allomantic Burn of Target - @SubscribeEvent - public void onLivingHurtEvent(LivingHurtEvent event) - { - Entity trueSource = event.getSource().getEntity(); - if (trueSource instanceof PlayerEntity) - { - SpiritwebCapability.get((LivingEntity) trueSource).ifPresent(iSpiritweb -> - { - ItemStack itemInHand = iSpiritweb.getLiving().getMainHandItem(); + //Enhances Allomantic Burn of Target + @SubscribeEvent + public void onLivingHurtEvent(LivingHurtEvent event) + { + Entity trueSource = event.getSource().getEntity(); + if (trueSource instanceof Player) + { + SpiritwebCapability.get((LivingEntity) trueSource).ifPresent(iSpiritweb -> + { + ItemStack itemInHand = iSpiritweb.getLiving().getMainHandItem(); - if (itemInHand.isEmpty()) - { - //if manifestation is active and has nicrosil metal to burn - if (isActive(iSpiritweb)) - { - //valid set up found. - EffectInstance newEffect = EffectsHelper.getNewEffect( - EffectsRegistry.ALLOMANCY_BOOST.get(), - MathHelper.floor(getStrength(iSpiritweb)) - ); + if (itemInHand.isEmpty()) + { + //if manifestation is active and has nicrosil metal to burn + if (isActive(iSpiritweb)) + { + //valid set up found. + MobEffectInstance newEffect = EffectsHelper.getNewEffect( + EffectsRegistry.ALLOMANCY_BOOST.get(), + Mth.floor(getStrength(iSpiritweb)) + ); - //apply to the hit entity - event.getEntityLiving().addEffect(newEffect); - } - } - }); - } - } + //apply to the hit entity + event.getEntityLiving().addEffect(newEffect); + } + } + }); + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java index 2fa69100e..85d881aa8 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java @@ -7,37 +7,37 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; public class AllomancyPewter extends AllomancyBase { - public AllomancyPewter(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyPewter(Metals.MetalType metalType) + { + super(metalType); + } - @Override - protected void performEffect(ISpiritweb data) - { - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; + @Override + protected void performEffect(ISpiritweb data) + { + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; - //Increases Physical Abilities - if (isActiveTick) - { - int mode = data.getMode(manifestationType, getMetalType().getID()); - livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.MOVEMENT_SPEED, 0)); - switch (mode) - { - case 3: - case 2: - livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DIG_SPEED, 0)); - livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DAMAGE_RESISTANCE, mode - 2)); - case 1: - livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.DAMAGE_BOOST, mode - 1)); - break; - } - } - } + //Increases Physical Abilities + if (isActiveTick) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); + livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SPEED, 0)); + switch (mode) + { + case 3: + case 2: + livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DIG_SPEED, 0)); + livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DAMAGE_RESISTANCE, mode - 2)); + case 1: + livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DAMAGE_BOOST, mode - 1)); + break; + } + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java index e53270470..6f7343788 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java @@ -10,10 +10,10 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; import net.minecraft.client.Minecraft; -import net.minecraft.client.audio.ISound; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.Effects; +import net.minecraft.client.resources.sounds.SoundInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.sound.PlaySoundEvent; @@ -23,45 +23,45 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class AllomancyTin extends AllomancyBase { - public AllomancyTin(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyTin(Metals.MetalType metalType) + { + super(metalType); + } - @Override - protected void performEffect(ISpiritweb data) - { - //Increases Physical Senses - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; + @Override + protected void performEffect(ISpiritweb data) + { + //Increases Physical Senses + LivingEntity livingEntity = data.getLiving(); + boolean isActiveTick = livingEntity.tickCount % 20 == 0; - //give night vision - if (isActiveTick) - { - livingEntity.addEffect(EffectsHelper.getNewEffect(Effects.NIGHT_VISION, 0)); - } - } + //give night vision + if (isActiveTick) + { + livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.NIGHT_VISION, 0)); + } + } - @OnlyIn(Dist.CLIENT) - @SubscribeEvent - public void onSound(PlaySoundEvent event) - { - ISound eventSound = event.getSound(); + @OnlyIn(Dist.CLIENT) + @SubscribeEvent + public void onSound(PlaySoundEvent event) + { + SoundInstance eventSound = event.getSound(); - if ((eventSound == null)) - { - return; - } + if ((eventSound == null)) + { + return; + } - PlayerEntity localPlayer = Minecraft.getInstance().player; + Player localPlayer = Minecraft.getInstance().player; - SpiritwebCapability.get(localPlayer).ifPresent(playerSpiritweb -> - { - if (isActive(playerSpiritweb)) - { - //todo make the entity glow or something to the user? - } - }); - } + SpiritwebCapability.get(localPlayer).ifPresent(playerSpiritweb -> + { + if (isActive(playerSpiritweb)) + { + //todo make the entity glow or something to the user? + } + }); + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index ce70bfbeb..388e886c3 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -7,8 +7,8 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.MathHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.MobEntity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Mob; import java.util.List; @@ -16,55 +16,55 @@ public class AllomancyZinc extends AllomancyBase { - public AllomancyZinc(Metals.MetalType metalType) - { - super(metalType); - } + public AllomancyZinc(Metals.MetalType metalType) + { + super(metalType); + } - //Inflames Emotions - //make hostiles target you but also make non-hostiles target hostiles? - @Override - protected void performEffect(ISpiritweb data) - { - int mode = data.getMode(manifestationType, getMetalType().getID()); + //Inflames Emotions + //make hostiles target you but also make non-hostiles target hostiles? + @Override + protected void performEffect(ISpiritweb data) + { + int mode = data.getMode(manifestationType, getMetalType().getID()); - //todo, replace x * mode with config based value - double allomanticStrength = getStrength(data); + //todo, replace x * mode with config based value + double allomanticStrength = getStrength(data); - int range = (int) (allomanticStrength * mode); + int range = (int) (allomanticStrength * mode); - List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); + List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); - for (LivingEntity e : entitiesToAffect) - { - if (e instanceof MobEntity) - { - MobEntity mob = (MobEntity) e; + for (LivingEntity e : entitiesToAffect) + { + if (e instanceof Mob) + { + Mob mob = (Mob) e; - //mob.targetSelector.enableFlag(Goal.Flag.TARGET); - mob.setNoAi(false); + //mob.targetSelector.enableFlag(Goal.Flag.TARGET); + mob.setNoAi(false); - switch (mode) - { - case 3: - if (mob.getTarget() == null) - { - LivingEntity attackTarget = entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1)); - mob.setTarget(attackTarget); - } - case 2: - if (mob.getLastHurtByMob() == null) - { - mob.setLastHurtByMob(mob.getTarget() != null ? mob.getTarget() - : entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1))); - } + switch (mode) + { + case 3: + if (mob.getTarget() == null) + { + LivingEntity attackTarget = entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1)); + mob.setTarget(attackTarget); + } + case 2: + if (mob.getLastHurtByMob() == null) + { + mob.setLastHurtByMob(mob.getTarget() != null ? mob.getTarget() + : entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1))); + } - case 1: - default: - mob.setAggressive(true); - } - } - } + case 1: + default: + mob.setAggressive(true); + } + } + } - } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java index 954b0fa2f..c15255568 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java @@ -9,21 +9,21 @@ public class FeruchemyAluminum extends FeruchemyBase { - public FeruchemyAluminum(Metals.MetalType metalType) - { - super(metalType); - } + public FeruchemyAluminum(Metals.MetalType metalType) + { + super(metalType); + } - @Override - public int modeMin(ISpiritweb data) - { - return -1; - } + @Override + public int modeMin(ISpiritweb data) + { + return -1; + } - @Override - public int modeMax(ISpiritweb data) - { - return 1; - } + @Override + public int modeMax(ISpiritweb data) + { + return 1; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 3ad9bf68e..a9bc6d0d7 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -8,134 +8,134 @@ import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; -import leaf.cosmere.registry.AttributesRegistry; -import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.manifestation.ManifestationBase; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; -import net.minecraftforge.fml.RegistryObject; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraftforge.registries.RegistryObject; public class FeruchemyBase extends ManifestationBase implements IHasMetalType { - protected final Metals.MetalType metalType; - - public FeruchemyBase(Metals.MetalType metalType) - { - super(Manifestations.ManifestationTypes.FERUCHEMY, metalType.getColorValue()); - this.metalType = metalType; - } - - @Override - public int getPowerID() - { - return metalType.getID(); - } - - @Override - public Metals.MetalType getMetalType() - { - return this.metalType; - } - - @Override - public boolean modeWraps(ISpiritweb data) - { - return false; - } - - //storing is positive, eg adding to store - @Override - public int modeMax(ISpiritweb data) - { - return 3; - } - - //tapping is negative, eg taking from store - @Override - public int modeMin(ISpiritweb data) - { - return -10; - } - - @Override - public void tick(ISpiritweb data) - { - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - - if (livingEntity.tickCount % 20 != 0) - { - return; - } - - int mode = data.getMode(manifestationType, metalType.getID()); - - int cost; - - Effect effect = getEffect(mode); - - // if we are tapping - //check if there is charges to tap - if (mode < 0) - { - //wanting to tap - //get cost - cost = mode <= -3 ? -(mode * mode) : mode; - - } - //if we are storing - //check if there is space to store - else if (mode > 0) - { - cost = mode; - } - //can't store or tap any more - else - { - //remove active effects. - //let the current effect run out. - return; - } - - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) - { - EffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - - if (effect == null) - { - return; - } - - livingEntity.addEffect(currentEffect); - } - - } - - protected Effect getEffect(int mode) - { - if (mode == 0) - { - return null; - } - else if (mode < 0) - { - return metalType.getTappingEffect(); - } - else - { - return metalType.getStoringEffect(); - } - - } - - public double getStrength(ISpiritweb cap) - { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); - ModifiableAttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); - return attribute != null ? attribute.getValue() : 0; - } + protected final Metals.MetalType metalType; + + public FeruchemyBase(Metals.MetalType metalType) + { + super(Manifestations.ManifestationTypes.FERUCHEMY, metalType.getColorValue()); + this.metalType = metalType; + } + + @Override + public int getPowerID() + { + return metalType.getID(); + } + + @Override + public Metals.MetalType getMetalType() + { + return this.metalType; + } + + @Override + public boolean modeWraps(ISpiritweb data) + { + return false; + } + + //storing is positive, eg adding to store + @Override + public int modeMax(ISpiritweb data) + { + return 3; + } + + //tapping is negative, eg taking from store + @Override + public int modeMin(ISpiritweb data) + { + return -10; + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + if (livingEntity.tickCount % 20 != 0) + { + return; + } + + int mode = data.getMode(manifestationType, metalType.getID()); + + int cost; + + MobEffect effect = getEffect(mode); + + // if we are tapping + //check if there is charges to tap + if (mode < 0) + { + //wanting to tap + //get cost + cost = mode <= -3 ? -(mode * mode) : mode; + + } + //if we are storing + //check if there is space to store + else if (mode > 0) + { + cost = mode; + } + //can't store or tap any more + else + { + //remove active effects. + //let the current effect run out. + return; + } + + if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) + { + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); + + if (effect == null) + { + return; + } + + livingEntity.addEffect(currentEffect); + } + + } + + protected MobEffect getEffect(int mode) + { + if (mode == 0) + { + return null; + } + else if (mode < 0) + { + return metalType.getTappingEffect(); + } + else + { + return metalType.getStoringEffect(); + } + + } + + public double getStrength(ISpiritweb cap) + { + RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); + AttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); + return attribute != null ? attribute.getValue() : 0; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java index 2c76f4687..962595b54 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -4,204 +4,197 @@ package leaf.cosmere.manifestation.feruchemy; -import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import net.minecraft.advancements.CriteriaTriggers; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.Pose; -import net.minecraft.entity.monster.MonsterEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.entity.player.ServerPlayerEntity; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; -import net.minecraft.util.math.AxisAlignedBB; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.event.entity.player.SleepingLocationCheckEvent; import net.minecraftforge.eventbus.api.Event; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.common.ObfuscationReflectionHelper; +import net.minecraftforge.fml.util.ObfuscationReflectionHelper; import java.util.List; import java.util.Optional; public class FeruchemyBronze extends FeruchemyBase { - public FeruchemyBronze(Metals.MetalType metalType) - { - super(metalType); - MinecraftForge.EVENT_BUS.addListener(this::sleepCheck); - } - - @Override - public int modeMin(ISpiritweb data) - { - return 0; - } - - @Override - public int modeMax(ISpiritweb data) - { - return 1; - } - - @Override - public void tick(ISpiritweb data) - { - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - - if (!(livingEntity instanceof ServerPlayerEntity) || livingEntity.tickCount % 20 != 0) - { - return; - } - - int mode = data.getMode(manifestationType, metalType.getID()); - - //can't store or tap any more - if (mode == 0) - { - //remove active effects. - //let the current effect run out. - return; - } - - trySleep(data); - - } - - private void trySleep(ISpiritweb data) - { - ServerPlayerEntity player = (ServerPlayerEntity) data.getLiving(); - - boolean canSleep = canSleep(player); - - if (!canSleep) - { - //todo add message to player saying can't sleep - data.setMode(this.manifestationType, this.metalType.getID(), 0); - return; - } - - - player.resetStat(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)); - if (player.isPassenger()) - { - player.stopRiding(); - } - - try - { - player.setPose(Pose.SLEEPING); + public FeruchemyBronze(Metals.MetalType metalType) + { + super(metalType); + MinecraftForge.EVENT_BUS.addListener(this::sleepCheck); + } + + @Override + public int modeMin(ISpiritweb data) + { + return 0; + } + + @Override + public int modeMax(ISpiritweb data) + { + return 1; + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + if (!(livingEntity instanceof ServerPlayer) || livingEntity.tickCount % 20 != 0) + { + return; + } + + int mode = data.getMode(manifestationType, metalType.getID()); + + //can't store or tap any more + if (mode == 0) + { + //remove active effects. + //let the current effect run out. + return; + } + + trySleep(data); + + } + + private void trySleep(ISpiritweb data) + { + ServerPlayer player = (ServerPlayer) data.getLiving(); + + boolean canSleep = canSleep(player); + + if (!canSleep) + { + //todo add message to player saying can't sleep + data.setMode(this.manifestationType, this.metalType.getID(), 0); + return; + } + + + player.resetStat(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)); + if (player.isPassenger()) + { + player.stopRiding(); + } + + try + { + player.setPose(Pose.SLEEPING); /* Method setPose = ObfuscationReflectionHelper.findMethod(Entity.class, "func_213301_b", Pose.class); setPose.invoke(player, Pose.SLEEPING); */ - } - catch (Exception e) - { - } - player.setSleepingPos(player.blockPosition()); - player.setDeltaMovement(Vector3d.ZERO); - player.hasImpulse = true; - - try - { - //sleepCounter - ObfuscationReflectionHelper.setPrivateValue(PlayerEntity.class, player, 0, "field_71076_b"); - } - catch (ObfuscationReflectionHelper.UnableToFindFieldException e) - { - try - { - //sleepCounter - ObfuscationReflectionHelper.setPrivateValue(PlayerEntity.class, player, 0, "sleepCounter"); - } - catch (ObfuscationReflectionHelper.UnableToFindFieldException unableToFindFieldException) - { - } - } - - if (player.level instanceof ServerWorld) - { - ((ServerWorld) player.level).updateSleepingPlayerList(); - } - - - player.awardStat(Stats.SLEEP_IN_BED); - CriteriaTriggers.SLEPT_IN_BED.trigger(player); - - data.setMode(this.manifestationType, this.metalType.getID(), 0); - - } - - private boolean canSleep(PlayerEntity player) - { - PlayerEntity.SleepResult ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(player, Optional.empty()); - if (ret != null) - { - return false; - } - - if (player.isSleeping() || !player.isAlive()) - { - return false;//(PlayerEntity.SleepResult.OTHER_PROBLEM); - } - - if (!player.level.dimensionType().natural()) - { - return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_HERE); - } - if (player.level.isDay()) - { - return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); - } - - if (!ForgeEventFactory.fireSleepingTimeCheck(player, Optional.empty())) - { - return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); - } - - if (!player.isCreative()) - { - Vector3d vector3d = player.position(); - List list = player.level.getEntitiesOfClass( - MonsterEntity.class, - new AxisAlignedBB( - vector3d.x() - 8D, - vector3d.y() - 5D, - vector3d.z() - 8D, - vector3d.x() + 8D, - vector3d.y() + 5D, - vector3d.z() + 8D), - (entity) -> entity.isPreventingPlayerRest(player)); - - if (!list.isEmpty()) - { - return false; //(PlayerEntity.SleepResult.NOT_SAFE); - } - } - - return true; - } - - public void sleepCheck(SleepingLocationCheckEvent event) - { - if (event.getEntityLiving() instanceof PlayerEntity) - { - SpiritwebCapability.get(event.getEntityLiving()).ifPresent(iSpiritweb -> - { - if (iSpiritweb.hasManifestation(this.manifestationType, this.metalType.getID())) - { - event.setResult(Event.Result.ALLOW); - } - }); - - } - } + } + catch (Exception e) + { + } + player.setSleepingPos(player.blockPosition()); + player.setDeltaMovement(Vec3.ZERO); + player.hasImpulse = true; + + try + { + //sleepCounter + ObfuscationReflectionHelper.setPrivateValue(Player.class, player, 0, "field_71076_b"); + } + catch (ObfuscationReflectionHelper.UnableToFindFieldException e) + { + try + { + //sleepCounter + ObfuscationReflectionHelper.setPrivateValue(Player.class, player, 0, "sleepCounter"); + } + catch (ObfuscationReflectionHelper.UnableToFindFieldException unableToFindFieldException) + { + } + } + + if (player.level instanceof ServerLevel) + { + ((ServerLevel) player.level).updateSleepingPlayerList(); + } + + + player.awardStat(Stats.SLEEP_IN_BED); + CriteriaTriggers.SLEPT_IN_BED.trigger(player); + + data.setMode(this.manifestationType, this.metalType.getID(), 0); + + } + + private boolean canSleep(Player player) + { + Player.BedSleepingProblem ret = net.minecraftforge.event.ForgeEventFactory.onPlayerSleepInBed(player, Optional.empty()); + if (ret != null) + { + return false; + } + + if (player.isSleeping() || !player.isAlive()) + { + return false;//(PlayerEntity.SleepResult.OTHER_PROBLEM); + } + + if (!player.level.dimensionType().natural()) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_HERE); + } + if (player.level.isDay()) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); + } + + if (!ForgeEventFactory.fireSleepingTimeCheck(player, Optional.empty())) + { + return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); + } + + if (!player.isCreative()) + { + Vec3 vector3d = player.position(); + List list = player.level.getEntitiesOfClass( + Monster.class, + new AABB( + vector3d.x() - 8D, + vector3d.y() - 5D, + vector3d.z() - 8D, + vector3d.x() + 8D, + vector3d.y() + 5D, + vector3d.z() + 8D), + (entity) -> entity.isPreventingPlayerRest(player)); + + return list.isEmpty(); //(PlayerEntity.SleepResult.NOT_SAFE); + } + + return true; + } + + public void sleepCheck(SleepingLocationCheckEvent event) + { + if (event.getEntityLiving() instanceof Player) + { + SpiritwebCapability.get(event.getEntityLiving()).ifPresent(iSpiritweb -> + { + if (iSpiritweb.hasManifestation(this.manifestationType, this.metalType.getID())) + { + event.setResult(Event.Result.ALLOW); + } + }); + + } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index 97ebcea8c..bc6ad3d4b 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -9,122 +9,122 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.utils.helpers.XPHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; public class FeruchemyCopper extends FeruchemyBase { - public FeruchemyCopper(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - public int modeMin(ISpiritweb data) - { - return -20; - } - - @Override - public int modeMax(ISpiritweb data) - { - return 20; - } - - @Override - public void tick(ISpiritweb data) - { - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - - if (!(livingEntity instanceof PlayerEntity) || livingEntity.tickCount % 20 != 0) - { - return; - } - PlayerEntity playerEntity = (PlayerEntity) livingEntity; - - int mode = data.getMode(manifestationType, metalType.getID()); - - //can't store or tap any more - if (mode == 0) - { - //remove active effects. - //let the current effect run out. - return; - } - - performXPAdjustment(playerEntity, mode); - - } - - private int getCost(int mode) - { - // if we are tapping - //check if there is charges to tap - if (mode < 0) - { - //wanting to tap - //get cost - return mode <= -3 ? -(mode * mode) : mode; - - } - //if we are storing - //check if there is space to store - else if (mode > 0) - { - return mode; - } - return 0; - } - - - private void performXPAdjustment(PlayerEntity playerEntity, int mode) - { - int cost = getCost(mode); - int experiencePoints = playerEntity.isCreative() ? 10 : cost; - - if (playerEntity.totalExperience > cost && MetalmindChargeHelper.adjustMetalmindChargeExact(playerEntity, metalType, -experiencePoints, true, true) != null) - { - //successfully added xp to metalmind - - if (!playerEntity.isCreative()) - { - //adjust player xp - - if (cost > 0) // active storage - { - decreasePlayerExperience(playerEntity, cost); - } - else // tapping storage - { - playerEntity.giveExperiencePoints(-cost); - } - - } - - - Effect effect = getEffect(mode); - - EffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - - //potion effect doesn't do anything other than tell the player they are storing. - playerEntity.addEffect(currentEffect); - } - } - - - //why does minecraft not have functions that handle this better - //unless it does, in which case I'm a goober who can't read. - //either way, thank you xreliquary and P3pp3rF1y showing their example of decreasing player xp nicely. - //https://github.com/P3pp3rF1y/Reliquary/blob/1.16.x/src/main/java/xreliquary/items/HeroMedallionItem.java - private void decreasePlayerExperience(PlayerEntity player, int pointsToRemove) - { - player.totalExperience -= pointsToRemove; - int newLevel = XPHelper.getLevelForExperience(player.totalExperience); - player.experienceLevel = newLevel; - player.experienceProgress = (float) (player.totalExperience - XPHelper.getExperienceForLevel(newLevel)) / player.getXpNeededForNextLevel(); - } + public FeruchemyCopper(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public int modeMin(ISpiritweb data) + { + return -20; + } + + @Override + public int modeMax(ISpiritweb data) + { + return 20; + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + if (!(livingEntity instanceof Player) || livingEntity.tickCount % 20 != 0) + { + return; + } + Player playerEntity = (Player) livingEntity; + + int mode = data.getMode(manifestationType, metalType.getID()); + + //can't store or tap any more + if (mode == 0) + { + //remove active effects. + //let the current effect run out. + return; + } + + performXPAdjustment(playerEntity, mode); + + } + + private int getCost(int mode) + { + // if we are tapping + //check if there is charges to tap + if (mode < 0) + { + //wanting to tap + //get cost + return mode <= -3 ? -(mode * mode) : mode; + + } + //if we are storing + //check if there is space to store + else if (mode > 0) + { + return mode; + } + return 0; + } + + + private void performXPAdjustment(Player playerEntity, int mode) + { + int cost = getCost(mode); + int experiencePoints = playerEntity.isCreative() ? 10 : cost; + + if (playerEntity.totalExperience > cost && MetalmindChargeHelper.adjustMetalmindChargeExact(playerEntity, metalType, -experiencePoints, true, true) != null) + { + //successfully added xp to metalmind + + if (!playerEntity.isCreative()) + { + //adjust player xp + + if (cost > 0) // active storage + { + decreasePlayerExperience(playerEntity, cost); + } + else // tapping storage + { + playerEntity.giveExperiencePoints(-cost); + } + + } + + + MobEffect effect = getEffect(mode); + + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); + + //potion effect doesn't do anything other than tell the player they are storing. + playerEntity.addEffect(currentEffect); + } + } + + + //why does minecraft not have functions that handle this better + //unless it does, in which case I'm a goober who can't read. + //either way, thank you xreliquary and P3pp3rF1y showing their example of decreasing player xp nicely. + //https://github.com/P3pp3rF1y/Reliquary/blob/1.16.x/src/main/java/xreliquary/items/HeroMedallionItem.java + private void decreasePlayerExperience(Player player, int pointsToRemove) + { + player.totalExperience -= pointsToRemove; + int newLevel = XPHelper.getLevelForExperience(player.totalExperience); + player.experienceLevel = newLevel; + player.experienceProgress = (float) (player.totalExperience - XPHelper.getExperienceForLevel(newLevel)) / player.getXpNeededForNextLevel(); + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java index c781382b0..df563aaaa 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java @@ -6,33 +6,33 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.EffectsRegistry; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.living.LivingHurtEvent; public class FeruchemyElectrum extends FeruchemyBase { - public FeruchemyElectrum(Metals.MetalType metalType) - { - super(metalType); - MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); - } - - public void onLivingHurtEvent(LivingHurtEvent event) - { - EffectInstance tapEffect = event.getEntityLiving().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(getMetalType()).get()); - EffectInstance storeEffect = event.getEntityLiving().getEffect(EffectsRegistry.STORING_EFFECTS.get(getMetalType()).get()); - - if (tapEffect != null && tapEffect.getDuration() > 0) - { - event.setAmount(event.getAmount() - ((tapEffect.getAmplifier() + 1) * 0.25f)); - } - - if (storeEffect != null && storeEffect.getDuration() > 0) - { - event.setAmount(event.getAmount() + ((storeEffect.getAmplifier() + 1) * 0.25f)); - } - - } + public FeruchemyElectrum(Metals.MetalType metalType) + { + super(metalType); + MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); + } + + public void onLivingHurtEvent(LivingHurtEvent event) + { + MobEffectInstance tapEffect = event.getEntityLiving().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(getMetalType()).get()); + MobEffectInstance storeEffect = event.getEntityLiving().getEffect(EffectsRegistry.STORING_EFFECTS.get(getMetalType()).get()); + + if (tapEffect != null && tapEffect.getDuration() > 0) + { + event.setAmount(event.getAmount() - ((tapEffect.getAmplifier() + 1) * 0.25f)); + } + + if (storeEffect != null && storeEffect.getDuration() > 0) + { + event.setAmount(event.getAmount() + ((storeEffect.getAmplifier() + 1) * 0.25f)); + } + + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 210f6b483..dd6aa5c52 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -8,77 +8,77 @@ import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Metals; import leaf.cosmere.utils.helpers.EffectsHelper; -import net.minecraft.entity.LivingEntity; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; //storing all the available powers on the user individually public class FeruchemyNicrosil extends FeruchemyBase { - public FeruchemyNicrosil(Metals.MetalType metalType) - { - super(metalType); - } - - @Override - public int modeMin(ISpiritweb data) - { - return -1; - } - - @Override - public int modeMax(ISpiritweb data) - { - return 1; - } - - @Override - public void tick(ISpiritweb data) - { - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); - - if (livingEntity.tickCount % 20 != 0) - { - return; - } - - int mode = data.getMode(manifestationType, metalType.getID()); - - int cost; - - Effect effect = getEffect(mode); - - // if we are tapping - //check if there is charges to tap - if (mode < 0) - { - //wanting to tap - //get cost - cost = mode <= -3 ? -(mode * mode) : mode; - - } - //if we are storing - //check if there is space to store - else if (mode > 0) - { - cost = mode; - } - //can't store or tap any more - else - { - //remove active effects. - //let the current effect run out. - return; - } - - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) - { - EffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - livingEntity.addEffect(currentEffect); - } - - } + public FeruchemyNicrosil(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public int modeMin(ISpiritweb data) + { + return -1; + } + + @Override + public int modeMax(ISpiritweb data) + { + return 1; + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + if (livingEntity.tickCount % 20 != 0) + { + return; + } + + int mode = data.getMode(manifestationType, metalType.getID()); + + int cost; + + MobEffect effect = getEffect(mode); + + // if we are tapping + //check if there is charges to tap + if (mode < 0) + { + //wanting to tap + //get cost + cost = mode <= -3 ? -(mode * mode) : mode; + + } + //if we are storing + //check if there is space to store + else if (mode > 0) + { + cost = mode; + } + //can't store or tap any more + else + { + //remove active effects. + //let the current effect run out. + return; + } + + if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) + { + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); + livingEntity.addEffect(currentEffect); + } + + } } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java index 46ca33d5c..fa32d65d5 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAbrasion.java @@ -4,18 +4,16 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeAbrasion extends SurgebindingBase { - public SurgeAbrasion(Roshar.Surges surge) - { - super(surge); - } + public SurgeAbrasion(Roshar.Surges surge) + { + super(surge); + } - //change frictional force + //change frictional force } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java index f66dc69bc..5b9bb1632 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeAdhesion.java @@ -4,21 +4,14 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; -import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; public class SurgeAdhesion extends SurgebindingBase { - public SurgeAdhesion(Roshar.Surges surge) - { - super(surge); - } + public SurgeAdhesion(Roshar.Surges surge) + { + super(surge); + } - //bind things together + //bind things together } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java index de0f5860d..30fc00c81 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeCohesion.java @@ -4,19 +4,17 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeCohesion extends SurgebindingBase { - public SurgeCohesion(Roshar.Surges surge) - { - super(surge); - } + public SurgeCohesion(Roshar.Surges surge) + { + super(surge); + } - // alter objects at a molecular level? - // moving through stone? + // alter objects at a molecular level? + // moving through stone? } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java index 04c6b4628..a80192fad 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeDivision.java @@ -11,11 +11,11 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeDivision extends SurgebindingBase { - public SurgeDivision(Roshar.Surges surge) - { - super(surge); - } + public SurgeDivision(Roshar.Surges surge) + { + super(surge); + } - //power over destruction and decay + //power over destruction and decay } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java index b651be85e..6e0fe9083 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java @@ -4,53 +4,50 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.item.ItemStack; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.entity.living.LivingHurtEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; //@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class SurgeGravitation extends SurgebindingBase { - public SurgeGravitation(Roshar.Surges surge) - { - super(surge); - } + public SurgeGravitation(Roshar.Surges surge) + { + super(surge); + } - //gravitational attraction + //gravitational attraction - //@SubscribeEvent - public void onLivingHurtEvent(LivingHurtEvent event) - { - if (event.getSource().getEntity() instanceof PlayerEntity) - { - PlayerEntity player = (PlayerEntity) event.getSource().getEntity(); - LogHelper.info(player.getName() + " has attacked a " + event.getEntityLiving().getName()); - //ISurgeState SState = player.getCapability(CosmereCapabilities.SURGE_STATE, null); + //@SubscribeEvent + public void onLivingHurtEvent(LivingHurtEvent event) + { + if (event.getSource().getEntity() instanceof Player) + { + Player player = (Player) event.getSource().getEntity(); + LogHelper.info(player.getName() + " has attacked a " + event.getEntityLiving().getName()); + //ISurgeState SState = player.getCapability(CosmereCapabilities.SURGE_STATE, null); - //String activeSurges = SState.getActiveSurgeName(); - ItemStack itemInHand = player.getMainHandItem(); + //String activeSurges = SState.getActiveSurgeName(); + ItemStack itemInHand = player.getMainHandItem(); - //windrunners like Szeth could launch enemies into the air to die cruelly by fall damage - if (false)//activeSurges.equals(Names.KnightOrders.WINDRUNNER) && itemInHand == null) - { - event.getEntityLiving().setPos(event.getEntityLiving().getX(), event.getEntityLiving().getY() + 0.1d, event.getEntityLiving().getZ()); - event.getEntityLiving().setOnGround(false); - event.getEntityLiving().setJumping(true); + //windrunners like Szeth could launch enemies into the air to die cruelly by fall damage + if (false)//activeSurges.equals(Names.KnightOrders.WINDRUNNER) && itemInHand == null) + { + event.getEntityLiving().setPos(event.getEntityLiving().getX(), event.getEntityLiving().getY() + 0.1d, event.getEntityLiving().getZ()); + event.getEntityLiving().setOnGround(false); + event.getEntityLiving().setJumping(true); - event.getEntityLiving().setDeltaMovement(0, 5, 0); + event.getEntityLiving().setDeltaMovement(0, 5, 0); - //IPlayerStats PS = player.getCapability(CosmereCapabilities.PLAYER_STATS, null); - //PS.remSL(100);//remove some stormlight as if it costs to hit - //PacketDispatcher.sendTo(new SyncSurgeData(player.getCapability(CosmereCapabilities.SURGE_STATE, null), player.getCapability(CosmereCapabilities.PLAYER_STATS, null)), (PlayerEntityMP) player); - } - } + //IPlayerStats PS = player.getCapability(CosmereCapabilities.PLAYER_STATS, null); + //PS.remSL(100);//remove some stormlight as if it costs to hit + //PacketDispatcher.sendTo(new SyncSurgeData(player.getCapability(CosmereCapabilities.SURGE_STATE, null), player.getCapability(CosmereCapabilities.PLAYER_STATS, null)), (PlayerEntityMP) player); + } + } - } + } } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java index 940492b75..1ae149305 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeIllumination.java @@ -4,18 +4,16 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeIllumination extends SurgebindingBase { - public SurgeIllumination(Roshar.Surges surge) - { - super(surge); - } + public SurgeIllumination(Roshar.Surges surge) + { + super(surge); + } - //illusions + //illusions } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java index a67051cc6..ad9a03c9c 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeProgression.java @@ -4,18 +4,16 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeProgression extends SurgebindingBase { - public SurgeProgression(Roshar.Surges surge) - { - super(surge); - } + public SurgeProgression(Roshar.Surges surge) + { + super(surge); + } - //alter growth and healing + //alter growth and healing } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java index 65b422b39..d4f617c1f 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTension.java @@ -4,20 +4,18 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeTension extends SurgebindingBase { - public SurgeTension(Roshar.Surges surge) - { - super(surge); - } + public SurgeTension(Roshar.Surges surge) + { + super(surge); + } - //repair inanimate objects for bondsmiths? + //repair inanimate objects for bondsmiths? - //making things rigid. + //making things rigid. } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java index 196e70720..683c3ce0d 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransformation.java @@ -4,18 +4,16 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeTransformation extends SurgebindingBase { - public SurgeTransformation(Roshar.Surges surge) - { - super(surge); - } + public SurgeTransformation(Roshar.Surges surge) + { + super(surge); + } - //soulcasting, changing one thing into another + //soulcasting, changing one thing into another } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java index 9724ee56d..fef1a612e 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeTransportation.java @@ -4,18 +4,16 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Roshar; -import net.minecraftforge.fml.common.Mod; public class SurgeTransportation extends SurgebindingBase { - public SurgeTransportation(Roshar.Surges surge) - { - super(surge); - } + public SurgeTransportation(Roshar.Surges surge) + { + super(surge); + } - //travel between realms or locations + //travel between realms or locations } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java index cb7aff75f..ba9b00dbf 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java @@ -4,14 +4,14 @@ package leaf.cosmere.manifestation.surgebinding; -import leaf.cosmere.constants.Roshar; import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.manifestation.ManifestationBase; public class SurgebindingBase extends ManifestationBase { - public SurgebindingBase(Roshar.Surges surge) - { - super(Manifestations.ManifestationTypes.RADIANT, surge.getColor()); - } + public SurgebindingBase(Roshar.Surges surge) + { + super(Manifestations.ManifestationTypes.RADIANT, surge.getColor()); + } } diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index b43552e3a..a1670a966 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -5,43 +5,45 @@ package leaf.cosmere.mixin; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -@Mixin(EffectInstance.class) +@Mixin(MobEffectInstance.class) public class EffectInstanceMixin { - @Inject(at = @At("RETURN"), - method = "isNoCounter", - cancellable = true - ) - private void getIsFeruchemyEffect(CallbackInfoReturnable cir) - { - if (getEffect() instanceof FeruchemyEffectBase) - { - cir.setReturnValue(true); - } - } - @Inject(at = @At("RETURN"), - method = "showIcon", - cancellable = true - ) - private void getShowIcon(CallbackInfoReturnable cir) - { - if (getEffect() instanceof FeruchemyEffectBase) - { - cir.setReturnValue(false); - } - } + @Inject(at = @At("RETURN"), + method = "isNoCounter", + cancellable = true + ) + private void getIsFeruchemyEffect(CallbackInfoReturnable cir) + { + if (getEffect() instanceof FeruchemyEffectBase) + { + cir.setReturnValue(true); + } + } + @Inject(at = @At("RETURN"), + method = "showIcon", + cancellable = true + ) + private void getShowIcon(CallbackInfoReturnable cir) + { + if (getEffect() instanceof FeruchemyEffectBase) + { + cir.setReturnValue(false); + } + } - @Shadow - public Effect getEffect() { - throw new IllegalStateException("Mixin failed to shadow getPotion()"); - } + + @Shadow + public MobEffect getEffect() + { + throw new IllegalStateException("Mixin failed to shadow getPotion()"); + } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 574cec611..8a3ad0e89 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -10,9 +10,9 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -21,72 +21,72 @@ @Mixin(Entity.class) public class EntityMixin { - @Inject(method = "isGlowing", at = @At("RETURN"), cancellable = true) - private void handleIsGlowing(CallbackInfoReturnable cir) - { - Entity e = (Entity) (Object) this; - - if (!(e instanceof LivingEntity)) - { - return; - } - - PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getCameraEntity(); - LivingEntity target = (LivingEntity) e; - - SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> - { - //if the player does not have bronze, early exit - if (!(playerSpiritweb.hasManifestation(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()))) - { - return; - } - - SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> - { - //if target has copper and it's active, early exit - if (ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get().isActive(targetSpiritweb)) - { - //check whether or not the target beats the player in allomantic power - return; - } - - //get allomantic strength of - - int mode = playerSpiritweb.getMode(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()); - - //todo range to config - int range = 5 * mode; - boolean found = false; - - //if target is player and has any active manifestations, - - - //or if target is not a player and has any manifestations at all - - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - //don't tick powers that the user doesn't have - //don't tick powers that are not active - if (!(target instanceof PlayerEntity) && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) - { - found = true; - break; - } - else if ((target instanceof PlayerEntity) && manifestation.isActive(targetSpiritweb)) - { - found = true; - break; - } - } - - if ((clientPlayer != null && clientPlayer.distanceTo(target) < range) && found) - { - cir.setReturnValue(true); - } - }); - }); - } + @Inject(method = "isCurrentlyGlowing", at = @At("RETURN"), cancellable = true) + private void handleIsGlowing(CallbackInfoReturnable cir) + { + Entity e = (Entity) (Object) this; + + if (!(e instanceof LivingEntity)) + { + return; + } + + Player clientPlayer = (Player) Minecraft.getInstance().getCameraEntity(); + LivingEntity target = (LivingEntity) e; + + SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> + { + //if the player does not have bronze, early exit + if (!(playerSpiritweb.hasManifestation(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()))) + { + return; + } + + SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> + { + //if target has copper and it's active, early exit + if (ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get().isActive(targetSpiritweb)) + { + //check whether or not the target beats the player in allomantic power + return; + } + + //get allomantic strength of + + int mode = playerSpiritweb.getMode(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()); + + //todo range to config + int range = 5 * mode; + boolean found = false; + + //if target is player and has any active manifestations, + + + //or if target is not a player and has any manifestations at all + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + //don't tick powers that the user doesn't have + //don't tick powers that are not active + if (!(target instanceof Player) && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) + { + found = true; + break; + } + else if ((target instanceof Player) && manifestation.isActive(targetSpiritweb)) + { + found = true; + break; + } + } + + if ((clientPlayer != null && clientPlayer.distanceTo(target) < range) && found) + { + cir.setReturnValue(true); + } + }); + }); + } } diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index 99de0d9f1..d4b13d079 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -2,13 +2,13 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.EffectsRegistry; +import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.potion.EffectInstance; -import net.minecraft.potion.Effects; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -17,42 +17,42 @@ @Mixin(GameRenderer.class) public class GameRendererMixin { - @Inject(at = @At("RETURN"), method = "getNightVisionScale", cancellable = true) - private static void removeNightVisionFlash(LivingEntity livingEntity, float f, CallbackInfoReturnable info) - { - EffectInstance effect = livingEntity.getEffect(Effects.NIGHT_VISION); - float i = effect != null ? effect.getDuration() : f; - info.setReturnValue(i > 0 ? 1 : i); - } + @Inject(at = @At("RETURN"), method = "getNightVisionScale", cancellable = true) + private static void removeNightVisionFlash(LivingEntity livingEntity, float f, CallbackInfoReturnable info) + { + MobEffectInstance effect = livingEntity.getEffect(MobEffects.NIGHT_VISION); + float i = effect != null ? effect.getDuration() : f; + info.setReturnValue(i > 0 ? 1 : i); + } - @Inject( - at = @At("RETURN"), - method = "getFov", - cancellable = true - ) - private void getZoomedFov(ActiveRenderInfo activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) - { - double fov = info.getReturnValue(); - PlayerEntity player = (PlayerEntity)Minecraft.getInstance().getCameraEntity(); - EffectInstance tinTapEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); - EffectInstance tinStoreEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); - if (tinTapEffect != null && tinTapEffect.getDuration() > 0) - { - int amplifier = tinTapEffect.getAmplifier(); - double zoomedFov = fov / (amplifier + 2); - info.setReturnValue(zoomedFov); - return; - } - if (tinStoreEffect != null && tinStoreEffect.getDuration() > 0) - { - int amplifier = tinStoreEffect.getAmplifier(); - double zoomedFov = fov * (amplifier + 2); - info.setReturnValue(zoomedFov); - return; - } + @Inject( + at = @At("RETURN"), + method = "getFov", + cancellable = true + ) + private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) + { + double fov = info.getReturnValue(); + Player player = (Player) Minecraft.getInstance().getCameraEntity(); + MobEffectInstance tinTapEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); + MobEffectInstance tinStoreEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); + if (tinTapEffect != null && tinTapEffect.getDuration() > 0) + { + int amplifier = tinTapEffect.getAmplifier(); + double zoomedFov = fov / (amplifier + 2); + info.setReturnValue(zoomedFov); + return; + } + if (tinStoreEffect != null && tinStoreEffect.getDuration() > 0) + { + int amplifier = tinStoreEffect.getAmplifier(); + double zoomedFov = fov * (amplifier + 2); + info.setReturnValue(zoomedFov); + return; + } - info.setReturnValue(fov); - } + info.setReturnValue(fov); + } } diff --git a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java index b937e919f..185c46bdf 100644 --- a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java +++ b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java @@ -8,10 +8,10 @@ import leaf.cosmere.registry.AttributesRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LightTexture; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.ModifiableAttributeInstance; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.registries.RegistryObject; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; @@ -23,14 +23,14 @@ public class LightTextureMixin private float updateLightTextureConstant(float prev) { //do stuff - PlayerEntity clientPlayer = (PlayerEntity) Minecraft.getInstance().getCameraEntity(); + Player clientPlayer = (Player) Minecraft.getInstance().getCameraEntity(); if (clientPlayer == null) { return prev; } final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.TIN.getName()); - ModifiableAttributeInstance attribute = clientPlayer.getAttribute(attributeRegistryObject.get()); + AttributeInstance attribute = clientPlayer.getAttribute(attributeRegistryObject.get()); //return modded val return attribute != null ? (float) attribute.getValue() : prev; } diff --git a/src/main/java/leaf/cosmere/network/Network.java b/src/main/java/leaf/cosmere/network/Network.java index db080b20f..421e81e4d 100644 --- a/src/main/java/leaf/cosmere/network/Network.java +++ b/src/main/java/leaf/cosmere/network/Network.java @@ -10,85 +10,80 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.network.packets.*; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.play.server.SUpdateTileEntityPacket; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.RegistryKey; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.util.FakePlayer; -import net.minecraftforge.fml.network.NetworkRegistry; -import net.minecraftforge.fml.network.PacketDistributor; -import net.minecraftforge.fml.network.simple.SimpleChannel; +import net.minecraftforge.network.NetworkRegistry; +import net.minecraftforge.network.PacketDistributor; +import net.minecraftforge.network.simple.SimpleChannel; public class Network { - private static final String PROTOCOL_VERSION = Integer.toString(1); - private static final SimpleChannel NETWORK_CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(Cosmere.MODID, Cosmere.MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); + private static final String PROTOCOL_VERSION = Integer.toString(1); + private static final SimpleChannel NETWORK_CHANNEL = NetworkRegistry.newSimpleChannel(new ResourceLocation(Cosmere.MODID, Cosmere.MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals); - public static void init() - { - int id = 0; - NETWORK_CHANNEL.registerMessage(id++, SyncPlayerSpiritwebMessage.class, SyncPlayerSpiritwebMessage::encode, SyncPlayerSpiritwebMessage::decode, SyncPlayerSpiritwebMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, DeactivateCurrentManifestationsMessage.class, DeactivateCurrentManifestationsMessage::encode, DeactivateCurrentManifestationsMessage::new, DeactivateCurrentManifestationsMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, ChangeManifestationModeMessage.class, ChangeManifestationModeMessage::encode, ChangeManifestationModeMessage::decode, ChangeManifestationModeMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, DeactivateAllManifestationsMessage.class, DeactivateAllManifestationsMessage::encode, DeactivateAllManifestationsMessage::new, DeactivateAllManifestationsMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, ChangeSelectedManifestationMessage.class, ChangeSelectedManifestationMessage::encode, ChangeSelectedManifestationMessage::decode, ChangeSelectedManifestationMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, SetSelectedManifestationMessage.class, SetSelectedManifestationMessage::encode, SetSelectedManifestationMessage::decode, SetSelectedManifestationMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, SyncPushPullMessage.class, SyncPushPullMessage::encode, SyncPushPullMessage::decode, SyncPushPullMessage::handle); + public static void init() + { + int id = 0; + NETWORK_CHANNEL.registerMessage(id++, SyncPlayerSpiritwebMessage.class, SyncPlayerSpiritwebMessage::encode, SyncPlayerSpiritwebMessage::decode, SyncPlayerSpiritwebMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, DeactivateCurrentManifestationsMessage.class, DeactivateCurrentManifestationsMessage::encode, DeactivateCurrentManifestationsMessage::new, DeactivateCurrentManifestationsMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, ChangeManifestationModeMessage.class, ChangeManifestationModeMessage::encode, ChangeManifestationModeMessage::decode, ChangeManifestationModeMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, DeactivateAllManifestationsMessage.class, DeactivateAllManifestationsMessage::encode, DeactivateAllManifestationsMessage::new, DeactivateAllManifestationsMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, ChangeSelectedManifestationMessage.class, ChangeSelectedManifestationMessage::encode, ChangeSelectedManifestationMessage::decode, ChangeSelectedManifestationMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, SetSelectedManifestationMessage.class, SetSelectedManifestationMessage::encode, SetSelectedManifestationMessage::decode, SetSelectedManifestationMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, SyncPushPullMessage.class, SyncPushPullMessage::encode, SyncPushPullMessage::decode, SyncPushPullMessage::handle); - } + } - /** - * Sends a packet to the server.
- * Must be called Client side. - */ - public static void sendToServer(Object msg) - { - NETWORK_CHANNEL.sendToServer(msg); - } + /** + * Sends a packet to the server.
+ * Must be called Client side. + */ + public static void sendToServer(Object msg) + { + NETWORK_CHANNEL.sendToServer(msg); + } - /** - * Send a packet to a specific player.
- * Must be called Server side. - */ - public static void sendTo(Object msg, ServerPlayerEntity player) - { - if (!(player instanceof FakePlayer)) - { - NETWORK_CHANNEL.send(PacketDistributor.PLAYER.with(() -> player), msg); - } - } + /** + * Send a packet to a specific player.
+ * Must be called Server side. + */ + public static void sendTo(Object msg, ServerPlayer player) + { + if (!(player instanceof FakePlayer)) + { + NETWORK_CHANNEL.send(PacketDistributor.PLAYER.with(() -> player), msg); + } + } - public static void sendPacketToAll(Object packet) - { - NETWORK_CHANNEL.send(PacketDistributor.ALL.noArg(), packet); - } + public static void sendPacketToAll(Object packet) + { + NETWORK_CHANNEL.send(PacketDistributor.ALL.noArg(), packet); + } - public static SUpdateTileEntityPacket createTEUpdatePacket(TileEntity tile) - { - return new SUpdateTileEntityPacket(tile.getBlockPos(), -1, tile.getUpdateTag()); - } - public static void sendToAllAround(Object mes, RegistryKey dim, BlockPos pos, int radius) - { - NETWORK_CHANNEL.send(PacketDistributor.NEAR.with(() -> new PacketDistributor.TargetPoint(pos.getX(), pos.getY(), pos.getZ(), radius, dim)), mes); - } + public static void sendToAllAround(Object mes, ResourceKey dim, BlockPos pos, int radius) + { + NETWORK_CHANNEL.send(PacketDistributor.NEAR.with(() -> new PacketDistributor.TargetPoint(pos.getX(), pos.getY(), pos.getZ(), radius, dim)), mes); + } - public static void sendToAllInWorld(Object mes, ServerWorld world) - { - NETWORK_CHANNEL.send(PacketDistributor.DIMENSION.with(world::dimension), mes); - } + public static void sendToAllInWorld(Object mes, ServerLevel world) + { + NETWORK_CHANNEL.send(PacketDistributor.DIMENSION.with(world::dimension), mes); + } - public static void sendToTrackingTE(Object mes, TileEntity te) - { - if (te != null && !te.getLevel().isClientSide) - { - NETWORK_CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> te.getLevel().getChunkAt(te.getBlockPos())), mes); - } - } + public static void sendToTrackingTE(Object mes, BlockEntity te) + { + if (te != null && !te.getLevel().isClientSide) + { + NETWORK_CHANNEL.send(PacketDistributor.TRACKING_CHUNK.with(() -> te.getLevel().getChunkAt(te.getBlockPos())), mes); + } + } } diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index b27e4f840..c4798d75c 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -6,71 +6,71 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.BaseComponent; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.text.TextComponent; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class ChangeManifestationModeMessage { - Manifestations.ManifestationTypes powerType; - int powerID; - int dir; + Manifestations.ManifestationTypes powerType; + int powerID; + int dir; - public ChangeManifestationModeMessage(Manifestations.ManifestationTypes powerType, int powerID, int dir) - { - this.powerType = powerType; - this.powerID = powerID; - this.dir = dir; - } + public ChangeManifestationModeMessage(Manifestations.ManifestationTypes powerType, int powerID, int dir) + { + this.powerType = powerType; + this.powerID = powerID; + this.dir = dir; + } - public static void handle(ChangeManifestationModeMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - TextComponent manifestationText; - int newMode; + public static void handle(ChangeManifestationModeMessage message, Supplier ctx) + { + NetworkEvent.Context context = ctx.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + BaseComponent manifestationText; + int newMode; - if (message.dir == 1) - { - newMode = cap.nextMode(message.powerType, message.powerID); - } - else if (message.dir == -1) - { - newMode = cap.previousMode(message.powerType, message.powerID); - } - else if (message.dir != 0) - { - newMode = message.dir + cap.getMode(message.powerType, message.powerID); - cap.setMode(message.powerType, message.powerID, newMode); - } + if (message.dir == 1) + { + newMode = cap.nextMode(message.powerType, message.powerID); + } + else if (message.dir == -1) + { + newMode = cap.previousMode(message.powerType, message.powerID); + } + else if (message.dir != 0) + { + newMode = message.dir + cap.getMode(message.powerType, message.powerID); + cap.setMode(message.powerType, message.powerID, newMode); + } - cap.manifestation(message.powerType, message.powerID).onModeChange(cap); + cap.manifestation(message.powerType, message.powerID).onModeChange(cap); - //manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_MODE_SET, TextHelper.createText(newMode)); - //sender.sendMessage(manifestationText, Util.DUMMY_UUID); + //manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_MODE_SET, TextHelper.createText(newMode)); + //sender.sendMessage(manifestationText, Util.DUMMY_UUID); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } + cap.syncToClients(null); + })); + context.setPacketHandled(true); + } - public static void encode(ChangeManifestationModeMessage mes, PacketBuffer buf) - { - buf.writeInt(mes.powerType.getID()); - buf.writeInt(mes.powerID); - buf.writeInt(mes.dir); - } + public static void encode(ChangeManifestationModeMessage mes, FriendlyByteBuf buf) + { + buf.writeInt(mes.powerType.getID()); + buf.writeInt(mes.powerID); + buf.writeInt(mes.dir); + } - public static ChangeManifestationModeMessage decode(PacketBuffer buf) - { - return new ChangeManifestationModeMessage(Manifestations.ManifestationTypes.valueOf(buf.readInt()).get(), buf.readInt(), buf.readInt()); - } + public static ChangeManifestationModeMessage decode(FriendlyByteBuf buf) + { + return new ChangeManifestationModeMessage(Manifestations.ManifestationTypes.valueOf(buf.readInt()).get(), buf.readInt(), buf.readInt()); + } } diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java index 47bc61805..886a940bd 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java @@ -7,53 +7,53 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Constants; import leaf.cosmere.utils.helpers.TextHelper; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; +import net.minecraft.Util; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.BaseComponent; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.Util; -import net.minecraft.util.text.TextComponent; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class ChangeSelectedManifestationMessage { - int dir; - - public ChangeSelectedManifestationMessage(int dir) - { - this.dir = dir; - } - - public static void handle(ChangeSelectedManifestationMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - TextComponent manifestationText; - String manifestation; - - manifestation = cap.changeManifestation(message.dir); - - manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_SET_SUCCESS, TextHelper.createTranslatedText(manifestation)); - - sender.sendMessage(manifestationText, Util.NIL_UUID); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } - - - public static void encode(ChangeSelectedManifestationMessage mes, PacketBuffer buf) - { - buf.writeInt(mes.dir); - } - - public static ChangeSelectedManifestationMessage decode(PacketBuffer buf) - { - return new ChangeSelectedManifestationMessage(buf.readInt()); - } + int dir; + + public ChangeSelectedManifestationMessage(int dir) + { + this.dir = dir; + } + + public static void handle(ChangeSelectedManifestationMessage message, Supplier ctx) + { + NetworkEvent.Context context = ctx.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + BaseComponent manifestationText; + String manifestation; + + manifestation = cap.changeManifestation(message.dir); + + manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_SET_SUCCESS, TextHelper.createTranslatedText(manifestation)); + + sender.sendMessage(manifestationText, Util.NIL_UUID); + cap.syncToClients(null); + })); + context.setPacketHandled(true); + } + + + public static void encode(ChangeSelectedManifestationMessage mes, FriendlyByteBuf buf) + { + buf.writeInt(mes.dir); + } + + public static ChangeSelectedManifestationMessage decode(FriendlyByteBuf buf) + { + return new ChangeSelectedManifestationMessage(buf.readInt()); + } } diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java index 15ff0dff4..5c83b59d5 100644 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java @@ -5,12 +5,12 @@ package leaf.cosmere.network.packets; import leaf.cosmere.cap.entity.SpiritwebCapability; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; +import net.minecraft.Util; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.BaseComponent; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.Util; -import net.minecraft.util.text.TextComponent; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; @@ -19,34 +19,34 @@ public class DeactivateAllManifestationsMessage { - public DeactivateAllManifestationsMessage() - { - } + public DeactivateAllManifestationsMessage() + { + } - public DeactivateAllManifestationsMessage(PacketBuffer buffer) - { - } + public DeactivateAllManifestationsMessage(FriendlyByteBuf buffer) + { + } - public static void handle(DeactivateAllManifestationsMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - TextComponent manifestationText= POWER_INACTIVE; + public static void handle(DeactivateAllManifestationsMessage message, Supplier ctx) + { + NetworkEvent.Context context = ctx.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + BaseComponent manifestationText = POWER_INACTIVE; - cap.deactivateManifestations(); + cap.deactivateManifestations(); - sender.sendMessage(manifestationText, Util.NIL_UUID); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } + sender.sendMessage(manifestationText, Util.NIL_UUID); + cap.syncToClients(null); + })); + context.setPacketHandled(true); + } - public void encode(PacketBuffer buf) - { + public void encode(FriendlyByteBuf buf) + { - } + } } diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java index bf7d6edeb..50a10ab9e 100644 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java @@ -5,12 +5,12 @@ package leaf.cosmere.network.packets; import leaf.cosmere.cap.entity.SpiritwebCapability; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; +import net.minecraft.Util; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.chat.BaseComponent; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.Util; -import net.minecraft.util.text.TextComponent; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; @@ -19,34 +19,34 @@ public class DeactivateCurrentManifestationsMessage { - public DeactivateCurrentManifestationsMessage() - { - } + public DeactivateCurrentManifestationsMessage() + { + } - public DeactivateCurrentManifestationsMessage(PacketBuffer buffer) - { - } + public DeactivateCurrentManifestationsMessage(FriendlyByteBuf buffer) + { + } - public static void handle(DeactivateCurrentManifestationsMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - TextComponent manifestationText= POWER_INACTIVE; + public static void handle(DeactivateCurrentManifestationsMessage message, Supplier ctx) + { + NetworkEvent.Context context = ctx.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + BaseComponent manifestationText = POWER_INACTIVE; - cap.deactivateManifestations(); + cap.deactivateManifestations(); - sender.sendMessage(manifestationText, Util.NIL_UUID); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } + sender.sendMessage(manifestationText, Util.NIL_UUID); + cap.syncToClients(null); + })); + context.setPacketHandled(true); + } - public void encode(PacketBuffer buf) - { + public void encode(FriendlyByteBuf buf) + { - } + } } diff --git a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java index fdaffece9..df0b44fc8 100644 --- a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java @@ -7,46 +7,46 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.network.PacketBuffer; +import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SetSelectedManifestationMessage { - AManifestation manifestation; - - public SetSelectedManifestationMessage(AManifestation manifestation) - { - this.manifestation = manifestation; - } - - public static void handle(SetSelectedManifestationMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - cap.setSelectedManifestation(message.manifestation); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } - - - public static void encode(SetSelectedManifestationMessage mes, PacketBuffer buf) - { - String namespace = mes.manifestation.getRegistryName().toString(); - buf.writeUtf(namespace); - } - - public static SetSelectedManifestationMessage decode(PacketBuffer buf) - { - String location = buf.readUtf(); - return new SetSelectedManifestationMessage(ManifestationRegistry.fromID(location)); - } + AManifestation manifestation; + + public SetSelectedManifestationMessage(AManifestation manifestation) + { + this.manifestation = manifestation; + } + + public static void handle(SetSelectedManifestationMessage message, Supplier ctx) + { + NetworkEvent.Context context = ctx.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + cap.setSelectedManifestation(message.manifestation); + cap.syncToClients(null); + })); + context.setPacketHandled(true); + } + + + public static void encode(SetSelectedManifestationMessage mes, FriendlyByteBuf buf) + { + String namespace = mes.manifestation.getRegistryName().toString(); + buf.writeUtf(namespace); + } + + public static SetSelectedManifestationMessage decode(FriendlyByteBuf buf) + { + String location = buf.readUtf(); + return new SetSelectedManifestationMessage(ManifestationRegistry.fromID(location)); + } } diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java index fce0028c3..7c5a8a220 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java @@ -4,49 +4,49 @@ package leaf.cosmere.network.packets; -import leaf.cosmere.cap.Capabilities; +import leaf.cosmere.cap.entity.SpiritwebCapability; import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.network.PacketBuffer; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SyncPlayerSpiritwebMessage { - - public int id; - public CompoundNBT data; - - public SyncPlayerSpiritwebMessage(int id, CompoundNBT data) - { - this.id = id; - this.data = data; - } - - public static void encode(SyncPlayerSpiritwebMessage mes, PacketBuffer buf) - { - buf.writeInt(mes.id); - buf.writeNbt(mes.data); - } - - public static SyncPlayerSpiritwebMessage decode(PacketBuffer buf) - { - return new SyncPlayerSpiritwebMessage(buf.readInt(), buf.readNbt()); - } - - public static void handle(SyncPlayerSpiritwebMessage mes, Supplier cont) - { - cont.get().enqueueWork(() -> - { - Entity result = Minecraft.getInstance().level.getEntity(mes.id); - if (result != null) - { - result.getCapability(Capabilities.SPIRITWEB_CAPABILITY).ifPresent(cap -> cap.deserializeNBT(mes.data)); - } - }); - cont.get().setPacketHandled(true); - } + public int entityID; + public CompoundTag entityNBT; + + public SyncPlayerSpiritwebMessage(int entityID, CompoundTag entityNBT) + { + this.entityID = entityID; + this.entityNBT = entityNBT; + } + + public static void encode(SyncPlayerSpiritwebMessage mes, FriendlyByteBuf buf) + { + buf.writeInt(mes.entityID); + buf.writeNbt(mes.entityNBT); + } + + public static SyncPlayerSpiritwebMessage decode(FriendlyByteBuf buf) + { + return new SyncPlayerSpiritwebMessage(buf.readInt(), buf.readNbt()); + } + + public static void handle(SyncPlayerSpiritwebMessage mes, Supplier cont) + { + cont.get().enqueueWork(() -> + { + Entity result = Minecraft.getInstance().level.getEntity(mes.entityID); + if (result != null) + { + SpiritwebCapability.get((LivingEntity) result).ifPresent((c) -> c.deserializeNBT(mes.entityNBT)); + } + }); + cont.get().setPacketHandled(true); + } } diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java index 00f62e5fd..1d1b0dd3b 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java @@ -7,73 +7,72 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.utils.helpers.CodecHelper; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.entity.player.ServerPlayerEntity; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.NBTDynamicOps; -import net.minecraft.network.PacketBuffer; +import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.math.BlockPos; -import net.minecraftforge.common.util.Constants; -import net.minecraftforge.fml.network.NetworkEvent; +import net.minecraft.server.level.ServerPlayer; +import net.minecraftforge.network.NetworkEvent; import java.util.List; import java.util.function.Supplier; public class SyncPushPullMessage { - public CompoundNBT data; + public CompoundTag data; - public SyncPushPullMessage(CompoundNBT data) - { - this.data = data; - } + public SyncPushPullMessage(CompoundTag data) + { + this.data = data; + } - public static void encode(SyncPushPullMessage mes, PacketBuffer buf) - { - buf.writeNbt(mes.data); - } + public static void encode(SyncPushPullMessage mes, FriendlyByteBuf buf) + { + buf.writeNbt(mes.data); + } - public static SyncPushPullMessage decode(PacketBuffer buf) - { - return new SyncPushPullMessage(buf.readNbt()); - } + public static SyncPushPullMessage decode(FriendlyByteBuf buf) + { + return new SyncPushPullMessage(buf.readNbt()); + } - public static void handle(SyncPushPullMessage mes, Supplier cont) - { + public static void handle(SyncPushPullMessage mes, Supplier cont) + { - NetworkEvent.Context context = cont.get(); - ServerPlayerEntity sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) cap; + NetworkEvent.Context context = cont.get(); + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) cap; - final String pushBlocks = "pushBlocks"; - final String pullBlocks = "pullBlocks"; + final String pushBlocks = "pushBlocks"; + final String pullBlocks = "pullBlocks"; - boolean isPushMessage = mes.data.contains(pushBlocks); - String target = isPushMessage ? pushBlocks : pullBlocks; + boolean isPushMessage = mes.data.contains(pushBlocks); + String target = isPushMessage ? pushBlocks : pullBlocks; - CodecHelper.BlockPosListCodec.decode(NBTDynamicOps.INSTANCE, - mes.data.getList(target, Constants.NBT.TAG_INT_ARRAY)) - .resultOrPartial(LogHelper.LOGGER::error) - .ifPresent(listINBTPair -> - { - List messageBlocks = listINBTPair.getFirst(); + CodecHelper.BlockPosListCodec.decode(NbtOps.INSTANCE, + mes.data.getList(target, net.minecraft.nbt.Tag.TAG_INT_ARRAY)) + .resultOrPartial(LogHelper.LOGGER::error) + .ifPresent(listINBTPair -> + { + List messageBlocks = listINBTPair.getFirst(); - if (isPushMessage) - { - spiritweb.pushBlocks.clear(); - spiritweb.pushBlocks.addAll(messageBlocks); - } - else - { - spiritweb.pullBlocks.clear(); - spiritweb.pullBlocks.addAll(messageBlocks); - } - }); - })); - cont.get().setPacketHandled(true); - } + if (isPushMessage) + { + spiritweb.pushBlocks.clear(); + spiritweb.pushBlocks.addAll(messageBlocks); + } + else + { + spiritweb.pullBlocks.clear(); + spiritweb.pullBlocks.addAll(messageBlocks); + } + }); + })); + cont.get().setPacketHandled(true); + } } diff --git a/src/main/java/leaf/cosmere/properties/PropTypes.java b/src/main/java/leaf/cosmere/properties/PropTypes.java index 112323150..f1ed8894c 100644 --- a/src/main/java/leaf/cosmere/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/properties/PropTypes.java @@ -5,38 +5,33 @@ package leaf.cosmere.properties; import leaf.cosmere.itemgroups.CosmereItemGroups; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.item.*; -import net.minecraftforge.common.ToolType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.material.Material; import java.util.function.Supplier; public class PropTypes { - public static class Blocks - { - public static final Supplier EXAMPLE = () -> Block.Properties.of(Material.GLASS).strength(2.0F, 6.0F).harvestLevel(0).harvestTool(ToolType.PICKAXE); - - public static final Supplier METAL = () -> Block.Properties.of(Material.METAL).strength(2.0F, 6.0F).harvestLevel(1).harvestTool(ToolType.PICKAXE); - } - - public static class Items - { - - public static final Supplier SHARDBLADE = () -> new Item.Properties() - .tab(CosmereItemGroups.ITEMS) - .stacksTo(1) - .defaultDurability(0) - .durability(0) - .setNoRepair() - .rarity(Rarity.EPIC); - - - public static final Supplier ONE = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(1); - - public static final Supplier SIXTEEN = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(16); - - public static final Supplier SIXTY_FOUR = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(64); - } + public static class Blocks + { + public static final Supplier EXAMPLE = () -> Block.Properties.of(Material.GLASS).strength(2.0F, 6.0F); + public static final Supplier METAL = () -> Block.Properties.of(Material.METAL).strength(2.0F, 6.0F); + } + + public static class Items + { + public static final Supplier SHARDBLADE = () -> new Item.Properties() + .tab(CosmereItemGroups.ITEMS) + .stacksTo(1) + .defaultDurability(0) + .durability(0) + .setNoRepair() + .rarity(Rarity.EPIC); + + public static final Supplier ONE = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(1); + public static final Supplier SIXTEEN = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(16); + public static final Supplier SIXTY_FOUR = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(64); + } } diff --git a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java index f5e51aebb..b3d90dd6f 100644 --- a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java +++ b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java @@ -5,28 +5,28 @@ package leaf.cosmere.recipes; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.ResourceLocationHelper; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.MetalVialItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.RecipeRegistry; -import net.minecraft.inventory.CraftingInventory; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.Ingredient; -import net.minecraft.item.crafting.SpecialRecipe; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; import net.minecraftforge.common.Tags; import javax.annotation.Nonnull; //not to be confused with the vile mixing recipe, // where you just make gross things -public class VialMixingRecipe extends SpecialRecipe +public class VialMixingRecipe extends CustomRecipe { - private static final Ingredient INGREDIENT_BOTTLE = Ingredient.of(Items.GLASS_BOTTLE, ItemsRegistry.METAL_VIAL.get()); + private static final Ingredient INGREDIENT_BOTTLE = Ingredient.of(Items.GLASS_BOTTLE, ItemsRegistry.METAL_VIAL.get()); /* private static final Ingredient INGREDIENT_NUGGET = Ingredient.fromItems( ItemsRegistry.METAL_NUGGETS .values() @@ -36,115 +36,115 @@ public class VialMixingRecipe extends SpecialRecipe );*/ - public VialMixingRecipe(ResourceLocation loc) - { - super(loc); - } - - @Override - public boolean matches(CraftingInventory inv, World world) - { - boolean hasNugget = false; - ItemStack bottle = null; - final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); - - for (int i = 0; i < inv.getContainerSize(); i++) - { - ItemStack stack = inv.getItem(i); - if (stack.isEmpty()) - { - continue; - } - - if (INGREDIENT_BOTTLE.test(stack)) - { - //only one allowed - if (bottle != null) - { - return false; - } - - bottle = stack; - } - else if (INGREDIENT_NUGGETS.test(stack)) - { - //but multiple nuggets allowed - hasNugget = true; - } - } - - if (bottle == null) - { - //no bottle, no service - return false; - } - - //check how full the bottle is, but only if its the vial - //minecraft bottles can be inherently empty - if (bottle.getItem() == ItemsRegistry.METAL_VIAL.get()) - { - MetalVialItem item = (MetalVialItem) bottle.getItem(); - return hasNugget && !item.isFull(bottle); - } - - - return hasNugget; - } - - @Override - @Nonnull - public ItemStack assemble(CraftingInventory inv) - { - MetalVialItem metalVial = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); - final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); - ItemStack itemstack = new ItemStack(metalVial); - - for (int i = 0; i < inv.getContainerSize(); ++i) - { - ItemStack stackInSlot = inv.getItem(i); - if (stackInSlot.isEmpty()) - { - continue; - } - - if (INGREDIENT_NUGGETS.test(stackInSlot)) - { - if (stackInSlot.getItem() instanceof MetalNuggetItem) - { - metalVial.addMetals(itemstack, ((MetalNuggetItem) stackInSlot.getItem()).getMetalType().getID(), 1); - } - //special vanilla logic since we don't create our own copies of iron/gold - else if (stackInSlot.getItem() == Items.IRON_NUGGET) - { - metalVial.addMetals(itemstack, Metals.MetalType.IRON.getID(), 1); - } - else if (stackInSlot.getItem() == Items.GOLD_NUGGET) - { - metalVial.addMetals(itemstack, Metals.MetalType.GOLD.getID(), 1); - } - - } - } - return itemstack; - } - - @Override - public boolean canCraftInDimensions(int width, int height) - { - //if you can fit 2 items, the bottle and a metal, you can combine - return width * height > 1; - } - - @Override - public ResourceLocation getId() - { - return ResourceLocationHelper.prefix("vial_mix"); - } - - @Override - public IRecipeSerializer getSerializer() - { - return RecipeRegistry.VIAL_RECIPE_SERIALIZER.get(); - } + public VialMixingRecipe(ResourceLocation loc) + { + super(loc); + } + + @Override + public boolean matches(CraftingContainer inv, Level world) + { + boolean hasNugget = false; + ItemStack bottle = null; + final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); + + for (int i = 0; i < inv.getContainerSize(); i++) + { + ItemStack stack = inv.getItem(i); + if (stack.isEmpty()) + { + continue; + } + + if (INGREDIENT_BOTTLE.test(stack)) + { + //only one allowed + if (bottle != null) + { + return false; + } + + bottle = stack; + } + else if (INGREDIENT_NUGGETS.test(stack)) + { + //but multiple nuggets allowed + hasNugget = true; + } + } + + if (bottle == null) + { + //no bottle, no service + return false; + } + + //check how full the bottle is, but only if its the vial + //minecraft bottles can be inherently empty + if (bottle.getItem() == ItemsRegistry.METAL_VIAL.get()) + { + MetalVialItem item = (MetalVialItem) bottle.getItem(); + return hasNugget && !item.isFull(bottle); + } + + + return hasNugget; + } + + @Override + @Nonnull + public ItemStack assemble(CraftingContainer inv) + { + MetalVialItem metalVial = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); + final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); + ItemStack itemstack = new ItemStack(metalVial); + + for (int i = 0; i < inv.getContainerSize(); ++i) + { + ItemStack stackInSlot = inv.getItem(i); + if (stackInSlot.isEmpty()) + { + continue; + } + + if (INGREDIENT_NUGGETS.test(stackInSlot)) + { + if (stackInSlot.getItem() instanceof MetalNuggetItem) + { + metalVial.addMetals(itemstack, ((MetalNuggetItem) stackInSlot.getItem()).getMetalType().getID(), 1); + } + //special vanilla logic since we don't create our own copies of iron/gold + else if (stackInSlot.getItem() == Items.IRON_NUGGET) + { + metalVial.addMetals(itemstack, Metals.MetalType.IRON.getID(), 1); + } + else if (stackInSlot.getItem() == Items.GOLD_NUGGET) + { + metalVial.addMetals(itemstack, Metals.MetalType.GOLD.getID(), 1); + } + + } + } + return itemstack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + //if you can fit 2 items, the bottle and a metal, you can combine + return width * height > 1; + } + + @Override + public ResourceLocation getId() + { + return ResourceLocationHelper.prefix("vial_mix"); + } + + @Override + public RecipeSerializer getSerializer() + { + return RecipeRegistry.VIAL_RECIPE_SERIALIZER.get(); + } } diff --git a/src/main/java/leaf/cosmere/registry/AdvancementTriggerRegistry.java b/src/main/java/leaf/cosmere/registry/AdvancementTriggerRegistry.java index d74112840..3a939994c 100644 --- a/src/main/java/leaf/cosmere/registry/AdvancementTriggerRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AdvancementTriggerRegistry.java @@ -6,10 +6,10 @@ public class AdvancementTriggerRegistry { - //public static final TriggerBase COSMERE = new TriggerBase("cosmere"); + //public static final TriggerBase COSMERE = new TriggerBase("cosmere"); - public static void init() - { - //CriteriaTriggers.register(COSMERE); - } + public static void init() + { + //CriteriaTriggers.register(COSMERE); + } } diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 4a5ae68e2..0a683c78b 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -6,12 +6,12 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; -import net.minecraft.entity.CreatureAttribute; -import net.minecraft.entity.ai.attributes.Attribute; -import net.minecraft.entity.ai.attributes.RangedAttribute; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.entity.MobType; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.HashMap; import java.util.Map; @@ -23,7 +23,7 @@ public class AttributesRegistry public static final Map> COSMERE_ATTRIBUTES = makeAttributeMap(); - public static final CreatureAttribute SPREN = new CreatureAttribute(); + public static final MobType SPREN = new MobType(); public static Map> makeAttributeMap() { diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index fd6d8927a..ed33b3d51 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -16,14 +16,14 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; -import net.minecraft.block.Block; -import net.minecraft.block.SoundType; -import net.minecraft.item.BlockItem; -import net.minecraft.item.Item; -import net.minecraft.item.Rarity; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.item.BlockItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SoundType; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.Map; @@ -33,37 +33,47 @@ public class BlocksRegistry { - public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Cosmere.MODID); - public static final RegistryObject GEM_BLOCK = register("gem_block", () -> (new BaseBlock(PropTypes.Blocks.EXAMPLE.get(), SoundType.STONE, 1F, 2F)), Rarity.COMMON); - public static final RegistryObject METALWORKING_TABLE = register("metalworking_table", () -> (new MetalworkingTableBlock()), Rarity.COMMON); + public static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, Cosmere.MODID); + public static final RegistryObject GEM_BLOCK = register("gem_block", () -> (new BaseBlock(PropTypes.Blocks.EXAMPLE.get(), SoundType.STONE, 1F, 2F)), Rarity.COMMON); + public static final RegistryObject METALWORKING_TABLE = register("metalworking_table", () -> (new MetalworkingTableBlock()), Rarity.COMMON); - public static final Map> METAL_BLOCKS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) - .collect(Collectors.toMap( - Function.identity(), - metalType -> register( - metalType.getName() + Constants.RegNameStubs.BLOCK, - () -> new MetalBlock(metalType), metalType.getRarity()))); + public static final Map> METAL_BLOCKS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toMap( + Function.identity(), + metalType -> register( + metalType.getName() + Constants.RegNameStubs.BLOCK, + () -> new MetalBlock(metalType), metalType.getRarity()))); - public static final Map> METAL_ORE = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - metalType -> register( - metalType.getName() + Constants.RegNameStubs.ORE, - () -> new MetalOreBlock(metalType), - Rarity.COMMON))); + public static final Map> METAL_ORE = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + metalType -> register( + metalType.getName() + Constants.RegNameStubs.ORE, + () -> new MetalOreBlock(metalType), + metalType.getRarity()))); + public static final Map> METAL_ORE_DEEPSLATE = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + metalType -> register( + metalType.getName() + Constants.RegNameStubs.ORE + Constants.RegNameStubs.DEEPSLATE_ORE, + () -> new MetalOreBlock(metalType), + metalType.getRarity()))); - private static RegistryObject register(String id, Supplier blockSupplier, Rarity itemRarity) - { - RegistryObject registryObject = BLOCKS.register(id, blockSupplier); - ItemsRegistry.ITEMS.register(id, () -> new BlockItem(registryObject.get(), new Item.Properties().tab(CosmereItemGroups.BLOCKS).rarity(itemRarity))); + private static RegistryObject register(String id, Supplier blockSupplier, Rarity itemRarity) + { + RegistryObject registryObject = BLOCKS.register(id, blockSupplier); + ItemsRegistry.ITEMS.register(id, () -> new BlockItem(registryObject.get(), new Item.Properties().tab(CosmereItemGroups.BLOCKS).rarity(itemRarity))); - return registryObject; - } + + return registryObject; + } } diff --git a/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java b/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java index 19e4c849f..b87345230 100644 --- a/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java +++ b/src/main/java/leaf/cosmere/registry/DataSerializersRegistry.java @@ -4,37 +4,37 @@ package leaf.cosmere.registry; -import net.minecraft.network.PacketBuffer; -import net.minecraft.network.datasync.DataSerializers; -import net.minecraft.network.datasync.IDataSerializer; -import net.minecraft.util.ResourceLocation; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.network.syncher.EntityDataSerializer; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.resources.ResourceLocation; public class DataSerializersRegistry { - public static final IDataSerializer RESOURCE_LOCATION = new IDataSerializer() - { - - @Override - public void write(PacketBuffer buf, ResourceLocation value) - { - buf.writeResourceLocation(value); - } - - public ResourceLocation read(PacketBuffer buf) - { - return buf.readResourceLocation(); - } - - @Override - public ResourceLocation copy(ResourceLocation value) - { - return value; - } - }; - - public static void register() - { - DataSerializers.registerSerializer(RESOURCE_LOCATION); - } + public static final EntityDataSerializer RESOURCE_LOCATION = new EntityDataSerializer() + { + + @Override + public void write(FriendlyByteBuf buf, ResourceLocation value) + { + buf.writeResourceLocation(value); + } + + public ResourceLocation read(FriendlyByteBuf buf) + { + return buf.readResourceLocation(); + } + + @Override + public ResourceLocation copy(ResourceLocation value) + { + return value; + } + }; + + public static void register() + { + EntityDataSerializers.registerSerializer(RESOURCE_LOCATION); + } } diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index b2c54f5cb..cd17f38f3 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -6,15 +6,16 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.allomancy.*; +import leaf.cosmere.effects.allomancy.AllomancyBoostEffect; +import leaf.cosmere.effects.allomancy.AllomancyEffectBase; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.effects.feruchemy.store.*; import leaf.cosmere.effects.feruchemy.tap.*; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectType; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.Map; @@ -24,94 +25,94 @@ public class EffectsRegistry { - public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.POTIONS, Cosmere.MODID); + public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, Cosmere.MODID); - public static final RegistryObject ALLOMANTIC_COPPER = EFFECTS.register( - "burning_" + Metals.MetalType.COPPER.getName(), - () -> new AllomancyEffectBase(Metals.MetalType.COPPER, EffectType.BENEFICIAL)); + public static final RegistryObject ALLOMANTIC_COPPER = EFFECTS.register( + "burning_" + Metals.MetalType.COPPER.getName(), + () -> new AllomancyEffectBase(Metals.MetalType.COPPER, MobEffectCategory.BENEFICIAL)); - public static final RegistryObject ALLOMANCY_BOOST = EFFECTS.register( - "allomancy_boost" , - () -> new AllomancyBoostEffect(Metals.MetalType.DURALUMIN, EffectType.BENEFICIAL)); + public static final RegistryObject ALLOMANCY_BOOST = EFFECTS.register( + "allomancy_boost", + () -> new AllomancyBoostEffect(Metals.MetalType.DURALUMIN, MobEffectCategory.BENEFICIAL)); - public static final Map> TAPPING_EFFECTS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> EFFECTS.register( - "tapping_" + type.getName(), - () -> makeTappingEffect(type)) - ) - ); + public static final Map> TAPPING_EFFECTS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> EFFECTS.register( + "tapping_" + type.getName(), + () -> makeTappingEffect(type)) + ) + ); - public static final Map> STORING_EFFECTS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> EFFECTS.register( - "storing_" + type.getName(), - () -> makeStoringEffect(type)) - ) - ); + public static final Map> STORING_EFFECTS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> EFFECTS.register( + "storing_" + type.getName(), + () -> makeStoringEffect(type)) + ) + ); - private static Effect makeStoringEffect(Metals.MetalType metalType) - { - switch (metalType) - { - case IRON: - return new IronStoreEffect(metalType, EffectType.BENEFICIAL); - case STEEL: - return (new SteelStoreEffect(metalType, EffectType.BENEFICIAL)); - case PEWTER: - return new PewterStoreEffect(metalType, EffectType.BENEFICIAL); - case BRASS: - return new BrassStoreEffect(metalType, EffectType.BENEFICIAL); - case DURALUMIN: - return new DuraluminStoreEffect(metalType, EffectType.BENEFICIAL); - case CHROMIUM: - return new ChromiumStoreEffect(metalType, EffectType.BENEFICIAL); - case GOLD: - return new GoldStoreEffect(metalType, EffectType.BENEFICIAL); - case CADMIUM: - return new CadmiumStoreEffect(metalType, EffectType.BENEFICIAL); - case BENDALLOY: - return new BendalloyStoreEffect(metalType, EffectType.BENEFICIAL); - //todo atium - // handled as part of the manifestation or maybe a mixin - default: - return new FeruchemyEffectBase(metalType, EffectType.BENEFICIAL); - } - } + private static MobEffect makeStoringEffect(Metals.MetalType metalType) + { + switch (metalType) + { + case IRON: + return new IronStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case STEEL: + return (new SteelStoreEffect(metalType, MobEffectCategory.BENEFICIAL)); + case PEWTER: + return new PewterStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case BRASS: + return new BrassStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case DURALUMIN: + return new DuraluminStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case CHROMIUM: + return new ChromiumStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case GOLD: + return new GoldStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case CADMIUM: + return new CadmiumStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case BENDALLOY: + return new BendalloyStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + //todo atium + // handled as part of the manifestation or maybe a mixin + default: + return new FeruchemyEffectBase(metalType, MobEffectCategory.BENEFICIAL); + } + } - private static Effect makeTappingEffect(Metals.MetalType metalType) - { - switch (metalType) - { - case IRON: - return new IronTapEffect(metalType, EffectType.BENEFICIAL); - case STEEL: - return new SteelTapEffect(metalType, EffectType.BENEFICIAL); - case PEWTER: - return new PewterTapEffect(metalType, EffectType.BENEFICIAL); - case BRASS: - return new BrassTapEffect(metalType, EffectType.BENEFICIAL); - case DURALUMIN: - return new DuraluminTapEffect(metalType, EffectType.BENEFICIAL); - case CHROMIUM: - return new ChromiumTapEffect(metalType, EffectType.BENEFICIAL); - case GOLD: - return new GoldTapEffect(metalType, EffectType.BENEFICIAL); - case CADMIUM: - return new CadmiumTapEffect(metalType, EffectType.BENEFICIAL); - case BENDALLOY: - return new BendalloyTapEffect(metalType, EffectType.BENEFICIAL); - //todo atium - // handled as part of the manifestation or maybe a mixin - default: - return new FeruchemyEffectBase(metalType, EffectType.BENEFICIAL); - } - } + private static MobEffect makeTappingEffect(Metals.MetalType metalType) + { + switch (metalType) + { + case IRON: + return new IronTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case STEEL: + return new SteelTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case PEWTER: + return new PewterTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case BRASS: + return new BrassTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case DURALUMIN: + return new DuraluminTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case CHROMIUM: + return new ChromiumTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case GOLD: + return new GoldTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case CADMIUM: + return new CadmiumTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case BENDALLOY: + return new BendalloyTapEffect(metalType, MobEffectCategory.BENEFICIAL); + //todo atium + // handled as part of the manifestation or maybe a mixin + default: + return new FeruchemyEffectBase(metalType, MobEffectCategory.BENEFICIAL); + } + } } diff --git a/src/main/java/leaf/cosmere/registry/EntityRegistry.java b/src/main/java/leaf/cosmere/registry/EntityRegistry.java index e30bf7875..e805a5823 100644 --- a/src/main/java/leaf/cosmere/registry/EntityRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EntityRegistry.java @@ -1,29 +1,31 @@ package leaf.cosmere.registry; -import leaf.cosmere.entities.spren.*; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.attributes.*; -import net.minecraftforge.fml.*; -import net.minecraftforge.registries.*; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.MobCategory; +import net.minecraft.world.entity.ai.attributes.DefaultAttributes; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import static leaf.cosmere.Cosmere.MODID; + public class EntityRegistry { public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); - public static final RegistryObject> SPREN_FIRE = + /*public static final RegistryObject> SPREN_FIRE = ENTITIES.register( "spren_flame", () -> EntityType.Builder - .of(SprenFlameEntity::new, EntityClassification.CREATURE) + .of(SprenFlameEntity::new, MobCategory.CREATURE) .sized(.5f, .5f) .setShouldReceiveVelocityUpdates(false) - .build("spren_flame")); + .build("spren_flame"));*/ public static void PrepareEntityAttributes() { - GlobalEntityTypeAttributes.put(SPREN_FIRE.get(), SprenFlameEntity.prepareAttributes().build()); + //DefaultAttributes.put(SPREN_FIRE.get(), SprenFlameEntity.prepareAttributes().build()); } } diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index f53fe7788..05de13f46 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -7,73 +7,115 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.WorldGenRegistries; -import net.minecraft.world.gen.feature.ConfiguredFeature; -import net.minecraft.world.gen.feature.Feature; -import net.minecraft.world.gen.feature.OreFeature; -import net.minecraft.world.gen.feature.OreFeatureConfig; -import net.minecraft.world.gen.placement.Placement; -import net.minecraft.world.gen.placement.TopSolidRangeConfig; -import net.minecraftforge.fml.RegistryObject; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; +import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.world.level.levelgen.VerticalAnchor; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.OreFeature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.placement.*; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; +import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; public class FeatureRegistry { - public static final DeferredRegister> FEATURES = DeferredRegister.create(ForgeRegistries.FEATURES, Cosmere.MODID); - - public static final Map>> ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new OreFeature(OreFeatureConfig.CODEC)))); - - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - public static class ConfiguredFeatures - { - //todo have ore specific changes, rather than all using the same settings - //reference Features.java - public static final Map> ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - metalType -> - FeatureRegistry.ORE_FEATURES.get(metalType).get().configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, - BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState(), 8)) - .range(64) - .squared() - .count(15) - )); - } - - public static void registerConfiguredFeatures() - { - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasOre()) - { - registerConfiguredFeature(metalType.getName() + Constants.RegNameStubs.ORE, ConfiguredFeatures.ORE_FEATURES.get(metalType)); - } - } - } - - private static > void registerConfiguredFeature(String registryName, ConfiguredFeature configuredFeature) - { - Registry> registry = WorldGenRegistries.CONFIGURED_FEATURE; - Registry.register(registry, new ResourceLocation(Cosmere.MODID, registryName), configuredFeature); - } + public static final DeferredRegister> FEATURES = DeferredRegister.create(ForgeRegistries.FEATURES, Cosmere.MODID); + + public static final Map>> ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> FEATURES.register( + type.getName() + Constants.RegNameStubs.ORE, + () -> new OreFeature(OreConfiguration.CODEC)))); + + + // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup + // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! + + public static class ConfiguredFeatures + { + //todo have ore specific changes, rather than all using the same settings + //reference Features.java + public static final Map>> ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + metalType -> registerConfiguredFeature( + metalType.getName() + Constants.RegNameStubs.ORE, + new ConfiguredFeature<>( + FeatureRegistry.ORE_FEATURES.get(metalType).get(), + new OreConfiguration(makeTarget(metalType), 7) + ) + ))); + + private static List makeTarget(Metals.MetalType metalType) + { + return + List.of(OreConfiguration.target( + OreFeatures.STONE_ORE_REPLACEABLES, + BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState()), + OreConfiguration.target( + OreFeatures.DEEPSLATE_ORE_REPLACEABLES, + BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).get().defaultBlockState()) + ); + } + + + public static void registerConfiguredFeatures() + { + //call to static will trigger static finals to be created + } + } + + public static class PlacedFeatures + { + public static final Map> PLACED_ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + registerPlacedFeature( + metalType.getName() + Constants.RegNameStubs.ORE, + ConfiguredFeatures.ORE_FEATURES.get(metalType), + List.of(RarityFilter.onAverageOnceEvery(64), + InSquarePlacement.spread(), + HeightRangePlacement.triangle( + VerticalAnchor.bottom(), + VerticalAnchor.absolute(128)), + BiomeFilter.biome())) + )); + + public static void registerPlacedFeatures() + { + //call to static will trigger static finals to be created + } + } + + + private static Holder registerPlacedFeature(String registryName, Holder> configuredFeature, List placementModifiers) + { + return BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, ResourceLocationHelper.prefix(registryName), new PlacedFeature(Holder.hackyErase(configuredFeature), List.copyOf(placementModifiers))); + } + + private static > Holder> registerConfiguredFeature(String registryName, ConfiguredFeature configuredFeature) + { + Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; + return BuiltinRegistries.register(registry, ResourceLocationHelper.prefix(registryName), configuredFeature); + } } diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 7996dc472..f3ca7984c 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -15,10 +15,10 @@ import leaf.cosmere.items.curio.*; import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.properties.PropTypes; -import net.minecraft.item.ItemTier; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.item.Tiers; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.Map; @@ -27,65 +27,65 @@ public class ItemsRegistry { - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Cosmere.MODID); + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Cosmere.MODID); - //other items + //other items - public static final RegistryObject GUIDE = ITEMS.register("guide", () -> createItem(new GuideItem())); - //public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); + public static final RegistryObject GUIDE = ITEMS.register("guide", () -> createItem(new GuideItem())); + //public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); - //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); - //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); - public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(ItemTier.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); + //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); + public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", () -> createItem(new BandsOfMourningItem())); + public static final RegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", () -> createItem(new BandsOfMourningItem())); - //public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); - //public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); + //public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); + //public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); - //public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); - public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); + //public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); + public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); - //public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); - //public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); - //Mass items gen + //Mass items gen - public static final Map> METAL_RAW_ORE = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - RegNameStubs.RAW + type.getName() + RegNameStubs.ORE, - () -> createItem(new MetalRawOreItem(type)) - ))); + public static final Map> METAL_RAW_ORE = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + RegNameStubs.RAW + type.getName() + RegNameStubs.ORE, + () -> createItem(new MetalRawOreItem(type)) + ))); - public static final Map> METAL_RAW_BLEND = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::isAlloy) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.BLEND, - () -> createItem(new MetalRawOreItem(type)) - ))); + public static final Map> METAL_RAW_BLEND = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::isAlloy) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.BLEND, + () -> createItem(new MetalRawOreItem(type)) + ))); - public static final Map> METAL_NUGGETS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.NUGGET, - () -> createItem(new MetalNuggetItem(type)) - ))); + public static final Map> METAL_NUGGETS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.NUGGET, + () -> createItem(new MetalNuggetItem(type)) + ))); /*public static final Map> METAL_SHAVINGS = Arrays.stream(Metals.MetalType.values()) @@ -97,90 +97,90 @@ public class ItemsRegistry () -> createItem(new MetalShavingsItem(type)) )));*/ - public static final Map> METAL_INGOTS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.INGOT, - () -> createItem(new MetalIngotItem(type)) - ))); - - public static final Map> METAL_RINGS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.RING + RegNameStubs.METALMIND, - () -> createItem(new RingMetalmindItem(type)) - ))); - - public static final Map> METAL_BRACELETS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.BRACELET + RegNameStubs.METALMIND, - () -> createItem(new BraceletMetalmindItem(type)) - ))); - - public static final Map> METAL_NECKLACES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasFeruchemicalEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.NECKLACE + RegNameStubs.METALMIND, - () -> createItem(new NecklaceMetalmindItem(type)) - ))); - - public static final Map> METAL_SPIKE = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasHemalurgicEffect) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.SPIKE, - () -> createItem(new HemalurgicSpikeItem(type)) - ))); - - - public static final Map> POLESTONE_CHIPS = - Arrays.stream(Roshar.Polestone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.CHIP, - () -> createItem(new PolestoneItem(type, Roshar.GemSize.CHIP)) - ))); - - - public static final Map> POLESTONE_MARKS = - Arrays.stream(Roshar.Polestone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.MARK, - () -> createItem(new PolestoneItem(type, Roshar.GemSize.MARK)) - ))); - - - public static final Map> POLESTONE_BROAMS = - Arrays.stream(Roshar.Polestone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + RegNameStubs.BROAM, - () -> createItem(new PolestoneItem(type, Roshar.GemSize.BROAM)) - ))); - - - private static T createItem(T item) - { - return item; - } + public static final Map> METAL_INGOTS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasMaterialItem) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.INGOT, + () -> createItem(new MetalIngotItem(type)) + ))); + + public static final Map> METAL_RINGS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.RING + RegNameStubs.METALMIND, + () -> createItem(new RingMetalmindItem(type)) + ))); + + public static final Map> METAL_BRACELETS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.BRACELET + RegNameStubs.METALMIND, + () -> createItem(new BraceletMetalmindItem(type)) + ))); + + public static final Map> METAL_NECKLACES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasFeruchemicalEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.NECKLACE + RegNameStubs.METALMIND, + () -> createItem(new NecklaceMetalmindItem(type)) + ))); + + public static final Map> METAL_SPIKE = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasHemalurgicEffect) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.SPIKE, + () -> createItem(new HemalurgicSpikeItem(type)) + ))); + + + public static final Map> POLESTONE_CHIPS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.CHIP, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.CHIP)) + ))); + + + public static final Map> POLESTONE_MARKS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.MARK, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.MARK)) + ))); + + + public static final Map> POLESTONE_BROAMS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.BROAM, + () -> createItem(new PolestoneItem(type, Roshar.GemSize.BROAM)) + ))); + + + private static T createItem(T item) + { + return item; + } } diff --git a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java index 22ae17ec2..8935a006f 100644 --- a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java +++ b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java @@ -4,14 +4,14 @@ package leaf.cosmere.registry; +import com.mojang.blaze3d.platform.InputConstants; import leaf.cosmere.Cosmere; import leaf.cosmere.client.settings.KeyConflictContext; -import net.minecraft.client.settings.KeyBinding; -import net.minecraft.client.util.InputMappings; +import net.minecraft.client.KeyMapping; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.ClientRegistry; import net.minecraftforge.client.settings.KeyModifier; import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.client.registry.ClientRegistry; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -24,35 +24,35 @@ public class KeybindingRegistry { - public static KeyBinding MANIFESTATION_MENU; - public static KeyBinding MANIFESTATION_TOGGLE; - public static KeyBinding MANIFESTATION_NEXT; - public static KeyBinding MANIFESTATION_PREVIOUS; + public static KeyMapping MANIFESTATION_MENU; + public static KeyMapping MANIFESTATION_TOGGLE; + public static KeyMapping MANIFESTATION_NEXT; + public static KeyMapping MANIFESTATION_PREVIOUS; - public static KeyBinding MANIFESTATION_MODE_INCREASE; - public static KeyBinding MANIFESTATION_MODE_DECREASE; + public static KeyMapping MANIFESTATION_MODE_INCREASE; + public static KeyMapping MANIFESTATION_MODE_DECREASE; - public static KeyBinding ALLOMANCY_PUSH; - public static KeyBinding ALLOMANCY_PULL; + public static KeyMapping ALLOMANCY_PUSH; + public static KeyMapping ALLOMANCY_PULL; - @SubscribeEvent - public static void register(FMLClientSetupEvent event) - { - ClientRegistry.registerKeyBinding(MANIFESTATION_MENU = new KeyBinding(KEY_MANIFESTATION_MENU, GLFW.GLFW_KEY_G, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_TOGGLE = new KeyBinding(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); + @SubscribeEvent + public static void register(FMLClientSetupEvent event) + { + ClientRegistry.registerKeyBinding(MANIFESTATION_MENU = new KeyMapping(KEY_MANIFESTATION_MENU, GLFW.GLFW_KEY_G, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_TOGGLE = new KeyMapping(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_NEXT = new KeyBinding(KEY_MANIFESTATION_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_PREVIOUS = createKeybinding(KEY_MANIFESTATION_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_NEXT = new KeyMapping(KEY_MANIFESTATION_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_PREVIOUS = createKeybinding(KEY_MANIFESTATION_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_INCREASE = new KeyBinding(KEY_MANIFESTATION_MODE_INCREASE, GLFW.GLFW_KEY_KP_ADD, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_DECREASE = new KeyBinding(KEY_MANIFESTATION_MODE_DECREASE, GLFW.GLFW_KEY_KP_SUBTRACT, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_INCREASE = new KeyMapping(KEY_MANIFESTATION_MODE_INCREASE, GLFW.GLFW_KEY_KP_ADD, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_MODE_DECREASE = new KeyMapping(KEY_MANIFESTATION_MODE_DECREASE, GLFW.GLFW_KEY_KP_SUBTRACT, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(ALLOMANCY_PUSH = new KeyBinding(KEY_ALLOMANCY_PUSH, GLFW.GLFW_KEY_TAB, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(ALLOMANCY_PULL = new KeyBinding(KEY_ALLOMANCY_PULL, GLFW.GLFW_KEY_R, KEYS_CATEGORY)); - } + ClientRegistry.registerKeyBinding(ALLOMANCY_PUSH = new KeyMapping(KEY_ALLOMANCY_PUSH, GLFW.GLFW_KEY_TAB, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(ALLOMANCY_PULL = new KeyMapping(KEY_ALLOMANCY_PULL, GLFW.GLFW_KEY_R, KEYS_CATEGORY)); + } - public static KeyBinding createKeybinding(String description, KeyModifier keyModifier, int keyCode, String category) - { - return new KeyBinding(description, KeyConflictContext.DEFAULT, keyModifier, InputMappings.Type.KEYSYM.getOrCreate(keyCode), category); - } + public static KeyMapping createKeybinding(String description, KeyModifier keyModifier, int keyCode, String category) + { + return new KeyMapping(description, KeyConflictContext.DEFAULT, keyModifier, InputConstants.Type.KEYSYM.getOrCreate(keyCode), category); + } } diff --git a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java index 9a9f5cb7b..0df627640 100644 --- a/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootFunctionRegistry.java @@ -10,27 +10,26 @@ import leaf.cosmere.loot.InvestSpikeLootFunction; import leaf.cosmere.loot.RandomiseMetalTypeLootFunction; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.loot.ILootSerializer; -import net.minecraft.loot.LootFunctionType; -import net.minecraft.loot.functions.ILootFunction; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.registry.Registry; -import net.minecraftforge.fml.common.Mod; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.storage.loot.Serializer; +import net.minecraft.world.level.storage.loot.functions.LootItemFunction; +import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; public class LootFunctionRegistry { - public static final LootFunctionType INVEST_SPIKE = register("invest_spike", new InvestSpikeLootFunction.Serializer()); - public static final LootFunctionType INVEST_METALMIND = register("invest_metalmind", new InvestMetalmindLootFunction.Serializer()); - public static final LootFunctionType RANDOMISE_METALTYPE = register("randomise_metaltype", new RandomiseMetalTypeLootFunction.Serializer()); + public static final LootItemFunctionType INVEST_SPIKE = register("invest_spike", new InvestSpikeLootFunction.Serializer()); + public static final LootItemFunctionType INVEST_METALMIND = register("invest_metalmind", new InvestMetalmindLootFunction.Serializer()); + public static final LootItemFunctionType RANDOMISE_METALTYPE = register("randomise_metaltype", new RandomiseMetalTypeLootFunction.Serializer()); - private static LootFunctionType register(String name, ILootSerializer serializer) - { - return Registry.register(Registry.LOOT_FUNCTION_TYPE, new ResourceLocation(Cosmere.MODID, name), new LootFunctionType(serializer)); - } + private static LootItemFunctionType register(String name, Serializer serializer) + { + return Registry.register(Registry.LOOT_FUNCTION_TYPE, new ResourceLocation(Cosmere.MODID, name), new LootItemFunctionType(serializer)); + } - public static void Register() - { - //static finals get initialized on class being referenced - LogHelper.info("Registering Loot Functions"); - } + public static void Register() + { + //static finals get initialized on class being referenced + LogHelper.info("Registering Loot Functions"); + } } diff --git a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java index 5864b2fcf..c1b4c8f86 100644 --- a/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java +++ b/src/main/java/leaf/cosmere/registry/LootModifierRegistry.java @@ -8,18 +8,17 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.loot.FortuneBonusModifier; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; -import net.minecraftforge.fml.RegistryObject; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; @Mod.EventBusSubscriber( - modid = Cosmere.MODID, - bus = Mod.EventBusSubscriber.Bus.MOD + modid = Cosmere.MODID, + bus = Mod.EventBusSubscriber.Bus.MOD ) public class LootModifierRegistry { - public static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.LOOT_MODIFIER_SERIALIZERS, Cosmere.MODID); - public static final RegistryObject> FORTUNE_BONUS = LOOT_MODIFIERS.register("fortune_bonus", FortuneBonusModifier.Serializer::new); - + public static final DeferredRegister> LOOT_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.LOOT_MODIFIER_SERIALIZERS, Cosmere.MODID); + public static final RegistryObject> FORTUNE_BONUS = LOOT_MODIFIERS.register("fortune_bonus", FortuneBonusModifier.Serializer::new); } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index a9151117c..c0382ab93 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -5,19 +5,19 @@ package leaf.cosmere.registry; import leaf.cosmere.Cosmere; -import leaf.cosmere.constants.Roshar; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.manifestation.allomancy.*; import leaf.cosmere.manifestation.feruchemy.*; import leaf.cosmere.manifestation.surgebinding.*; -import net.minecraft.util.ResourceLocation; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.IForgeRegistry; import net.minecraftforge.registries.RegistryBuilder; +import net.minecraftforge.registries.RegistryObject; import java.awt.*; import java.util.Arrays; @@ -29,173 +29,174 @@ public class ManifestationRegistry { - public static final DeferredRegister MANIFESTATIONS = DeferredRegister.create(AManifestation.class, Cosmere.MODID); - public static Supplier> MANIFESTATION_REGISTRY = MANIFESTATIONS.makeRegistry("investiture_manifestations", () -> new RegistryBuilder().setMaxID(Integer.MAX_VALUE - 1)); - - public static final RegistryObject NONE = MANIFESTATIONS.register(Manifestations.NONE, () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); - - // Allomancy - public static final Map> ALLOMANCY_POWERS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasAssociatedManifestation) - .collect(Collectors.toMap( - Function.identity(), - metalType -> - MANIFESTATIONS.register( - metalType.getAllomancyRegistryName(), - () -> makeAllomancyManifestation(metalType))//get the specific instance of the manifestation for allomancy - )); - - // Feruchemy powers - public static final Map> FERUCHEMY_POWERS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasAssociatedManifestation) - .collect(Collectors.toMap( - Function.identity(), - metalType -> - MANIFESTATIONS.register( - metalType.getFeruchemyRegistryName(), - () -> makeFeruchemyManifestation(metalType))//feruchemy can be base manifestation type because it mostly functions through effects - )); - - // AonDor - //todo AonDor - //public static final RegistryObject ELANTRIAN = MANIFESTATIONS.register(Constants.Manifestations.AonDor.ELANTRIAN, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - - // Biochroma - //todo biochroma - //public static final RegistryObject BIOCHROMA = MANIFESTATIONS.register(Constants.Manifestations.Biochroma.AWAKENING, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); - - // Surgebinder - //todo knights radiant - - public static final Map> SURGEBINDING_POWERS = - Arrays.stream(Roshar.Surges.values()) - .collect(Collectors.toMap( - Function.identity(), - surge -> - MANIFESTATIONS.register( - surge.getName(), - () -> makeSurgebindingManifestation(surge))//get the specific instance of the manifestation for allomancy - )); - - //Create Registry - public static AManifestation fromID(String location) - { - ResourceLocation resourceLocation = new ResourceLocation(location); - return fromID(resourceLocation); - } - - public static AManifestation fromID(ResourceLocation location) - { - AManifestation value = MANIFESTATION_REGISTRY.get().getValue(location); - if (value != null) - { - return value; - } - return ManifestationRegistry.NONE.get(); - } - - - private static AllomancyBase makeAllomancyManifestation(Metals.MetalType metalType) - { - switch (metalType) - { - case IRON://todo pull and iron sight - case STEEL://todo push and steel sight - return new AllomancyIronSteel(metalType); - case TIN://todo more than just night vision? - return new AllomancyTin(metalType); - case PEWTER://done? - return new AllomancyPewter(metalType); - case ZINC://done? - return new AllomancyZinc(metalType); - case BRASS://done? - return new AllomancyBrass(metalType); - case COPPER://done? - return new AllomancyCopper(metalType); - case BRONZE://done? - return new AllomancyBronze(metalType); - case ALUMINUM:// done? - return new AllomancyAluminum(metalType); - case DURALUMIN://todo decide how to enhance other metals - return new AllomancyDuralumin(metalType); - case CHROMIUM://done? - return new AllomancyChromium(metalType); - case NICROSIL://todo decide how to enhance other metals - return new AllomancyNicrosil(metalType); - case CADMIUM://todo decide how to slow down time - return new AllomancyCadmium(metalType); - case BENDALLOY://done? - return new AllomancyBendalloy(metalType); - case GOLD://shows your past //todo - return new AllomancyGold(metalType); - case ELECTRUM://shows your future // todo - return new AllomancyElectrum(metalType); - } - - //others aren't valid allomancy manifestations... for now. - return new AllomancyBase(metalType); - } - - - private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalType) - { - switch (metalType) - { - case COPPER: - return new FeruchemyCopper(metalType); - case BRONZE: - return new FeruchemyBronze(metalType); - case ALUMINUM: - return new FeruchemyAluminum(metalType); - case NICROSIL: - return new FeruchemyNicrosil(metalType); - case ELECTRUM: - return new FeruchemyElectrum(metalType); - default: - return new FeruchemyBase(metalType); - } - } - private static SurgebindingBase makeSurgebindingManifestation(Roshar.Surges surge) - { - switch (surge) - { - case ADHESION: - return new SurgeAdhesion(surge); - case GRAVITATION: - return new SurgeGravitation(surge); - case DIVISION: - return new SurgeDivision(surge); - case ABRASION: - return new SurgeAbrasion(surge); - case PROGRESSION: - return new SurgeProgression(surge); - case ILLUMINATION: - return new SurgeIllumination(surge); - case TRANSFORMATION: - return new SurgeTransformation(surge); - case TRANSPORTATION: - return new SurgeTransportation(surge); - case COHESION: - return new SurgeCohesion(surge); - case TENSION: - return new SurgeTension(surge); - } - - //shouldn't ever make it here - return new SurgebindingBase(surge); - } - - public static Map getManifestations() - { - Map map = new HashMap<>(); - - IForgeRegistry abstractInvestitureManifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); - for (AManifestation data : abstractInvestitureManifestations) - { - map.put(data.getRegistryName(), data.description().getKey()); - } - return map; - } + public static final DeferredRegister MANIFESTATIONS = DeferredRegister.create(ResourceKeyRegistry.MANIFESTATION_TYPES, Cosmere.MODID); + public static Supplier> MANIFESTATION_REGISTRY = MANIFESTATIONS.makeRegistry(AManifestation.class, () -> new RegistryBuilder().setMaxID(Integer.MAX_VALUE - 1)); + + public static final RegistryObject NONE = MANIFESTATIONS.register(Manifestations.NONE, () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); + + // Allomancy + public static final Map> ALLOMANCY_POWERS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasAssociatedManifestation) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + MANIFESTATIONS.register( + metalType.getAllomancyRegistryName(), + () -> makeAllomancyManifestation(metalType))//get the specific instance of the manifestation for allomancy + )); + + // Feruchemy powers + public static final Map> FERUCHEMY_POWERS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasAssociatedManifestation) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + MANIFESTATIONS.register( + metalType.getFeruchemyRegistryName(), + () -> makeFeruchemyManifestation(metalType))//feruchemy can be base manifestation type because it mostly functions through effects + )); + + // AonDor + //todo AonDor + //public static final RegistryObject ELANTRIAN = MANIFESTATIONS.register(Constants.Manifestations.AonDor.ELANTRIAN, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); + + // Biochroma + //todo biochroma + //public static final RegistryObject BIOCHROMA = MANIFESTATIONS.register(Constants.Manifestations.Biochroma.AWAKENING, () -> new InvestitureManifestationBase(Color.WHITE.getRGB())); + + // Surgebinder + //todo knights radiant + + public static final Map> SURGEBINDING_POWERS = + Arrays.stream(Roshar.Surges.values()) + .collect(Collectors.toMap( + Function.identity(), + surge -> + MANIFESTATIONS.register( + surge.getName(), + () -> makeSurgebindingManifestation(surge))//get the specific instance of the manifestation for allomancy + )); + + //Create Registry + public static AManifestation fromID(String location) + { + ResourceLocation resourceLocation = new ResourceLocation(location); + return fromID(resourceLocation); + } + + public static AManifestation fromID(ResourceLocation location) + { + AManifestation value = MANIFESTATION_REGISTRY.get().getValue(location); + if (value != null) + { + return value; + } + return ManifestationRegistry.NONE.get(); + } + + + private static AllomancyBase makeAllomancyManifestation(Metals.MetalType metalType) + { + switch (metalType) + { + case IRON://todo pull and iron sight + case STEEL://todo push and steel sight + return new AllomancyIronSteel(metalType); + case TIN://todo more than just night vision? + return new AllomancyTin(metalType); + case PEWTER://done? + return new AllomancyPewter(metalType); + case ZINC://done? + return new AllomancyZinc(metalType); + case BRASS://done? + return new AllomancyBrass(metalType); + case COPPER://done? + return new AllomancyCopper(metalType); + case BRONZE://done? + return new AllomancyBronze(metalType); + case ALUMINUM:// done? + return new AllomancyAluminum(metalType); + case DURALUMIN://todo decide how to enhance other metals + return new AllomancyDuralumin(metalType); + case CHROMIUM://done? + return new AllomancyChromium(metalType); + case NICROSIL://todo decide how to enhance other metals + return new AllomancyNicrosil(metalType); + case CADMIUM://todo decide how to slow down time + return new AllomancyCadmium(metalType); + case BENDALLOY://done? + return new AllomancyBendalloy(metalType); + case GOLD://shows your past //todo + return new AllomancyGold(metalType); + case ELECTRUM://shows your future // todo + return new AllomancyElectrum(metalType); + } + + //others aren't valid allomancy manifestations... for now. + return new AllomancyBase(metalType); + } + + + private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalType) + { + switch (metalType) + { + case COPPER: + return new FeruchemyCopper(metalType); + case BRONZE: + return new FeruchemyBronze(metalType); + case ALUMINUM: + return new FeruchemyAluminum(metalType); + case NICROSIL: + return new FeruchemyNicrosil(metalType); + case ELECTRUM: + return new FeruchemyElectrum(metalType); + default: + return new FeruchemyBase(metalType); + } + } + + private static SurgebindingBase makeSurgebindingManifestation(Roshar.Surges surge) + { + switch (surge) + { + case ADHESION: + return new SurgeAdhesion(surge); + case GRAVITATION: + return new SurgeGravitation(surge); + case DIVISION: + return new SurgeDivision(surge); + case ABRASION: + return new SurgeAbrasion(surge); + case PROGRESSION: + return new SurgeProgression(surge); + case ILLUMINATION: + return new SurgeIllumination(surge); + case TRANSFORMATION: + return new SurgeTransformation(surge); + case TRANSPORTATION: + return new SurgeTransportation(surge); + case COHESION: + return new SurgeCohesion(surge); + case TENSION: + return new SurgeTension(surge); + } + + //shouldn't ever make it here + return new SurgebindingBase(surge); + } + + public static Map getManifestations() + { + Map map = new HashMap<>(); + + IForgeRegistry abstractInvestitureManifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); + for (AManifestation data : abstractInvestitureManifestations) + { + map.put(data.getRegistryName(), data.description().getKey()); + } + return map; + } } diff --git a/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java index f4e428935..1553229a7 100644 --- a/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java +++ b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java @@ -6,27 +6,27 @@ import com.google.common.collect.ImmutableSet; import leaf.cosmere.Cosmere; -import net.minecraft.block.Block; -import net.minecraft.village.PointOfInterestType; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class PointOfInterestRegistry { - public static DeferredRegister POINT_OF_INTERESTS = DeferredRegister.create(ForgeRegistries.POI_TYPES, Cosmere.MODID); + public static DeferredRegister POINT_OF_INTERESTS = DeferredRegister.create(ForgeRegistries.POI_TYPES, Cosmere.MODID); - public static RegistryObject METAL_TRADER_POI = POINT_OF_INTERESTS.register("metal_trader", () -> registerPOI("metal_trader", BlocksRegistry.METALWORKING_TABLE::get)); + public static RegistryObject METAL_TRADER_POI = POINT_OF_INTERESTS.register("metal_trader", () -> registerPOI("metal_trader", BlocksRegistry.METALWORKING_TABLE::get)); - private static PointOfInterestType registerPOI(String name, Supplier block) - { - return new PointOfInterestType( - "cosmere:" + name,//name - ImmutableSet.copyOf(block.get().getStateDefinition().getPossibleStates()),//states - 1, //tickets(?) - 1);//range - } + private static PoiType registerPOI(String name, Supplier block) + { + return new PoiType( + "cosmere:" + name,//name + ImmutableSet.copyOf(block.get().getStateDefinition().getPossibleStates()),//states + 1, //tickets(?) + 1);//range + } } diff --git a/src/main/java/leaf/cosmere/registry/RecipeRegistry.java b/src/main/java/leaf/cosmere/registry/RecipeRegistry.java index a049de921..1b18cdd3c 100644 --- a/src/main/java/leaf/cosmere/registry/RecipeRegistry.java +++ b/src/main/java/leaf/cosmere/registry/RecipeRegistry.java @@ -6,26 +6,27 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.recipes.VialMixingRecipe; -import net.minecraft.item.crafting.FireworkStarRecipe; -import net.minecraft.item.crafting.IRecipeSerializer; -import net.minecraft.item.crafting.SpecialRecipeSerializer; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.SimpleRecipeSerializer; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; // for the non-json based recipes public class RecipeRegistry { - public static final DeferredRegister> SPECIAL_RECIPES = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cosmere.MODID); + public static final DeferredRegister> SPECIAL_RECIPES = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cosmere.MODID); - //not sure why I can't copy how minecraft fireworks do their serializer, but this works. - public static class VialMixingRecipeSerializer extends SpecialRecipeSerializer - { - public VialMixingRecipeSerializer() { - super(VialMixingRecipe::new); - } - } - public static final RegistryObject> VIAL_RECIPE_SERIALIZER = SPECIAL_RECIPES.register("vial_mix", VialMixingRecipeSerializer::new); + //not sure why I can't copy how minecraft fireworks do their serializer, but this works. + public static class VialMixingRecipeSerializer extends SimpleRecipeSerializer + { + public VialMixingRecipeSerializer() + { + super(VialMixingRecipe::new); + } + } + + public static final RegistryObject> VIAL_RECIPE_SERIALIZER = SPECIAL_RECIPES.register("vial_mix", VialMixingRecipeSerializer::new); } diff --git a/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java b/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java new file mode 100644 index 000000000..065c42af9 --- /dev/null +++ b/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java @@ -0,0 +1,18 @@ +/* + * File created ~ 7 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.registry; + +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.core.Registry; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.common.world.ForgeWorldPreset; + +public class ResourceKeyRegistry +{ + public static final ResourceKey> MANIFESTATION_TYPES = ResourceKey.createRegistryKey(ResourceLocationHelper.prefix("manifestation_types")); + +} diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index 96ebc2b7c..d204de564 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -6,145 +6,130 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.constants.Roshar; -import net.minecraft.block.Block; -import net.minecraft.item.Item; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; -import net.minecraft.tags.ITag; import net.minecraft.tags.ItemTags; -import net.minecraft.util.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; import java.util.Arrays; -import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; -import static leaf.cosmere.utils.helpers.ResourceLocationHelper.prefix; - public class TagsRegistry { - private static ITag.INamedTag getOrRegister(List> list, - Function> register, - ResourceLocation loc) - { - for (ITag.INamedTag existing : list) - { - if (existing.getName().equals(loc)) - { - return existing; - } - } - - return register.apply(loc); - } - - public static class Items - { - - - public static final ITag.INamedTag CURIO_ANY = makeItem("curios", "curio"); - public static final ITag.INamedTag CURIO_BACK = makeItem("curios", "back"); - public static final ITag.INamedTag CURIO_BELT = makeItem("curios", "belt"); - public static final ITag.INamedTag CURIO_BODY = makeItem("curios", "body"); - public static final ITag.INamedTag CURIO_BRACELET = makeItem("curios", "bracelet"); - public static final ITag.INamedTag CURIO_CHARM = makeItem("curios", "charm"); - public static final ITag.INamedTag CURIO_HEAD = makeItem("curios", "head"); - public static final ITag.INamedTag CURIO_HANDS = makeItem("curios", "hands"); - public static final ITag.INamedTag CURIO_NECKLACE = makeItem("curios", "necklace"); - public static final ITag.INamedTag CURIO_RING = makeItem("curios", "ring"); - - public static ITag.INamedTag METAL_SPIKE = makeItem("cosmere", "spike"); - - - public static ITag.INamedTag NUGGET = forgeItemTag("nugget"); - - - public static final Map> METAL_RAW_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("raw_materials/" + type.getName()))); - - public static final Map> METAL_DUST_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("dust/" + type.getName()))); - - public static final Map> METAL_NUGGET_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("nuggets/" + type.getName()))); - - public static final Map> METAL_INGOT_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("ingots/" + type.getName()))); - - public static final Map> METAL_BLOCK_ITEM_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("storage_blocks/" + type.getName()))); - - - - public static final Map> GEM_TAGS = - Arrays.stream(Roshar.Polestone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("gems/" + type.getName()))); - - - private static ITag.INamedTag itemTag(String name) - { - return ItemTags.bind(prefix(name).toString()); - } - - private static ITag.INamedTag forgeItemTag(String name) - { - return getOrRegister(ItemTags.getWrappers(), loc -> ItemTags.bind(loc.toString()), new ResourceLocation("forge", name)); - } - - - public static ITag.INamedTag makeItem(String domain, String path) - { - return ItemTags.bind(new ResourceLocation(domain, path).toString()); - } - } - - public static class Blocks - { - - - public static ITag.INamedTag makeBlock(String domain, String path) - { - return BlockTags.bind(new ResourceLocation(domain, path).toString()); - } - - public static ITag.INamedTag DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); - public static ITag.INamedTag WITHER_PROOF = makeBlock("minecraft", "wither_immune"); - - public static final Map> METAL_ORE_BLOCK_TAGS = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeTag("ores/" + type.getName()))); - - public static final Map> METAL_BLOCK_TAGS = - Arrays.stream(Metals.MetalType.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> forgeTag("storage_blocks/" + type.getName()))); - - private static ITag.INamedTag forgeTag(String name) - { - return getOrRegister(BlockTags.getWrappers(), loc -> BlockTags.bind(loc.toString()), new ResourceLocation("forge", name)); - } - } + public static class Items + { + public static final TagKey CURIO_ANY = makeItem("curios", "curio"); + public static final TagKey CURIO_BACK = makeItem("curios", "back"); + public static final TagKey CURIO_BELT = makeItem("curios", "belt"); + public static final TagKey CURIO_BODY = makeItem("curios", "body"); + public static final TagKey CURIO_BRACELET = makeItem("curios", "bracelet"); + public static final TagKey CURIO_CHARM = makeItem("curios", "charm"); + public static final TagKey CURIO_HEAD = makeItem("curios", "head"); + public static final TagKey CURIO_HANDS = makeItem("curios", "hands"); + public static final TagKey CURIO_NECKLACE = makeItem("curios", "necklace"); + public static final TagKey CURIO_RING = makeItem("curios", "ring"); + + public static TagKey METAL_SPIKE = makeItem("cosmere", "spike"); + + + public static TagKey NUGGET = forgeItemTag("nugget"); + + + public static final Map> METAL_RAW_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("raw_materials/" + type.getName()))); + + public static final Map> METAL_DUST_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("dust/" + type.getName()))); + + public static final Map> METAL_NUGGET_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("nuggets/" + type.getName()))); + + public static final Map> METAL_INGOT_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("ingots/" + type.getName()))); + + public static final Map> METAL_BLOCK_ITEM_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("storage_blocks/" + type.getName()))); + + + public static final Map> GEM_TAGS = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("gems/" + type.getName()))); + + + public static TagKey makeItem(String domain, String path) + { + return ItemTags.create(new ResourceLocation(domain, path)); + } + + public static TagKey makeItem(ResourceLocation resourceLocation) + { + return ItemTags.create(resourceLocation); + } + + private static TagKey forgeItemTag(String name) + { + final ResourceLocation forgeTagToMake = new ResourceLocation("forge", name); + return makeItem(forgeTagToMake); + } + } + + public static class Blocks + { + + public static TagKey DRAGON_PROOF = makeBlock("minecraft", "dragon_immune"); + public static TagKey WITHER_PROOF = makeBlock("minecraft", "wither_immune"); + + public static final Map> METAL_ORE_BLOCK_TAGS = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeTag("ores/" + type.getName()))); + + public static final Map> METAL_BLOCK_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeTag("storage_blocks/" + type.getName()))); + + public static TagKey makeBlock(String domain, String path) + { + return BlockTags.create(new ResourceLocation(domain, path)); + } + + public static TagKey makeBlock(ResourceLocation resourceLocation) + { + return BlockTags.create(resourceLocation); + } + + private static TagKey forgeTag(String name) + { + final ResourceLocation forgeTagToMake = new ResourceLocation("forge", name); + return makeBlock(forgeTagToMake); + } + + } } diff --git a/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java index 52757ebe9..fa854dd1f 100644 --- a/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java +++ b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java @@ -6,34 +6,34 @@ import com.google.common.collect.ImmutableSet; import leaf.cosmere.Cosmere; -import net.minecraft.entity.merchant.villager.VillagerProfession; -import net.minecraft.util.SoundEvent; -import net.minecraft.util.SoundEvents; -import net.minecraft.village.PointOfInterestType; -import net.minecraftforge.fml.RegistryObject; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.entity.ai.village.poi.PoiType; +import net.minecraft.world.entity.npc.VillagerProfession; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; import java.util.function.Supplier; public class VillagerProfessionRegistry { - public static DeferredRegister VILLAGE_PROFESSIONS = DeferredRegister.create(ForgeRegistries.PROFESSIONS, Cosmere.MODID); + public static DeferredRegister VILLAGE_PROFESSIONS = DeferredRegister.create(ForgeRegistries.PROFESSIONS, Cosmere.MODID); - public static final RegistryObject METAL_TRADER = VILLAGE_PROFESSIONS.register( - "metal_trader", - () -> registerProfession( - "metal_trader", - () -> PointOfInterestRegistry.METAL_TRADER_POI.get(), - SoundEvents.VILLAGER_WORK_TOOLSMITH)); + public static final RegistryObject METAL_TRADER = VILLAGE_PROFESSIONS.register( + "metal_trader", + () -> registerProfession( + "metal_trader", + () -> PointOfInterestRegistry.METAL_TRADER_POI.get(), + SoundEvents.VILLAGER_WORK_TOOLSMITH)); - public static VillagerProfession registerProfession(String name, Supplier poi, SoundEvent workSound) - { - return new VillagerProfession( - "cosmere:" + name, - poi.get(), - ImmutableSet.of(), - ImmutableSet.of(), - workSound); - } + public static VillagerProfession registerProfession(String name, Supplier poi, SoundEvent workSound) + { + return new VillagerProfession( + "cosmere:" + name, + poi.get(), + ImmutableSet.of(), + ImmutableSet.of(), + workSound); + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/CodecHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CodecHelper.java index 48e37c7d2..849232602 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/CodecHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/CodecHelper.java @@ -5,12 +5,12 @@ package leaf.cosmere.utils.helpers; import com.mojang.serialization.Codec; -import net.minecraft.util.math.BlockPos; +import net.minecraft.core.BlockPos; import java.util.List; public class CodecHelper { - public static Codec> BlockPosListCodec = Codec.list(BlockPos.CODEC); + public static Codec> BlockPosListCodec = Codec.list(BlockPos.CODEC); } diff --git a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java index 288dd60a9..1da4da649 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java @@ -5,9 +5,9 @@ package leaf.cosmere.utils.helpers; import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.util.ResourceLocation; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceLocation; import java.util.Map; @@ -15,17 +15,17 @@ public class CommandHelper { - public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBuilder builder) - { - Map map = getManifestations(); - if (!map.isEmpty()) - { - map.entrySet().forEach(entry -> - { - builder.suggest(entry.getKey().toString(), new TranslationTextComponent(entry.getValue()).withStyle((style) -> style.withColor(TextFormatting.GREEN))); - }); - } - builder.buildFuture(); - return builder; - } + public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBuilder builder) + { + Map map = getManifestations(); + if (!map.isEmpty()) + { + map.entrySet().forEach(entry -> + { + builder.suggest(entry.getKey().toString(), new TranslatableComponent(entry.getValue()).withStyle((style) -> style.withColor(ChatFormatting.GREEN))); + }); + } + builder.buildFuture(); + return builder; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java index 470da6a3a..40bc194ad 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/CompoundNBTHelper.java @@ -5,9 +5,9 @@ package leaf.cosmere.utils.helpers; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; import javax.annotation.Nullable; import java.util.List; @@ -16,231 +16,233 @@ public final class CompoundNBTHelper { - private static final int[] EMPTY_INT_ARRAY = new int[0]; - - - public static void set(CompoundNBT compoundTag, String tag, INBT nbt) - { - compoundTag.put(tag, nbt); - } - - public static void setBoolean(CompoundNBT compoundTag, String tag, boolean b) - { - compoundTag.putBoolean(tag, b); - } - - public static void setByte(CompoundNBT compoundTag, String tag, byte b) - { - compoundTag.putByte(tag, b); - } - - public static void setShort(CompoundNBT compoundTag, String tag, short s) - { - compoundTag.putShort(tag, s); - } - - public static void setInt(CompoundNBT compoundTag, String tag, int i) - { - compoundTag.putInt(tag, i); - } - - public static void setIntArray(CompoundNBT compoundTag, String tag, int[] val) - { - compoundTag.putIntArray(tag, val); - } - public static void setIntArray(CompoundNBT compoundTag, String tag, List val) - { - compoundTag.putIntArray(tag, val); - } - - public static void setLong(CompoundNBT compoundTag, String tag, long l) - { - compoundTag.putLong(tag, l); - } - - public static void setFloat(CompoundNBT compoundTag, String tag, float f) - { - compoundTag.putFloat(tag, f); - } - - public static void setDouble(CompoundNBT compoundTag, String tag, double d) - { - compoundTag.putDouble(tag, d); - } - - public static void setCompound(CompoundNBT compoundTag, String tag, CompoundNBT cmp) - { - if (!tag.equalsIgnoreCase("ench")) // not override the enchantments - { - compoundTag.put(tag, cmp); - } - } - - public static void setString(CompoundNBT compoundTag, String tag, String s) - { - compoundTag.putString(tag, s); - } - - public static void setUuid(CompoundNBT compoundTag, String tag, UUID value) - { - compoundTag.putUUID(tag, value); - } - - public static void setList(CompoundNBT compoundTag, String tag, ListNBT list) - { - compoundTag.put(tag, list); - } - - public static void removeEntry(CompoundNBT compoundTag, String tag) - { - compoundTag.remove(tag); - } - - // GETTERS - - public static boolean verifyExistance(CompoundNBT compoundTag, String tag) - { - return compoundTag.contains(tag); - } - - @Nullable - public static INBT get(CompoundNBT compoundTag, String tag) - { - return verifyExistance(compoundTag, tag) ? compoundTag.get(tag) : null; - } - - public static boolean getBoolean(CompoundNBT compoundTag, String tag, boolean defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getBoolean(tag) : defaultExpected; - } - - public static byte getByte(CompoundNBT compoundTag, String tag, byte defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getByte(tag) : defaultExpected; - } - - public static short getShort(CompoundNBT compoundTag, String tag, short defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getShort(tag) : defaultExpected; - } - - public static int getInt(CompoundNBT compoundTag, String tag, int defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getInt(tag) : defaultExpected; - } - - public static int[] getIntArray(CompoundNBT compoundTag, String tag) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getIntArray(tag) : EMPTY_INT_ARRAY; - } - - public static long getLong(CompoundNBT compoundTag, String tag, long defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getLong(tag) : defaultExpected; - } - - public static float getFloat(CompoundNBT compoundTag, String tag, float defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getFloat(tag) : defaultExpected; - } - - public static double getDouble(CompoundNBT compoundTag, String tag, double defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getDouble(tag) : defaultExpected; - } - - /** - * If nullifyOnFail is true it'll return null if it doesn't find any - * compounds, otherwise it'll return a new one. - **/ - public static CompoundNBT getCompound(CompoundNBT compoundTag, String tag, boolean nullifyOnFail) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getCompound(tag) - : nullifyOnFail ? null : new CompoundNBT(); - } - - public static String getString(CompoundNBT compoundTag, String tag, String defaultExpected) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getString(tag) : defaultExpected; - } - - @Nullable - public static UUID getUuid(CompoundNBT compoundTag, String tag) - { - return verifyExistance(compoundTag, tag + "Most") && verifyExistance(compoundTag, tag + "Least") - ? compoundTag.getUUID(tag) : null; - } - - public static ListNBT getList(CompoundNBT compoundTag, String tag, int objtype, boolean nullifyOnFail) - { - return verifyExistance(compoundTag, tag) ? compoundTag.getList(tag, objtype) - : nullifyOnFail ? null : new ListNBT(); - } - /** - * Returns true if the `target` tag contains all of the tags and values present in the `template` tag. Recurses into - * compound tags and matches all template keys and values; recurses into list tags and matches the template against - * the first elements of target. Empty lists and compounds in the template will match target lists and compounds of - * any size. - */ - public static boolean matchTag(@Nullable INBT template, @Nullable INBT target) - { - if (template instanceof CompoundNBT && target instanceof CompoundNBT) - { - return matchTagCompound((CompoundNBT) template, (CompoundNBT) target); - } - else if (template instanceof ListNBT && target instanceof ListNBT) - { - return matchTagList((ListNBT) template, (ListNBT) target); - } - else - { - return template == null || (target != null && target.equals(template)); - } - } - - private static boolean matchTagCompound(CompoundNBT template, CompoundNBT target) - { - if (template.size() > target.size()) - { - return false; - } - - for (String key : template.getAllKeys()) - { - if (!matchTag(template.get(key), target.get(key))) - { - return false; - } - } - - return true; - } - - private static boolean matchTagList(ListNBT template, ListNBT target) - { - if (template.size() > target.size()) - { - return false; - } - - for (int i = 0; i < template.size(); i++) - { - if (!matchTag(template.get(i), target.get(i))) - { - return false; - } - } - - return true; - } - - public static void renameTag(CompoundNBT nbt, String oldName, String newName) - { - INBT tag = nbt.get(oldName); - if (tag != null) - { - nbt.remove(oldName); - nbt.put(newName, tag); - } - } + private static final int[] EMPTY_INT_ARRAY = new int[0]; + + + public static void set(CompoundTag compoundTag, String tag, Tag nbt) + { + compoundTag.put(tag, nbt); + } + + public static void setBoolean(CompoundTag compoundTag, String tag, boolean b) + { + compoundTag.putBoolean(tag, b); + } + + public static void setByte(CompoundTag compoundTag, String tag, byte b) + { + compoundTag.putByte(tag, b); + } + + public static void setShort(CompoundTag compoundTag, String tag, short s) + { + compoundTag.putShort(tag, s); + } + + public static void setInt(CompoundTag compoundTag, String tag, int i) + { + compoundTag.putInt(tag, i); + } + + public static void setIntArray(CompoundTag compoundTag, String tag, int[] val) + { + compoundTag.putIntArray(tag, val); + } + + public static void setIntArray(CompoundTag compoundTag, String tag, List val) + { + compoundTag.putIntArray(tag, val); + } + + public static void setLong(CompoundTag compoundTag, String tag, long l) + { + compoundTag.putLong(tag, l); + } + + public static void setFloat(CompoundTag compoundTag, String tag, float f) + { + compoundTag.putFloat(tag, f); + } + + public static void setDouble(CompoundTag compoundTag, String tag, double d) + { + compoundTag.putDouble(tag, d); + } + + public static void setCompound(CompoundTag compoundTag, String tag, CompoundTag cmp) + { + if (!tag.equalsIgnoreCase("ench")) // not override the enchantments + { + compoundTag.put(tag, cmp); + } + } + + public static void setString(CompoundTag compoundTag, String tag, String s) + { + compoundTag.putString(tag, s); + } + + public static void setUuid(CompoundTag compoundTag, String tag, UUID value) + { + compoundTag.putUUID(tag, value); + } + + public static void setList(CompoundTag compoundTag, String tag, ListTag list) + { + compoundTag.put(tag, list); + } + + public static void removeEntry(CompoundTag compoundTag, String tag) + { + compoundTag.remove(tag); + } + + // GETTERS + + public static boolean verifyExistance(CompoundTag compoundTag, String tag) + { + return compoundTag.contains(tag); + } + + @Nullable + public static Tag get(CompoundTag compoundTag, String tag) + { + return verifyExistance(compoundTag, tag) ? compoundTag.get(tag) : null; + } + + public static boolean getBoolean(CompoundTag compoundTag, String tag, boolean defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getBoolean(tag) : defaultExpected; + } + + public static byte getByte(CompoundTag compoundTag, String tag, byte defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getByte(tag) : defaultExpected; + } + + public static short getShort(CompoundTag compoundTag, String tag, short defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getShort(tag) : defaultExpected; + } + + public static int getInt(CompoundTag compoundTag, String tag, int defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getInt(tag) : defaultExpected; + } + + public static int[] getIntArray(CompoundTag compoundTag, String tag) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getIntArray(tag) : EMPTY_INT_ARRAY; + } + + public static long getLong(CompoundTag compoundTag, String tag, long defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getLong(tag) : defaultExpected; + } + + public static float getFloat(CompoundTag compoundTag, String tag, float defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getFloat(tag) : defaultExpected; + } + + public static double getDouble(CompoundTag compoundTag, String tag, double defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getDouble(tag) : defaultExpected; + } + + /** + * If nullifyOnFail is true it'll return null if it doesn't find any + * compounds, otherwise it'll return a new one. + **/ + public static CompoundTag getCompound(CompoundTag compoundTag, String tag, boolean nullifyOnFail) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getCompound(tag) + : nullifyOnFail ? null : new CompoundTag(); + } + + public static String getString(CompoundTag compoundTag, String tag, String defaultExpected) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getString(tag) : defaultExpected; + } + + @Nullable + public static UUID getUuid(CompoundTag compoundTag, String tag) + { + return verifyExistance(compoundTag, tag + "Most") && verifyExistance(compoundTag, tag + "Least") + ? compoundTag.getUUID(tag) : null; + } + + public static ListTag getList(CompoundTag compoundTag, String tag, int objtype, boolean nullifyOnFail) + { + return verifyExistance(compoundTag, tag) ? compoundTag.getList(tag, objtype) + : nullifyOnFail ? null : new ListTag(); + } + + /** + * Returns true if the `target` tag contains all of the tags and values present in the `template` tag. Recurses into + * compound tags and matches all template keys and values; recurses into list tags and matches the template against + * the first elements of target. Empty lists and compounds in the template will match target lists and compounds of + * any size. + */ + public static boolean matchTag(@Nullable Tag template, @Nullable Tag target) + { + if (template instanceof CompoundTag && target instanceof CompoundTag) + { + return matchTagCompound((CompoundTag) template, (CompoundTag) target); + } + else if (template instanceof ListTag && target instanceof ListTag) + { + return matchTagList((ListTag) template, (ListTag) target); + } + else + { + return template == null || (target != null && target.equals(template)); + } + } + + private static boolean matchTagCompound(CompoundTag template, CompoundTag target) + { + if (template.size() > target.size()) + { + return false; + } + + for (String key : template.getAllKeys()) + { + if (!matchTag(template.get(key), target.get(key))) + { + return false; + } + } + + return true; + } + + private static boolean matchTagList(ListTag template, ListTag target) + { + if (template.size() > target.size()) + { + return false; + } + + for (int i = 0; i < template.size(); i++) + { + if (!matchTag(template.get(i), target.get(i))) + { + return false; + } + } + + return true; + } + + public static void renameTag(CompoundTag nbt, String oldName, String newName) + { + Tag tag = nbt.get(oldName); + if (tag != null) + { + nbt.remove(oldName); + nbt.put(newName, tag); + } + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java index ee0fc55ac..ac942e50f 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java @@ -4,23 +4,23 @@ package leaf.cosmere.utils.helpers; -import net.minecraft.potion.Effect; -import net.minecraft.potion.EffectInstance; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; public class EffectsHelper { - public static EffectInstance getNewEffect(Effect effect, int amplifier) - { - EffectInstance effectInstance = new EffectInstance( - effect, - 21, - Math.max(0, amplifier), - false, //usually means came from outside player means, eg beacon? if true, hides icon in non-inv gui - false, // definitely don't want particles. - true); // show icon though + public static MobEffectInstance getNewEffect(MobEffect effect, int amplifier) + { + MobEffectInstance effectInstance = new MobEffectInstance( + effect, + 21, + Math.max(0, amplifier), + false, //usually means came from outside player means, eg beacon? if true, hides icon in non-inv gui + false, // definitely don't want particles. + true); // show icon though - return effectInstance; - } + return effectInstance; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index 4453198a2..77795aee6 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -6,104 +6,104 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; -import net.minecraft.entity.Entity; -import net.minecraft.entity.LivingEntity; -import net.minecraft.entity.player.PlayerEntity; -import net.minecraft.util.math.AxisAlignedBB; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; import java.util.List; public class EntityHelper { - public static List getLivingEntitiesInRange(LivingEntity selfEntity, int range, boolean includeSelf) - { - AxisAlignedBB areaOfEffect = new AxisAlignedBB(selfEntity.blockPosition()); - areaOfEffect = areaOfEffect.inflate(range, range, range); - - List entitiesFound = selfEntity.level.getEntitiesOfClass(LivingEntity.class, areaOfEffect); - - if (!includeSelf) - { - //removes self entity if it exists in the list - //otherwise list unchanged - entitiesFound.remove(selfEntity); - } - - return entitiesFound; - } - - public static List getEntitiesInRange(Entity entity, int range, boolean includeSelf) - { - AxisAlignedBB areaOfEffect = new AxisAlignedBB(entity.blockPosition()); - areaOfEffect = areaOfEffect.expandTowards(range, range, range); - - List entitiesFound = entity.level.getEntitiesOfClass(Entity.class, areaOfEffect); - - if (!includeSelf && entitiesFound.contains(entity)) - { - entitiesFound.remove(entity); - } - - return entitiesFound; - } - - - public static void giveEntityStartingManifestation(LivingEntity entity, SpiritwebCapability spiritwebCapability) - { - boolean isPlayerEntity = entity instanceof PlayerEntity; - //low chance of having full powers of one type - boolean isFullPowersFromOneType = MathHelper.randomInt(0, 16) % 16 == 0; - - //small chance of being twin born, but only if not having full powers above - //except for players who are guaranteed having at least two powers. - boolean isTwinborn = isPlayerEntity || MathHelper.randomInt(0, 16) < 3; - - //randomise the given powers from allomancy and feruchemy - int allomancyPower = MathHelper.randomInt(0, 15); - int feruchemyPower = MathHelper.randomInt(0, 15); - - //if not twinborn, pick one power - boolean isAllomancy = MathHelper.randomBool(); - Manifestations.ManifestationTypes powerType = isAllomancy - ? Manifestations.ManifestationTypes.ALLOMANCY - : Manifestations.ManifestationTypes.FERUCHEMY; - - if (isFullPowersFromOneType) - { - //ooh full powers - for (int i = 0; i < 16; i++) - { - spiritwebCapability.giveManifestation(powerType, i); - } - - if (!isPlayerEntity) - { - //todo translations - //todo grant random name - entity.setCustomName(TextHelper.createTranslatedText(isAllomancy - ? "Mistborn" - : "Feruchemist")); - } - } - else if (isTwinborn) - { - spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, allomancyPower); - spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, feruchemyPower); - - if (!isPlayerEntity) - { - //todo translations - //todo grant random name - entity.setCustomName(TextHelper.createTranslatedText("Twinborn")); - } - } - else - { - int powerID = isAllomancy ? allomancyPower : feruchemyPower; - spiritwebCapability.giveManifestation(powerType, powerID); - //todo translations - //todo grant random name - //entity.setCustomName(powerType.getManifestation(powerID).translation()); - } - } + public static List getLivingEntitiesInRange(LivingEntity selfEntity, int range, boolean includeSelf) + { + AABB areaOfEffect = new AABB(selfEntity.blockPosition()); + areaOfEffect = areaOfEffect.inflate(range, range, range); + + List entitiesFound = selfEntity.level.getEntitiesOfClass(LivingEntity.class, areaOfEffect); + + if (!includeSelf) + { + //removes self entity if it exists in the list + //otherwise list unchanged + entitiesFound.remove(selfEntity); + } + + return entitiesFound; + } + + public static List getEntitiesInRange(Entity entity, int range, boolean includeSelf) + { + AABB areaOfEffect = new AABB(entity.blockPosition()); + areaOfEffect = areaOfEffect.expandTowards(range, range, range); + + List entitiesFound = entity.level.getEntitiesOfClass(Entity.class, areaOfEffect); + + if (!includeSelf) + { + entitiesFound.remove(entity); + } + + return entitiesFound; + } + + + public static void giveEntityStartingManifestation(LivingEntity entity, SpiritwebCapability spiritwebCapability) + { + boolean isPlayerEntity = entity instanceof Player; + //low chance of having full powers of one type + boolean isFullPowersFromOneType = MathHelper.randomInt(0, 16) % 16 == 0; + + //small chance of being twin born, but only if not having full powers above + //except for players who are guaranteed having at least two powers. + boolean isTwinborn = isPlayerEntity || MathHelper.randomInt(0, 16) < 3; + + //randomise the given powers from allomancy and feruchemy + int allomancyPower = MathHelper.randomInt(0, 15); + int feruchemyPower = MathHelper.randomInt(0, 15); + + //if not twinborn, pick one power + boolean isAllomancy = MathHelper.randomBool(); + Manifestations.ManifestationTypes powerType = isAllomancy + ? Manifestations.ManifestationTypes.ALLOMANCY + : Manifestations.ManifestationTypes.FERUCHEMY; + + if (isFullPowersFromOneType) + { + //ooh full powers + for (int i = 0; i < 16; i++) + { + spiritwebCapability.giveManifestation(powerType, i); + } + + if (!isPlayerEntity) + { + //todo translations + //todo grant random name + entity.setCustomName(TextHelper.createTranslatedText(isAllomancy + ? "Mistborn" + : "Feruchemist")); + } + } + else if (isTwinborn) + { + spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, allomancyPower); + spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, feruchemyPower); + + if (!isPlayerEntity) + { + //todo translations + //todo grant random name + entity.setCustomName(TextHelper.createTranslatedText("Twinborn")); + } + } + else + { + int powerID = isAllomancy ? allomancyPower : feruchemyPower; + spiritwebCapability.giveManifestation(powerType, powerID); + //todo translations + //todo grant random name + //entity.setCustomName(powerType.getManifestation(powerID).translation()); + } + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java b/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java index d80a2b209..6ac6e8b20 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java @@ -5,56 +5,36 @@ package leaf.cosmere.utils.helpers; import leaf.cosmere.Cosmere; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; +import com.mojang.logging.LogUtils; +import org.slf4j.Logger; public class LogHelper { - public static Logger LOGGER = LogManager.getLogger(Cosmere.MODID); - - public static void log(Level logLevel, Object object) - { - LOGGER.log(logLevel, String.valueOf(object)); - } - - public static void all(Object object) - { - log(Level.ALL, object); - } - - public static void debug(Object object) - { - log(Level.DEBUG, object); - } - - public static void error(Object object) - { - log(Level.ERROR, object); - } - - public static void fatal(Object object) - { - log(Level.FATAL, object); - } - - public static void info(Object object) - { - log(Level.INFO, object); - } - - public static void off(Object object) - { - log(Level.OFF, object); - } - - public static void trace(Object object) - { - log(Level.TRACE, object); - } - - public static void warn(Object object) - { - log(Level.WARN, object); - } + public static final Logger LOGGER = LogUtils.getLogger(); + + + public static void debug(String object) + { + LOGGER.debug(object); + } + + public static void error(String object) + { + LOGGER.error(object); + } + + public static void info(String object) + { + LOGGER.info(object); + } + + public static void trace(String object) + { + LOGGER.trace(object); + } + + public static void warn(String object) + { + LOGGER.warn(object); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java index f64e1835a..8817d40d4 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java @@ -8,43 +8,43 @@ public class MathHelper { - final static Random rand = new Random(); - public static int randomInt(int min, int max) - { - return rand.nextInt((max - min) + 1) + min; - } - public static boolean randomBool() - { - return rand.nextBoolean(); - } - - - - public static float clamp01(final float f) - { - return Math.max(0.0f, Math.min(1.0f, f)); - } - - - - public static boolean inTriangle( - final double x1, - final double y1, - final double x2, - final double y2, - final double x3, - final double y3, - final double x, - final double y) - { - final double ab = (x1 - x) * (y2 - y) - (x2 - x) * (y1 - y); - final double bc = (x2 - x) * (y3 - y) - (x3 - x) * (y2 - y); - final double ca = (x3 - x) * (y1 - y) - (x1 - x) * (y3 - y); - return sign(ab) == sign(bc) && sign(bc) == sign(ca); - } - - public static int sign(final double n) - { - return n > 0 ? 1 : -1; - } + final static Random rand = new Random(); + + public static int randomInt(int min, int max) + { + return rand.nextInt((max - min) + 1) + min; + } + + public static boolean randomBool() + { + return rand.nextBoolean(); + } + + + public static float clamp01(final float f) + { + return Math.max(0.0f, Math.min(1.0f, f)); + } + + + public static boolean inTriangle( + final double x1, + final double y1, + final double x2, + final double y2, + final double x3, + final double y3, + final double x, + final double y) + { + final double ab = (x1 - x) * (y2 - y) - (x2 - x) * (y1 - y); + final double bc = (x2 - x) * (y3 - y) - (x3 - x) * (y2 - y); + final double ca = (x3 - x) * (y1 - y) - (x1 - x) * (y3 - y); + return sign(ab) == sign(bc) && sign(bc) == sign(ca); + } + + public static int sign(final double n) + { + return n > 0 ? 1 : -1; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java index 8a232ab97..1ac3addcb 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java @@ -7,13 +7,14 @@ import com.mojang.authlib.GameProfile; import net.minecraft.server.MinecraftServer; +import java.util.Optional; import java.util.UUID; public class PlayerHelper { - public static String getPlayerName(UUID id, MinecraftServer server) - { - GameProfile profileByUUID = server.getProfileCache().get(id); - return profileByUUID != null ? profileByUUID.getName() : "OFFLINE Player"; - } + public static String getPlayerName(UUID id, MinecraftServer server) + { + final Optional gameProfile = server.getProfileCache().get(id); + return gameProfile.isPresent() ? gameProfile.get().getName() : "OFFLINE Player"; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java index 48fa02e7e..350f760e5 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java @@ -5,14 +5,14 @@ package leaf.cosmere.utils.helpers; import leaf.cosmere.Cosmere; -import net.minecraft.util.ResourceLocation; +import net.minecraft.resources.ResourceLocation; import java.util.Locale; public class ResourceLocationHelper { - public static ResourceLocation prefix(String path) - { - return new ResourceLocation(Cosmere.MODID, path.toLowerCase(Locale.ROOT)); - } + public static ResourceLocation prefix(String path) + { + return new ResourceLocation(Cosmere.MODID, path.toLowerCase(Locale.ROOT)); + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java b/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java index 61b1be414..0c508a3d0 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/StackNBTHelper.java @@ -9,11 +9,11 @@ import com.google.gson.JsonObject; import com.mojang.serialization.Dynamic; import com.mojang.serialization.JsonOps; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.CompoundNBT; -import net.minecraft.nbt.INBT; -import net.minecraft.nbt.ListNBT; -import net.minecraft.nbt.NBTDynamicOps; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.NbtOps; +import net.minecraft.nbt.Tag; +import net.minecraft.world.item.ItemStack; import javax.annotation.Nullable; import java.util.UUID; @@ -21,249 +21,249 @@ public final class StackNBTHelper { - private static final int[] EMPTY_INT_ARRAY = new int[0]; - - // SETTERS /////////////////////////////////////////////////////////////////// - - public static void set(ItemStack stack, String tag, INBT nbt) - { - stack.getOrCreateTag().put(tag, nbt); - } - - public static void setBoolean(ItemStack stack, String tag, boolean b) - { - stack.getOrCreateTag().putBoolean(tag, b); - } - - public static void setByte(ItemStack stack, String tag, byte b) - { - stack.getOrCreateTag().putByte(tag, b); - } - - public static void setShort(ItemStack stack, String tag, short s) - { - stack.getOrCreateTag().putShort(tag, s); - } - - public static void setInt(ItemStack stack, String tag, int i) - { - stack.getOrCreateTag().putInt(tag, i); - } - - public static void setIntArray(ItemStack stack, String tag, int[] val) - { - stack.getOrCreateTag().putIntArray(tag, val); - } - - public static void setLong(ItemStack stack, String tag, long l) - { - stack.getOrCreateTag().putLong(tag, l); - } - - public static void setFloat(ItemStack stack, String tag, float f) - { - stack.getOrCreateTag().putFloat(tag, f); - } - - public static void setDouble(ItemStack stack, String tag, double d) - { - stack.getOrCreateTag().putDouble(tag, d); - } - - public static void setCompound(ItemStack stack, String tag, CompoundNBT cmp) - { - if (!tag.equalsIgnoreCase("ench")) // not override the enchantments - { - stack.getOrCreateTag().put(tag, cmp); - } - } - - public static void setString(ItemStack stack, String tag, String s) - { - stack.getOrCreateTag().putString(tag, s); - } - - public static void setUuid(ItemStack stack, String tag, UUID value) - { - stack.getOrCreateTag().putUUID(tag, value); - } - - public static void setList(ItemStack stack, String tag, ListNBT list) - { - stack.getOrCreateTag().put(tag, list); - } - - public static void removeEntry(ItemStack stack, String tag) - { - stack.getOrCreateTag().remove(tag); - } - - // GETTERS /////////////////////////////////////////////////////////////////// - - public static boolean verifyExistance(ItemStack stack, String tag) - { - return !stack.isEmpty() && stack.getOrCreateTag().contains(tag); - } - - @Nullable - public static INBT get(ItemStack stack, String tag) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().get(tag) : null; - } - - public static boolean getBoolean(ItemStack stack, String tag, boolean defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getBoolean(tag) : defaultExpected; - } - - public static byte getByte(ItemStack stack, String tag, byte defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getByte(tag) : defaultExpected; - } - - public static short getShort(ItemStack stack, String tag, short defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getShort(tag) : defaultExpected; - } - - public static int getInt(ItemStack stack, String tag, int defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getInt(tag) : defaultExpected; - } - - public static int[] getIntArray(ItemStack stack, String tag) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getIntArray(tag) : EMPTY_INT_ARRAY; - } - - public static long getLong(ItemStack stack, String tag, long defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getLong(tag) : defaultExpected; - } - - public static float getFloat(ItemStack stack, String tag, float defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getFloat(tag) : defaultExpected; - } - - public static double getDouble(ItemStack stack, String tag, double defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getDouble(tag) : defaultExpected; - } - - /** - * If nullifyOnFail is true it'll return null if it doesn't find any - * compounds, otherwise it'll return a new one. - **/ - public static CompoundNBT getCompound(ItemStack stack, String tag, boolean nullifyOnFail) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getCompound(tag) - : nullifyOnFail ? null : new CompoundNBT(); - } - - public static String getString(ItemStack stack, String tag, String defaultExpected) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getString(tag) : defaultExpected; - } - - @Nullable - public static UUID getUuid(ItemStack stack, String tag) - { - return verifyExistance(stack, tag) - ? stack.getOrCreateTag().getUUID(tag) - : null; - } - - public static ListNBT getList(ItemStack stack, String tag, int objtype, boolean nullifyOnFail) - { - return verifyExistance(stack, tag) ? stack.getOrCreateTag().getList(tag, objtype) - : nullifyOnFail ? null : new ListNBT(); - } - - /** - * Serializes the given stack such that {@link net.minecraft.item.crafting.ShapedRecipe#deserializeItem} - * would be able to read the result back - */ - public static JsonObject serializeStack(ItemStack stack) - { - CompoundNBT nbt = stack.save(new CompoundNBT()); - byte c = nbt.getByte("Count"); - if (c != 1) - { - nbt.putByte("count", c); - } - nbt.remove("Count"); - renameTag(nbt, "id", "item"); - renameTag(nbt, "tag", "nbt"); - Dynamic dyn = new Dynamic<>(NBTDynamicOps.INSTANCE, nbt); - return dyn.convert(JsonOps.INSTANCE).getValue().getAsJsonObject(); - } - - /** - * Returns true if the `target` tag contains all of the tags and values present in the `template` tag. Recurses into - * compound tags and matches all template keys and values; recurses into list tags and matches the template against - * the first elements of target. Empty lists and compounds in the template will match target lists and compounds of - * any size. - */ - public static boolean matchTag(@Nullable INBT template, @Nullable INBT target) - { - if (template instanceof CompoundNBT && target instanceof CompoundNBT) - { - return matchTagCompound((CompoundNBT) template, (CompoundNBT) target); - } - else if (template instanceof ListNBT && target instanceof ListNBT) - { - return matchTagList((ListNBT) template, (ListNBT) target); - } - else - { - return template == null || (target != null && target.equals(template)); - } - } - - private static boolean matchTagCompound(CompoundNBT template, CompoundNBT target) - { - if (template.size() > target.size()) - { - return false; - } - - for (String key : template.getAllKeys()) - { - if (!matchTag(template.get(key), target.get(key))) - { - return false; - } - } - - return true; - } - - private static boolean matchTagList(ListNBT template, ListNBT target) - { - if (template.size() > target.size()) - { - return false; - } - - for (int i = 0; i < template.size(); i++) - { - if (!matchTag(template.get(i), target.get(i))) - { - return false; - } - } - - return true; - } - - public static void renameTag(CompoundNBT nbt, String oldName, String newName) - { - INBT tag = nbt.get(oldName); - if (tag != null) - { - nbt.remove(oldName); - nbt.put(newName, tag); - } - } + private static final int[] EMPTY_INT_ARRAY = new int[0]; + + // SETTERS /////////////////////////////////////////////////////////////////// + + public static void set(ItemStack stack, String tag, Tag nbt) + { + stack.getOrCreateTag().put(tag, nbt); + } + + public static void setBoolean(ItemStack stack, String tag, boolean b) + { + stack.getOrCreateTag().putBoolean(tag, b); + } + + public static void setByte(ItemStack stack, String tag, byte b) + { + stack.getOrCreateTag().putByte(tag, b); + } + + public static void setShort(ItemStack stack, String tag, short s) + { + stack.getOrCreateTag().putShort(tag, s); + } + + public static void setInt(ItemStack stack, String tag, int i) + { + stack.getOrCreateTag().putInt(tag, i); + } + + public static void setIntArray(ItemStack stack, String tag, int[] val) + { + stack.getOrCreateTag().putIntArray(tag, val); + } + + public static void setLong(ItemStack stack, String tag, long l) + { + stack.getOrCreateTag().putLong(tag, l); + } + + public static void setFloat(ItemStack stack, String tag, float f) + { + stack.getOrCreateTag().putFloat(tag, f); + } + + public static void setDouble(ItemStack stack, String tag, double d) + { + stack.getOrCreateTag().putDouble(tag, d); + } + + public static void setCompound(ItemStack stack, String tag, CompoundTag cmp) + { + if (!tag.equalsIgnoreCase("ench")) // not override the enchantments + { + stack.getOrCreateTag().put(tag, cmp); + } + } + + public static void setString(ItemStack stack, String tag, String s) + { + stack.getOrCreateTag().putString(tag, s); + } + + public static void setUuid(ItemStack stack, String tag, UUID value) + { + stack.getOrCreateTag().putUUID(tag, value); + } + + public static void setList(ItemStack stack, String tag, ListTag list) + { + stack.getOrCreateTag().put(tag, list); + } + + public static void removeEntry(ItemStack stack, String tag) + { + stack.getOrCreateTag().remove(tag); + } + + // GETTERS /////////////////////////////////////////////////////////////////// + + public static boolean verifyExistance(ItemStack stack, String tag) + { + return !stack.isEmpty() && stack.getOrCreateTag().contains(tag); + } + + @Nullable + public static Tag get(ItemStack stack, String tag) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().get(tag) : null; + } + + public static boolean getBoolean(ItemStack stack, String tag, boolean defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getBoolean(tag) : defaultExpected; + } + + public static byte getByte(ItemStack stack, String tag, byte defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getByte(tag) : defaultExpected; + } + + public static short getShort(ItemStack stack, String tag, short defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getShort(tag) : defaultExpected; + } + + public static int getInt(ItemStack stack, String tag, int defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getInt(tag) : defaultExpected; + } + + public static int[] getIntArray(ItemStack stack, String tag) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getIntArray(tag) : EMPTY_INT_ARRAY; + } + + public static long getLong(ItemStack stack, String tag, long defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getLong(tag) : defaultExpected; + } + + public static float getFloat(ItemStack stack, String tag, float defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getFloat(tag) : defaultExpected; + } + + public static double getDouble(ItemStack stack, String tag, double defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getDouble(tag) : defaultExpected; + } + + /** + * If nullifyOnFail is true it'll return null if it doesn't find any + * compounds, otherwise it'll return a new one. + **/ + public static CompoundTag getCompound(ItemStack stack, String tag, boolean nullifyOnFail) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getCompound(tag) + : nullifyOnFail ? null : new CompoundTag(); + } + + public static String getString(ItemStack stack, String tag, String defaultExpected) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getString(tag) : defaultExpected; + } + + @Nullable + public static UUID getUuid(ItemStack stack, String tag) + { + return verifyExistance(stack, tag) + ? stack.getOrCreateTag().getUUID(tag) + : null; + } + + public static ListTag getList(ItemStack stack, String tag, int objtype, boolean nullifyOnFail) + { + return verifyExistance(stack, tag) ? stack.getOrCreateTag().getList(tag, objtype) + : nullifyOnFail ? null : new ListTag(); + } + + /** + * Serializes the given stack such that {@link net.minecraft.item.crafting.ShapedRecipe#deserializeItem} + * would be able to read the result back + */ + public static JsonObject serializeStack(ItemStack stack) + { + CompoundTag nbt = stack.save(new CompoundTag()); + byte c = nbt.getByte("Count"); + if (c != 1) + { + nbt.putByte("count", c); + } + nbt.remove("Count"); + renameTag(nbt, "id", "item"); + renameTag(nbt, "tag", "nbt"); + Dynamic dyn = new Dynamic<>(NbtOps.INSTANCE, nbt); + return dyn.convert(JsonOps.INSTANCE).getValue().getAsJsonObject(); + } + + /** + * Returns true if the `target` tag contains all of the tags and values present in the `template` tag. Recurses into + * compound tags and matches all template keys and values; recurses into list tags and matches the template against + * the first elements of target. Empty lists and compounds in the template will match target lists and compounds of + * any size. + */ + public static boolean matchTag(@Nullable Tag template, @Nullable Tag target) + { + if (template instanceof CompoundTag && target instanceof CompoundTag) + { + return matchTagCompound((CompoundTag) template, (CompoundTag) target); + } + else if (template instanceof ListTag && target instanceof ListTag) + { + return matchTagList((ListTag) template, (ListTag) target); + } + else + { + return template == null || (target != null && target.equals(template)); + } + } + + private static boolean matchTagCompound(CompoundTag template, CompoundTag target) + { + if (template.size() > target.size()) + { + return false; + } + + for (String key : template.getAllKeys()) + { + if (!matchTag(template.get(key), target.get(key))) + { + return false; + } + } + + return true; + } + + private static boolean matchTagList(ListTag template, ListTag target) + { + if (template.size() > target.size()) + { + return false; + } + + for (int i = 0; i < template.size(); i++) + { + if (!matchTag(template.get(i), target.get(i))) + { + return false; + } + } + + return true; + } + + public static void renameTag(CompoundTag nbt, String oldName, String newName) + { + Tag tag = nbt.get(oldName); + if (tag != null) + { + nbt.remove(oldName); + nbt.put(newName, tag); + } + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java index 61da65b9a..153f5e3d1 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java @@ -10,10 +10,10 @@ public class StringHelper { - public static String fixCapitalisation(String text) - { - String original = text.trim().replace(" ", "").replace("_", " ").replace("/", "."); - String output = Arrays.stream(original.split("\\s+")).map(t -> t.substring(0, 1).toUpperCase() + t.substring(1)).collect(Collectors.joining(" ")); - return output; - } + public static String fixCapitalisation(String text) + { + String original = text.trim().replace(" ", "").replace("_", " ").replace("/", "."); + String output = Arrays.stream(original.split("\\s+")).map(t -> t.substring(0, 1).toUpperCase() + t.substring(1)).collect(Collectors.joining(" ")); + return output; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java index 49647ad0c..ce0ce94ed 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java @@ -4,60 +4,56 @@ package leaf.cosmere.utils.helpers; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.*; import net.minecraft.server.MinecraftServer; -import net.minecraft.util.text.StringTextComponent; -import net.minecraft.util.text.TextComponent; -import net.minecraft.util.text.TextFormatting; -import net.minecraft.util.text.TranslationTextComponent; -import net.minecraft.util.text.event.ClickEvent; -import net.minecraft.util.text.event.HoverEvent; -import net.minecraft.world.server.ServerWorld; +import net.minecraft.server.level.ServerLevel; import java.util.UUID; public class TextHelper { - public static TextComponent getPlayerTextObject(ServerWorld world, UUID id) - { - return getPlayerTextObject(world.getServer(), id); - } - - public static TextComponent getPlayerTextObject(MinecraftServer server, UUID id) - { - String playerName = PlayerHelper.getPlayerName(id, server); - return createTextComponentWithTip(playerName, id.toString()); - } - - public static TextComponent createTextComponentWithTip(String text, String tooltipText) - { - //Always surround tool tip items with brackets - TextComponent textComponent = new StringTextComponent("[" + text + "]"); - textComponent.withStyle(style -> - { - return style.withColor(TextFormatting.GREEN)//color tool tip items green - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new StringTextComponent(tooltipText))).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText)); - }); - return textComponent; - } - - public static TextComponent createTextWithTooltip(TranslationTextComponent translation, TranslationTextComponent description) - { - //Always surround tool tip items with brackets - translation.withStyle(style -> - { - return style.withColor(TextFormatting.GREEN)//color tool tip items green - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, translation.getKey())); - }); - return translation; - } - - public static TextComponent createTranslatedText(String s, Object... a) - { - return new TranslationTextComponent(s, a); - } - - public static TextComponent createText(Object s) - { - return new StringTextComponent(s.toString()); - } + public static BaseComponent getPlayerTextObject(ServerLevel world, UUID id) + { + return getPlayerTextObject(world.getServer(), id); + } + + public static BaseComponent getPlayerTextObject(MinecraftServer server, UUID id) + { + String playerName = PlayerHelper.getPlayerName(id, server); + return createTextComponentWithTip(playerName, id.toString()); + } + + public static BaseComponent createTextComponentWithTip(String text, String tooltipText) + { + //Always surround tool tip items with brackets + BaseComponent textComponent = new TextComponent("[" + text + "]"); + textComponent.withStyle(style -> + { + return style.withColor(ChatFormatting.GREEN)//color tool tip items green + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent(tooltipText))).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText)); + }); + return textComponent; + } + + public static BaseComponent createTextWithTooltip(TranslatableComponent translation, TranslatableComponent description) + { + //Always surround tool tip items with brackets + translation.withStyle(style -> + { + return style.withColor(ChatFormatting.GREEN)//color tool tip items green + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, translation.getKey())); + }); + return translation; + } + + public static BaseComponent createTranslatedText(String s, Object... a) + { + return new TranslatableComponent(s, a); + } + + public static BaseComponent createText(Object s) + { + return new TextComponent(s.toString()); + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java b/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java index c9ba1dd7b..9d3ddc650 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/VectorHelper.java @@ -4,105 +4,105 @@ package leaf.cosmere.utils.helpers; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector3d; -import net.minecraft.util.math.vector.Vector3i; +import net.minecraft.core.Vec3i; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec3; //Unity's vector3 code is a great resource for vector math //https://github.com/Unity-Technologies/UnityCsReference/blob/master/Runtime/Export/Math/Vector3.cs public class VectorHelper { - public static final float kEpsilon = 0.00001F; - - // Makes this vector have a magnitude of 1. - public static Vector3i Normalize(Vector3i vec) - { - float mag = Magnitude(vec); - if (mag > kEpsilon) - { - vec = divide(vec, mag); - } - else - { - vec = Vector3i.ZERO; - } - - return vec; - } - - // - public static float Magnitude(Vector3i vector) - { - return MathHelper.sqrt(vector.getX() * vector.getX() + vector.getY() * vector.getY() + vector.getZ() * vector.getZ()); - } - - - public static Vector3i divide(Vector3i a, float d) - { - return new Vector3i(a.getX() / d, a.getY() / d, a.getZ() / d); - } - - - // Moves a point /current/ in a straight line towards a /target/ point. - public static Vector3d moveTowards(Vector3d current, Vector3i target, float maxDistanceDelta) - { - // avoid vector ops because current scripting backends are terrible at inlining - double toVector_x = target.getX() - current.x; - double toVector_y = target.getY() - current.y; - double toVector_z = target.getZ() - current.z; - - double sqdist = toVector_x * toVector_x + toVector_y * toVector_y + toVector_z * toVector_z; - - if (sqdist == 0 || (maxDistanceDelta >= 0 && sqdist <= maxDistanceDelta * maxDistanceDelta)) - { - return new Vector3d(target.getX(), target.getY(), target.getZ()); - } - float dist = (float) Math.sqrt(sqdist); - - return new Vector3d(current.x + toVector_x / dist * maxDistanceDelta, - current.y + toVector_y / dist * maxDistanceDelta, - current.z + toVector_z / dist * maxDistanceDelta); - } - - - // Moves a point /current/ in a straight line towards a /target/ point. - public static Vector3d getDirection(Vector3d target, Vector3d current, float multiplicationFactor) - { - double toVector_x = target.x() - current.x; - double toVector_y = target.y() - current.y; - double toVector_z = target.z() - current.z; - - return new Vector3d( - toVector_x * multiplicationFactor, - toVector_y * multiplicationFactor, - toVector_z * multiplicationFactor); - } - - - // Returns a copy of /vector/ with its magnitude clamped to /maxLength/. - public static Vector3d ClampMagnitude(Vector3d vector, float maxLength) - { - double sqrMag = SqrMagnitude(vector); - if (sqrMag > maxLength * maxLength) - { - float mag = (float) Math.sqrt(sqrMag); - //these intermediate variables force the intermediate result to be - //of float precision. without this, the intermediate result can be of higher - //precision, which changes behavior. - double normalized_x = vector.x / mag; - double normalized_y = vector.y / mag; - double normalized_z = vector.z / mag; - return new Vector3d(normalized_x * maxLength, - normalized_y * maxLength, - normalized_z * maxLength); - } - return vector; - } - - - public static double SqrMagnitude(Vector3d vector) - { - return vector.x * vector.x + vector.y * vector.y + vector.z * vector.z; - } + public static final float kEpsilon = 0.00001F; + + // Makes this vector have a magnitude of 1. + public static Vec3i Normalize(Vec3i vec) + { + float mag = Magnitude(vec); + if (mag > kEpsilon) + { + vec = divide(vec, mag); + } + else + { + vec = Vec3i.ZERO; + } + + return vec; + } + + // + public static float Magnitude(Vec3i vector) + { + return Mth.sqrt(vector.getX() * vector.getX() + vector.getY() * vector.getY() + vector.getZ() * vector.getZ()); + } + + + public static Vec3i divide(Vec3i a, float d) + { + return new Vec3i(a.getX() / d, a.getY() / d, a.getZ() / d); + } + + + // Moves a point /current/ in a straight line towards a /target/ point. + public static Vec3 moveTowards(Vec3 current, Vec3i target, float maxDistanceDelta) + { + // avoid vector ops because current scripting backends are terrible at inlining + double toVector_x = target.getX() - current.x; + double toVector_y = target.getY() - current.y; + double toVector_z = target.getZ() - current.z; + + double sqdist = toVector_x * toVector_x + toVector_y * toVector_y + toVector_z * toVector_z; + + if (sqdist == 0 || (maxDistanceDelta >= 0 && sqdist <= maxDistanceDelta * maxDistanceDelta)) + { + return new Vec3(target.getX(), target.getY(), target.getZ()); + } + float dist = (float) Math.sqrt(sqdist); + + return new Vec3(current.x + toVector_x / dist * maxDistanceDelta, + current.y + toVector_y / dist * maxDistanceDelta, + current.z + toVector_z / dist * maxDistanceDelta); + } + + + // Moves a point /current/ in a straight line towards a /target/ point. + public static Vec3 getDirection(Vec3 target, Vec3 current, float multiplicationFactor) + { + double toVector_x = target.x() - current.x; + double toVector_y = target.y() - current.y; + double toVector_z = target.z() - current.z; + + return new Vec3( + toVector_x * multiplicationFactor, + toVector_y * multiplicationFactor, + toVector_z * multiplicationFactor); + } + + + // Returns a copy of /vector/ with its magnitude clamped to /maxLength/. + public static Vec3 ClampMagnitude(Vec3 vector, float maxLength) + { + double sqrMag = SqrMagnitude(vector); + if (sqrMag > maxLength * maxLength) + { + float mag = (float) Math.sqrt(sqrMag); + //these intermediate variables force the intermediate result to be + //of float precision. without this, the intermediate result can be of higher + //precision, which changes behavior. + double normalized_x = vector.x / mag; + double normalized_y = vector.y / mag; + double normalized_z = vector.z / mag; + return new Vec3(normalized_x * maxLength, + normalized_y * maxLength, + normalized_z * maxLength); + } + return vector; + } + + + public static double SqrMagnitude(Vec3 vector) + { + return vector.x * vector.x + vector.y * vector.y + vector.z * vector.z; + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java index a1cd1a9af..70c1c1910 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java @@ -21,46 +21,60 @@ */ public class XPHelper { - private static final int RATIO = 20; + private static final int RATIO = 20; - public static int liquidToExperience(int liquid) { - return liquid / RATIO; - } + public static int liquidToExperience(int liquid) + { + return liquid / RATIO; + } - public static int experienceToLiquid(int xp) { - return xp * RATIO; - } + public static int experienceToLiquid(int xp) + { + return xp * RATIO; + } - public static int getExperienceForLevel(int level) { - if(level == 0) { - return 0; - } - if(level > 0 && level < 16) { - return level * (12 + level * 2) / 2; - } else if(level > 15 && level < 31) { - return (level - 15) * (69 + (level - 15) * 5) / 2 + 315; - } else { - return (level - 30) * (215 + (level - 30) * 9) / 2 + 1395; - } - } + public static int getExperienceForLevel(int level) + { + if (level == 0) + { + return 0; + } + if (level > 0 && level < 16) + { + return level * (12 + level * 2) / 2; + } + else if (level > 15 && level < 31) + { + return (level - 15) * (69 + (level - 15) * 5) / 2 + 315; + } + else + { + return (level - 30) * (215 + (level - 30) * 9) / 2 + 1395; + } + } - public static int getExperienceLimitOnLevel(int level) { - return level >= 30 ? 112 + (level - 30) * 9 : (level >= 15 ? 37 + (level - 15) * 5 : 7 + level * 2); - } + public static int getExperienceLimitOnLevel(int level) + { + return level >= 30 ? 112 + (level - 30) * 9 : (level >= 15 ? 37 + (level - 15) * 5 : 7 + level * 2); + } - public static int getLevelForExperience(int experience) { - int i = 0; - while(getExperienceForLevel(i) <= experience) { - i++; - } - return i - 1; - } + public static int getLevelForExperience(int experience) + { + int i = 0; + while (getExperienceForLevel(i) <= experience) + { + i++; + } + return i - 1; + } - public static int durabilityToXp(int durability) { - return durability / 2; - } + public static int durabilityToXp(int durability) + { + return durability / 2; + } - public static int xpToDurability(int xp) { - return xp * 2; - } + public static int xpToDurability(int xp) + { + return xp * 2; + } } diff --git a/src/main/java/leaf/cosmere/utils/math/Vector2.java b/src/main/java/leaf/cosmere/utils/math/Vector2.java index b62c4406f..84495e5ea 100644 --- a/src/main/java/leaf/cosmere/utils/math/Vector2.java +++ b/src/main/java/leaf/cosmere/utils/math/Vector2.java @@ -4,53 +4,55 @@ package leaf.cosmere.utils.math; -import net.minecraft.util.math.MathHelper; -import net.minecraft.util.math.vector.Vector2f; +import net.minecraft.util.Mth; +import net.minecraft.world.phys.Vec2; public class Vector2 { - public static final Vector2 ZERO = new Vector2(0.0F, 0.0F); - public static final Vector2 ONE = new Vector2(1.0F, 1.0F); - - public float x = 0; - public float y = 0; - - public Vector2(float xIn, float yIn) - { - this.x = xIn; - this.y = yIn; - } - - public boolean equals(Vector2f other) - { - return this.x == other.x && this.y == other.y; - } - - public static final float Deg2Rad = 0.01745329f; - public Vector2 Rotate(float degrees) - { - float sin = MathHelper.sin(degrees * Deg2Rad); - float cos = MathHelper.cos(degrees * Deg2Rad); - - float tx = this.x; - float ty = this.y; - this.x = (cos * tx) - (sin * ty); - this.y = (sin * tx) + (cos * ty); - - return this; - } - public Vector2 oldRotate(float delta) - { - x = this.x * MathHelper.cos(delta) - this.y * MathHelper.sin(delta); - y = this.x * MathHelper.sin(delta) + this.y * MathHelper.cos(delta); - return this; - } - - public static Vector2 Rotate(Vector2 v, float delta) - { - return new Vector2( - v.x * MathHelper.cos(delta) - v.y * MathHelper.sin(delta), - v.x * MathHelper.sin(delta) + v.y * MathHelper.cos(delta) - ); - } + public static final Vector2 ZERO = new Vector2(0.0F, 0.0F); + public static final Vector2 ONE = new Vector2(1.0F, 1.0F); + + public float x = 0; + public float y = 0; + + public Vector2(float xIn, float yIn) + { + this.x = xIn; + this.y = yIn; + } + + public boolean equals(Vec2 other) + { + return this.x == other.x && this.y == other.y; + } + + public static final float Deg2Rad = 0.01745329f; + + public Vector2 Rotate(float degrees) + { + float sin = Mth.sin(degrees * Deg2Rad); + float cos = Mth.cos(degrees * Deg2Rad); + + float tx = this.x; + float ty = this.y; + this.x = (cos * tx) - (sin * ty); + this.y = (sin * tx) + (cos * ty); + + return this; + } + + public Vector2 oldRotate(float delta) + { + x = this.x * Mth.cos(delta) - this.y * Mth.sin(delta); + y = this.x * Mth.sin(delta) + this.y * Mth.cos(delta); + return this; + } + + public static Vector2 Rotate(Vector2 v, float delta) + { + return new Vector2( + v.x * Mth.cos(delta) - v.y * Mth.sin(delta), + v.x * Mth.sin(delta) + v.y * Mth.cos(delta) + ); + } } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index ef05745bf..5c10c9aae 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,9 +1,9 @@ -public net.minecraft.entity.LivingEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.MobEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.player.PlayerEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.passive.AnimalEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.passive.ChickenEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.passive.WaterMobEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.monster.ZombieEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.monster.HoglinEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward -public net.minecraft.entity.monster.piglin.PiglinEntity func_70693_a(Lnet/minecraft/entity/player/PlayerEntity;)I # getExperienceReward \ No newline at end of file +public net.minecraft.world.entity.LivingEntity m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.Mob m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.player.Player m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.animal.Animal m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.animal.Chicken m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.animal.WaterAnimal m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.monster.Zombie m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.monster.hoglin.Hoglin m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward +public net.minecraft.world.entity.monster.piglin.Piglin m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward \ No newline at end of file diff --git a/src/main/resources/META-INF/mods.toml b/src/main/resources/META-INF/mods.toml index 75de0e96a..322dfaa54 100644 --- a/src/main/resources/META-INF/mods.toml +++ b/src/main/resources/META-INF/mods.toml @@ -1,9 +1,9 @@ modLoader="javafml" #mandatory -loaderVersion="[34,)" #mandatory +loaderVersion="[40,)" #mandatory license="https://en.wikipedia.org/wiki/MIT_License" [[mods]] #mandatory modId="cosmere" #mandatory -version="${version}" #mandatory +version="${file.jarVersion}" #mandatory displayName="The Cosmere" #mandatory logoFile="cosmere_icon.png" credits="Special thanks to 50ap5ud5, Suff, Spectre0987, Vazkii, the Chisels and Bits team and so many more. \nThey all either helped me (directly or indirectly via their open source repos) understand working with the minecraft and the forge API better <3\nSeriously. Thank you!" #optional @@ -15,20 +15,20 @@ Bringing The Cosmere to Minecraft! [[dependencies.cosmere]] modId="forge" mandatory=true - versionRange="[36.0.42,)" + versionRange="[40.1.0,)" ordering="NONE" side="BOTH" [[dependencies.cosmere]] modId="minecraft" mandatory=true - versionRange="[1.16.4, 1.16.5]" + versionRange="[1.18.2,)" ordering="NONE" side="BOTH" [[dependencies.cosmere]] modId="curios" mandatory=true - versionRange="[1.16.5-4.0.5.1,)" + versionRange="[1.18.2-5.0.7.0,)" ordering="NONE" side="BOTH" From 9b14f8be2d4c37dd753fe89e31cbf3e70bd3cc3c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 11:11:17 +1200 Subject: [PATCH 0105/1090] Fixing potential isGlowing crash --- .../cap/entity/SpiritwebCapability.java | 28 +++++++++++------ .../cosmere/constants/Manifestations.java | 31 ------------------- .../java/leaf/cosmere/mixin/EntityMixin.java | 22 ++++++++++--- .../ChangeManifestationModeMessage.java | 17 +++++----- .../registry/ManifestationRegistry.java | 2 +- 5 files changed, 45 insertions(+), 55 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 60f6d9f3b..c35e32d96 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -31,6 +31,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeMap; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Blocks; @@ -413,16 +414,22 @@ public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powe return false; } - Attribute attribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); - AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); - if (manifestationAttribute != null) + if (attributeRegistryObject.isPresent()) { - double manifestationStrength = - ignoreTemporaryPower ? manifestationAttribute.getBaseValue() : manifestationAttribute.getValue(); - - return manifestationStrength > 5; + AttributeMap attributeManager = livingEntity.getAttributes(); + Attribute attribute = attributeRegistryObject.get(); + if (attributeManager.hasAttribute(attribute)) + { + double manifestationStrength = + ignoreTemporaryPower + ? attributeManager.getBaseValue(attribute) + : attributeManager.getValue(attribute); + return manifestationStrength > 3; + } } + return false; } @@ -541,9 +548,12 @@ public List getAvailableManifestations(boolean ignoreTemporaryPo List list = new ArrayList(); //todo intelligently handle multiple powers - for (int i = 0; i < 16; i++) + for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) { - for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) + if (manifestationTypes == ManifestationTypes.NONE) + continue; + + for (int i = 0; i < 16; i++) { if (hasManifestation(manifestationTypes, i, ignoreTemporaryPower)) { diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index e62ec2cdd..8d61141dc 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -91,35 +91,4 @@ public String getName() } } - - public static final String NONE = "none"; - - public static class AonDor - { - public static final String ELANTRIAN = "elantrian"; - } - - public static class Biochroma - { - public static final String AWAKENING = "awakening"; - } - - public static class Hemalurgy - { - public static final String NONE = "none"; - } - - public static class Surgebinding - { - public static final String WINDRUNNER = "windrunner"; - public static final String SKYBREAKER = "skybreaker"; - public static final String DUSTBRINGER = "dustbringer"; - public static final String EDGEDANCER = "edgedancer"; - public static final String TRUTHWATCHER = "truthwatcher"; - public static final String LIGHTWEAVER = "lightweaver"; - public static final String ELSECALLER = "elsecaller"; - public static final String WILLSHAPER = "willshaper"; - public static final String STONEWARD = "stoneward"; - public static final String BONDSMITH = "bondsmith"; - } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 8a3ad0e89..1f72a9f5a 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -26,7 +26,9 @@ private void handleIsGlowing(CallbackInfoReturnable cir) { Entity e = (Entity) (Object) this; - if (!(e instanceof LivingEntity)) + final boolean isServerSide = !(e.level.isClientSide); + final boolean isInanimateEntity = !(e instanceof LivingEntity); + if (isServerSide || isInanimateEntity) { return; } @@ -37,7 +39,17 @@ private void handleIsGlowing(CallbackInfoReturnable cir) SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> { //if the player does not have bronze, early exit - if (!(playerSpiritweb.hasManifestation(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()))) + final boolean playerHasBronzeAllomancy = playerSpiritweb.hasManifestation( + Manifestations.ManifestationTypes.ALLOMANCY, + Metals.MetalType.BRONZE.getID() + ); + + final boolean playerBronzeBurning = playerSpiritweb.canTickManifestation( + Manifestations.ManifestationTypes.ALLOMANCY, + Metals.MetalType.BRONZE.getID() + ); + + if (!playerHasBronzeAllomancy || !playerBronzeBurning) { return; } @@ -68,12 +80,14 @@ private void handleIsGlowing(CallbackInfoReturnable cir) { //don't tick powers that the user doesn't have //don't tick powers that are not active - if (!(target instanceof Player) && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) + final boolean targetIsPlayer = target instanceof Player; + + if (!targetIsPlayer && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) { found = true; break; } - else if ((target instanceof Player) && manifestation.isActive(targetSpiritweb)) + else if (targetIsPlayer && manifestation.isActive(targetSpiritweb)) { found = true; break; diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index c4798d75c..6374a070f 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -34,28 +34,22 @@ public static void handle(ChangeManifestationModeMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> { - BaseComponent manifestationText; - int newMode; if (message.dir == 1) { - newMode = cap.nextMode(message.powerType, message.powerID); + cap.nextMode(message.powerType, message.powerID); } else if (message.dir == -1) { - newMode = cap.previousMode(message.powerType, message.powerID); + cap.previousMode(message.powerType, message.powerID); } else if (message.dir != 0) { - newMode = message.dir + cap.getMode(message.powerType, message.powerID); + int newMode = message.dir + cap.getMode(message.powerType, message.powerID); cap.setMode(message.powerType, message.powerID, newMode); } cap.manifestation(message.powerType, message.powerID).onModeChange(cap); - - //manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_MODE_SET, TextHelper.createText(newMode)); - //sender.sendMessage(manifestationText, Util.DUMMY_UUID); - cap.syncToClients(null); })); context.setPacketHandled(true); @@ -70,7 +64,10 @@ public static void encode(ChangeManifestationModeMessage mes, FriendlyByteBuf bu public static ChangeManifestationModeMessage decode(FriendlyByteBuf buf) { - return new ChangeManifestationModeMessage(Manifestations.ManifestationTypes.valueOf(buf.readInt()).get(), buf.readInt(), buf.readInt()); + final Manifestations.ManifestationTypes manifestationType = Manifestations.ManifestationTypes.valueOf(buf.readInt()).get(); + final int powerID = buf.readInt(); + final int dir = buf.readInt(); + return new ChangeManifestationModeMessage(manifestationType, powerID, dir); } } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index c0382ab93..aadaa4c97 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -32,7 +32,7 @@ public class ManifestationRegistry public static final DeferredRegister MANIFESTATIONS = DeferredRegister.create(ResourceKeyRegistry.MANIFESTATION_TYPES, Cosmere.MODID); public static Supplier> MANIFESTATION_REGISTRY = MANIFESTATIONS.makeRegistry(AManifestation.class, () -> new RegistryBuilder().setMaxID(Integer.MAX_VALUE - 1)); - public static final RegistryObject NONE = MANIFESTATIONS.register(Manifestations.NONE, () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); + public static final RegistryObject NONE = MANIFESTATIONS.register("none", () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); // Allomancy public static final Map> ALLOMANCY_POWERS = From cefef55b53d19d6885ab19f615900d14f8181274 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 11:19:58 +1200 Subject: [PATCH 0106/1090] Update version and changelog --- Changelog.md | 4 ++++ gradle.properties | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index bd2a106e6..a03079c6e 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,9 @@ The Cosmere Project - For 1.16 Minecraft +B27 + +Fixed crash related to bronze allomancy checking if an entity should be glowing + B26 This build contains breaking changes. Players, metalminds and spikes will not load related powers that were saved to them. diff --git a/gradle.properties b/gradle.properties index cf5d5d9d8..bc3f71dbd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=26 +build_number=27 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 9bba84cfe60b168e1e28dd66776bdc208bf645a8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 14:31:03 +1200 Subject: [PATCH 0107/1090] Delete SprenFlameModel.java --- blockbench/SprenFlameModel.java | 74 --------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 blockbench/SprenFlameModel.java diff --git a/blockbench/SprenFlameModel.java b/blockbench/SprenFlameModel.java deleted file mode 100644 index 5ab9dbdfa..000000000 --- a/blockbench/SprenFlameModel.java +++ /dev/null @@ -1,74 +0,0 @@ -// Made with Blockbench 3.8.3 -// Exported for Minecraft version 1.15 - 1.16 -// Paste this class into your mod and generate all required imports - - -public class SprenFlameModel extends EntityModel { - private final ModelRenderer body; - private final ModelRenderer wingLeft; - private final ModelRenderer wingLeftUpper_r1; - private final ModelRenderer wingLeftLower_r1; - private final ModelRenderer wingRight; - private final ModelRenderer wingRightLower_r1; - private final ModelRenderer wingRightUpper_r1; - - public SprenFlameModel() { - textureWidth = 16; - textureHeight = 16; - - body = new ModelRenderer(this); - body.setRotationPoint(0.0F, 24.0F, 0.0F); - body.setTextureOffset(0, 0).addBox(-2.0F, -4.0F, 0.0F, 4.0F, 4.0F, 0.0F, 0.0F, false); - body.setTextureOffset(0, 0).addBox(-1.0F, -3.0F, -1.0F, 2.0F, 2.0F, 2.0F, 0.0F, false); - - wingLeft = new ModelRenderer(this); - wingLeft.setRotationPoint(0.0F, 0.0F, 0.0F); - body.addChild(wingLeft); - - - wingLeftUpper_r1 = new ModelRenderer(this); - wingLeftUpper_r1.setRotationPoint(0.0F, 0.0F, 0.0F); - wingLeft.addChild(wingLeftUpper_r1); - setRotationAngle(wingLeftUpper_r1, 0.0F, 0.7854F, -0.1745F); - wingLeftUpper_r1.setTextureOffset(0, 0).addBox(1.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); - - wingLeftLower_r1 = new ModelRenderer(this); - wingLeftLower_r1.setRotationPoint(0.0F, 0.0F, 0.0F); - wingLeft.addChild(wingLeftLower_r1); - setRotationAngle(wingLeftLower_r1, 0.0F, 0.3491F, 0.0F); - wingLeftLower_r1.setTextureOffset(0, 0).addBox(0.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); - - wingRight = new ModelRenderer(this); - wingRight.setRotationPoint(0.0F, 0.0F, 0.0F); - body.addChild(wingRight); - - - wingRightLower_r1 = new ModelRenderer(this); - wingRightLower_r1.setRotationPoint(0.0F, 0.0F, 0.0F); - wingRight.addChild(wingRightLower_r1); - setRotationAngle(wingRightLower_r1, 0.0F, -0.3491F, 0.0F); - wingRightLower_r1.setTextureOffset(0, 0).addBox(-3.5F, -1.0F, 0.0F, 3.0F, 2.0F, 0.0F, 0.0F, false); - - wingRightUpper_r1 = new ModelRenderer(this); - wingRightUpper_r1.setRotationPoint(0.0F, 0.0F, 0.0F); - wingRight.addChild(wingRightUpper_r1); - setRotationAngle(wingRightUpper_r1, 0.0F, -0.7854F, 0.1745F); - wingRightUpper_r1.setTextureOffset(0, 0).addBox(-5.0F, -3.75F, 1.0F, 4.0F, 3.0F, 0.0F, 0.0F, false); - } - - @Override - public void setRotationAngles(Entity entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch){ - //previously the render function, render code was moved to a method below - } - - @Override - public void render(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha){ - body.render(matrixStack, buffer, packedLight, packedOverlay); - } - - public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) { - modelRenderer.rotateAngleX = x; - modelRenderer.rotateAngleY = y; - modelRenderer.rotateAngleZ = z; - } -} \ No newline at end of file From c7131eab00d5817b9506c18930f6e54abbf98520 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 14:31:13 +1200 Subject: [PATCH 0108/1090] bump version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index bc3f71dbd..3bbd22641 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=27 +build_number=28 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From a41ff80b08dc017df778fba0a7deb289fbcb8391 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 14:31:42 +1200 Subject: [PATCH 0109/1090] Menu working again, with proper icon sizes and transparency --- .../cosmere/client/gui/SpiritwebMenu.java | 55 ++++++++---------- .../allomancy/Allomancy_19_(Final_Empire).png | Bin 1156 -> 0 bytes .../allomancy/Allomancy_20_(Final_Empire).png | Bin 1175 -> 0 bytes .../allomancy/Allomancy_21_(Final_Empire).png | Bin 1198 -> 0 bytes .../allomancy/Allomancy_22_(Final_Empire).png | Bin 1171 -> 0 bytes .../cosmere/textures/icon/allomancy/Steel.png | Bin 1122 -> 337 bytes .../cosmere/textures/icon/allomancy/Tin.png | Bin 1213 -> 343 bytes .../cosmere/textures/icon/allomancy/Zinc.png | Bin 1196 -> 351 bytes .../textures/icon/allomancy/aluminum.png | Bin 1193 -> 338 bytes .../cosmere/textures/icon/allomancy/atium.png | Bin 1203 -> 354 bytes .../textures/icon/allomancy/bendalloy.png | Bin 1197 -> 346 bytes .../cosmere/textures/icon/allomancy/brass.png | Bin 1183 -> 365 bytes .../textures/icon/allomancy/bronze.png | Bin 1198 -> 366 bytes .../textures/icon/allomancy/cadmium.png | Bin 1220 -> 324 bytes .../textures/icon/allomancy/chromium.png | Bin 1188 -> 374 bytes .../textures/icon/allomancy/copper.png | Bin 1176 -> 325 bytes .../textures/icon/allomancy/duralumin.png | Bin 1210 -> 358 bytes .../textures/icon/allomancy/electrum.png | Bin 1101 -> 325 bytes .../cosmere/textures/icon/allomancy/gold.png | Bin 1183 -> 318 bytes .../cosmere/textures/icon/allomancy/iron.png | Bin 3076 -> 334 bytes .../textures/icon/allomancy/lerasium.png | Bin 1268 -> 361 bytes .../textures/icon/allomancy/nicrosil.png | Bin 1184 -> 378 bytes .../textures/icon/allomancy/pewter.png | Bin 1161 -> 379 bytes .../cosmere/textures/icon/allomancy/zero.png | Bin 2894 -> 0 bytes .../textures/icon/feruchemy/aluminum.png | Bin 3172 -> 311 bytes .../cosmere/textures/icon/feruchemy/atium.png | Bin 1356 -> 342 bytes .../textures/icon/feruchemy/bendalloy.png | Bin 1256 -> 321 bytes .../cosmere/textures/icon/feruchemy/brass.png | Bin 1194 -> 318 bytes .../textures/icon/feruchemy/bronze.png | Bin 1253 -> 316 bytes .../textures/icon/feruchemy/cadmium.png | Bin 3112 -> 332 bytes .../textures/icon/feruchemy/chromium.png | Bin 1266 -> 332 bytes .../textures/icon/feruchemy/copper.png | Bin 1285 -> 326 bytes .../textures/icon/feruchemy/duralumin.png | Bin 1194 -> 305 bytes .../textures/icon/feruchemy/electrum.png | Bin 3073 -> 290 bytes .../cosmere/textures/icon/feruchemy/gold.png | Bin 1219 -> 320 bytes .../cosmere/textures/icon/feruchemy/iron.png | Bin 3202 -> 326 bytes .../textures/icon/feruchemy/lerasium.png | Bin 3117 -> 314 bytes .../textures/icon/feruchemy/nicrosil.png | Bin 1316 -> 331 bytes .../textures/icon/feruchemy/pewter.png | Bin 1256 -> 329 bytes .../cosmere/textures/icon/feruchemy/steel.png | Bin 1240 -> 317 bytes .../cosmere/textures/icon/feruchemy/tin.png | Bin 1266 -> 328 bytes .../cosmere/textures/icon/feruchemy/zinc.png | Bin 1282 -> 320 bytes 42 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_19_(Final_Empire).png delete mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_20_(Final_Empire).png delete mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_21_(Final_Empire).png delete mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_22_(Final_Empire).png delete mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy/zero.png diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index bd1918163..25a018e32 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -12,6 +12,7 @@ package leaf.cosmere.client.gui; import com.google.common.base.Stopwatch; +import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; @@ -27,6 +28,7 @@ import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.Direction; @@ -288,9 +290,6 @@ public RadialButtonRegion(final AManifestation manifestation) protected void SetupButtons() { - - //todo buttons - //todo button icons sidedMenuButtons.add(spiritweb.canTickSelectedManifestation() ? new SidedMenuButton("gui.cosmere.other.inactive", ButtonAction.INACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.off, Direction.WEST) : new SidedMenuButton("gui.cosmere.other.active", ButtonAction.ACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.on, Direction.WEST)); @@ -312,7 +311,7 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous { return; } -/* + matrixStack.pushPose(); final int start = (int) (visibility * 98) << 24; @@ -322,9 +321,9 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous RenderSystem.disableTexture(); RenderSystem.enableBlend(); - RenderSystem.disableAlphaTest(); + //RenderSystem.disableAlphaTest(); RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); - RenderSystem.shadeModel(GL11.GL_SMOOTH); + //RenderSystem.shadeModel(GL11.GL_SMOOTH); final Tesselator tessellator = Tesselator.getInstance(); final BufferBuilder buffer = tessellator.getBuilder(); @@ -344,45 +343,39 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous switchToPower = null; doAction = null; - setupRadialButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); - - setupSidedButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); + //render the button backgrounds + renderRadialButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); + renderSidedButtons(buffer, mouseVecX, mouseVecY, middle_x, middle_y); //draw out what we've asked for tessellator.end(); //then we switch to icons - RenderSystem.shadeModel(GL11.GL_FLAT); - RenderSystem.enableTexture(); RenderSystem.setShaderColor(1, 1, 1, 1.0f); - RenderSystem.disableBlend(); - RenderSystem.enableAlphaTest(); + RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); + RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(InventoryMenu.BLOCK_ATLAS).getId()); - - buffer.begin(GL11.GL_QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); //put the icons on the region buttons - setupRadialButtonIcons(buffer, middle_x, middle_y); - + renderRadialButtonIcons(buffer, middle_x, middle_y); //put the icons on the sided buttons - setupSidedButtonIcons(buffer, middle_x, middle_y); + renderSidedButtonIcons(buffer, middle_x, middle_y); tessellator.end(); // draw radial button strings - setupRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); - + renderRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); //draw sided button strings - setupSidedButtonStrings(matrixStack, middle_x, middle_y); - + renderSidedButtonStrings(matrixStack, middle_x, middle_y); //do extra text info stuff - setupAnyExtraInfoTexts(matrixStack, (int) middle_y); + renderAnyExtraInfoTexts(matrixStack, (int) middle_y); - matrixStack.popPose();*/ + matrixStack.popPose(); } - private void setupAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) + private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) { int x = 10; final int[] y = {middle_y / 2}; @@ -399,7 +392,7 @@ private void setupAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) }); } - private void setupSidedButtonStrings(PoseStack matrixStack, double middle_x, double middle_y) + private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, double middle_y) { for (final SidedMenuButton sideButton : sidedMenuButtons) { @@ -428,7 +421,7 @@ private void setupSidedButtonStrings(PoseStack matrixStack, double middle_x, dou } } - private void setupRadialButtonStrings(PoseStack matrixStack, int middle_x, int middle_y) + private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int middle_y) { for (final RadialButtonRegion button : radialButtonRegions) { @@ -456,7 +449,7 @@ private void setupRadialButtonStrings(PoseStack matrixStack, int middle_x, int m } } - private void setupSidedButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + private void renderSidedButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) { for (final SidedMenuButton button : sidedMenuButtons) { @@ -486,7 +479,7 @@ private void setupSidedButtonIcons(BufferBuilder buffer, double middle_x, double } } - private void setupRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + private void renderRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) { for (final RadialButtonRegion mnuRgn : radialButtonRegions) { @@ -519,7 +512,7 @@ private void setupRadialButtonIcons(BufferBuilder buffer, double middle_x, doubl } } - private void setupSidedButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) + private void renderSidedButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) { for (final SidedMenuButton button : sidedMenuButtons) { @@ -542,7 +535,7 @@ private void setupSidedButtons(BufferBuilder buffer, double mouseVecX, double mo } } - private void setupRadialButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) + private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) { if (!radialButtonRegions.isEmpty()) { diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_19_(Final_Empire).png b/src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_19_(Final_Empire).png deleted file mode 100644 index 0044089b02d34c7c3d0a5cf4ab44669baa3e749e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 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 M07*qoM6N<$f@c#WAOHXW diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_22_(Final_Empire).png b/src/main/resources/assets/cosmere/textures/icon/allomancy/Allomancy_22_(Final_Empire).png deleted file mode 100644 index fb496595edac7bb89a250054502f10707e3ec3ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1171 zcmV;E1Z?|>P)C8-r4y$sIz z1(ija=@}&ohL)C=3XUoHNvR6KmBl5gxy1^edCB=j1^GpZC8;SuwNN`ifY&9zM8Q2V zGf%@B%Ic^COV3R@KmmGqR}Dz8;3P&HBgsdiAkOCwZM zN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007HgUFrcCPl; z4#ti;PHN6dE()&lZVK+o9_pUDUMAi)KJLE3ehL2h0ri0sgO&#G3b`2iGMp(wF48J0 zBDx}GX6&B02MKJ6x=CTl4Jm6Do(SY&2q&CR};%bsVSUs15B@LjQXNml8qvNsj_ zl_gcXY8Y$1>ZaB|Y}9M2X+GO3*H+kmv{SmPsQYxUYF}gj-HA4nW>5Y*HGbOR85%SD zXMLZOF!%I)^94&6i7aki@@-k>@_Q>oR-InsvUcBk%MIH$nQY#&)nwcD9acN{?{?jD zc3;^32M2Qw{XEisO#JwYlh&usok>3X>-?mP+Lw-ANxb^+`kb3Kx9;Alzo&fv#KXMD zVo&xz%X}g7^5EeJe3j8|tr}dxX|Nj6D01q_RbY2($000Sa zNLh0L01FcU01FcV0GgZ_0003pNklD)+tg1!GJ|bqo9FQCRGY$4Ow>AXV$?&#ho=^;|ovbo!Obmw?FRB zl_bfET9Y!HSy)zUlI7pGHJW5uSl76`;y7->6kgyNI?&L|`NZG}&#y}y!!fksm0BXX zw%NqM9yHbW(jvlFVF;pKEoY17idyk~i5#o|Me${%%dr3e002ovPDHLkV1kiU9Y_EG diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/Steel.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/Steel.png index fe38189c2ac83401af6b7d8ca3597f1d784a4076..bf2364fb4a0df3401dc226649b846a56405cba23 100644 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|-b47srr_TT>@|)#XRoC_YAwyydhMBR>&V$Ry*xdg`ZZ=s-#T1>e81vq zon;0K9M|qxeshXdJ6KRxz7;uk1zXVOvn9@cZ|3dfTQ%f@=vIXZK9%Ip#C-hMH$ g_Gm|VHMar7`}18smUVgUK%X*ry85}Sb4q9e0F?2BEC2ui delta 1116 zcmV-i1f%=W0^$gNiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>c(Nkl_!Ej&vj?Tn@dne_oU+4Uvd(LyaFUIf6bzReOoGRqi@+X2Cgu2v>TK+^< zh_F4irj~cf<3fPIAspZg7g#}6$37QJeVBkn@QZBQ9)IZQdodp;XeNu)8_OGN9on!J zUscwX_hNA@8`Ke`AuB#skba@prjOw#1++dZ#Lk+UfQV_DM*=2zL(V-Jpf5=MNDRwA zScI@;Ssn4{ThNrA*Knd=O8>P8kFuQ9qnzdIU%63NEq@}c1UrbS;TyS diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/Tin.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/Tin.png index 088e7e9b327785d82264155c59204f97e7bf8eba..f8f1bcd7cda5d0e18806f2bb2d889bc51e0af186 100644 GIT binary patch literal 343 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|*`l7srr_TP?u{c@Hb_xP<;c z%h5A|_Yj9{qo9$K`wJjP@DlF}wjKwy1$|Z1WVqGU=Q8~;kcf}TJ}W8HF>{8W$-8Gc zAxUN87TyLz!jme3ON(s%b>8v^r(gZ&^tY#H>qD)B9&66JwJw|Okng8ZzG$|KT10Dx znqJbrgx-y>SmIdjyGe=~9@}^P?nR#Uzy2%Kb#UL>d0hR-oEyPg`1k$DJECqAU~q5B zvxFr|e$OjIx4+8d>p!vVVV=tu+k}{-(NFK~7ieu|UUzmm>p|JgsZVbhcYpHSv#F?| ka7PQ{z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>drfQzAoLZ4E?Jz!>eN--0)m6! zoA?MKu6A@OxO7r{0H=ZlC0GJAVA90zlw%>3+NK>`{NdxA```Z_Zj#pc6Qyao2(~Wg z7sHxKl3eR@elctx_H_BHEUjb3pe1hTf~VH(V#rz?$A2C}AK(Q%@pL<%qA02{z-K^4 z;z3Pg(}{Cc4t-I()KlsS^-Al9?o~BDSsZ9VALNz|_>uGnAbTy1XJl#}ieS++%{Ok) zVClml+`taVm%f7nnPW1WmSw%O9xp-_kau+s9dMz9b)>y`XOck`JvP+H&xTMNBHB-A zbCV`?@pOFY#e<$?Buk&s$Rmrm!7Zf&_k8VF$8nzUcIlUG+b-d|u+8JvsguRwEqLYz zt3ePH#iL(<4g3{&l*}MJtvFDIONJEG5>JL*gke}#E58`9&d|ZDq0aU%`Bx4Z#y7NM VHP`2AG(Z3V002ovPDHLkV1iUgF<}4z diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/Zinc.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/Zinc.png index a27607c5228042365df7263ca017f95ecc0affd2..0c9850da9bcf3a72701d775a4f5375f131e44420 100644 GIT binary patch literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+Jt7srr_TXTW~c@HZHsGk1U z-mJ*TIW>UOV+D&!2vczYh+S$RbEogk#@Lsp*<~lWTOP~pDNpD)@uwlx;*7Z4q@Udv z4;u+78_%0DJ)+Eds<5r{W$RO!vI^f@sCO{p8$PaHaLi zgp?CAj^0{soV)R`Tl?j$9h;urvXFjQmmAuCu42z2$=9#Eb$+=iF1G&YZ^qL6!{YJG sB+rD^t2MU$7YGslz4<7sJ|i0gi*RkIf(F|HpuZVBUHx3vIVCg!07Pzu*#H0l delta 1190 zcmV;X1X=sv0;~ytiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>duNkl8_1s5j=H*rv0 z1$S|BadGJECO9|w5rxYUw=o31b%ywHdtChS1b` z2JP#ygTA3MN2iy2#|>6kx*%|ZzDj@g@yLa3F@IBA4h!QfWO#%gDCac~(GhB*QFpi- zIJ}7t>|>&WTgI4Y+}Igf(9t%0c@7qKf*?4@kI^gjoF3it)f?zVeK}lcCW@jOK1SHO z#y=-Xl1b}?t+_!ja4Y*KP(j0S9FJ(+JKSziOV diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/aluminum.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/aluminum.png index fdbe4986e4a13611dcb476a9b47ed4d9860f5def..27423af09b764914f4f068136ce52a3e8cfa9055 100644 GIT binary patch literal 338 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|NGi zG+Qw#TQn&fG~HdGY~kddAmU!YV&);N|8XBj`K$YT6()Q*`MBf6-3RTKr~YIuNY^`) zlAYefmUdw$OPcSNxAu1h=gpik`CRKnON00`=Em=rYnyxJHtn1+uf(=_k#mz=%Jx%{ z8+$$-s9B`GS!?E#{}0zGzqB~D+(*D)h2uxCTEqjk>jfEqqF0)D2xxD0zi~hI&~nd$ z1jp4|5<7DGW|l6otM+h9i0stg*PJp<#QYl5=2gnUH#(W}j^4_+!4SKhja@c%|9dmZ g?+Pa$`!_H$NXaYK$!DIo1bUUh)78&qol`;+0M9gnCIA2c delta 1187 zcmV;U1YG;l0;vgqiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>drNkl&h-z7nc@fpKI(^DFDF{m_y>$+n+e@B}t^@rwJrMa-fTY4_FOi^^?dBt2X zj0ua~RhlBh6^7=Nr(kEJgeBy63jJVU0X_0Y&s6F`y@6W%SVBBjxfq&u&MUbLo*u7hrR)HPGilii5u+FH3nay-bN3|96dwtg3>#I-nesZl|E~G zr1fsaYM~Q!gdFbWHZm{h=kOP-@-?k#`OmLmSs$zR>1z&_{`&v`002ovPDHLkV1i<- BC#V1b diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/atium.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/atium.png index e5fab5a92e5aa939b2834e4f57690ade0a131192..23f7a3323b15b9d780b4f4ec65f58c558b9783ca 100644 GIT binary patch literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|g z#IpE%Q;RYGEJj5RvpH4Yn>0=|&Aj*gSu*F93U#J7tFRk9woNw*vm$LB_7sz^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>d#Nklfciug3mT~^|Z6!%kmC{O! z|43pamk2t9ohXWSWn@Lz6!UAir#_Z(Z*jN^m%P~n z?n-|`z-lNyjGyBXG-M@T9IC(#Y?%dkf)?Q~_$fR?Hw?ojZ@*1llhu6j1`|@+nx%cX zgDX>ieD3>xoqj;t{zcFxizR6@%A5BTfeS2_rTx7K)1ajN({h|QKLHg%*6l9700000 LNkvXXu0mjfI^ZZE diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/bendalloy.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/bendalloy.png index 9ba1dff6a8a398d3906e57beebbc1d1cc243cc85..fda2e9d73128e08816f40c7ef5e976fc69b84e73 100644 GIT binary patch literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|FmyM$V}Wd|C_ncD4Mz+bUFb=ij@2p;ON%Zwc{Q*fnqF%*h{f z4;!z&Xvloc{MiwikeqI<%_(=C^DTeqTBQZecGXb&cVKtqC04h4XSA>BFKd2#MrNkq z)7%2B?tZm2j?^zM6Am0b*we=OuA-}1J;p*c!EEE<8!UWVS-%{RRQ~!^!Z=GMMRlrf zVvp^;!}lbbXC08<7*T2?vGJ;<#41Czo&Xm2DUYI=TF&0IaJl&FrqG2lcaC4zVl!f= poVTCunY@TOgY$_pQ#>OZ!-CF_wQqA84S-%|@O1TaS?83{1OUzjg>e7? delta 1191 zcmV;Y1X%mp0<8&uiBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dvNkl z7(NPhv07S9G#Cb)!-0n6CVRwv>;vpdOzLd%ot&VawI0mVJYj>cuO$oGOw+V00R~Rl zOcl{M31kDfNRnil=C-C}&!1i>2a zBJ|-5I>wk=?DxeJ&8hpTs{G5cC^>V#C%#=x-9InSdjav7_^I~Y{4M|h002ovPDHLk FV1n3LCTjoy diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/brass.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/brass.png index ec0c1cad84ee371c1be1124b75375b0e73c62c4c..98352eeab4bfb6329d0df580c900ec5d73f80902 100644 GIT binary patch literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+_>7srr_TT>6c!4-TEKnhel$nx?V|6o>lJ_AR%8z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dhNkliap=ZxsQY#JwrugVR7Szz=)CKA~?4ny5 riwD6Sf}^tk1Iz43OvnyVg(T?%u&y4T^&jv@00000NkvXXu0mjfTnrtL diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/bronze.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/bronze.png index 4558c2064bc7c4672f988e0249b2657421747ef9..ded62cffbfc5161b224dc860dcba7cf2ec8fc511 100644 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP||kw53d$*(mehZtSLv=aJ9qo1xwCgaWB zLgP-NtCn$=Hiw3CfF<8b>r1EiUg62w(%|v*kCRE}rkQm)CdXPAxxQ$8Q+)Zvl|I9u zQ-Vv_`lcP5xsydMa8aPu9NrEgqZ^$GnVdFyWoImtDzn6N?&r977pZpsQrw&Sd2WYJ z-Ih~5x7w#lg-Or-nRxQ(z3@dYymxPf|Li}Ykfm7hwdNiZ4?{BR;gWlyOqYSdz~JfX K=d#Wzp$P!c>yhgK delta 1192 zcmV;Z1Xug+0z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dwNklZpUD zv*_R^;?SXgp`*~X{s2J``~z;KOA(?J9URP;&ke^yY?Kfj`@+L}&YOErZ<=e2_5TXP z(3CQhlz2=GElC+E2!ctnb$V)pEnSb(qzs2)IiPA}LWYaFpQ|Ba( zL_bab3TqO@^w%p}kfW|iR$#~_K1=%m$2$M1#DT~*O|yd^!ISH{dkk8nK7|T=!Ul{e zaUjFCz@zNp%TR_H`Z@dt-v$@biC4RVI;YC>5pJm`@HSqC3v#V%Ssqj3onzAi_6QB? zqEhOefn{CGvYKQ|@CG({A5SL+RpCV+1rMS#A<7T^OqPx4w~u1*>v#NLtIRl~y~hWf z@|^k^R`i<8avZ0~sT`=lKIp5HT@09l1Fp}GL}Pu+FunlI9nb@IefZM=0000Eq( zf0*Fmz$7#wfYal^K@bV%u*W|5mlqjzi@oT3tcIuaC-zVGF0=9)r#(_PJ$lWE_p)*R zF+=G;a;dAkWR1Hw3!XQAR9{}w$h$Vacgu1&i(Anyua%#kHOiJ)9=2JSsp^{OKKCb@iKX4go}Zm^O`^-9 z^y7szkC&5#*QD$GNsXI&v;4-_S-&;4c4aPQS{L%5kgM>p9TN{jL)zw~!X^AmfSzOU MboFyt=akR{0KYeWBme*a delta 1214 zcmV;v1VQ`60>lY_iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>d`NklYU6o>Q2MW=#_g5cmHsGD6xCmjS49IBHzx#*;C z;HHn@B0h?5Ac)}5H;@*wm9!zrP2zWwn_$}*QV}OV_;G$G_vGA@o5c9%Z%|5IL{W6E z(^4!Q3yI^nCegC2eZro28qZ1`n;-}dXlRQknj-Bd(0`HmBJv3-n#yjX*^X`7j%k{q zZi5>VHn;p!3U~KPQ2pN zIo5sy^?T5@VczopAY zD4Z~ZhSP*ow2Kt^15@6iH(CENp69K(uKVp<9~&lHKyx}RrSxCU;PBrG)jyLe@IESS c{>vD~CyKe(DE2-7q5uE@07*qoM6N<$g2uZ#ng9R* diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/chromium.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/chromium.png index efd734948495ce7174d68b45017a73be9cab2cf3..1dfba5295edad7edba6e93b4743be8f073832bdf 100644 GIT binary patch literal 374 zcmV-+0g3*JP)a4-kd0h2HZLqSQ|=PrZ}_`AQfS(5&e zP|leYJ+o(CjK8p9M(ei$3#?6c_*M{V1v~;el@Q^Vm~tPs6eLvlNKPu*RTPP0lGh6+ zd>B;^Jp2v}_Q5?7wX|Y^JuxSyhdnZTW?2}fvLMiWV$ z8#5jKn{w~=O8S8rnOB_e%)}gVC#a3;PV$0aR*kb5@$#a4jUA)N^q6}G1~nl;sx4Ah zJ?N1rD{NK8tyTU7+1T>CuD0{TmqLTu%%ULeUNUO)U3WtEVgeTv7q<%hji&$u0J1!D Ur28PiX#fBK07*qoM6N<$g7MgqWdHyG delta 1182 zcmV;P1Y!I30;CCliBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dmNkle5uIw;~I;-H{Y2mJ(HS}61j zbSiF+ZsOpid)-}h>!42J<|a5O?NB<1A$k6;xxtWXE7Yxj`0>BXySu!XN6b|JuPBOq zYptW{NV)1MF=UZpHNvdpI98sKU&DpOKWXSdn&zNIcz*@nw;kR>I}ZOKhBe^~%Cb}N zh*xx3)^o6{X+lH44aLvc3G8v)Lk3z!SWzY+pqu)D6)2n zFT)JvwKk#DKz0;jeOQMFnr`qCwAs-b{sddl*V@tI$SwGUeUO_Kbs2ty-^Jh{8+9+AzyJUM07*qoM6N<$g5M7(i2wiq diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/copper.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/copper.png index 6d93adc65ee598d038258035ac426ee5e6da5e3c..d07ba7f2b39f79b713900776cb0e626fc9de5a58 100644 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+n%7srr_TXTXKc@G=#yzXBh zz@{j`l_ z&fd|WGwB%zbLj8P$_Xc!8QZ4Z+Ne}+d+CY8VZ(_jtL9EKpLN0{^LVQp+x&_cwSxzm zy2CiOt(?y>Lxb_xp7JOBR^^;JIVO8IP08n+lCpUEPvb_v>GdiGT;3I&1`Nk;RGydA SSo{y@I|ffzKbLh*2~7ZQA$e^8 delta 1170 zcmV;D1a14p0+z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>daNklWq->kiteRGQ|m?3ISmefzzUjP ziTs_^=rN(Jx3n4bjF)H}EmH}-Lwgw}l{Ih|s@&U!wf2mmT}kqi9b(DXwI-iv>ggwU zpaK(Uz$HAvC-k&@y(so!#^ulP6Q~hC;w|`qH}JJQpJ+G&8OW^Y1)u8HbI!MTO-mCp z>Zzis%ujvwnR6;<;#cAjzrqLj807!_y?BXiE_dsPVR)?R&BU-~5CnC+$fo&!@Snu6 kL)lV~+tJnsewXKc0ZGX1e{64a^#A|>07*qoM6N<$f^u{tzW@LL diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/duralumin.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/duralumin.png index 387fe4d84d62a380ea5498f14c699d502736855e..f5de288f6bac8589c3d7c88bb2862d1c61c07305 100644 GIT binary patch literal 358 zcmV-s0h#`ZP)VGDLQxUiXg_&T%J3!m8Y9-~gVr*75I>{0Ynv`JZ#RRf)ZoxJ^ zx*{bn4yphF_hHn%eB8oz^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>d+Nkl#0sS4*a11Z7Os%e_63YD(V8|{(hTOswXZ8d=S*t9DHQCXyrT-eZ9OoPUb1-WG S5XpR6KGr z3FlgKvghThCdGG&|1}pRHVS5mn!IYCR}n5P=dwJj!E2NC?Z^ddG7fg7^tbY{E|cPp z;^6vGwaC?Go@IvLHKu191fu_JzA1M&$m_EC2Gv}()oUK;F0+?eadP9k**hnl*1K4- z;K;)iH@OeGvPZ){YFgEF=uf!VWc4%t`Q*|U$&#CEO5B-0-+cP$h~EAGq6rLt%LA{T TGOT_A^c{nztDnm{r-UW|65)Pu delta 1094 zcmV-M1iAag0?i12iBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7=P?ZL_t(IPwkR13c@fHK+`UQ;N;-o;v^JYrISK8mrmZm6Nsbd5Zt_g zqqFX!7Z4GgM8QcEgwocR_+8YYRvd&rc>Lri|F=!5GJZo41b!4no=m@kMkUX7n8h?u zyu!Im6<=;McTitg`;jw?NuX$m8dp*V=KXuxG){i|JiS7}2@m{}ElKNqo}7!_j~Z$y z@bE~Jm^0KzFeXlj8}wz{3zo#UP*@~%(A8(gFSNuF?#+gbe?X}lGdI5bkkrNp00000 MNkvXXt^-0~g6Zk^T>t<8 diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/gold.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/gold.png index 2ffa9161ca130b47a884f699883d2a2a35d41234..e97cf7583ead3a490f6602ec2ca8c711c840fa76 100644 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;~m7srr_TRp*yf`=7&&YV3k zA%N3kMT-{*HRtkycn(ggR~Wf>r@Lz|{JGmc%4w21r%1Ajs%`PA@A4{#8{2jo=oTkb zt+D^Yl;U$n-1vbt>z)5$tzUHK8BY6VozA^{D~CZww!@C!&sAn-*vt(Gu}ig?!N_Ii zdGJcWhqQBN)UAqKOYiRtny}e=g=a*S>lcj~2lqDzPunlPEsY^qhA;Ft-wG99>GTw9 zsZ}1<>^C>w);yW8;6Yi?Qb(`Do3!qAN*w5_UH?Hefno6t-kPRoc@u%&V(@hJb6Mw< G&;$T)LUj88 delta 1177 zcmV;K1ZMlb0-p(giBL{Q4GJ0x0000DNk~Le0000K0000K2nGNE0F8+q4FCWD1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dhNklNZ7`%pW$8iqv2k1%48GoLaws>NA5B9-hiH}X7F4qA? zifmcd9J_&g_VrEERLMH(ZY{B72L{SX*2PuIN4XBj6kjQZFI?B%wQV~?*wuR2hBTkbQHwNFtO7F_!X-T|Jeo*w47ZR{HN$Dn zpU{MN_*PP>b#qiPRD?0SLYoCzoaa!Gws>MN3wN-97f`9y!>lhBoWqlpn~P;tzUh&a rp^EZPnexgbId3MCB_J*3He?t-tqJ{Pz+Y1V00000NkvXXu0mjf>%bpM diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/iron.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/iron.png index d174f2294f7e43138a749c036c0410ed842a9f55..a5f584a9dd3c911cf906b9179065f3175237b9aa 100644 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|UAEc;eg4BRikYXR$W>^d^I+tDnm{r-UW|KVO2_ literal 3076 zcmV+f4EytmP)004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 F699DVj647U delta 1263 zcmVz^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>ehNklYU6vmTKR4S&6ZX$?E5d?7&bn(xkD2TY~(#=JD z1qF5T5qtm@JBr{Sh+EOw2T)XMaj1|;lQjNLdPpseQt9C02Or=0?mg%9+h!wB3Z+u@+v2E+|X>OgvG&KRSKCjo_N_D0Z5v{Oe`wE=NM3T}`&RPM*+b*G3e zxaGQTsefE9r=r90XLhUiuOC%i6afAq$J}1Lom6ENSB>I diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy/nicrosil.png b/src/main/resources/assets/cosmere/textures/icon/allomancy/nicrosil.png index 1f0e681bfc80009ab696aea19580af50213262f9..e2825a5a67811b2c97648a0f69fffc73177ec250 100644 GIT binary patch literal 378 zcmV-=0fqjFP)q-QH2>vl4YODf>jndCTzL@n@Ni?}HBsZo9 zEfSf0BdE;AQ8@vmY^@O7X<;z2wP@5vE59K%Bc05uJo%#~@RY3TR`eoZuP5?!abKIr z5BLrlSA5%yhuhmE1Pg+S{1x$t_?gkcpEErC#oj^%sXg^WONe@PG#Bj|r>SI-*=N*H z;0aoq__vJLR+^c_1u7hmt9ejkX%e-R0Yufo>(jCRke@b|y?K-(&5Bf-N0TGU-s~;F Y0Dc|94D>YZJOBUy07*qoM6N<$f;qCASpWb4 delta 1178 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 KMNUMnLSTY-e(7ZZ diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/atium.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/atium.png index 6bb43da8ebe9a9ba04f92d930ab23a76096a67f6..ac99ca8febb17b09db33342a85fc43e2672ccad9 100644 GIT binary patch delta 328 zcmX@Zb&Y9)c)b7z8v_G_{OA9PK#H@#BeIx*fm;}a85w5HkpK!xmbgZg1m~xflqVLY zGB~E>C#5QQ<|d}62BjvZR2H60wE-%6?CIhdQgN#%$dUK30Z-4Wzv3K?1{{q6Ak+#( z7mOrYdK?v|IHqN%pX{EqZJOU&;nzjqZq{Foie(pGD6q%s_ARS&rwNWqKO^c3yA>8# zD5Q(FyBb(nyB%r|n6SQOd1R&Yzn1CSck5QD+B;ZHKGT&j^;;YFPaRufvC{u+Uh7$> z?Rs#Pxoc0BqGEp-cbur~2ER9xKgZ&hxk?lJgTe~DWM4fP&9y+ delta 1331 zcmV-31Fp4v}FqSf|V7$j9#uUUff$0LX zFmojHLgqItmMk4Cw^;R9TUqb1S+Y%I`^Fy5zMDgdql@DUXCmhXE=R5{+?w1Ac%*oy z@(S@z;uGeZ#xKLaSU^W$hoGzA6`@q2AHuyNDk6JD!+%A;h)ohV62Br*At@($Oe$Ym zTKa@cnXJ0(ExA5<7x_O5TNMkH^pxHzuT?2fHBtSkc2K=bBUDpK^Mlp_?MXVRx>kCE zdav}47%VWXHHtB|HIX-EHhpP!!F;F163Yozb=J8yakhbWuJ+ar#*R8pYR*b73a;{Q z3hv4t>VKZPUMAi)KJLE3ehL2h0ri0sgO&#G3b`2iGMp(wF48J0BDx}GX6&B02MKJ6 zx=CTl4Jm6Do(SY&2q&CR};%bsVSUs15B@LjQXNml8qvNsj_l_gcXY8Y$1>ZaB| zY}9M2X+GO3*H+kmv{SmPsQYxUYF}gj-HA4nW`9rqJ2igV;Tak;`)7ThlQ8%6eDeiM z7l|xxUGi;N=JISG610UAgF=b+M(;UB#6fE!ij$1%-fH zF@j&9(1t3CBq#xGNhZvUzx(FSkVqnW;Bf9e_rCkyyqU2&!T0?iFc$=Yt(F1aYYjVt zMGt5!!x6O%YPH&9f4n12JHvI|S2UIwE0RvtlF1r;aXF(UT0vD<6i`R^Hk1#{yR@3nph_B## z&0{cpNW%~;OkkeCQOO&P#sprKd{}bsAxB)%zE9|Y_%XQse~b*E;GmD-F?^%tXuu`9 zj>dNs1M?eP()cG_WtjPph+6H3@P(G7HVdCbcK}D>225#-Il&ih=0Fw92tQhSvQc7bG{HXLotd82Iu_PlZ{GG1yISZ=6@*Y+YaLqr> z@*rVq0O#Ze7L^buRUao+19p!UEnWv0txu>YnlJb=NnEJ!|IWt?1eh94d)iN1Y4LDy zs(NzjEeyu^TMWcCG>l{02 zWk-eM=}&jgYZRNW`TtVtl?AD<5~qF3JNYy!V$H7a{8fntw?yI@*%-Px-qsg7>}&-3 OjKR~@&t;ucLK6VKJ9g&) delta 1251 zcmV<91RVRp0_X{UiBL{Q4GJ0x0000DNk~Le0000E0000K2nGNE0KEkaEC2ui1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>eVNklexc$A4&D4Kba4=MR_fy5 z;-HHn?wvch=;mTUhvFg#U0kGyh)YFrP-2=!&wX4Yu?C_)IK13*-+i&qSdB)b`0Jz$NE<2YHCBipvSjHuV^vq2EN!H5yRgnz?(=vVm*tMW$GmWAAfD_pCp zFt}cNx3B|iKL<0MR$<*%WkTHtcd(^(bWnmEg;&q>a$5JpJ#3l{gy-f#35`75z!W_A zzQ3U@lh{FA3eMQz!@BA)UxO*F!{CN#4)XX8*G3Y2S|3d!gEYrkO8lSXB9@_m>*Syu zYm4k@3V+QBsIg&1mAE1tbKBufQ-A+PifMR+MI$uyJ8&_JI}wBK~8A}878!ifxtW6gkkRjX!GT-Y$j z0g+q8$yfCZL#mR8p*#m(%AvNpM3LVHr%+avJRrO^3pFkOmLLe`KLK#=y=oX$6rTV9 N002ovPDHLkV1jORLoxsW diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/brass.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/brass.png index 39cd8eed0a00591b776f7e0de73bb9e65c8552ca..bad5edf3218bcd52c39bed08df5447be15a8afb0 100644 GIT binary patch literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;~m7srr_TS-6u|F>u6yusKZ zJ>lpKi4Jxqhdqq36GWKB7!2)qvZ*j^WEO~5xyHb(P{(kDeSws^1Mg3VHH_j5+8SQ` z4X9!^YyGk317nvx(?;7XtP%~Z{fr9YSC}^{PO+8mkWX51Nbo+BLk*+uIrTs73{y%P zPP6iQBwl1FWjw*nc%+5VBhb#|p@u^1QFfK)!YalmU-%tr7*4f)l%4P-a8E;C1Jk4= zwiS=qBd$C!VUUz|$kjhE{UFEDLu^i#BGZqstzcwo;bGt~U|4Ta%4}El!5-)>22WQ% Jmvv4FO#n;LX6yg} delta 1188 zcmV;V1Y7&Q0;&mriBL{Q4GJ0x0000DNk~Le0000B0000K2nGNE09!1_XaE2J1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dsNkl3WeSIT8jSLxQ>l#)p)gEAOdtm&VQ98NzK~7MQ|vN z;};wAm8NMo!6r2=n3pRu8?Ng{Hs&h~!)adOL9d~c&3|?r-}gtj?gEZjR@eAsAXCf@6BvcZAP6R@SFj7c9bwEKxP%3pE6{?itZ)Mk z@m;gzjl+9e7-JT$@%pG$>KrWFZv8vVpzHKKcVHiC?E0xE+IyZ?qWAP!3N&Z%1}mBs zh@xnTd0|bxL|@lq74Biee0hU#2W7M54eK$brFpu^Wj^Ll?wR!|`PTl3;3A7>YSpZ4 z5g6mdSL(c3*& C2Q5$l diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/bronze.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/bronze.png index b12df95a16d8d51aed11ae07b26f76e50963be53..c9d4a9df9c28357a1acad0db240b31051de3ac51 100644 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|-If^+JS)(_=;R)k880jGPt;8)Q$mUtmz)Ic5Jp`}2PfC-vko866Dh+q|>% z$`K!?$p!z-8@(#F)!kuh5})#K-3}i6pvKnEY|%;!|3}GQE&a2Wcbhi{XVMbxEhU}8 ztXik4?+P2Tw?E=glogu4SNn}dZ0H{5l!s9VnZ9pvX=jd+n0aK;hrajSE8bTXCp=h@ zkp1Gp`j$nUD$CwF`W5X}eAqkf=FICySGR9^cFZJUolp&n1jCeoch4OEZ43Z K&t;ucLK6Vtd3mA$ delta 1248 zcmV<61Rwjn0_6#RiBL{Q4GJ0x0000DNk~Le0000H0000K2nGNE0BfMuNdN!<1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>eSNklctSu!j&MwNqLH>X} zxVT8ljhmE%6Xhgl7nj}0*$G#tQKNbHd7gevyUgsi^Q}+M@AW%7Gdo5eMNzb3+xDQO z-3x;O_<&(4b*DIvO_pyV$Zf*nHb!x76P707I}F2mE`Jj)US#PBo?)%ogkHhYQys)$ zjbqL<%`Hw(7ZFBPdOeb6%k#V?hJA*2RjwAfC8bkp^LnVASSZ6A+_7LPi1#2QuE zF?<1^EKG17fO;nPkUSI4vK~$oi<=DiP=ykCjdMtHZ362sDl4s`F#=z3BBeyslt~C@ zFfQd*aeqaN<^$A;i&EC2HVu~$IF2(W<^KwTV4ooyrZ6dRF2W(ak~erON5t8GHrI7$ zX#T*C%6;EoC02SQ-oQk?o#dJ5rDjnq!3*3-N!^-Snw3?g6>Ku#IlB1y z|1uV{3xX1jf;Sx85?Jm!m?yOCVpJ|+nX_QohX+YK@$cW2U!P*KRA2X~1ZPNLq+DfO zPp3=c$K-@Lv#whPH!A;Kl^_#*+3h8hY_O5JNc2_Dp5h5#66c+{8!_21k%w=uVDqK* z=1Lz=&6&AfYr?bJnVVTR7ww3DV;FeKm|sTq@Hs#AlgbfA8ZH*)ijVHRVv>yYV)?f9+Y&qOw-o9;G%69kW6;^N6U6)^L aA7H4r)R<;0G{Fq$Nd`|>KbLh*2~7YtXMSV= literal 3112 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 a7#ZSLKj2ro=3fBxB!j1`pUXO@geCyFK6^X> delta 1261 zcmVz^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>efNklV`HW7)%v+@)e@7lJt0hBo`0tfUWt6j{k1$*$Fa~Mv!yT2PN9dP*-*0|H zL1d6n8eWU3%}(?U+zJEV&>W=bCGZ3nsK~41^@s6AM^iV00009a7bBm000XU000XU0RWnu7ytkO8FWQh zbW?9;ba!ELWdK2BZ(?O2No`?gWm08fWO;GPWjp`?0MkiCK~#9!j8Y2`!ypW0Re*## z7!oR>5|B^_LjrS92}r1fN~i>;fQ7qk$GwJ6?p{AY9(l=ADSsseIEA$;CUuV|!Ku*@ zSbt$gDtP1vauPm-i(q;MloHCrJ3)^~DG74I#@~@(39oJypy^=!j{hA`Mb~Fp4v}FqSf|V7$j9#uUUff$0LX zFmojHLgqItmMk4Cw^;R9TUqb1S+Y%I`^Fy5zMDgdql@DUXCmhXE=R5{+?w1Ac%*oy z@(S@z;uGeZ#xKLaSU^W$hoGzA6`@q2AHuyNDk6JD!+%A;h)ohV62Br*At@($Oe$Ym zTKa@cnXJ0(ExA5<7x_O5TNMkH^pxHzuT?2fHBtSkc2K=bBUDpK^Mlp_?MXVRx>kCE zdav}47%VWXHHtB|HIX-EHhpP!!F;F163Yozb=J8yakhbWuJ+ar#*R8pYR*b73a;{Q z3hv4t>VKZPUMAi)KJLE3ehL2h0ri0sgO&#G3b`2iGMp(wF48J0BDx}GX6&B02MKJ6 zx=CTl4Jm6Do(SY&2q&CR};%bsVSUs15B@LjQXNml8qvNsj_l_gcXY8Y$1>ZaB| zY}9M2X+GO3*H+kmv{SmPsQYxUYF}gj-HA4nW`9rqJ2igV;Tak;`)7ThlQ8%6eDeiM z7l|xxUGi;N=JI$C?5wwYlg@}a+Rza;S`~ljVLeNTxg`kCCC)iop1q6k3B3P-F5iK-zZ0w?i zh)E}$phZY>ezQ9vS&lRL;4!;zXJ2-gOQMr73|Dp7Grm>>0hwmAnbB!aH~~tIpm7~{ zB@*Cy-UtCFI_*j%e}K(ZN}8)|Sm%FC0Gs;F%<{u2)~UyYOjs+PR=@&E8V3j{Qsf$^ z_?|IiXkFo@(P-@I*g(i3B}Krdb-KWDw@?L@)e>(8RSB6=D;}EqXfB~wwG8!oJ-avn; zLgNu~z5(X)J;?IlX|*gE5)hy>Re@&tE-oko+Gb!riSPdHH6V`1AP7?0YN*v}OMmko VfXc$|JMsVk002ovPDHLkV1hxyNGAXQ diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/duralumin.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/duralumin.png index b89e423c09471b8ed94617beb7e8040086e7bac2..3b1ac013662549e780c1e37a8767a573232100f2 100644 GIT binary patch literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|-e57srr_TT>=63LaMAalM(x zq{PTMHGp$!LyOl67L_XpwH69#B?=WBIP|Xg^bUiD-Q^;O{{B%hHFUe&xccb3W%;aW z7nyV!nZkV^TokymVSSIR=!O$oZ-vj@|GK;rALSZDH_xl&HeiVEncv7W|CK(_Ck&phelF{r5}E+byL9&e delta 1188 zcmV;V1Y7&D0;&mriBL{Q4GJ0x0000DNk~Le0000A0000K2nGNE0JQF`RsaA11ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>dsNkl^*>!AcPP1HxjZc7m1m+X>oP zsg1qX*1}?`jra$wL@n%WQz$4{1Qe7!{ARof8+UWyaPK+y%qvlK$n)I9aoiHAjMM>W zt+OBq7Dd(v9jvwU(hdeWauPN~eq>p;-aN*VMq90=%s>O}`3phIpWE zd*dJ6oDD_`u@7%C=Dg8|D2hV-5s^OJVds15rdSGn>?&TUy(7RFXZ0cN6!nfreZn68 zWhGdE!C^Ax0QPw7Grw}p5BfpKea9Vk)Ud(v=jd4(|A9dhvm?^q4Z5pTLC{L;L8uGc zuCM%S{%srrG5@13 zCvxD6VH1Z+0b_?f!$xN2jSMGQ71l5uk)M#O(6W(J%z@WX;W~rBJ%%IV8zk;HtYKsd z2sd%KDZQZaJHsjU3|#lv(-}Nn{an^LB{Ts5xMf)- literal 3073 zcmV+c4F2004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 P00000NkvXXu0mjf-#p49 diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/gold.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/gold.png index bdf7183c2fb5bf7dc4338d80b59ba1eaa093a4c5..decd7cd0f108d72e5b231c70cf9f2d86eef3843d 100644 GIT binary patch literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;aW7srr_TT_ABDG|U@@b`>xN8-Q=tK;hr^+OfPaTY=Pg_MM|Jww*>}HI*9toscx`hLe|_wQ zq44gA3|_w@o9|qZ_^`6?#|4RsM;)f!?{_#|U2wF#x#1@FW_~Wu`!1L4_82VOc4X@} zE@P%*rH`iHlTS9ZvQOaEyZKF9v52pl<++Pq{Efc?pSfc${_2P-ZRI^=QTgvaUqp!t zpF!e{OSZGmZ28#ft@$;IU2dUoXXf-PHyt-g%&?POwL|}-+>+%C%nWN9clZ{}IZ^@i O7=x#)pUXO@geCwqL3?Qc delta 1213 zcmV;u1Va130>cS^iBL{Q4GJ0x0000DNk~Le0000E0000K2nGNE0KEkaEC2ui1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>d_NklnKP18Efy2z4nKQXJN#B29tzFf$I53UF zj+VvXoC`2rLZ?zOV5nhse=;&W4PW4~7z5Q)pt;TRvVZ0w;Se6cGtn}EVUXc-ct>6$ z?!&g`8}R2*wXq~QF@&e^0=~gH)ze0VY8S9zQ|c&+M$uwe?+t)VqX2OcKEV}s$cwlo z?rJ;VDBy_`H1FXvd6~FJ9FSgO%zUd1bqOQHD`U(fY?9CWu1CtqfM^YPjiJHzS>g?K zzw~p#V0sO9;228`aZPpkmf3eikiX*m@?X`$al`@eSzu&RWU54S7 z*1sc;;{~?76Dum^B6*_W{6nyXb`k`^j&FM~FvSVhwd{e}8N#wOkKhAB$+y0MUO`X6 bTI)UlE4^={Tt@g400000NkvXXu0mjf&Xzew diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/iron.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/iron.png index bceaa53a30398440794c50d89a84b75e40a57dc1..853dfd58a6319acee5a3ec3e68ad7528fb59b5de 100644 GIT binary patch delta 312 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 diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/lerasium.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/lerasium.png index 9b0256dc4b397b3c69641a840deb59fc1a9ba772..62aceb24bb12e90482bed8514c0fc25b867e91da 100644 GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|3uNz&AQwNQVms}T2W?K9=_ zL92ScvdJl2`079T>dojAo{!r6BsIdk0)>-#E*|^1oq?I*?apm8^5%QK1bT_V)78&q Iol`;+0H4HpoB#j- literal 3117 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 aV<>yU)4%9))nuR_89ZJ6T-G@yGywn}?t(o4 delta 1311 zcmV+)1>pM20;CFmiBL{Q4GJ0x0000DNk~Le0000F0000K2nGNE08+z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>f6Nklg1E%ajkszL2pYtU}ZLBAdn^@Dv%dtlYykEU=uRxnE}q$|dZJuPB~0#o;HY z7cUhaVO%vJ)+4Z`Z9yD1AkOBojwBnzzfhZWBo_qqvRG^cAq8VPl57W}+IlOS%}(a? zdAT4co`0v-vA%~<)lf+^p23xT747>#evwAi;3XPc;0@+pGGw3=wVB1=YOaZR$Lz zm*k4KFXR6}k9hWLSd9Dqr9=a&liFy@9dxR(HxyzAh>6?;W~**2RWvO&1?{`=#DMVlR{8 zOlH%PH06VH6?X_dGiK30#Ow7>NyDN>{l{V!u^U-RHVH@H39@{Po%+^YW?l&Amubca zyLdtl9je+_t9?Qy=dcc&@WO;+)uA!pHg0gJ5(&F@>P*t1q|I9r4n#$?xJPX8Iub70 z89l*HS^2`J`3{d%8V^2XGxdJ19+mFj+c5bHhfYY3_|w#Mor`5bQ5$3aizP5{7*|hd T&Ay!p^dW<%tDnm{r-UW|I+}U# delta 1251 zcmV<91RVRx0_X{UiBL{Q4GJ0x0000DNk~Le0000K0000J2nGNE0FaC=wEzGB1ZP1_ zK>z^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>eVNkl11^Dij0m!7Z5~U6kG}gbrL5Rr!ERk z{sUc91Xl+q7o8RT0|l2ZE^fMrxVU)%10jjeck(49P0~vGz{|<^zURETly>CddETJo zIAtB%$M^kVN?%#~)oKqZL_VdLYPCmLC{Vhoc5&zlpMUTHeaNg)F=B=5sE%$KEsb;O z)U_E7+D2sxtHvop>lE33;ATL$z@3+MjKDh~i=Hq9YXk2W&8n4#@D%mwXkZ?ZLSFHh z>mIcY%zqc?vC)qpnC9S_jt08IZ+L~CY}=mENU{>%3ulhhO2dW&w54Obu);Ed5fZCb>p$&(nOn!+_tXFY N002ovPDHLkV1i^ZK+FID diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/steel.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/steel.png index 13d41ac8e153ce964f9df09187f7cea09e176748..82e8bcf13a9b20c85d9172662a49793ef1005a67 100644 GIT binary patch literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|+z*7srr_TRoGqc@G=#v@Bln zpFOcLfJ3s`fuqIog+vJtS7NdNhi%g@YOl!W`X0H3bE^}eTKZXZ<@0M_K z-1y)6#g6HQ?CtdN|SS1+F&S>27o27pZ&{qte Lu6{1-oD!Mz^Y{9#ZnmH+?(_h~~zP*7-ZbZ>KLZ*U+lnE?zElZy)+0|IxTdhXgqT*)0qVOgts2 z6(GF~&iMtEMVaXtB?^X?mX->RDfvmM3c;1dC8@c^3Z8k%`9%f!MTsS;DL}PQJ3xTf zCBH<$Jux$XPr=AQm4V6t6pj!UB76{H2#{P_R0a=91_l8J1qK5K2ZjKKM232X1q??S z-Y|+Yx-gb9u3)^!B*qlPG=b>?voLcc^Frn~ES4-CEVo$oSX)`|v01WBWBbM)&c2&N ziKC0-3uhwd1ujRfE!>*i3wWe>rt%8$PT~{ho5nAH!@pQSM_`AbtKb!(RG}Zjy&@_i zdqu-Vzlco|Hxj=hQ6VWOc}yx_T3Y&qOqr~@>@B%Ic^COV3R@KmmGqR}Dz8;3P&HBg zsdiAkOCwZMN%Mo&0qsdTsk&Brf_ks?j~Fa4tTl=;wl$GAWj1|jcENn7#S+U2R(007 zHgUFpfp)I;)(*ywI!I{@j$TQ;`tSOjn>M#P z?%t`tr+oj!!@S30Pxe2{d?E7k;OqRi^6xHuX!>OO`PJ72-@|_j{5tig^`GPa{{RgD z4>Z?wUKo)f7k>eFNklKTE_w5XF;lu~JbiMHDR$4@IyOKY|E%pxB6rt=vcO z3c=3CRw5*sT)4X2fr_z$&6NH+dya$ij_hx5yc1f%YV*A9`?J(rHm>0<~Hea=P8IW9sIVh#n5AM1)s1OShWJ~}6002ovPDHLkV1itoGamo| diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy/tin.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy/tin.png index 4d3c3a7a655a24beca31f03cf7765e0e867ff307..6cdb1d799c0e826ffc63652e9981a2b659db511d 100644 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|;OS7srr_TT_A>1)CLkLe?|y zaFlK2J;l-UfCEUs;^;fX(RYBOgh^_Tzx2vQ1>cufDx7?tnbhN}TGjM?NA|1hE<5TM zpL(VC@7k%WF>)M={ukCoZu1tbI^@LBRQ^EtyTX>vH(XY>j>_9SZ2ryF*Pgg&ebxsLQ0LjXH1^@s6 delta 1261 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 From 9a2052f263a9ad1adc57fa5593d3c165b5864563 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 14:38:34 +1200 Subject: [PATCH 0110/1090] Reduce capability nbt save size a bit --- .../cap/entity/SpiritwebCapability.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index c35e32d96..0f73915f4 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -134,11 +134,14 @@ public CompoundTag serializeNBT() nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); } - final CompoundTag ingestedMetals = new CompoundTag(); for (Metals.MetalType metalType : Metals.MetalType.values()) { - ingestedMetals.putInt(metalType.getName() + "_ingested", METALS_INGESTED.get(metalType)); + final Integer ingestedMetalAmount = METALS_INGESTED.get(metalType); + if (ingestedMetalAmount > 0) + { + ingestedMetals.putInt(metalType.getName() + "_ingested", ingestedMetalAmount); + } } nbt.put("ingested_metals", ingestedMetals); @@ -170,7 +173,16 @@ public void deserializeNBT(CompoundTag nbt) final CompoundTag ingestedMetals = nbt.getCompound("ingested_metals"); for (Metals.MetalType metalType : Metals.MetalType.values()) { - METALS_INGESTED.put(metalType, ingestedMetals.getInt(metalType.getName() + "_ingested")); + final String metalKey = metalType.getName() + "_ingested"; + if (ingestedMetals.contains(metalKey)) + { + final int ingestedMetalAmount = ingestedMetals.getInt(metalKey); + METALS_INGESTED.put(metalType, ingestedMetalAmount); + } + else + { + METALS_INGESTED.put(metalType, 0); + } } } From abd12ab5f42337dc3466a8f4c01f125e64acc29e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 16:03:30 +1200 Subject: [PATCH 0111/1090] Fixing item bar width and colour --- .../java/leaf/cosmere/items/BaseItem.java | 13 +++++-- .../cosmere/items/ChargeableItemBase.java | 38 +++++++------------ .../leaf/cosmere/items/MetalVialItem.java | 16 +++----- 3 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/BaseItem.java b/src/main/java/leaf/cosmere/items/BaseItem.java index fa38b11d3..a72ff452c 100644 --- a/src/main/java/leaf/cosmere/items/BaseItem.java +++ b/src/main/java/leaf/cosmere/items/BaseItem.java @@ -6,11 +6,11 @@ import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.properties.PropTypes; +import net.minecraft.util.Mth; import net.minecraft.world.item.Item; public class BaseItem extends Item { - public BaseItem() { super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS)); @@ -21,10 +21,17 @@ public BaseItem(Item.Properties prop) super(prop); } - protected int getBarWidth(float value, float max) { - return Math.round(13 - ((value * 13)) / max); + final float percentage = value / max; + final float lerp = Mth.lerp(percentage, 0, 13); + return Math.round(lerp); + } + + protected int getBarColour(float value, float max) + { + float f = 1 - Math.max(0.0F, (max - value) / max); + return Mth.hsvToRgb(f / 3.0F, 1.0F, 1.0F); } } diff --git a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java index 4c40e5ff6..baeb5a6c7 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java @@ -16,6 +16,7 @@ import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; import java.util.List; @@ -61,40 +62,29 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool } @Override - public boolean isBarVisible(ItemStack stack) + public boolean isBarVisible(@NotNull ItemStack stack) { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); - return item.getCharge(stack) > 1; - } - return false; + return getCharge(stack) > 1; } @Override - public int getBarWidth(ItemStack stack) + public int getBarWidth(@NotNull ItemStack stack) { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); + int maxCharge = getMaxCharge(stack); + int charge = getCharge(stack); - int maxCharge = item.getMaxCharge(stack); - int charge = item.getCharge(stack); - - return getBarWidth(charge, maxCharge); - } + return getBarWidth(charge, maxCharge); + } - return 13; + @Override + public int getBarColor(@NotNull ItemStack stack) + { + return getBarColour(getCharge(stack), getMaxCharge(stack)); } @Override - public boolean isFoil(ItemStack stack) + public boolean isFoil(@NotNull ItemStack stack) { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); - return item.getCharge(stack) > 0; - } - return false; + return getCharge(stack) > 0; } } diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index aa4295b3b..898c69fea 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -213,17 +213,13 @@ public boolean isBarVisible(ItemStack stack) @Override public int getBarWidth(ItemStack stack) { - if (stack.getItem() instanceof IChargeable) - { - IChargeable item = (IChargeable) stack.getItem(); - - int maxCharge = item.getMaxCharge(stack); - int charge = item.getCharge(stack); - - return getBarWidth(containedMetalCount(stack), MAX_METALS_COUNT); - } + return getBarWidth(containedMetalCount(stack), MAX_METALS_COUNT); + } - return 13; + @Override + public int getBarColor(ItemStack stack) + { + return getBarColour(containedMetalCount(stack), MAX_METALS_COUNT); } @Override From 3e5ddbaad3ee4f3f18229183921c1a2aac613642 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 16:03:53 +1200 Subject: [PATCH 0112/1090] Feruchemy starts to sputter out when running out of attribute stored. --- .../java/leaf/cosmere/charge/IChargeable.java | 8 +++++++- .../leaf/cosmere/charge/ItemChargeHelper.java | 18 +++++++++++------- .../manifestation/feruchemy/FeruchemyBase.java | 8 ++++++++ 3 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index 753f2ec05..4f96f3a2f 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -42,6 +42,12 @@ default int getCharge(ItemStack itemStack) default void setCharge(ItemStack itemStack, int chargeLevel) { StackNBTHelper.setInt(itemStack, Constants.NBT.CHARGE_LEVEL, Mth.clamp(chargeLevel, 0, this.getMaxCharge(itemStack))); + + if (chargeLevel == 0 && getAttunedPlayer(itemStack) != null) + { + StackNBTHelper.removeEntry(itemStack, Constants.NBT.ATTUNED_PLAYER); + StackNBTHelper.removeEntry(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME); + } } default boolean trySetAttunedPlayer(ItemStack itemStack, Player entity) @@ -71,7 +77,7 @@ default boolean trySetAttunedPlayer(ItemStack itemStack, Player entity) //or if the metalmind is unsealed (anyone can access) if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNSEALED_UUID) == 0) { - if (noAttunedPlayer) + if (noAttunedPlayer && getCharge(itemStack) > 0) { setAttunedPlayer(itemStack, entity); setAttunedPlayerName(itemStack, entity); diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index e811460d5..4c74da2c2 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -135,36 +135,40 @@ public static ItemStack adjustChargeExact(Player player, int chargeToGet, boolea return adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); } - public static ItemStack adjustChargeExact(Player player, int chargeToGet, boolean doAdjust, boolean checkPlayer, List items, List acc) + public static ItemStack adjustChargeExact(Player player, int adjustValue, boolean doAdjust, boolean checkPlayer, List items, List acc) { MobEffectInstance storingIdentity = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); - for (ItemStack stackInSlot : Iterables.concat(items, acc)) { IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + if (chargeItemSlot.getCharge(stackInSlot) <= 0) + { + continue; + } + boolean playerUnableToAccess = !chargeItemSlot.trySetAttunedPlayer(stackInSlot, player); if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not || //or if the player is trying to store in an unsealed metalmind but have identity - chargeToGet < 0 && !isStoringIdentity && chargeItemSlot.getAttunedPlayer(stackInSlot).compareTo(Constants.NBT.UNSEALED_UUID) == 0) + adjustValue < 0 && !isStoringIdentity && chargeItemSlot.getAttunedPlayer(stackInSlot).compareTo(Constants.NBT.UNSEALED_UUID) == 0) { continue; } - boolean storing = chargeToGet < 0; + boolean storing = adjustValue < 0; int slotCharge = chargeItemSlot.getCharge(stackInSlot); int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); - if ((storing && (slotCharge + (-chargeToGet)) < slotMaxCharge)//storing and can fit in this item - || !storing && slotCharge > chargeToGet) + if ((storing && (slotCharge + (-adjustValue)) <= slotMaxCharge)//storing and can fit in this item + || !storing && slotCharge >= adjustValue) { if (doAdjust) { - chargeItemSlot.adjustCharge(stackInSlot, -chargeToGet); + chargeItemSlot.adjustCharge(stackInSlot, -adjustValue); } return stackInSlot; diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index a9bc6d0d7..5188fa662 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -112,6 +112,14 @@ else if (mode > 0) livingEntity.addEffect(currentEffect); } + else + { + if (mode < 0) + { + //move towards turning off feruchemy. + data.setMode(manifestationType, metalType.getID(), mode + 1); + } + } } From ccb2f5f2495c99104999f129872f23859b7d55c1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 19:35:54 +1200 Subject: [PATCH 0113/1090] Deepslate Ore texture fixes --- src/main/generated/.cache/cache | 311 +++++++++--------- .../blockstates/aluminum_ore_deepslate.json | 7 + .../blockstates/cadmium_ore_deepslate.json | 7 + .../blockstates/chromium_ore_deepslate.json | 7 + .../cosmere/blockstates/copper_ore.json | 7 - .../blockstates/lead_ore_deepslate.json | 7 + .../blockstates/nickel_ore_deepslate.json | 7 + .../blockstates/silver_ore_deepslate.json | 7 + .../blockstates/tin_ore_deepslate.json | 7 + .../blockstates/zinc_ore_deepslate.json | 7 + .../generated/assets/cosmere/lang/en_us.json | 11 +- .../models/block/ore_block_deepslate.json | 7 + .../models/item/aluminum_ore_deepslate.json | 3 + .../models/item/cadmium_ore_deepslate.json | 3 + .../models/item/chromium_ore_deepslate.json | 3 + .../cosmere/models/item/copper_ore.json | 3 - .../models/item/lead_ore_deepslate.json | 3 + .../models/item/nickel_ore_deepslate.json | 3 + .../cosmere/models/item/raw_copper_ore.json | 6 - .../models/item/silver_ore_deepslate.json | 3 + .../models/item/tin_ore_deepslate.json | 3 + .../models/item/zinc_ore_deepslate.json | 3 + .../alloying/blend/bendalloy.json | 4 +- .../cosmere.items/alloying/blend/brass.json | 4 +- .../cosmere.items/alloying/blend/bronze.json | 4 +- .../alloying/blend/duralumin.json | 4 +- .../alloying/blend/electrum.json | 4 +- .../alloying/blend/nicrosil.json | 4 +- .../cosmere.items/alloying/blend/pewter.json | 4 +- .../cosmere.items/alloying/blend/steel.json | 4 +- ...inum_ingot_from_blasting_aluminum_ore.json | 4 +- ..._ingot_from_blasting_raw_aluminum_ore.json | 4 +- ...inum_ingot_from_smelting_aluminum_ore.json | 4 +- ..._ingot_from_smelting_raw_aluminum_ore.json | 4 +- ...y_ingot_from_blasting_bendalloy_blend.json | 4 +- ...y_ingot_from_smelting_bendalloy_blend.json | 4 +- ...brass_ingot_from_blasting_brass_blend.json | 4 +- ...brass_ingot_from_smelting_brass_blend.json | 4 +- ...onze_ingot_from_blasting_bronze_blend.json | 4 +- ...onze_ingot_from_smelting_bronze_blend.json | 4 +- ...dmium_ingot_from_blasting_cadmium_ore.json | 4 +- ...m_ingot_from_blasting_raw_cadmium_ore.json | 4 +- ...dmium_ingot_from_smelting_cadmium_ore.json | 4 +- ...m_ingot_from_smelting_raw_cadmium_ore.json | 4 +- ...mium_ingot_from_blasting_chromium_ore.json | 4 +- ..._ingot_from_blasting_raw_chromium_ore.json | 4 +- ...mium_ingot_from_smelting_chromium_ore.json | 4 +- ..._ingot_from_smelting_raw_chromium_ore.json | 4 +- .../aluminum_block_deconstruct.json | 4 +- .../aluminum_item_deconstruct.json | 4 +- .../conversions/atium_block_deconstruct.json | 4 +- .../conversions/atium_item_deconstruct.json | 4 +- .../bendalloy_block_deconstruct.json | 4 +- .../bendalloy_item_deconstruct.json | 4 +- .../conversions/brass_block_deconstruct.json | 4 +- .../conversions/brass_item_deconstruct.json | 4 +- .../conversions/bronze_block_deconstruct.json | 4 +- .../conversions/bronze_item_deconstruct.json | 4 +- .../cadmium_block_deconstruct.json | 4 +- .../conversions/cadmium_item_deconstruct.json | 4 +- .../chromium_block_deconstruct.json | 4 +- .../chromium_item_deconstruct.json | 4 +- .../conversions/copper_block_deconstruct.json | 4 +- .../conversions/copper_item_deconstruct.json | 4 +- .../duralumin_block_deconstruct.json | 4 +- .../duralumin_item_deconstruct.json | 4 +- .../electrum_block_deconstruct.json | 4 +- .../electrum_item_deconstruct.json | 4 +- .../harmonium_block_deconstruct.json | 4 +- .../harmonium_item_deconstruct.json | 4 +- .../conversions/lead_block_deconstruct.json | 4 +- .../conversions/lead_item_deconstruct.json | 4 +- .../lerasatium_block_deconstruct.json | 4 +- .../lerasatium_item_deconstruct.json | 4 +- .../lerasium_block_deconstruct.json | 4 +- .../lerasium_item_deconstruct.json | 4 +- .../malatium_block_deconstruct.json | 4 +- .../malatium_item_deconstruct.json | 4 +- .../conversions/nickel_block_deconstruct.json | 4 +- .../conversions/nickel_item_deconstruct.json | 4 +- .../nicrosil_block_deconstruct.json | 4 +- .../nicrosil_item_deconstruct.json | 4 +- .../conversions/pewter_block_deconstruct.json | 4 +- .../conversions/pewter_item_deconstruct.json | 4 +- .../conversions/silver_block_deconstruct.json | 4 +- .../conversions/silver_item_deconstruct.json | 4 +- .../conversions/steel_block_deconstruct.json | 4 +- .../conversions/steel_item_deconstruct.json | 4 +- .../conversions/tin_block_deconstruct.json | 4 +- .../conversions/tin_item_deconstruct.json | 4 +- .../conversions/zinc_block_deconstruct.json | 4 +- .../conversions/zinc_item_deconstruct.json | 4 +- ...copper_ingot_from_blasting_copper_ore.json | 32 -- ...er_ingot_from_blasting_raw_copper_ore.json | 32 -- ...copper_ingot_from_smelting_copper_ore.json | 32 -- ...er_ingot_from_smelting_raw_copper_ore.json | 32 -- ...n_ingot_from_blasting_duralumin_blend.json | 4 +- ...n_ingot_from_smelting_duralumin_blend.json | 4 +- ...um_ingot_from_blasting_electrum_blend.json | 4 +- ...um_ingot_from_smelting_electrum_blend.json | 4 +- .../guide_from_blasting_iron_spike.json | 4 +- .../guide_from_smelting_iron_spike.json | 4 +- .../lead_ingot_from_blasting_lead_ore.json | 4 +- ...lead_ingot_from_blasting_raw_lead_ore.json | 4 +- .../lead_ingot_from_smelting_lead_ore.json | 4 +- ...lead_ingot_from_smelting_raw_lead_ore.json | 4 +- .../recipes/cosmere.items/metal_vial.json | 4 +- ...nickel_ingot_from_blasting_nickel_ore.json | 4 +- ...el_ingot_from_blasting_raw_nickel_ore.json | 4 +- ...nickel_ingot_from_smelting_nickel_ore.json | 4 +- ...el_ingot_from_smelting_raw_nickel_ore.json | 4 +- ...il_ingot_from_blasting_nicrosil_blend.json | 4 +- ...il_ingot_from_smelting_nicrosil_blend.json | 4 +- ...wter_ingot_from_blasting_pewter_blend.json | 4 +- ...wter_ingot_from_smelting_pewter_blend.json | 4 +- ...er_ingot_from_blasting_raw_silver_ore.json | 4 +- ...silver_ingot_from_blasting_silver_ore.json | 4 +- ...er_ingot_from_smelting_raw_silver_ore.json | 4 +- ...silver_ingot_from_smelting_silver_ore.json | 4 +- ...steel_ingot_from_blasting_steel_blend.json | 4 +- ...steel_ingot_from_smelting_steel_blend.json | 4 +- .../tin_ingot_from_blasting_raw_tin_ore.json | 4 +- .../tin_ingot_from_blasting_tin_ore.json | 4 +- .../tin_ingot_from_smelting_raw_tin_ore.json | 4 +- .../tin_ingot_from_smelting_tin_ore.json | 4 +- ...zinc_ingot_from_blasting_raw_zinc_ore.json | 4 +- .../zinc_ingot_from_blasting_zinc_ore.json | 4 +- ...zinc_ingot_from_smelting_raw_zinc_ore.json | 4 +- .../zinc_ingot_from_smelting_zinc_ore.json | 4 +- .../loot_tables/blocks/aluminum_block.json | 3 +- .../loot_tables/blocks/aluminum_ore.json | 3 +- .../blocks/aluminum_ore_deepslate.json | 49 +++ .../loot_tables/blocks/atium_block.json | 3 +- .../loot_tables/blocks/bendalloy_block.json | 3 +- .../loot_tables/blocks/brass_block.json | 3 +- .../loot_tables/blocks/bronze_block.json | 3 +- .../loot_tables/blocks/cadmium_block.json | 3 +- .../loot_tables/blocks/cadmium_ore.json | 3 +- .../blocks/cadmium_ore_deepslate.json | 49 +++ .../loot_tables/blocks/chromium_block.json | 3 +- .../loot_tables/blocks/chromium_ore.json | 3 +- .../blocks/chromium_ore_deepslate.json | 49 +++ .../loot_tables/blocks/copper_block.json | 3 +- .../loot_tables/blocks/duralumin_block.json | 3 +- .../loot_tables/blocks/electrum_block.json | 3 +- .../cosmere/loot_tables/blocks/gem_block.json | 3 +- .../loot_tables/blocks/harmonium_block.json | 3 +- .../loot_tables/blocks/lead_block.json | 3 +- .../cosmere/loot_tables/blocks/lead_ore.json | 3 +- .../blocks/lead_ore_deepslate.json | 49 +++ .../loot_tables/blocks/lerasatium_block.json | 3 +- .../loot_tables/blocks/lerasium_block.json | 3 +- .../loot_tables/blocks/malatium_block.json | 3 +- .../blocks/metalworking_table.json | 3 +- .../loot_tables/blocks/nickel_block.json | 3 +- .../loot_tables/blocks/nickel_ore.json | 3 +- .../blocks/nickel_ore_deepslate.json | 49 +++ .../loot_tables/blocks/nicrosil_block.json | 3 +- .../loot_tables/blocks/pewter_block.json | 3 +- .../loot_tables/blocks/silver_block.json | 3 +- .../loot_tables/blocks/silver_ore.json | 3 +- .../blocks/silver_ore_deepslate.json | 49 +++ .../loot_tables/blocks/steel_block.json | 3 +- .../cosmere/loot_tables/blocks/tin_block.json | 3 +- .../cosmere/loot_tables/blocks/tin_ore.json | 3 +- ...copper_ore.json => tin_ore_deepslate.json} | 7 +- .../loot_tables/blocks/zinc_block.json | 3 +- .../cosmere/loot_tables/blocks/zinc_ore.json | 3 +- .../blocks/zinc_ore_deepslate.json | 49 +++ ...copper_ingot_from_blasting_copper_ore.json | 9 - ...er_ingot_from_blasting_raw_copper_ore.json | 9 - ...copper_ingot_from_smelting_copper_ore.json | 9 - ...er_ingot_from_smelting_raw_copper_ore.json | 9 - .../data/forge/tags/blocks/ores/copper.json | 6 - .../tags/items/raw_materials/copper.json | 6 - .../java/leaf/cosmere/client/ClientSetup.java | 1 + .../java/leaf/cosmere/constants/Metals.java | 7 +- .../datagen/blocks/BlockModelsGen.java | 22 +- .../leaf/cosmere/handlers/ColorHandler.java | 4 + .../cosmere/textures/block/ore_block.png | Bin 2946 -> 3829 bytes .../textures/block/ore_block_deepslate.png | Bin 0 -> 3829 bytes .../textures/block/ore_block_tint_overlay.png | Bin 3013 -> 3049 bytes 182 files changed, 1001 insertions(+), 492 deletions(-) create mode 100644 src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json delete mode 100644 src/main/generated/assets/cosmere/blockstates/copper_ore.json create mode 100644 src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/block/ore_block_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json delete mode 100644 src/main/generated/assets/cosmere/models/item/copper_ore.json create mode 100644 src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json delete mode 100644 src/main/generated/assets/cosmere/models/item/raw_copper_ore.json create mode 100644 src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json create mode 100644 src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json delete mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_raw_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_raw_copper_ore.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json rename src/main/generated/data/cosmere/loot_tables/blocks/{copper_ore.json => tin_ore_deepslate.json} (88%) create mode 100644 src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json delete mode 100644 src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_raw_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_copper_ore.json delete mode 100644 src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json delete mode 100644 src/main/generated/data/forge/tags/blocks/ores/copper.json delete mode 100644 src/main/generated/data/forge/tags/items/raw_materials/copper.json create mode 100644 src/main/resources/assets/cosmere/textures/block/ore_block_deepslate.png diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index abc568851..89de4bcea 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -1,47 +1,56 @@ edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/aluminum_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/aluminum_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/aluminum_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/atium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/bendalloy_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/brass_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/bronze_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/cadmium_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/cadmium_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/cadmium_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/chromium_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/chromium_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/chromium_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/copper_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/copper_ore.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/duralumin_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/electrum_block.json 7dfa2fadeaa6bc2b99a30823035a6c970054afb4 assets/cosmere/blockstates/gem_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/harmonium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lead_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/lead_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/lead_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasatium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasium_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/malatium_block.json b7fea0968724d1ad3bb8d3eaa893667b4899d744 assets/cosmere/blockstates/metalworking_table.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nickel_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/nickel_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/nickel_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nicrosil_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/pewter_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/silver_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/silver_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/silver_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/steel_block.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deepslate.json edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -b51a1c5ceb343b5a38def33c6ae04130c6daa3a3 assets/cosmere/lang/en_us.json +c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json +8604de265c009ef0d2e92fe8ce931fdc8910db61 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json 645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json +6ebe4a19ff7253152f2af5ef24e9c0c26bd6a10e assets/cosmere/models/block/ore_block_deepslate.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/aluminum_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/aluminum_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/aluminum_ingot.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/aluminum_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/aluminum_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/aluminum_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/aluminum_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/aluminum_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/aluminum_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/amethyst_broam.json @@ -85,6 +94,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/cadmium_brac 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/cadmium_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/cadmium_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/cadmium_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/cadmium_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/cadmium_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/cadmium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/chromium_block.json @@ -93,6 +103,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/chromium_bra 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/chromium_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/chromium_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/chromium_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/chromium_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/chromium_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/chromium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/copper_block.json @@ -100,7 +111,6 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_brace 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/copper_ingot.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/copper_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/copper_ore.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/copper_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/copper_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/diamond_broam.json @@ -148,6 +158,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lead_block.j 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lead_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lead_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/lead_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/lead_ore_deepslate.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasatium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasatium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasatium_nugget.json @@ -164,6 +175,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nickel_block 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nickel_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nickel_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/nickel_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/nickel_ore_deepslate.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/nicrosil_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nicrosil_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bracelet_metalmind.json @@ -183,7 +195,6 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/pewter_spike e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_aluminum_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_cadmium_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_chromium_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_copper_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_lead_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_nickel_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_silver_ore.json @@ -199,6 +210,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/silver_block 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/silver_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/silver_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/silver_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/silver_ore_deepslate.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/smokestone_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/smokestone_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/smokestone_mark.json @@ -216,6 +228,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/tin_bracelet 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/tin_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/tin_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/tin_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/tin_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/tin_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/tin_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/topaz_broam.json @@ -227,6 +240,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracele 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/zinc_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/zinc_nugget.json b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/zinc_ore.json +0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/zinc_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/zinc_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/zircon_broam.json @@ -292,135 +306,131 @@ fc0c5cebe021fb12da68f8069578aa64bb21e1b2 data/cosmere/advancements/recipes/cosme 5e5b67da702e9f3e45c4b7f58673a1f3720abb3e data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json ff3ca6578bf8fabb04e73867e9c07099a4dbf244 data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json e3d9cc0a78b746e7276828ce421cc42e513cf86a data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json -947d18a8ccbb5ecbcda120ae9f4f83f6884ea45d data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json -5f6cfe0b6dad06292b4945f70d46a1e2cd9690f0 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json -003a9b027799621bc9625c326bc59e0aedc924ec data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json -b3780fed9d3e05e18477f6cee095a7abcce5257d data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json -85d1afaa1aa4f0ad5198d18c0b1933048a2b1c11 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json -2322bb96abae9d6eae2afc33e439be84b5b7c30c data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json -fb74228f45bdb67c7bee84096690d9f5ebfbcb44 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json -ef6073e3983c6595626307218729d225d0b067ed data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json +a308ab91def7c3c97e4b49a1afc660ecb0906a5e data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json +5ae5c58383d7818bdeaae21e08718e2ad1e65618 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json +a53c2e5a3f22554699d7ee2c4820415fec4db002 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json +92e6fc9be429352f8b6d9d3d3824502bb593eff1 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json +37082fa653105b32fdc2502abb83771593107087 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json +55fb27a3187b787442055164ed96792bbfbf95f1 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json +ce58e870afa308b87b13964ebad111bb540b46dd data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json +10f184e88e0a43c9a1fc691136727328767ea175 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json 498460970397bf9ad35d0f37b0d85bdb7d420a80 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json -a43380c743d681c3ab827682094f41593400b95a data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json -dc00aed08b52b55e8eb806ed5d03ffd40641aa69 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json -50af84f6b63bc103c6c120062b9848a97bb93895 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json -41b77c92ed79d8087f823c310fb9dc44ba88736c data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json +57313f38a4cc5235f2e10f348e1e8c32f7f12e9c data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json +57d57086ae96ebab414fb3da3a6118a1770f8927 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json +bc16329497e31f3f9a8d418ef6cd496adce79fd8 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json +b07ecd64d27bfa7d98dea19e32a6771759f9411b data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json 278acf388fbb8defcc88abb3e456865342d2427a data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json 4b3c7c7c54c0e335edccf441fc878d1df35f4747 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json -a54d72d85ca2e608168c8490c390eb3f88424e84 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json -ac261834bcd682d51216c6a9127da1f6bc9afb51 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json +746d1fcb063456f94cb97a2a28cb6a67b4d6258d data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json +d865e7347222c8973bf3b0cd2cdc1647090c678a data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json 7d9fd8365626564b292c175aab892a4622fc1e87 data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json -4a29abf24948e999d678413aa9f33019a5edf366 data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json -3068405a2f890b5be30dbccc49b46229efdca64b data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json +f4de88a5b5ce26f24a499e38491a21accb47e4ce data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json +42ece9108a5d9c8818f73f8860d51dcdfc8e7ea1 data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json e677c51a78bcd3f261a6618e4b5db95c6a38e9c5 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json -70949a051d9bcebaabd41ae97836092a5ed27915 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json -a74cb1ccac57a84e6200b42da3f1eafeae6e1d35 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json +294a9dcad65968491c6f7d638e8cdeae078ecd1d data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json +252cc9499a59787bf4d7b42bc4b766552aa5c556 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json a62aec2e815bd82968c928a02dfff6dc1197a8e8 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json -85b07e41b46d538c28cd2252fafd218abcfde4a1 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json -52a7854e599b2170852a596b4561774662e2a649 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json -439216f17ffb7a8d4d00f360c50c9039bcd34758 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json -0424ae471fb93f02486de783c8298f480503447d data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json +2d98569a2174874ecf10353c427f7f3a1aff7b63 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json +a4ababb855c21c0c5142ed943db26e00fd8a6fc9 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json +5ffd646c468f3f4e2d7af9c1193f55fc1db2ab5f data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json +76345cd858b49b77ce39cf4c8fd2720748673cee data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json 15e0a16a95f2e8d98c05d5aeb3d0ab41182a0788 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json -f72d43f41db4916bbefa0a896ac0ac1d402239e4 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json -fa156b51fc31b7ef0a98617e4087807c0429f2ca data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json -2b24cf271fe4f40aa136644e3ea8c03a87c3b602 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json -adadb2b149d2107ab0499119cd894658733cf1f1 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json -08aabeae9c29fd9ec05bd01b689ec0eb8c8486d2 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json -d0fede2b4e62b1ead6e3ff8bf2986ace9ec48534 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json -60a6694558d7f92e8491a378bcb48bb92e335697 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json -ee35012373e3a6697c63f56cb861d170ae06e544 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json -c8790f8bc9afa9f5104df0b7a19d0a615bda3896 data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json -925bfbff7ec91286cb98d56029f673b33828f27b data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json -9096f191d09d771f8126a061aacd1c87d7b8363b data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json -67b258cdf0a105b3d952e67d02277e75a17eadee data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json -57ffd18848f9a2e9b523eb4d5398dab433b8b430 data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json -ce91872b772658046d9a6aff188ae58feb016f8c data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json -2ff79186cb3964041394ecbf6db41afef60b4c13 data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json -6a23ef3e2b15994dd50cec88bb799bf9a33b776d data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json -be77da6336ee435698443c401511a25a4b38133c data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json -68f5fa1fdad861cadbec51b184ef20058935b5a4 data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json -f69a9471f6dbe73b8f604541b947c9fbde39d621 data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json -589e5795249758e68e67d490611c320763fdd72d data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json -d38789fd0a23420911af2d7d8ceed1a528bec950 data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json -1d1510f53ffe392c381c1f5151b66e2debfc3f4a data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json -70f44b2be4628409ea822d17d9c22e46e0c68cd3 data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json -ea70c76238f4bbee4981236fb6da62cbab80176d data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json -56adba4451a48b99c1781cb648efdad692da77d3 data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json -edad1520149bc1f818a6f256be9ac61312b2beea data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json -fd48c4483f8bffc24ceed9e2661c4655237acbe2 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json -9ad18e7bd42adbcee49bdd3d91c1a9143500fa3e data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json -8947b86d1512cb38da5bc1040b2b7e36ca049d8f data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json -ed9052c34cab0715cafbddb690d49dfd5d703612 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json -b451103b08704b0aa0a24674a6b5be4528f41881 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json -b82a5cc5535c428651a564013c3a3a9fadab732a data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json -257a55c42cba3ffdd4002658645b169c80ee1f8e data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json -ccf8f567ca1543e5a08d4deb46a3535ed1519765 data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json -0482136c694f4b11894312b323dbbfbf6230a186 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json -1635f6ef27ccdc14e0b51afc7e732ad579b205e7 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json -1a40f55b0ff37083ce48ffacd3281f1e04e2faa0 data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json -6a0fdbf9e59cf7412cfdc97793cc1eeac3a3c81b data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json -a96f1c40550dd69a43ffaebe1e4f81afdc462264 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json -97de1b402ee601b4d01d01a4227c40d7f6b33a34 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json -6ce9b527a91f5031c4c96d812064a514fe3c017c data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json -894a073c9d269997fb45279921dc417e26def84a data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json -af127338fab468b2d537ada68def812e90779b8f data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json -c2c3061b52409a3442419572c0ace777a107e57e data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json -0bdf02eb18717f1eb790c32e9898689c85a579ef data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json -b24a1aaec03be8b02d861d5b8e516af600a87107 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json -2aa2d7a890b9433f407dc521d54dc7cc25bfbf97 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json -040be0f243e6b33254bd0e62c4e678bd8c59fc34 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json +b6407cc8f077f9805e30b706d36212fa44c3348f data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json +fe03508120fd0cb13ba59e083704f9f079ac03fe data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json +ad10da56e6e374063b332c2510eb19562ae7b784 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json +d90a2482e1cb99de9f37e33eaec1a30a4c54eecd data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +1906fee419465631792847e292d6e6b4436cbe14 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json +c7dd1003af20b261dd7f64218501c009ab7f891f data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json +4e8e416484e6c30bbe310ce2cf98a3ace0f6e5b1 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json +825af8c776de957e0aebfdca699203da736bfdab data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json +3d90e136728d602c2f802557fceed7e31e41d292 data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json +00b075d82d4a7cedc6272c6c7e7e11e92d08c5dc data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json +f1ce5f01c530e399f4732117e1310624cede0cf0 data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json +828c8ae4a604418600ac1131bb3ccd5a20f4ec2b data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json +99a1921ca914e452ce1449688e5c5f1e9cc3c594 data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json +a6584554a4a66cd9029ae6fb3ebdc609a9f6ce4f data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json +0c02985419a57659948e7efee559cbadeebe9a7f data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json +4818e4fb6409e596e1176b5cd67e9ad11b541012 data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json +18e84e79750ec34ec476612b0b11af742292ccec data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json +583de5444bf10be0641371369a934bf02940a299 data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json +1112acd9bf0352a10861737e37e73cefae7ae5e6 data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json +4fc0e3b4491126308b77f5b9f7df99fcbc165b55 data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json +aeb38a1343d6d9d959e8990992b0ee80919f52e6 data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json +10657cb1ccdccbcbc4453eeecdbf80b067c455b7 data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json +773c490f401831c502e5bc8aec326cf53e8e881b data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json +fb30b27cdb96910be54c24f68afe8b05bde770ae data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json +c169dcbd6d99b4f799d9f4fe4e85d3e0932bf59b data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json +1b5cf3c5dc21160f07e18a053ef352ca5f08626e data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json +8f7f5d2a226da7d5685d9e01dd8e66b3811ad2b1 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json +d356f257dcae900845528db93c701e15b2396623 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json +dff4a8bc7727df0ee55ecedb3c24f6518fc6b93d data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json +30ba351bcd852bb65f2fc26417c0d9a33fcb66fc data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json +52e1a03a0e3e094762114feb8eddfbec6199b385 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json +3f7c516be68a14d57170dd8a11cce2ecd6143c7b data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json +47a9209ba0a6b9c7a4c17f2a41c081eb0748bfdb data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json +55ed3c56dc2d2bacd8c1fb1f0cab32247cc870dc data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json +7a844bd723ecd471e5d743af0cc2fc7db33849dc data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json +0b34a6dee5c22bfa10adfd2f76d00f02ff01efac data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json +90edf1da64ce400fe0948b93702d70e70baa0d7e data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json +7245ce5fac5d635c5ba4da954489a084de63536a data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json +1b67a1196be1a6687a68b20fefbfb203fe41c228 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json +00791acc91e0fb97b4df56c9df0f10a44bbd14ff data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json +5c7bde9d220013df692d9071b5685658df8ad914 data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json +14dc0b2989d1c4e57e472c49e3090c38cd39bd43 data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json +a258ff849a5a382739fd46d22d9b978cdfa73527 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json +d9c2f7bd8819a11f7fd0cf1b564267fcd2d6733a data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json +8b96aee092492f9e286a0ca874ee77de32da2268 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json +bfcebca9d6abdf86b7d02d806510ec40ff4973e2 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json +68d28634f8d3bbe0807c093978b75d2db8125852 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json +f0ff7f621ceba520bc0f8e688e1fb32a5e2997b5 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json 85110a1990240eaee9a25eed3ca3163a371e5d07 data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json -df149e4f7f767a6612832d2dae6772f47615cc22 data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_copper_ore.json -62d09e0e7eaef22239d1bf1e4cac5b181551214b data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_raw_copper_ore.json -734e67e3a4d07fe0acdf65da32c8ab5b88f107db data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_copper_ore.json -f5aaf5bbdde85e71f8c11d1029ed5c8bcad70232 data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_raw_copper_ore.json 13558b45b7550fa4ee9ecbc154e948ff1908f78b data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json -36ad04869fc23f6f8596db0589fd4415039dde15 data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json -f00b01230d0e87f52957ca2e29a5ce95e58eda2e data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json +213768b6cbf2ee13c492d138e04ac9f89ca6352d data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json +37ad0711e3a852ef51cdbf3b21ba2d522b22f66d data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json a751764013ba0b2cb0af715b63d9429d7be3c2de data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json -7ff52f0767cfee321a64289a51d341cb358bbaa8 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json -5bd5a3ebb6128d29ccb1fa2b0ff9631d6b40b55c data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json -6f3a2b6dec56215bf9330c7fcbce1b49d88b2d88 data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json -b65546b3e2b783fddb4cfbec78ea9170422a6e82 data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json +006a6906a57b82450ff17bdf275bed4a7d4a8faf data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json +84390c1d9f4b79bc50b1bc766f544fe73e9ad6b2 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json +abcd5dfd970b8c7c0692bdd94c8ba597731c9a7e data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json +6be53fb641540189a6c5200a0390e37d057fa52b data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json 0d759206ad2c38f61db73d450fec0914ff7103e4 data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json 64ffdc60d4b74f42ca92fa5145969212bf4e8161 data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json -6004d87644e726ab6794e56d3efbe81b7427b702 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json -760175b716f9d1c79c363ddc8b6e00ccb4ee1f85 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json -6b0b005c2a1581b11e676fcbc1090b2fd4b850b9 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json -baa7f3b501517e455124c2924e70dfa3e0098038 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json +a7f1f7d1229d55c86ccdb3e699c8d24739a9620c data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json +a3e7b99b30aa6cb1742e7803c9b9d042b518e4d9 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json +5e9c660bec16103ec3b73dc67294636e7d55c8a3 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json +cf54743b85bfa183bb7a2a2c0a566fcfdc213905 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json 448a1cd1844a118af8aecb02f9ebb9d3dd1cb0e9 data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json 61aa5a2b15b2ccfae34987801d1c8e9bdb832198 data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json 288bbcbd1a7b91dacd8add31ee3929840944c638 data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json -365e5bbce4bca810a5cc06b888cc26855419c617 data/cosmere/advancements/recipes/cosmere.items/metal_vial.json +3768414e838a9356dbcb5909df3864a52e8c17b9 data/cosmere/advancements/recipes/cosmere.items/metal_vial.json 833cda8cfc15ad61c66246c8775b0caa85219f92 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json -f2931a212e2a5727f278450d979e3a52756e6a6a data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json -ce346f1ff7b526c1322f45b064ae2b977f6baacd data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json -a05efc46ad1c4850f829775de8f70dcd607960c1 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json -202202d4739cbafc2d5e4f30b39f6e7c36fa0fff data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json +59f6265209536873dcb6b193464de61cc2ce8b70 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json +6d4341e3c5dd3cb6578d030bb2422de122be602b data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json +9ed0e437e79c595594b66c02ea3086c60b1c2a0c data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json +362865676310698d053cb8c5ef736ae69d020cc0 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json 35e2626c555ad498d40a7dab90131f1c4dd4592c data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json -c0822e75521d50dbe42eb71f8b81447982b8fe39 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json -17d33fe85e8105dc5c1f976d14bb8c2fde9e5b1f data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json +e446a147cd629e7126a21ea2dcf746a2dfbe4fad data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json +5f35f0cf3e3391387f39036acc7e65c7ca017f9b data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json c4f1702ab8d8735505a4469041b209404f563d51 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json -5e547a672544fa1ca7ee9f2c6de9f30b032ff286 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json -ec98f4c2de8ffacfd30d282d43bd7da247f9c7c7 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json +5ec56096adb1cda5fc9bd3c660051678d9990f86 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json +d28732fce43a94366350099f031f149b2506e3b6 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json 96f532e960f3c275398f416bab0c44ba3e6ad56d data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json -7b9c2f1e2c832328c18ce336e883b5f2f773ffd9 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json -ff0f043a23fa5eaafde7865cf309855cb330a8db data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json -90df5b49028934826976cb95c2bef40c04f12cff data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json -526e53c32f511334ae698502642678eceaddaaee data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json +86cd0fb74ec78649bca436b42edbfeac01ecd5ad data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json +7049e0b81c2df2c3d33f3d33025f35651a28de72 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json +f8cd6679175b36c4d23c600171b6f40270593268 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json +099f2099bb692781efbf68ccfbd0cd150355dac8 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json 4e5c2b829f0c867234e2b97c6e2f25387f959f2f data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json -03a5d74f588f7c271215ff64d6ebf91a2735500d data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json -a08ba448690cdea66656a842e408f33de9a6a640 data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json +397d18457a6bd3616b09b1262e6c156d2d5922eb data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json +3ecb41cd86f63c0efe70277e7af035e06f275cba data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json 87b445c4d65319cf91c4fb1acb181afa9a13563a data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json -efc7832a654dba0bbf03e8e6e30fc582cb38a505 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json -5bfa7fedab06a69379e9928b83aa3429d9679898 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json -8b0b950485c10b37bd3844ef382d281cb05dd112 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json -b560174b812438a9f695fa0b6a9725f760e1af00 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json +5e3c7f63f37adcb3c0edf4cf7aa6b8de38054489 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json +0d8b2361b83da1814ff255bc398691b1976b1a01 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json +b8a3509750e3f6df7e9b0e967dcee9151176b597 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json +1eee923a87189b33419ed27277f48796b178614f data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json 5bbcab5036b3c9533b48577da2f0837ca5c3cb03 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json -0a2cc74003e9ff542869b7819a62be10f2724177 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json -571744ba3c1cbd516782e6697be855889c187e62 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json -226176a8ec72213ed11519700c5ead9c3530bc76 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json -ce687a7ea7eaf89fa121327fbbd0b7a4a6750a0b data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json +1075c96ddebfbfb03d1f8ecb857a519c3afe71fc data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json +47c292abad1f1e29444d9daf356147826f3aa7ff data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json +22e1af6e439e29e0e6d5c3012acfc9873ca775e2 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json +1bedb70af46cd4881e7229ed383bd3770e73c9a6 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json 3ef6828e5cdf771f02ebe36ce09368b4a5926eba data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json 7e668fac713e52759565d9f58f205963e9ee4d00 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json 0fc9bffd253d78d8d142ab0d3ade16e5c5a65a88 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json @@ -490,39 +500,46 @@ a8921f36242a162e5d0e94bff0c632e20b531991 data/cosmere/advancements/recipes/cosme a60d00a7b0f01514f83986fdc66d2d0d58cd5e55 data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json 7af20519358128afc953b8aa41501c80030d0def data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json bc6447b7fcdeea5ed8fae4d9873a6a2e68b445a6 data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json -08b90675fb50a796fb5392491e632cf106740b5f data/cosmere/loot_tables/blocks/aluminum_block.json -5952fd0d7734c39c968923de109a3d5b06210dde data/cosmere/loot_tables/blocks/aluminum_ore.json -ab2cc611a239262afa9346636821e0be41509db6 data/cosmere/loot_tables/blocks/atium_block.json -aefddbf7a50beb09c3b186e462b41f32cc0a4f3f data/cosmere/loot_tables/blocks/bendalloy_block.json -df80c2e7988b8becf0c5c0c3c097ee28663342ad data/cosmere/loot_tables/blocks/brass_block.json -bdba4e1594cdd4f82ae2f6dc85df181b146cf76f data/cosmere/loot_tables/blocks/bronze_block.json -233de3a9f131c7a59829e66a5e182d0b19bca4d1 data/cosmere/loot_tables/blocks/cadmium_block.json -c2a018bb912a9926ff537cdc2c5be90943865bd8 data/cosmere/loot_tables/blocks/cadmium_ore.json -de66daec7b0b10e3990407f11c2e58d853f7312f data/cosmere/loot_tables/blocks/chromium_block.json -3d618eb93a360041c2c5276b8e4a5b4ef732047f data/cosmere/loot_tables/blocks/chromium_ore.json -7984f63a14219d935bace8eca8de89f56ad73060 data/cosmere/loot_tables/blocks/copper_block.json -5aaadc2fed3a2ba646e83590598713af5310cac2 data/cosmere/loot_tables/blocks/copper_ore.json -6a98aa4340f0952f9216441959fb3f85795c93d9 data/cosmere/loot_tables/blocks/duralumin_block.json -67328ba357834bbf6624e2e9252bc7656b36c732 data/cosmere/loot_tables/blocks/electrum_block.json -ae550f2e70aa654bd18f3839c2e6ad666ec210bb data/cosmere/loot_tables/blocks/gem_block.json -07a17dc44cd4680664696917672410ec623bfbbd data/cosmere/loot_tables/blocks/harmonium_block.json -32dfb9a5f716d719a23c0231b9fe53d0476d8aba data/cosmere/loot_tables/blocks/lead_block.json -ca0808cbb0b0f99019748c3506c876b2f497710c data/cosmere/loot_tables/blocks/lead_ore.json -ed087df0e93d4725cd15a549e542c6d5a2089dce data/cosmere/loot_tables/blocks/lerasatium_block.json -f296d224216142d13dfcc76dd2db5a5fdc3e8992 data/cosmere/loot_tables/blocks/lerasium_block.json -5ee2891109c30cfdea86f9cdb3c48834c8a6ffd6 data/cosmere/loot_tables/blocks/malatium_block.json -919b6f5a4e51c6f253bb6683da288f51d1dc1898 data/cosmere/loot_tables/blocks/metalworking_table.json -17c8511131913ac28d55b6511bc5867762fbd3d7 data/cosmere/loot_tables/blocks/nickel_block.json -a0c95aba2004a8460ad789e320f7ca095cdd174f data/cosmere/loot_tables/blocks/nickel_ore.json -444342885d79187e98bcd6a940843760c93b1c04 data/cosmere/loot_tables/blocks/nicrosil_block.json -f2c40b7fa056c419d6b5a6b8280257bacc56c0a9 data/cosmere/loot_tables/blocks/pewter_block.json -862eae3d4a288e4c1bac4530c93168c1c4c16de8 data/cosmere/loot_tables/blocks/silver_block.json -8da4ca604f663f4a9831925455a722a43b6f6235 data/cosmere/loot_tables/blocks/silver_ore.json -b9543382e9ce98cefaea9ba5fc7fda19fdebb73a data/cosmere/loot_tables/blocks/steel_block.json -0b59877fbebd282dcd8927e913cc85137491acd6 data/cosmere/loot_tables/blocks/tin_block.json -74a449937f84466b8b8796cccc115a632fa194f7 data/cosmere/loot_tables/blocks/tin_ore.json -05d8a0b0c9c41fdfda2aaa7132a01fce3f94db1a data/cosmere/loot_tables/blocks/zinc_block.json -f64f747e9fef16cbd9f5fda5d5bea0e5c9073b96 data/cosmere/loot_tables/blocks/zinc_ore.json +eb8a729e9515cb8dbae80c9bfa2304d5a399432f data/cosmere/loot_tables/blocks/aluminum_block.json +0c71c46fe0955e21dfa431956ae2a8f048c7973a data/cosmere/loot_tables/blocks/aluminum_ore.json +3b5a0a9bb5e5979198c4a3594e1223d349b9926d data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json +6209f9ab87aacaea97d3f9949f59acc2aef8e9e4 data/cosmere/loot_tables/blocks/atium_block.json +eee9fafd4517c3682dae995db160656ddf8d86a1 data/cosmere/loot_tables/blocks/bendalloy_block.json +f8b7da30bf2b818f9239e5872d8ff52dce37fb63 data/cosmere/loot_tables/blocks/brass_block.json +739649c3b63fb2b87891f981332bc4787d6359ea data/cosmere/loot_tables/blocks/bronze_block.json +8ae6ac62a03b0693552c518cf14b2d5bf11e5477 data/cosmere/loot_tables/blocks/cadmium_block.json +4a88036e83b31a42ef4e82875be0f769f9c79b35 data/cosmere/loot_tables/blocks/cadmium_ore.json +76c8c0ba5f0ce09a5b8f1cad070add2d036b61cb data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json +61241232f52ab956738fa7d4037089ee11a58d31 data/cosmere/loot_tables/blocks/chromium_block.json +8225b07d89e76c16a903dea458454481036b0612 data/cosmere/loot_tables/blocks/chromium_ore.json +a44fc894459df12c4807e01576d53c9e8f6ffb29 data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json +396762d031f624c93cc270a768712b0c24e93abf data/cosmere/loot_tables/blocks/copper_block.json +30f4a97064050c40578170d17311417aba225918 data/cosmere/loot_tables/blocks/duralumin_block.json +0fe6b6b865cc6ab7e4727b5a6209060b8b8ef49b data/cosmere/loot_tables/blocks/electrum_block.json +74a65dc0c66774dc60574a65da14c3c8658da660 data/cosmere/loot_tables/blocks/gem_block.json +046e9038d040c0b5af44ce790587164126fcc8bb data/cosmere/loot_tables/blocks/harmonium_block.json +2f55face4a0a3b1f04d91c8595dbdc76ac6345eb data/cosmere/loot_tables/blocks/lead_block.json +ed1864315fa976eb4bc7964eeafb5824629a631d data/cosmere/loot_tables/blocks/lead_ore.json +f9d4c97fd4c939024843d4bbab0159dfad9495a2 data/cosmere/loot_tables/blocks/lead_ore_deepslate.json +d7f6690c052f57b14dafe09c11ccdbb30ae3d80c data/cosmere/loot_tables/blocks/lerasatium_block.json +a22907dde8c634e49d2da81931260230b844f2a1 data/cosmere/loot_tables/blocks/lerasium_block.json +93f3833d2717536bbb70ddd44d94dc0654fbb6d6 data/cosmere/loot_tables/blocks/malatium_block.json +f9b47d04b33935ec832030bbcf067e5d82325f3f data/cosmere/loot_tables/blocks/metalworking_table.json +216226af7378b43fca520ebd5fe2e36c6f354fec data/cosmere/loot_tables/blocks/nickel_block.json +b6134bc4f17e5486db0b97b68a51bfac6f4d49e6 data/cosmere/loot_tables/blocks/nickel_ore.json +d1342b9d90134eefa5b6ce0237527164561316b7 data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json +778ddb7f8b6cff957782e912b4a415631a82fbe1 data/cosmere/loot_tables/blocks/nicrosil_block.json +05b89d403b50ca7fc06999ca815d2b3380772a6a data/cosmere/loot_tables/blocks/pewter_block.json +10d3a0698ce2fad0c45c98b087826c46f3a953ed data/cosmere/loot_tables/blocks/silver_block.json +490a1faace581aab3d8a599146b1f216fc4f6d04 data/cosmere/loot_tables/blocks/silver_ore.json +190379f50e30f62141ca7c335897dcbcf23be1f1 data/cosmere/loot_tables/blocks/silver_ore_deepslate.json +690436ad2c3d626c970cc2d2d37385c41397ac77 data/cosmere/loot_tables/blocks/steel_block.json +a5ec22b45da91060e7e0e552d853b21c85b64759 data/cosmere/loot_tables/blocks/tin_block.json +fce8cb6a729d5be9268ffb478049fdc70de504b2 data/cosmere/loot_tables/blocks/tin_ore.json +72d47ec4ef7a560e75012121225ecee614284fe3 data/cosmere/loot_tables/blocks/tin_ore_deepslate.json +93d9441ed0218c63d7f39970762e664e3d39a754 data/cosmere/loot_tables/blocks/zinc_block.json +cefe179cd977a02ea0509418148726158976a815 data/cosmere/loot_tables/blocks/zinc_ore.json +344624ccff5d30da8bb1a30c932f384f656ca7f4 data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json edfda8b8754187d7483d63fb0a5eb694d48948ba data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json f95b389fa24ceb0f69609c04812443232ac5e96c data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json a1ea0b0941a7aa11e598176f56b6c761626940e8 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json @@ -692,10 +709,6 @@ c340a6967b06c13c39591e00f66fcf6fc83f22cd data/cosmere/recipes/conversions/steel_ db44dca11fa6ca65769adc50e14e6225b38cdb8e data/cosmere/recipes/copper_block.json 099a8ede1affebe67611cd5861d5728edc6ed467 data/cosmere/recipes/copper_bracelet_metalmind.json f784fbb6a27286794b40b975a1a4fcb10c5885c9 data/cosmere/recipes/copper_ingot.json -770c48807a8f867632f2506e0e4350bcdea0a30a data/cosmere/recipes/copper_ingot_from_blasting_copper_ore.json -60bc782c1ef8842c1f80369044252712dfdab0c9 data/cosmere/recipes/copper_ingot_from_blasting_raw_copper_ore.json -ef2ffbd67afba4e5b66c4ab468868041f2ac027f data/cosmere/recipes/copper_ingot_from_smelting_copper_ore.json -f1a312d31fdcbe6f99a132e4a980051559448756 data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json 2148db355285f3c5c75c412cdfbbf3aa49045986 data/cosmere/recipes/copper_necklace_metalmind.json 471ddafd08611bd63733294974c863273b1ff2b1 data/cosmere/recipes/copper_ring_metalmind.json 78ac5ff0d84062b8f26ec6da3a6a37e7392f9ec0 data/cosmere/recipes/copper_spike.json @@ -807,7 +820,6 @@ a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json f5b416f3fe61239a50d82fae0dd54f5e8b4b0df7 data/forge/tags/blocks/ores/aluminum.json e22f37d7af5f06278e822a4904a89b450b64e958 data/forge/tags/blocks/ores/cadmium.json 4b9f571ae1e74c979d8a8dd634fbb50af0c744cf data/forge/tags/blocks/ores/chromium.json -78c5c2a88835e193bf54170db74e2314e57a53d3 data/forge/tags/blocks/ores/copper.json fe94054a6e0bb1d0124667b81f03a4aad73a113a data/forge/tags/blocks/ores/lead.json 46a41519749ba29902c4c73f82632fce0ba2be79 data/forge/tags/blocks/ores/nickel.json bba17dc9bc1f143dab38885c0731c80acd68c01e data/forge/tags/blocks/ores/silver.json @@ -899,7 +911,6 @@ cee76efe589672fd718ee3c09342ce3b84c6cbbd data/forge/tags/items/raw_materials/bra c4765f0747da1146d378568813a6022750baeab4 data/forge/tags/items/raw_materials/bronze.json ff2b08cdd1bef52a34eeaf70906b923a75a1ba37 data/forge/tags/items/raw_materials/cadmium.json fad25922761338ee51148b75c1f9b4a0f55c832b data/forge/tags/items/raw_materials/chromium.json -082b8cfd85e7475c8c8e30875b5dcac92e429cf2 data/forge/tags/items/raw_materials/copper.json 723ac5ad1792eea5a6c7d46b2c803b098302a8eb data/forge/tags/items/raw_materials/duralumin.json 050c4e42f992c2e14c6aa47574fe23ac39a37f8c data/forge/tags/items/raw_materials/electrum.json 5de0cc5f0733376a7fef274a2e60e391ea2aec1b data/forge/tags/items/raw_materials/lead.json diff --git a/src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/copper_ore.json b/src/main/generated/assets/cosmere/blockstates/copper_ore.json deleted file mode 100644 index 9b149921f..000000000 --- a/src/main/generated/assets/cosmere/blockstates/copper_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "cosmere:block/ore_block" - } - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json new file mode 100644 index 000000000..1297b0b42 --- /dev/null +++ b/src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "cosmere:block/ore_block_deepslate" + } + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 21b9ea3b1..19ea3cc2b 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -2,37 +2,44 @@ "argument.cosmere.power.invalid": "Invalid power", "block.cosmere.aluminum_block": "Aluminum Block", "block.cosmere.aluminum_ore": "Aluminum Ore", + "block.cosmere.aluminum_ore_deepslate": "Aluminum Ore Deepslate", "block.cosmere.atium_block": "Atium Block", "block.cosmere.bendalloy_block": "Bendalloy Block", "block.cosmere.brass_block": "Brass Block", "block.cosmere.bronze_block": "Bronze Block", "block.cosmere.cadmium_block": "Cadmium Block", "block.cosmere.cadmium_ore": "Cadmium Ore", + "block.cosmere.cadmium_ore_deepslate": "Cadmium Ore Deepslate", "block.cosmere.chromium_block": "Chromium Block", "block.cosmere.chromium_ore": "Chromium Ore", + "block.cosmere.chromium_ore_deepslate": "Chromium Ore Deepslate", "block.cosmere.copper_block": "Copper Block", - "block.cosmere.copper_ore": "Copper Ore", "block.cosmere.duralumin_block": "Duralumin Block", "block.cosmere.electrum_block": "Electrum Block", "block.cosmere.gem_block": "Gem Block", "block.cosmere.harmonium_block": "Harmonium Block", "block.cosmere.lead_block": "Lead Block", "block.cosmere.lead_ore": "Lead Ore", + "block.cosmere.lead_ore_deepslate": "Lead Ore Deepslate", "block.cosmere.lerasatium_block": "Lerasatium Block", "block.cosmere.lerasium_block": "Lerasium Block", "block.cosmere.malatium_block": "Malatium Block", "block.cosmere.metalworking_table": "Metalworking Table", "block.cosmere.nickel_block": "Nickel Block", "block.cosmere.nickel_ore": "Nickel Ore", + "block.cosmere.nickel_ore_deepslate": "Nickel Ore Deepslate", "block.cosmere.nicrosil_block": "Nicrosil Block", "block.cosmere.pewter_block": "Pewter Block", "block.cosmere.silver_block": "Silver Block", "block.cosmere.silver_ore": "Silver Ore", + "block.cosmere.silver_ore_deepslate": "Silver Ore Deepslate", "block.cosmere.steel_block": "Steel Block", "block.cosmere.tin_block": "Tin Block", "block.cosmere.tin_ore": "Tin Ore", + "block.cosmere.tin_ore_deepslate": "Tin Ore Deepslate", "block.cosmere.zinc_block": "Zinc Block", "block.cosmere.zinc_ore": "Zinc Ore", + "block.cosmere.zinc_ore_deepslate": "Zinc Ore Deepslate", "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", @@ -183,7 +190,6 @@ "effect.cosmere.tapping_steel": "Tapping Steel", "effect.cosmere.tapping_tin": "Tapping Tin", "effect.cosmere.tapping_zinc": "Tapping Zinc", - "entity.cosmere.spren_flame": "Spren Flame", "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "gui.cosmere.button.back": "Back", "gui.cosmere.cancel": "> Cancel", @@ -383,7 +389,6 @@ "item.cosmere.raw_aluminum_ore": "Raw Aluminum Ore", "item.cosmere.raw_cadmium_ore": "Raw Cadmium Ore", "item.cosmere.raw_chromium_ore": "Raw Chromium Ore", - "item.cosmere.raw_copper_ore": "Raw Copper Ore", "item.cosmere.raw_lead_ore": "Raw Lead Ore", "item.cosmere.raw_nickel_ore": "Raw Nickel Ore", "item.cosmere.raw_silver_ore": "Raw Silver Ore", diff --git a/src/main/generated/assets/cosmere/models/block/ore_block_deepslate.json b/src/main/generated/assets/cosmere/models/block/ore_block_deepslate.json new file mode 100644 index 000000000..76aa6ec53 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/block/ore_block_deepslate.json @@ -0,0 +1,7 @@ +{ + "parent": "cosmere:block/shapes/cube_with_tint_overlay", + "textures": { + "all": "cosmere:block/ore_block_deepslate", + "overlay": "cosmere:block/ore_block_tint_overlay" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/copper_ore.json b/src/main/generated/assets/cosmere/models/item/copper_ore.json deleted file mode 100644 index 385ef680b..000000000 --- a/src/main/generated/assets/cosmere/models/item/copper_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "cosmere:block/ore_block" -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/raw_copper_ore.json b/src/main/generated/assets/cosmere/models/item/raw_copper_ore.json deleted file mode 100644 index cc5a03884..000000000 --- a/src/main/generated/assets/cosmere/models/item/raw_copper_ore.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_raw" - } -} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json new file mode 100644 index 000000000..98b5cd375 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:block/ore_block_deepslate" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json index 26f2edb52..ff76533e5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bendalloy_blend" + "items": [ + "cosmere:bendalloy_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json index fc392000b..e0e066abb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:brass_blend" + "items": [ + "cosmere:brass_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json index d415df7db..4306637d4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bronze_blend" + "items": [ + "cosmere:bronze_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json index 092f61229..f2dc3c262 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:duralumin_blend" + "items": [ + "cosmere:duralumin_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json index aff7dd992..93d830b7a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:electrum_blend" + "items": [ + "cosmere:electrum_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json index 2fb5e28a1..16fb33061 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nicrosil_blend" + "items": [ + "cosmere:nicrosil_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json index 50e81154b..2f9bebc1e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:pewter_blend" + "items": [ + "cosmere:pewter_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json index db8e8ed37..5b926bfd8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:steel_blend" + "items": [ + "cosmere:steel_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json index 39aa48e85..b3336c064 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:aluminum_ore" + "items": [ + "cosmere:aluminum_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json index 69cae78e2..d5ebfcc0e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_aluminum_ore" + "items": [ + "cosmere:raw_aluminum_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json index de23fd168..b7bb0a38b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:aluminum_ore" + "items": [ + "cosmere:aluminum_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json index fafe20948..555a96506 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_aluminum_ore" + "items": [ + "cosmere:raw_aluminum_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json index 7ca2ef3cc..55d5cb842 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bendalloy_blend" + "items": [ + "cosmere:bendalloy_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json index 3f7aacd90..403b44e03 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bendalloy_blend" + "items": [ + "cosmere:bendalloy_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json index d878f1e73..f51346cf8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:brass_blend" + "items": [ + "cosmere:brass_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json index 9e89e09fe..1df67da4f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:brass_blend" + "items": [ + "cosmere:brass_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json index b4ef30936..8074c8902 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bronze_blend" + "items": [ + "cosmere:bronze_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json index b09f9e32e..f13f9e27f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bronze_blend" + "items": [ + "cosmere:bronze_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json index f1187e9a1..8d6b0cced 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:cadmium_ore" + "items": [ + "cosmere:cadmium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json index 5d195d5be..1ee52c7ad 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_cadmium_ore" + "items": [ + "cosmere:raw_cadmium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json index d08be9259..232f5d4d9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:cadmium_ore" + "items": [ + "cosmere:cadmium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json index 0f4fcb3aa..eaa7e8b75 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_cadmium_ore" + "items": [ + "cosmere:raw_cadmium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json index 08d45fcd5..53ef45a38 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:chromium_ore" + "items": [ + "cosmere:chromium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json index e74e2554c..f46db3da9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_chromium_ore" + "items": [ + "cosmere:raw_chromium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json index 046df973f..cc684f60b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:chromium_ore" + "items": [ + "cosmere:chromium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json index bf2317129..3c7f428d5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_chromium_ore" + "items": [ + "cosmere:raw_chromium_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json index 7dbad3dfe..bbec9281a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:aluminum_ingot" + "items": [ + "cosmere:aluminum_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json index 9d5264c7a..92d8d95ab 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:aluminum_nugget" + "items": [ + "cosmere:aluminum_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json index 0fd2ab2ef..edb80c530 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:atium_ingot" + "items": [ + "cosmere:atium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json index f9f6967a3..e75629966 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:atium_nugget" + "items": [ + "cosmere:atium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json index cd601c14e..739124753 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bendalloy_ingot" + "items": [ + "cosmere:bendalloy_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json index 3e800d72c..84a9ffc72 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bendalloy_nugget" + "items": [ + "cosmere:bendalloy_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json index 9df447655..27783d46c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:brass_ingot" + "items": [ + "cosmere:brass_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json index 4221bcd00..d2560822f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:brass_nugget" + "items": [ + "cosmere:brass_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json index bdf2e0bea..a7bf1669f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bronze_ingot" + "items": [ + "cosmere:bronze_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json index dd452b52e..ed5f81bbf 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:bronze_nugget" + "items": [ + "cosmere:bronze_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json index 779a99c49..c3e78bd41 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:cadmium_ingot" + "items": [ + "cosmere:cadmium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json index ae7e4de84..40fb6bdb0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:cadmium_nugget" + "items": [ + "cosmere:cadmium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json index 1f17fb124..ba2a145b7 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:chromium_ingot" + "items": [ + "cosmere:chromium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json index 1d16b3e60..31cc6a261 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:chromium_nugget" + "items": [ + "cosmere:chromium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json index 54e2cbc9c..94219a55b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:copper_ingot" + "items": [ + "cosmere:copper_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json index 347dbef91..ca04c4f1f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:copper_nugget" + "items": [ + "cosmere:copper_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json index eb0e5f5f3..b12f3ceb9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:duralumin_ingot" + "items": [ + "cosmere:duralumin_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json index 403fd8800..80d7b6977 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:duralumin_nugget" + "items": [ + "cosmere:duralumin_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json index d0c51d424..de5eb241a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:electrum_ingot" + "items": [ + "cosmere:electrum_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json index 322a81103..f00e9c5b3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:electrum_nugget" + "items": [ + "cosmere:electrum_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json index e15fa7043..e6095f7ec 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:harmonium_ingot" + "items": [ + "cosmere:harmonium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json index 9a5c45a5c..8b436e0c1 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:harmonium_nugget" + "items": [ + "cosmere:harmonium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json index ec7334de1..2c6314386 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lead_ingot" + "items": [ + "cosmere:lead_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json index a170b333c..a5b4ea08c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lead_nugget" + "items": [ + "cosmere:lead_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json index 54a8f0055..a0e85b7d3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lerasatium_ingot" + "items": [ + "cosmere:lerasatium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json index 68c57fda4..c82aff179 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lerasatium_nugget" + "items": [ + "cosmere:lerasatium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json index 3a9925c51..e31432d39 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lerasium_ingot" + "items": [ + "cosmere:lerasium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json index 539707027..bc1c55ea5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lerasium_nugget" + "items": [ + "cosmere:lerasium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json index ebf00bd9a..7d4a5ae18 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:malatium_ingot" + "items": [ + "cosmere:malatium_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json index 987fd34f4..31fa436d9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:malatium_nugget" + "items": [ + "cosmere:malatium_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json index 9c0461362..593d41153 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nickel_ingot" + "items": [ + "cosmere:nickel_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json index f0839623c..a94082044 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nickel_nugget" + "items": [ + "cosmere:nickel_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json index ec808bba0..48e98ba1f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nicrosil_ingot" + "items": [ + "cosmere:nicrosil_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json index 6e11bc202..7308f855d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nicrosil_nugget" + "items": [ + "cosmere:nicrosil_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json index e9da030c6..ecbae4f19 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:pewter_ingot" + "items": [ + "cosmere:pewter_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json index d7d9f16bc..5712f0a30 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:pewter_nugget" + "items": [ + "cosmere:pewter_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json index 9ab42a85a..b6fb7cdce 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:silver_ingot" + "items": [ + "cosmere:silver_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json index 2f757a331..fba1f41de 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:silver_nugget" + "items": [ + "cosmere:silver_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json index d023c2f55..c03379b37 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:steel_ingot" + "items": [ + "cosmere:steel_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json index 8842529e1..bb93f55dc 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:steel_nugget" + "items": [ + "cosmere:steel_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json index c243dbc7a..c5a00b992 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:tin_ingot" + "items": [ + "cosmere:tin_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json index 0b3431f9d..6bc439506 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:tin_nugget" + "items": [ + "cosmere:tin_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json index 6740cf5be..34dd55031 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:zinc_ingot" + "items": [ + "cosmere:zinc_ingot" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json index 85ec1fc00..9c4ac12c3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:zinc_nugget" + "items": [ + "cosmere:zinc_nugget" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_copper_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_copper_ore.json deleted file mode 100644 index 8860ae2bf..000000000 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_copper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ingot_from_blasting_copper_ore" - ] - }, - "criteria": { - "has_ore": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "cosmere:copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "cosmere:copper_ingot_from_blasting_copper_ore" - } - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_raw_copper_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_raw_copper_ore.json deleted file mode 100644 index f3ab7bf33..000000000 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_blasting_raw_copper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ingot_from_blasting_raw_copper_ore" - ] - }, - "criteria": { - "has_ore": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "cosmere:raw_copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "cosmere:copper_ingot_from_blasting_raw_copper_ore" - } - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_copper_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_copper_ore.json deleted file mode 100644 index 80c45aa8e..000000000 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_copper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ingot_from_smelting_copper_ore" - ] - }, - "criteria": { - "has_ore": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "cosmere:copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "cosmere:copper_ingot_from_smelting_copper_ore" - } - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_raw_copper_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_raw_copper_ore.json deleted file mode 100644 index c9ea5c7b8..000000000 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot_from_smelting_raw_copper_ore.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ingot_from_smelting_raw_copper_ore" - ] - }, - "criteria": { - "has_ore": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "item": "cosmere:raw_copper_ore" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "cosmere:copper_ingot_from_smelting_raw_copper_ore" - } - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json index db5920cf5..66cc67233 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:duralumin_blend" + "items": [ + "cosmere:duralumin_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json index 772eb54d8..a4fe58b44 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:duralumin_blend" + "items": [ + "cosmere:duralumin_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json index bf4fd1bd9..025091b2a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:electrum_blend" + "items": [ + "cosmere:electrum_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json index 8470f9014..dea84164c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:electrum_blend" + "items": [ + "cosmere:electrum_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json index 0c6b8a56e..95225de9e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:iron_spike" + "items": [ + "cosmere:iron_spike" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json index 7a8eafe04..d526f70a9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:iron_spike" + "items": [ + "cosmere:iron_spike" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json index d1c11caba..5ed95a0f9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lead_ore" + "items": [ + "cosmere:lead_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json index 3a650ee37..9de1beb28 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_lead_ore" + "items": [ + "cosmere:raw_lead_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json index a7bbbc2dc..cd56ac42b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:lead_ore" + "items": [ + "cosmere:lead_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json index 51cb8a093..8fe36848a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_lead_ore" + "items": [ + "cosmere:raw_lead_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json index 15db6c2b4..ebbd06841 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "minecraft:glass" + "items": [ + "minecraft:glass" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json index eec14f7ff..a199f3eec 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nickel_ore" + "items": [ + "cosmere:nickel_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json index 91eed7968..e15104852 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_nickel_ore" + "items": [ + "cosmere:raw_nickel_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json index dc8559bc1..f70df73e5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nickel_ore" + "items": [ + "cosmere:nickel_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json index dc117ac39..84bec0ba5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_nickel_ore" + "items": [ + "cosmere:raw_nickel_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json index 413c48b4a..8139b4b5e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nicrosil_blend" + "items": [ + "cosmere:nicrosil_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json index bc5af31a2..79ea5e02c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:nicrosil_blend" + "items": [ + "cosmere:nicrosil_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json index 29535a51d..6f5627570 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:pewter_blend" + "items": [ + "cosmere:pewter_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json index 07330381b..2fec21cad 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:pewter_blend" + "items": [ + "cosmere:pewter_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json index a800b776b..cd281acb9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_silver_ore" + "items": [ + "cosmere:raw_silver_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json index b45833197..4a6e8c862 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:silver_ore" + "items": [ + "cosmere:silver_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json index 650896a86..66563162b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_silver_ore" + "items": [ + "cosmere:raw_silver_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json index ce7012058..a33520a20 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:silver_ore" + "items": [ + "cosmere:silver_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json index 6e8725fc9..52225cdc2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:steel_blend" + "items": [ + "cosmere:steel_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json index 75b5f792e..fb650a05c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:steel_blend" + "items": [ + "cosmere:steel_blend" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json index 38df58117..c8ae1ac66 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_tin_ore" + "items": [ + "cosmere:raw_tin_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json index 22bb3fe71..66a34f53c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:tin_ore" + "items": [ + "cosmere:tin_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json index 711f7d737..ec4ea126a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_tin_ore" + "items": [ + "cosmere:raw_tin_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json index fb93970e8..11d4cda61 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:tin_ore" + "items": [ + "cosmere:tin_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json index 4a2481bc1..2b578797c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_zinc_ore" + "items": [ + "cosmere:raw_zinc_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json index a475117db..9770b7b9b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:zinc_ore" + "items": [ + "cosmere:zinc_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json index 777326dca..1ceb5d968 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:raw_zinc_ore" + "items": [ + "cosmere:raw_zinc_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json index 77a1c2884..60e326291 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json @@ -11,7 +11,9 @@ "conditions": { "items": [ { - "item": "cosmere:zinc_ore" + "items": [ + "cosmere:zinc_ore" + ] } ] } diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json index 18584afdb..6a1b4cbf1 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json index d30832c99..57cbc7342 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json new file mode 100644 index 000000000..6aecc65db --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:aluminum_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_aluminum_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json index 3918fed37..cd8d8dc73 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json index d31bf47f6..673f37621 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json index 508473ea6..f62e976b4 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json index d4d2d6164..a9995dc32 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json index 20dfa5ef1..51dbacae9 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json index 6be13136e..6f7d5d55f 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json new file mode 100644 index 000000000..7dc4aa019 --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:cadmium_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_cadmium_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json index d4c54ebe0..023a9e2cd 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json index 2f7352561..bad94d86c 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json new file mode 100644 index 000000000..9433465dd --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:chromium_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_chromium_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json index 3936c9d76..05675ca17 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json index 11e3313c5..c575fb24b 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json index 4dc702422..710f9796b 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json index 8723176ad..552278da6 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json index 094a81aed..2177bfdcd 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json index 63f3b1be0..fce2fce5f 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json index 6acfb5c98..3d230f4b0 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json new file mode 100644 index 000000000..90dbb8ba4 --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:lead_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_lead_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json index affafeca7..d0c20ff0b 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json index 46588adde..b26a693cd 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json index 842fa1f1c..c2fb49327 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json index c654d7bef..02c5d2701 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json index 68b1d0e1b..57ee4db2b 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json index c386de9d6..5d73e8e7b 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json new file mode 100644 index 000000000..cbcc62a98 --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:nickel_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_nickel_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json index 7f7f20002..4c386edc0 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json index 3742454dd..32fc5a012 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json index ed9ad4af2..73c819865 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json index 7f170e96d..ecbe84cee 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json new file mode 100644 index 000000000..f5cf3ad60 --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:silver_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_silver_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json index c320b139b..effddb129 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json index 88ed81129..8e5aec777 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json index 6f09468fb..b68536134 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/copper_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json similarity index 88% rename from src/main/generated/data/cosmere/loot_tables/blocks/copper_ore.json rename to src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json index 63e4254e7..83dd1e3a4 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/copper_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", @@ -24,7 +25,7 @@ } } ], - "name": "cosmere:copper_ore" + "name": "cosmere:tin_ore_deepslate" }, { "type": "minecraft:item", @@ -38,7 +39,7 @@ "function": "minecraft:explosion_decay" } ], - "name": "cosmere:raw_copper_ore" + "name": "cosmere:raw_tin_ore" } ] } diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json index f28948994..72f24f1e7 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:item", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json index d8e52be15..f6d0daf78 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json @@ -2,7 +2,8 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1, + "rolls": 1.0, + "bonus_rolls": 0.0, "entries": [ { "type": "minecraft:alternatives", diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json new file mode 100644 index 000000000..e8c09726a --- /dev/null +++ b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json @@ -0,0 +1,49 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "rolls": 1.0, + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "cosmere:zinc_ore_deepslate" + }, + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:apply_bonus", + "enchantment": "minecraft:fortune", + "formula": "minecraft:ore_drops" + }, + { + "function": "minecraft:explosion_decay" + } + ], + "name": "cosmere:raw_zinc_ore" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_copper_ore.json b/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_copper_ore.json deleted file mode 100644 index 82bdf004c..000000000 --- a/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_copper_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "cosmere:copper_ore" - }, - "result": "cosmere:copper_ingot", - "experience": 1.0, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_raw_copper_ore.json b/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_raw_copper_ore.json deleted file mode 100644 index 892a4de94..000000000 --- a/src/main/generated/data/cosmere/recipes/copper_ingot_from_blasting_raw_copper_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "ingredient": { - "item": "cosmere:raw_copper_ore" - }, - "result": "cosmere:copper_ingot", - "experience": 1.0, - "cookingtime": 100 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_copper_ore.json b/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_copper_ore.json deleted file mode 100644 index 3398391e0..000000000 --- a/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_copper_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "cosmere:copper_ore" - }, - "result": "cosmere:copper_ingot", - "experience": 1.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json b/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json deleted file mode 100644 index 890960007..000000000 --- a/src/main/generated/data/cosmere/recipes/copper_ingot_from_smelting_raw_copper_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "ingredient": { - "item": "cosmere:raw_copper_ore" - }, - "result": "cosmere:copper_ingot", - "experience": 1.0, - "cookingtime": 200 -} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/copper.json b/src/main/generated/data/forge/tags/blocks/ores/copper.json deleted file mode 100644 index 8244dc030..000000000 --- a/src/main/generated/data/forge/tags/blocks/ores/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "cosmere:copper_ore" - ] -} \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/raw_materials/copper.json b/src/main/generated/data/forge/tags/items/raw_materials/copper.json deleted file mode 100644 index 7378dde9b..000000000 --- a/src/main/generated/data/forge/tags/items/raw_materials/copper.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "replace": false, - "values": [ - "cosmere:raw_copper_ore" - ] -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index 968d70d26..126938566 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -51,6 +51,7 @@ public static void init(final FMLClientSetupEvent event) RenderType cutoutMipped = RenderType.cutoutMipped(); ItemBlockRenderTypes.setRenderLayer(metalType.getOreBlock(), cutoutMipped); + ItemBlockRenderTypes.setRenderLayer(metalType.getDeepslateOreBlock(), cutoutMipped); } LogHelper.info("Client setup complete!"); diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index c14077002..604275157 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -193,7 +193,7 @@ public boolean hasOre() case CHROMIUM: //case IRON: // covered by minecraft case NICKEL: - case COPPER: + //case COPPER: // covered by minecraft case ZINC: case SILVER: case TIN: @@ -304,6 +304,11 @@ public OreBlock getOreBlock() return BlocksRegistry.METAL_ORE.get(this).get(); } + public OreBlock getDeepslateOreBlock() + { + return BlocksRegistry.METAL_ORE_DEEPSLATE.get(this).get(); + } + public TagKey getMetalRawTag() { return TagsRegistry.Items.METAL_RAW_TAGS.get(this); diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java index 9d0eba3dc..62c47f597 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java @@ -32,7 +32,8 @@ protected void registerStatesAndModels() { for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) { - if (itemRegistryObject.get() instanceof MetalBlock) + final Block block = itemRegistryObject.get(); + if (block instanceof MetalBlock) { //ModelFile blockModel = models().cubeAll(getPath(itemRegistryObject), new ResourceLocation(Cosmere.MODID, "block/metal_block")); @@ -40,10 +41,10 @@ protected void registerStatesAndModels() ModelFile blockModel = models().withExistingParent("metal_block", ResourceLocationHelper.prefix("block/shapes/cube_all_tinted")) .texture("all", ResourceLocationHelper.prefix("block/metal_block")); - simpleBlock(itemRegistryObject.get(), blockModel); + simpleBlock(block, blockModel); continue; } - else if (itemRegistryObject.get() instanceof MetalworkingTableBlock) + else if (block instanceof MetalworkingTableBlock) { ModelFile blockModel = models().withExistingParent("metalworking_table", new ResourceLocation("block/cube")) .texture("particle", ResourceLocationHelper.prefix("block/metalworking_table_front")) @@ -53,18 +54,23 @@ else if (itemRegistryObject.get() instanceof MetalworkingTableBlock) .texture("west", ResourceLocationHelper.prefix("block/metalworking_table_side")) .texture("up", ResourceLocationHelper.prefix("block/metalworking_table_top")) .texture("down", ResourceLocationHelper.prefix("block/metalworking_table_bottom")); - simpleBlock(itemRegistryObject.get(), blockModel); + simpleBlock(block, blockModel); continue; } - else if (itemRegistryObject.get() instanceof OreBlock) + else if (block instanceof OreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. - ModelFile blockModel = models().withExistingParent("ore_block", ResourceLocationHelper.prefix("block/shapes/cube_with_tint_overlay")) - .texture("all", ResourceLocationHelper.prefix("block/ore_block")) + final boolean deepslate = block.getRegistryName().getPath().contains("deepslate"); + + final String stoneType = deepslate ? "block/ore_block_deepslate" : "block/ore_block"; + final String stoneFileName = deepslate ? "ore_block_deepslate" : "ore_block"; + + ModelFile blockModel = models().withExistingParent(stoneFileName, ResourceLocationHelper.prefix("block/shapes/cube_with_tint_overlay")) + .texture("all", ResourceLocationHelper.prefix(stoneType)) .texture("overlay", ResourceLocationHelper.prefix("block/ore_block_tint_overlay")); - simpleBlock(itemRegistryObject.get(), blockModel); + simpleBlock(block, blockModel); continue; } diff --git a/src/main/java/leaf/cosmere/handlers/ColorHandler.java b/src/main/java/leaf/cosmere/handlers/ColorHandler.java index dd88256e6..a26273abf 100644 --- a/src/main/java/leaf/cosmere/handlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/handlers/ColorHandler.java @@ -47,7 +47,11 @@ public static void init() { //blocks in world blockColors.register(cosmereBlockColorHandler, metalType.getOreBlock()); + blockColors.register(cosmereBlockColorHandler, metalType.getDeepslateOreBlock()); + itemColors.register(blockItemColorHandler, metalType.getOreBlock()); + itemColors.register(blockItemColorHandler, metalType.getDeepslateOreBlock()); + itemColors.register(cosmereColourHandler, metalType.getRawMetalItem()); } diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block.png b/src/main/resources/assets/cosmere/textures/block/ore_block.png index b6e697f09c02056acf746122e98741cc07e2c762..637ae251279e4c498764e14fdf418a742c061bb1 100644 GIT binary patch delta 1094 zcmZvbF-`+95Jer4ii(a3iIX6KLXn0l1q~AA9>4{irCeZpYHGv*kT?S;p-KZq@bl(5 z6T(WPZ_oVyXYAcwpKmVSK2FR0a=Ex(JU^Ojv?#%(U1&}?e*!sYw*4PuxAc{Rx97&@pm{b&v*3MzUsEp38aSM*q z2)3nz#ADpeO9zVx`-xG&34uiku&<|=%FH!b%u@YFPrje;KObJ+Q+<}VcZ=7X G$MrAF{jS{r delta 204 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 WB(Re3*j)es000O{MNUMnLSTa6L3u3z From 1ef0df72dd4b7a2a4e17365da0adb236c68e3250 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 8 May 2022 20:49:07 +1200 Subject: [PATCH 0114/1090] Ore spawn frequency fixes --- .../cosmere/registry/FeatureRegistry.java | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index 05de13f46..9b27324ef 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -66,9 +66,10 @@ public static class ConfiguredFeatures private static List makeTarget(Metals.MetalType metalType) { return - List.of(OreConfiguration.target( - OreFeatures.STONE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState()), + List.of( + OreConfiguration.target( + OreFeatures.STONE_ORE_REPLACEABLES, + BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState()), OreConfiguration.target( OreFeatures.DEEPSLATE_ORE_REPLACEABLES, BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).get().defaultBlockState()) @@ -93,13 +94,32 @@ public static class PlacedFeatures registerPlacedFeature( metalType.getName() + Constants.RegNameStubs.ORE, ConfiguredFeatures.ORE_FEATURES.get(metalType), - List.of(RarityFilter.onAverageOnceEvery(64), - InSquarePlacement.spread(), + commonOrePlacement( + 20,//width? HeightRangePlacement.triangle( - VerticalAnchor.bottom(), - VerticalAnchor.absolute(128)), - BiomeFilter.biome())) - )); + VerticalAnchor.absolute(-32), + VerticalAnchor.absolute(150)) + ) + ) + ) + ); + + + //copied from OrePlacements.java, since they're private methods that should really be public + private static List commonOrePlacement(int p_195344_, PlacementModifier p_195345_) + { + return orePlacement(CountPlacement.of(p_195344_), p_195345_); + } + + private static List rareOrePlacement(int p_195350_, PlacementModifier p_195351_) + { + return orePlacement(RarityFilter.onAverageOnceEvery(p_195350_), p_195351_); + } + + private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) + { + return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); + } public static void registerPlacedFeatures() { From 972d388237425391a6977063ddcd3161c63a76f2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 9 May 2022 08:29:39 +1200 Subject: [PATCH 0115/1090] changelog and version updated --- Changelog.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index a03079c6e..6ea57171f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,13 @@ The Cosmere Project - For 1.16 Minecraft +B29 + +Fixing deepslate ore, no more pink texture or missing name. Also potentially better ore spawn frequency so it actually appears in deepslate. + +B28 + +First build on 1.18.2. Spike/Metalmind rendering temporarily broken. Potentially other things too + B27 Fixed crash related to bronze allomancy checking if an entity should be glowing diff --git a/gradle.properties b/gradle.properties index 3bbd22641..984c19354 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=28 +build_number=30 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From fc6ccc11f7f6bfa1f1c16b9f3c41a50c9b6d8363 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 12 May 2022 20:35:39 +1200 Subject: [PATCH 0116/1090] Refactored line drawing for allomancy iron/steel. No more crashes! --- .../cap/entity/SpiritwebCapability.java | 9 +- .../leaf/cosmere/client/gui/DrawUtils.java | 100 ++++++++++++++---- .../leaf/cosmere/utils/helpers/LogHelper.java | 1 - 3 files changed, 84 insertions(+), 26 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 0f73915f4..506cb95ad 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -11,6 +11,7 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.client.gui.DrawUtils; import leaf.cosmere.constants.Manifestations.ManifestationTypes; @@ -22,6 +23,7 @@ import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -319,11 +321,8 @@ public void renderWorldEffects(RenderLevelLastEvent event) if (linesToDrawByColor.size() > 0) { Vec3 originPoint = getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); - for (Map.Entry> entry : linesToDrawByColor.entries()) - { - //For all found things, draw the line - DrawUtils.drawLinesFromPoint(event, originPoint, entry.getValue(), entry.getKey()); - } + PoseStack matrixStack = event.getPoseStack(); + DrawUtils.drawLinesFromPoint(matrixStack,originPoint,linesToDrawByColor); } } diff --git a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java index 6026931c9..52f5ff199 100644 --- a/src/main/java/leaf/cosmere/client/gui/DrawUtils.java +++ b/src/main/java/leaf/cosmere/client/gui/DrawUtils.java @@ -4,51 +4,111 @@ package leaf.cosmere.client.gui; +import com.google.common.collect.Multimap; import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.DefaultVertexFormat; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.blaze3d.vertex.VertexFormat; +import com.mojang.math.Matrix3f; import com.mojang.math.Matrix4f; +import leaf.cosmere.Cosmere; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderStateShard; import net.minecraft.client.renderer.RenderType; import net.minecraft.world.phys.Vec3; -import net.minecraftforge.client.event.RenderLevelLastEvent; import java.awt.*; import java.util.List; +import java.util.Map; +import java.util.OptionalDouble; +import java.util.function.Supplier; public class DrawUtils { - //https://forums.minecraftforge.net/topic/81895-problems-with-rendering-a-line-1152/?tab=comments#comment-388662 - public static void drawLinesFromPoint(RenderLevelLastEvent event, Vec3 point, List endPoints, Color color) + //Draw our allomancy lines + public static void drawLinesFromPoint(PoseStack matrixStack, Vec3 originPoint, Multimap> linesToDrawByColor) { - MultiBufferSource.BufferSource buffer = Minecraft.getInstance().renderBuffers().bufferSource(); - VertexConsumer builder = buffer.getBuffer(RenderType.LINES); + matrixStack.pushPose(); //move where the line is in the world. otherwise it is drawn around origin 0,0,0 I think? Vec3 view = Minecraft.getInstance().gameRenderer.getMainCamera().getPosition(); - PoseStack matrixStack = event.getPoseStack(); - RenderSystem.lineWidth(3); - - matrixStack.pushPose(); matrixStack.translate(-view.x, -view.y, -view.z); - Matrix4f matrix = matrixStack.last().pose(); - for (Vec3 endPoint : endPoints) + //Tell the render system we're about to draw our lines + //Use our line settings, special thanks to chisels and bits showing how that works. + final VertexConsumer bufferIn = Minecraft.getInstance().renderBuffers().bufferSource().getBuffer(ModRenderTypes.MEASUREMENT_LINES.get()); + + //For all found things, draw the line + for (Map.Entry> entry : linesToDrawByColor.entries()) { - builder.vertex(matrix, (float) point.x(), (float) point.y(), (float) point.z()) - .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) - .endVertex(); + final List endPoints = entry.getValue(); + final Color color = entry.getKey(); + for (Vec3 endPoint : endPoints) + { + Matrix4f matrix = matrixStack.last().pose(); + final Matrix3f normal = matrixStack.last().normal(); + + bufferIn.vertex(matrix, (float) originPoint.x(), (float) originPoint.y(), (float) originPoint.z()) + .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) + .normal(normal, 0, 1, 0) + .endVertex(); - builder.vertex(matrix, (float) endPoint.x(), (float) endPoint.y(), (float) endPoint.z()) - .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) - .endVertex(); + bufferIn.vertex(matrix, (float) endPoint.x(), (float) endPoint.y(), (float) endPoint.z()) + .color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()) + .normal(normal, 0, 1, 0) + .endVertex(); + } } + Minecraft.getInstance().renderBuffers().bufferSource().endBatch(ModRenderTypes.MEASUREMENT_LINES.get()); matrixStack.popPose(); - RenderSystem.disableDepthTest(); - buffer.endBatch(RenderType.LINES); + } + + + //Special thanks to Chisels and Bits for showing how this works + public enum ModRenderTypes + { + MEASUREMENT_LINES(() -> Internal.MEASUREMENT_LINES); + + private final Supplier typeSupplier; + ModRenderTypes(final Supplier typeSupplier) + { + this.typeSupplier = typeSupplier; + } + + public RenderType get() + { + return typeSupplier.get(); + } + + private static class Internal extends RenderType + { + private static final RenderType MEASUREMENT_LINES = RenderType.create(Cosmere.MODID + ":lines", + DefaultVertexFormat.POSITION_COLOR_NORMAL, + VertexFormat.Mode.LINES, + 256, + false, + false, + RenderType.CompositeState.builder() + .setShaderState(RENDERTYPE_LINES_SHADER) + .setLineState(new LineStateShard(OptionalDouble.of(2.5d))) + .setLayeringState(VIEW_OFFSET_Z_LAYERING) + .setTransparencyState(TRANSLUCENT_TRANSPARENCY) + .setOutputState(TRANSLUCENT_TARGET) + .setWriteMaskState(COLOR_WRITE) + .setCullState(NO_CULL) + .setDepthTestState(RenderStateShard.NO_DEPTH_TEST) + .createCompositeState(false)); + + private Internal(String name, VertexFormat fmt, VertexFormat.Mode glMode, int size, boolean doCrumbling, boolean depthSorting, Runnable onEnable, Runnable onDisable) + { + super(name, fmt, glMode, size, doCrumbling, depthSorting, onEnable, onDisable); + throw new IllegalStateException("This class must not be instantiated"); + } + } } + } diff --git a/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java b/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java index 6ac6e8b20..7f19613f1 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/LogHelper.java @@ -4,7 +4,6 @@ package leaf.cosmere.utils.helpers; -import leaf.cosmere.Cosmere; import com.mojang.logging.LogUtils; import org.slf4j.Logger; From b61c3cfb677132251acd9d2b5142ae5e05b7f041 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 08:32:37 +1200 Subject: [PATCH 0117/1090] Buff brass feruchemy to be able to set people on fire at lower tap rate --- .../java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java index bb1430ecc..18656fd9c 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java @@ -32,7 +32,7 @@ public BrassTapEffect(Metals.MetalType type, MobEffectCategory effectType) @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - if (!entityLivingBaseIn.level.isClientSide && amplifier > 10 && !entityLivingBaseIn.isInWater()) + if (!entityLivingBaseIn.level.isClientSide && amplifier >= 5 && !entityLivingBaseIn.isInWater()) { //set user on fire entityLivingBaseIn.setSecondsOnFire(3); From 6de28df80a9836a7538104e687ae55cbe339573a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 08:33:21 +1200 Subject: [PATCH 0118/1090] Buff electrum feruchemy to be more noticeable --- .../feruchemy/FeruchemyElectrum.java | 32 +++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java index df563aaaa..5aa44885b 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyElectrum.java @@ -23,14 +23,42 @@ public void onLivingHurtEvent(LivingHurtEvent event) MobEffectInstance tapEffect = event.getEntityLiving().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(getMetalType()).get()); MobEffectInstance storeEffect = event.getEntityLiving().getEffect(EffectsRegistry.STORING_EFFECTS.get(getMetalType()).get()); + //take less damage when tapping if (tapEffect != null && tapEffect.getDuration() > 0) { - event.setAmount(event.getAmount() - ((tapEffect.getAmplifier() + 1) * 0.25f)); + //always reduce damage by something + final int i = tapEffect.getAmplifier() + 1; + + //never able to reduce by 100% + // 76% ish max? eg tap10 / 13 = 0.76 + final float v = i / 13f; + + // leaving 24% + // 1 - 0.76 = 0.24 + final float v1 = 1 - v; + + //eg 7 damage at tap 10 would be: + // 7 * 0.24 = 1.68 damage remaining + event.setAmount(event.getAmount() * v1);//todo convert to config } + //take more damage when Storing if (storeEffect != null && storeEffect.getDuration() > 0) { - event.setAmount(event.getAmount() + ((storeEffect.getAmplifier() + 1) * 0.25f)); + //always increase damage by something + final int i = storeEffect.getAmplifier() + 1; + + //store 3 is the max so never able to increase damage to self by more than 23%? + // 23% ish max? eg store3 / 13 = 0.23 + final float v = i / 13f; + + // So we add 76% extra damage + // 1 + 0.23 = 1.23 + final float v1 = 1 + v; + + //eg 7 damage at store 3 would be: + // 7 * 1.23 = 8.61 + event.setAmount(event.getAmount() * v1);//todo convert to config } } From 281eea166eecb8f59e082fa39abb2e26366a28a6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 08:33:52 +1200 Subject: [PATCH 0119/1090] Comments only --- src/main/java/leaf/cosmere/constants/Metals.java | 4 +--- src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 604275157..3714302c4 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -730,9 +730,7 @@ else if (killedEntity instanceof EnderDragon) //todo figure out what that means break; case ALUMINUM: - //Removes all powers - //... ooops? - //maybe its an item you can equip on others that they then have to remove? + //done else where. break; case DURALUMIN: //Steals Connection/Identity diff --git a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java index a1670a966..bdfcda1cb 100644 --- a/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EffectInstanceMixin.java @@ -24,6 +24,7 @@ private void getIsFeruchemyEffect(CallbackInfoReturnable cir) { if (getEffect() instanceof FeruchemyEffectBase) { + // allways show **:** instead of the 3 second timer cir.setReturnValue(true); } } @@ -36,6 +37,8 @@ private void getShowIcon(CallbackInfoReturnable cir) { if (getEffect() instanceof FeruchemyEffectBase) { + //never show the icon on the normal HUD. + //should only show in inventory if they're interested. cir.setReturnValue(false); } } From b64b9ebfbc4c22dde022cb63c418df1f7aa9594a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 08:34:25 +1200 Subject: [PATCH 0120/1090] Changed burning copper effect name to copper cloud --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 2 +- src/main/java/leaf/cosmere/registry/EffectsRegistry.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 89de4bcea..f9ff10234 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -8604de265c009ef0d2e92fe8ce931fdc8910db61 assets/cosmere/lang/en_us.json +9bee2fb2c3ea8c2acc55bd8fb21b38f4c3ebe0f2 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 19ea3cc2b..89c4025b0 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -155,7 +155,7 @@ "cosmere.trueself": "Trueself", "cosmere.windwhisperer": "Windwhisperer", "effect.cosmere.allomancy_boost": "Allomancy Boost", - "effect.cosmere.burning_copper": "Burning Copper", + "effect.cosmere.copper_cloud": "Copper Cloud", "effect.cosmere.storing_aluminum": "Storing Aluminum", "effect.cosmere.storing_atium": "Storing Atium", "effect.cosmere.storing_bendalloy": "Storing Bendalloy", diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index cd17f38f3..dd5334fd4 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -28,7 +28,7 @@ public class EffectsRegistry public static final DeferredRegister EFFECTS = DeferredRegister.create(ForgeRegistries.MOB_EFFECTS, Cosmere.MODID); public static final RegistryObject ALLOMANTIC_COPPER = EFFECTS.register( - "burning_" + Metals.MetalType.COPPER.getName(), + "copper_cloud", () -> new AllomancyEffectBase(Metals.MetalType.COPPER, MobEffectCategory.BENEFICIAL)); public static final RegistryObject ALLOMANCY_BOOST = EFFECTS.register( From 01497bfa83c51e7cb910585416d088131b0ae0d4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 09:04:10 +1200 Subject: [PATCH 0121/1090] Fix 1.18 patchouli integration so book opens --- src/main/generated/.cache/cache | 110 +++++++++--------- .../generated/assets/cosmere/lang/en_us.json | 1 + ...allomancy.json => category.allomancy.json} | 2 +- ...feruchemy.json => category.feruchemy.json} | 2 +- ...hemalurgy.json => category.hemalurgy.json} | 2 +- .../entry.allomancy_basics.json} | 4 +- .../entry.allomantic_aluminum.json} | 6 +- .../entry.allomantic_bendalloy.json} | 6 +- .../entry.allomantic_brass.json} | 6 +- .../entry.allomantic_bronze.json} | 6 +- .../entry.allomantic_cadmium.json} | 6 +- .../entry.allomantic_chromium.json} | 6 +- .../entry.allomantic_copper.json} | 6 +- .../entry.allomantic_duralumin.json} | 6 +- .../entry.allomantic_electrum.json} | 6 +- .../entry.allomantic_gold.json} | 6 +- .../entry.allomantic_iron.json} | 6 +- .../entry.allomantic_nicrosil.json} | 6 +- .../entry.allomantic_pewter.json} | 6 +- .../entry.allomantic_steel.json} | 6 +- .../entry.allomantic_tin.json} | 6 +- .../entry.allomantic_zinc.json} | 6 +- .../entry.feruchemical_aluminum.json} | 4 +- .../entry.feruchemical_bendalloy.json} | 4 +- .../entry.feruchemical_brass.json} | 4 +- .../entry.feruchemical_bronze.json} | 4 +- .../entry.feruchemical_cadmium.json} | 4 +- .../entry.feruchemical_chromium.json} | 4 +- .../entry.feruchemical_copper.json} | 4 +- .../entry.feruchemical_duralumin.json} | 4 +- .../entry.feruchemical_electrum.json} | 4 +- .../entry.feruchemical_gold.json} | 4 +- .../entry.feruchemical_iron.json} | 4 +- .../entry.feruchemical_nicrosil.json} | 4 +- .../entry.feruchemical_pewter.json} | 4 +- .../entry.feruchemical_steel.json} | 4 +- .../entry.feruchemical_tin.json} | 4 +- .../entry.feruchemical_zinc.json} | 4 +- .../entry.hemalurgic_aluminum.json} | 4 +- .../entry.hemalurgic_atium.json} | 4 +- .../entry.hemalurgic_bendalloy.json} | 4 +- .../entry.hemalurgic_brass.json} | 4 +- .../entry.hemalurgic_bronze.json} | 4 +- .../entry.hemalurgic_cadmium.json} | 4 +- .../entry.hemalurgic_chromium.json} | 4 +- .../entry.hemalurgic_copper.json} | 4 +- .../entry.hemalurgic_duralumin.json} | 4 +- .../entry.hemalurgic_electrum.json} | 4 +- .../entry.hemalurgic_gold.json} | 4 +- .../entry.hemalurgic_iron.json} | 4 +- .../entry.hemalurgic_lerasium.json} | 4 +- .../entry.hemalurgic_nicrosil.json} | 4 +- .../entry.hemalurgic_pewter.json} | 4 +- .../entry.hemalurgic_steel.json} | 4 +- .../entry.hemalurgic_tin.json} | 4 +- .../entry.hemalurgic_zinc.json} | 4 +- .../java/leaf/cosmere/constants/Metals.java | 13 ++- .../cosmere/datagen/language/EngLangGen.java | 1 + .../cosmere/datagen/patchouli/BookStuff.java | 19 ++- .../categories/PatchouliAllomancy.java | 4 +- 60 files changed, 208 insertions(+), 182 deletions(-) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{cosmere.category.allomancy.json => category.allomancy.json} (83%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{cosmere.category.feruchemy.json => category.feruchemy.json} (80%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{cosmere.category.hemalurgy.json => category.hemalurgy.json} (81%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomancy_basics.json => category.allomancy/entry.allomancy_basics.json} (86%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json => category.allomancy/entry.allomantic_aluminum.json} (79%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json => category.allomancy/entry.allomantic_bendalloy.json} (78%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_brass.json => category.allomancy/entry.allomantic_brass.json} (74%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json => category.allomancy/entry.allomantic_bronze.json} (75%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json => category.allomancy/entry.allomantic_cadmium.json} (75%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json => category.allomancy/entry.allomantic_chromium.json} (77%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_copper.json => category.allomancy/entry.allomantic_copper.json} (79%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json => category.allomancy/entry.allomantic_duralumin.json} (79%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json => category.allomancy/entry.allomantic_electrum.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_gold.json => category.allomancy/entry.allomantic_gold.json} (70%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_iron.json => category.allomancy/entry.allomantic_iron.json} (78%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json => category.allomancy/entry.allomantic_nicrosil.json} (78%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json => category.allomancy/entry.allomantic_pewter.json} (79%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_steel.json => category.allomancy/entry.allomantic_steel.json} (77%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_tin.json => category.allomancy/entry.allomantic_tin.json} (79%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json => category.allomancy/entry.allomantic_zinc.json} (76%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json => category.feruchemy/entry.feruchemical_aluminum.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json => category.feruchemy/entry.feruchemical_bendalloy.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json => category.feruchemy/entry.feruchemical_brass.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json => category.feruchemy/entry.feruchemical_bronze.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json => category.feruchemy/entry.feruchemical_cadmium.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json => category.feruchemy/entry.feruchemical_chromium.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json => category.feruchemy/entry.feruchemical_copper.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json => category.feruchemy/entry.feruchemical_duralumin.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json => category.feruchemy/entry.feruchemical_electrum.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json => category.feruchemy/entry.feruchemical_gold.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json => category.feruchemy/entry.feruchemical_iron.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json => category.feruchemy/entry.feruchemical_nicrosil.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json => category.feruchemy/entry.feruchemical_pewter.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json => category.feruchemy/entry.feruchemical_steel.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json => category.feruchemy/entry.feruchemical_tin.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json => category.feruchemy/entry.feruchemical_zinc.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json => category.hemalurgy/entry.hemalurgic_aluminum.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json => category.hemalurgy/entry.hemalurgic_atium.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json => category.hemalurgy/entry.hemalurgic_bendalloy.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json => category.hemalurgy/entry.hemalurgic_brass.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json => category.hemalurgy/entry.hemalurgic_bronze.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json => category.hemalurgy/entry.hemalurgic_cadmium.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json => category.hemalurgy/entry.hemalurgic_chromium.json} (70%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json => category.hemalurgy/entry.hemalurgic_copper.json} (72%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json => category.hemalurgy/entry.hemalurgic_duralumin.json} (70%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json => category.hemalurgy/entry.hemalurgic_electrum.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json => category.hemalurgy/entry.hemalurgic_gold.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json => category.hemalurgy/entry.hemalurgic_iron.json} (70%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json => category.hemalurgy/entry.hemalurgic_lerasium.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json => category.hemalurgy/entry.hemalurgic_nicrosil.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json => category.hemalurgy/entry.hemalurgic_pewter.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json => category.hemalurgy/entry.hemalurgic_steel.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json => category.hemalurgy/entry.hemalurgic_tin.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json => category.hemalurgy/entry.hemalurgic_zinc.json} (71%) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index f9ff10234..1b15e6343 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -9bee2fb2c3ea8c2acc55bd8fb21b38f4c3ebe0f2 assets/cosmere/lang/en_us.json +3a39fa3a34f326fcb277c515b316c163d8eb4b60 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -540,60 +540,60 @@ fce8cb6a729d5be9268ffb478049fdc70de504b2 data/cosmere/loot_tables/blocks/tin_ore 93d9441ed0218c63d7f39970762e664e3d39a754 data/cosmere/loot_tables/blocks/zinc_block.json cefe179cd977a02ea0509418148726158976a815 data/cosmere/loot_tables/blocks/zinc_ore.json 344624ccff5d30da8bb1a30c932f384f656ca7f4 data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json -edfda8b8754187d7483d63fb0a5eb694d48948ba data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json -f95b389fa24ceb0f69609c04812443232ac5e96c data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json -a1ea0b0941a7aa11e598176f56b6c761626940e8 data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json -6491d28017c2cb713b3125a2159358bc1b121818 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json -52946b0b3cda9a5ef67cafc8478c65e2ad21c7f6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json -f82614dde57cc23adeabc9f77b604049e550e3fc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json -eaee86596fb39c19706ca4f760bd7c8562c47324 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json -4eec3fa0163a89d722dd5d05cecc41b7be811736 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json -7ce1344b1338ecc1a48aa1cb60884f1b795c27cc data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json -e818dbf642ee06dbf217984c365fb38ba35d0267 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json -2df7217383a1b1e1651d6800be2c18596d6f292b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json -0e7de0a989b908bcc586d0912fd12a6af7071999 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json -11801e3b49d5f5ae59d4ccafb833bc3372c69e28 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json -ece30aa503d0f189c56c30dafdeb30d8dcd9adc9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json -01dca11f0d76542932b5a2376d029ed7cdc6a7f7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json -5038beef95d25ff115efdc48c76a92dfae1d2ebf data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json -215e193a852fd3fcf28b5652a3e8123fed4498e7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json -e92429bf020c5d0c4ac81201233c8e614c5eaf2f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json -906b21ce375cea37513cb6a09c2643295c1fd6d0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json -2e960b5355f77cbff7074e8ac3b384c5fb2baa93 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json -0b0aef6a72074556b93fd084c9969c5dc73b3da4 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json -538303df8e7edff9b2b3b1ee0adc9da3fdfab8dd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json -166436cb42fcaaeea5891cdc6e4d02cecbf831c5 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json -9963ea5dc66ff9286c48ab73577d40ef25f85ea6 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json -c089fbe533f5e35e57e63a5dcd21030502bdf595 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json -45c072669eab716bf8670afbfa70c2265a49d81a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json -3993457a3b9320adb280a337dae34780f6deedee data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json -ee825c9afcad597658d90758b97b12ecf90758a8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json -1e82ff8f7b37028a7889d4fc3e7d475de62c4772 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json -1091a88e9be3f1c3cae0ad0e50647c7b979faf1f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json -e5f8bad38fc1d401ba33acfc6fb2bc89f0db52f8 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json -ddd05ae8e07d051dcfd261ab18cbafa6d6276629 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json -8c3d5ba087fc23324b0b4754e3f5b7acb8b5a366 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json -cb3ec91194045f0ec38ae859d209f0841fc27206 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json -f05a8a17586f78d62f7b2d496f868330f4f347f0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json -cf0ab5fbf06db36f08dabdc9c63f0af083cc68d3 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json -0f591cd5c97282338bdc30f97c054c33da541be9 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json -f444f8be35beae1a18c36031b61e7cc79c925022 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json -a534f1356f2b92fef1d2b00da60298ab687b133a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json -e77823dd6937d3a7d8ce88f05fef7c805a6e5970 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json -7b40b582a860e338b28cf0b160addd1eaa51edf1 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json -241bb01d9a2b725086dd121939293f010d1eb6f0 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json -7b2b0584354a0f2fdb5713f21648d7b8686d21bd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json -2e63acd2d22b1cc735aac36b6ec7045129dc364f data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json -46a3076a2e7c530caf0065f0e21dc89ad455582b data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json -498eb1d9e6d47479f04cfdb1f53c9916745adfa7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json -f21963ac121456bb07b58b22f2cbc0547cf2adef data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json -94d0d24931561c5ec842d2f3227639f13df3f48a data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json -e3274b4c0afa58e7398b392f56aef69713415105 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json -543d17672a2549a124bc4b6ecd9b31f57a86582e data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json -7c73bfe4ad333a3f04ff5b31d85ec069c5150696 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json -479519e22151caefb9566658d708b733a5c2f0bd data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json -d6fc47c03247238c43edde161d2f4895c03708a7 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json -aa1907ef13e169b4879b82f8e07a15fb083a3b30 data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json +4918153315373d87d8a8cb737643fdb7b365455b data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json +c099fbeada62002688e2b129cc28665a43022446 data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json +0a03ac7dab64fe5561f7c5171f039313948bfc54 data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json +93ec07bf980ce1647ff1eeb0234cbfdc300237c7 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json +cd9236287d659fa7c435e70bdbf72fa622225a7a data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json +6db223158505b505954865526ea5c8d76087efa1 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json +e4a4db74509b1d89f9007b3938f4b31811f5efab data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json +6f396f55e684449cbd8819837439f851dc01803f data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json +ca73bbbe87fed446672247ccea8dae5408c31f19 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json +4d99c654ed21616669f1cc1d35c4fae22480373a data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json +3990b9f883f3024ca3e772af8b2e00a3f1f3b86e data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json +e0d2b3e79276779a8660a7b0b5e33ddff224a128 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json +bf2a739c3f78f2e2f17f9dcbf0ea73fb31740b3f data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json +c0ca5b70e5eca3e5442d4e80e2e8f58089a6367c data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json +3307e0f7d5441aa34a118f2f72a1512c266bc233 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json +4aed12aebe935d82df58667d4486dd04e6355201 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json +7c4e6fefff6aac1ad9ea47804f839f7b62d06637 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json +8bd12706cb67efffe4bc5324f7a39189d77b3ced data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json +e5e1b6b8210926f6ef579de7dfb06b7ce0279fac data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json +e805b82fa1f0e74df65167836b5961f3ebfd018d data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json +2bbe675eda991b1e88d26e626b104b0453e0a3a9 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json +8491cc6ca34671463b2d2ea99f5b8421047a5bb0 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json +50b88af4b42340cb52ba68779dbb779c1b693db0 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json +d26ef0090de94b01491c00fb7e14c8e33f60f29e data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json +27516f4eb2634ccbdd2dd3a98fd86b022577a79b data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json +cdabd1b67c3a46e5212b16664515dca5fc754f7a data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json +73d87c8a11bdbb4ccb888bb706fe655384c12110 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json +c1650b775cf436294feb2d07273bf149391fc557 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json +e8ebc3739b400e7f5078fde67990f81871a62cf7 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json +79a49a2378d83d6dc58b7781e98ed6a5aa944de5 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json +33191d3488b08cbc54b14b0e5a32fbf5fe3e0d7f data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json +23ec7fee455607a4e0e8cad8454110b7fd6061cf data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json +eed36fed5048308f4851476c1d3f19edf000d785 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json +589a383319d6d069e966fe2f33f379e9afd38439 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json +39d6cfe3e6f9c1512e194bb7e4b153ebaa1f2fe7 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json +7bb85ddda9421ef97772e3aca966f4793f4f1e91 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json +fe2db4b22fc95296a8efb48770c07934ab78df45 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json +398e1ff049451f4a128f463977eb641014cfec98 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json +c5f6102aab45fa94049130bf4f5196016f5720da data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json +57916764f0a2b088e4b1f14f061930c72347341f data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json +3ee9e100095a9d76cae7d57d017f5eda841aba75 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json +f21dc73617e2fa34dc59bbf907ffe23c9d5a4ba8 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json +ad89ed5a20bdfdc4da3a7dcc7bd341b3b6db47b4 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json +50416649cd715881f3998f443d3ed116e85e43ea data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json +30c3151605e031fd181fc5079e3197d1cea41ca3 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json +29f2c2a54a7835d941dcd261cab9a7a3dcf267d2 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json +9c95c35edb5a23d117abc57ae7cc99a421f6ff6f data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json +eca6d89c32422e43d7e9e25bdf5103b4ea6c7a35 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json +ca1a742c681d1b933a8a5f6df1aa85797d389711 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json +300578be1e393c072572e5d0765863e3268f6a13 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json +53a9383f790f5428de23ca12d8d81e3368e5edae data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json +62b5c6aab80427d65851a4beec1c8c0cf450ed54 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json +26d9620ff029dacbdbf1d24e308716c2b5dc8349 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json +6e77a8c44385f1b651246c4cd8904569bd78998c data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json dc61a3e81ab1124cab2a9b211ba2cc97593c44a8 data/cosmere/recipes/alloying/blend/bendalloy.json a431820155ce3767ebcadbb8ebbb39d3e2f78ef5 data/cosmere/recipes/alloying/blend/brass.json de3927c12acfd3a0d4e6ad0cd0c5d192d41d889c data/cosmere/recipes/alloying/blend/bronze.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 89c4025b0..d1b38da89 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -56,6 +56,7 @@ "cosmere.connector": "Connector", "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", + "cosmere.entry.allomancy_basics": "Allomancy Basics", "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", "cosmere.entry.allomantic_atium": "Atium - Seer", "cosmere.entry.allomantic_bendalloy": "Bendalloy - Slider", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json similarity index 83% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json index 691dbde7d..81379905c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.allomancy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json @@ -1,5 +1,5 @@ { - "name": "cosmere.category.allomancy", + "name": "category.allomancy", "description": "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", "icon": "cosmere:pewter_nugget", "sortnum": 1, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json similarity index 80% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json index 7a9321d8c..e9b177789 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.feruchemy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json @@ -1,5 +1,5 @@ { - "name": "cosmere.category.feruchemy", + "name": "category.feruchemy", "description": "The art of equivalent exchange when it comes to the body. ", "icon": "cosmere:copper_bracelet_metalmind", "sortnum": 2, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json similarity index 81% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json index 239b4c5f0..3438f7a8f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/cosmere.category.hemalurgy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json @@ -1,5 +1,5 @@ { - "name": "cosmere.category.hemalurgy", + "name": "category.hemalurgy", "description": "The forbidden field of magic that takes from others so that you may get stronger.", "icon": "cosmere:atium_spike", "sortnum": 3, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json similarity index 86% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json index 1e6e31e26..c098b71f5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomancy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.allomancy_basics", - "category": "cosmere.category.allomancy", + "name": "entry.allomancy_basics", + "category": "cosmere:category.allomancy", "icon": "cosmere:pewter_nugget", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json similarity index 79% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json index 3f98fbc1e..79c588c8e 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_aluminum", - "category": "cosmere.category.allomancy", - "icon": "aluminum_ingot", + "name": "entry.allomantic_aluminum", + "category": "cosmere:category.allomancy", + "icon": "cosmere:aluminum_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json similarity index 78% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json index b9565a5d8..1ee4eca88 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_bendalloy", - "category": "cosmere.category.allomancy", - "icon": "bendalloy_ingot", + "name": "entry.allomantic_bendalloy", + "category": "cosmere:category.allomancy", + "icon": "cosmere:bendalloy_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json similarity index 74% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json index 8e61c67e7..bd8a387bc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_brass", - "category": "cosmere.category.allomancy", - "icon": "brass_ingot", + "name": "entry.allomantic_brass", + "category": "cosmere:category.allomancy", + "icon": "cosmere:brass_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json similarity index 75% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json index 91cd94c12..0724ea643 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_bronze", - "category": "cosmere.category.allomancy", - "icon": "bronze_ingot", + "name": "entry.allomantic_bronze", + "category": "cosmere:category.allomancy", + "icon": "cosmere:bronze_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json similarity index 75% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json index 4c6b18746..fa4e92e0a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_cadmium", - "category": "cosmere.category.allomancy", - "icon": "cadmium_ingot", + "name": "entry.allomantic_cadmium", + "category": "cosmere:category.allomancy", + "icon": "cosmere:cadmium_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json similarity index 77% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json index 7140a841e..51b596722 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_chromium", - "category": "cosmere.category.allomancy", - "icon": "chromium_ingot", + "name": "entry.allomantic_chromium", + "category": "cosmere:category.allomancy", + "icon": "cosmere:chromium_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json similarity index 79% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json index 98003d0fb..47ba46e96 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_copper", - "category": "cosmere.category.allomancy", - "icon": "copper_ingot", + "name": "entry.allomantic_copper", + "category": "cosmere:category.allomancy", + "icon": "cosmere:copper_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json similarity index 79% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json index b17cb9b9a..e23e444b3 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_duralumin", - "category": "cosmere.category.allomancy", - "icon": "duralumin_ingot", + "name": "entry.allomantic_duralumin", + "category": "cosmere:category.allomancy", + "icon": "cosmere:duralumin_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json index 3bd77c262..4818925ea 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_electrum", - "category": "cosmere.category.allomancy", - "icon": "electrum_ingot", + "name": "entry.allomantic_electrum", + "category": "cosmere:category.allomancy", + "icon": "cosmere:electrum_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json similarity index 70% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json index 2f5f23646..67737e858 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_gold", - "category": "cosmere.category.allomancy", - "icon": "gold_ingot", + "name": "entry.allomantic_gold", + "category": "cosmere:category.allomancy", + "icon": "minecraft:gold_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json similarity index 78% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json index c87dff5ca..d5f1e42a5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_iron", - "category": "cosmere.category.allomancy", - "icon": "iron_ingot", + "name": "entry.allomantic_iron", + "category": "cosmere:category.allomancy", + "icon": "minecraft:iron_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json similarity index 78% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json index e0f87f35b..f89f228ae 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_nicrosil", - "category": "cosmere.category.allomancy", - "icon": "nicrosil_ingot", + "name": "entry.allomantic_nicrosil", + "category": "cosmere:category.allomancy", + "icon": "cosmere:nicrosil_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json similarity index 79% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json index 88e0fd2f0..ed103599f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_pewter", - "category": "cosmere.category.allomancy", - "icon": "pewter_ingot", + "name": "entry.allomantic_pewter", + "category": "cosmere:category.allomancy", + "icon": "cosmere:pewter_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json similarity index 77% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json index 30f0b4d02..cff363743 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_steel", - "category": "cosmere.category.allomancy", - "icon": "steel_ingot", + "name": "entry.allomantic_steel", + "category": "cosmere:category.allomancy", + "icon": "cosmere:steel_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json similarity index 79% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json index bdb8d3729..62af627e9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_tin", - "category": "cosmere.category.allomancy", - "icon": "tin_ingot", + "name": "entry.allomantic_tin", + "category": "cosmere:category.allomancy", + "icon": "cosmere:tin_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json similarity index 76% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json index 1e44ddb1e..c2c07b61e 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.allomancy/cosmere.entry.allomantic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json @@ -1,7 +1,7 @@ { - "name": "cosmere.entry.allomantic_zinc", - "category": "cosmere.category.allomancy", - "icon": "zinc_ingot", + "name": "entry.allomantic_zinc", + "category": "cosmere:category.allomancy", + "icon": "cosmere:zinc_nugget", "pages": [ { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json index dca955838..c3c6eecd0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_aluminum", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_aluminum", + "category": "cosmere:category.feruchemy", "icon": "cosmere:aluminum_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json index 7044500d1..a5d7c2ed3 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_bendalloy", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_bendalloy", + "category": "cosmere:category.feruchemy", "icon": "cosmere:bendalloy_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json index 26fe47a38..54b13a626 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_brass", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_brass", + "category": "cosmere:category.feruchemy", "icon": "cosmere:brass_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json index a1cbfcf79..746429ce0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_bronze", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_bronze", + "category": "cosmere:category.feruchemy", "icon": "cosmere:bronze_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json index 4c8777ad4..6bb79137e 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_cadmium", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_cadmium", + "category": "cosmere:category.feruchemy", "icon": "cosmere:cadmium_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json index 2f0438c04..1b268a950 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_chromium", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_chromium", + "category": "cosmere:category.feruchemy", "icon": "cosmere:chromium_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json index 27c835eb8..10af856c5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_copper", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_copper", + "category": "cosmere:category.feruchemy", "icon": "cosmere:copper_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json index 14978eda5..cff4f6953 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_duralumin", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_duralumin", + "category": "cosmere:category.feruchemy", "icon": "cosmere:duralumin_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json index 24ef07a0a..59dfa0a91 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_electrum", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_electrum", + "category": "cosmere:category.feruchemy", "icon": "cosmere:electrum_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json index 012478924..7b6247303 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_gold", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_gold", + "category": "cosmere:category.feruchemy", "icon": "cosmere:gold_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json index 7ffe4f931..f7c0f28d8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_iron", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_iron", + "category": "cosmere:category.feruchemy", "icon": "cosmere:iron_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json index cc3fa4bc9..681718817 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_nicrosil", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_nicrosil", + "category": "cosmere:category.feruchemy", "icon": "cosmere:nicrosil_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json index 2ed9dc938..b2d3636ef 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_pewter", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_pewter", + "category": "cosmere:category.feruchemy", "icon": "cosmere:pewter_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json index 34c64de5c..58a26a04d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_steel", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_steel", + "category": "cosmere:category.feruchemy", "icon": "cosmere:steel_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json index e72ab44fc..baa38c9e9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_tin", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_tin", + "category": "cosmere:category.feruchemy", "icon": "cosmere:tin_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json index 5d083c7c8..01c67925a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.feruchemy/cosmere.entry.feruchemical_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.feruchemical_zinc", - "category": "cosmere.category.feruchemy", + "name": "entry.feruchemical_zinc", + "category": "cosmere:category.feruchemy", "icon": "cosmere:zinc_bracelet_metalmind", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json index c8173cf99..bf41d968e 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_aluminum", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_aluminum", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:aluminum_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json index b5afdb42b..ec90cd2c6 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_atium", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_atium", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:atium_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json index f20b22272..7c55022d6 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_bendalloy", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_bendalloy", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:bendalloy_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json index e19741247..d7091a2c0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_brass", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_brass", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:brass_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json index 8a6d79c87..c9caae1a9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_bronze", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_bronze", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:bronze_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json index 64d7c5246..44ea7da6b 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_cadmium", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_cadmium", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:cadmium_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json similarity index 70% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json index 5334d85c5..b4af05b7a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_chromium", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_chromium", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:chromium_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json similarity index 72% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json index 8ad24f3ec..b36b20227 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_copper", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_copper", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:copper_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json similarity index 70% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json index 8b09b2880..4314793d7 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_duralumin", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_duralumin", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:duralumin_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json index f2c24e730..8df9146d1 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_electrum", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_electrum", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:electrum_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json index 9c17fd6f3..3395522f2 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_gold", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_gold", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:gold_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json similarity index 70% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json index 36380476b..a5d5e9246 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_iron", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_iron", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:iron_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json index 4334c312e..42daa7c88 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_lerasium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_lerasium", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_lerasium", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:lerasium_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json index a5b907c67..9e8e7498d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_nicrosil", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_nicrosil", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:nicrosil_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json index 4135ac2f3..53dc8b9fd 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_pewter", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_pewter", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:pewter_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json index c6cb032b7..189991392 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_steel", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_steel", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:steel_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json index b6cf1ceae..f12cd071c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_tin", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_tin", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:tin_spike", "pages": [ { diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json index 69aac11d3..5de622236 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/cosmere.category.hemalurgy/cosmere.entry.hemalurgic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json @@ -1,6 +1,6 @@ { - "name": "cosmere.entry.hemalurgic_zinc", - "category": "cosmere.category.hemalurgy", + "name": "entry.hemalurgic_zinc", + "category": "cosmere:category.hemalurgy", "icon": "cosmere:zinc_spike", "pages": [ { diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 3714302c4..74a5bb392 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -26,6 +26,7 @@ import net.minecraft.world.entity.monster.WitherSkeleton; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraft.world.item.Rarity; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; @@ -270,9 +271,17 @@ public MetalIngotItem getIngotItem() return (MetalIngotItem) ItemsRegistry.METAL_INGOTS.get(this).get(); } - public MetalNuggetItem getNuggetItem() + public Item getNuggetItem() { - return (MetalNuggetItem) ItemsRegistry.METAL_NUGGETS.get(this).get(); + switch (this) + { + case IRON: + return Items.IRON_NUGGET; + case GOLD: + return Items.GOLD_NUGGET; + } + + return ItemsRegistry.METAL_NUGGETS.get(this).get(); } public HemalurgicSpikeItem getSpikeItem() diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index d0b4d73b2..551940b83 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -186,6 +186,7 @@ else if (item instanceof MetalmindItem) add("cosmere.category.basics", "Basics"); add("cosmere.category.allomancy", "Allomancy"); + add("cosmere.entry.allomancy_basics", "Allomancy Basics"); add("cosmere.category.feruchemy", "Feruchemy"); add("cosmere.category.hemalurgy", "Hemalurgy"); diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java index 91dce6000..ae04e8269 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java @@ -24,7 +24,7 @@ public static class Category public Category(String name, String description, String icon) { - this.name = "cosmere.category." + name.toLowerCase(); + this.name = "category." + name.toLowerCase(); this.description = description; this.icon = icon; } @@ -74,9 +74,16 @@ public static class Entry //itemstack strings -> page 0-index num public Map extra_recipe_mappings; + public Entry() { } + + public Entry(String name, Category category) + { + this(name, category, category.icon); + } + public Entry(String name, Category category, String icon) { - this.name = "cosmere.entry." + name.toLowerCase(); + this.name = "entry." + name.toLowerCase(); this.category = category; this.icon = icon; } @@ -88,7 +95,7 @@ public JsonElement serialize() //enforced jsonobject.addProperty("name", this.name); - jsonobject.addProperty("category", this.category.name); + jsonobject.addProperty("category", "cosmere:" + this.category.name); jsonobject.addProperty("icon", this.icon); JsonArray jsonarray = new JsonArray(); @@ -193,6 +200,12 @@ protected void addElement(JsonObject jsonObject, String key, String value) jsonObject.addProperty(key, value); } } + + public Page setTitle(String title) + { + this.title = title; + return this; + } } public static class CraftingPage extends Page diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 5c5755354..1910e2a6e 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -56,10 +56,12 @@ public static void collect(List categories, List Date: Sat, 14 May 2022 09:17:55 +1200 Subject: [PATCH 0122/1090] Fix cosmere fortune bonus --- .../resources/data/cosmere/loot_modifiers/fortune_bonus.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json b/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json index 0017f3d74..c2052f742 100644 --- a/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json +++ b/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json @@ -1,4 +1,5 @@ { + "type": "cosmere:fortune_bonus", "conditions": [], "function": "cosmere:fortune_bonus" } \ No newline at end of file From 859f35e7d651929663badb90cfaa5b7ec00c147a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 09:31:42 +1200 Subject: [PATCH 0123/1090] Oops, fixed patchouli lang gen --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 154 +++++++++--------- .../cosmere/datagen/language/EngLangGen.java | 18 +- 3 files changed, 87 insertions(+), 87 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 1b15e6343..21b4c8f3b 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -3a39fa3a34f326fcb277c515b316c163d8eb4b60 assets/cosmere/lang/en_us.json +81c1296b82288daf7b97e2a9bd623aba1cea5893 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index d1b38da89..10b44b470 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -40,6 +40,10 @@ "block.cosmere.zinc_block": "Zinc Block", "block.cosmere.zinc_ore": "Zinc Ore", "block.cosmere.zinc_ore_deepslate": "Zinc Ore Deepslate", + "category.allomancy": "Allomancy", + "category.basics": "Basics", + "category.feruchemy": "Feruchemy", + "category.hemalurgy": "Hemalurgy", "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", @@ -48,87 +52,10 @@ "cosmere.augur": "Augur", "cosmere.bloodmaker": "Bloodmaker", "cosmere.brute": "Brute", - "cosmere.category.allomancy": "Allomancy", - "cosmere.category.basics": "Basics", - "cosmere.category.feruchemy": "Feruchemy", - "cosmere.category.hemalurgy": "Hemalurgy", "cosmere.coinshot": "Coinshot", "cosmere.connector": "Connector", "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", - "cosmere.entry.allomancy_basics": "Allomancy Basics", - "cosmere.entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", - "cosmere.entry.allomantic_atium": "Atium - Seer", - "cosmere.entry.allomantic_bendalloy": "Bendalloy - Slider", - "cosmere.entry.allomantic_brass": "Brass - Soother", - "cosmere.entry.allomantic_bronze": "Bronze - Seeker", - "cosmere.entry.allomantic_cadmium": "Cadmium - Pulser", - "cosmere.entry.allomantic_chromium": "Chromium - Leecher", - "cosmere.entry.allomantic_copper": "Copper - Smoker", - "cosmere.entry.allomantic_duralumin": "Duralumin - Duralumin Gnat", - "cosmere.entry.allomantic_electrum": "Electrum - Oracle", - "cosmere.entry.allomantic_gold": "Gold - Augur", - "cosmere.entry.allomantic_harmonium": "Harmonium - Misting Harmonium", - "cosmere.entry.allomantic_iron": "Iron - Lurcher", - "cosmere.entry.allomantic_lead": "Lead - Misting Lead", - "cosmere.entry.allomantic_lerasatium": "Lerasatium - Misting Lerasatium", - "cosmere.entry.allomantic_lerasium": "Lerasium - Mistborn", - "cosmere.entry.allomantic_malatium": "Malatium - Misting Malatium", - "cosmere.entry.allomantic_nickel": "Nickel - Misting Nickel", - "cosmere.entry.allomantic_nicrosil": "Nicrosil - Nicroburst", - "cosmere.entry.allomantic_pewter": "Pewter - Thug", - "cosmere.entry.allomantic_silver": "Silver - Misting Silver", - "cosmere.entry.allomantic_steel": "Steel - Coinshot", - "cosmere.entry.allomantic_tin": "Tin - Tineye", - "cosmere.entry.allomantic_zinc": "Zinc - Rioter", - "cosmere.entry.feruchemical_aluminum": "Aluminum - Trueself", - "cosmere.entry.feruchemical_atium": "Atium - Elderling", - "cosmere.entry.feruchemical_bendalloy": "Bendalloy - Subsumer", - "cosmere.entry.feruchemical_brass": "Brass - Firesoul", - "cosmere.entry.feruchemical_bronze": "Bronze - Sentry", - "cosmere.entry.feruchemical_cadmium": "Cadmium - Gasper", - "cosmere.entry.feruchemical_chromium": "Chromium - Spinner", - "cosmere.entry.feruchemical_copper": "Copper - Archivist", - "cosmere.entry.feruchemical_duralumin": "Duralumin - Connector", - "cosmere.entry.feruchemical_electrum": "Electrum - Pinnacle", - "cosmere.entry.feruchemical_gold": "Gold - Bloodmaker", - "cosmere.entry.feruchemical_harmonium": "Harmonium - Ferring Harmonium", - "cosmere.entry.feruchemical_iron": "Iron - Skimmer", - "cosmere.entry.feruchemical_lead": "Lead - Ferring Lead", - "cosmere.entry.feruchemical_lerasatium": "Lerasatium - Feruchemist", - "cosmere.entry.feruchemical_lerasium": "Lerasium - Ferring Lerasium", - "cosmere.entry.feruchemical_malatium": "Malatium - Ferring Malatium", - "cosmere.entry.feruchemical_nickel": "Nickel - Ferring Nickel", - "cosmere.entry.feruchemical_nicrosil": "Nicrosil - Soulbearer", - "cosmere.entry.feruchemical_pewter": "Pewter - Brute", - "cosmere.entry.feruchemical_silver": "Silver - Ferring Silver", - "cosmere.entry.feruchemical_steel": "Steel - Steelrunner", - "cosmere.entry.feruchemical_tin": "Tin - Windwhisperer", - "cosmere.entry.feruchemical_zinc": "Zinc - Sparker", - "cosmere.entry.hemalurgic_aluminum": "Aluminum", - "cosmere.entry.hemalurgic_atium": "Atium", - "cosmere.entry.hemalurgic_bendalloy": "Bendalloy", - "cosmere.entry.hemalurgic_brass": "Brass", - "cosmere.entry.hemalurgic_bronze": "Bronze", - "cosmere.entry.hemalurgic_cadmium": "Cadmium", - "cosmere.entry.hemalurgic_chromium": "Chromium", - "cosmere.entry.hemalurgic_copper": "Copper", - "cosmere.entry.hemalurgic_duralumin": "Duralumin", - "cosmere.entry.hemalurgic_electrum": "Electrum", - "cosmere.entry.hemalurgic_gold": "Gold", - "cosmere.entry.hemalurgic_harmonium": "Harmonium", - "cosmere.entry.hemalurgic_iron": "Iron", - "cosmere.entry.hemalurgic_lead": "Lead", - "cosmere.entry.hemalurgic_lerasatium": "Lerasatium", - "cosmere.entry.hemalurgic_lerasium": "Lerasium", - "cosmere.entry.hemalurgic_malatium": "Malatium", - "cosmere.entry.hemalurgic_nickel": "Nickel", - "cosmere.entry.hemalurgic_nicrosil": "Nicrosil", - "cosmere.entry.hemalurgic_pewter": "Pewter", - "cosmere.entry.hemalurgic_silver": "Silver", - "cosmere.entry.hemalurgic_steel": "Steel", - "cosmere.entry.hemalurgic_tin": "Tin", - "cosmere.entry.hemalurgic_zinc": "Zinc", "cosmere.firesoul": "Firesoul", "cosmere.gasper": "Gasper", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", @@ -192,6 +119,79 @@ "effect.cosmere.tapping_tin": "Tapping Tin", "effect.cosmere.tapping_zinc": "Tapping Zinc", "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", + "entry.allomancy_basics": "Allomancy Basics", + "entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", + "entry.allomantic_atium": "Atium - Seer", + "entry.allomantic_bendalloy": "Bendalloy - Slider", + "entry.allomantic_brass": "Brass - Soother", + "entry.allomantic_bronze": "Bronze - Seeker", + "entry.allomantic_cadmium": "Cadmium - Pulser", + "entry.allomantic_chromium": "Chromium - Leecher", + "entry.allomantic_copper": "Copper - Smoker", + "entry.allomantic_duralumin": "Duralumin - Duralumin Gnat", + "entry.allomantic_electrum": "Electrum - Oracle", + "entry.allomantic_gold": "Gold - Augur", + "entry.allomantic_harmonium": "Harmonium - Misting Harmonium", + "entry.allomantic_iron": "Iron - Lurcher", + "entry.allomantic_lead": "Lead - Misting Lead", + "entry.allomantic_lerasatium": "Lerasatium - Misting Lerasatium", + "entry.allomantic_lerasium": "Lerasium - Mistborn", + "entry.allomantic_malatium": "Malatium - Misting Malatium", + "entry.allomantic_nickel": "Nickel - Misting Nickel", + "entry.allomantic_nicrosil": "Nicrosil - Nicroburst", + "entry.allomantic_pewter": "Pewter - Thug", + "entry.allomantic_silver": "Silver - Misting Silver", + "entry.allomantic_steel": "Steel - Coinshot", + "entry.allomantic_tin": "Tin - Tineye", + "entry.allomantic_zinc": "Zinc - Rioter", + "entry.feruchemical_aluminum": "Aluminum - Trueself", + "entry.feruchemical_atium": "Atium - Elderling", + "entry.feruchemical_bendalloy": "Bendalloy - Subsumer", + "entry.feruchemical_brass": "Brass - Firesoul", + "entry.feruchemical_bronze": "Bronze - Sentry", + "entry.feruchemical_cadmium": "Cadmium - Gasper", + "entry.feruchemical_chromium": "Chromium - Spinner", + "entry.feruchemical_copper": "Copper - Archivist", + "entry.feruchemical_duralumin": "Duralumin - Connector", + "entry.feruchemical_electrum": "Electrum - Pinnacle", + "entry.feruchemical_gold": "Gold - Bloodmaker", + "entry.feruchemical_harmonium": "Harmonium - Ferring Harmonium", + "entry.feruchemical_iron": "Iron - Skimmer", + "entry.feruchemical_lead": "Lead - Ferring Lead", + "entry.feruchemical_lerasatium": "Lerasatium - Feruchemist", + "entry.feruchemical_lerasium": "Lerasium - Ferring Lerasium", + "entry.feruchemical_malatium": "Malatium - Ferring Malatium", + "entry.feruchemical_nickel": "Nickel - Ferring Nickel", + "entry.feruchemical_nicrosil": "Nicrosil - Soulbearer", + "entry.feruchemical_pewter": "Pewter - Brute", + "entry.feruchemical_silver": "Silver - Ferring Silver", + "entry.feruchemical_steel": "Steel - Steelrunner", + "entry.feruchemical_tin": "Tin - Windwhisperer", + "entry.feruchemical_zinc": "Zinc - Sparker", + "entry.hemalurgic_aluminum": "Aluminum", + "entry.hemalurgic_atium": "Atium", + "entry.hemalurgic_bendalloy": "Bendalloy", + "entry.hemalurgic_brass": "Brass", + "entry.hemalurgic_bronze": "Bronze", + "entry.hemalurgic_cadmium": "Cadmium", + "entry.hemalurgic_chromium": "Chromium", + "entry.hemalurgic_copper": "Copper", + "entry.hemalurgic_duralumin": "Duralumin", + "entry.hemalurgic_electrum": "Electrum", + "entry.hemalurgic_gold": "Gold", + "entry.hemalurgic_harmonium": "Harmonium", + "entry.hemalurgic_iron": "Iron", + "entry.hemalurgic_lead": "Lead", + "entry.hemalurgic_lerasatium": "Lerasatium", + "entry.hemalurgic_lerasium": "Lerasium", + "entry.hemalurgic_malatium": "Malatium", + "entry.hemalurgic_nickel": "Nickel", + "entry.hemalurgic_nicrosil": "Nicrosil", + "entry.hemalurgic_pewter": "Pewter", + "entry.hemalurgic_silver": "Silver", + "entry.hemalurgic_steel": "Steel", + "entry.hemalurgic_tin": "Tin", + "entry.hemalurgic_zinc": "Zinc", "gui.cosmere.button.back": "Back", "gui.cosmere.cancel": "> Cancel", "gui.cosmere.confirm": "> Confirm", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 551940b83..215edfba6 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -152,9 +152,9 @@ else if (item instanceof MetalmindItem) String fKey = metalType.getFeruchemyRegistryName(); String hKey = "hemalurgic_" + name; - String allomancyGuide = "cosmere.entry." + aKey; - String feruchemyGuide = "cosmere.entry." + fKey; - String hemalurgyGuide = "cosmere.entry." + hKey; + String allomancyGuide = "entry." + aKey; + String feruchemyGuide = "entry." + fKey; + String hemalurgyGuide = "entry." + hKey; add(allomancyGuide, StringHelper.fixCapitalisation(a)); add(feruchemyGuide, StringHelper.fixCapitalisation(f)); @@ -181,14 +181,14 @@ else if (item instanceof MetalmindItem) } + add("category.basics", "Basics"); + add("category.allomancy", "Allomancy"); + add("entry.allomancy_basics", "Allomancy Basics"); + add("category.feruchemy", "Feruchemy"); + add("category.hemalurgy", "Hemalurgy"); - add("tooltip.cosmere.metals.contained", "Contained Metals:"); - add("cosmere.category.basics", "Basics"); - add("cosmere.category.allomancy", "Allomancy"); - add("cosmere.entry.allomancy_basics", "Allomancy Basics"); - add("cosmere.category.feruchemy", "Feruchemy"); - add("cosmere.category.hemalurgy", "Hemalurgy"); + add("tooltip.cosmere.metals.contained", "Contained Metals:"); //ItemGroups/Tabs add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); From f68173c1318debfe4f4313083ea508ff658f704a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 09:32:23 +1200 Subject: [PATCH 0124/1090] Fix crash on loot level event null damage source --- .../leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java index 93b70daa5..a0ec7d37d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ChromiumTapEffect.java @@ -34,7 +34,7 @@ public ChromiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) public void onLootingLevelEvent(LootingLevelEvent event) { boolean isRemote = event.getEntityLiving().level.isClientSide; - boolean entityNotLiving = !(event.getDamageSource().getEntity() instanceof LivingEntity); + boolean entityNotLiving = event.getDamageSource() == null || !(event.getDamageSource().getEntity() instanceof LivingEntity); if (isRemote || entityNotLiving) { From 9f1b3d4b2b56ea3a4b4f69cc0471754eb9df36c8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 09:49:29 +1200 Subject: [PATCH 0125/1090] Making cosmere ores half as common because they were everywhere --- src/main/java/leaf/cosmere/handlers/CommonEvents.java | 2 +- src/main/java/leaf/cosmere/registry/FeatureRegistry.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 8039b605d..490a3b13e 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -67,7 +67,7 @@ public static void onBiomeLoad(BiomeLoadingEvent event) FeatureRegistry.PlacedFeatures.PLACED_ORE_FEATURES.get(metalType) ); - LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); + //LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); } } diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index 9b27324ef..9a434afc7 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -95,7 +95,7 @@ public static class PlacedFeatures metalType.getName() + Constants.RegNameStubs.ORE, ConfiguredFeatures.ORE_FEATURES.get(metalType), commonOrePlacement( - 20,//width? + 10,//width? HeightRangePlacement.triangle( VerticalAnchor.absolute(-32), VerticalAnchor.absolute(150)) From 7f71698fa9d4eaf4fe92bfe58fe2e471d3e5a2c0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 16:18:19 +1200 Subject: [PATCH 0126/1090] Improved patchouli data gen, ids are shorter and cleaner. --- .../leaf/cosmere/constants/Constants.java | 1 - .../java/leaf/cosmere/constants/Metals.java | 64 +----------------- .../cosmere/datagen/language/EngLangGen.java | 10 +-- .../cosmere/datagen/patchouli/BookStuff.java | 42 +++++++++--- .../datagen/patchouli/PatchouliGen.java | 7 +- .../patchouli/PatchouliTextFormat.java | 67 +++++++++++++++++++ .../cosmere/utils/helpers/StringHelper.java | 8 +++ 7 files changed, 115 insertions(+), 84 deletions(-) create mode 100644 src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index db8495dfe..eacaa278a 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -61,7 +61,6 @@ public static class RegNameStubs public static final String NECKLACE = "_necklace"; public static final String INGOT = "_ingot"; public static final String NUGGET = "_nugget"; - public static final String SHAVINGS = "_shavings"; public static final String SPIKE = "_spike"; diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 74a5bb392..47e0bde37 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -781,7 +781,7 @@ else if (catType == 8)//white return strengthToAdd; } - public String getHemalurgicUseString() + public String getShortHemalurgicUseString() { switch (this) { @@ -834,68 +834,6 @@ public String getHemalurgicUseString() return "Unknown..."; } - public String GetAllomancyDescription() - { - switch (this) - { - case IRON: - return "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them.";//+ - //"The burning of Iron is affected by normal laws of physics, so when the user pulls upon something with more weight, it will take more iron to move this, and if the user pulls upon something with more weight than themselves, they will be pulled through the air towards the aforementioned object. " + - //"The burning of Iron is used to fly, manipulate various objects, pull someone towards you (assuming that they have metal on their person), disarm somebody with a metal weapon, change the flight path of flying coins, and for a multitude of other things."; - - case STEEL: - return "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object.";//+ - //"Conservation of momentum still applies here, so if you trying to push against blocks, expect to be thrown back in the opposite direction." + - //"Clever Allomancers use steel to allow themselves to fly through the air."; - - case TIN: - return "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from."; - - case PEWTER: - return "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself.";//+ - //"The major problem with pewter is that when it runs out, a large portion of the pain and injury that you resisted using the pewter hits you at once, potentially resulting in death. $(#f00)(NYI)$()"; - - case ZINC: - return "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\""; - - case BRASS: - return "In allomancy, brass gives the ability to \"soothe\" the emotions of others."; - - case COPPER: - return "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a 'coppercloud' which hides Allomancy from being detected by Bronze. ";//+ - //"Copperclouds are generally not piercible but those with exceptional strength in Bronze may do so."; - - case BRONZE: - return "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them.";//+ - //"Copper neutralises the ability for a Seeker to track allomancy by hiding it in a copper cloud, but extremely powerful Seekers or Mistborn, may still be able to pierce said shields."; - - case ALUMINUM: - return "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself."; - - case DURALUMIN: - return "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly."; - - case CHROMIUM: - return "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)."; - - case NICROSIL: - return "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves."; - - case CADMIUM: - return "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble."; - - case BENDALLOY: - return "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!"; - - case GOLD: - return "$(#f00)(NYI)$()"; - - case ELECTRUM: - return "$(#f00)(NYI)$()"; - - } - return ""; - } public String getFeruchemyMetalmindUse() diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 215edfba6..1e2bda592 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -61,7 +61,7 @@ protected void addTranslations() if (item instanceof HemalurgicSpikeItem) { - String use = ((HemalurgicSpikeItem) item).getMetalType().getHemalurgicUseString(); + String use = ((HemalurgicSpikeItem) item).getMetalType().getShortHemalurgicUseString(); add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); } else if (item instanceof MetalmindItem) @@ -137,7 +137,7 @@ else if (item instanceof MetalmindItem) } } - //guidebook + //work through each metal and generate localisation for related things. for (Metals.MetalType metalType : Metals.MetalType.values()) { final String name = metalType.getName(); @@ -181,12 +181,6 @@ else if (item instanceof MetalmindItem) } - add("category.basics", "Basics"); - add("category.allomancy", "Allomancy"); - add("entry.allomancy_basics", "Allomancy Basics"); - add("category.feruchemy", "Feruchemy"); - add("category.hemalurgy", "Hemalurgy"); - add("tooltip.cosmere.metals.contained", "Contained Metals:"); diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java index ae04e8269..877e06c1c 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java @@ -7,6 +7,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import leaf.cosmere.utils.helpers.StringHelper; import java.util.Map; @@ -24,17 +25,16 @@ public static class Category public Category(String name, String description, String icon) { - this.name = "category." + name.toLowerCase(); + this.name = name.toLowerCase(); this.description = description; this.icon = icon; } - public JsonElement serialize() { JsonObject jsonobject = new JsonObject(); - jsonobject.addProperty("name", this.name); + jsonobject.addProperty("name", StringHelper.fixCapitalisation(this.name));//Convert to people readable text jsonobject.addProperty("description", this.description); jsonobject.addProperty("icon", this.icon); @@ -61,6 +61,7 @@ public static class Entry public Page[] pages; + public String displayTitle = ""; public String advancement = ""; public String flag = ""; @@ -83,18 +84,18 @@ public Entry(String name, Category category) public Entry(String name, Category category, String icon) { - this.name = "entry." + name.toLowerCase(); + this.name = name.toLowerCase(); this.category = category; this.icon = icon; } - public JsonElement serialize() { JsonObject jsonobject = new JsonObject(); //enforced - jsonobject.addProperty("name", this.name); + final String displayTitleName = this.displayTitle.isEmpty() ? this.name : this.displayTitle; + jsonobject.addProperty("name", StringHelper.fixCapitalisation(displayTitleName));//ensure people readable text jsonobject.addProperty("category", "cosmere:" + this.category.name); jsonobject.addProperty("icon", this.icon); @@ -139,6 +140,12 @@ public JsonElement serialize() return jsonobject; } + + public Entry setDisplayTitle(String s) + { + displayTitle = s; + return this; + } } public abstract static class Page @@ -151,6 +158,12 @@ public abstract static class Page public String anchor = ""; public String[] recipes = null; + public Page(String type) + { + this.type = type; + this.text = ""; + } + public Page(String type, String text) { this.type = type; @@ -206,6 +219,12 @@ public Page setTitle(String title) this.title = title; return this; } + + public Page setText(String s) + { + text = s; + return this; + } } public static class CraftingPage extends Page @@ -215,19 +234,19 @@ public static class CraftingPage extends Page public CraftingPage(String recipe) { - super("crafting", ""); + super("patchouli:crafting", ""); this.recipe = recipe; } public CraftingPage(String text, String recipe) { - super("crafting", text); + super("patchouli:crafting", text); this.recipe = recipe; } public CraftingPage(String text, String recipe, String recipe2) { - super("crafting", text); + super("patchouli:crafting", text); this.recipe = recipe; this.recipe2 = recipe2; } @@ -493,6 +512,11 @@ public JsonElement serialize() public static class TextPage extends Page { + public TextPage() + { + super("text"); + } + public TextPage(String text) { super("text", text); diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java index 89dfce946..2dcacf4b2 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -12,6 +12,7 @@ import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; import leaf.cosmere.utils.helpers.LogHelper; +import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; import net.minecraft.data.HashCache; @@ -152,7 +153,7 @@ private static Path getCategoryPath(Path pathIn, BookStuff.Category category) String.format( "data/cosmere/patchouli_books/%s/en_us/categories/%s.json", GUIDE_NAME, - category.name)); + StringHelper.fixPath(category.name))); } private static Path getEntryPath(Path pathIn, BookStuff.Entry entry) @@ -161,8 +162,8 @@ private static Path getEntryPath(Path pathIn, BookStuff.Entry entry) String.format( "data/cosmere/patchouli_books/%s/en_us/entries/%s/%s.json", GUIDE_NAME, - entry.category.name, - entry.name)); + StringHelper.fixPath(entry.category.name), + StringHelper.fixPath(entry.name))); } /** diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java new file mode 100644 index 000000000..620f37d95 --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java @@ -0,0 +1,67 @@ +/* + * File created ~ 14 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.datagen.patchouli; + +import java.util.Locale; + +public class PatchouliTextFormat +{ + private static final StringBuilder s_stringBuilder = new StringBuilder(); + + public static String Item(String input) + { + return format(input, "$(item)"); + } + + public static String Thing(String input) + { + return format(input, "$(thing)"); + } + + public static String Obfuscate(String input) + { + return format(input, "$(obf)"); + } + + public static String Italics(String input) + { + return format(input, "$(italics)"); + } + + public static String Bold(String input) + { + return format(input, "$(bold)"); + } + + public static String Strikethrough(String input) + { + return format(input, "$(strike)"); + } + + public static String LinkEntry(String input, String entryToLinkTo) + { + //example + //$(l:cosmere:allomancy/allomantic_aluminum)aluminum$() + return format(input, "$(l:%s)".formatted(entryToLinkTo.toLowerCase(Locale.ROOT))); + } + + + private static String format(String input, String formatCode) + { + s_stringBuilder.append(formatCode); + s_stringBuilder.append(input); + if (!input.contains("$()")) + { + //Only need to clear once + s_stringBuilder.append("$()"); + } + + final String s = s_stringBuilder.toString(); + s_stringBuilder.setLength(0); + return s; + } + + +} diff --git a/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java index 153f5e3d1..b3c42126b 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/StringHelper.java @@ -5,6 +5,7 @@ package leaf.cosmere.utils.helpers; import java.util.Arrays; +import java.util.Locale; import java.util.stream.Collectors; public class StringHelper @@ -16,4 +17,11 @@ public static String fixCapitalisation(String text) String output = Arrays.stream(original.split("\\s+")).map(t -> t.substring(0, 1).toUpperCase() + t.substring(1)).collect(Collectors.joining(" ")); return output; } + + //Basically the opposite, make string suitable for path + public static String fixPath(String text) + { + String output = text.trim().toLowerCase(Locale.ROOT).replace(" ", "").replace(" ", "_").replace("/", "."); + return output; + } } From 089baa7e4fe72c06338c9052e2cc43f54f4e9aa3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 16:19:37 +1200 Subject: [PATCH 0127/1090] Cleaned/fixed allomancy documentation but not updated. --- .../categories/PatchouliAllomancy.java | 90 +++++++++++++++++-- 1 file changed, 84 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 1910e2a6e..53c6e6992 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -6,6 +6,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.utils.helpers.StringHelper; @@ -22,7 +23,7 @@ public static void collect(List categories, List categories, List categories, List Date: Sat, 14 May 2022 16:19:59 +1200 Subject: [PATCH 0128/1090] Cleaned/fixed feruchemy documentation but not updated. --- .../categories/PatchouliFeruchemy.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java index 061ed2545..66de9a317 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java @@ -4,12 +4,14 @@ package leaf.cosmere.datagen.patchouli.categories; +import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.datagen.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import net.minecraftforge.registries.RegistryObject; +import java.util.ArrayList; import java.util.List; import static leaf.cosmere.registry.ManifestationRegistry.FERUCHEMY_POWERS; @@ -18,16 +20,22 @@ public class PatchouliFeruchemy { public static void collect(List categories, List entries) { - - BookStuff.Category feruchemy = new BookStuff.Category( "feruchemy", "The art of equivalent exchange when it comes to the body. ", "cosmere:copper_bracelet_metalmind"); feruchemy.sortnum = 2; + categories.add(feruchemy); + List pages = new ArrayList<>(); - categories.add(feruchemy); + BookStuff.Entry feruchemyBasics = new BookStuff.Entry("feruchemy_basics", feruchemy, feruchemy.icon); + feruchemyBasics.priority = true; + pages.add(new BookStuff.TextPage("If you entered this world with an feruchemical ability, you're called a $(6)ferring$().", feruchemy.icon)); + pages.add(new BookStuff.CraftingPage("cosmere:atium_bracelet_metalmind").setText("Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap attributes.")); + + feruchemyBasics.pages = pages.toArray(BookStuff.Page[]::new); + entries.add(feruchemyBasics); //feruchemy @@ -41,21 +49,27 @@ public static void collect(List categories, List Date: Sat, 14 May 2022 16:20:32 +1200 Subject: [PATCH 0129/1090] Cleaned HemalurgyDocs. Updated to Ark's new entries. --- .../categories/PatchouliHemalurgy.java | 265 +++++++++++++++++- 1 file changed, 256 insertions(+), 9 deletions(-) diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java index dbbceff1d..be02e3b5b 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java @@ -6,7 +6,9 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; +import java.util.ArrayList; import java.util.List; public class PatchouliHemalurgy @@ -19,10 +21,55 @@ public static void collect(List categories, List pages = new ArrayList<>(); - categories.add(hemalurgy); + //hemalurgy basics entry + BookStuff.Entry hemalurgyBasics = new BookStuff.Entry("hemalurgy_basics", hemalurgy, hemalurgy.icon).setDisplayTitle("Hemalurgy (For Dummies)"); + hemalurgyBasics.priority = true; + + + BookStuff.Page terminologyPage = new BookStuff.TextPage(); + terminologyPage.setTitle("Terminology"); + terminologyPage.setText( + "In this journal, I shall explain all I have discovered about Hemalurgy. $(br)" + + "Firstly, some terminology:" + + "$(li) \"%s\" is when you kill something with a metal spike, hemalurgically charging that spike.".formatted(PatchouliTextFormat.Thing("Spiking")) + + "$(li) The \"%s\" is the one who is spiked, from whom the spike is hemalurgically charged.".formatted(PatchouliTextFormat.Thing("donor")) + + "$(li) The \"%s\" is the one who receives the spike after it has been hemalurgically charged.".formatted(PatchouliTextFormat.Thing("recipient")) + ); + pages.add(terminologyPage); + + BookStuff.Page rulesObservations = new BookStuff.TextPage(); + rulesObservations.setTitle("Rules & Observations"); + rulesObservations.setText( + "During my research, I have been able to outline some general rules of Hemalurgy, and some general observations, which I have written below." + + "$(li) The metal the spike is made out of determines the attribute or power taken from the donor." + + "$(li) A single spike can only hold a single hemalurgic charge." + + "$(li) Spiking a misting/ferring has a predictable effect, if the right metal is used for the spike, it steals their allomantic/feruchemical power, with which the hemalurgic spike is now charged." + + "$()$(br) Cont. Next Page$(br)" + + ); + pages.add(rulesObservations); + BookStuff.Page rulesObservationsCont = new BookStuff.TextPage(); + rulesObservationsCont.setTitle("Rules & Observations"); + rulesObservationsCont.setText( + "$(li) Spiking full mistborn and feruchemists, in my experience, has inconsistent results." + + " The power taken is always one from the relevant quadrant of the respective table, steel spikes taking physical allomantic powers, gold spikes taking hybrid feruchemical powers, and so on." + + " The inconsistency lies in that the specific power stolen seems to be random, although there may be pattern to the apparent randomness - further research is necessary.$(br)" + + ); + pages.add(rulesObservationsCont); + + pages.add(new BookStuff.CraftingPage("Spike Recipe", "cosmere:steel_spike", "cosmere:pewter_spike")); + + + hemalurgyBasics.pages = pages.toArray(BookStuff.Page[]::new); + pages.clear(); + entries.add(hemalurgyBasics); //hemalurgy for (Metals.MetalType metalType : Metals.MetalType.values()) @@ -31,20 +78,220 @@ public static void collect(List categories, List Date: Sat, 14 May 2022 16:21:13 +1200 Subject: [PATCH 0130/1090] Datagen ran, uses new patchouli data. --- src/main/generated/.cache/cache | 112 +++++++++--------- .../generated/assets/cosmere/lang/en_us.json | 5 - ...category.allomancy.json => allomancy.json} | 4 +- ...category.feruchemy.json => feruchemy.json} | 2 +- ...category.hemalurgy.json => hemalurgy.json} | 2 +- .../allomancy_basics.json} | 12 +- .../allomantic_aluminum.json} | 6 +- .../allomantic_bendalloy.json} | 6 +- .../allomantic_brass.json} | 6 +- .../allomantic_bronze.json} | 6 +- .../allomantic_cadmium.json} | 6 +- .../allomantic_chromium.json} | 8 +- .../allomantic_copper.json} | 6 +- .../allomantic_duralumin.json} | 6 +- .../allomantic_electrum.json} | 6 +- .../allomantic_gold.json} | 6 +- .../allomantic_iron.json} | 6 +- .../allomantic_nicrosil.json} | 8 +- .../allomantic_pewter.json} | 6 +- .../allomantic_steel.json} | 6 +- .../allomantic_tin.json} | 6 +- .../allomantic_zinc.json} | 6 +- .../entry.feruchemical_aluminum.json | 15 --- .../entry.feruchemical_bendalloy.json | 15 --- .../entry.feruchemical_brass.json | 15 --- .../entry.feruchemical_bronze.json | 15 --- .../entry.feruchemical_cadmium.json | 15 --- .../entry.feruchemical_chromium.json | 15 --- .../entry.feruchemical_copper.json | 15 --- .../entry.feruchemical_duralumin.json | 15 --- .../entry.feruchemical_electrum.json | 15 --- .../entry.feruchemical_gold.json | 15 --- .../entry.feruchemical_iron.json | 15 --- .../entry.feruchemical_nicrosil.json | 15 --- .../entry.feruchemical_pewter.json | 15 --- .../entry.feruchemical_steel.json | 15 --- .../entry.feruchemical_tin.json | 15 --- .../entry.feruchemical_zinc.json | 15 --- .../entry.hemalurgic_aluminum.json | 15 --- .../entry.hemalurgic_atium.json | 15 --- .../entry.hemalurgic_bendalloy.json | 15 --- .../entry.hemalurgic_brass.json | 15 --- .../entry.hemalurgic_bronze.json | 15 --- .../entry.hemalurgic_cadmium.json | 15 --- .../entry.hemalurgic_chromium.json | 15 --- .../entry.hemalurgic_copper.json | 15 --- .../entry.hemalurgic_duralumin.json | 15 --- .../entry.hemalurgic_electrum.json | 15 --- .../entry.hemalurgic_gold.json | 15 --- .../entry.hemalurgic_iron.json | 15 --- .../entry.hemalurgic_lerasium.json | 15 --- .../entry.hemalurgic_nicrosil.json | 15 --- .../entry.hemalurgic_pewter.json | 15 --- .../entry.hemalurgic_steel.json | 15 --- .../entry.hemalurgic_tin.json | 15 --- .../entry.hemalurgic_zinc.json | 15 --- .../feruchemy/feruchemical_aluminum.json | 30 +++++ .../feruchemy/feruchemical_bendalloy.json | 30 +++++ .../entries/feruchemy/feruchemical_brass.json | 30 +++++ .../feruchemy/feruchemical_bronze.json | 30 +++++ .../feruchemy/feruchemical_cadmium.json | 30 +++++ .../feruchemy/feruchemical_chromium.json | 30 +++++ .../feruchemy/feruchemical_copper.json | 30 +++++ .../feruchemy/feruchemical_duralumin.json | 30 +++++ .../feruchemy/feruchemical_electrum.json | 30 +++++ .../entries/feruchemy/feruchemical_gold.json | 30 +++++ .../entries/feruchemy/feruchemical_iron.json | 30 +++++ .../feruchemy/feruchemical_nicrosil.json | 30 +++++ .../feruchemy/feruchemical_pewter.json | 30 +++++ .../entries/feruchemy/feruchemical_steel.json | 30 +++++ .../entries/feruchemy/feruchemical_tin.json | 30 +++++ .../entries/feruchemy/feruchemical_zinc.json | 30 +++++ .../entries/feruchemy/feruchemy_basics.json | 22 ++++ .../hemalurgy/hemalurgic_aluminum.json | 20 ++++ .../entries/hemalurgy/hemalurgic_atium.json | 20 ++++ .../hemalurgy/hemalurgic_bendalloy.json | 20 ++++ .../entries/hemalurgy/hemalurgic_brass.json | 20 ++++ .../entries/hemalurgy/hemalurgic_bronze.json | 20 ++++ .../entries/hemalurgy/hemalurgic_cadmium.json | 20 ++++ .../hemalurgy/hemalurgic_chromium.json | 20 ++++ .../entries/hemalurgy/hemalurgic_copper.json | 20 ++++ .../hemalurgy/hemalurgic_duralumin.json | 20 ++++ .../hemalurgy/hemalurgic_electrum.json | 20 ++++ .../entries/hemalurgy/hemalurgic_gold.json | 20 ++++ .../entries/hemalurgy/hemalurgic_iron.json | 20 ++++ .../hemalurgy/hemalurgic_lerasium.json | 20 ++++ .../hemalurgy/hemalurgic_nicrosil.json | 20 ++++ .../entries/hemalurgy/hemalurgic_pewter.json | 20 ++++ .../entries/hemalurgy/hemalurgic_steel.json | 20 ++++ .../entries/hemalurgy/hemalurgic_tin.json | 20 ++++ .../entries/hemalurgy/hemalurgic_zinc.json | 20 ++++ .../entries/hemalurgy/hemalurgy_basics.json | 32 +++++ 92 files changed, 1008 insertions(+), 633 deletions(-) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{category.allomancy.json => allomancy.json} (58%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{category.feruchemy.json => feruchemy.json} (83%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/{category.hemalurgy.json => hemalurgy.json} (84%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomancy_basics.json => allomancy/allomancy_basics.json} (63%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_aluminum.json => allomancy/allomantic_aluminum.json} (60%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_bendalloy.json => allomancy/allomantic_bendalloy.json} (71%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_brass.json => allomancy/allomantic_brass.json} (65%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_bronze.json => allomancy/allomantic_bronze.json} (67%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_cadmium.json => allomancy/allomantic_cadmium.json} (67%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_chromium.json => allomancy/allomantic_chromium.json} (60%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_copper.json => allomancy/allomantic_copper.json} (73%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_duralumin.json => allomancy/allomantic_duralumin.json} (60%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_electrum.json => allomancy/allomantic_electrum.json} (60%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_gold.json => allomancy/allomantic_gold.json} (61%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_iron.json => allomancy/allomantic_iron.json} (70%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_nicrosil.json => allomancy/allomantic_nicrosil.json} (58%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_pewter.json => allomancy/allomantic_pewter.json} (72%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_steel.json => allomancy/allomantic_steel.json} (69%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_tin.json => allomancy/allomantic_tin.json} (72%) rename src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/{category.allomancy/entry.allomantic_zinc.json => allomancy/allomantic_zinc.json} (68%) delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json delete mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 21b4c8f3b..db7efd62c 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -81c1296b82288daf7b97e2a9bd623aba1cea5893 assets/cosmere/lang/en_us.json +101e639d5e78524bdad3030e0dc8d2f3ad2bba15 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -540,60 +540,62 @@ fce8cb6a729d5be9268ffb478049fdc70de504b2 data/cosmere/loot_tables/blocks/tin_ore 93d9441ed0218c63d7f39970762e664e3d39a754 data/cosmere/loot_tables/blocks/zinc_block.json cefe179cd977a02ea0509418148726158976a815 data/cosmere/loot_tables/blocks/zinc_ore.json 344624ccff5d30da8bb1a30c932f384f656ca7f4 data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json -4918153315373d87d8a8cb737643fdb7b365455b data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json -c099fbeada62002688e2b129cc28665a43022446 data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json -0a03ac7dab64fe5561f7c5171f039313948bfc54 data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json -93ec07bf980ce1647ff1eeb0234cbfdc300237c7 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json -cd9236287d659fa7c435e70bdbf72fa622225a7a data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json -6db223158505b505954865526ea5c8d76087efa1 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json -e4a4db74509b1d89f9007b3938f4b31811f5efab data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json -6f396f55e684449cbd8819837439f851dc01803f data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json -ca73bbbe87fed446672247ccea8dae5408c31f19 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json -4d99c654ed21616669f1cc1d35c4fae22480373a data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json -3990b9f883f3024ca3e772af8b2e00a3f1f3b86e data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json -e0d2b3e79276779a8660a7b0b5e33ddff224a128 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json -bf2a739c3f78f2e2f17f9dcbf0ea73fb31740b3f data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json -c0ca5b70e5eca3e5442d4e80e2e8f58089a6367c data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json -3307e0f7d5441aa34a118f2f72a1512c266bc233 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json -4aed12aebe935d82df58667d4486dd04e6355201 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json -7c4e6fefff6aac1ad9ea47804f839f7b62d06637 data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json -8bd12706cb67efffe4bc5324f7a39189d77b3ced data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json -e5e1b6b8210926f6ef579de7dfb06b7ce0279fac data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json -e805b82fa1f0e74df65167836b5961f3ebfd018d data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json -2bbe675eda991b1e88d26e626b104b0453e0a3a9 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json -8491cc6ca34671463b2d2ea99f5b8421047a5bb0 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json -50b88af4b42340cb52ba68779dbb779c1b693db0 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json -d26ef0090de94b01491c00fb7e14c8e33f60f29e data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json -27516f4eb2634ccbdd2dd3a98fd86b022577a79b data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json -cdabd1b67c3a46e5212b16664515dca5fc754f7a data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json -73d87c8a11bdbb4ccb888bb706fe655384c12110 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json -c1650b775cf436294feb2d07273bf149391fc557 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json -e8ebc3739b400e7f5078fde67990f81871a62cf7 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json -79a49a2378d83d6dc58b7781e98ed6a5aa944de5 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json -33191d3488b08cbc54b14b0e5a32fbf5fe3e0d7f data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json -23ec7fee455607a4e0e8cad8454110b7fd6061cf data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json -eed36fed5048308f4851476c1d3f19edf000d785 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json -589a383319d6d069e966fe2f33f379e9afd38439 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json -39d6cfe3e6f9c1512e194bb7e4b153ebaa1f2fe7 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json -7bb85ddda9421ef97772e3aca966f4793f4f1e91 data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json -fe2db4b22fc95296a8efb48770c07934ab78df45 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json -398e1ff049451f4a128f463977eb641014cfec98 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json -c5f6102aab45fa94049130bf4f5196016f5720da data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json -57916764f0a2b088e4b1f14f061930c72347341f data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json -3ee9e100095a9d76cae7d57d017f5eda841aba75 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json -f21dc73617e2fa34dc59bbf907ffe23c9d5a4ba8 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json -ad89ed5a20bdfdc4da3a7dcc7bd341b3b6db47b4 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json -50416649cd715881f3998f443d3ed116e85e43ea data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json -30c3151605e031fd181fc5079e3197d1cea41ca3 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json -29f2c2a54a7835d941dcd261cab9a7a3dcf267d2 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json -9c95c35edb5a23d117abc57ae7cc99a421f6ff6f data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json -eca6d89c32422e43d7e9e25bdf5103b4ea6c7a35 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json -ca1a742c681d1b933a8a5f6df1aa85797d389711 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json -300578be1e393c072572e5d0765863e3268f6a13 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json -53a9383f790f5428de23ca12d8d81e3368e5edae data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json -62b5c6aab80427d65851a4beec1c8c0cf450ed54 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json -26d9620ff029dacbdbf1d24e308716c2b5dc8349 data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json -6e77a8c44385f1b651246c4cd8904569bd78998c data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json +3def7d8a2b222ddc6634b33787c2fe114d80d9e2 data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +e860cb608a0be02ccdf76119bbe5043df64f14af data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json +4e70e0639abea89d041c957efb07ab7b2c443a47 data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json +2d7a5bbaef8038b0c677d166e8473684486443fe data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +1d37aa4bceb0a1d8be3bb22e596da7af47c2f424 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +db3f16ff2947f1e87fb6a938e9af541c1496547b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +822fab5ce546238a87788f78499407f0da3b793d data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +1ac3cb7e27d05253b803ca97abeaf82b9ae47a8f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +e1a282c84b0eeb9dc752227d4cd0a27d4b02d88d data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +26f7b61ec844f14bdfa6e989c6b135ecce99e6ea data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +c28a035875aa1c75306521f7bf6c441059076839 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +ec07f85c8982c5979e404624814da27e7d2850d7 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +777cee6844c3ca2b6c45e9cd306bc38936abc392 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +d319c72496c0c7e465d2450abed06b554f4c8953 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +c1495e6848497f5fd56fcc9c1e6c8d02b21d0657 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +4ac821950f3eeb9c8e74c00ab72da9e6512f4867 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +35dd16c2080f710b0cbff57a103f17857f669dcb data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +6f77dc952f6b775a9a89a8245211b6875fddd459 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +133be6efafddec850e8a18d003220f307f012867 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +81029e199312919cfbee0c1ad1950126a3daea25 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +7876af9c7402b00e12279ff158beef06bc6cecb4 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +36b802651e32bca64d2f51c8fedb9e216754ea9a data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json +7bf8121e708c9e63831bbc0b070aa14952d987db data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json +272216802dfb12a93242f17c792642e55a7a8875 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json +9de66d2a5ba4b67869ab925f7f5a7a41db0eb285 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +150b5ea5595e1e9382fe47b0659a1d42a4137864 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json +a1897e1b3f4a5a8dcd069289b215c0adb0b6400e data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json +0cbaffb065edf175cec575763986d46887954176 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json +697d4e7048e450f2d9231ab74cea57e6a0f4258b data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json +1f35a8de393754f59e6ad67281e6a190ec139ff0 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json +d23ea38b44c6277c44ed3a5e8cf3509e8c289a4f data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json +958bf71aba60245d8da862a3171b80fbe91e4a2e data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json +84f9d275d42f5dea43b7c1194e96bcd7a733fcdd data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json +47c1da32bac5ad148242e4fa98d469f7c4906431 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json +d628ebcf2b9f44ca3d6675d901d0874db1ff3258 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json +45444ceccd52bca9e3daf6ae324af3288d10ca40 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json +c0d2dcf65ed29fa6d6883e3075c81b80cad8b648 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +0dfeccf0b0cc13853440de939ced4dc0a47d9b98 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json +db5dc60249a6a00668221f5f6c2f2135e1195046 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json +d4017a1d11fef9b1faac1158ee3413530a54f863 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json +ab5238b5279b880f98ba2d91f2d77c8196c01c1b data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json +cd531bf2257739b2a16e893137d806101cc89a5e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json +a1ad5ed3aa2f1b6abb3c5efe187b2556e3554bac data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json +735ddcb92d879c43c6bb4cf4cfb551da2c5dab00 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json +a7408775f20d2a7f3781a818b74b7b4a6e6a634f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +af160c124a36d64af58beb1d80ce09a79e705034 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json +72505f6620e804b02befadd05c5b9032c102d4af data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json +66286a529566be62dce5ba7e642ecf1aa7809f5f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +0d54f9e5f284724320dfc5a6e059ba2b86dc30ba data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +9d505c4ee5fe79408d52e9b577fb2d0b14ee7032 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json +34c6b0eb6f8d9faa45e035d70777f4d88b8cb652 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json +a0003efb41b96c2d46ae9faf5b181589504df137 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json +7a6f5c61dddb8ee2338f341800506a6c0d194220 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json +8b3d7e7a338c9639d342794e1e4096c369a3108b data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json +53906a627ab93ae9bb3796844a9fca5b7a7f795f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json +4b438d40309cdfc4ea83b903f38719e9322519e2 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json dc61a3e81ab1124cab2a9b211ba2cc97593c44a8 data/cosmere/recipes/alloying/blend/bendalloy.json a431820155ce3767ebcadbb8ebbb39d3e2f78ef5 data/cosmere/recipes/alloying/blend/brass.json de3927c12acfd3a0d4e6ad0cd0c5d192d41d889c data/cosmere/recipes/alloying/blend/bronze.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 10b44b470..97b0bced3 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -40,10 +40,6 @@ "block.cosmere.zinc_block": "Zinc Block", "block.cosmere.zinc_ore": "Zinc Ore", "block.cosmere.zinc_ore_deepslate": "Zinc Ore Deepslate", - "category.allomancy": "Allomancy", - "category.basics": "Basics", - "category.feruchemy": "Feruchemy", - "category.hemalurgy": "Hemalurgy", "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", @@ -119,7 +115,6 @@ "effect.cosmere.tapping_tin": "Tapping Tin", "effect.cosmere.tapping_zinc": "Tapping Zinc", "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", - "entry.allomancy_basics": "Allomancy Basics", "entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", "entry.allomantic_atium": "Atium - Seer", "entry.allomantic_bendalloy": "Bendalloy - Slider", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json similarity index 58% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json index 81379905c..a4778df61 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.allomancy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json @@ -1,6 +1,6 @@ { - "name": "category.allomancy", - "description": "This is the art of consuming a piece of metal related to your power, and then \"burning\" it for an effect.", + "name": "Allomancy", + "description": "This is the art of consuming a piece of metal related to your power, and then \"$(thing)burning$()\" it for an effect.", "icon": "cosmere:pewter_nugget", "sortnum": 1, "secret": false diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json similarity index 83% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json index e9b177789..881e40f3a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.feruchemy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json @@ -1,5 +1,5 @@ { - "name": "category.feruchemy", + "name": "Feruchemy", "description": "The art of equivalent exchange when it comes to the body. ", "icon": "cosmere:copper_bracelet_metalmind", "sortnum": 2, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json similarity index 84% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json index 3438f7a8f..4deeeaab9 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/category.hemalurgy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json @@ -1,5 +1,5 @@ { - "name": "category.hemalurgy", + "name": "Hemalurgy", "description": "The forbidden field of magic that takes from others so that you may get stronger.", "icon": "cosmere:atium_spike", "sortnum": 3, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json similarity index 63% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json index c098b71f5..78edb36bc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomancy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json @@ -1,6 +1,6 @@ { - "name": "entry.allomancy_basics", - "category": "cosmere:category.allomancy", + "name": "Allomancy Basics", + "category": "cosmere:allomancy", "icon": "cosmere:pewter_nugget", "pages": [ { @@ -9,13 +9,7 @@ "title": "cosmere:pewter_nugget" }, { - "type": "spotlight", - "text": "Metal vial", - "item": "cosmere:metal_vial", - "link_recipe": false - }, - { - "type": "crafting", + "type": "patchouli:crafting", "text": "Metal vial", "recipe": "cosmere:metal_vial", "recipe2": "" diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json similarity index 60% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json index 79c588c8e..cb2c898d8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_aluminum", - "category": "cosmere:category.allomancy", + "name": "Allomantic Aluminum", + "category": "cosmere:allomancy", "icon": "cosmere:aluminum_nugget", "pages": [ { "type": "text", - "text": "A misting who can only burn aluminum is known as a \"Aluminum Gnat\" as they gain no discernible effect from burning their metal." + "text": "A misting who can only burn $(thing)aluminum$() is known as a \"$(thing)Aluminum Gnat$()\" as they gain no discernible effect from burning their metal." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json similarity index 71% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json index 1ee4eca88..846666ec2 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_bendalloy", - "category": "cosmere:category.allomancy", + "name": "Allomantic Bendalloy", + "category": "cosmere:allomancy", "icon": "cosmere:bendalloy_nugget", "pages": [ { "type": "text", - "text": "A misting who burns bendalloy is known as a \"Slider\"." + "text": "A misting who burns $(thing)bendalloy$() is known as a \"$(thing)Slider$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json similarity index 65% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json index bd8a387bc..37b4d03db 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_brass", - "category": "cosmere:category.allomancy", + "name": "Allomantic Brass", + "category": "cosmere:allomancy", "icon": "cosmere:brass_nugget", "pages": [ { "type": "text", - "text": "A misting who burns brass is known as a \"Soother\"." + "text": "A misting who burns $(thing)brass$() is known as a \"$(thing)Soother$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json similarity index 67% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json index 0724ea643..5d0a86afb 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_bronze", - "category": "cosmere:category.allomancy", + "name": "Allomantic Bronze", + "category": "cosmere:allomancy", "icon": "cosmere:bronze_nugget", "pages": [ { "type": "text", - "text": "A misting who burns bronze is known as a \"Seeker\"." + "text": "A misting who burns $(thing)bronze$() is known as a \"$(thing)Seeker$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json similarity index 67% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json index fa4e92e0a..a2bee4c19 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_cadmium", - "category": "cosmere:category.allomancy", + "name": "Allomantic Cadmium", + "category": "cosmere:allomancy", "icon": "cosmere:cadmium_nugget", "pages": [ { "type": "text", - "text": "A misting who burns cadmium is known as a \"Pulser\"." + "text": "A misting who burns $(thing)cadmium$() is known as a \"$(thing)Pulser$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json similarity index 60% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json index 51b596722..8032c4e66 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json @@ -1,15 +1,15 @@ { - "name": "entry.allomantic_chromium", - "category": "cosmere:category.allomancy", + "name": "Allomantic Chromium", + "category": "cosmere:allomancy", "icon": "cosmere:chromium_nugget", "pages": [ { "type": "text", - "text": "A misting who burns chromium is known as a \"Leecher\"." + "text": "A misting who burns $(thing)chromium$() is known as a \"$(thing)Leecher$()\"." }, { "type": "text", - "text": "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere.entry.allomantic_aluminum)." + "text": "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere:allomancy/allomantic_aluminum)aluminum$()." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json similarity index 73% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json index 47ba46e96..385ad25ab 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_copper", - "category": "cosmere:category.allomancy", + "name": "Allomantic Copper", + "category": "cosmere:allomancy", "icon": "cosmere:copper_nugget", "pages": [ { "type": "text", - "text": "A misting who burns copper is known as a \"Smoker\"." + "text": "A misting who burns $(thing)copper$() is known as a \"$(thing)Smoker$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json similarity index 60% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json index e23e444b3..2d6a2c1aa 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_duralumin", - "category": "cosmere:category.allomancy", + "name": "Allomantic Duralumin", + "category": "cosmere:allomancy", "icon": "cosmere:duralumin_nugget", "pages": [ { "type": "text", - "text": "A misting who can only burn duralumin is known as a \"Duralumin Gnat\" as they gain no discernible effect from burning their metal." + "text": "A misting who can only burn $(thing)duralumin$() is known as a \"$(thing)Duralumin Gnat$()\" as they gain no discernible effect from burning their metal." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json similarity index 60% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json index 4818925ea..70fa6691d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_electrum", - "category": "cosmere:category.allomancy", + "name": "Allomantic Electrum", + "category": "cosmere:allomancy", "icon": "cosmere:electrum_nugget", "pages": [ { "type": "text", - "text": "A misting who burns electrum is known as a \"Oracle\"." + "text": "A misting who burns $(thing)electrum$() is known as a \"$(thing)Oracle$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json similarity index 61% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json index 67737e858..58fbf8769 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_gold", - "category": "cosmere:category.allomancy", + "name": "Allomantic Gold", + "category": "cosmere:allomancy", "icon": "minecraft:gold_nugget", "pages": [ { "type": "text", - "text": "A misting who burns gold is known as a \"Augur\"." + "text": "A misting who burns $(thing)gold$() is known as a \"$(thing)Augur$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json similarity index 70% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json index d5f1e42a5..1f27d6f18 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_iron", - "category": "cosmere:category.allomancy", + "name": "Allomantic Iron", + "category": "cosmere:allomancy", "icon": "minecraft:iron_nugget", "pages": [ { "type": "text", - "text": "A misting who burns iron is known as a \"Lurcher\"." + "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json similarity index 58% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json index f89f228ae..3284dcd87 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json @@ -1,15 +1,15 @@ { - "name": "entry.allomantic_nicrosil", - "category": "cosmere:category.allomancy", + "name": "Allomantic Nicrosil", + "category": "cosmere:allomancy", "icon": "cosmere:nicrosil_nugget", "pages": [ { "type": "text", - "text": "A misting who burns nicrosil is known as a \"Nicroburst\"." + "text": "A misting who burns $(thing)nicrosil$() is known as a \"$(thing)Nicroburst$()\"." }, { "type": "text", - "text": "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere.entry.allomantic_duralumin) themselves." + "text": "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere:allomancy/allomantic_duralumin)duralumin$() themselves." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json similarity index 72% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json index ed103599f..d92246a3c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_pewter", - "category": "cosmere:category.allomancy", + "name": "Allomantic Pewter", + "category": "cosmere:allomancy", "icon": "cosmere:pewter_nugget", "pages": [ { "type": "text", - "text": "A misting who burns pewter is known as a \"Thug\"." + "text": "A misting who burns $(thing)pewter$() is known as a \"$(thing)Thug$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json similarity index 69% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json index cff363743..af7f8cb1c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_steel", - "category": "cosmere:category.allomancy", + "name": "Allomantic Steel", + "category": "cosmere:allomancy", "icon": "cosmere:steel_nugget", "pages": [ { "type": "text", - "text": "A misting who burns steel is known as a \"Coinshot\"." + "text": "A misting who burns $(thing)steel$() is known as a \"$(thing)Coinshot$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json similarity index 72% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json index 62af627e9..60ef56dd6 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_tin", - "category": "cosmere:category.allomancy", + "name": "Allomantic Tin", + "category": "cosmere:allomancy", "icon": "cosmere:tin_nugget", "pages": [ { "type": "text", - "text": "A misting who burns tin is known as a \"Tineye\"." + "text": "A misting who burns $(thing)tin$() is known as a \"$(thing)Tineye$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json similarity index 68% rename from src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json rename to src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json index c2c07b61e..52e6f222f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.allomancy/entry.allomantic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json @@ -1,11 +1,11 @@ { - "name": "entry.allomantic_zinc", - "category": "cosmere:category.allomancy", + "name": "Allomantic Zinc", + "category": "cosmere:allomancy", "icon": "cosmere:zinc_nugget", "pages": [ { "type": "text", - "text": "A misting who burns zinc is known as a \"Rioter\"." + "text": "A misting who burns $(thing)zinc$() is known as a \"$(thing)Rioter$()\"." }, { "type": "text", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json deleted file mode 100644 index c3c6eecd0..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_aluminum.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_aluminum", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:aluminum_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_aluminum.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 8 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json deleted file mode 100644 index a5d7c2ed3..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bendalloy.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_bendalloy", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:bendalloy_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_bendalloy.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 13 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json deleted file mode 100644 index 54b13a626..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_brass.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_brass", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:brass_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_brass.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 5 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json deleted file mode 100644 index 746429ce0..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_bronze.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_bronze", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:bronze_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_bronze.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 7 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json deleted file mode 100644 index 6bb79137e..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_cadmium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_cadmium", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:cadmium_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_cadmium.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 12 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json deleted file mode 100644 index 1b268a950..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_chromium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_chromium", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:chromium_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_chromium.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 10 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json deleted file mode 100644 index 10af856c5..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_copper.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_copper", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:copper_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_copper.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 6 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json deleted file mode 100644 index cff4f6953..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_duralumin.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_duralumin", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:duralumin_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_duralumin.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 9 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json deleted file mode 100644 index 59dfa0a91..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_electrum.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_electrum", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:electrum_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_electrum.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 15 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json deleted file mode 100644 index 7b6247303..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_gold.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_gold", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:gold_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_gold.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 14 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json deleted file mode 100644 index f7c0f28d8..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_iron.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_iron", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:iron_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_iron.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 0 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json deleted file mode 100644 index 681718817..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_nicrosil.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_nicrosil", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:nicrosil_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_nicrosil.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 11 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json deleted file mode 100644 index b2d3636ef..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_pewter.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_pewter", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:pewter_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_pewter.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 3 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json deleted file mode 100644 index 58a26a04d..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_steel.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_steel", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:steel_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_steel.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 1 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json deleted file mode 100644 index baa38c9e9..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_tin.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_tin", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:tin_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_tin.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 2 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json deleted file mode 100644 index 01c67925a..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.feruchemy/entry.feruchemical_zinc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.feruchemical_zinc", - "category": "cosmere:category.feruchemy", - "icon": "cosmere:zinc_bracelet_metalmind", - "pages": [ - { - "type": "text", - "text": "manifestation.cosmere.feruchemical_zinc.description" - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 4 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json deleted file mode 100644 index bf41d968e..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_aluminum.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_aluminum", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:aluminum_spike", - "pages": [ - { - "type": "text", - "text": "Removes all powers." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 8 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json deleted file mode 100644 index ec90cd2c6..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_atium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_atium", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:atium_spike", - "pages": [ - { - "type": "text", - "text": "Steals an Allomantic or Feruchemical power. Must be refined." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 16 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json deleted file mode 100644 index 7c55022d6..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bendalloy.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_bendalloy", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:bendalloy_spike", - "pages": [ - { - "type": "text", - "text": "Steals a Spiritual Feruchemical power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 13 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json deleted file mode 100644 index d7091a2c0..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_brass.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_brass", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:brass_spike", - "pages": [ - { - "type": "text", - "text": "Steals a cognitive feruchemical power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 5 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json deleted file mode 100644 index c9caae1a9..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_bronze.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_bronze", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:bronze_spike", - "pages": [ - { - "type": "text", - "text": "Steals a Mental Allomantic power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 7 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json deleted file mode 100644 index 44ea7da6b..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_cadmium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_cadmium", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:cadmium_spike", - "pages": [ - { - "type": "text", - "text": "Steals a Temporal Allomantic power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 12 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json deleted file mode 100644 index b4af05b7a..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_chromium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_chromium", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:chromium_spike", - "pages": [ - { - "type": "text", - "text": "Might steal destiny..." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 10 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json deleted file mode 100644 index b36b20227..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_copper.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_copper", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:copper_spike", - "pages": [ - { - "type": "text", - "text": "Steals mental fortitude, memory, and intelligence." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 6 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json deleted file mode 100644 index 4314793d7..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_duralumin.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_duralumin", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:duralumin_spike", - "pages": [ - { - "type": "text", - "text": "Steals Connection/Identity." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 9 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json deleted file mode 100644 index 8df9146d1..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_electrum.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_electrum", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:electrum_spike", - "pages": [ - { - "type": "text", - "text": "Steals an Enhancement Allomantic power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 15 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json deleted file mode 100644 index 3395522f2..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_gold.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_gold", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:gold_spike", - "pages": [ - { - "type": "text", - "text": "Steals a Hybrid Feruchemical power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 14 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json deleted file mode 100644 index a5d5e9246..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_iron.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_iron", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:iron_spike", - "pages": [ - { - "type": "text", - "text": "Steals physical strength." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 0 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json deleted file mode 100644 index 42daa7c88..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_lerasium.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_lerasium", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:lerasium_spike", - "pages": [ - { - "type": "text", - "text": "Steals all powers..." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 17 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json deleted file mode 100644 index 9e8e7498d..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_nicrosil.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_nicrosil", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:nicrosil_spike", - "pages": [ - { - "type": "text", - "text": "Steals Investiture." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 11 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json deleted file mode 100644 index 53dc8b9fd..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_pewter.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_pewter", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:pewter_spike", - "pages": [ - { - "type": "text", - "text": "Steals a physical feruchemical power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 3 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json deleted file mode 100644 index 189991392..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_steel.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_steel", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:steel_spike", - "pages": [ - { - "type": "text", - "text": "Steals a physical allomantic power." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 1 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json deleted file mode 100644 index f12cd071c..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_tin.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_tin", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:tin_spike", - "pages": [ - { - "type": "text", - "text": "Steals senses." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 2 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json deleted file mode 100644 index 5de622236..000000000 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/category.hemalurgy/entry.hemalurgic_zinc.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "entry.hemalurgic_zinc", - "category": "cosmere:category.hemalurgy", - "icon": "cosmere:zinc_spike", - "pages": [ - { - "type": "text", - "text": "Steals emotional fortitude." - } - ], - "priority": false, - "secret": false, - "read_by_default": false, - "sortnum": 4 -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json new file mode 100644 index 000000000..b108d32d0 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Aluminum", + "category": "cosmere:feruchemy", + "icon": "cosmere:aluminum_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_aluminum.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:aluminum_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:aluminum_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:aluminum_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 8 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json new file mode 100644 index 000000000..64fafa096 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Bendalloy", + "category": "cosmere:feruchemy", + "icon": "cosmere:bendalloy_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_bendalloy.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bendalloy_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bendalloy_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bendalloy_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 13 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json new file mode 100644 index 000000000..7a207e5cb --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Brass", + "category": "cosmere:feruchemy", + "icon": "cosmere:brass_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_brass.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:brass_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:brass_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:brass_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 5 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json new file mode 100644 index 000000000..e559e0b5d --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Bronze", + "category": "cosmere:feruchemy", + "icon": "cosmere:bronze_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_bronze.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bronze_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bronze_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bronze_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json new file mode 100644 index 000000000..10f7c5407 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Cadmium", + "category": "cosmere:feruchemy", + "icon": "cosmere:cadmium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_cadmium.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:cadmium_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:cadmium_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:cadmium_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 12 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json new file mode 100644 index 000000000..a0023517d --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Chromium", + "category": "cosmere:feruchemy", + "icon": "cosmere:chromium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_chromium.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:chromium_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:chromium_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:chromium_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json new file mode 100644 index 000000000..10108fddd --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Copper", + "category": "cosmere:feruchemy", + "icon": "cosmere:copper_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_copper.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:copper_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:copper_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:copper_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 6 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json new file mode 100644 index 000000000..dae5c4d5b --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Duralumin", + "category": "cosmere:feruchemy", + "icon": "cosmere:duralumin_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_duralumin.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:duralumin_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:duralumin_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:duralumin_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 9 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json new file mode 100644 index 000000000..58e99d9fa --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Electrum", + "category": "cosmere:feruchemy", + "icon": "cosmere:electrum_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_electrum.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:electrum_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:electrum_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:electrum_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 15 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json new file mode 100644 index 000000000..d3db82829 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Gold", + "category": "cosmere:feruchemy", + "icon": "cosmere:gold_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_gold.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:gold_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:gold_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:gold_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 14 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json new file mode 100644 index 000000000..044c6eb08 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Iron", + "category": "cosmere:feruchemy", + "icon": "cosmere:iron_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_iron.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:iron_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:iron_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:iron_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json new file mode 100644 index 000000000..24474c473 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Nicrosil", + "category": "cosmere:feruchemy", + "icon": "cosmere:nicrosil_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_nicrosil.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:nicrosil_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:nicrosil_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:nicrosil_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 11 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json new file mode 100644 index 000000000..0f3e6eaec --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Pewter", + "category": "cosmere:feruchemy", + "icon": "cosmere:pewter_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_pewter.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:pewter_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:pewter_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:pewter_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 3 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json new file mode 100644 index 000000000..0a92fd3bf --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Steel", + "category": "cosmere:feruchemy", + "icon": "cosmere:steel_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_steel.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:steel_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:steel_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:steel_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json new file mode 100644 index 000000000..c3e4e023c --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Tin", + "category": "cosmere:feruchemy", + "icon": "cosmere:tin_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_tin.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:tin_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:tin_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:tin_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 2 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json new file mode 100644 index 000000000..2cc9ef8a7 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Zinc", + "category": "cosmere:feruchemy", + "icon": "cosmere:zinc_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_zinc.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:zinc_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:zinc_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:zinc_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 4 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json new file mode 100644 index 000000000..2aa0382e6 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json @@ -0,0 +1,22 @@ +{ + "name": "Feruchemy Basics", + "category": "cosmere:feruchemy", + "icon": "cosmere:copper_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "If you entered this world with an feruchemical ability, you\u0027re called a $(6)ferring$().", + "title": "cosmere:copper_bracelet_metalmind" + }, + { + "type": "patchouli:crafting", + "text": "Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap attributes.", + "recipe": "cosmere:atium_bracelet_metalmind", + "recipe2": "" + } + ], + "priority": true, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json new file mode 100644 index 000000000..69762d9f2 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Aluminum", + "category": "cosmere:hemalurgy", + "icon": "cosmere:aluminum_spike", + "pages": [ + { + "type": "text", + "text": "Prevents recipient from using their powers." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:aluminum_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 8 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json new file mode 100644 index 000000000..cb4cec276 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Atium", + "category": "cosmere:hemalurgy", + "icon": "cosmere:atium_spike", + "pages": [ + { + "type": "text", + "text": "Steals an Allomantic or Feruchemical power." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:atium_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json new file mode 100644 index 000000000..b53706185 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Bendalloy", + "category": "cosmere:hemalurgy", + "icon": "cosmere:bendalloy_spike", + "pages": [ + { + "type": "text", + "text": "Bendalloy spikes steal the spiritual feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_aluminum)Aluminum$(), $(l:cosmere:feruchemy/feruchemical_duralumin)Duralumin$(), $(l:cosmere:feruchemy/feruchemical_chromium)Chromium$() and $(l:cosmere:feruchemy/feruchemical_nicrosil)Nicrosil$(), the feruchemical attributes keyed to each of these are: $(p)Identity(making identityless metalminds), Connection(Bad omen/Hero of the village), Fortune(Bad luck/luck), and Investiture(Charge can be used for tapping other metals)" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bendalloy_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 13 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json new file mode 100644 index 000000000..b6dcf8d74 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Brass", + "category": "cosmere:hemalurgy", + "icon": "cosmere:brass_spike", + "pages": [ + { + "type": "text", + "text": "Brass spikes steal the cognitive feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_zinc)Zinc$(), $(l:cosmere:feruchemy/feruchemical_brass)Brass$(), $(l:cosmere:feruchemy/feruchemical_copper)Copper$() and $(l:cosmere:feruchemy/feruchemical_bronze)Bronze$(), the feruchemical attributes keyed to each of these are: $(p)Mental Speed(XP Gain Rate), Warmth(Fire Resistance/Fire Aspect), Memories(Current XP), and Wakefulness(Phantom Spawn Timer). $(p)" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:brass_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 5 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json new file mode 100644 index 000000000..9fc77abaf --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Bronze", + "category": "cosmere:hemalurgy", + "icon": "cosmere:bronze_spike", + "pages": [ + { + "type": "text", + "text": "Bronze spikes steal the mental allomantic powers: $(p)Allomantically burning $(l:cosmere:allomancy/allomantic_zinc)Zinc$(), $(l:cosmere:allomancy/allomantic_brass)Brass$(), $(l:cosmere:allomancy/allomantic_copper)Copper$() and $(l:cosmere:allomancy/allomantic_bronze)Bronze$()." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:bronze_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 7 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json new file mode 100644 index 000000000..11c56a2d4 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Cadmium", + "category": "cosmere:hemalurgy", + "icon": "cosmere:cadmium_spike", + "pages": [ + { + "type": "text", + "text": "Cadmium spikes steal the temporal allomantic powers: $(p)Allomantically burning $(l:cosmere:allomancy/allomantic_gold)Gold$(), $(l:cosmere:allomancy/allomantic_electrum)Electrum$(), $(l:cosmere:allomancy/allomantic_cadmium)Cadmium$() and $(l:cosmere:allomancy/allomantic_bendalloy)Bendalloy$()." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:cadmium_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 12 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json new file mode 100644 index 000000000..dda4ad0fb --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Chromium", + "category": "cosmere:hemalurgy", + "icon": "cosmere:chromium_spike", + "pages": [ + { + "type": "text", + "text": "I have heard it said that Chromium spikes \u0027might steal destiny...\u0027, in my experience, they seem to affect one\u0027s luck. $(p)Like all hemalurgic spikes, the effect of a chromium spike depends on the donor, though in a different way to iron, for example: $(p)If the donor is a Rabbit, or completely White cat, the recipient would become 75%%, or 35%% luckier, respectively. $(p)In contrast, if the donor is a black cat, wither skeleton, or pufferfish, the recipient\u0027s luck would decrease, by 100%%, 55%%, or 5%%, respectively" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:chromium_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json new file mode 100644 index 000000000..112a51723 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Copper", + "category": "cosmere:hemalurgy", + "icon": "cosmere:copper_spike", + "pages": [ + { + "type": "text", + "text": "Copper spikes steal mental fortitude, memory, and intelligence. $(p)As a result, they can be used to increase base XP gain rate. $(p)I wonder what would happen if you were to spike the Ender Dragon... Surely the first kill of such a beast would give a marvelous reward" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:copper_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 6 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json new file mode 100644 index 000000000..c55430f75 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Duralumin", + "category": "cosmere:hemalurgy", + "icon": "cosmere:duralumin_spike", + "pages": [ + { + "type": "text", + "text": "In the past, hemalurgic scholars have theorised that duralumin spikes may transfer the donor\u0027s spiritual connection or identity. However, due to the rarity of duralumin during the eras they all worked in, all were unable to obtain enough duralumin to prove their theories. $(p)(The rest of the page appears to have been ripped out)" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:duralumin_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 9 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json new file mode 100644 index 000000000..37661ea06 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Electrum", + "category": "cosmere:hemalurgy", + "icon": "cosmere:electrum_spike", + "pages": [ + { + "type": "text", + "text": "Electrum spikes steal the enhancement allomantic powers: $(p)Allomantically burning $(l:cosmere:allomancy/allomantic_aluminum)Aluminum$(), $(l:cosmere:allomancy/allomantic_duralumin)Duralumin$(), $(l:cosmere:allomancy/allomantic_chromium)Chromium$() and $(l:cosmere:allomancy/allomantic_nicrosil)Nicrosil$()." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:electrum_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 15 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json new file mode 100644 index 000000000..820b19f60 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Gold", + "category": "cosmere:hemalurgy", + "icon": "cosmere:gold_spike", + "pages": [ + { + "type": "text", + "text": "Gold spikes steal the hybrid feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_gold)Gold$(), $(l:cosmere:feruchemy/feruchemical_electrum)Electrum$(), $(l:cosmere:feruchemy/feruchemical_cadmium)Cadmium$() and $(l:cosmere:feruchemy/feruchemical_bendalloy)Bendalloy$(), the feruchemical attributes keyed to each of these are: $(p)Healing(take damage/regeneration), Determination(extra hearts), Breath(lose O2 outside water/reduce rate of O2 consumption), and Nutrition(Hunger/Saturation)" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:gold_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 14 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json new file mode 100644 index 000000000..8341ce85f --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Iron", + "category": "cosmere:hemalurgy", + "icon": "cosmere:iron_spike", + "pages": [ + { + "type": "text", + "text": "Iron spikes steal physical strength: $(p)My research suggests that iron spikes transfer around 70%% of the donor\u0027s attack strength." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:iron_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json new file mode 100644 index 000000000..c2360f499 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Lerasium", + "category": "cosmere:hemalurgy", + "icon": "cosmere:lerasium_spike", + "pages": [ + { + "type": "text", + "text": "Steals all powers...Unknown..." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:lerasium_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 17 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json new file mode 100644 index 000000000..25ac15748 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Nicrosil", + "category": "cosmere:hemalurgy", + "icon": "cosmere:nicrosil_spike", + "pages": [ + { + "type": "text", + "text": "[Not Yet Implemented] $(p)Some theorise, due to the similarities hemalurgy shares with feruchemy, that nicrosil spikes steal investiture, potentially similarly to how soulbearer ferrings store investiture $(p)(The rest of this page has ink spilled on it, obscuring the writing)" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:nicrosil_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 11 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json new file mode 100644 index 000000000..357f1870e --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Pewter", + "category": "cosmere:hemalurgy", + "icon": "cosmere:pewter_spike", + "pages": [ + { + "type": "text", + "text": "Pewter spikes steal the physical feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_iron)Iron$(), $(l:cosmere:feruchemy/feruchemical_steel)Steel$(), $(l:cosmere:feruchemy/feruchemical_tin)Tin$() and $(l:cosmere:feruchemy/feruchemical_pewter)Pewter$(), the feruchemical attributes keyed to each of these are: $(p)Weight(Slow Fall/Slowness, Resistance), Speed(Slowness/Speed), Senses(Blindness/Night Vision), and Strength(Weakness/Strength)." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:pewter_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 3 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json new file mode 100644 index 000000000..7fde96ef3 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Steel", + "category": "cosmere:hemalurgy", + "icon": "cosmere:steel_spike", + "pages": [ + { + "type": "text", + "text": "Steel spikes steal the physical allomantic powers: $(p)Allomantically burning $(l:cosmere:allomancy/allomantic_iron)Iron$(), $(l:cosmere:allomancy/allomantic_steel)Steel$(), $(l:cosmere:allomancy/allomantic_tin)Tin$() and $(l:cosmere:allomancy/allomantic_pewter)Pewter$()." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:steel_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 1 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json new file mode 100644 index 000000000..67f2d6fef --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Tin", + "category": "cosmere:hemalurgy", + "icon": "cosmere:tin_spike", + "pages": [ + { + "type": "text", + "text": "Tin spikes steal the senses: $(p)As a result, tin spikes grant better vision in the dark. $(p)It seems that donors with a better sense of their surroundings provide a more potent effect." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:tin_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 2 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json new file mode 100644 index 000000000..877153d22 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Zinc", + "category": "cosmere:hemalurgy", + "icon": "cosmere:zinc_spike", + "pages": [ + { + "type": "text", + "text": "[Not Yet Implemented] $(p)My research has yet to determine any Hemalurgic properties of zinc - further research necessary." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:zinc_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 4 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json new file mode 100644 index 000000000..0d086de45 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json @@ -0,0 +1,32 @@ +{ + "name": "Hemalurgy (For Dummies)", + "category": "cosmere:hemalurgy", + "icon": "cosmere:atium_spike", + "pages": [ + { + "type": "text", + "text": "In this journal, I shall explain all I have discovered about Hemalurgy. $(br)Firstly, some terminology:$(li) \"$(thing)Spiking$()\" is when you kill something with a metal spike, hemalurgically charging that spike.$(li) The \"$(thing)donor$()\" is the one who is spiked, from whom the spike is hemalurgically charged.$(li) The \"$(thing)recipient$()\" is the one who receives the spike after it has been hemalurgically charged.", + "title": "Terminology" + }, + { + "type": "text", + "text": "During my research, I have been able to outline some general rules of Hemalurgy, and some general observations, which I have written below.$(li) The metal the spike is made out of determines the attribute or power taken from the donor.$(li) A single spike can only hold a single hemalurgic charge.$(li) Spiking a misting/ferring has a predictable effect, if the right metal is used for the spike, it steals their allomantic/feruchemical power, with which the hemalurgic spike is now charged.$()$(br) Cont. Next Page$(br)", + "title": "Rules \u0026 Observations" + }, + { + "type": "text", + "text": "$(li) Spiking full mistborn and feruchemists, in my experience, has inconsistent results. The power taken is always one from the relevant quadrant of the respective table, steel spikes taking physical allomantic powers, gold spikes taking hybrid feruchemical powers, and so on. The inconsistency lies in that the specific power stolen seems to be random, although there may be pattern to the apparent randomness - further research is necessary.$(br)", + "title": "Rules \u0026 Observations" + }, + { + "type": "patchouli:crafting", + "text": "Spike Recipe", + "recipe": "cosmere:steel_spike", + "recipe2": "cosmere:pewter_spike" + } + ], + "priority": true, + "secret": false, + "read_by_default": false, + "sortnum": 0 +} \ No newline at end of file From 5296a45c3c96365e242df3101177456fe9318062 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 14 May 2022 17:19:20 +1200 Subject: [PATCH 0131/1090] Updated changelog, bump version number --- Changelog.md | 11 +++++++++++ gradle.properties | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 6ea57171f..3564ab329 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,16 @@ The Cosmere Project - For 1.16 Minecraft +B30 + +Fixed brass feruchemy not letting player set others on fire at high burn rates. +Buffed electrum feruchemy to be more noticeable. +Changed copper allomancy effect name from "Burning Copper", to "Copper Cloud". +Fixed and updated patchouli documentation. Hemalurgy now has better descriptions. +Fixed cosmere fortune bonus. +Fix looting event crash when there's a null damage source. +Make Cosmere's ores half as common, because they were ridiculously common. + + B29 Fixing deepslate ore, no more pink texture or missing name. Also potentially better ore spawn frequency so it actually appears in deepslate. diff --git a/gradle.properties b/gradle.properties index 984c19354..d36a5d193 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=30 +build_number=31 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 7e51eb481d19851393032a00db9912db279338f0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 15 May 2022 14:48:33 +1200 Subject: [PATCH 0132/1090] Tapping Feruchemical bronze resets sleep timer. --- .../feruchemy/FeruchemyBronze.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java index 962595b54..690a007c3 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -10,7 +10,9 @@ import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.stats.ServerStatsCounter; import net.minecraft.stats.Stats; +import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.monster.Monster; @@ -37,7 +39,7 @@ public FeruchemyBronze(Metals.MetalType metalType) @Override public int modeMin(ISpiritweb data) { - return 0; + return -1; } @Override @@ -60,14 +62,28 @@ public void tick(ISpiritweb data) int mode = data.getMode(manifestationType, metalType.getID()); //can't store or tap any more - if (mode == 0) + switch (mode) { - //remove active effects. - //let the current effect run out. - return; + case -1: + resetSleepTimers(data); + break; + case 1: + trySleep(data); + break; + default: + //remove active effects. + //let the current effect run out. + break; } - trySleep(data); + + } + + private void resetSleepTimers(ISpiritweb data) + { + ServerPlayer player = (ServerPlayer) data.getLiving(); + //ServerStatsCounter serverstatscounter = player.getStats(); + player.resetStat(Stats.CUSTOM.get(Stats.TIME_SINCE_REST)); } From 603be94345891da4f4b2a1297e026bd08556d78b Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 17 May 2022 15:16:32 +1200 Subject: [PATCH 0133/1090] approximate push/pull metal whitelist --- .../cap/entity/SpiritwebCapability.java | 2 + .../leaf/cosmere/items/IContainsMetal.java | 15 ---- .../leaf/cosmere/items/MetalVialItem.java | 21 +++-- .../allomancy/AllomancyIronSteel.java | 86 ++++++++++++++++--- 4 files changed, 88 insertions(+), 36 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/items/IContainsMetal.java diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 506cb95ad..90ff82c23 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -315,7 +315,9 @@ public void renderWorldEffects(RenderLevelLastEvent event) if (range > 0) { + Minecraft.getInstance().getProfiler().push("cosmere-getDrawLines"); linesToDrawByColor.put(Color.BLUE, AllomancyIronSteel.getDrawLines(range)); + Minecraft.getInstance().getProfiler().pop(); } } if (linesToDrawByColor.size() > 0) diff --git a/src/main/java/leaf/cosmere/items/IContainsMetal.java b/src/main/java/leaf/cosmere/items/IContainsMetal.java deleted file mode 100644 index 499f4a739..000000000 --- a/src/main/java/leaf/cosmere/items/IContainsMetal.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.items; - -import net.minecraft.world.item.ItemStack; - -public interface IContainsMetal -{ - default boolean containsMetal(ItemStack stack) - { - return true; - } -} diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 898c69fea..57560b873 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -35,22 +35,15 @@ import static leaf.cosmere.constants.Constants.Strings.CONTAINED_METALS; -public class MetalVialItem extends BaseItem implements IContainsMetal +public class MetalVialItem extends BaseItem implements IHasMetalType { - final String metals_contained = "metals_contained"; - final String metal_ids = "metalIDs"; - final String metal_amounts = "metalAmounts"; + private final String metal_ids = "metalIDs"; + private final String metal_amounts = "metalAmounts"; private final int MAX_METALS_COUNT = 8; private CompoundTag getContainedMetalsTag(ItemStack stack) { - return stack.getOrCreateTagElement(metals_contained); - } - - @Override - public boolean containsMetal(ItemStack stack) - { - return getContainedMetalsTag(stack).contains(metal_ids); + return stack.getOrCreateTagElement("metals_contained"); } public boolean isFull(ItemStack stack) @@ -241,4 +234,10 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool tooltip.add(TextHelper.createText(String.format("%s / %s", containedMetalCount(stack), MAX_METALS_COUNT))); } + + @Override + public Metals.MetalType getMetalType() + { + return Metals.MetalType.IRON; + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 4d28f5055..9114d6feb 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -19,6 +19,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.item.BlockItem; @@ -32,15 +36,17 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.registries.ForgeRegistries; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; import static leaf.cosmere.utils.helpers.EntityHelper.getEntitiesInRange; public class AllomancyIronSteel extends AllomancyBase { private final boolean isPush; + private static Set s_whiteList = null; public AllomancyIronSteel(Metals.MetalType metalType) { @@ -214,13 +220,15 @@ private void performEffectServer(ISpiritweb cap) private static final List found = new ArrayList<>(); + @OnlyIn(Dist.CLIENT) public static List getDrawLines(int range) { - Minecraft mc = Minecraft.getInstance(); + final Minecraft mc = Minecraft.getInstance(); + final ProfilerFiller profiler = mc.getProfiler(); LocalPlayer playerEntity = mc.player; //only update box list every so often - if (playerEntity.tickCount % 5 != 0 && found.size() > 0) + if (playerEntity.tickCount % 15 != 0) { return found; } @@ -232,18 +240,19 @@ public static List getDrawLines(int range) //todo stop aluminum showing up, check IHasMetalType.getMetalType != aluminum //metal blocks + profiler.push("cosmere-getBlocksInRange"); BlockPos.withinManhattanStream(playerEntity.blockPosition(), range, range, range) .filter(blockPos -> { Block block = playerEntity.level.getBlockState(blockPos).getBlock(); - - return block instanceof IHasMetalType; + return block instanceof IHasMetalType || AllomancyIronSteel.containsMetal(block.getRegistryName().getPath()); }) .forEach(blockPos -> found.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5))); + profiler.pop(); //entities with metal armor/tools - + profiler.push("cosmere-getEntitiesInRange"); getEntitiesInRange(playerEntity, range, false).forEach(entity -> { if (entity instanceof LivingEntity) @@ -256,19 +265,76 @@ else if (entity instanceof ItemEntity) ItemStack stack = ((ItemEntity) entity).getItem(); Item item = stack.getItem(); - if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType) + /*if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType || ) { found.add(entity.position()); - } - else if (item instanceof IHasMetalType) + }*/ + if (item instanceof IHasMetalType || AllomancyIronSteel.containsMetal(item.getRegistryName().getPath())) { found.add(entity.position()); } } }); + profiler.pop(); return found; } + private static boolean containsMetal(String path) + { + Minecraft.getInstance().getProfiler().push("cosmere-containsMetal"); + if (s_whiteList == null) + { + createWhitelist(); + } + + final boolean foundMatch = s_whiteList.contains(path); + + //look for any block or item that contains one of our metals + //eg iron fence + Minecraft.getInstance().getProfiler().pop(); + + return foundMatch; + } + + //client side is the only time this gets initialized. + private static void createWhitelist() + { + s_whiteList = new HashSet<>(); + + //add the obvious stuff + s_whiteList.add("lightning_rod"); + + String[] metalNames = Arrays.stream(Metals.MetalType.values()).map(Metals.MetalType::getName).toArray(String[]::new); + + //add the potential stuff. + //This may result in false positives. + //requires testing. + ForgeRegistries.ITEMS.getValues() + .stream() + .filter(test -> testPath(test.getRegistryName(), metalNames)) + .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + ForgeRegistries.BLOCKS.getValues() + .stream() + .filter(test -> testPath(test.getRegistryName(), metalNames)) + .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + ForgeRegistries.ENTITIES.getValues() + .stream() + .filter(test -> testPath(test.getRegistryName(), metalNames)) + .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + + for (String s : s_whiteList) + { + LogHelper.LOGGER.info("Cosmere: %s added to Push/Pull whitelist".formatted(s)); + } + } + + private static boolean testPath(ResourceLocation test, String[] metalNames) + { + final String path = test.getPath(); + //No twisting vines, paintings, crafting tables or silverfish. Lead by itself is also incorrect. + boolean misMatch = path.contains("ting") || path.contains("silverfish") || path.equals("lead"); + return !misMatch && Arrays.stream(metalNames).anyMatch(path::contains); + } } From 9d98cbcbad5b355089229db10c9192d3c8e3d958 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 17 May 2022 15:20:05 +1200 Subject: [PATCH 0134/1090] code tidy up, pattern var --- .../leaf/cosmere/charge/MetalmindChargeHelper.java | 3 +-- src/main/java/leaf/cosmere/constants/Metals.java | 6 ++---- .../leaf/cosmere/datagen/items/ItemModelsGen.java | 3 +-- .../leaf/cosmere/datagen/language/EngLangGen.java | 10 ++++++---- .../datagen/loottables/BlockLootTableGen.java | 3 +-- .../feruchemy/store/DuraluminStoreEffect.java | 4 +--- .../effects/feruchemy/tap/BrassTapEffect.java | 3 +-- .../leaf/cosmere/handlers/EntityEventHandler.java | 13 ++++--------- src/main/java/leaf/cosmere/items/GuideItem.java | 3 +-- .../cosmere/items/curio/HemalurgicSpikeItem.java | 9 +++------ .../java/leaf/cosmere/items/gems/PolestoneItem.java | 3 +-- .../leaf/cosmere/loot/FortuneBonusModifier.java | 3 +-- .../leaf/cosmere/loot/InvestSpikeLootFunction.java | 3 +-- .../manifestation/allomancy/AllomancyBrass.java | 3 +-- .../manifestation/allomancy/AllomancyBronze.java | 3 +-- .../manifestation/allomancy/AllomancyZinc.java | 3 +-- .../manifestation/feruchemy/FeruchemyCopper.java | 3 +-- .../surgebinding/SurgeGravitation.java | 3 +-- 18 files changed, 29 insertions(+), 52 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 01b866942..3238cca4f 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -69,9 +69,8 @@ private static Predicate getIsItemInvalidMetalmind(Metals.MetalType m { return obj -> { - if (obj.getItem() instanceof MetalmindItem) + if (obj.getItem() instanceof final MetalmindItem item) { - final MetalmindItem item = (MetalmindItem) obj.getItem(); //Correct metal or harmonium which I'm using as universal return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 47e0bde37..e34c89f28 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -720,9 +720,8 @@ else if (killedEntity instanceof Player) strengthToAdd = potentialRewardRate; } } - else if (killedEntity instanceof EnderDragon) + else if (killedEntity instanceof EnderDragon dragonEntity) { - EnderDragon dragonEntity = (EnderDragon) killedEntity; //dragon doesn't reward xp in a typical way strengthToAdd = dragonEntity.getDragonFight() != null && !dragonEntity.getDragonFight().hasPreviouslyKilledDragon() @@ -760,9 +759,8 @@ else if (killedEntity instanceof Pufferfish) { strengthToAdd = -0.05; } - else if (killedEntity instanceof Cat) + else if (killedEntity instanceof Cat cat) { - Cat cat = (Cat) killedEntity; final int catType = cat.getCatType(); if (catType == 10)//all black { diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 7782a45de..5ee22e211 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -83,9 +83,8 @@ else if (item instanceof ShardbladeItem) { continue; } - else if (item instanceof MetalRawOreItem) + else if (item instanceof MetalRawOreItem rawItem) { - MetalRawOreItem rawItem = (MetalRawOreItem) item; simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); continue; } diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 1e2bda592..cf7b41624 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -16,6 +16,7 @@ import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.Util; import net.minecraft.data.DataGenerator; +import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; @@ -47,9 +48,10 @@ protected void addTranslations() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - if (item.getRegistryName().getNamespace().contentEquals(Cosmere.MODID)) + final ResourceLocation registryName = item.getRegistryName(); + if (registryName.getNamespace().contentEquals(Cosmere.MODID)) { - String localisedString = StringHelper.fixCapitalisation(item.getRegistryName().getPath()); + String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); //string overrides switch (localisedString) @@ -62,12 +64,12 @@ protected void addTranslations() if (item instanceof HemalurgicSpikeItem) { String use = ((HemalurgicSpikeItem) item).getMetalType().getShortHemalurgicUseString(); - add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + add("item.cosmere." + registryName.getPath() + ".tooltip", use); } else if (item instanceof MetalmindItem) { String use = ((MetalmindItem) item).getMetalType().getFeruchemyMetalmindUse(); - add("item.cosmere." + item.getRegistryName().getPath() + ".tooltip", use); + add("item.cosmere." + registryName.getPath() + ".tooltip", use); } diff --git a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java index 7df8ccdce..c60809378 100644 --- a/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java +++ b/src/main/java/leaf/cosmere/datagen/loottables/BlockLootTableGen.java @@ -21,9 +21,8 @@ protected void addTables() for (RegistryObject itemRegistryObject : BlocksRegistry.BLOCKS.getEntries()) { - if ((itemRegistryObject.get() instanceof MetalOreBlock)) + if ((itemRegistryObject.get() instanceof MetalOreBlock oreBlock)) { - MetalOreBlock oreBlock = (MetalOreBlock) itemRegistryObject.get(); this.add(oreBlock, (ore) -> { diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index cc5de0e10..3606ef727 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -43,13 +43,11 @@ public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) public void onRenderNameplateEvent(RenderNameplateEvent event) { - if (!(event.getEntity() instanceof LivingEntity)) + if (!(event.getEntity() instanceof LivingEntity livingEntity)) { return; } - LivingEntity livingEntity = (LivingEntity) event.getEntity(); - MobEffectInstance effectInstance = livingEntity.getEffect(this); if (effectInstance != null && effectInstance.getDuration() > 0) { diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java index 18656fd9c..64f5944b7 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java @@ -63,9 +63,8 @@ public boolean isDurationEffectTick(int duration, int amplifier) @SubscribeEvent public static void onLivingDamageEvent(LivingDamageEvent event) { - if (event.getSource().getEntity() instanceof LivingEntity) + if (event.getSource().getEntity() instanceof LivingEntity livingEntity) { - LivingEntity livingEntity = (LivingEntity) event.getSource().getEntity(); MobEffectInstance effectInstance = livingEntity.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.BRASS).get()); if (effectInstance != null && effectInstance.getDuration() > 0 && effectInstance.getAmplifier() > 3) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 22726f4a6..b1f1f1235 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -59,12 +59,11 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) { Entity eventEntity = event.getEntity(); - if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity)) + if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity livingEntity)) { return; } - LivingEntity livingEntity = (LivingEntity) eventEntity; SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; @@ -216,19 +215,17 @@ else if (handItem == Items.GOLD_NUGGET) @SubscribeEvent public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) { - if (!(event.getTarget() instanceof LivingEntity)) + if (!(event.getTarget() instanceof LivingEntity target)) { return; } ItemStack stack = event.getPlayer().getItemInHand(InteractionHand.MAIN_HAND); - LivingEntity target = (LivingEntity) event.getTarget(); SpiritwebCapability.get(target).ifPresent(cap -> { - if (stack.getItem() instanceof MetalNuggetItem) + if (stack.getItem() instanceof MetalNuggetItem beadItem) { - MetalNuggetItem beadItem = (MetalNuggetItem) stack.getItem(); Metals.MetalType metalType = beadItem.getMetalType(); if (metalType != Metals.MetalType.LERASATIUM && metalType != Metals.MetalType.LERASIUM) @@ -238,7 +235,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) MetalNuggetItem.consumeNugget(target, metalType, stack); } - else if (stack.getItem() instanceof HemalurgicSpikeItem) + else if (stack.getItem() instanceof HemalurgicSpikeItem spike) { //https://www.theoryland.com/intvmain.php?i=977#43 if (!(event.getTarget() instanceof Cat)) @@ -246,8 +243,6 @@ else if (stack.getItem() instanceof HemalurgicSpikeItem) return; } - HemalurgicSpikeItem spike = (HemalurgicSpikeItem) stack.getItem(); - //only apply spike if it has a power //no accidentally losing spikes if (!spike.hemalurgicIdentityExists(stack)) diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index a07dcf61c..568203695 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -106,9 +106,8 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In { ItemStack stack = playerIn.getItemInHand(handIn); - if (playerIn instanceof ServerPlayer) + if (playerIn instanceof ServerPlayer player) { - ServerPlayer player = (ServerPlayer) playerIn; //UseItemSuccessTrigger.INSTANCE.trigger(player, stack, player.getServerWorld(), player.getPosX(), player.getPosY(), player.getPosZ()); diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 67a94c402..4b0bb1432 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -254,16 +254,14 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool @SubscribeEvent public static void onEntityDeath(LivingDeathEvent event) { - if (event.getSource().getEntity() instanceof Player) + if (event.getSource().getEntity() instanceof Player playerEntity) { - Player playerEntity = (Player) event.getSource().getEntity(); SpiritwebCapability.get(playerEntity).ifPresent(iSpiritweb -> { ItemStack itemstack = playerEntity.getMainHandItem(); - if (itemstack.getItem() instanceof HemalurgicSpikeItem) + if (itemstack.getItem() instanceof HemalurgicSpikeItem spikeItem) { //entity was killed by a spike - HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) itemstack.getItem(); //pass in killed entity for the item to figure out what to do spikeItem.killedEntity(itemstack, playerEntity, event.getEntityLiving()); } @@ -306,9 +304,8 @@ public Multimap getDefaultAttributeModifiers(Equip public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack stack) { //do not allow players to wear two spikes of the same metal empowered by the same killed entity UUID - if (livingEntity instanceof Player) + if (livingEntity instanceof Player player) { - Player player = (Player) livingEntity; final UUID stackWeWantToEquipUUID = getHemalurgicIdentity(stack); if (stackWeWantToEquipUUID != null) diff --git a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java index 235c5b06c..c854ed7bf 100644 --- a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java +++ b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java @@ -77,9 +77,8 @@ public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pI { if (pLevel.isRainingAt(pEntity.blockPosition()) && pLevel.isThundering()) { - if (pStack.getItem() instanceof PolestoneItem) + if (pStack.getItem() instanceof PolestoneItem polestoneItem) { - PolestoneItem polestoneItem = (PolestoneItem) pStack.getItem(); polestoneItem.increaseCurrentCharge(pStack); } } diff --git a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java index 45d44a780..095b5ad72 100644 --- a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java @@ -53,9 +53,8 @@ protected List doApply(List generatedLoot, LootContext con Entity entity = context.getParamOrNull(LootContextParams.THIS_ENTITY); BlockState blockState = context.getParamOrNull(LootContextParams.BLOCK_STATE); - if (blockState != null && entity instanceof LivingEntity) + if (blockState != null && entity instanceof LivingEntity player) { - LivingEntity player = (LivingEntity) entity; MobEffectInstance storingLuckEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); MobEffectInstance tappingLuckEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.CHROMIUM).get()); diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java index 9c55fda21..8d98ba9df 100644 --- a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -40,12 +40,11 @@ public LootItemFunctionType getType() @Override protected ItemStack run(ItemStack stack, LootContext lootContext) { - if (!(stack.getItem() instanceof HemalurgicSpikeItem)) + if (!(stack.getItem() instanceof HemalurgicSpikeItem item)) { return stack; } - HemalurgicSpikeItem item = (HemalurgicSpikeItem) stack.getItem(); final Metals.MetalType spikeMetalType = item.getMetalType(); if (!spikeMetalType.hasHemalurgicEffect()) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 9d015c782..31ad1c599 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -35,9 +35,8 @@ protected void performEffect(ISpiritweb data) for (LivingEntity e : entitiesToAffect) { - if (e instanceof Mob) + if (e instanceof Mob mob) { - Mob mob = (Mob) e; mob.setNoAi(mode == 3 && allomanticStrength > 15); switch (mode) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index 84033774d..ea5bc10d8 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -37,9 +37,8 @@ protected void performEffect(ISpiritweb data) //Detects Allomantic Pulses //passive active ability, if any - if (livingEntity instanceof ServerPlayer && isActiveTick) + if (livingEntity instanceof ServerPlayer playerEntity && isActiveTick) { - ServerPlayer playerEntity = (ServerPlayer) livingEntity; int distance = getRange(data); List entitiesToCheckForAllomancy = getLivingEntitiesInRange(livingEntity, distance, false); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index 388e886c3..b915b4125 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -37,9 +37,8 @@ protected void performEffect(ISpiritweb data) for (LivingEntity e : entitiesToAffect) { - if (e instanceof Mob) + if (e instanceof Mob mob) { - Mob mob = (Mob) e; //mob.targetSelector.enableFlag(Goal.Flag.TARGET); mob.setNoAi(false); diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index bc6ad3d4b..2590202c2 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -39,11 +39,10 @@ public void tick(ISpiritweb data) //don't check every tick. LivingEntity livingEntity = data.getLiving(); - if (!(livingEntity instanceof Player) || livingEntity.tickCount % 20 != 0) + if (!(livingEntity instanceof Player playerEntity) || livingEntity.tickCount % 20 != 0) { return; } - Player playerEntity = (Player) livingEntity; int mode = data.getMode(manifestationType, metalType.getID()); diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java index 6e0fe9083..2f3702425 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgeGravitation.java @@ -24,9 +24,8 @@ public SurgeGravitation(Roshar.Surges surge) //@SubscribeEvent public void onLivingHurtEvent(LivingHurtEvent event) { - if (event.getSource().getEntity() instanceof Player) + if (event.getSource().getEntity() instanceof Player player) { - Player player = (Player) event.getSource().getEntity(); LogHelper.info(player.getName() + " has attacked a " + event.getEntityLiving().getName()); //ISurgeState SState = player.getCapability(CosmereCapabilities.SURGE_STATE, null); From 0aac049171d441f40af6db7a93442e62b18c581a Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 18 May 2022 13:05:34 +1200 Subject: [PATCH 0135/1090] Better manifestation tracking. Cleaner mode saving. --- .../leaf/cosmere/cap/entity/ISpiritweb.java | 20 ++- .../cap/entity/SpiritwebCapability.java | 135 +++++++----------- .../cosmere/charge/MetalmindChargeHelper.java | 19 ++- .../leaf/cosmere/client/ClientEvents.java | 6 +- .../cosmere/client/gui/SpiritwebMenu.java | 4 +- .../subcommands/ManifestationCommand.java | 6 +- .../java/leaf/cosmere/constants/Metals.java | 6 +- .../advancements/AllomancyAdvancements.java | 2 +- .../categories/PatchouliAllomancy.java | 2 +- .../allomancy/AllomancyBoostEffect.java | 2 +- .../leaf/cosmere/items/MetalNuggetItem.java | 16 ++- .../manifestation/ManifestationBase.java | 4 +- .../allomancy/AllomancyBase.java | 25 ++-- .../allomancy/AllomancyBendalloy.java | 4 +- .../allomancy/AllomancyBrass.java | 4 +- .../allomancy/AllomancyBronze.java | 2 +- .../allomancy/AllomancyCadmium.java | 2 +- .../allomancy/AllomancyChromium.java | 2 +- .../allomancy/AllomancyCopper.java | 2 +- .../allomancy/AllomancyIronSteel.java | 2 +- .../allomancy/AllomancyPewter.java | 2 +- .../allomancy/AllomancyZinc.java | 8 +- .../feruchemy/FeruchemyBase.java | 4 +- .../feruchemy/FeruchemyBronze.java | 8 +- .../feruchemy/FeruchemyCopper.java | 2 +- .../feruchemy/FeruchemyNicrosil.java | 2 +- .../java/leaf/cosmere/mixin/EntityMixin.java | 22 +-- .../ChangeManifestationModeMessage.java | 34 +++-- .../registry/ManifestationRegistry.java | 5 +- .../cosmere/utils/helpers/EntityHelper.java | 31 ++-- 30 files changed, 177 insertions(+), 206 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index 2cf37b19a..cfb2253fd 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -26,29 +26,27 @@ public interface ISpiritweb extends INBTSerializable LivingEntity getLiving(); - boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID); + boolean hasManifestation(AManifestation aManifestation); - boolean hasManifestation(Manifestations.ManifestationTypes type, int powerID, boolean ignoreTemporaryPower); + boolean hasManifestation(AManifestation aManifestation, boolean ignoreTemporaryPower); - void giveManifestation(Manifestations.ManifestationTypes type, int powerID); + void giveManifestation(AManifestation aManifestation); - void removeManifestation(Manifestations.ManifestationTypes type, int powerID); + void removeManifestation(AManifestation aManifestation); AManifestation manifestation(); - AManifestation manifestation(Manifestations.ManifestationTypes powerType, int powerID); - - boolean canTickManifestation(Manifestations.ManifestationTypes powerType, int powerID); + boolean canTickManifestation(AManifestation aManifestation); boolean canTickSelectedManifestation(); - int nextMode(Manifestations.ManifestationTypes powerType, int powerID); + int nextMode(AManifestation aManifestation); - int previousMode(Manifestations.ManifestationTypes powerType, int powerID); + int previousMode(AManifestation aManifestation); - void setMode(Manifestations.ManifestationTypes powerType, int powerID, int mode); + void setMode(AManifestation aManifestation, int mode); - int getMode(Manifestations.ManifestationTypes powerType, int powerID); + int getMode(AManifestation aManifestation); void syncToClients(@Nullable ServerPlayer serverPlayerEntity); diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 90ff82c23..4cf305aca 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -11,7 +11,6 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.client.gui.DrawUtils; import leaf.cosmere.constants.Manifestations.ManifestationTypes; @@ -23,7 +22,6 @@ import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -80,11 +78,7 @@ public class SpiritwebCapability implements ISpiritweb private final LivingEntity livingEntity; - public final Map MANIFESTATIONS_MODE = - Arrays.stream(ManifestationTypes.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> new int[Metals.MetalType.values().length]));//todo come back here eventually because not all power types will be the same as num metals. and some metals don't have powers >:( + public final Map MANIFESTATIONS_MODE = new HashMap<>(); private AManifestation selectedManifestation = ManifestationRegistry.NONE.get(); @@ -130,11 +124,15 @@ public CompoundTag serializeNBT() nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); - for (ManifestationTypes manifestationType : ManifestationTypes.values()) + final CompoundTag modeNBT = new CompoundTag(); + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String manifestationTypeName = manifestationType.getName(); - nbt.putIntArray(manifestationTypeName + "_mode", MANIFESTATIONS_MODE.get(manifestationType)); + if (MANIFESTATIONS_MODE.containsKey(manifestation)) + { + modeNBT.putInt(manifestation.getRegistryName().toString(), MANIFESTATIONS_MODE.get(manifestation)); + } } + nbt.put("manifestation_modes", modeNBT); final CompoundTag ingestedMetals = new CompoundTag(); for (Metals.MetalType metalType : Metals.MetalType.values()) @@ -153,17 +151,13 @@ public CompoundTag serializeNBT() @Override public void deserializeNBT(CompoundTag nbt) { - for (ManifestationTypes manifestationType : ManifestationTypes.values()) + CompoundTag modeNBT = nbt.getCompound("manifestation_modes");; + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String manifestationTypeName = manifestationType.getName(); - - int[] storedIntArray = nbt.getIntArray(manifestationTypeName + "_mode"); - int length = storedIntArray.length; - - for (int i = 0; i < length; i++) + final String manifestationLoc = manifestation.getRegistryName().toString(); + if (modeNBT.contains(manifestationLoc)) { - //doing it this way for backwards compatibility in cases where we add new powers. - MANIFESTATIONS_MODE.get(manifestationType)[i] = storedIntArray[i]; + MANIFESTATIONS_MODE.put(manifestation, modeNBT.getInt(manifestationLoc)); } } selectedManifestation = ManifestationRegistry.fromID(nbt.getString("selected_power")); @@ -194,14 +188,14 @@ public void tick() //if server if (!livingEntity.level.isClientSide) { - //Login setup + //Login sync if (!didSetup) { syncToClients(null); didSetup = true; } - if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID())) + if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation)) { selectedManifestation = ManifestationRegistry.NONE.get(); if (getLiving() instanceof ServerPlayer) @@ -302,16 +296,14 @@ public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjus public void renderWorldEffects(RenderLevelLastEvent event) { Multimap> linesToDrawByColor = LinkedHashMultimap.create(); + AllomancyIronSteel ironAllomancy = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); + AllomancyIronSteel steelAllomancy = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); //if user has iron or steel manifestation - if (hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.IRON.getID()) - || hasManifestation(ManifestationTypes.ALLOMANCY, Metals.MetalType.STEEL.getID())) + if (hasManifestation(ironAllomancy) || hasManifestation(steelAllomancy)) { - AllomancyIronSteel iron = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); - AllomancyIronSteel steel = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - //is zero if the manifestation is not active. - int range = Math.max(iron.getRange(this), steel.getRange(this)); + int range = Math.max(ironAllomancy.getRange(this), steelAllomancy.getRange(this)); if (range > 0) { @@ -340,7 +332,7 @@ public void renderSelectedHUD(PoseStack ms) String stringToDraw = I18n.get(selectedManifestation.translation().getString()); mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); - int mode = getMode(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); + int mode = getMode(selectedManifestation); String stringToDraw2 = ""; @@ -412,15 +404,14 @@ public boolean hasAnyPowers() } @Override - public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID) + public boolean hasManifestation(AManifestation aManifestation) { - return hasManifestation(manifestationTypeID, powerID, false); + return hasManifestation(aManifestation, false); } @Override - public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powerID, boolean ignoreTemporaryPower) + public boolean hasManifestation(AManifestation manifestation, boolean ignoreTemporaryPower) { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { @@ -448,10 +439,8 @@ public boolean hasManifestation(ManifestationTypes manifestationTypeID, int powe @Override - public void giveManifestation(ManifestationTypes manifestationTypeID, int powerID) + public void giveManifestation(AManifestation manifestation) { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); - String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) { @@ -474,9 +463,8 @@ public void giveManifestation(ManifestationTypes manifestationTypeID, int powerI } @Override - public void removeManifestation(ManifestationTypes manifestationTypeID, int powerID) + public void removeManifestation(AManifestation manifestation) { - AManifestation manifestation = manifestationTypeID.getManifestation(powerID); String path = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) @@ -495,21 +483,19 @@ public void removeManifestation(ManifestationTypes manifestationTypeID, int powe } @Override - public boolean canTickManifestation(ManifestationTypes manifestationType, int powerID) + public boolean canTickManifestation(AManifestation aManifestation) { - if (!hasManifestation(manifestationType, powerID)) + if (!hasManifestation(aManifestation)) { return false; } - int[] manifestationPowersModes = MANIFESTATIONS_MODE.get(manifestationType); - - if (manifestationType == ManifestationTypes.NONE || manifestationPowersModes.length == 0) + if (MANIFESTATIONS_MODE.containsKey(aManifestation)) { - return false; + return MANIFESTATIONS_MODE.get(aManifestation) != 0; } - return manifestationPowersModes[powerID] != 0; + return false; } @Override @@ -520,22 +506,19 @@ public boolean canTickSelectedManifestation() return false; } - return canTickManifestation(selectedManifestation.getManifestationType(), selectedManifestation.getPowerID()); + return canTickManifestation(selectedManifestation); } @Override public void deactivateCurrentManifestation() { - MANIFESTATIONS_MODE.get(selectedManifestation.getManifestationType())[selectedManifestation.getPowerID()] = 0; + MANIFESTATIONS_MODE.remove(selectedManifestation); } @Override public void deactivateManifestations() { - for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) - { - Arrays.fill(MANIFESTATIONS_MODE.get(manifestationTypes), 0); - } + MANIFESTATIONS_MODE.clear(); } @Override @@ -545,7 +528,7 @@ public void clearManifestations() for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + removeManifestation(manifestation); } } @@ -561,17 +544,14 @@ public List getAvailableManifestations(boolean ignoreTemporaryPo List list = new ArrayList(); //todo intelligently handle multiple powers - for (ManifestationTypes manifestationTypes : ManifestationTypes.values()) + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - if (manifestationTypes == ManifestationTypes.NONE) + if (manifestation == ManifestationRegistry.NONE.get()) continue; - for (int i = 0; i < 16; i++) + if (hasManifestation(manifestation, ignoreTemporaryPower)) { - if (hasManifestation(manifestationTypes, i, ignoreTemporaryPower)) - { - list.add(manifestationTypes.getManifestation(i)); - } + list.add(manifestation); } } @@ -584,13 +564,6 @@ public AManifestation manifestation() return selectedManifestation; } - - @Override - public AManifestation manifestation(ManifestationTypes manifestationType, int powerID) - { - return manifestationType.getManifestation(powerID); - } - @Override public String changeManifestation(int dir) { @@ -623,56 +596,50 @@ public String changeManifestation(int dir) } @Override - public void setMode(ManifestationTypes manifestationTypeID, int powerID, int mode) + public void setMode(AManifestation aManifestation, int mode) { - AManifestation aim = manifestationTypeID.getManifestation(powerID); - mode = Mth.clamp(mode, aim.modeMin(this), aim.modeMax(this)); - - MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID] = mode; + mode = Mth.clamp(mode, aManifestation.modeMin(this), aManifestation.modeMax(this)); + MANIFESTATIONS_MODE.put(aManifestation, mode); } @Override - public int getMode(ManifestationTypes manifestationTypeID, int powerID) + public int getMode(AManifestation aManifestation) { - return MANIFESTATIONS_MODE.get(manifestationTypeID)[powerID]; + return MANIFESTATIONS_MODE.getOrDefault(aManifestation, 0); } @Override - public int nextMode(ManifestationTypes manifestationType, int powerID) + public int nextMode(AManifestation aim) { - AManifestation aim = manifestationType.getManifestation(powerID); - - int currentMode = getMode(manifestationType, powerID); + int currentMode = getMode(aim); if (aim.modeWraps(this) && currentMode == aim.modeMax(this)) { int modeMin = aim.modeMin(this); - this.setMode(manifestationType, powerID, modeMin); + this.setMode(aim, modeMin); return modeMin; } int mode = Math.min(currentMode + 1, aim.modeMax(this)); - this.setMode(manifestationType, powerID, mode); + this.setMode(aim, mode); return mode; } @Override - public int previousMode(ManifestationTypes manifestationType, int powerID) + public int previousMode(AManifestation aim) { - AManifestation aim = manifestationType.getManifestation(powerID); - - int currentMode = getMode(manifestationType, powerID); + int currentMode = getMode(aim); if (aim.modeWraps(this) && currentMode == aim.modeMin(this)) { int modeMax = aim.modeMax(this); - this.setMode(manifestationType, powerID, modeMax); + this.setMode(aim, modeMax); return modeMax; } int mode = Math.max(currentMode - 1, aim.modeMin(this)); - this.setMode(manifestationType, powerID, mode); + this.setMode(aim, mode); return mode; } diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 3238cca4f..9704ac426 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -8,6 +8,8 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalmindItem; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -34,18 +36,15 @@ public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalTy CompoundTag nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); //for each power the user has access to - for (Manifestations.ManifestationTypes manifestationType : Manifestations.ManifestationTypes.values()) + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - for (int i = 0; i < 16; i++) + //even if it's granted from hemalurgy/temporary + //update the nbt. + //this will add/remove powers based on what the user currently has. + //todo, come back to this later when more sleep. bugs me about losing potential stored powers + if (data.hasManifestation(manifestation)) { - //even if it's granted from hemalurgy/temporary - //update the nbt. - //this will add/remove powers based on what the user currently has. - //todo, come back to this later when more sleep. bugs me about losing potential stored powers - if (data.hasManifestation(manifestationType, i)) - { - nbt.putDouble(manifestationType.getManifestation(i).getName(), data.manifestation(manifestationType, i).getStrength(data)); - } + nbt.putDouble(manifestation.getName(), manifestation.getStrength(data)); } } } diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index bf6d61266..92a352ef3 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -45,7 +45,7 @@ public static void handleScroll(MouseScrollEvent event) { final int delta = Mth.clamp((int) Math.round(event.getScrollDelta()), -1, 1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), delta)); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), delta)); event.setCanceled(true); @@ -93,12 +93,12 @@ else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_NEXT)) if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE)) { int dir = (player.isCrouching() ? 3 : 1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), dir)); } if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE)) { int dir = (player.isCrouching() ? -3 : -1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), dir)); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), dir)); } }); } diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 25a018e32..3e45baca3 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -165,11 +165,11 @@ public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability sp break; case MODE_INCREASE: //change mode to positive - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), 1)); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), 1)); break; case MODE_DECREASE: //change mode to negative. - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation().getManifestationType(), spiritweb.manifestation().getPowerID(), -1)); + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), -1)); break; } } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index f2aacb8ef..0b2d6ad1c 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -110,7 +110,7 @@ private static int set(CommandContext context, ServerPlayer SpiritwebCapability.get(player).ifPresent((spiritweb) -> { spiritweb.clearManifestations(); - spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + spiritweb.giveManifestation(manifestation); spiritweb.syncToClients(null); source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); }); @@ -133,7 +133,7 @@ private static int give(CommandContext context, ServerPlayer } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { - spiritweb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + spiritweb.giveManifestation(manifestation); source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); spiritweb.syncToClients(null); }); @@ -156,7 +156,7 @@ private static int remove(CommandContext context, ServerPlay } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { - spiritweb.removeManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); + spiritweb.removeManifestation(manifestation); spiritweb.syncToClients(null); source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); }); diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index e34c89f28..e3022533e 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -6,7 +6,6 @@ import leaf.cosmere.blocks.MetalBlock; import leaf.cosmere.items.MetalIngotItem; -import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.MetalRawOreItem; import leaf.cosmere.items.curio.BraceletMetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; @@ -33,10 +32,7 @@ import net.minecraft.world.level.block.OreBlock; import java.awt.*; -import java.util.Arrays; -import java.util.Collection; -import java.util.Locale; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /* diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index d9f55af1a..04024b004 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -45,7 +45,7 @@ public void accept(Consumer advancementConsumer) //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) .save(advancementConsumer, categoryName + "/root"); - for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) + for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) { AllomancyBase allomancyBase = (AllomancyBase) manifestation.get(); diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 53c6e6992..28e0d5199 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -43,7 +43,7 @@ public static void collect(List categories, List manifestation : ALLOMANCY_POWERS.values()) + for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) { AManifestation aManifestation = manifestation.get(); AllomancyBase allomancyManifestation = (AllomancyBase) aManifestation; diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 49390a120..6cd3c4c5b 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -55,7 +55,7 @@ public void applyEffectTick(LivingEntity livingEntity, int amplifier) } //if metal is active - if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalType.getID())) + if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metalType.getID()))) { int ingestedMetalAmount = data.getIngestedMetal(metalType); diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index bb384f9c0..61744e184 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -7,6 +7,8 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; @@ -61,17 +63,25 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met //todo translations livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); } - for (int i = 0; i < 16; i++) + + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { switch (metalType) { case LERASIUM: //give allomancy - spiritweb.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, i); + if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY) + { + spiritweb.giveManifestation(manifestation); + } break; case LERASATIUM: //give feruchemy - spiritweb.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, i); + if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY) + { + spiritweb.giveManifestation(manifestation); + } break; } } diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 07009fe29..30b75f4eb 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -45,7 +45,7 @@ public void onModeChange(ISpiritweb data) @Override public int getMode(ISpiritweb data) { - return data.getMode(manifestationType, getPowerID()); + return data.getMode(this); } @Override @@ -75,7 +75,7 @@ public void tick(ISpiritweb data) @Override public boolean isActive(ISpiritweb data) { - return data.canTickManifestation(this.manifestationType, this.getPowerID()); + return data.canTickManifestation(this); } @Override diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 0dad01161..8ee49c5b9 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -9,9 +9,11 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.KeybindingRegistry; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.KeyMapping; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; @@ -69,7 +71,7 @@ public boolean isActive(ISpiritweb data) public boolean isMetalBurning(ISpiritweb data) { - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); //make sure the user can afford the cost of burning this metal while (mode > 0) @@ -84,7 +86,7 @@ public boolean isMetalBurning(ISpiritweb data) { mode--; //set that mode back to the capability. - data.setMode(manifestationType, metalType.getID(), mode); + data.setMode(this, mode); //if it hits zero then return out //try again at a lower burn rate. } @@ -95,7 +97,7 @@ public boolean isMetalBurning(ISpiritweb data) @Override public void tick(ISpiritweb data) { - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); if (!isActive(data)) { @@ -109,8 +111,9 @@ public void tick(ISpiritweb data) //if we get to this point, we are in an active burn state. //check for compound. - int feruchemyMode = data.hasManifestation(Manifestations.ManifestationTypes.FERUCHEMY, getPowerID()) - ? data.getMode(Manifestations.ManifestationTypes.FERUCHEMY, metalType.getID()) + final AManifestation feruchemyManifestation = ManifestationRegistry.FERUCHEMY_POWERS.get(metalType).get(); + int feruchemyMode = data.hasManifestation(feruchemyManifestation) + ? feruchemyManifestation.getMode(data) : 0; //feruchemy power exists and is active @@ -145,24 +148,24 @@ else if (getMetalType().isPushMetal()) return null; } - public double getStrength(ISpiritweb cap) + public double getStrength(ISpiritweb data) { RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); - AttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); + AttributeInstance attribute = data.getLiving().getAttribute(mistingAttribute.get()); return attribute != null ? attribute.getValue() : 0; } - public int getRange(ISpiritweb cap) + public int getRange(ISpiritweb data) { - if (!isActive(cap)) + if (!isActive(data)) { return 0; } //get allomantic strength - double allomanticStrength = getStrength(cap); - return Mth.floor(allomanticStrength * cap.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID())); + double allomanticStrength = getStrength(data); + return Mth.floor(allomanticStrength * getMode(data)); } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index d9c42f579..193abdbb5 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -30,9 +30,9 @@ protected void performEffect(ISpiritweb data) //Slows Down Time for the entities around the user if (isActiveTick) { - int mode = data.getMode(manifestationType, getMetalType().getID()); + int mode = getMode(data); - int range = 5 * mode; + int range = this.getRange(data); List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 31ad1c599..3d6515065 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -24,12 +24,12 @@ public AllomancyBrass(Metals.MetalType metalType) @Override protected void performEffect(ISpiritweb data) { - int mode = data.getMode(manifestationType, getMetalType().getID()); + int mode = getMode(data); //todo, replace x * mode with config based value double allomanticStrength = getStrength(data); - int range = (int) (allomanticStrength * mode); + int range = getRange(data); List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index ea5bc10d8..af979be6a 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -65,7 +65,7 @@ protected void performEffect(ISpiritweb data) int metalTypeID = metalType.getID(); //todo decide what to do about this part //since this is running on the server specifically. - if (targetSpiritweb.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY, metalTypeID)) + if (targetSpiritweb.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metalTypeID))) { //found one diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java index 278ae4e20..4097d2581 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java @@ -32,7 +32,7 @@ protected void performEffect(ISpiritweb data) //tick entities around user if (data.getLiving().tickCount % 6 == 0) { - int range = 3 * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getPowerID()); + int range = getRange(data); int x = (int) (data.getLiving().getX() + (data.getLiving().getRandomX(range * 2 + 1) - range)); int z = (int) (data.getLiving().getZ() + (data.getLiving().getRandomZ(range * 2 + 1) - range)); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java index 5e23256b9..6c06d1f4c 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java @@ -27,7 +27,7 @@ protected void performEffect(ISpiritweb data) { //Wipes Allomantic Reserves of Target { - int range = data.getMode(manifestationType, getMetalType().getID()); + int range = getRange(data); LivingEntity living = data.getLiving(); Level world = living.level; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java index 7a6c501db..b62b9f510 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java @@ -31,7 +31,7 @@ protected void performEffect(ISpiritweb data) //Hides Allomantic Pulses if (isActiveTick) { - int mode = data.getMode(manifestationType, getMetalType().getID()); + int mode = getMode(data); MobEffectInstance newEffect = EffectsHelper.getNewEffect(EffectsRegistry.ALLOMANTIC_COPPER.get(), mode - 1); List entitiesToApplyEffect = getLivingEntitiesInRange(livingEntity, 5, true); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 9114d6feb..d912c613b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -182,7 +182,7 @@ private void performEffectServer(ISpiritweb cap) //if the entity is in range of being able to push or pull from - double maxDistance = (strength * data.getMode(Manifestations.ManifestationTypes.ALLOMANCY, getMetalType().getID()));// * 0.1f; + double maxDistance = (strength * getMode(data));// * 0.1f; if (blockPos.closerThan(living.blockPosition(), maxDistance)) { Vec3 blockCenter = Vec3.atCenterOf(blockPos); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java index 85d881aa8..e3d286efc 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java @@ -26,7 +26,7 @@ protected void performEffect(ISpiritweb data) //Increases Physical Abilities if (isActiveTick) { - int mode = data.getMode(manifestationType, getMetalType().getID()); + int mode = getMode(data); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SPEED, 0)); switch (mode) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index b915b4125..99e47b562 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -26,12 +26,8 @@ public AllomancyZinc(Metals.MetalType metalType) @Override protected void performEffect(ISpiritweb data) { - int mode = data.getMode(manifestationType, getMetalType().getID()); - - //todo, replace x * mode with config based value - double allomanticStrength = getStrength(data); - - int range = (int) (allomanticStrength * mode); + int mode = getMode(data); + int range = getRange(data); List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 5188fa662..bc0870d55 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -72,7 +72,7 @@ public void tick(ISpiritweb data) return; } - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); int cost; @@ -117,7 +117,7 @@ else if (mode > 0) if (mode < 0) { //move towards turning off feruchemy. - data.setMode(manifestationType, metalType.getID(), mode + 1); + data.setMode(this, mode + 1); } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java index 690a007c3..4b9f3ec8e 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -59,7 +59,7 @@ public void tick(ISpiritweb data) return; } - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); //can't store or tap any more switch (mode) @@ -96,7 +96,7 @@ private void trySleep(ISpiritweb data) if (!canSleep) { //todo add message to player saying can't sleep - data.setMode(this.manifestationType, this.metalType.getID(), 0); + data.setMode(this, 0); return; } @@ -148,7 +148,7 @@ private void trySleep(ISpiritweb data) player.awardStat(Stats.SLEEP_IN_BED); CriteriaTriggers.SLEPT_IN_BED.trigger(player); - data.setMode(this.manifestationType, this.metalType.getID(), 0); + data.setMode(this, 0); } @@ -205,7 +205,7 @@ public void sleepCheck(SleepingLocationCheckEvent event) { SpiritwebCapability.get(event.getEntityLiving()).ifPresent(iSpiritweb -> { - if (iSpiritweb.hasManifestation(this.manifestationType, this.metalType.getID())) + if (iSpiritweb.hasManifestation(this)) { event.setResult(Event.Result.ALLOW); } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index 2590202c2..f66e33be0 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -44,7 +44,7 @@ public void tick(ISpiritweb data) return; } - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); //can't store or tap any more if (mode == 0) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index dd6aa5c52..2812ea50c 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -44,7 +44,7 @@ public void tick(ISpiritweb data) return; } - int mode = data.getMode(manifestationType, metalType.getID()); + int mode = getMode(data); int cost; diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 1f72a9f5a..129f565ef 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -5,9 +5,9 @@ package leaf.cosmere.mixin; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.Entity; @@ -38,18 +38,10 @@ private void handleIsGlowing(CallbackInfoReturnable cir) SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> { + final AllomancyBase bronzeAllomancyManifestation = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.BRONZE).get(); //if the player does not have bronze, early exit - final boolean playerHasBronzeAllomancy = playerSpiritweb.hasManifestation( - Manifestations.ManifestationTypes.ALLOMANCY, - Metals.MetalType.BRONZE.getID() - ); - - final boolean playerBronzeBurning = playerSpiritweb.canTickManifestation( - Manifestations.ManifestationTypes.ALLOMANCY, - Metals.MetalType.BRONZE.getID() - ); - - if (!playerHasBronzeAllomancy || !playerBronzeBurning) + if (!playerSpiritweb.hasManifestation(bronzeAllomancyManifestation) + || !playerSpiritweb.canTickManifestation(bronzeAllomancyManifestation)) { return; } @@ -65,10 +57,10 @@ private void handleIsGlowing(CallbackInfoReturnable cir) //get allomantic strength of - int mode = playerSpiritweb.getMode(Manifestations.ManifestationTypes.ALLOMANCY, Metals.MetalType.BRONZE.getID()); + int mode = bronzeAllomancyManifestation.getMode(playerSpiritweb); //todo range to config - int range = 5 * mode; + double range = bronzeAllomancyManifestation.getRange(playerSpiritweb); boolean found = false; //if target is player and has any active manifestations, @@ -82,7 +74,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) //don't tick powers that are not active final boolean targetIsPlayer = target instanceof Player; - if (!targetIsPlayer && targetSpiritweb.hasManifestation(manifestation.getManifestationType(), manifestation.getPowerID())) + if (!targetIsPlayer && targetSpiritweb.hasManifestation(manifestation)) { found = true; break; diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index 6374a070f..c09252bfc 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -6,8 +6,9 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.BaseComponent; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; @@ -16,14 +17,12 @@ public class ChangeManifestationModeMessage { - Manifestations.ManifestationTypes powerType; - int powerID; + AManifestation manifestation; int dir; - public ChangeManifestationModeMessage(Manifestations.ManifestationTypes powerType, int powerID, int dir) + public ChangeManifestationModeMessage(AManifestation aManifestation, int dir) { - this.powerType = powerType; - this.powerID = powerID; + this.manifestation = aManifestation; this.dir = dir; } @@ -32,42 +31,41 @@ public static void handle(ChangeManifestationModeMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((data) -> { if (message.dir == 1) { - cap.nextMode(message.powerType, message.powerID); + data.nextMode(message.manifestation); } else if (message.dir == -1) { - cap.previousMode(message.powerType, message.powerID); + data.previousMode(message.manifestation); } else if (message.dir != 0) { - int newMode = message.dir + cap.getMode(message.powerType, message.powerID); - cap.setMode(message.powerType, message.powerID, newMode); + int newMode = message.dir + message.manifestation.getMode(data); + data.setMode(message.manifestation, newMode); } - cap.manifestation(message.powerType, message.powerID).onModeChange(cap); - cap.syncToClients(null); + message.manifestation.onModeChange(data); + data.syncToClients(null); })); context.setPacketHandled(true); } public static void encode(ChangeManifestationModeMessage mes, FriendlyByteBuf buf) { - buf.writeInt(mes.powerType.getID()); - buf.writeInt(mes.powerID); + String namespace = mes.manifestation.getRegistryName().toString(); + buf.writeUtf(namespace); buf.writeInt(mes.dir); } public static ChangeManifestationModeMessage decode(FriendlyByteBuf buf) { - final Manifestations.ManifestationTypes manifestationType = Manifestations.ManifestationTypes.valueOf(buf.readInt()).get(); - final int powerID = buf.readInt(); + String location = buf.readUtf(); final int dir = buf.readInt(); - return new ChangeManifestationModeMessage(manifestationType, powerID, dir); + return new ChangeManifestationModeMessage(ManifestationRegistry.fromID(location), dir); } } diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index aadaa4c97..cebfa5f1d 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -35,7 +35,7 @@ public class ManifestationRegistry public static final RegistryObject NONE = MANIFESTATIONS.register("none", () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); // Allomancy - public static final Map> ALLOMANCY_POWERS = + public static final Map> ALLOMANCY_POWERS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasAssociatedManifestation) .collect(Collectors.toMap( @@ -192,8 +192,7 @@ public static Map getManifestations() { Map map = new HashMap<>(); - IForgeRegistry abstractInvestitureManifestations = ManifestationRegistry.MANIFESTATION_REGISTRY.get(); - for (AManifestation data : abstractInvestitureManifestations) + for (AManifestation data : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { map.put(data.getRegistryName(), data.description().getKey()); } diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index 77795aee6..8762587a0 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -6,10 +6,14 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.phys.AABB; +import net.minecraftforge.registries.RegistryObject; import java.util.List; @@ -52,6 +56,7 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe { boolean isPlayerEntity = entity instanceof Player; //low chance of having full powers of one type + //0-15 inclusive is normal powers. boolean isFullPowersFromOneType = MathHelper.randomInt(0, 16) % 16 == 0; //small chance of being twin born, but only if not having full powers above @@ -64,16 +69,20 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe //if not twinborn, pick one power boolean isAllomancy = MathHelper.randomBool(); - Manifestations.ManifestationTypes powerType = isAllomancy - ? Manifestations.ManifestationTypes.ALLOMANCY - : Manifestations.ManifestationTypes.FERUCHEMY; if (isFullPowersFromOneType) { //ooh full powers - for (int i = 0; i < 16; i++) + + for (RegistryObject power : ManifestationRegistry.MANIFESTATIONS.getEntries()) { - spiritwebCapability.giveManifestation(powerType, i); + final AManifestation manifestation = power.get(); + final Manifestations.ManifestationTypes manifestationType = manifestation.getManifestationType(); + if ((isAllomancy && manifestationType == Manifestations.ManifestationTypes.ALLOMANCY) + || (!isAllomancy && manifestationType == Manifestations.ManifestationTypes.FERUCHEMY)) + { + spiritwebCapability.giveManifestation(manifestation); + } } if (!isPlayerEntity) @@ -87,8 +96,8 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe } else if (isTwinborn) { - spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, allomancyPower); - spiritwebCapability.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, feruchemyPower); + spiritwebCapability.giveManifestation(ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.valueOf(allomancyPower).get()).get()); + spiritwebCapability.giveManifestation(ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.valueOf(feruchemyPower).get()).get()); if (!isPlayerEntity) { @@ -99,8 +108,12 @@ else if (isTwinborn) } else { - int powerID = isAllomancy ? allomancyPower : feruchemyPower; - spiritwebCapability.giveManifestation(powerType, powerID); + AManifestation manifestation = + isAllomancy + ? ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.valueOf(allomancyPower).get()).get() + : ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.valueOf(feruchemyPower).get()).get(); + + spiritwebCapability.giveManifestation(manifestation); //todo translations //todo grant random name //entity.setCustomName(powerType.getManifestation(powerID).translation()); From 08c82eb8a6fa4b8bbf548a28dcde47ba14e7b9d4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 18 May 2022 14:55:36 +1200 Subject: [PATCH 0136/1090] Lerasium spikes steal all attributes. Lerasatium spikes steal all powers. --- src/main/generated/.cache/cache | 10 ++- .../generated/assets/cosmere/lang/en_us.json | 2 + .../cosmere/models/item/lerasatium_spike.json | 6 ++ .../cosmere.spikes/lerasatium_spike.json | 32 +++++++++ .../hemalurgy/hemalurgic_lerasatium.json | 20 ++++++ .../cosmere/recipes/lerasatium_spike.json | 16 +++++ .../data/cosmere/tags/items/spike.json | 3 +- .../data/curios/tags/items/curio.json | 3 +- .../java/leaf/cosmere/constants/Metals.java | 1 - .../cosmere/items/curio/IHemalurgicInfo.java | 72 +++++++++++++------ .../cosmere/utils/helpers/MathHelper.java | 6 +- 11 files changed, 140 insertions(+), 31 deletions(-) create mode 100644 src/main/generated/assets/cosmere/models/item/lerasatium_spike.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json create mode 100644 src/main/generated/data/cosmere/recipes/lerasatium_spike.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index db7efd62c..7e000fb74 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -101e639d5e78524bdad3030e0dc8d2f3ad2bba15 assets/cosmere/lang/en_us.json +1fc306422da79088a90df68f5fd7542473bcfae4 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -162,6 +162,7 @@ b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/lead_ore.jso a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasatium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasatium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasatium_nugget.json +e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/lerasatium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasium_nugget.json @@ -494,6 +495,7 @@ f277c37e16a5c2f1db7a6cdf18b8a562bbab72ef data/cosmere/advancements/recipes/cosme 43dfac1c5d23810e7094c5f1041bf1958677d90d data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json 935bbeb4de6a6be7b718b10c90de82109c20fc83 data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json ba0d062556a308dbe7bf698114290cbf6f036d5a data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json +13611ba76ad7fba4cee53c2b9df559b418532e16 data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json 947031e54eea0f2bb6b852a88b7244cede795f78 data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json 281c69a3ab5f639a336b5ea987933cb3305113e1 data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json a8921f36242a162e5d0e94bff0c632e20b531991 data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json @@ -589,6 +591,7 @@ af160c124a36d64af58beb1d80ce09a79e705034 data/cosmere/patchouli_books/guide/en_u 72505f6620e804b02befadd05c5b9032c102d4af data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json 66286a529566be62dce5ba7e642ecf1aa7809f5f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json 0d54f9e5f284724320dfc5a6e059ba2b86dc30ba data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +4e1c3d6a8c885dfcf6ec06250ef2f510fcbeea8e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json 9d505c4ee5fe79408d52e9b577fb2d0b14ee7032 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json 34c6b0eb6f8d9faa45e035d70777f4d88b8cb652 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json a0003efb41b96c2d46ae9faf5b181589504df137 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json @@ -750,6 +753,7 @@ e7bc46e414ebcf943fbd37e00960e5f4a0bdcf16 data/cosmere/recipes/lead_ingot_from_bl c2445f24c5925d732921171fbfa66864c59a7f14 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json b8f3198b4be02f2e8f527a889b8fb8400f7bde94 data/cosmere/recipes/lerasatium_block.json 9c4f793d8b11d5325374c1b49c3d2faa6c956c70 data/cosmere/recipes/lerasatium_ingot.json +ffcc13204e3e2477da71551734c67663b198cbbb data/cosmere/recipes/lerasatium_spike.json dd2ff61f372ff445523089553ac376a09c44b740 data/cosmere/recipes/lerasium_block.json 7410b8a0ad886ff31a5642e3be908a6b1deb1261 data/cosmere/recipes/lerasium_ingot.json 582a7216f09b94d088418c81af04a2e4aa72db7f data/cosmere/recipes/lerasium_spike.json @@ -814,9 +818,9 @@ be0661d2dd2fb5b6bede37848e9461b6c1806a1d data/cosmere/recipes/zinc_ingot_from_bl ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_metalmind.json d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json 6fe02255d6c35f42bd3f9234b1c239022e995d8a data/cosmere/recipes/zinc_spike.json -b37675f80320064d0f85e5df877ce3291f7e861c data/cosmere/tags/items/spike.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/cosmere/tags/items/spike.json 6d2602fc3592bdf26c0b7f56b7960810f0b7daf0 data/curios/tags/items/bracelet.json -b37675f80320064d0f85e5df877ce3291f7e861c data/curios/tags/items/curio.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/curio.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json f5b416f3fe61239a50d82fae0dd54f5e8b4b0df7 data/forge/tags/blocks/ores/aluminum.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 97b0bced3..8618863b7 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -349,6 +349,8 @@ "item.cosmere.lead_nugget": "Lead Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", "item.cosmere.lerasatium_nugget": "Lerasatium Nugget", + "item.cosmere.lerasatium_spike": "Lerasatium Spike", + "item.cosmere.lerasatium_spike.tooltip": "Unknown...", "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.lerasium_spike": "Lerasium Spike", diff --git a/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json b/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json new file mode 100644 index 000000000..476db69e3 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/metal_spike" + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json new file mode 100644 index 000000000..9be4d0f93 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:lerasatium_spike" + ] + }, + "criteria": { + "has_material": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:lerasatium_spike" + } + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json new file mode 100644 index 000000000..06503d597 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json @@ -0,0 +1,20 @@ +{ + "name": "Hemalurgic Lerasatium", + "category": "cosmere:hemalurgy", + "icon": "cosmere:lerasatium_spike", + "pages": [ + { + "type": "text", + "text": "Unknown..." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:lerasatium_spike", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 20 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/lerasatium_spike.json b/src/main/generated/data/cosmere/recipes/lerasatium_spike.json new file mode 100644 index 000000000..8a7064998 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/lerasatium_spike.json @@ -0,0 +1,16 @@ +{ + "type": "minecraft:crafting_shaped", + "group": "spike", + "pattern": [ + "X", + "X" + ], + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + } + }, + "result": { + "item": "cosmere:lerasatium_spike" + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/tags/items/spike.json b/src/main/generated/data/cosmere/tags/items/spike.json index 1e0c006e9..25f6cb518 100644 --- a/src/main/generated/data/cosmere/tags/items/spike.json +++ b/src/main/generated/data/cosmere/tags/items/spike.json @@ -18,6 +18,7 @@ "cosmere:gold_spike", "cosmere:electrum_spike", "cosmere:atium_spike", - "cosmere:lerasium_spike" + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" ] } \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/curio.json b/src/main/generated/data/curios/tags/items/curio.json index 1e0c006e9..25f6cb518 100644 --- a/src/main/generated/data/curios/tags/items/curio.json +++ b/src/main/generated/data/curios/tags/items/curio.json @@ -18,6 +18,7 @@ "cosmere:gold_spike", "cosmere:electrum_spike", "cosmere:atium_spike", - "cosmere:lerasium_spike" + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" ] } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index e3022533e..328a50a77 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -153,7 +153,6 @@ public boolean hasHemalurgicEffect() switch (this) { case MALATIUM: - case LERASATIUM: case HARMONIUM: case NICKEL: case LEAD: diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 55aaa5611..f5bda1fd2 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -73,28 +73,9 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //Steals non-manifestation based abilities. traits inherent to an entity? - switch (spikeMetalType) + if (getAttributes(stack, spikeMetalType, playerEntity, entityKilled)) { - case IRON: - case TIN: - case COPPER: - case ZINC: - case ALUMINUM: - case DURALUMIN: - case CHROMIUM: - case NICROSIL: - - //Non-Manifestation based hemalurgy all comes here - //How much is already stored? (like koloss spikes could keep storing strength on the same spike) - final double strengthCurrent = getHemalurgicStrength(stack, spikeMetalType); - //how much should we add. - final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); - final double strengthToAdd = strengthCurrent + entityAbilityStrength; - if (strengthToAdd > 0.01 || strengthToAdd < -0.01) - { - Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); - } - return; + return; } List manifestationsFound = new ArrayList<>(); @@ -167,7 +148,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType } } break; - case LERASIUM: + case LERASATIUM: { for (AManifestation manifestation : manifestationsFound) { @@ -181,6 +162,53 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType } + private boolean getAttributes(ItemStack stack, Metals.MetalType spikeMetalType, Player playerEntity, LivingEntity entityKilled) + { + switch (spikeMetalType) + { + case LERASIUM: + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + //all **attribute** metals EXCEPT lerasium + switch (metalType) + { + case IRON: + case TIN: + case COPPER: + case ZINC: + case ALUMINUM: + case DURALUMIN: + case CHROMIUM: + case NICROSIL: + getAttributes(stack, metalType, playerEntity, entityKilled); + break; + } + } + return true; + case IRON: + case TIN: + case COPPER: + case ZINC: + case ALUMINUM: + case DURALUMIN: + case CHROMIUM: + case NICROSIL: + + //Non-Manifestation based hemalurgy all comes here + //How much is already stored? (like koloss spikes could keep storing strength on the same spike) + final double strengthCurrent = getHemalurgicStrength(stack, spikeMetalType); + //how much should we add. + final double entityAbilityStrength = spikeMetalType.getEntityAbilityStrength(entityKilled, playerEntity); + final double strengthToAdd = strengthCurrent + entityAbilityStrength; + if (strengthToAdd > 0.01 || strengthToAdd < -0.01) + { + Invest(stack, spikeMetalType, strengthToAdd, entityKilled.getUUID()); + } + return true; + } + return false; + } + default AManifestation getRandomMetalPowerFromList( List manifestationsFound, List whiteList, diff --git a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java index 8817d40d4..11c4e7ea0 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java @@ -8,16 +8,16 @@ public class MathHelper { - final static Random rand = new Random(); + public final static Random RANDOM = new Random(); public static int randomInt(int min, int max) { - return rand.nextInt((max - min) + 1) + min; + return RANDOM.nextInt((max - min) + 1) + min; } public static boolean randomBool() { - return rand.nextBoolean(); + return RANDOM.nextBoolean(); } From 85560ea8f08ad81b7b3d7be36b0d6d6f74e18355 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 18 May 2022 15:34:07 +1200 Subject: [PATCH 0137/1090] spike tooltip localisation --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 7 ++++ .../java/leaf/cosmere/constants/Metals.java | 4 +-- .../cosmere/datagen/language/EngLangGen.java | 8 ++++- .../cosmere/items/curio/IHemalurgicInfo.java | 33 +++++++++++++++---- 5 files changed, 43 insertions(+), 11 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 7e000fb74..311009ebf 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -1fc306422da79088a90df68f5fd7542473bcfae4 assets/cosmere/lang/en_us.json +850eb03b1e738063b8d92eae714c71ecb6c65f2f assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 8618863b7..1c3891b43 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -543,6 +543,13 @@ "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", + "tooltip.cosmere.attribute.chromium": "+%s%% Luck", + "tooltip.cosmere.attribute.copper": "+%s%% XP", + "tooltip.cosmere.attribute.duralumin": "", + "tooltip.cosmere.attribute.iron": "+%s Attack Damage", + "tooltip.cosmere.attribute.nicrosil": "", + "tooltip.cosmere.attribute.tin": "+%s%% Better Night Vision", + "tooltip.cosmere.attribute.zinc": "+%s%% Emotional Fortitude", "tooltip.cosmere.metals.contained": "Contained Metals:", "tooltip.cosmere.power.found": "Hemalurgic Charge:", "tooltip.item.info.control": "\u00A77Hold \u00A78[\u00A7eControl\u00A78]", diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 328a50a77..2a10c5f66 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -735,7 +735,7 @@ else if (killedEntity instanceof EnderDragon dragonEntity) case ALUMINUM: //done else where. break; - case DURALUMIN: + case DURALUMIN://todo hemalurgic connection/identity //Steals Connection/Identity break; case CHROMIUM: @@ -767,7 +767,7 @@ else if (catType == 8)//white } } break; - case NICROSIL: + case NICROSIL://todo hemalurgic investiture //Steals Investiture break; } diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index cf7b41624..2e70ac773 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -183,8 +183,14 @@ else if (item instanceof MetalmindItem) } - add("tooltip.cosmere.metals.contained", "Contained Metals:"); + add("tooltip.cosmere.attribute.iron","+%s Attack Damage"); + add("tooltip.cosmere.attribute.tin","+%s%% Better Night Vision"); + add("tooltip.cosmere.attribute.copper","+%s%% XP"); + add("tooltip.cosmere.attribute.zinc","+%s%% Emotional Fortitude"); + add("tooltip.cosmere.attribute.duralumin","");//todo hemalurgic connection/identity + add("tooltip.cosmere.attribute.chromium","+%s%% Luck"); + add("tooltip.cosmere.attribute.nicrosil","");//todo hemalurgic investiture //ItemGroups/Tabs add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index f5bda1fd2..28a65263e 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -380,15 +380,34 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); - if (hasHemalurgicPower(stack, hemalurgicSpikeItem.getMetalType())) + //iterate through all metals, because lerasium spikes steal all attributes + for (Metals.MetalType metalType : Metals.MetalType.values()) { - tooltip.add(TextHelper.createTranslatedText("tooltip.hemalurgy." + hemalurgicSpikeItem.getMetalType())); - - if (hemalurgicSpikeItem.getMetalType() == Metals.MetalType.IRON) + //all **attribute** metals EXCEPT lerasium + switch (metalType) { - double hemalurgicStrength = getHemalurgicStrength(stack, hemalurgicSpikeItem.getMetalType()); - String s = "+" + hemalurgicStrength + " Attack Damage"; - tooltip.add(TextHelper.createText(s)); + case IRON: + case TIN: + case COPPER: + case ZINC: + case ALUMINUM: + case DURALUMIN: + case CHROMIUM: + case NICROSIL: + if (hasHemalurgicPower(stack, metalType)) + { + double hemalurgicStrength = getHemalurgicStrength(stack, metalType); + + if (metalType != Metals.MetalType.IRON) + { + hemalurgicStrength = hemalurgicStrength * 100; + } + double roundOff = (double) Math.round(hemalurgicStrength * 100) / 100; + + + tooltip.add(TextHelper.createTranslatedText("tooltip.cosmere.attribute." + metalType.getName(), roundOff)); + } + break; } } From 10462db573d4b895bff38604fcca5aaee5a335f3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 18 May 2022 15:58:43 +1200 Subject: [PATCH 0138/1090] Update AllomancyZinc.java --- .../cosmere/manifestation/allomancy/AllomancyZinc.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index 99e47b562..53cfb4f91 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -44,14 +44,15 @@ protected void performEffect(ISpiritweb data) case 3: if (mob.getTarget() == null) { - LivingEntity attackTarget = entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1)); + LivingEntity attackTarget = entitiesToAffect.get(MathHelper.RANDOM.nextInt(entitiesToAffect.size())); mob.setTarget(attackTarget); } case 2: if (mob.getLastHurtByMob() == null) { - mob.setLastHurtByMob(mob.getTarget() != null ? mob.getTarget() - : entitiesToAffect.get(MathHelper.randomInt(0, entitiesToAffect.size() - 1))); + mob.setLastHurtByMob(mob.getTarget() != null + ? mob.getTarget() + : entitiesToAffect.get(MathHelper.RANDOM.nextInt(entitiesToAffect.size()))); } case 1: From 7d4f1495af65f0c7548ada072c717dd3615cf8a0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 18 May 2022 21:19:41 +1200 Subject: [PATCH 0139/1090] Push/Pull mobs and item entities --- .../allomancy/AllomancyIronSteel.java | 219 +++++++++++++----- .../network/packets/SyncPushPullMessage.java | 21 ++ .../cosmere/utils/helpers/PlayerHelper.java | 36 +++ 3 files changed, 213 insertions(+), 63 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index d912c613b..c473b96d2 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -6,13 +6,13 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.SyncPushPullMessage; import leaf.cosmere.utils.helpers.CodecHelper; import leaf.cosmere.utils.helpers.LogHelper; +import leaf.cosmere.utils.helpers.PlayerHelper; import leaf.cosmere.utils.helpers.VectorHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; @@ -20,11 +20,12 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -39,7 +40,6 @@ import net.minecraftforge.registries.ForgeRegistries; import java.util.*; -import java.util.stream.Collectors; import static leaf.cosmere.utils.helpers.EntityHelper.getEntitiesInRange; @@ -82,7 +82,7 @@ private void performEffectClient(ISpiritweb cap) if (getKeyBinding().isDown()) { Minecraft mc = Minecraft.getInstance(); - HitResult ray = cap.getLiving().pick(getRange(cap), 0, false); + HitResult ray = PlayerHelper.pickWithRange(cap.getLiving(), getRange(cap)); if (ray.getType() == HitResult.Type.BLOCK && !blocks.contains(((BlockHitResult) ray).getBlockPos())) { @@ -100,16 +100,21 @@ private void performEffectClient(ISpiritweb cap) hasChanged = true; } } - else if (ray.getType() == HitResult.Type.ENTITY && !entities.contains(((EntityHitResult) ray).getEntity().getId())) + + if (ray instanceof EntityHitResult entityHitResult) { - //todo check for metal - entities.add(((EntityHitResult) ray).getEntity().getId()); + final Entity hitResultEntity = entityHitResult.getEntity(); - if (entities.size() > 5) + if (!entities.contains(hitResultEntity.getId()) && entityContainsMetal(hitResultEntity)) { - entities.remove(0); + entities.add(hitResultEntity.getId()); + if (entities.size() > 5) + { + entities.remove(0); + } + hasChanged = true; } - hasChanged = true; + } } else @@ -133,15 +138,10 @@ else if (ray.getType() == HitResult.Type.ENTITY && !entities.contains(((EntityHi if (hasChanged) { CompoundTag nbt = new CompoundTag(); - - final String pushBlocks = "pushBlocks"; - final String pullBlocks = "pullBlocks"; - String target = isPush ? pushBlocks : pullBlocks; - CodecHelper.BlockPosListCodec.encodeStart(NbtOps.INSTANCE, blocks) .resultOrPartial(LogHelper.LOGGER::error) - .ifPresent(inbt1 -> nbt.put(target, inbt1)); - + .ifPresent(inbt1 -> nbt.put(isPush ? "pushBlocks" : "pullBlocks", inbt1)); + nbt.putIntArray(isPush ? "pushEntities" : "pullEntities", entities); Network.sendToServer(new SyncPushPullMessage(nbt)); } } @@ -155,9 +155,85 @@ private void performEffectServer(ISpiritweb cap) //perform the entity move thing. SpiritwebCapability data = (SpiritwebCapability) cap; + //todo change this. We shouldn't be setting data on the manifestation base blocks = isPush ? data.pushBlocks : data.pullBlocks; entities = isPush ? data.pushEntities : data.pullEntities; + if (!blocks.isEmpty()) + { + pushpullBlocks(data); + } + if (!entities.isEmpty()) + { + pushpullEntities(data); + } + + } + + private void pushpullEntities(SpiritwebCapability data) + { + for (int i = entities.size() - 1; i >= 0; i--) + { + int entityID = entities.get(i); + Entity entity = data.getLiving().level.getEntity(entityID); + + if (entity.blockPosition().closerThan(data.getLiving().blockPosition(), getRange(data))) + { + if (entity instanceof ItemEntity itemEntity) + { + move(itemEntity, data.getLiving().blockPosition()); + } + else if (entity instanceof LivingEntity livingEntity) + { + move(livingEntity, data.getLiving().blockPosition()); + move(data.getLiving(), livingEntity.blockPosition()); + data.getLiving().hurtMarked = true; + } + } + else + { + //we don't want to remove entities that are out of distance + //in case we are still holding the button down and get back into range + //entities.remove(i); + } + } + } + + private void move(Entity entity, BlockPos toMoveTo) + { + Vec3 blockCenter = Vec3.atCenterOf(toMoveTo); + float renderPartialTicks = Minecraft.getInstance().getFrameTime(); + + Vec3 direction = VectorHelper.getDirection( + blockCenter, + Vec3.atCenterOf(entity.blockPosition()),//use entity block position, so we can do things like hover directly over a block more easily + (isPush ? -1f : 2f) * renderPartialTicks); + + //todo, clean up all the unnecessary calculations once we find what feels good at run time + Vec3 normalize = direction.normalize(); + + double shortenFactor = isPush ? 0.2 : 0.4; + Vec3 add = entity.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); + + //get flung off rides + entity.stopRiding(); + //don't let the motion go crazy large + entity.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); + //hurt marked true means it will tell clients that they are moving. + entity.hurtMarked = true; + + //let people get damaged but not too much? + //todo check what a good max fall distance would be + //todo add to config + if (entity instanceof Player player) + { + //doesn't really work, because entity may not be pushing anymore and so this wont get hit. + player.fallDistance = Math.min(player.fallDistance, 1); + } + } + + private void pushpullBlocks(SpiritwebCapability data) + { int blockListCount = blocks.size(); if (blockListCount == 0) @@ -166,10 +242,6 @@ private void performEffectServer(ISpiritweb cap) } LivingEntity living = data.getLiving(); - Vec3 direction; - float renderPartialTicks = Minecraft.getInstance().getFrameTime(); - - double strength = getStrength(cap); for (int i = blockListCount - 1; i >= 0; i--) { @@ -179,40 +251,17 @@ private void performEffectServer(ISpiritweb cap) //stop shoving the user into the block continue; } - - //if the entity is in range of being able to push or pull from - double maxDistance = (strength * getMode(data));// * 0.1f; + double maxDistance = getRange(data); if (blockPos.closerThan(living.blockPosition(), maxDistance)) { - Vec3 blockCenter = Vec3.atCenterOf(blockPos); - - direction = VectorHelper.getDirection( - blockCenter, - living.position(), - (isPush ? -1f : 2f) * renderPartialTicks); - - //todo, clean up all the unnecessary calculations once we find what feels good at run time - Vec3 normalize = direction.normalize(); - - double shortenFactor = isPush ? 0.2 : 0.4; - Vec3 add = living.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); - - //don't let the motion go crazy large - living.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); - - //let people get damaged but not too much? - //todo check what a good max fall distance would be - //todo add to config - if (living.fallDistance > 3) - { - living.fallDistance = Math.min(living.fallDistance, 3); - } + move(living, blockPos); } else { - //remove blocks that are out of distance - blocks.remove(i); + //we don't want to remove blocks that are out of distance + //in case we are still holding the button down and get back into range + //blocks.remove(i); } } living.hurtMarked = true; @@ -255,29 +304,73 @@ public static List getDrawLines(int range) profiler.push("cosmere-getEntitiesInRange"); getEntitiesInRange(playerEntity, range, false).forEach(entity -> { - if (entity instanceof LivingEntity) + if (entityContainsMetal(entity)) { - //check for metal items on the entity + found.add(entity.position()); + } + }); + profiler.pop(); + + return found; + } + + private static boolean entityContainsMetal(Entity entity) + { + if (entity instanceof LivingEntity livingEntity) + { + //metal entities like iron golems + if (containsMetal(entity.getType().getRegistryName().getPath())) + { + return true; } - else if (entity instanceof ItemEntity) + + if (containsMetal(livingEntity.getMainHandItem().getItem().getRegistryName().getPath())) { - ItemStack stack = ((ItemEntity) entity).getItem(); - Item item = stack.getItem(); + return true; + } + if (containsMetal(livingEntity.getOffhandItem().getItem().getRegistryName().getPath())) + { + return true; + } - /*if (item instanceof BlockItem && ((BlockItem) item).getBlock() instanceof IHasMetalType || ) - { - found.add(entity.position()); - }*/ - if (item instanceof IHasMetalType || AllomancyIronSteel.containsMetal(item.getRegistryName().getPath())) + for (ItemStack itemStack : livingEntity.getArmorSlots()) + { + if (containsMetal(itemStack.getItem().getRegistryName().getPath())) { - found.add(entity.position()); + return true; } } - }); - profiler.pop(); - return found; + /* //probably overkill, todo decide if we want this. + if (livingEntity instanceof Player) + { + Player player = ((Player) livingEntity); + for (ItemStack itemStack : player.getInventory().items) + { + if (containsMetal(itemStack.getItem().getRegistryName().getPath())) + { + return true; + } + } + }*/ + return false; + } + else if (entity instanceof ItemEntity itemEntity) + { + ItemStack stack = (itemEntity).getItem(); + Item item = stack.getItem(); + + if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) + { + found.add(entity.position()); + } + if (item instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) + { + found.add(entity.position()); + } + } + return false; } private static boolean containsMetal(String path) diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java index 1d1b0dd3b..3f1cc2809 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPushPullMessage.java @@ -15,6 +15,8 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; +import java.util.Arrays; +import java.util.Collections; import java.util.List; import java.util.function.Supplier; @@ -71,6 +73,25 @@ public static void handle(SyncPushPullMessage mes, Supplier gameProfile = server.getProfileCache().get(id); return gameProfile.isPresent() ? gameProfile.get().getName() : "OFFLINE Player"; } + + //Basically a modified copy of the pick function in GameRenderer.java, but with the ability to set pick distance + public static HitResult pickWithRange(LivingEntity player, int range) + { + final Minecraft minecraft = Minecraft.getInstance(); + minecraft.getProfiler().push("cosmere-pick"); + + float partialTicks = minecraft.getFrameTime(); + + HitResult hitResult = player.pick(range, partialTicks, false); + Vec3 eyePosition = player.getEyePosition(partialTicks); + double distToBlock = hitResult.getLocation().distanceToSqr(eyePosition); + + Vec3 viewVector = player.getViewVector(1.0F); + Vec3 viewVectorFromEyes = eyePosition.add(viewVector.x * (double) range, viewVector.y * (double) range, viewVector.z * (double) range); + + AABB aabb = player.getBoundingBox().expandTowards(viewVector.scale(range)).inflate(1.0D, 1.0D, 1.0D); + EntityHitResult entityHitResult = ProjectileUtil.getEntityHitResult(player, eyePosition, viewVectorFromEyes, aabb, potentialEntityHit -> !potentialEntityHit.isSpectator(), distToBlock); + + if (entityHitResult != null) + { + Vec3 entityHitResultLocation = entityHitResult.getLocation(); + double distToEntity = eyePosition.distanceToSqr(entityHitResultLocation); + if (distToEntity < distToBlock) + { + hitResult = entityHitResult; + } + } + + minecraft.getProfiler().pop(); + return hitResult; + } } From 15dee36403993accf2fa6ad8fc5da3c1035381b9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 19 May 2022 13:07:36 +1200 Subject: [PATCH 0140/1090] Fixing powers not persisting through death. --- .../leaf/cosmere/cap/entity/ISpiritweb.java | 1 + .../cap/entity/SpiritwebCapability.java | 17 +++++++ .../cosmere/handlers/PlayerEventHandler.java | 45 ++++++++++--------- 3 files changed, 42 insertions(+), 21 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index cfb2253fd..7e7efb489 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -70,4 +70,5 @@ public interface ISpiritweb extends INBTSerializable boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust); + void transferFrom(ISpiritweb oldSpiritWeb); } diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 4cf305aca..123c8556c 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -291,6 +291,23 @@ public boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjus return false; } + //Copy things from an old spiritweb into the new one. + //Eg a player has died and we need to make sure they get their stormlight and breaths back. + @Override + public void transferFrom(ISpiritweb oldSpiritWeb) + { + var oldWeb = (SpiritwebCapability) oldSpiritWeb; + + //TODO config options that let you choose what can be transferred + + stormlightStored += oldWeb.stormlightStored; + biochromaticBreathStored += oldWeb.biochromaticBreathStored; + for (Metals.MetalType metalType : oldWeb.METALS_INGESTED.keySet()) + { + METALS_INGESTED.put(metalType, oldWeb.METALS_INGESTED.get(metalType)); + } + } + @OnlyIn(Dist.CLIENT) @Override public void renderWorldEffects(RenderLevelLastEvent event) diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index d3256b6c7..807e7a1d4 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -31,38 +31,41 @@ public static void onPlayerClone(PlayerEvent.Clone event) { event.getOriginal().revive(); - -/* SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> + SpiritwebCapability.get(event.getOriginal()).ifPresent((oldSpiritWeb) -> SpiritwebCapability.get(event.getPlayer()).ifPresent((newSpiritWeb) -> { - //clear out the attributes that were placed on the newly cloned player at creation - // and make sure that they then match what the old player entity had. - newSpiritWeb.clearManifestations(); - for (AManifestation manifestation : oldSpiritWeb.getAvailableManifestations(true)) - { - newSpiritWeb.giveManifestation(manifestation.getManifestationType(), manifestation.getPowerID()); - } - - CompoundTag nbt = (CompoundTag) storage.writeNBT(SpiritwebCapability.CAPABILITY, oldSpiritWeb, null); - storage.readNBT(SpiritwebCapability.CAPABILITY, newSpiritWeb, null, nbt); + //copy across anything from the old player if needed + //Metals ingested? + //Stormlight? - }));*/ + newSpiritWeb.transferFrom(oldSpiritWeb); + })); + var oldAttMap = event.getOriginal().getAttributes(); + var newAttMap = event.getPlayer().getAttributes(); - for (Metals.MetalType metalType : Metals.MetalType.values()) + // A player's manifestations is now determined by attributes, which lets me do cool things like mess with strength in a power. + // So if we've set a base value for an attribute on the player, copy it to the new one. + for (RegistryObject attributeRegistryObject : AttributesRegistry.COSMERE_ATTRIBUTES.values()) { - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) { - AttributeInstance oldPlayerAttribute = event.getOriginal().getAttribute(metalRelatedAttribute.get()); - AttributeInstance newPlayerAttribute = event.getPlayer().getAttribute(metalRelatedAttribute.get()); + AttributeInstance oldPlayerAttribute = oldAttMap.getInstance(attributeRegistryObject.get()); + AttributeInstance newPlayerAttribute = newAttMap.getInstance(attributeRegistryObject.get()); if (newPlayerAttribute != null && oldPlayerAttribute != null) { - newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); + // make sure that they match what the old player entity had. + if (oldPlayerAttribute.getBaseValue() > 0) + { + newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); + } + //clear out the attributes that were placed on the newly cloned player at creation + else if (newPlayerAttribute.getBaseValue() > 0) + { + newPlayerAttribute.setBaseValue(0); + } } - } } } From 3101cd403fbf77aed2e5feec0d744e1a10ccd6a2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 19 May 2022 13:24:17 +1200 Subject: [PATCH 0141/1090] Allomancy on screen to say burn/flare rather than mode# --- .../cap/entity/SpiritwebCapability.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 123c8556c..a431035db 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -357,6 +357,28 @@ public void renderSelectedHUD(PoseStack ms) { stringToDraw2 = "Mode: " + (mode < 0 ? "Tapping " : "Storing ") + mode; } + else if (selectedManifestation.getManifestationType() == ManifestationTypes.ALLOMANCY) + { + String rate; + if (mode <=0) + { + rate = "Off"; + } + else if (mode == 1) + { + rate = "Burning"; + } + else if (mode == 2) + { + rate = "Hard Burn"; + } + else// if (mode >= 3) + { + rate = "Flared!"; + } + + stringToDraw2 = "Mode: " + rate; + } else { stringToDraw2 = "Mode: " + mode; From a146c56304f413fd6c101bca5373b4acd0ae2b46 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 19 May 2022 15:39:32 +1200 Subject: [PATCH 0142/1090] Tidy only --- .../java/leaf/cosmere/cap/entity/SpiritwebCapability.java | 4 ---- .../leaf/cosmere/manifestation/allomancy/AllomancyBase.java | 5 ++++- .../leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index a431035db..55b74bc3e 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -368,10 +368,6 @@ else if (mode == 1) { rate = "Burning"; } - else if (mode == 2) - { - rate = "Hard Burn"; - } else// if (mode >= 3) { rate = "Flared!"; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 8ee49c5b9..71a1a965c 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -54,12 +54,15 @@ public Metals.MetalType getMetalType() @Override public int modeMax(ISpiritweb data) { - return 3; + //1 for burning + //2 for flaring + return 2; } @Override public int modeMin(ISpiritweb data) { + //Allmancy doesn't have a negative, so 0 as 'off' return 0; } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index bc0870d55..d288d741e 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -142,8 +142,8 @@ else if (mode < 0) public double getStrength(ISpiritweb cap) { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); - AttributeInstance attribute = cap.getLiving().getAttribute(mistingAttribute.get()); + RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); + AttributeInstance attribute = cap.getLiving().getAttribute(attributeRegistryObject.get()); return attribute != null ? attribute.getValue() : 0; } } From 2616f58c793b9663f0ae78edef1c44f3a2042ace Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 19 May 2022 15:44:10 +1200 Subject: [PATCH 0143/1090] Update change log for version and bump version number --- Changelog.md | 11 +++++++++++ gradle.properties | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 3564ab329..30495b93a 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,16 @@ The Cosmere Project - For 1.16 Minecraft +B31 + +Tapping feruchemical bronze will reset time since sleep timer. +Fixing bug that caused powers not to persist through death. +Lerasium spikes now steal attributes, like they are supposed to. Lerasatium spikes steal all powers. +Decreased spiritweb nbt save size by a bunch. +Better spike tooltips. +Iron/Steel tries to approximate which non-mod items and entities contain metal. +Iron/Steel can push and pull mob and item entities. +Allomancy mode lists off, burning and flaring modes when selected power. + B30 Fixed brass feruchemy not letting player set others on fire at high burn rates. diff --git a/gradle.properties b/gradle.properties index d36a5d193..92a24ea49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=31 +build_number=32 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From a540c2601ce10a35cdf14327e1bd442644749a6a Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 19 May 2022 21:33:57 +1200 Subject: [PATCH 0144/1090] honor blade items that give surge attributes. No models or localisation yet. --- src/main/java/leaf/cosmere/Cosmere.java | 4 +- .../java/leaf/cosmere/constants/Roshar.java | 76 ++++++++++++++++++ .../leaf/cosmere/items/HonorbladeItem.java | 78 +++++++++++++++++++ .../items/curio/HemalurgicSpikeItem.java | 21 ++++- .../leaf/cosmere/properties/PropTypes.java | 7 +- .../cosmere/registry/AttributesRegistry.java | 16 ++++ .../leaf/cosmere/registry/ItemsRegistry.java | 9 +++ .../registry/ManifestationRegistry.java | 4 +- 8 files changed, 205 insertions(+), 10 deletions(-) create mode 100644 src/main/java/leaf/cosmere/items/HonorbladeItem.java diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index bebc46664..fdf58d178 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -44,12 +44,12 @@ public Cosmere() MinecraftForge.EVENT_BUS.register(this); //Register our deferred registries + ManifestationRegistry.MANIFESTATIONS.register(modBus); + AttributesRegistry.ATTRIBUTES.register(modBus); BlocksRegistry.BLOCKS.register(modBus); ItemsRegistry.ITEMS.register(modBus); EffectsRegistry.EFFECTS.register(modBus); LootModifierRegistry.LOOT_MODIFIERS.register(modBus); - ManifestationRegistry.MANIFESTATIONS.register(modBus); - AttributesRegistry.ATTRIBUTES.register(modBus); EntityRegistry.ENTITIES.register(modBus); PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java index 5ae501e71..9054b7e3e 100644 --- a/src/main/java/leaf/cosmere/constants/Roshar.java +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -4,10 +4,15 @@ package leaf.cosmere.constants; +import leaf.cosmere.manifestation.surgebinding.SurgebindingBase; +import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.item.Item; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraftforge.registries.RegistryObject; import java.awt.*; import java.util.Arrays; @@ -74,11 +79,27 @@ public String getName() return name().toLowerCase(Locale.ROOT); } + public SurgebindingBase getSurge() + { + return (SurgebindingBase) ManifestationRegistry.SURGEBINDING_POWERS.get(this).get(); + } public int getColor() { return 0; } + + public Attribute getAttribute() + { + final String registryName = getRegistryName(); + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(registryName); + return attributeRegistryObject.get(); + } + + public String getRegistryName() + { + return "surgebinding_" + getName(); + } } //https://coppermind.net/wiki/Polestone @@ -234,6 +255,61 @@ public Ingredient getRepairIngredient() return null; } + public Attribute getFirstSurgeAttribute() + { + switch (this) + { + default: + case SAPPHIRE://Adhesion & Gravitation + return Surges.ADHESION.getAttribute(); + case SMOKESTONE://Gravitation & Division + return Surges.GRAVITATION.getAttribute(); + case RUBY://Division & Abrasion + return Surges.DIVISION.getAttribute(); + case DIAMOND://Abrasion & Progression + return Surges.ABRASION.getAttribute(); + case EMERALD://Progression & Illumination + return Surges.PROGRESSION.getAttribute(); + case GARNET://Illumination & Transformation + return Surges.ILLUMINATION.getAttribute(); + case ZIRCON:// Transformation & Transportation + return Surges.TRANSFORMATION.getAttribute(); + case AMETHYST://Transportation & Cohesion + return Surges.TRANSPORTATION.getAttribute(); + case TOPAZ://Cohesion & Tension + return Surges.COHESION.getAttribute(); + case HELIODOR://Tension & Adhesion + return Surges.TENSION.getAttribute(); + } + } + + public Attribute getSecondSurgeAttribute() + { + switch (this) + { + default: + case SAPPHIRE://Adhesion & Gravitation + return Surges.GRAVITATION.getAttribute(); + case SMOKESTONE://Gravitation & Division + return Surges.DIVISION.getAttribute(); + case RUBY://Division & Abrasion + return Surges.ABRASION.getAttribute(); + case DIAMOND://Abrasion & Progression + return Surges.PROGRESSION.getAttribute(); + case EMERALD://Progression & Illumination + return Surges.ILLUMINATION.getAttribute(); + case GARNET://Illumination & Transformation + return Surges.TRANSFORMATION.getAttribute(); + case ZIRCON://Transformation & Transportation + return Surges.TRANSPORTATION.getAttribute(); + case AMETHYST://Transportation & Cohesion + return Surges.COHESION.getAttribute(); + case TOPAZ://Cohesion & Tension + return Surges.TENSION.getAttribute(); + case HELIODOR://Tension & Adhesion + return Surges.ADHESION.getAttribute(); + } + } } diff --git a/src/main/java/leaf/cosmere/items/HonorbladeItem.java b/src/main/java/leaf/cosmere/items/HonorbladeItem.java new file mode 100644 index 000000000..d80910e7c --- /dev/null +++ b/src/main/java/leaf/cosmere/items/HonorbladeItem.java @@ -0,0 +1,78 @@ +/* + * File created ~ 19 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.items; + +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; +import leaf.cosmere.constants.Roshar; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; + +import java.util.UUID; + +public class HonorbladeItem extends ShardbladeItem +{ + Roshar.Polestone polestone; + private final int attackDamageIn; + private final float attackSpeedIn; + + /** + * Modifiers applied when the item is in the mainhand of a user. copied from sword item + */ + private Multimap attributeModifiers = null; + + // having primary and secondary means that theoretically a player could + // hold two shards that share a surge and be twice as strong in that surge + protected static final UUID PRIMARY_HONORBLADE_SURGE_UUID = UUID.fromString("CB3F55D3-4865-4180-A497-9C13A33DB5CF"); + protected static final UUID SECONDARY_HONORBLADE_SURGE_UUID = UUID.fromString("FA233E1C-4180-4865-A497-BCCE9785ACA3"); + + public HonorbladeItem(Roshar.Polestone polestone, Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) + { + super(tier, attackDamageIn, attackSpeedIn, builderIn); + this.polestone = polestone; + this.attackDamageIn = attackDamageIn; + this.attackSpeedIn = attackSpeedIn; + } + + + /** + * Gets a map of item attribute modifiers, used by damage when used as melee weapon. + */ + @Override + public Multimap getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack) + { + if (attributeModifiers == null) + { + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamageIn, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", attackSpeedIn, AttributeModifier.Operation.ADDITION)); + builder.put(polestone.getFirstSurgeAttribute(),new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + builder.put(polestone.getSecondSurgeAttribute(),new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + this.attributeModifiers = builder.build(); + } + + switch (equipmentSlot) + { + case MAINHAND: + case OFFHAND: + return this.attributeModifiers; + case FEET: + break; + case LEGS: + break; + case CHEST: + break; + case HEAD: + break; + } + + return super.getAttributeModifiers(equipmentSlot, stack); + } + +} diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 4b0bb1432..a0d37e992 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -294,10 +294,25 @@ public boolean isFoil(@Nonnull ItemStack stack) * Gets a map of item attribute modifiers, used by damage when used as melee weapon. */ @Override - public Multimap getDefaultAttributeModifiers(EquipmentSlot equipmentSlot) + public Multimap getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack) { - return equipmentSlot == EquipmentSlot.MAINHAND ? this.attributeModifiers - : super.getDefaultAttributeModifiers(equipmentSlot); + switch (equipmentSlot) + { + case MAINHAND: + case OFFHAND: + return this.attributeModifiers; + case FEET: + break; + case LEGS: + break; + case CHEST: + break; + case HEAD: + break; + } + + + return super.getAttributeModifiers(equipmentSlot, stack); } @Override diff --git a/src/main/java/leaf/cosmere/properties/PropTypes.java b/src/main/java/leaf/cosmere/properties/PropTypes.java index f1ed8894c..96fb42245 100644 --- a/src/main/java/leaf/cosmere/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/properties/PropTypes.java @@ -25,9 +25,10 @@ public static class Items public static final Supplier SHARDBLADE = () -> new Item.Properties() .tab(CosmereItemGroups.ITEMS) .stacksTo(1) - .defaultDurability(0) - .durability(0) - .setNoRepair() + //.defaultDurability(0) + //.durability(0) + //.setNoRepair() + .fireResistant() .rarity(Rarity.EPIC); public static final Supplier ONE = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(1); diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 0a683c78b..8ea7374f3 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -6,6 +6,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import net.minecraft.world.entity.MobType; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.RangedAttribute; @@ -29,6 +30,21 @@ public static Map> makeAttributeMap() { Map> attributeModifiers = new HashMap<>(); + for (Roshar.Surges surge : Roshar.Surges.values()) + { + String attributeName = surge.getRegistryName(); + RegistryObject attribute = ATTRIBUTES.register( + attributeName, + () -> (new RangedAttribute( + "manifestation." + Cosmere.MODID + "." + attributeName, + 0, + 0, + 10)).setSyncable(true) + ); + + attributeModifiers.put(attributeName, attribute); + } + for (Metals.MetalType metalType : Metals.MetalType.values()) { if (metalType.hasAssociatedManifestation()) diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index f3ca7984c..13cd9298c 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -177,6 +177,15 @@ public class ItemsRegistry () -> createItem(new PolestoneItem(type, Roshar.GemSize.BROAM)) ))); + public static final Map> HONORBLADES = + Arrays.stream(Roshar.Polestone.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getAssociatedOrder() + "_honorblade", + () -> createItem(new HonorbladeItem(type, Tiers.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get())) + ))); + private static T createItem(T item) { diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index cebfa5f1d..664c7527d 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -75,8 +75,8 @@ public class ManifestationRegistry Function.identity(), surge -> MANIFESTATIONS.register( - surge.getName(), - () -> makeSurgebindingManifestation(surge))//get the specific instance of the manifestation for allomancy + surge.getRegistryName(), + () -> makeSurgebindingManifestation(surge)) )); //Create Registry From b5ba4629cf31077d5df1371f4986e67478da58f3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 May 2022 09:54:56 +1200 Subject: [PATCH 0145/1090] Fix feruchemy not working with completely empty metalminds. --- .../leaf/cosmere/charge/ItemChargeHelper.java | 16 +++++++++------- .../cosmere/charge/MetalmindChargeHelper.java | 5 +++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 4c74da2c2..66de199be 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.UUID; public class ItemChargeHelper { @@ -143,25 +144,26 @@ public static ItemStack adjustChargeExact(Player player, int adjustValue, boolea for (ItemStack stackInSlot : Iterables.concat(items, acc)) { IChargeable chargeItemSlot = (IChargeable) stackInSlot.getItem(); + boolean storing = adjustValue < 0; - if (chargeItemSlot.getCharge(stackInSlot) <= 0) + int slotCharge = chargeItemSlot.getCharge(stackInSlot); + int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); + + //if draining, skip empty. + if (!storing && slotCharge <= 0 || storing && slotCharge >= slotMaxCharge) { continue; } boolean playerUnableToAccess = !chargeItemSlot.trySetAttunedPlayer(stackInSlot, player); + final UUID attunedPlayer = chargeItemSlot.getAttunedPlayer(stackInSlot); if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not || //or if the player is trying to store in an unsealed metalmind but have identity - adjustValue < 0 && !isStoringIdentity && chargeItemSlot.getAttunedPlayer(stackInSlot).compareTo(Constants.NBT.UNSEALED_UUID) == 0) + adjustValue < 0 && !isStoringIdentity && attunedPlayer != null && attunedPlayer.compareTo(Constants.NBT.UNSEALED_UUID) == 0) { continue; } - boolean storing = adjustValue < 0; - - int slotCharge = chargeItemSlot.getCharge(stackInSlot); - int slotMaxCharge = chargeItemSlot.getMaxCharge(stackInSlot); - if ((storing && (slotCharge + (-adjustValue)) <= slotMaxCharge)//storing and can fit in this item || !storing && slotCharge >= adjustValue) diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 9704ac426..0f471067a 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -61,6 +61,11 @@ public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalTy items.removeIf(getIsItemInvalidMetalmind(metalType)); acc.removeIf(getIsItemInvalidMetalmind(metalType)); + if (items.isEmpty() && acc.isEmpty()) + { + return null; + } + return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); } From 8c1fc8b02667fae9111d754f10379d021cb79f02 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 May 2022 09:55:03 +1200 Subject: [PATCH 0146/1090] Fix bands of mourning, storing when full caused it to overflow and start from 0 again. --- src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java index 70638dd6e..10dc8464b 100644 --- a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -57,6 +57,6 @@ public float getMaxChargeModifier() @Override public int getMaxCharge(ItemStack stack) { - return Integer.MAX_VALUE; + return Integer.MAX_VALUE - 100; } } From aabc2d22135a17d9fe63e2e262bc76fa4082f921 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 May 2022 09:56:20 +1200 Subject: [PATCH 0147/1090] Update changelog and bump version number --- Changelog.md | 5 +++++ gradle.properties | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 30495b93a..7e2d215ca 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ The Cosmere Project - For 1.16 Minecraft +B32 + +Fix feruchemy not working with completely empty metalminds. +Fix bands of mourning, storing when full caused it to overflow and start from 0 again. + B31 Tapping feruchemical bronze will reset time since sleep timer. diff --git a/gradle.properties b/gradle.properties index 92a24ea49..d5ce45b11 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 jar_name=Cosmere-Mod -build_number=32 +build_number=33 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From e886f0bf318f9da15a30dfab66341c39f180febe Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 22 May 2022 16:21:57 +1200 Subject: [PATCH 0148/1090] Coin pouch. Coin projectiles can be pushed against, or pulled back to inventory. Coin pouch holds 2 rows of projectiles. --- build.gradle | 2 +- gradle.properties | 1 + src/main/generated/.cache/cache | 7 +- .../generated/assets/cosmere/lang/en_us.json | 54 ++-- .../cosmere/models/item/coin_pouch.json | 6 + .../cosmere/models/item/copper_clip.json | 6 + .../cosmere/models/item/gold_boxing.json | 6 + .../recipes/cosmere.items/coin_pouch.json | 32 +++ .../data/cosmere/recipes/coin_pouch.json | 14 ++ src/main/java/leaf/cosmere/Cosmere.java | 6 +- .../java/leaf/cosmere/client/ClientSetup.java | 17 +- .../cosmere/client/gui/CoinPouchScreen.java | 64 +++++ .../coinpouch/CoinPouchContainer.java | 130 ++++++++++ .../coinpouch/CoinPouchInventory.java | 54 ++++ .../containers/coinpouch/CoinPouchSlot.java | 33 +++ .../java/leaf/cosmere/datagen/RecipeGen.java | 7 + .../leaf/cosmere/entities/CoinProjectile.java | 42 ++++ .../cosmere/handlers/EntityEventHandler.java | 7 +- .../leaf/cosmere/items/CoinPouchItem.java | 230 ++++++++++++++++++ .../allomancy/AllomancyBase.java | 1 + .../allomancy/AllomancyIronSteel.java | 116 ++++++--- .../java/leaf/cosmere/network/Network.java | 1 + .../packets/PlayerShootProjectileMessage.java | 56 +++++ .../cosmere/registry/ContainersRegistry.java | 29 +++ .../leaf/cosmere/registry/EntityRegistry.java | 17 +- .../leaf/cosmere/registry/ItemsRegistry.java | 62 ++--- .../leaf/cosmere/registry/TagsRegistry.java | 4 - .../cosmere/textures/gui/coin_pouch.png | Bin 0 -> 3870 bytes .../cosmere/textures/item/coin_pouch.png | Bin 0 -> 3277 bytes .../assets/cosmere/textures/item/guide.png | Bin 4310 -> 4328 bytes .../cosmere/textures/item/investiture.png | Bin 82 -> 0 bytes .../cosmere/textures/item/jar_empty.png | Bin 82 -> 0 bytes .../cosmere/textures/item/jar_of_blood.png | Bin 82 -> 0 bytes .../cosmere/textures/item/metal_file.png | Bin 82 -> 0 bytes .../cosmere/textures/item/mist_cloak.png | Bin 82 -> 0 bytes .../cosmere/textures/item/night_blood.png | Bin 82 -> 0 bytes .../cosmere/textures/item/obsidian_dagger.png | Bin 82 -> 0 bytes 37 files changed, 898 insertions(+), 106 deletions(-) create mode 100644 src/main/generated/assets/cosmere/models/item/coin_pouch.json create mode 100644 src/main/generated/assets/cosmere/models/item/copper_clip.json create mode 100644 src/main/generated/assets/cosmere/models/item/gold_boxing.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json create mode 100644 src/main/generated/data/cosmere/recipes/coin_pouch.json create mode 100644 src/main/java/leaf/cosmere/client/gui/CoinPouchScreen.java create mode 100644 src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java create mode 100644 src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchInventory.java create mode 100644 src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchSlot.java create mode 100644 src/main/java/leaf/cosmere/entities/CoinProjectile.java create mode 100644 src/main/java/leaf/cosmere/items/CoinPouchItem.java create mode 100644 src/main/java/leaf/cosmere/network/packets/PlayerShootProjectileMessage.java create mode 100644 src/main/java/leaf/cosmere/registry/ContainersRegistry.java create mode 100644 src/main/resources/assets/cosmere/textures/gui/coin_pouch.png create mode 100644 src/main/resources/assets/cosmere/textures/item/coin_pouch.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/investiture.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/jar_empty.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/jar_of_blood.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_file.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/mist_cloak.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/night_blood.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/obsidian_dagger.png diff --git a/build.gradle b/build.gradle index d6fe8b83e..9eb8b2997 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ sourceSets { } minecraft { - mappings channel: 'official', version: "${minecraft_version}" + mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}" accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { diff --git a/gradle.properties b/gradle.properties index d5ce45b11..33314e00d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,6 +5,7 @@ org.gradle.jvmargs=-Xmx8G #Tue Feb 01 08:46:10 NZDT 2022 minecraft_version=1.18.2 forge_version=1.18.2-40.1.0 +parchment_version=2022.05.02 jar_name=Cosmere-Mod build_number=33 diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 311009ebf..f9f70f0e9 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -850eb03b1e738063b8d92eae714c71ecb6c65f2f assets/cosmere/lang/en_us.json +95048da1f25e35ec0585651cde6afe13b6b4613c assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -106,8 +106,10 @@ b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/chromium_ore 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/chromium_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/chromium_ring_metalmind.json e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/chromium_spike.json +987615c6cf471aeb9c0c98cbe0bf0dc2dfdb8e32 assets/cosmere/models/item/coin_pouch.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/copper_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_bracelet_metalmind.json +9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_clip.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/copper_ingot.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/copper_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_nugget.json @@ -139,6 +141,7 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spi 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/garnet_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/garnet_mark.json 093a7aadc79fe47013d29ba53bb9df540b27dba5 assets/cosmere/models/item/gem_block.json +9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/gold_boxing.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/gold_ring_metalmind.json @@ -340,6 +343,7 @@ b6407cc8f077f9805e30b706d36212fa44c3348f data/cosmere/advancements/recipes/cosme fe03508120fd0cb13ba59e083704f9f079ac03fe data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json ad10da56e6e374063b332c2510eb19562ae7b784 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json d90a2482e1cb99de9f37e33eaec1a30a4c54eecd data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +5f3468b876ca944419b129c83c5a99b58954e726 data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json 1906fee419465631792847e292d6e6b4436cbe14 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json c7dd1003af20b261dd7f64218501c009ab7f891f data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json 4e8e416484e6c30bbe310ce2cf98a3ace0f6e5b1 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json @@ -667,6 +671,7 @@ b4a34dd8e63e4abf15832ef75979b196c35c3a8f data/cosmere/recipes/chromium_ingot_fro 0c986fe8027aff177f4bfb0ac4536963407aebb2 data/cosmere/recipes/chromium_necklace_metalmind.json b0ebcfa3257d09d0fb98eb1fea7d314cb5e6dedb data/cosmere/recipes/chromium_ring_metalmind.json c839be2e9e58afcf5efe917f46203fc021f5066b data/cosmere/recipes/chromium_spike.json +694bf613ed645355c588a10377c6e828567bdc85 data/cosmere/recipes/coin_pouch.json 4ef66d6416a73b836aec8febc167a7e2cc26fcf0 data/cosmere/recipes/conversions/aluminum_block_deconstruct.json 6985224580e7e397afe4f27ef235ae4ff8cee8e1 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json b0de1869585c65cf8f93d1219142f8ddd1d78200 data/cosmere/recipes/conversions/atium_block_deconstruct.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 1c3891b43..43c7d8ca5 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -114,6 +114,7 @@ "effect.cosmere.tapping_steel": "Tapping Steel", "effect.cosmere.tapping_tin": "Tapping Tin", "effect.cosmere.tapping_zinc": "Tapping Zinc", + "entity.cosmere.coin_projectile": "Coin Projectile", "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "entry.allomantic_aluminum": "Aluminum - Aluminum Gnat", "entry.allomantic_atium": "Atium - Seer", @@ -234,6 +235,7 @@ "item.cosmere.bendalloy_ring_metalmind.tooltip": "Stores Energy. A Subsumer Ferring using this can consume large quantities of food and store the calories in the metalmind, in exchange for the ability to forgo eating later.", "item.cosmere.bendalloy_spike": "Bendalloy Spike", "item.cosmere.bendalloy_spike.tooltip": "Steals a Spiritual Feruchemical power.", + "item.cosmere.bondsmith_honorblade": "Bondsmith Honorblade", "item.cosmere.brass_blend": "Brass Blend", "item.cosmere.brass_bracelet_metalmind": "Brass Bracelet Metalmind", "item.cosmere.brass_bracelet_metalmind.tooltip": "Stores Warmth. Firesoul Ferrings using this will cool themselves in exchange for being able to warm themselves later by tapping the metalmind.", @@ -276,8 +278,10 @@ "item.cosmere.chromium_ring_metalmind.tooltip": "Stores Fortune. A Spinner Ferring will become unlucky during active storage in exchange for increased fortune later.", "item.cosmere.chromium_spike": "Chromium Spike", "item.cosmere.chromium_spike.tooltip": "Might steal destiny...", + "item.cosmere.coin_pouch": "Coin Pouch", "item.cosmere.copper_bracelet_metalmind": "Copper Bracelet Metalmind", "item.cosmere.copper_bracelet_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", + "item.cosmere.copper_clip": "Copper Clip", "item.cosmere.copper_ingot": "Copper Ingot", "item.cosmere.copper_necklace_metalmind": "Copper Necklace Metalmind", "item.cosmere.copper_necklace_metalmind.tooltip": "Stores Experience. An Archivist Ferring using this will be able to store experience inside copper, then withdraw it later from the metal.", @@ -300,6 +304,8 @@ "item.cosmere.duralumin_ring_metalmind.tooltip": "Stores Connection. A Connector Ferring can store spiritual connection inside a metalmind, reducing outside awareness during active storage. Tapping not yet implemented.", "item.cosmere.duralumin_spike": "Duralumin Spike", "item.cosmere.duralumin_spike.tooltip": "Steals Connection/Identity.", + "item.cosmere.dustbringer_honorblade": "Dustbringer Honorblade", + "item.cosmere.edgedancer_honorblade": "Edgedancer Honorblade", "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_bracelet_metalmind": "Electrum Bracelet Metalmind", "item.cosmere.electrum_bracelet_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", @@ -311,6 +317,7 @@ "item.cosmere.electrum_ring_metalmind.tooltip": "Stores Determination. A Pinnacle Ferring using this will take more damage in exchange for taking less damage later.", "item.cosmere.electrum_spike": "Electrum Spike", "item.cosmere.electrum_spike.tooltip": "Steals an Enhancement Allomantic power.", + "item.cosmere.elsecaller_honorblade": "Elsecaller Honorblade", "item.cosmere.emerald_broam": "Emerald Broam", "item.cosmere.emerald_chip": "Emerald Chip", "item.cosmere.emerald_mark": "Emerald Mark", @@ -318,6 +325,7 @@ "item.cosmere.garnet_chip": "Garnet Chip", "item.cosmere.garnet_mark": "Garnet Mark", "item.cosmere.gold_block": "Gold Block", + "item.cosmere.gold_boxing": "Gold Boxing", "item.cosmere.gold_bracelet_metalmind": "Gold Bracelet Metalmind", "item.cosmere.gold_bracelet_metalmind.tooltip": "Stores Health. A Bloodmaker Ferring using this will feel sick now in exchange for increased regeneration and healing later.", "item.cosmere.gold_ingot": "Gold Ingot", @@ -355,6 +363,7 @@ "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.lerasium_spike": "Lerasium Spike", "item.cosmere.lerasium_spike.tooltip": "Steals all powers...", + "item.cosmere.lightweaver_honorblade": "Lightweaver Honorblade", "item.cosmere.malatium_ingot": "Malatium Ingot", "item.cosmere.malatium_nugget": "Malatium Nugget", "item.cosmere.master_sword": "Master Sword", @@ -400,6 +409,7 @@ "item.cosmere.sapphire_mark": "Sapphire Mark", "item.cosmere.silver_ingot": "Silver Ingot", "item.cosmere.silver_nugget": "Silver Nugget", + "item.cosmere.skybreaker_honorblade": "Skybreaker Honorblade", "item.cosmere.smokestone_broam": "Smokestone Broam", "item.cosmere.smokestone_chip": "Smokestone Chip", "item.cosmere.smokestone_mark": "Smokestone Mark", @@ -414,6 +424,7 @@ "item.cosmere.steel_ring_metalmind.tooltip": "Stores Physical Speed. A Steelrunner Ferring using this will be physically slower now in exchange for being faster later.", "item.cosmere.steel_spike": "Steel Spike", "item.cosmere.steel_spike.tooltip": "Steals a physical allomantic power.", + "item.cosmere.stoneward_honorblade": "Stoneward Honorblade", "item.cosmere.test_blade": "Test Blade", "item.cosmere.tin_bracelet_metalmind": "Tin Bracelet Metalmind", "item.cosmere.tin_bracelet_metalmind.tooltip": "Stores Eyesight senses. Tapping will zoom in.", @@ -428,6 +439,9 @@ "item.cosmere.topaz_broam": "Topaz Broam", "item.cosmere.topaz_chip": "Topaz Chip", "item.cosmere.topaz_mark": "Topaz Mark", + "item.cosmere.truthwatcher_honorblade": "Truthwatcher Honorblade", + "item.cosmere.willshaper_honorblade": "Willshaper Honorblade", + "item.cosmere.windrunner_honorblade": "Windrunner Honorblade", "item.cosmere.zinc_bracelet_metalmind": "Zinc Bracelet Metalmind", "item.cosmere.zinc_bracelet_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.cosmere.zinc_ingot": "Zinc Ingot", @@ -454,10 +468,6 @@ "key.cosmere.powers.previous": "Previous Power", "key.cosmere.powers.toggle": "Toggle Current Powers", "keys.cosmere.main": "Cosmere", - "manifestation.cosmere.abrasion": "Abrasion", - "manifestation.cosmere.abrasion.description": "No Special Powers", - "manifestation.cosmere.adhesion": "Adhesion", - "manifestation.cosmere.adhesion.description": "No Special Powers", "manifestation.cosmere.allomantic_aluminum": "Allomantic Aluminum", "manifestation.cosmere.allomantic_aluminum.description": "Users can burn aluminum", "manifestation.cosmere.allomantic_bendalloy": "Allomantic Bendalloy", @@ -490,10 +500,6 @@ "manifestation.cosmere.allomantic_tin.description": "Users can burn tin", "manifestation.cosmere.allomantic_zinc": "Allomantic Zinc", "manifestation.cosmere.allomantic_zinc.description": "Users can burn zinc", - "manifestation.cosmere.cohesion": "Cohesion", - "manifestation.cosmere.cohesion.description": "No Special Powers", - "manifestation.cosmere.division": "Division", - "manifestation.cosmere.division.description": "No Special Powers", "manifestation.cosmere.feruchemical_aluminum": "Feruchemical Aluminum", "manifestation.cosmere.feruchemical_aluminum.description": "Users can tap aluminum", "manifestation.cosmere.feruchemical_bendalloy": "Feruchemical Bendalloy", @@ -526,20 +532,28 @@ "manifestation.cosmere.feruchemical_tin.description": "Users can tap tin", "manifestation.cosmere.feruchemical_zinc": "Feruchemical Zinc", "manifestation.cosmere.feruchemical_zinc.description": "Users can tap zinc", - "manifestation.cosmere.gravitation": "Gravitation", - "manifestation.cosmere.gravitation.description": "No Special Powers", - "manifestation.cosmere.illumination": "Illumination", - "manifestation.cosmere.illumination.description": "No Special Powers", "manifestation.cosmere.none": "None", "manifestation.cosmere.none.description": "No Special Powers", - "manifestation.cosmere.progression": "Progression", - "manifestation.cosmere.progression.description": "No Special Powers", - "manifestation.cosmere.tension": "Tension", - "manifestation.cosmere.tension.description": "No Special Powers", - "manifestation.cosmere.transformation": "Transformation", - "manifestation.cosmere.transformation.description": "No Special Powers", - "manifestation.cosmere.transportation": "Transportation", - "manifestation.cosmere.transportation.description": "No Special Powers", + "manifestation.cosmere.surgebinding_abrasion": "Surgebinding Abrasion", + "manifestation.cosmere.surgebinding_abrasion.description": "No Special Powers", + "manifestation.cosmere.surgebinding_adhesion": "Surgebinding Adhesion", + "manifestation.cosmere.surgebinding_adhesion.description": "No Special Powers", + "manifestation.cosmere.surgebinding_cohesion": "Surgebinding Cohesion", + "manifestation.cosmere.surgebinding_cohesion.description": "No Special Powers", + "manifestation.cosmere.surgebinding_division": "Surgebinding Division", + "manifestation.cosmere.surgebinding_division.description": "No Special Powers", + "manifestation.cosmere.surgebinding_gravitation": "Surgebinding Gravitation", + "manifestation.cosmere.surgebinding_gravitation.description": "No Special Powers", + "manifestation.cosmere.surgebinding_illumination": "Surgebinding Illumination", + "manifestation.cosmere.surgebinding_illumination.description": "No Special Powers", + "manifestation.cosmere.surgebinding_progression": "Surgebinding Progression", + "manifestation.cosmere.surgebinding_progression.description": "No Special Powers", + "manifestation.cosmere.surgebinding_tension": "Surgebinding Tension", + "manifestation.cosmere.surgebinding_tension.description": "No Special Powers", + "manifestation.cosmere.surgebinding_transformation": "Surgebinding Transformation", + "manifestation.cosmere.surgebinding_transformation.description": "No Special Powers", + "manifestation.cosmere.surgebinding_transportation": "Surgebinding Transportation", + "manifestation.cosmere.surgebinding_transportation.description": "No Special Powers", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/main/generated/assets/cosmere/models/item/coin_pouch.json b/src/main/generated/assets/cosmere/models/item/coin_pouch.json new file mode 100644 index 000000000..0d24406b0 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/coin_pouch.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/coin_pouch" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/copper_clip.json b/src/main/generated/assets/cosmere/models/item/copper_clip.json new file mode 100644 index 000000000..e2f75ac57 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/copper_clip.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/metal_nugget" + } +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/gold_boxing.json b/src/main/generated/assets/cosmere/models/item/gold_boxing.json new file mode 100644 index 000000000..e2f75ac57 --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/gold_boxing.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/metal_nugget" + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json new file mode 100644 index 000000000..abfc93279 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json @@ -0,0 +1,32 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:coin_pouch" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "tag": "forge:leather" + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:coin_pouch" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/coin_pouch.json b/src/main/generated/data/cosmere/recipes/coin_pouch.json new file mode 100644 index 000000000..d1f7ea1a4 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/coin_pouch.json @@ -0,0 +1,14 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:leather" + }, + { + "tag": "forge:string" + } + ], + "result": { + "item": "cosmere:coin_pouch" + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index fdf58d178..780128b86 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -36,9 +36,10 @@ public Cosmere() modBus.addListener(this::loadComplete); modBus.addListener(this::onAddCaps); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::init)); +/* DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::init)); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::RegisterRenderers)); DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::registerIconTextures)); - DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::retrieveRegisteredIconSprites)); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> FMLJavaModLoadingContext.get().getModEventBus().addListener(ClientSetup::retrieveRegisteredIconSprites));*/ MinecraftForge.EVENT_BUS.register(this); @@ -53,6 +54,7 @@ public Cosmere() EntityRegistry.ENTITIES.register(modBus); PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); + ContainersRegistry.CONTAINERS.register(modBus); FeatureRegistry.FEATURES.register(modBus); RecipeRegistry.SPECIAL_RECIPES.register(modBus); diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index 126938566..b6d355a56 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -8,18 +8,23 @@ import leaf.cosmere.client.gui.SpriteIconPositioning; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.ContainersRegistry; +import leaf.cosmere.registry.EntityRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.NoopRenderer; +import net.minecraft.client.renderer.entity.ThrownItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -32,13 +37,12 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class ClientSetup { - - @SubscribeEvent public static void init(final FMLClientSetupEvent event) { event.enqueueWork(() -> { + ContainersRegistry.registerGUIFactories(); }); //special thank you to @Random on the forge discord who told me that you have to tell the block it has transparency @@ -57,7 +61,13 @@ public static void init(final FMLClientSetupEvent event) LogHelper.info("Client setup complete!"); } - //special thank you to the chisels and bits team who have an example of how to to register other sprites + @SubscribeEvent + public static void RegisterRenderers(EntityRenderersEvent.RegisterRenderers event) + { + event.registerEntityRenderer(EntityRegistry.COIN_PROJECTILE.get(), ThrownItemRenderer::new); + } + + //special thank you to the chisels and bits team who have an example of how to register other sprites @SubscribeEvent public static void registerIconTextures(TextureStitchEvent.Pre event) { @@ -175,5 +185,4 @@ private static SpriteIconPositioning getSIP(final TextureAtlas map, final String return sip; } - } diff --git a/src/main/java/leaf/cosmere/client/gui/CoinPouchScreen.java b/src/main/java/leaf/cosmere/client/gui/CoinPouchScreen.java new file mode 100644 index 000000000..cbe28bb24 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/gui/CoinPouchScreen.java @@ -0,0 +1,64 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.client.gui; + +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.PoseStack; +import leaf.cosmere.Cosmere; +import leaf.cosmere.containers.coinpouch.CoinPouchContainer; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; + + +public class CoinPouchScreen extends AbstractContainerScreen +{ + public CoinPouchScreen(CoinPouchContainer container, Inventory playerInv, Component title) + { + super(container, playerInv, title); + minecraft = Minecraft.getInstance(); + } + + @Override + protected void init() + { + this.imageHeight = 140; + this.imageWidth = 193; + + super.init(); + } + + @Override + public void render(PoseStack matrixStack, int x, int y, float partialTicks) + { + this.renderBackground(matrixStack); + super.render(matrixStack, x, y, partialTicks); + this.renderTooltip(matrixStack, x, y); + } + + @Override + protected void renderBg(PoseStack matrixStack, float partialTicks, int mouseX, int mouseY) + { + RenderSystem.setShader(GameRenderer::getPositionTexShader); + RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); + RenderSystem.setShaderTexture(0, new ResourceLocation(Cosmere.MODID, "textures/gui/coin_pouch.png")); + + int xPos = (width - imageWidth) / 2; + int yPos = (height / 2) - (imageHeight / 2); + blit(matrixStack, xPos, yPos, 0, 0, imageWidth, imageHeight); + + } + + @Override + protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) + { + //write the name of the itemstack + this.font.draw(matrixStack, this.title, (float) this.titleLabelX, (float) this.titleLabelY, 4210752); + } + +} diff --git a/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java new file mode 100644 index 000000000..e9d16fdac --- /dev/null +++ b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java @@ -0,0 +1,130 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.containers.coinpouch; + +import leaf.cosmere.Cosmere; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.inventory.ClickType; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.registries.ObjectHolder; +import org.jetbrains.annotations.NotNull; + +public class CoinPouchContainer extends AbstractContainerMenu +{ + @ObjectHolder(Cosmere.MODID + ":coin_pouch") + public static MenuType TYPE; + + public static CoinPouchContainer fromNetwork(int windowId, Inventory inv, FriendlyByteBuf buf) + { + InteractionHand hand = buf.readBoolean() ? InteractionHand.MAIN_HAND : InteractionHand.OFF_HAND; + return new CoinPouchContainer(windowId, inv, inv.player.getItemInHand(hand)); + } + + private final ItemStack pouch; + + public CoinPouchContainer(int windowId, Inventory playerInv, ItemStack pouch) + { + super(TYPE, windowId); + this.pouch = pouch; + int i; + int j; + + IItemHandlerModifiable pouchInv = (IItemHandlerModifiable) pouch.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); + + CompoundTag nbt = playerInv.getSelected().getOrCreateTag(); + + int invStart = 0; + + //Bag inventory slots + for (i = 0; i < 2; ++i) + { + for (j = 0; j < 9; ++j) + { + int k = j + i * 9; + addSlot(new CoinPouchSlot(pouchInv, k, 8 + j * 18, 18 + i * 18)); + } + } + + //Player Inventory slots + for (i = 0; i < 3; ++i) + { + for (j = 0; j < 9; ++j) + { + addSlot(new Slot(playerInv, j + i * 9 + 9, 8 + j * 18, 41 + 17 + (i + invStart) * 18)); + } + } + + //Player hotbar slots + for (i = 0; i < 9; ++i) + { + addSlot(new Slot(playerInv, i, 8 + i * 18, 45 + 17 + (3 + invStart) * 18)); + } + + } + + @Override + public boolean stillValid(@NotNull Player player) + { + ItemStack main = player.getMainHandItem(); + ItemStack off = player.getOffhandItem(); + return !main.isEmpty() && main == pouch || !off.isEmpty() && off == pouch; + } + + @Override + public ItemStack quickMoveStack(@NotNull Player playerIn, int index) + { + ItemStack itemstack = ItemStack.EMPTY; + CompoundTag nbt = pouch.getOrCreateTag(); + int maxSlots = 18; + + Slot slot = this.slots.get(index); + if (slot.hasItem()) + { + ItemStack itemstack1 = slot.getItem(); + itemstack = itemstack1.copy(); + + if (index < maxSlots) + { + if (!this.moveItemStackTo(itemstack1, maxSlots, this.slots.size(), true)) + { + return ItemStack.EMPTY; + } + } + else if (!this.moveItemStackTo(itemstack1, 0, maxSlots, false)) + { + return ItemStack.EMPTY; + } + + if (itemstack1.isEmpty()) + { + slot.set(ItemStack.EMPTY); + } + else + { + slot.setChanged(); + } + } + return itemstack; + } + + @Override + public void clicked(int slot, int dragType, @NotNull ClickType clickTypeIn, @NotNull Player player) + { + if (!(slot >= 0 && getSlot(slot).getItem() == player.getItemInHand(InteractionHand.MAIN_HAND))) + { + super.clicked(slot, dragType, clickTypeIn, player); + } + + } +} diff --git a/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchInventory.java b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchInventory.java new file mode 100644 index 000000000..e000dff7b --- /dev/null +++ b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchInventory.java @@ -0,0 +1,54 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.containers.coinpouch; + +import leaf.cosmere.items.CoinPouchItem; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.INBTSerializable; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.ItemStackHandler; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class CoinPouchInventory implements ICapabilityProvider, INBTSerializable +{ + private final IItemHandler inv = new ItemStackHandler(18) + { + @Override + public boolean isItemValid(int slot, @Nonnull ItemStack stack) + { + return !stack.isEmpty() && CoinPouchItem.SUPPORTED_PROJECTILES.test(stack); + } + }; + + private final LazyOptional opt = LazyOptional.of(() -> inv); + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction facing) + { + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.orEmpty(capability, opt); + } + + @Override + public CompoundTag serializeNBT() + { + return ((ItemStackHandler) inv).serializeNBT(); + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + ((ItemStackHandler) inv).deserializeNBT(nbt); + } + +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchSlot.java b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchSlot.java new file mode 100644 index 000000000..c8e860b48 --- /dev/null +++ b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchSlot.java @@ -0,0 +1,33 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.containers.coinpouch; + +import leaf.cosmere.items.CoinPouchItem; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.items.SlotItemHandler; +import org.jetbrains.annotations.NotNull; + +public class CoinPouchSlot extends SlotItemHandler +{ + public CoinPouchSlot(IItemHandlerModifiable inv, int index, int x, int y) + { + super((IItemHandler) inv, index, x, y); + } + + @Override + public boolean mayPlace(@NotNull ItemStack stack) + { + final boolean test = CoinPouchItem.SUPPORTED_PROJECTILES.test(stack); + return test; + } + + @Override + public void setChanged() + { + container.setChanged(); + } +} diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index 6a7101e5b..d7ea94c13 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -62,6 +62,13 @@ protected void buildCraftingRecipes(Consumer consumer) .unlockedBy("has_material", has(Tags.Items.INGOTS)) .save(consumer); + + ShapelessRecipeBuilder.shapeless(ItemsRegistry.COIN_POUCH.get(), 1) + .unlockedBy("has_item", has(Tags.Items.LEATHER)) + .requires(Tags.Items.LEATHER) + .requires(Tags.Items.STRING) + .save(consumer); + SpecialRecipeBuilder.special(RecipeRegistry.VIAL_RECIPE_SERIALIZER.get()).save(consumer, ResourceLocationHelper.prefix("vial_mixing").toString()); for (Metals.MetalType metalType : Metals.MetalType.values()) diff --git a/src/main/java/leaf/cosmere/entities/CoinProjectile.java b/src/main/java/leaf/cosmere/entities/CoinProjectile.java new file mode 100644 index 000000000..bd5a68b1f --- /dev/null +++ b/src/main/java/leaf/cosmere/entities/CoinProjectile.java @@ -0,0 +1,42 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.entities; + +import leaf.cosmere.registry.EntityRegistry; +import leaf.cosmere.registry.ItemsRegistry; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.entity.projectile.ItemSupplier; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class CoinProjectile extends AbstractArrow implements ItemSupplier +{ + private ItemStack projectileStack = ItemsRegistry.COPPER_CLIP.get().getDefaultInstance(); + + public CoinProjectile(Level level, LivingEntity livingEntity, ItemStack itemStack) + { + super(EntityRegistry.COIN_PROJECTILE.get(), livingEntity, level); + this.projectileStack = itemStack.copy(); + } + + public CoinProjectile(EntityType coinProjectileEntityType, Level level) + { + super(coinProjectileEntityType, level); + } + + @Override + protected ItemStack getPickupItem() + { + return projectileStack; + } + + @Override + public ItemStack getItem() + { + return projectileStack; + } +} diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index b1f1f1235..1c1968555 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -9,6 +9,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.registry.AttributesRegistry; @@ -168,9 +169,13 @@ public static void onLivingTick(LivingEvent.LivingUpdateEvent event) @SubscribeEvent public static void onEntityItemPickUp(EntityItemPickupEvent event) { + if (CoinPouchItem.onPickupItem(event.getItem(), event.getPlayer())) + { + event.setCanceled(true); + } //seriously, get item three times is stupid, I know it. //but entity item, itemstack and then the actual item is needed. -/* if (event.getItem().getItem().getItem() == ItemsRegistry.INVESTITURE.get()) +/* else if (event.getItem().getItem().getItem() == ItemsRegistry.INVESTITURE.get()) { event.getItem().getItem().shrink(1); diff --git a/src/main/java/leaf/cosmere/items/CoinPouchItem.java b/src/main/java/leaf/cosmere/items/CoinPouchItem.java new file mode 100644 index 000000000..e642efed7 --- /dev/null +++ b/src/main/java/leaf/cosmere/items/CoinPouchItem.java @@ -0,0 +1,230 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.items; + +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.containers.coinpouch.CoinPouchContainer; +import leaf.cosmere.containers.coinpouch.CoinPouchInventory; +import leaf.cosmere.entities.CoinProjectile; +import leaf.cosmere.manifestation.allomancy.AllomancyIronSteel; +import leaf.cosmere.network.Network; +import leaf.cosmere.network.packets.PlayerShootProjectileMessage; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.KeybindingRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.world.*; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.projectile.AbstractArrow; +import net.minecraft.world.item.*; +import net.minecraft.world.item.enchantment.EnchantmentHelper; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.Tags; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.items.CapabilityItemHandler; +import net.minecraftforge.items.IItemHandlerModifiable; +import net.minecraftforge.network.NetworkHooks; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Predicate; + +public class CoinPouchItem extends ProjectileWeaponItem +{ + public static final Predicate SUPPORTED_PROJECTILES = (itemStack) -> itemStack.is(Tags.Items.NUGGETS) && AllomancyIronSteel.containsMetal(itemStack.getItem().getRegistryName().getPath()); + + public CoinPouchItem(Item.Properties p_40660_) + { + super(p_40660_); + } + + @Override + public Predicate getAllSupportedProjectiles() + { + return SUPPORTED_PROJECTILES; + } + + @Override + public int getDefaultProjectileRange() + { + return 8; + } + + @Override + public int getUseDuration(ItemStack itemStack) + { + return 600; + } + + + public InteractionResultHolder use(Level level, Player player, InteractionHand interactionHand) + { + ItemStack coinPouchStack = player.getItemInHand(interactionHand); + + if (player.isCrouching()) + { + //open inventory + if (!player.level.isClientSide && player instanceof ServerPlayer) + { + MenuProvider container = new SimpleMenuProvider((windowID, playerInv, plyr) -> new CoinPouchContainer(windowID, playerInv, coinPouchStack), coinPouchStack.getHoverName()); + NetworkHooks.openGui((ServerPlayer) player, container, buf -> buf.writeBoolean(interactionHand == InteractionHand.MAIN_HAND)); + } + } + else if (player.level.isClientSide && KeybindingRegistry.ALLOMANCY_PUSH.isDown()) + { + //assume they wanna shoot a projectile + //so let them tell the server + Network.sendToServer(new PlayerShootProjectileMessage()); + } + return InteractionResultHolder.consume(coinPouchStack); + } + + public void shoot(Player player, ItemStack coinPouchStack) + { + SpiritwebCapability.get(player).ifPresent((data) -> + { + final AllomancyIronSteel steelManifestation = (AllomancyIronSteel) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); + + if (steelManifestation.isActive(data)) + { + final boolean playerCreativeMode = player.getAbilities().instabuild; + final boolean infiniteAmmo = playerCreativeMode || EnchantmentHelper.getItemEnchantmentLevel(Enchantments.INFINITY_ARROWS, coinPouchStack) > 0; + + ItemStack ammo = getProjectile(player, coinPouchStack); + + if (!ammo.isEmpty() || infiniteAmmo) + { + final ItemStack stackToShoot = ammo.copy().split(1); + if (!infiniteAmmo) + { + ammo.shrink(1); + } + //shoot? + + if (!player.level.isClientSide) + { + AbstractArrow coinProjectile = new CoinProjectile(player.level, player, stackToShoot); + coinProjectile.setCritArrow(true); + coinProjectile.shootFromRotation( + player, + player.getXRot(), + player.getYRot(), + 0.0F, + 3.0F, + 1.0F); + + coinProjectile.pickup = infiniteAmmo + ? AbstractArrow.Pickup.DISALLOWED + : AbstractArrow.Pickup.ALLOWED; + + player.level.addFreshEntity(coinProjectile); + + steelManifestation.trackValidEntity(data, coinProjectile); + } + + player.level.playSound( + null, + player.getX(), + player.getY(), + player.getZ(), + SoundEvents.ARROW_SHOOT, + SoundSource.PLAYERS, + 1.0F, + 1.0F / (player.level.getRandom().nextFloat() * 0.4F + 1.2F) + 1 * 0.5F); + + } + } + }); + } + + @Override + public ICapabilityProvider initCapabilities(ItemStack stack, CompoundTag oldCapNbt) + { + return new CoinPouchInventory(); + } + + + public ItemStack getProjectile(Player player, ItemStack coinPouchStack) + { + if (!(coinPouchStack.getItem() instanceof ProjectileWeaponItem)) + { + return ItemStack.EMPTY; + } + else + { + IItemHandlerModifiable bagInv = getBagInv(coinPouchStack); + Predicate predicate = ((ProjectileWeaponItem) coinPouchStack.getItem()).getSupportedHeldProjectiles(); + + for (int i = 0; i < bagInv.getSlots(); ++i) + { + ItemStack stackInSlot = bagInv.getStackInSlot(i); + if (predicate.test(stackInSlot)) + { + return net.minecraftforge.common.ForgeHooks.getProjectile(player, coinPouchStack, stackInSlot); + } + } + + return net.minecraftforge.common.ForgeHooks.getProjectile( + player, + coinPouchStack, + player.getAbilities().instabuild + ? new ItemStack(Metals.MetalType.COPPER.getNuggetItem()) + : ItemStack.EMPTY); + } + } + + @NotNull + private static IItemHandlerModifiable getBagInv(ItemStack coinPouchStack) + { + return (IItemHandlerModifiable) coinPouchStack.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY).orElse(null); + } + + public static boolean onPickupItem(ItemEntity entity, Player player) + { + ItemStack entityStack = entity.getItem(); + int originalCount = entityStack.getCount(); + + if (CoinPouchItem.SUPPORTED_PROJECTILES.test(entityStack)) + { + for (int i = 0; i < player.getInventory().getContainerSize(); i++) + { + ItemStack bag = player.getInventory().getItem(i); + if (!bag.isEmpty() && bag.is(ItemsRegistry.COIN_POUCH.get())) + { + IItemHandlerModifiable bagInv = getBagInv(bag); + + for (int j = 0; j < bagInv.getSlots(); j++) + { + entityStack = bagInv.insertItem(j, entityStack,false); + + if (entityStack.isEmpty()) + { + break; + } + } + + if (player.getInventory().add(-1, entityStack)) + { + //great, we fit it all. + } + + //here's what we couldn't fit (if any) + entity.setItem(entityStack); + //do the take animation where the entity flies into the player + final int amountTaken = originalCount - entityStack.getCount(); + player.take(entity, amountTaken); + + return true; + } + } + } + return false; + } +} diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 71a1a965c..68f15d1b4 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -72,6 +72,7 @@ public boolean isActive(ISpiritweb data) return super.isActive(data) && isMetalBurning(data); } + //A metal is considered burning if the user has the power and can afford the next tick of burning. public boolean isMetalBurning(ISpiritweb data) { int mode = getMode(data); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index c473b96d2..72a5897ef 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -7,9 +7,13 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; +import leaf.cosmere.entities.CoinProjectile; +import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.network.Network; +import leaf.cosmere.network.packets.PlayerShootProjectileMessage; import leaf.cosmere.network.packets.SyncPushPullMessage; +import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.CodecHelper; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.PlayerHelper; @@ -20,8 +24,8 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -67,18 +71,15 @@ public void performEffect(ISpiritweb data) } } - private List blocks; - private List entities; - @OnlyIn(Dist.CLIENT) private void performEffectClient(ISpiritweb cap) { boolean hasChanged = false; SpiritwebCapability data = (SpiritwebCapability) cap; - blocks = isPush ? data.pushBlocks : data.pullBlocks; - entities = isPush ? data.pushEntities : data.pullEntities; + List blocks = isPush ? data.pushBlocks : data.pullBlocks; + List entities = isPush ? data.pushEntities : data.pullEntities; - //Pushes on Nearby Metals + //Pushes/Pulls on Nearby Metals if (getKeyBinding().isDown()) { Minecraft mc = Minecraft.getInstance(); @@ -89,7 +90,7 @@ private void performEffectClient(ISpiritweb cap) BlockPos pos = ((BlockHitResult) ray).getBlockPos(); //todo check block is of ihasmetal type BlockState state = mc.level.getBlockState(pos); - if (state.getBlock() instanceof IHasMetalType) + if (state.getBlock() instanceof IHasMetalType || containsMetal(state.getBlock().getRegistryName().getPath())) { blocks.add(pos.immutable()); @@ -104,17 +105,9 @@ private void performEffectClient(ISpiritweb cap) if (ray instanceof EntityHitResult entityHitResult) { final Entity hitResultEntity = entityHitResult.getEntity(); - - if (!entities.contains(hitResultEntity.getId()) && entityContainsMetal(hitResultEntity)) - { - entities.add(hitResultEntity.getId()); - if (entities.size() > 5) - { - entities.remove(0); - } - hasChanged = true; - } - + //tracks entity if it meets requirements + //eg must contain metal + hasChanged = trackValidEntity(data, hitResultEntity); } } else @@ -146,6 +139,26 @@ private void performEffectClient(ISpiritweb cap) } } + + public boolean trackValidEntity(ISpiritweb cap, Entity entity) + { + //perform the entity move thing. + SpiritwebCapability data = (SpiritwebCapability) cap; + List entities = isPush ? data.pushEntities : data.pullEntities; + + if (!entities.contains(entity.getId()) && entityContainsMetal(entity)) + { + entities.add(entity.getId()); + if (entities.size() > 5) + { + entities.remove(0); + } + return true; + } + + return false; + } + private void performEffectServer(ISpiritweb cap) { if (cap.getLiving().tickCount % 3 == 0) @@ -156,8 +169,8 @@ private void performEffectServer(ISpiritweb cap) //perform the entity move thing. SpiritwebCapability data = (SpiritwebCapability) cap; //todo change this. We shouldn't be setting data on the manifestation base - blocks = isPush ? data.pushBlocks : data.pullBlocks; - entities = isPush ? data.pushEntities : data.pullEntities; + List blocks = isPush ? data.pushBlocks : data.pullBlocks; + List entities = isPush ? data.pushEntities : data.pullEntities; if (!blocks.isEmpty()) { @@ -172,29 +185,49 @@ private void performEffectServer(ISpiritweb cap) private void pushpullEntities(SpiritwebCapability data) { + List entities = isPush ? data.pushEntities : data.pullEntities; for (int i = entities.size() - 1; i >= 0; i--) { int entityID = entities.get(i); Entity entity = data.getLiving().level.getEntity(entityID); - - if (entity.blockPosition().closerThan(data.getLiving().blockPosition(), getRange(data))) + if (entity != null) { - if (entity instanceof ItemEntity itemEntity) + if (entity.blockPosition().closerThan(data.getLiving().blockPosition(), getRange(data))) { - move(itemEntity, data.getLiving().blockPosition()); - } - else if (entity instanceof LivingEntity livingEntity) - { - move(livingEntity, data.getLiving().blockPosition()); - move(data.getLiving(), livingEntity.blockPosition()); - data.getLiving().hurtMarked = true; + //move small things + if (entity instanceof ItemEntity itemEntity) + { + move(itemEntity, data.getLiving().blockPosition()); + } + //affect both entities + else if (entity instanceof LivingEntity livingEntity) + { + move(livingEntity, data.getLiving().blockPosition()); + move(data.getLiving(), livingEntity.blockPosition()); + data.getLiving().hurtMarked = true; + } + //affect entity who is doing the push/pull + else + { + if (isPush) + { + move(data.getLiving(), entity.blockPosition()); + } + //if not push, then check if we should pull coin projectiles back to player + else if (data.getLiving() instanceof Player player && entity instanceof CoinProjectile coinProjectile) + { + //technically we could do this with item entities, but I like how those currently work + //Doing this with projectiles meansa I don't have to mess with the physics of un-sticking + //the coin projectiles from whatever surface they may be attached to + coinProjectile.playerTouch(player); + } + } } } else { - //we don't want to remove entities that are out of distance - //in case we are still holding the button down and get back into range - //entities.remove(i); + //remove entities the level couldn't find + entities.remove(i); } } } @@ -234,6 +267,7 @@ private void move(Entity entity, BlockPos toMoveTo) private void pushpullBlocks(SpiritwebCapability data) { + List blocks = isPush ? data.pushBlocks : data.pullBlocks; int blockListCount = blocks.size(); if (blockListCount == 0) @@ -363,17 +397,22 @@ else if (entity instanceof ItemEntity itemEntity) if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) { - found.add(entity.position()); + return true; } if (item instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) { - found.add(entity.position()); + return true; } } + else if (entity instanceof CoinProjectile coinProjectile) + { + return true; + } + return false; } - private static boolean containsMetal(String path) + public static boolean containsMetal(String path) { Minecraft.getInstance().getProfiler().push("cosmere-containsMetal"); if (s_whiteList == null) @@ -426,8 +465,7 @@ private static boolean testPath(ResourceLocation test, String[] metalNames) { final String path = test.getPath(); //No twisting vines, paintings, crafting tables or silverfish. Lead by itself is also incorrect. - boolean misMatch = path.contains("ting") || path.contains("silverfish") || path.equals("lead"); + boolean misMatch = path.contains("ting") || path.contains("tint") || path.contains("silverfish") || path.equals("lead"); return !misMatch && Arrays.stream(metalNames).anyMatch(path::contains); } - } diff --git a/src/main/java/leaf/cosmere/network/Network.java b/src/main/java/leaf/cosmere/network/Network.java index 421e81e4d..373838c5e 100644 --- a/src/main/java/leaf/cosmere/network/Network.java +++ b/src/main/java/leaf/cosmere/network/Network.java @@ -38,6 +38,7 @@ public static void init() NETWORK_CHANNEL.registerMessage(id++, ChangeSelectedManifestationMessage.class, ChangeSelectedManifestationMessage::encode, ChangeSelectedManifestationMessage::decode, ChangeSelectedManifestationMessage::handle); NETWORK_CHANNEL.registerMessage(id++, SetSelectedManifestationMessage.class, SetSelectedManifestationMessage::encode, SetSelectedManifestationMessage::decode, SetSelectedManifestationMessage::handle); NETWORK_CHANNEL.registerMessage(id++, SyncPushPullMessage.class, SyncPushPullMessage::encode, SyncPushPullMessage::decode, SyncPushPullMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, PlayerShootProjectileMessage.class, PlayerShootProjectileMessage::encode, PlayerShootProjectileMessage::decode, PlayerShootProjectileMessage::handle); } diff --git a/src/main/java/leaf/cosmere/network/packets/PlayerShootProjectileMessage.java b/src/main/java/leaf/cosmere/network/packets/PlayerShootProjectileMessage.java new file mode 100644 index 000000000..e73c7c6ca --- /dev/null +++ b/src/main/java/leaf/cosmere/network/packets/PlayerShootProjectileMessage.java @@ -0,0 +1,56 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.network.packets; + +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.registry.ItemsRegistry; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent; + +import java.util.function.Supplier; + +public class PlayerShootProjectileMessage +{ + public PlayerShootProjectileMessage() + { + //empty + } + + public static void encode(PlayerShootProjectileMessage mes, FriendlyByteBuf buf) + { + //empty + } + + public static PlayerShootProjectileMessage decode(FriendlyByteBuf buf) + { + return new PlayerShootProjectileMessage(); + } + + public static void handle(PlayerShootProjectileMessage mes, Supplier cont) + { + + NetworkEvent.Context context = cont.get(); + ServerPlayer player = context.getSender(); + MinecraftServer server = player.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(player).ifPresent((cap) -> + { + for (int i = 0; i < player.getInventory().getContainerSize(); i++) + { + ItemStack bag = player.getInventory().getItem(i); + if (!bag.isEmpty() && bag.is(ItemsRegistry.COIN_POUCH.get())) + { + ItemsRegistry.COIN_POUCH.get().shoot(player, bag); + + return; + } + } + })); + cont.get().setPacketHandled(true); + } + +} diff --git a/src/main/java/leaf/cosmere/registry/ContainersRegistry.java b/src/main/java/leaf/cosmere/registry/ContainersRegistry.java new file mode 100644 index 000000000..9d6d72ad9 --- /dev/null +++ b/src/main/java/leaf/cosmere/registry/ContainersRegistry.java @@ -0,0 +1,29 @@ +/* + * File created ~ 21 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.registry; + +import leaf.cosmere.Cosmere; +import leaf.cosmere.client.gui.CoinPouchScreen; +import leaf.cosmere.containers.coinpouch.CoinPouchContainer; +import net.minecraft.client.gui.screens.MenuScreens; +import net.minecraft.world.inventory.MenuType; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class ContainersRegistry +{ + public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Cosmere.MODID); + public static final RegistryObject> COIN_POUCH = CONTAINERS.register("coin_pouch", IForgeMenuType.create(CoinPouchContainer::fromNetwork).delegate); + + @OnlyIn(Dist.CLIENT) + public static void registerGUIFactories() + { + MenuScreens.register((MenuType) ContainersRegistry.COIN_POUCH.get(), CoinPouchScreen::new); + } +} diff --git a/src/main/java/leaf/cosmere/registry/EntityRegistry.java b/src/main/java/leaf/cosmere/registry/EntityRegistry.java index e805a5823..04b0b9836 100644 --- a/src/main/java/leaf/cosmere/registry/EntityRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EntityRegistry.java @@ -1,18 +1,15 @@ package leaf.cosmere.registry; +import leaf.cosmere.entities.CoinProjectile; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; -import net.minecraft.world.entity.ai.attributes.DefaultAttributes; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; -import static leaf.cosmere.Cosmere.MODID; - - public class EntityRegistry { - public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID); + public static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, leaf.cosmere.Cosmere.MODID); /*public static final RegistryObject> SPREN_FIRE = ENTITIES.register( @@ -23,6 +20,16 @@ public class EntityRegistry .setShouldReceiveVelocityUpdates(false) .build("spren_flame"));*/ + public static final RegistryObject> COIN_PROJECTILE = + ENTITIES.register( + "coin_projectile", + () -> EntityType.Builder + .of(CoinProjectile::new, MobCategory.MISC) + .sized(0.5F, 0.5F) + .clientTrackingRange(4) + .updateInterval(20) + .build("coin_projectile")); + public static void PrepareEntityAttributes() { diff --git a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java index 13cd9298c..8dace343e 100644 --- a/src/main/java/leaf/cosmere/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ItemsRegistry.java @@ -11,10 +11,13 @@ import leaf.cosmere.constants.Constants.RegNameStubs; import leaf.cosmere.constants.Metals; import leaf.cosmere.constants.Roshar; +import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.*; import leaf.cosmere.items.curio.*; import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.properties.PropTypes; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Tiers; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; @@ -27,37 +30,38 @@ public class ItemsRegistry { - public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Cosmere.MODID); + public static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, Cosmere.MODID); //other items - public static final RegistryObject GUIDE = ITEMS.register("guide", () -> createItem(new GuideItem())); - //public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); + public static final RegistryObject GUIDE = ITEMS.register("guide", () -> createItem(new GuideItem())); + //public static final RegistryObject INVESTITURE = ITEMS.register("investiture", () -> createItem(new BaseItem())); - //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); - //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); - public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + //public static final RegistryObject MIST_CLOAK = ITEMS.register("mist_cloak", () -> createItem(new ElytraItem(PropTypes.Items.ONE.get()))); + //public static final RegistryObject OBSIDIAN_DAGGER = ITEMS.register("obsidian_dagger", () -> createItem(new SwordItem(ItemTier.DIAMOND, 2, -1.4F, PropTypes.Items.ONE.get().rarity(Rarity.UNCOMMON)))); + public static final RegistryObject NIGHT_BLOOD = ITEMS.register("night_blood", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 24, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + public static final RegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); + public static final RegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> createItem(new ShardbladeItem(Tiers.NETHERITE, 10, -1.4F, PropTypes.Items.SHARDBLADE.get()))); - public static final RegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", () -> createItem(new BandsOfMourningItem())); + public static final RegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", () -> createItem(new BandsOfMourningItem())); - //public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); - //public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); + public static final RegistryObject COPPER_CLIP = ITEMS.register("copper_clip", () -> createItem(new MetalNuggetItem(Metals.MetalType.COPPER))); + public static final RegistryObject GOLD_BOXING = ITEMS.register("gold_boxing", () -> createItem(new MetalNuggetItem(Metals.MetalType.GOLD))); + public static final RegistryObject COIN_POUCH = ITEMS.register("coin_pouch", () -> createItem(new CoinPouchItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); - //public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); - public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); + //public static final RegistryObject METAL_FILE = ITEMS.register("metal_file", () -> createItem(new MetalFileItem())); + public static final RegistryObject METAL_VIAL = ITEMS.register("metal_vial", () -> createItem(new MetalVialItem())); - //public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); - //public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_EMPTY = ITEMS.register("jar_empty", () -> createItem(new BaseItem(PropTypes.Items.SIXTEEN.get().tab(CosmereItemGroups.ITEMS)))); + //public static final RegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> createItem(new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); //Mass items gen - public static final Map> METAL_RAW_ORE = + public static final Map> METAL_RAW_ORE = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( @@ -67,7 +71,7 @@ public class ItemsRegistry () -> createItem(new MetalRawOreItem(type)) ))); - public static final Map> METAL_RAW_BLEND = + public static final Map> METAL_RAW_BLEND = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::isAlloy) .collect(Collectors.toMap( @@ -77,7 +81,7 @@ public class ItemsRegistry () -> createItem(new MetalRawOreItem(type)) ))); - public static final Map> METAL_NUGGETS = + public static final Map> METAL_NUGGETS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( @@ -87,7 +91,7 @@ public class ItemsRegistry () -> createItem(new MetalNuggetItem(type)) ))); - /*public static final Map> METAL_SHAVINGS = + /*public static final Map> METAL_SHAVINGS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( @@ -97,7 +101,7 @@ public class ItemsRegistry () -> createItem(new MetalShavingsItem(type)) )));*/ - public static final Map> METAL_INGOTS = + public static final Map> METAL_INGOTS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( @@ -107,7 +111,7 @@ public class ItemsRegistry () -> createItem(new MetalIngotItem(type)) ))); - public static final Map> METAL_RINGS = + public static final Map> METAL_RINGS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( @@ -117,7 +121,7 @@ public class ItemsRegistry () -> createItem(new RingMetalmindItem(type)) ))); - public static final Map> METAL_BRACELETS = + public static final Map> METAL_BRACELETS = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( @@ -127,7 +131,7 @@ public class ItemsRegistry () -> createItem(new BraceletMetalmindItem(type)) ))); - public static final Map> METAL_NECKLACES = + public static final Map> METAL_NECKLACES = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( @@ -137,7 +141,7 @@ public class ItemsRegistry () -> createItem(new NecklaceMetalmindItem(type)) ))); - public static final Map> METAL_SPIKE = + public static final Map> METAL_SPIKE = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasHemalurgicEffect) .collect(Collectors.toMap( @@ -148,7 +152,7 @@ public class ItemsRegistry ))); - public static final Map> POLESTONE_CHIPS = + public static final Map> POLESTONE_CHIPS = Arrays.stream(Roshar.Polestone.values()) .collect(Collectors.toMap( Function.identity(), @@ -158,7 +162,7 @@ public class ItemsRegistry ))); - public static final Map> POLESTONE_MARKS = + public static final Map> POLESTONE_MARKS = Arrays.stream(Roshar.Polestone.values()) .collect(Collectors.toMap( Function.identity(), @@ -168,7 +172,7 @@ public class ItemsRegistry ))); - public static final Map> POLESTONE_BROAMS = + public static final Map> POLESTONE_BROAMS = Arrays.stream(Roshar.Polestone.values()) .collect(Collectors.toMap( Function.identity(), @@ -177,7 +181,7 @@ public class ItemsRegistry () -> createItem(new PolestoneItem(type, Roshar.GemSize.BROAM)) ))); - public static final Map> HONORBLADES = + public static final Map> HONORBLADES = Arrays.stream(Roshar.Polestone.values()) .collect(Collectors.toMap( Function.identity(), @@ -187,7 +191,7 @@ public class ItemsRegistry ))); - private static T createItem(T item) + private static T createItem(T item) { return item; } diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index d204de564..de5021e6d 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -36,10 +36,6 @@ public static class Items public static TagKey METAL_SPIKE = makeItem("cosmere", "spike"); - - public static TagKey NUGGET = forgeItemTag("nugget"); - - public static final Map> METAL_RAW_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( diff --git a/src/main/resources/assets/cosmere/textures/gui/coin_pouch.png b/src/main/resources/assets/cosmere/textures/gui/coin_pouch.png new file mode 100644 index 0000000000000000000000000000000000000000..8c22ca4d85351816895265192861928752af1b12 GIT binary patch literal 3870 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 diff --git a/src/main/resources/assets/cosmere/textures/item/investiture.png b/src/main/resources/assets/cosmere/textures/item/investiture.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/jar_empty.png b/src/main/resources/assets/cosmere/textures/item/jar_empty.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/jar_of_blood.png b/src/main/resources/assets/cosmere/textures/item/jar_of_blood.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/metal_file.png b/src/main/resources/assets/cosmere/textures/item/metal_file.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/mist_cloak.png b/src/main/resources/assets/cosmere/textures/item/mist_cloak.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/night_blood.png b/src/main/resources/assets/cosmere/textures/item/night_blood.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN diff --git a/src/main/resources/assets/cosmere/textures/item/obsidian_dagger.png b/src/main/resources/assets/cosmere/textures/item/obsidian_dagger.png deleted file mode 100644 index 2d890a402873091a1d26700aa4db6e7bec0174d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|lAbP(Ar`&KfByfsXVz@!RJpoX e%FUEVlb0bhmsz&LaKQqgA_h-aKbLh*2~7aFkQ2xN From 542647517f9ee01b93602c67f3bd62390c0d28b3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 22 May 2022 16:43:52 +1200 Subject: [PATCH 0149/1090] update changelog, bump version --- Changelog.md | 6 ++++++ gradle.properties | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 7e2d215ca..d74221fd1 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,11 @@ The Cosmere Project - For 1.16 Minecraft +B33 + +Coinshots can now shoot coins! Crouch and right click a coin pouch to open pouch inventory and add metal nuggets. +Then hold your allomancy push keybind and use (right click) the coin pouch. You'll shoot out a projectile that you'll automatically be pushing against. +If you have allomantic iron, you can pull those projectiles directly back into your coin pouch or inventory. + B32 Fix feruchemy not working with completely empty metalminds. diff --git a/gradle.properties b/gradle.properties index 33314e00d..8d823422e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=33 +build_number=34 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 4c015110d842d5702b89c20fb3a5f3c5d650cbb9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 23 May 2022 11:55:07 +1200 Subject: [PATCH 0150/1090] Fix cosmere not booting on servers --- src/main/java/leaf/cosmere/client/ClientSetup.java | 3 +++ .../effects/feruchemy/store/DuraluminStoreEffect.java | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index b6d355a56..dd0e3296e 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -7,6 +7,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.client.gui.SpriteIconPositioning; import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.store.DuraluminStoreEffect; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ContainersRegistry; import leaf.cosmere.registry.EntityRegistry; @@ -26,6 +27,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -40,6 +42,7 @@ public class ClientSetup @SubscribeEvent public static void init(final FMLClientSetupEvent event) { + MinecraftForge.EVENT_BUS.addListener(DuraluminStoreEffect::onRenderNameplateEvent); event.enqueueWork(() -> { ContainersRegistry.registerGUIFactories(); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index 3606ef727..a308d119b 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -6,6 +6,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.registry.EffectsRegistry; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; @@ -21,7 +22,6 @@ public DuraluminStoreEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); MinecraftForge.EVENT_BUS.addListener(this::onLivingVisibilityEvent); - MinecraftForge.EVENT_BUS.addListener(this::onRenderNameplateEvent); } @Override @@ -41,14 +41,14 @@ public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) } } - public void onRenderNameplateEvent(RenderNameplateEvent event) + public static void onRenderNameplateEvent(RenderNameplateEvent event) { if (!(event.getEntity() instanceof LivingEntity livingEntity)) { return; } - MobEffectInstance effectInstance = livingEntity.getEffect(this); + MobEffectInstance effectInstance = livingEntity.getEffect(Metals.MetalType.DURALUMIN.getStoringEffect()); if (effectInstance != null && effectInstance.getDuration() > 0) { if (effectInstance.getAmplifier() > 2) From b1514d28e56b34f3d16a6d38a7163153fa3b914d Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 23 May 2022 11:55:48 +1200 Subject: [PATCH 0151/1090] update version and changelog. --- Changelog.md | 4 ++++ gradle.properties | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index d74221fd1..672f56fb0 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,9 @@ The Cosmere Project - For 1.16 Minecraft +B34 + +Fixed server crashing due to Cosmere. Duralumin feruchemy was trying to run client side code on the server, for hiding a nameplate while storing oops + B33 Coinshots can now shoot coins! Crouch and right click a coin pouch to open pouch inventory and add metal nuggets. diff --git a/gradle.properties b/gradle.properties index 8d823422e..5dc184810 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=34 +build_number=35 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From bb851269da8b2f4b9b732599a7835449487aa937 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 23 May 2022 20:51:16 +1200 Subject: [PATCH 0152/1090] Fix commands not working on server --- src/main/java/leaf/cosmere/Cosmere.java | 2 + .../leaf/cosmere/commands/CosmereCommand.java | 6 + .../arguments/ManifestationsArgumentType.java | 31 ++- .../subcommands/ManifestationCommand.java | 229 ++++++++++-------- .../leaf/cosmere/handlers/CommonEvents.java | 1 - .../cosmere/utils/helpers/CommandHelper.java | 31 --- 6 files changed, 164 insertions(+), 136 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 780128b86..4efe2065a 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -6,6 +6,7 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.client.ClientSetup; +import leaf.cosmere.commands.CosmereCommand; import leaf.cosmere.compat.curios.CuriosCompat; import leaf.cosmere.compat.patchouli.PatchouliCompat; import leaf.cosmere.handlers.ColorHandler; @@ -72,6 +73,7 @@ private void commonSetup(FMLCommonSetupEvent event) { event.enqueueWork(() -> { + CosmereCommand.registerCustomArgumentTypes(); FeatureRegistry.ConfiguredFeatures.registerConfiguredFeatures(); FeatureRegistry.PlacedFeatures.registerPlacedFeatures(); EntityRegistry.PrepareEntityAttributes(); diff --git a/src/main/java/leaf/cosmere/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/commands/CosmereCommand.java index 23f22e897..8cd360cb7 100644 --- a/src/main/java/leaf/cosmere/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/commands/CosmereCommand.java @@ -10,10 +10,13 @@ import com.mojang.brigadier.CommandDispatcher; import leaf.cosmere.Cosmere; +import leaf.cosmere.commands.arguments.ManifestationsArgumentType; import leaf.cosmere.commands.subcommands.ManifestationCommand; import leaf.cosmere.commands.subcommands.TestCommand; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.commands.synchronization.ArgumentTypes; +import net.minecraft.commands.synchronization.EmptyArgumentSerializer; public class CosmereCommand @@ -26,4 +29,7 @@ public static void register(CommandDispatcher dispatcher) .then(ManifestationCommand.register(dispatcher)) ); } + public static void registerCustomArgumentTypes() { + ArgumentTypes.register("cosmere:manifestations_argument", ManifestationsArgumentType.class, new EmptyArgumentSerializer<>(ManifestationsArgumentType::createArgument)); + } } diff --git a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java index d4fdc9419..f877cf00a 100644 --- a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java +++ b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java @@ -12,18 +12,33 @@ import com.mojang.brigadier.suggestion.Suggestions; import com.mojang.brigadier.suggestion.SuggestionsBuilder; import leaf.cosmere.constants.Constants; +import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; -import leaf.cosmere.utils.helpers.CommandHelper; +import net.minecraft.ChatFormatting; import net.minecraft.commands.SharedSuggestionProvider; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; +import java.util.Collection; import java.util.Collections; +import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; public class ManifestationsArgumentType implements ArgumentType { + private static final Collection EXAMPLES = Stream.of( + "cosmere:" + Metals.MetalType.STEEL.getAllomancyRegistryName(), + "cosmere:" + Metals.MetalType.IRON.getFeruchemyRegistryName()) + .toList(); + + @Override + public Collection getExamples() + { + return EXAMPLES; + } + public static final DynamicCommandExceptionType INVALID_MANIFESTATION_EXCEPTION = new DynamicCommandExceptionType((manifestation) -> new TranslatableComponent(Constants.Strings.POWER_INVALID, manifestation)); @@ -48,7 +63,19 @@ public AManifestation parse(StringReader reader) throws CommandSyntaxException @Override public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) { - return SharedSuggestionProvider.suggest(Collections.emptyList(), CommandHelper.addManifestationNamesWithTooltip(builder)); + return context.getSource() instanceof SharedSuggestionProvider + ? SharedSuggestionProvider.suggest(Collections.emptyList(), addManifestationNamesWithTooltip(builder)) + : Suggestions.empty(); } + public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBuilder builder) + { + Map map = ManifestationRegistry.getManifestations(); + if (!map.isEmpty()) + { + map.forEach((key, value) -> builder.suggest(key.toString(), new TranslatableComponent(value).withStyle((style) -> style.withColor(ChatFormatting.GREEN)))); + } + builder.buildFuture(); + return builder; + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index 0b2d6ad1c..117caa32d 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -18,11 +18,17 @@ import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; import net.minecraft.network.chat.BaseComponent; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerPlayer; +import javax.naming.Context; + +import java.util.ArrayList; +import java.util.Collection; + import static leaf.cosmere.constants.Constants.Strings.POWERS_FOUND; public class ManifestationCommand extends ModCommand @@ -34,132 +40,135 @@ public int run(CommandContext context) throws CommandSyntaxE return Command.SINGLE_SUCCESS; } - private static int check(CommandContext context, ServerPlayer player) + private static int check(CommandContext context) throws CommandSyntaxException { - SpiritwebCapability.get(player).ifPresent(spiritweb -> - { - CommandSourceStack source = context.getSource(); - - TranslatableComponent powersFound = new TranslatableComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID())); - - final BaseComponent leftBracketTextComponent = new TextComponent("["); - final BaseComponent rightBracketTextComponent = new TextComponent("]"); - final TextComponent space = new TextComponent(" "); + Collection players = getPlayers(context, 2); - //figure out which manifestations a player has - for (AManifestation manifestation : spiritweb.getAvailableManifestations()) + for (ServerPlayer player : players) + { + SpiritwebCapability.get(player).ifPresent(spiritweb -> { - powersFound.append(leftBracketTextComponent); - powersFound.append(TextHelper.createTextWithTooltip( - manifestation.translation(), - manifestation.description())); - powersFound.append(rightBracketTextComponent); - powersFound.append(space); - } - source.sendSuccess(powersFound, true); - }); + CommandSourceStack source = context.getSource(); + + TranslatableComponent powersFound = new TranslatableComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); + + final BaseComponent leftBracketTextComponent = new TextComponent("["); + final BaseComponent rightBracketTextComponent = new TextComponent("]"); + final TextComponent space = new TextComponent(" "); + + //figure out which manifestations a player has + for (AManifestation manifestation : spiritweb.getAvailableManifestations()) + { + powersFound.append(leftBracketTextComponent); + powersFound.append(TextHelper.createTextWithTooltip( + manifestation.translation(), + manifestation.description())); + powersFound.append(rightBracketTextComponent); + powersFound.append(space); + } + source.sendSuccess(powersFound, true); + }); + } return Command.SINGLE_SUCCESS; } - private static int clear(CommandContext context, ServerPlayer player) + private static int clear(CommandContext context) throws CommandSyntaxException { - SpiritwebCapability.get(player).ifPresent(iSpiritweb -> - { - CommandSourceStack source = context.getSource(); - iSpiritweb.clearManifestations(); - iSpiritweb.syncToClients(null); - BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); - }); + Collection players = getPlayers(context, 2); - return Command.SINGLE_SUCCESS; - } - - private static int reroll(CommandContext context, ServerPlayer player) - { - SpiritwebCapability.get(player).ifPresent(iSpiritweb -> + for (ServerPlayer player : players) { - CommandSourceStack source = context.getSource(); - iSpiritweb.clearManifestations(); - EntityHelper.giveEntityStartingManifestation(player, (SpiritwebCapability) iSpiritweb); - //set to none so that it auto updates to the new available ones on sync - iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); - iSpiritweb.syncToClients(null); - BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); - }); + SpiritwebCapability.get(player).ifPresent(iSpiritweb -> + { + CommandSourceStack source = context.getSource(); + iSpiritweb.clearManifestations(); + iSpiritweb.syncToClients(null); + BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + }); + } return Command.SINGLE_SUCCESS; } - private static int set(CommandContext context, ServerPlayer player) + private static int reroll(CommandContext context) throws CommandSyntaxException { - CommandSourceStack source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - - BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - - BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + Collection players = getPlayers(context, 2); - if (player == null || manifestation == null) + for (ServerPlayer player : players) { - source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; + SpiritwebCapability.get(player).ifPresent(iSpiritweb -> + { + CommandSourceStack source = context.getSource(); + iSpiritweb.clearManifestations(); + EntityHelper.giveEntityStartingManifestation(player, (SpiritwebCapability) iSpiritweb); + //set to none so that it auto updates to the new available ones on sync + iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); + iSpiritweb.syncToClients(null); + BaseComponent playerTextObject = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + }); } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.clearManifestations(); - spiritweb.giveManifestation(manifestation); - spiritweb.syncToClients(null); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - }); + + return Command.SINGLE_SUCCESS; } - private static int give(CommandContext context, ServerPlayer player) + + private static int give(CommandContext context) throws CommandSyntaxException { - CommandSourceStack source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); + Collection players = getPlayers(context, 2); - BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + for (ServerPlayer player : players) + { + CommandSourceStack source = context.getSource(); + AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + BaseComponent playerText = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); - if (player == null || manifestation == null) - { - source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; + BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + + if (manifestation == null) + { + source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + return 0; + } + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.giveManifestation(manifestation); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + spiritweb.syncToClients(null); + }); } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.giveManifestation(manifestation); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - spiritweb.syncToClients(null); - }); return Command.SINGLE_SUCCESS; } - private static int remove(CommandContext context, ServerPlayer player) + private static int remove(CommandContext context) throws CommandSyntaxException { - CommandSourceStack source = context.getSource(); - AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); + Collection players = getPlayers(context, 2); - BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + for (ServerPlayer player : players) + { + CommandSourceStack source = context.getSource(); + AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - if (player == null || manifestation == null) - { - source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); - return 0; + BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + + if (manifestation == null) + { + source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + return 0; + } + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.removeManifestation(manifestation); + spiritweb.syncToClients(null); + source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + }); } - SpiritwebCapability.get(player).ifPresent((spiritweb) -> - { - spiritweb.removeManifestation(manifestation); - spiritweb.syncToClients(null); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); - }); return Command.SINGLE_SUCCESS; } @@ -168,22 +177,38 @@ private static int remove(CommandContext context, ServerPlay return Commands.literal("powers") .requires(context -> context.hasPermission(2)) .then(Commands.literal("check") - .executes(context -> check(context, context.getSource().getPlayerOrException()))) -/* .then(Commands.literal("clear") - .executes(context -> clear(context, context.getSource().asPlayer()))) - .then(Commands.literal("set") - .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> set(context, context.getSource().asPlayer()))) - )*/ + .executes(ManifestationCommand::check) + .then(Commands.argument("target", EntityArgument.players()) + .executes(ManifestationCommand::check))) + .then(Commands.literal("clear") + .executes(ManifestationCommand::clear) + .then(Commands.argument("target", EntityArgument.players()) + .executes(ManifestationCommand::clear))) .then(Commands.literal("reroll") - .executes(context -> reroll(context, context.getSource().getPlayerOrException()))) + .executes(ManifestationCommand::reroll) + .then(Commands.argument("target", EntityArgument.players()) + .executes(ManifestationCommand::reroll))) .then(Commands.literal("give") .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> give(context, context.getSource().getPlayerOrException())))) + .executes(ManifestationCommand::give) + .then(Commands.argument("target", EntityArgument.players()) + .executes(ManifestationCommand::give)))) .then(Commands.literal("remove") .then(Commands.argument("manifestation", ManifestationsArgumentType.createArgument()) - .executes(context -> remove(context, context.getSource().getPlayerOrException())))) + .executes(ManifestationCommand::remove) + .then(Commands.argument("target", EntityArgument.players()) + .executes(ManifestationCommand::remove)))) ; // end add } + //I'm not entirely certain this works. + public static Collection getPlayers(CommandContext context, int numOfParams) throws CommandSyntaxException { + Collection players = new ArrayList<>(); + if(context.getInput().split(" ").length == numOfParams) { + players.add(context.getSource().getPlayerOrException()); + } else { + players = EntityArgument.getPlayers(context, "target"); + } + return players; + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 490a3b13e..eb355f264 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -13,7 +13,6 @@ import leaf.cosmere.registry.FeatureRegistry; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.VillagerProfessionRegistry; -import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.world.entity.npc.VillagerTrades; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; diff --git a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java b/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java deleted file mode 100644 index 1da4da649..000000000 --- a/src/main/java/leaf/cosmere/utils/helpers/CommandHelper.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.utils.helpers; - -import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import net.minecraft.ChatFormatting; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; - -import java.util.Map; - -import static leaf.cosmere.registry.ManifestationRegistry.getManifestations; - -public class CommandHelper -{ - public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBuilder builder) - { - Map map = getManifestations(); - if (!map.isEmpty()) - { - map.entrySet().forEach(entry -> - { - builder.suggest(entry.getKey().toString(), new TranslatableComponent(entry.getValue()).withStyle((style) -> style.withColor(ChatFormatting.GREEN))); - }); - } - builder.buildFuture(); - return builder; - } -} From 74ad0f996020d6ab37f1eb50617fab731743ff73 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 23 May 2022 21:08:33 +1200 Subject: [PATCH 0153/1090] Fixed bug that crashed players trying to use the coin pouch or iron/steel allomancy --- .../allomancy/AllomancyIronSteel.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 72a5897ef..fc6d1c35c 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -8,12 +8,9 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; import leaf.cosmere.entities.CoinProjectile; -import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.network.Network; -import leaf.cosmere.network.packets.PlayerShootProjectileMessage; import leaf.cosmere.network.packets.SyncPushPullMessage; -import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.CodecHelper; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.PlayerHelper; @@ -25,7 +22,6 @@ import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -197,13 +193,13 @@ private void pushpullEntities(SpiritwebCapability data) //move small things if (entity instanceof ItemEntity itemEntity) { - move(itemEntity, data.getLiving().blockPosition()); + moveEntityTowards(itemEntity, data.getLiving().blockPosition()); } //affect both entities else if (entity instanceof LivingEntity livingEntity) { - move(livingEntity, data.getLiving().blockPosition()); - move(data.getLiving(), livingEntity.blockPosition()); + moveEntityTowards(livingEntity, data.getLiving().blockPosition()); + moveEntityTowards(data.getLiving(), livingEntity.blockPosition()); data.getLiving().hurtMarked = true; } //affect entity who is doing the push/pull @@ -211,7 +207,7 @@ else if (entity instanceof LivingEntity livingEntity) { if (isPush) { - move(data.getLiving(), entity.blockPosition()); + moveEntityTowards(data.getLiving(), entity.blockPosition()); } //if not push, then check if we should pull coin projectiles back to player else if (data.getLiving() instanceof Player player && entity instanceof CoinProjectile coinProjectile) @@ -232,15 +228,14 @@ else if (data.getLiving() instanceof Player player && entity instanceof CoinProj } } - private void move(Entity entity, BlockPos toMoveTo) + private void moveEntityTowards(Entity entity, BlockPos toMoveTo) { Vec3 blockCenter = Vec3.atCenterOf(toMoveTo); - float renderPartialTicks = Minecraft.getInstance().getFrameTime(); Vec3 direction = VectorHelper.getDirection( blockCenter, Vec3.atCenterOf(entity.blockPosition()),//use entity block position, so we can do things like hover directly over a block more easily - (isPush ? -1f : 2f) * renderPartialTicks); + (isPush ? -1f : 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vec3 normalize = direction.normalize(); @@ -289,7 +284,7 @@ private void pushpullBlocks(SpiritwebCapability data) double maxDistance = getRange(data); if (blockPos.closerThan(living.blockPosition(), maxDistance)) { - move(living, blockPos); + moveEntityTowards(living, blockPos); } else { @@ -414,7 +409,6 @@ else if (entity instanceof CoinProjectile coinProjectile) public static boolean containsMetal(String path) { - Minecraft.getInstance().getProfiler().push("cosmere-containsMetal"); if (s_whiteList == null) { createWhitelist(); @@ -424,7 +418,6 @@ public static boolean containsMetal(String path) //look for any block or item that contains one of our metals //eg iron fence - Minecraft.getInstance().getProfiler().pop(); return foundMatch; } From d61bb014c1b6868ad51424bf56161de464dc6178 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 23 May 2022 21:09:31 +1200 Subject: [PATCH 0154/1090] update version and changelog. --- Changelog.md | 5 +++++ gradle.properties | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 672f56fb0..7d48ff31d 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ The Cosmere Project - For 1.16 Minecraft +B35 + +Fix commands not working on server. +Fixed bug that crashed players trying to use the coin pouch or allomantic iron/steel. + B34 Fixed server crashing due to Cosmere. Duralumin feruchemy was trying to run client side code on the server, for hiding a nameplate while storing oops diff --git a/gradle.properties b/gradle.properties index 5dc184810..78c3752df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=35 +build_number=36 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 0a3861252197ca80f88430bfc216a84c12306738 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 25 May 2022 22:33:13 +1200 Subject: [PATCH 0155/1090] Fixed hemalurgic spikes constantly damaging when used as feruchemical storage --- .../leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index a0d37e992..3e48d2a5e 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -213,6 +213,7 @@ public void inventoryTick(ItemStack stack, Level worldIn, Entity entityIn, int i //todo //add decay //add decay if not equipped + addDecay(stack); { // unless its in a jar? } @@ -374,10 +375,14 @@ public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stac @Override public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack stack) { - final LivingEntity entity = slotContext.getWearer(); - entity.hurt(SPIKED, 4); + //only damage if removing the spike. We can ignore replacing the spike with another spike. + boolean isUnequipping = newStack.isEmpty() || !newStack.is(stack.getItem()); + if (isUnequipping) + { + final LivingEntity entity = slotContext.getWearer(); + entity.hurt(SPIKED, 4); + } } - /*@Override public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) { From cdbcb6997a2fbc2b10841d6a1fa1092306888f32 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 25 May 2022 22:34:23 +1200 Subject: [PATCH 0156/1090] Some progress towards fixing nicrosil metalminds. --- .../cap/entity/SpiritwebCapability.java | 1 + .../java/leaf/cosmere/charge/IChargeable.java | 58 ++++---- .../leaf/cosmere/charge/ItemChargeHelper.java | 2 +- .../cosmere/charge/MetalmindChargeHelper.java | 63 +++----- .../leaf/cosmere/constants/Constants.java | 2 +- .../leaf/cosmere/items/MetalmindItem.java | 35 +---- .../loot/InvestMetalmindLootFunction.java | 2 +- .../allomancy/AllomancyBase.java | 2 +- .../feruchemy/FeruchemyBase.java | 4 +- .../feruchemy/FeruchemyNicrosil.java | 138 +++++++++++++++++- .../ChangeManifestationModeMessage.java | 1 - 11 files changed, 198 insertions(+), 110 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 55b74bc3e..052d11325 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -635,6 +635,7 @@ public void setMode(AManifestation aManifestation, int mode) { mode = Mth.clamp(mode, aManifestation.modeMin(this), aManifestation.modeMax(this)); MANIFESTATIONS_MODE.put(aManifestation, mode); + aManifestation.onModeChange(this); } @Override diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index 4f96f3a2f..f395a9254 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -11,6 +11,7 @@ import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; +import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.utils.helpers.PlayerHelper; import leaf.cosmere.utils.helpers.StackNBTHelper; @@ -52,40 +53,43 @@ default void setCharge(ItemStack itemStack, int chargeLevel) default boolean trySetAttunedPlayer(ItemStack itemStack, Player entity) { - UUID attunedPlayerID = getAttunedPlayer(itemStack); - UUID playerID = entity.getUUID(); - - boolean noAttunedPlayer = attunedPlayerID == null; - - if (noAttunedPlayer) + if (itemStack.getItem() instanceof IHasMetalType metalType) { - //No attuned player! Check to see whether they are storing identity - MobEffectInstance storingIdentity = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); - //if they are - if (storingIdentity != null && storingIdentity.getDuration() > 0) - { - //then set the metalmind to "unsealed". Any feruchemist with access to that power can use the metalmind - StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); - StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation - return true; + UUID attunedPlayerID = getAttunedPlayer(itemStack); + UUID playerID = entity.getUUID(); + boolean noAttunedPlayer = attunedPlayerID == null; + //only allow unkeyed metalminds if they aren't aluminum + if (noAttunedPlayer && metalType.getMetalType() != Metals.MetalType.ALUMINUM) + { + //No attuned player! Check to see whether they are storing identity + MobEffectInstance storingIdentity = entity.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + //if they are + if (storingIdentity != null && storingIdentity.getDuration() > 0) + { + //then set the metalmind to "unsealed". Any feruchemist with access to that power can use the metalmind + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNKEYED_UUID); + StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unkeyed"); // todo translation + return true; + + } } - } - //if theres no attuned player on the metalmind - //or if the player is attuned to the metalmind - //or if the metalmind is unsealed (anyone can access) - if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNSEALED_UUID) == 0) - { - if (noAttunedPlayer && getCharge(itemStack) > 0) + //if theres no attuned player on the metalmind + //or if the player is attuned to the metalmind + //or if the metalmind is unsealed (anyone can access) + if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNKEYED_UUID) == 0) { - setAttunedPlayer(itemStack, entity); - setAttunedPlayerName(itemStack, entity); + if (noAttunedPlayer && getCharge(itemStack) > 0) + { + setAttunedPlayer(itemStack, entity); + setAttunedPlayerName(itemStack, entity); + } + //auto success if that player is already attuned + return true; } - //auto success if that player is already attuned - return true; - } + } return false; } diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index 66de199be..cec99d180 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -159,7 +159,7 @@ public static ItemStack adjustChargeExact(Player player, int adjustValue, boolea final UUID attunedPlayer = chargeItemSlot.getAttunedPlayer(stackInSlot); if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not || //or if the player is trying to store in an unsealed metalmind but have identity - adjustValue < 0 && !isStoringIdentity && attunedPlayer != null && attunedPlayer.compareTo(Constants.NBT.UNSEALED_UUID) == 0) + adjustValue < 0 && !isStoringIdentity && attunedPlayer != null && attunedPlayer.compareTo(Constants.NBT.UNKEYED_UUID) == 0) { continue; } diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 0f471067a..982d19e14 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -5,12 +5,8 @@ package leaf.cosmere.charge; import leaf.cosmere.cap.entity.ISpiritweb; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.items.MetalmindItem; -import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -19,37 +15,30 @@ public class MetalmindChargeHelper { - public static boolean adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) + public static ItemStack adjustMetalmindChargeExact(ISpiritweb data, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) { - Player player = (Player) data.getLiving(); - ItemStack metalmind = adjustMetalmindChargeExact(player, metalType, chargeToGet, remove, checkPlayer); - boolean success = metalmind != null; - - //extra metalmind logic. - //if we are actually updating the charge inside - //and if we are adding to it (chargeToGet is negative if adding to metalmind) - // and if the metal is nicrosil, which is the storing investiture type. - if (success && remove && chargeToGet < 0 && metalType == Metals.MetalType.NICROSIL) + if (data.getLiving() instanceof Player player) + { + return adjustMetalmindChargeExact(player, metalType, chargeToGet, remove, checkPlayer); + } + else { - //player is storing investiture, - //set the powers they have to the stack. + return null; + } + } - CompoundTag nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); - //for each power the user has access to - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + private static Predicate getIsItemInvalidMetalmind(Metals.MetalType metalType) + { + return obj -> + { + if (obj.getItem() instanceof final MetalmindItem item) { - //even if it's granted from hemalurgy/temporary - //update the nbt. - //this will add/remove powers based on what the user currently has. - //todo, come back to this later when more sleep. bugs me about losing potential stored powers - if (data.hasManifestation(manifestation)) - { - nbt.putDouble(manifestation.getName(), manifestation.getStrength(data)); - } - } - } - return success; + //Correct metal or harmonium which I'm using as universal + return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; + } + return false; + }; } public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) @@ -68,18 +57,4 @@ public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalTy return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); } - - private static Predicate getIsItemInvalidMetalmind(Metals.MetalType metalType) - { - return obj -> - { - if (obj.getItem() instanceof final MetalmindItem item) - { - - //Correct metal or harmonium which I'm using as universal - return item.getMetalType() != metalType && item.getMetalType() != Metals.MetalType.HARMONIUM; - } - return false; - }; - } } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index eacaa278a..45ec4e55d 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -41,7 +41,7 @@ public static class NBT public static final String ATTUNED_PLAYER_NAME = "attuned_player_name"; - public static final UUID UNSEALED_UUID = UUID.fromString("422fc419-1e39-4eac-ac01-6fc98512c122"); + public static final UUID UNKEYED_UUID = UUID.fromString("422fc419-1e39-4eac-ac01-6fc98512c122"); public static final UUID ALUMINUM_UUID = UUID.fromString("8da98b83-be5e-4b34-b51e-5fdd79700893"); } diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 5a4fd2edd..9d416d004 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -14,10 +14,13 @@ import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; @@ -61,38 +64,6 @@ public Multimap getAttributeModifiers(SlotContext ((IHemalurgicInfo) (stack.getItem())).getHemalurgicAttributes(attributeModifiers, stack, metalType); } - //todo better nicrosil tracking. - if (metalType == Metals.MetalType.NICROSIL || metalType == Metals.MetalType.HARMONIUM) - { - CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); - //for each power the user has access to - - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) - { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) - { - continue; - } - - if (CompoundNBTHelper.getDouble(nbt, manifestationName, 0) > 0) - { - UUID someUUID = UUID.nameUUIDFromBytes((manifestationName + uuid.toString()).getBytes()); - attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), - new AttributeModifier( - someUUID, - manifestationName, - CompoundNBTHelper.getDouble( - nbt, - manifestationName, - 0), - AttributeModifier.Operation.ADDITION)); - - } - } - } - return attributeModifiers; } } diff --git a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java index 335e30d6c..338d7b919 100644 --- a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java @@ -57,7 +57,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) item.setCharge(stack, (int) Mth.lerp(strengthLevel / 10, 1, maxCharge)); - StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNSEALED_UUID); + StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNKEYED_UUID); StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation return stack; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 68f15d1b4..5213d4738 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -125,7 +125,7 @@ public void tick(ISpiritweb data) { //todo config variable int secondsOfFeruchemyToAdd = 5; - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) + if (null != MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) { //compound successful } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index d288d741e..bb6b35e47 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -17,6 +17,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.registries.RegistryObject; public class FeruchemyBase extends ManifestationBase implements IHasMetalType @@ -101,7 +102,8 @@ else if (mode > 0) return; } - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) + final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); + if (metalmind != null)//success { MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 2812ea50c..005149a44 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -4,13 +4,27 @@ package leaf.cosmere.manifestation.feruchemy; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.charge.MetalmindChargeHelper; +import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.EffectsRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.CompoundNBTHelper; import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.nbt.CompoundTag; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; //storing all the available powers on the user individually @@ -73,12 +87,134 @@ else if (mode > 0) return; } - if (MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true)) + final ItemStack itemStack = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); + if (itemStack != null) { MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); livingEntity.addEffect(currentEffect); + + //storing + if (mode > 0) + { + checkStoreNicrosil(data, itemStack); + } + //tapping + else + { + checkTapNicrosil(data, itemStack); + } + } + else + { + //this will clear call onModeChange and then clear nicrosil powers. + data.setMode(this, 0); + } + + } + + @Override + public void onModeChange(ISpiritweb data) + { + super.onModeChange(data); + + if (getMode(data) == 0) + { + //clear + clearNicrosilPowers(data); + } + } + + private void clearNicrosilPowers(ISpiritweb data) + { + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String manifestationName = manifestation.getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + continue; + } + + final Attribute pAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); + final AttributeInstance attribute = data.getLiving().getAttribute(pAttribute); + if (attribute != null) + { + attribute.removeModifier(data.getLiving().getUUID()); + attribute.removeModifier(Constants.NBT.UNKEYED_UUID); + } + } + } + + private static void checkStoreNicrosil(ISpiritweb data, ItemStack metalmind) + { + //extra metalmind logic. + //if we are actually updating the charge inside + //and if we are adding to it (chargeToGet is negative if adding to metalmind) + // and if the metal is nicrosil, which is the storing investiture type. + //player is storing investiture, + //set the powers they have to the stack. + + CompoundTag nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); + MobEffectInstance storingIdentity = data.getLiving().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ALUMINUM).get()); + boolean isStoringIdentity = (storingIdentity != null && storingIdentity.getDuration() > 0); + + //set unkeyed if no identity set + if (!nbt.contains("identity") && isStoringIdentity) + { + nbt.putUUID("identity", Constants.NBT.UNKEYED_UUID); + } + else if (!nbt.contains("identity") || (nbt.getUUID("identity").compareTo(Constants.NBT.UNKEYED_UUID) == 0)) + { + nbt.putUUID("identity", data.getLiving().getUUID()); + } + + //for each power the user has access to + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + //even if it's granted from hemalurgy/temporary + //update the nbt. + //this will add/remove powers based on what the user currently has. + if (data.hasManifestation(manifestation)) + { + nbt.putDouble(manifestation.getName(), manifestation.getStrength(data)); + } + //remove if not available + else if (nbt.contains(manifestation.getName())) + { + nbt.remove(manifestation.getName()); + } + } + } + + private static void checkTapNicrosil(ISpiritweb data, ItemStack metalmind) + { + //todo better nicrosil tracking. + Multimap attributeModifiers = LinkedHashMultimap.create(); + CompoundTag nbt = metalmind.getOrCreateTagElement("StoredInvestiture"); + //for each power the user has access to + //todo add the stored investiture identity to spiritweb data if not there already? + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String manifestationName = manifestation.getName(); + if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || !AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + continue; + } + + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + new AttributeModifier( + nbt.getUUID("identity"), + manifestationName, + CompoundNBTHelper.getDouble( + nbt, + manifestationName, + 0), + AttributeModifier.Operation.ADDITION)); + } + data.getLiving().getAttributes().addTransientAttributeModifiers(attributeModifiers); } } diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index c09252bfc..4953a304b 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -48,7 +48,6 @@ else if (message.dir != 0) data.setMode(message.manifestation, newMode); } - message.manifestation.onModeChange(data); data.syncToClients(null); })); context.setPacketHandled(true); From 169ea18d45a7f822d7cc20b855ec0f3e79600958 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 25 May 2022 22:34:50 +1200 Subject: [PATCH 0157/1090] Attempts at making metal traders not so imbalanced --- .../leaf/cosmere/handlers/CommonEvents.java | 110 +++++++++++++----- 1 file changed, 81 insertions(+), 29 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index eb355f264..77541b4db 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -16,6 +16,7 @@ import net.minecraft.world.entity.npc.VillagerTrades; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.GenerationStep; import net.minecraftforge.common.BasicItemListing; @@ -84,49 +85,100 @@ public static void registerTrades(VillagerTradesEvent event) switch (i) { case 1: - for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; + { + addNuggetTrades(tradesForLevel, Rarity.COMMON); + } + break; case 2: - for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; + { + addBlendTrades(tradesForLevel, Rarity.COMMON); + } + break; case 3: - tradesForLevel.add(makeTrade(ItemsRegistry.METAL_VIAL.get())); - break; + { + addNuggetTrades(tradesForLevel, Rarity.UNCOMMON); + addBlendTrades(tradesForLevel, Rarity.COMMON); + + ItemStack itemStackForSale = new ItemStack(ItemsRegistry.METAL_VIAL.get(), 1); + tradesForLevel.add(makeTrade(itemStackForSale)); + } + break; case 4: - for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) - { - tradesForLevel.add(makeTrade(item.get())); - } - break; + { + addNuggetTrades(tradesForLevel, Rarity.RARE); + addRawOreTrades(tradesForLevel, Rarity.COMMON); + } + break; case 5: - for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) - { - tradesForLevel.add(makeTrade(item.get().asItem())); - } - break; + { + addNuggetTrades(tradesForLevel, Rarity.EPIC); + addOreTrades(tradesForLevel, Rarity.COMMON); + } + break; } } } } + private static void addNuggetTrades(List tradesForLevel, Rarity rarity) + { + for (RegistryObject item : ItemsRegistry.METAL_NUGGETS.values()) + { + if (item.get().getRarity(ItemStack.EMPTY) == rarity) + { + ItemStack itemStackForSale = new ItemStack(item.get(), 1); + tradesForLevel.add(makeTrade(itemStackForSale)); + } + } + } + + private static void addBlendTrades(List tradesForLevel, Rarity rarity) + { + for (RegistryObject item : ItemsRegistry.METAL_RAW_BLEND.values()) + { + if (item.get().getRarity(ItemStack.EMPTY) == rarity) + { + ItemStack itemStackForSale = new ItemStack(item.get(), 1); + tradesForLevel.add(makeTrade(itemStackForSale)); + } + } + } + + private static void addRawOreTrades(List tradesForLevel, Rarity rarity) + { + for (RegistryObject item : ItemsRegistry.METAL_RAW_ORE.values()) + { + if (item.get().getRarity(ItemStack.EMPTY) == rarity) + { + ItemStack itemStackForSale = new ItemStack(item.get(), 1); + tradesForLevel.add(makeTrade(itemStackForSale)); + } + } + } + + private static void addOreTrades(List tradesForLevel, Rarity rarity) + { + for (RegistryObject item : BlocksRegistry.METAL_ORE.values()) + { + if (item.get().asItem().getRarity(ItemStack.EMPTY) == rarity) + { + ItemStack itemStackForSale = new ItemStack(item.get().asItem(), 1); + tradesForLevel.add(makeTrade(itemStackForSale)); + } + } + } + - private static VillagerTrades.ItemListing makeTrade(Item item) + private static VillagerTrades.ItemListing makeTrade(ItemStack itemStack) { - ItemStack itemStackForSale = new ItemStack(item, 1); - itemStackForSale.setCount(getCount(itemStackForSale)); + itemStack.setCount(getCount(itemStack)); return new BasicItemListing( - getCost(itemStackForSale), - itemStackForSale, - getMaxTradesPerDay(itemStackForSale), - getXpPerTrade(itemStackForSale)); + getCost(itemStack), + itemStack, + getMaxTradesPerDay(itemStack), + getXpPerTrade(itemStack)); } From 1515ebbf8dd9e055fdf6fea404345488de175115 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 25 May 2022 22:35:08 +1200 Subject: [PATCH 0158/1090] Some set up for proper advancements --- src/main/generated/.cache/cache | 74 +++++++------- .../generated/assets/cosmere/lang/en_us.json | 98 +++++++++++++++++++ .../advancements/allomancy/aluminum.json | 20 ++-- .../advancements/allomancy/bendalloy.json | 20 ++-- .../cosmere/advancements/allomancy/brass.json | 20 ++-- .../advancements/allomancy/bronze.json | 20 ++-- .../advancements/allomancy/cadmium.json | 20 ++-- .../advancements/allomancy/chromium.json | 20 ++-- .../advancements/allomancy/copper.json | 20 ++-- .../advancements/allomancy/duralumin.json | 20 ++-- .../advancements/allomancy/electrum.json | 20 ++-- .../cosmere/advancements/allomancy/gold.json | 20 ++-- .../cosmere/advancements/allomancy/iron.json | 20 ++-- .../advancements/allomancy/nicrosil.json | 20 ++-- .../advancements/allomancy/pewter.json | 20 ++-- .../cosmere/advancements/allomancy/root.json | 2 +- .../cosmere/advancements/allomancy/steel.json | 20 ++-- .../cosmere/advancements/allomancy/tin.json | 20 ++-- .../cosmere/advancements/allomancy/zinc.json | 20 ++-- .../cosmere/advancements/core/mine_stone.json | 36 ------- .../data/cosmere/advancements/core/root.json | 29 ------ .../advancements/feruchemy/aluminum.json | 20 ++-- .../advancements/feruchemy/bendalloy.json | 20 ++-- .../cosmere/advancements/feruchemy/brass.json | 20 ++-- .../advancements/feruchemy/bronze.json | 20 ++-- .../advancements/feruchemy/cadmium.json | 20 ++-- .../advancements/feruchemy/chromium.json | 20 ++-- .../advancements/feruchemy/copper.json | 20 ++-- .../advancements/feruchemy/duralumin.json | 20 ++-- .../advancements/feruchemy/electrum.json | 20 ++-- .../cosmere/advancements/feruchemy/gold.json | 20 ++-- .../cosmere/advancements/feruchemy/iron.json | 20 ++-- .../advancements/feruchemy/nicrosil.json | 20 ++-- .../advancements/feruchemy/pewter.json | 20 ++-- .../cosmere/advancements/feruchemy/root.json | 2 +- .../cosmere/advancements/feruchemy/steel.json | 20 ++-- .../cosmere/advancements/feruchemy/tin.json | 20 ++-- .../cosmere/advancements/feruchemy/zinc.json | 20 ++-- .../cosmere/advancements/hemalurgy/root.json | 2 +- .../datagen/advancements/AdvancementGen.java | 2 +- .../advancements/AllomancyAdvancements.java | 58 ++++++----- .../advancements/FeruchemyAdvancements.java | 52 ++++++---- .../advancements/HemalurgyAdvancements.java | 34 +++++-- .../cosmere/datagen/language/EngLangGen.java | 32 ++++-- 44 files changed, 638 insertions(+), 423 deletions(-) delete mode 100644 src/main/generated/data/cosmere/advancements/core/mine_stone.json delete mode 100644 src/main/generated/data/cosmere/advancements/core/root.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index f9f70f0e9..471ff43d6 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -95048da1f25e35ec0585651cde6afe13b6b4613c assets/cosmere/lang/en_us.json +1cc91f8c85e32c6ba92e082cfcbc9ae8a7c53e10 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -250,43 +250,41 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.j 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/zircon_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/zircon_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/zircon_mark.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/aluminum.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bendalloy.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/brass.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/bronze.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/cadmium.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/chromium.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/copper.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/duralumin.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/electrum.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/gold.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/iron.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/nicrosil.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/pewter.json -f4b3993f461f82b48ff30eb6eb28b0a99721213c data/cosmere/advancements/allomancy/root.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/steel.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/tin.json -fe794ba4f2e24441b446fa10062ca2b88654c7f3 data/cosmere/advancements/allomancy/zinc.json -5be2dd766b670c65d5a918b91b782c924d981ec8 data/cosmere/advancements/core/mine_stone.json -8111d290678c7f53e005d8aeb84d73d23cade9fe data/cosmere/advancements/core/root.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/aluminum.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bendalloy.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/brass.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/bronze.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/cadmium.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/chromium.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/copper.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/duralumin.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/electrum.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/gold.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/iron.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/nicrosil.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/pewter.json -0dd7fc386c7db8eb1b7324caba41486e8bbc60b8 data/cosmere/advancements/feruchemy/root.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/steel.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/tin.json -bf65ad27077038613ee6c86ada5fc06db7f3ddf0 data/cosmere/advancements/feruchemy/zinc.json -a398a16dddf60016e211e242f05f653364890dec data/cosmere/advancements/hemalurgy/root.json +96c40fa6beeac6aa79a7f28854f4bbce81815df9 data/cosmere/advancements/allomancy/aluminum.json +f5317fefdf760645db525fcc47ce8fe1d8c8ca31 data/cosmere/advancements/allomancy/bendalloy.json +0d5a25d3f85fcadd1e130c4df78b001a5ef22543 data/cosmere/advancements/allomancy/brass.json +e1c39b8b9f910a627f6b4d576081822a4fa08a02 data/cosmere/advancements/allomancy/bronze.json +a1f195230e96396f0c9d22b063f6b10dde4f09cd data/cosmere/advancements/allomancy/cadmium.json +42ce229ba4663d96ec57655c9d646af6a03d3afe data/cosmere/advancements/allomancy/chromium.json +d1849f16b8304d2f5646273377c4bb1383882684 data/cosmere/advancements/allomancy/copper.json +3f9cbd894996f9132aca1cabdfd9db950cbe182f data/cosmere/advancements/allomancy/duralumin.json +4984b45057f8c5ecd9dd14692f749ad95c946675 data/cosmere/advancements/allomancy/electrum.json +0a1d3c920e4fcee881086af5d769a2c6649bba43 data/cosmere/advancements/allomancy/gold.json +2c1da72ce22823962ab5479a06e9058c00c969c4 data/cosmere/advancements/allomancy/iron.json +9cc2c4003e1b76c210cd655e8a204af2cd9e8a95 data/cosmere/advancements/allomancy/nicrosil.json +896f992b79f6c49be28ce181f927c3aa441cc9f3 data/cosmere/advancements/allomancy/pewter.json +8d4a40bce79e93646aa1423bddea220a1eadd0d8 data/cosmere/advancements/allomancy/root.json +d7d71d5dcf86b9cab0fe3a2d7fcbabb839d4c3bc data/cosmere/advancements/allomancy/steel.json +a00bc9ec54a115174500033b84109a8f57cc2843 data/cosmere/advancements/allomancy/tin.json +f4ec216c8f36a5f4a0996c2d0e0b92d04641d4c4 data/cosmere/advancements/allomancy/zinc.json +8f190aaec5a94b9e41ec27c475a8ddce1a56a641 data/cosmere/advancements/feruchemy/aluminum.json +43423c8432012d4fa5b0c334335569b0dde64aab data/cosmere/advancements/feruchemy/bendalloy.json +7d65c352d68349183e449120ed4f0c3dab7e4c83 data/cosmere/advancements/feruchemy/brass.json +9e4a82c403d39b64081a3d207d4ec6484176ad73 data/cosmere/advancements/feruchemy/bronze.json +88d687cbfb6b2424f3a23a2d5ceed591536723cb data/cosmere/advancements/feruchemy/cadmium.json +ff9acb92472823e21436e501e7454f320e31e366 data/cosmere/advancements/feruchemy/chromium.json +a7daef83754ab27ec29c8dba451657715dabfd68 data/cosmere/advancements/feruchemy/copper.json +28528b13db9507ac9a23ffebc3a16aae2039ea54 data/cosmere/advancements/feruchemy/duralumin.json +865365b1dea6479ac4f0d98dd250739caf3cabc4 data/cosmere/advancements/feruchemy/electrum.json +e142e67778430e2ab15067fde73752e2d0787aa2 data/cosmere/advancements/feruchemy/gold.json +251ee557f0f19d0f0f5c6e38f466fbb17baf0196 data/cosmere/advancements/feruchemy/iron.json +d4544388bd07f793fbcf44462d28ad14af135ead data/cosmere/advancements/feruchemy/nicrosil.json +f9373501c72f4537326937ac026b28e4e33a690d data/cosmere/advancements/feruchemy/pewter.json +1d3369fef55ca2d61922ec753f616c490a7dc917 data/cosmere/advancements/feruchemy/root.json +a1464736fabec43b1738e739b3aaea3f923559b7 data/cosmere/advancements/feruchemy/steel.json +0a2228cd27ec01bdfd4f6de6baee50b8ed6a4ea8 data/cosmere/advancements/feruchemy/tin.json +71a61aad8bca1d1385bcbd26d65e1246dcdf8801 data/cosmere/advancements/feruchemy/zinc.json +adb9ca0a881ba9f6a60c1c3c185d71f44544cdb4 data/cosmere/advancements/hemalurgy/root.json ab512e49bf64eb8c2e3b799eec207ae80ca0e223 data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json 8caa4c55f7de56c8f4a0c9552aa1976a1f9ef3c8 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json 6b9f11fdeeeadbcc31481a4d52a5c19a8ec1188c data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 43c7d8ca5..4c29a7305 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -1,4 +1,102 @@ { + "advancements.cosmere.allomancy.aluminum.description": "Test description: Allomantic Aluminum", + "advancements.cosmere.allomancy.aluminum.title": "Allomantic Aluminum", + "advancements.cosmere.allomancy.bendalloy.description": "Test description: Allomantic Bendalloy", + "advancements.cosmere.allomancy.bendalloy.title": "Allomantic Bendalloy", + "advancements.cosmere.allomancy.brass.description": "Test description: Allomantic Brass", + "advancements.cosmere.allomancy.brass.title": "Allomantic Brass", + "advancements.cosmere.allomancy.bronze.description": "Test description: Allomantic Bronze", + "advancements.cosmere.allomancy.bronze.title": "Allomantic Bronze", + "advancements.cosmere.allomancy.cadmium.description": "Test description: Allomantic Cadmium", + "advancements.cosmere.allomancy.cadmium.title": "Allomantic Cadmium", + "advancements.cosmere.allomancy.chromium.description": "Test description: Allomantic Chromium", + "advancements.cosmere.allomancy.chromium.title": "Allomantic Chromium", + "advancements.cosmere.allomancy.copper.description": "Test description: Allomantic Copper", + "advancements.cosmere.allomancy.copper.title": "Allomantic Copper", + "advancements.cosmere.allomancy.description": "Test description: Allomancy", + "advancements.cosmere.allomancy.duralumin.description": "Test description: Allomantic Duralumin", + "advancements.cosmere.allomancy.duralumin.title": "Allomantic Duralumin", + "advancements.cosmere.allomancy.electrum.description": "Test description: Allomantic Electrum", + "advancements.cosmere.allomancy.electrum.title": "Allomantic Electrum", + "advancements.cosmere.allomancy.gold.description": "Test description: Allomantic Gold", + "advancements.cosmere.allomancy.gold.title": "Allomantic Gold", + "advancements.cosmere.allomancy.iron.description": "Test description: Allomantic Iron", + "advancements.cosmere.allomancy.iron.title": "Allomantic Iron", + "advancements.cosmere.allomancy.nicrosil.description": "Test description: Allomantic Nicrosil", + "advancements.cosmere.allomancy.nicrosil.title": "Allomantic Nicrosil", + "advancements.cosmere.allomancy.pewter.description": "Test description: Allomantic Pewter", + "advancements.cosmere.allomancy.pewter.title": "Allomantic Pewter", + "advancements.cosmere.allomancy.steel.description": "Test description: Allomantic Steel", + "advancements.cosmere.allomancy.steel.title": "Allomantic Steel", + "advancements.cosmere.allomancy.tin.description": "Test description: Allomantic Tin", + "advancements.cosmere.allomancy.tin.title": "Allomantic Tin", + "advancements.cosmere.allomancy.title": "Allomancy", + "advancements.cosmere.allomancy.zinc.description": "Test description: Allomantic Zinc", + "advancements.cosmere.allomancy.zinc.title": "Allomantic Zinc", + "advancements.cosmere.awakener.description": "Test description: Awakener", + "advancements.cosmere.awakener.title": "Awakener", + "advancements.cosmere.elantrian.description": "Test description: Elantrian", + "advancements.cosmere.elantrian.title": "Elantrian", + "advancements.cosmere.feruchemy.aluminum.description": "Test description: Feruchemical Aluminum", + "advancements.cosmere.feruchemy.aluminum.title": "Feruchemical Aluminum", + "advancements.cosmere.feruchemy.bendalloy.description": "Test description: Feruchemical Bendalloy", + "advancements.cosmere.feruchemy.bendalloy.title": "Feruchemical Bendalloy", + "advancements.cosmere.feruchemy.brass.description": "Test description: Feruchemical Brass", + "advancements.cosmere.feruchemy.brass.title": "Feruchemical Brass", + "advancements.cosmere.feruchemy.bronze.description": "Test description: Feruchemical Bronze", + "advancements.cosmere.feruchemy.bronze.title": "Feruchemical Bronze", + "advancements.cosmere.feruchemy.cadmium.description": "Test description: Feruchemical Cadmium", + "advancements.cosmere.feruchemy.cadmium.title": "Feruchemical Cadmium", + "advancements.cosmere.feruchemy.chromium.description": "Test description: Feruchemical Chromium", + "advancements.cosmere.feruchemy.chromium.title": "Feruchemical Chromium", + "advancements.cosmere.feruchemy.copper.description": "Test description: Feruchemical Copper", + "advancements.cosmere.feruchemy.copper.title": "Feruchemical Copper", + "advancements.cosmere.feruchemy.description": "Test description: Feruchemy", + "advancements.cosmere.feruchemy.duralumin.description": "Test description: Feruchemical Duralumin", + "advancements.cosmere.feruchemy.duralumin.title": "Feruchemical Duralumin", + "advancements.cosmere.feruchemy.electrum.description": "Test description: Feruchemical Electrum", + "advancements.cosmere.feruchemy.electrum.title": "Feruchemical Electrum", + "advancements.cosmere.feruchemy.gold.description": "Test description: Feruchemical Gold", + "advancements.cosmere.feruchemy.gold.title": "Feruchemical Gold", + "advancements.cosmere.feruchemy.iron.description": "Test description: Feruchemical Iron", + "advancements.cosmere.feruchemy.iron.title": "Feruchemical Iron", + "advancements.cosmere.feruchemy.nicrosil.description": "Test description: Feruchemical Nicrosil", + "advancements.cosmere.feruchemy.nicrosil.title": "Feruchemical Nicrosil", + "advancements.cosmere.feruchemy.pewter.description": "Test description: Feruchemical Pewter", + "advancements.cosmere.feruchemy.pewter.title": "Feruchemical Pewter", + "advancements.cosmere.feruchemy.steel.description": "Test description: Feruchemical Steel", + "advancements.cosmere.feruchemy.steel.title": "Feruchemical Steel", + "advancements.cosmere.feruchemy.tin.description": "Test description: Feruchemical Tin", + "advancements.cosmere.feruchemy.tin.title": "Feruchemical Tin", + "advancements.cosmere.feruchemy.title": "Feruchemy", + "advancements.cosmere.feruchemy.zinc.description": "Test description: Feruchemical Zinc", + "advancements.cosmere.feruchemy.zinc.title": "Feruchemical Zinc", + "advancements.cosmere.none.description": "Test description: None", + "advancements.cosmere.none.none.description": "Test description: None", + "advancements.cosmere.none.none.title": "None", + "advancements.cosmere.none.title": "None", + "advancements.cosmere.radiant.description": "Test description: Radiant", + "advancements.cosmere.radiant.surgebinding_abrasion.description": "Test description: Surgebinding Abrasion", + "advancements.cosmere.radiant.surgebinding_abrasion.title": "Surgebinding Abrasion", + "advancements.cosmere.radiant.surgebinding_adhesion.description": "Test description: Surgebinding Adhesion", + "advancements.cosmere.radiant.surgebinding_adhesion.title": "Surgebinding Adhesion", + "advancements.cosmere.radiant.surgebinding_cohesion.description": "Test description: Surgebinding Cohesion", + "advancements.cosmere.radiant.surgebinding_cohesion.title": "Surgebinding Cohesion", + "advancements.cosmere.radiant.surgebinding_division.description": "Test description: Surgebinding Division", + "advancements.cosmere.radiant.surgebinding_division.title": "Surgebinding Division", + "advancements.cosmere.radiant.surgebinding_gravitation.description": "Test description: Surgebinding Gravitation", + "advancements.cosmere.radiant.surgebinding_gravitation.title": "Surgebinding Gravitation", + "advancements.cosmere.radiant.surgebinding_illumination.description": "Test description: Surgebinding Illumination", + "advancements.cosmere.radiant.surgebinding_illumination.title": "Surgebinding Illumination", + "advancements.cosmere.radiant.surgebinding_progression.description": "Test description: Surgebinding Progression", + "advancements.cosmere.radiant.surgebinding_progression.title": "Surgebinding Progression", + "advancements.cosmere.radiant.surgebinding_tension.description": "Test description: Surgebinding Tension", + "advancements.cosmere.radiant.surgebinding_tension.title": "Surgebinding Tension", + "advancements.cosmere.radiant.surgebinding_transformation.description": "Test description: Surgebinding Transformation", + "advancements.cosmere.radiant.surgebinding_transformation.title": "Surgebinding Transformation", + "advancements.cosmere.radiant.surgebinding_transportation.description": "Test description: Surgebinding Transportation", + "advancements.cosmere.radiant.surgebinding_transportation.title": "Surgebinding Transportation", + "advancements.cosmere.radiant.title": "Radiant", "argument.cosmere.power.invalid": "Invalid power", "block.cosmere.aluminum_block": "Aluminum Block", "block.cosmere.aluminum_ore": "Aluminum Ore", diff --git a/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json index 2ad158432..0a0230ae2 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:aluminum_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.aluminum.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.aluminum.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:aluminum_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json index 2ad158432..1b2212f29 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:bendalloy_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.bendalloy.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.bendalloy.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:bendalloy_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/brass.json b/src/main/generated/data/cosmere/advancements/allomancy/brass.json index 2ad158432..b6c0b2c02 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/brass.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/brass.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:brass_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.brass.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.brass.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:brass_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bronze.json b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json index 2ad158432..dbf7a4a9b 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/bronze.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:bronze_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.bronze.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.bronze.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:bronze_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json index 2ad158432..d8d962050 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:cadmium_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.cadmium.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.cadmium.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:cadmium_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/chromium.json b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json index 2ad158432..bc7e5f409 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/chromium.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:chromium_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.chromium.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.chromium.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:chromium_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/copper.json b/src/main/generated/data/cosmere/advancements/allomancy/copper.json index 2ad158432..6758775c8 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/copper.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/copper.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:copper_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.copper.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.copper.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:copper_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json index 2ad158432..1f5d85376 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:duralumin_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.duralumin.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.duralumin.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:duralumin_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/electrum.json b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json index 2ad158432..ae8bf70fc 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/electrum.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:electrum_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.electrum.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.electrum.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:electrum_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/gold.json b/src/main/generated/data/cosmere/advancements/allomancy/gold.json index 2ad158432..78b14cc57 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/gold.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/gold.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "minecraft:gold_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.gold.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.gold.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "minecraft:gold_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/iron.json b/src/main/generated/data/cosmere/advancements/allomancy/iron.json index 2ad158432..02860ff68 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/iron.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/iron.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "minecraft:iron_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.iron.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.iron.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "minecraft:iron_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json index 2ad158432..e5b5fbaeb 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:nicrosil_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.nicrosil.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.nicrosil.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:nicrosil_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/pewter.json b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json index 2ad158432..8dd840de9 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/pewter.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:pewter_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.pewter.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.pewter.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:pewter_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/root.json b/src/main/generated/data/cosmere/advancements/allomancy/root.json index 51a5facb1..285d5cf93 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/root.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/root.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "cosmere:guide" + "item": "cosmere:metal_vial" }, "title": { "translate": "advancements.cosmere.allomancy.title" diff --git a/src/main/generated/data/cosmere/advancements/allomancy/steel.json b/src/main/generated/data/cosmere/advancements/allomancy/steel.json index 2ad158432..5fefb8e6f 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/steel.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/steel.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:steel_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.steel.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.steel.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:steel_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/tin.json b/src/main/generated/data/cosmere/advancements/allomancy/tin.json index 2ad158432..f5be30f29 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/tin.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/tin.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:tin_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.tin.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.tin.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:tin_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/zinc.json b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json index 2ad158432..221f3aca2 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/zinc.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:allomancy/root", + "parent": "cosmere:allomancy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:zinc_nugget" }, "title": { - "translate": "advancements.cosmere.allomancy.title" + "translate": "advancements.cosmere.allomancy.zinc.title" }, "description": { - "translate": "advancements.cosmere.allomancy.description" + "translate": "advancements.cosmere.allomancy.zinc.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:zinc_nugget" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/core/mine_stone.json b/src/main/generated/data/cosmere/advancements/core/mine_stone.json deleted file mode 100644 index e31c867c4..000000000 --- a/src/main/generated/data/cosmere/advancements/core/mine_stone.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "parent": "minecraft:core/root", - "display": { - "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" - }, - "title": { - "translate": "advancements.cosmere.mine_stone.title" - }, - "description": { - "translate": "advancements.cosmere.mine_stone.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "criteria": { - "get_stone": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "minecraft:stone_tool_materials" - } - ] - } - } - }, - "requirements": [ - [ - "get_stone" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/core/root.json b/src/main/generated/data/cosmere/advancements/core/root.json deleted file mode 100644 index a7308ee21..000000000 --- a/src/main/generated/data/cosmere/advancements/core/root.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "display": { - "icon": { - "item": "cosmere:guide" - }, - "title": { - "translate": "advancements.cosmere.root.title" - }, - "description": { - "translate": "advancements.cosmere.root.description" - }, - "frame": "task", - "show_toast": false, - "announce_to_chat": false, - "hidden": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" - }, - "criteria": { - "tick": { - "trigger": "minecraft:tick", - "conditions": {} - } - }, - "requirements": [ - [ - "tick" - ] - ] -} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json index e8cb7a13f..1466bb4a8 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:aluminum_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.aluminum.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.aluminum.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:aluminum_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json index e8cb7a13f..f9724d131 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:bendalloy_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.bendalloy.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.bendalloy.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:bendalloy_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/brass.json b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json index e8cb7a13f..e0377827b 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/brass.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:brass_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.brass.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.brass.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:brass_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json index e8cb7a13f..0ba06f688 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:bronze_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.bronze.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.bronze.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:bronze_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json index e8cb7a13f..d8b042515 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:cadmium_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.cadmium.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.cadmium.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:cadmium_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json index e8cb7a13f..e6bba1336 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:chromium_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.chromium.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.chromium.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:chromium_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/copper.json b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json index e8cb7a13f..96eaf2c72 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/copper.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:copper_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.copper.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.copper.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:copper_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json index e8cb7a13f..761968ca6 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:duralumin_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.duralumin.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.duralumin.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:duralumin_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json index e8cb7a13f..143fb05f5 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:electrum_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.electrum.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.electrum.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:electrum_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/gold.json b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json index e8cb7a13f..64cb184ec 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/gold.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:gold_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.gold.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.gold.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:gold_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/iron.json b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json index e8cb7a13f..ee8a1e24d 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/iron.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:iron_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.iron.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.iron.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:iron_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json index e8cb7a13f..a0563efb7 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:nicrosil_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.nicrosil.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.nicrosil.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:nicrosil_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json index e8cb7a13f..7461fd420 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:pewter_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.pewter.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.pewter.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:pewter_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/root.json b/src/main/generated/data/cosmere/advancements/feruchemy/root.json index 85f331ae7..f0a4cdcf1 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/root.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/root.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "cosmere:guide" + "item": "cosmere:iron_ring_metalmind" }, "title": { "translate": "advancements.cosmere.feruchemy.title" diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/steel.json b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json index e8cb7a13f..019963b93 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/steel.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:steel_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.steel.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.steel.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:steel_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/tin.json b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json index e8cb7a13f..5b8c612b4 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/tin.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:tin_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.tin.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.tin.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:tin_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json index e8cb7a13f..fc6c2c476 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json @@ -1,28 +1,32 @@ { - "parent": "minecraft:feruchemy/root", + "parent": "cosmere:feruchemy/root", "display": { "icon": { - "item": "minecraft:wooden_pickaxe", - "nbt": "{Damage:0}" + "item": "cosmere:zinc_ring_metalmind" }, "title": { - "translate": "advancements.cosmere.feruchemy.title" + "translate": "advancements.cosmere.feruchemy.zinc.title" }, "description": { - "translate": "advancements.cosmere.feruchemy.description" + "translate": "advancements.cosmere.feruchemy.zinc.description" }, "frame": "task", "show_toast": true, "announce_to_chat": true, "hidden": false }, + "rewards": { + "experience": 50 + }, "criteria": { - "get_stone": { + "has_item": { "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { - "tag": "minecraft:stone_tool_materials" + "items": [ + "cosmere:zinc_ring_metalmind" + ] } ] } @@ -30,7 +34,7 @@ }, "requirements": [ [ - "get_stone" + "has_item" ] ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/hemalurgy/root.json b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json index fd659b62f..08233f4af 100644 --- a/src/main/generated/data/cosmere/advancements/hemalurgy/root.json +++ b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json @@ -1,7 +1,7 @@ { "display": { "icon": { - "item": "cosmere:guide" + "item": "cosmere:iron_spike" }, "title": { "translate": "advancements.cosmere.hemalurgy.title" diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java index e51e35161..230bcf315 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java @@ -26,7 +26,7 @@ public class AdvancementGen implements DataProvider private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); private final DataGenerator generator; private final List>> advancements = ImmutableList.of( - new CoreAdvancements(), + //new CoreAdvancements(), new AllomancyAdvancements(), new FeruchemyAdvancements(), new HemalurgyAdvancements() diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index 04024b004..ccb8223c8 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -10,14 +10,16 @@ import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.EntityPredicate; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.advancements.critereon.*; +import net.minecraft.commands.CommandFunction; +import net.minecraft.core.Registry; import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraftforge.registries.RegistryObject; @@ -31,19 +33,24 @@ public AllomancyAdvancements() public void accept(Consumer advancementConsumer) { - String categoryName = "allomancy"; + String tabName = "allomancy"; + + final String titleFormat = "advancements.cosmere.%s.title"; + final String descriptionFormat = "advancements.cosmere.%s.description"; + final String achievementPathFormat = "cosmere:%s/%s"; + Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + .display(ItemsRegistry.METAL_VIAL.get(), + new TranslatableComponent(String.format(titleFormat, tabName)), + new TranslatableComponent(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, - false, - false, - false) + false,//showToast + false,//announceChat + false)//hidden .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); + for (RegistryObject manifestation : ManifestationRegistry.ALLOMANCY_POWERS.values()) { @@ -52,21 +59,24 @@ public void accept(Consumer advancementConsumer) Metals.MetalType metalType = allomancyBase.getMetalType(); String metalName = metalType.getName(); - Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + final Item item = allomancyBase.getMetalType().getNuggetItem(); + Advancement advancement1 = Advancement.Builder.advancement() .parent(root) .display( - Items.WOODEN_PICKAXE, - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), - null, + item, + new TranslatableComponent(String.format(titleFormat, (tabName+"."+metalName))), + new TranslatableComponent(String.format(descriptionFormat, tabName+"."+metalName)), + (ResourceLocation) null, FrameType.TASK, - true, - true, - false) + true, //showToast + true, //announce + false)//hidden .addCriterion( - "get_stone", - InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, categoryName + "/" + metalName); + "has_item", + InventoryChangeTrigger.TriggerInstance.hasItems(item)) + .rewards(new AdvancementRewards(50, new ResourceLocation[0], new ResourceLocation[0], CommandFunction.CacheableFunction.NONE)) + .save(advancementConsumer, String.format(achievementPathFormat, tabName, metalName)); + } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java index 07f761260..bc0973847 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -6,18 +6,22 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.FrameType; import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.commands.CommandFunction; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraftforge.registries.RegistryObject; @@ -31,20 +35,24 @@ public FeruchemyAdvancements() public void accept(Consumer advancementConsumer) { - final String categoryName = "feruchemy"; + String tabName = "feruchemy"; + + final String titleFormat = "advancements.cosmere.%s.title"; + final String descriptionFormat = "advancements.cosmere.%s.description"; + final String achievementPathFormat = "cosmere:%s/%s"; Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + .display(ItemsRegistry.METAL_RINGS.get(Metals.MetalType.IRON).get(), + new TranslatableComponent(String.format(titleFormat, tabName)), + new TranslatableComponent(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, - false, - false, - false) + false,//showToast + false,//announceChat + false)//hidden .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); + for (RegistryObject manifestation : ManifestationRegistry.FERUCHEMY_POWERS.values()) { @@ -53,21 +61,25 @@ public void accept(Consumer advancementConsumer) Metals.MetalType metalType = feruchemyBase.getMetalType(); String metalName = metalType.getName(); - Advancement manifestationObtainedAdvancement = Advancement.Builder.advancement() + + final Item item = metalType.getRingItem(); + Advancement advancement1 = Advancement.Builder.advancement() .parent(root) .display( - Items.WOODEN_PICKAXE, - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), - null, + item, + new TranslatableComponent(String.format(titleFormat, tabName+"."+metalName)), + new TranslatableComponent(String.format(descriptionFormat, tabName+"."+metalName)), + (ResourceLocation) null, FrameType.TASK, - true, - true, - false) + true, //showToast + true, //announce + false)//hidden .addCriterion( - "get_stone", - InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, categoryName + "/" + metalName); + "has_item", + InventoryChangeTrigger.TriggerInstance.hasItems(item)) + .rewards(new AdvancementRewards(50, new ResourceLocation[0], new ResourceLocation[0], CommandFunction.CacheableFunction.NONE)) + .save(advancementConsumer, String.format(achievementPathFormat, tabName, metalName)); + } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java index 003093d0f..602c504cc 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java @@ -4,14 +4,23 @@ package leaf.cosmere.datagen.advancements; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.FrameType; +import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.TickTrigger; +import net.minecraft.commands.CommandFunction; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.registries.RegistryObject; import java.util.function.Consumer; @@ -23,18 +32,25 @@ public HemalurgyAdvancements() public void accept(Consumer advancementConsumer) { - final String categoryName = "hemalurgy"; + String tabName = "hemalurgy"; + + final String titleFormat = "advancements.cosmere.%s.title"; + final String descriptionFormat = "advancements.cosmere.%s.description"; + final String achievementPathFormat = "cosmere:%s/%s"; + Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), + .display(ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), + new TranslatableComponent(String.format(titleFormat, tabName)), + new TranslatableComponent(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, - false, - false, - false) + false,//showToast + false,//announceChat + false)//hidden .addCriterion("spike", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(TagsRegistry.Items.METAL_SPIKE).build())) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, categoryName + "/root"); + .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); + + + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 2e70ac773..4bc400077 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -5,6 +5,7 @@ package leaf.cosmere.datagen.language; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; @@ -88,7 +89,16 @@ else if (item instanceof MetalmindItem) } + + final String titleFormat = "advancements.cosmere.%s.title"; + final String descriptionFormat = "advancements.cosmere.%s.description"; //innate + for (Manifestations.ManifestationTypes value : Manifestations.ManifestationTypes.values()) + { + add(String.format(titleFormat, value.getName()), StringHelper.fixCapitalisation(value.getName())); + add(String.format(descriptionFormat, value.getName()), "Test description: " + StringHelper.fixCapitalisation(value.getName())); + } + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { @@ -102,16 +112,22 @@ else if (item instanceof MetalmindItem) String name = path; String description; + + String tabName = manifestation.getManifestationType().getName(); String metalName = Metals.MetalType.valueOf(manifestation.getPowerID()).get().toString().toLowerCase(Locale.ROOT); switch (manifestation.getManifestationType()) { case ALLOMANCY: name = "Allomantic " + metalName; description = "Users can burn " + metalName; + add(String.format(titleFormat, tabName + "." + metalName), StringHelper.fixCapitalisation(name)); + add(String.format(descriptionFormat, tabName + "." + metalName), "Test description: " + StringHelper.fixCapitalisation(name)); break; case FERUCHEMY: name = "Feruchemical " + metalName; description = "Users can tap " + metalName; + add(String.format(titleFormat, tabName + "." + metalName), StringHelper.fixCapitalisation(name)); + add(String.format(descriptionFormat, tabName + "." + metalName), "Test description: " + StringHelper.fixCapitalisation(name)); break; case RADIANT: case ELANTRIAN: @@ -119,6 +135,8 @@ else if (item instanceof MetalmindItem) default: case NONE: description = "No Special Powers"; + add(String.format(titleFormat, tabName + "." + name), StringHelper.fixCapitalisation(name)); + add(String.format(descriptionFormat, tabName + "." + name), "Test description: " + StringHelper.fixCapitalisation(name)); break; } @@ -184,13 +202,13 @@ else if (item instanceof MetalmindItem) } add("tooltip.cosmere.metals.contained", "Contained Metals:"); - add("tooltip.cosmere.attribute.iron","+%s Attack Damage"); - add("tooltip.cosmere.attribute.tin","+%s%% Better Night Vision"); - add("tooltip.cosmere.attribute.copper","+%s%% XP"); - add("tooltip.cosmere.attribute.zinc","+%s%% Emotional Fortitude"); - add("tooltip.cosmere.attribute.duralumin","");//todo hemalurgic connection/identity - add("tooltip.cosmere.attribute.chromium","+%s%% Luck"); - add("tooltip.cosmere.attribute.nicrosil","");//todo hemalurgic investiture + add("tooltip.cosmere.attribute.iron", "+%s Attack Damage"); + add("tooltip.cosmere.attribute.tin", "+%s%% Better Night Vision"); + add("tooltip.cosmere.attribute.copper", "+%s%% XP"); + add("tooltip.cosmere.attribute.zinc", "+%s%% Emotional Fortitude"); + add("tooltip.cosmere.attribute.duralumin", "");//todo hemalurgic connection/identity + add("tooltip.cosmere.attribute.chromium", "+%s%% Luck"); + add("tooltip.cosmere.attribute.nicrosil", "");//todo hemalurgic investiture //ItemGroups/Tabs add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); From 60dc1ac2057397e263355a8aae64086266644ca2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 25 May 2022 22:37:04 +1200 Subject: [PATCH 0159/1090] update version and changelog --- Changelog.md | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 7d48ff31d..cc509b8e7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,13 @@ The Cosmere Project - For 1.16 Minecraft +B36 + +Fixed hemalurgic spikes constantly damaging when used as feruchemical storage. +Fixed aluminum feruchemy so it can't make unkeyed metalminds. +Some progress towards fixing nicrosil metalminds. +Some set up for proper advancements. Currently not triggering correctly. Does not have correct localisation. +Attempts at making metal traders not so imbalanced. + B35 Fix commands not working on server. diff --git a/gradle.properties b/gradle.properties index 78c3752df..40635d5e1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=36 +build_number=37 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 38a5df68c3e4248e0a99b5656a93de6142dda1c5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:10:37 +1200 Subject: [PATCH 0160/1090] Buff compounding --- .../leaf/cosmere/manifestation/allomancy/AllomancyBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 5213d4738..cea904ee0 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -124,7 +124,7 @@ public void tick(ISpiritweb data) if (feruchemyMode != 0 && isActiveTick) { //todo config variable - int secondsOfFeruchemyToAdd = 5; + int secondsOfFeruchemyToAdd = 25; if (null != MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) { //compound successful From cbd0d2b9da2641bcc1248c4bc6f703de7719e987 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:10:48 +1200 Subject: [PATCH 0161/1090] Script clean up --- .../leaf/cosmere/utils/helpers/EntityHelper.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index 8762587a0..bbe4b24b1 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -38,17 +38,8 @@ public static List getLivingEntitiesInRange(LivingEntity selfEntit public static List getEntitiesInRange(Entity entity, int range, boolean includeSelf) { - AABB areaOfEffect = new AABB(entity.blockPosition()); - areaOfEffect = areaOfEffect.expandTowards(range, range, range); - - List entitiesFound = entity.level.getEntitiesOfClass(Entity.class, areaOfEffect); - - if (!includeSelf) - { - entitiesFound.remove(entity); - } - - return entitiesFound; + AABB areaOfEffect = new AABB(entity.blockPosition()).inflate(range, range, range); + return entity.level.getEntitiesOfClass(Entity.class, areaOfEffect, e -> includeSelf || e != entity); } From 07b0b33486f012e8be10a466bb26adf21e03cbf6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:11:33 +1200 Subject: [PATCH 0162/1090] Fixed mod blocks being slow to mine --- .../generated/assets/cosmere/lang/en_us.json | 2 ++ .../tags/blocks/mineable/pickaxe.json | 35 +++++++++++++++++++ .../tags/blocks/needs_iron_tool.json | 35 +++++++++++++++++++ .../java/leaf/cosmere/blocks/MetalBlock.java | 2 +- .../leaf/cosmere/blocks/MetalOreBlock.java | 3 +- .../cosmere/datagen/blocks/BlockTagsGen.java | 8 ++++- .../leaf/cosmere/properties/PropTypes.java | 6 +++- 7 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json create mode 100644 src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 4c29a7305..c79acb5cd 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -176,6 +176,8 @@ "cosmere.tineye": "Tineye", "cosmere.trueself": "Trueself", "cosmere.windwhisperer": "Windwhisperer", + "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", + "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "effect.cosmere.allomancy_boost": "Allomancy Boost", "effect.cosmere.copper_cloud": "Copper Cloud", "effect.cosmere.storing_aluminum": "Storing Aluminum", diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 000000000..bcb808c89 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,35 @@ +{ + "replace": false, + "values": [ + "cosmere:steel_block", + "cosmere:tin_ore", + "cosmere:tin_block", + "cosmere:pewter_block", + "cosmere:zinc_ore", + "cosmere:zinc_block", + "cosmere:brass_block", + "cosmere:copper_block", + "cosmere:bronze_block", + "cosmere:aluminum_ore", + "cosmere:aluminum_block", + "cosmere:duralumin_block", + "cosmere:chromium_ore", + "cosmere:chromium_block", + "cosmere:nicrosil_block", + "cosmere:cadmium_ore", + "cosmere:cadmium_block", + "cosmere:bendalloy_block", + "cosmere:electrum_block", + "cosmere:atium_block", + "cosmere:lerasium_block", + "cosmere:harmonium_block", + "cosmere:malatium_block", + "cosmere:lerasatium_block", + "cosmere:nickel_ore", + "cosmere:nickel_block", + "cosmere:lead_ore", + "cosmere:lead_block", + "cosmere:silver_ore", + "cosmere:silver_block" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json new file mode 100644 index 000000000..bcb808c89 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json @@ -0,0 +1,35 @@ +{ + "replace": false, + "values": [ + "cosmere:steel_block", + "cosmere:tin_ore", + "cosmere:tin_block", + "cosmere:pewter_block", + "cosmere:zinc_ore", + "cosmere:zinc_block", + "cosmere:brass_block", + "cosmere:copper_block", + "cosmere:bronze_block", + "cosmere:aluminum_ore", + "cosmere:aluminum_block", + "cosmere:duralumin_block", + "cosmere:chromium_ore", + "cosmere:chromium_block", + "cosmere:nicrosil_block", + "cosmere:cadmium_ore", + "cosmere:cadmium_block", + "cosmere:bendalloy_block", + "cosmere:electrum_block", + "cosmere:atium_block", + "cosmere:lerasium_block", + "cosmere:harmonium_block", + "cosmere:malatium_block", + "cosmere:lerasatium_block", + "cosmere:nickel_ore", + "cosmere:nickel_block", + "cosmere:lead_ore", + "cosmere:lead_block", + "cosmere:silver_ore", + "cosmere:silver_block" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/blocks/MetalBlock.java b/src/main/java/leaf/cosmere/blocks/MetalBlock.java index a0026fce3..87d796db6 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalBlock.java @@ -15,7 +15,7 @@ public class MetalBlock extends BaseBlock implements IHasMetalType public MetalBlock(Metals.MetalType metalType) { - super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); + super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 3F, 3F); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java index 32bb4ad09..c5471f005 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java @@ -7,6 +7,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.properties.PropTypes; +import net.minecraft.util.valueproviders.UniformInt; import net.minecraft.world.level.block.OreBlock; public class MetalOreBlock extends OreBlock implements IHasMetalType @@ -15,7 +16,7 @@ public class MetalOreBlock extends OreBlock implements IHasMetalType public MetalOreBlock(Metals.MetalType metalType) { - super(PropTypes.Blocks.METAL.get()); + super(PropTypes.Blocks.METAL.get().strength(3f, 3f).requiresCorrectToolForDrops(), UniformInt.of(0, 2)); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 8bf48e0cb..212775571 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -14,6 +14,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.OreBlock; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; @@ -40,13 +41,18 @@ protected void addTags() if (metalType.hasOre()) { - add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), metalType.getOreBlock()); + final OreBlock oreBlock = metalType.getOreBlock(); + add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), oreBlock); + add(BlockTags.MINEABLE_WITH_PICKAXE, oreBlock); + add(BlockTags.NEEDS_IRON_TOOL, oreBlock); } //put metal type tag on block MetalBlock metalBlock = metalType.getBlock(); add(TagsRegistry.Blocks.METAL_BLOCK_TAGS.get(metalType), metalBlock); + add(BlockTags.MINEABLE_WITH_PICKAXE, metalBlock); + add(BlockTags.NEEDS_IRON_TOOL, metalBlock); //put storage block tag on block, though I don't know what it is for. add(Tags.Blocks.STORAGE_BLOCKS, metalBlock); //put beacon tag on block diff --git a/src/main/java/leaf/cosmere/properties/PropTypes.java b/src/main/java/leaf/cosmere/properties/PropTypes.java index 96fb42245..e9b833b62 100644 --- a/src/main/java/leaf/cosmere/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/properties/PropTypes.java @@ -17,7 +17,11 @@ public class PropTypes public static class Blocks { public static final Supplier EXAMPLE = () -> Block.Properties.of(Material.GLASS).strength(2.0F, 6.0F); - public static final Supplier METAL = () -> Block.Properties.of(Material.METAL).strength(2.0F, 6.0F); + public static final Supplier METAL = () -> + Block.Properties + .of(Material.METAL) + .strength(2.0F, 6.0F) + .requiresCorrectToolForDrops(); } public static class Items From e8db9fedc6976b4b6713bd28942eb60580ca3c84 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:12:22 +1200 Subject: [PATCH 0163/1090] Added death by spike localisation --- src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 4bc400077..6582fdd59 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -217,6 +217,8 @@ else if (item instanceof MetalmindItem) add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); //Damage Sources + add("death.attack.spiked", "%1$s was not careful with their hemalurgic spike"); + add("death.attack.spiked.player", "%1$s was not careful with their hemalurgic spike while fighting %2$s"); //Containers From d7fd24af8d24cc1485587b75fe168a572b81e1a9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:36:58 +1200 Subject: [PATCH 0164/1090] Made feru gold reduce harmful effect timer by 20% each time gold tap effect ticks --- .../feruchemy/store/GoldStoreEffect.java | 12 +++ .../effects/feruchemy/tap/GoldTapEffect.java | 30 +++++-- .../feruchemy/FeruchemyGold.java | 90 +++++++++++++++++++ .../registry/ManifestationRegistry.java | 2 + 4 files changed, 126 insertions(+), 8 deletions(-) create mode 100644 src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java index e0e6c2dde..f7e61c69d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/GoldStoreEffect.java @@ -7,6 +7,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -22,4 +23,15 @@ public GoldStoreEffect(Metals.MetalType type, MobEffectCategory effectType) -4.0D, AttributeModifier.Operation.ADDITION); } + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + super.applyEffectTick(entityLivingBaseIn, amplifier); + + if (entityLivingBaseIn.getHealth() > entityLivingBaseIn.getMaxHealth()) + { + entityLivingBaseIn.setHealth(entityLivingBaseIn.getMaxHealth()); + } + } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 4e6ef6855..8e8ebac66 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -6,7 +6,9 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; @@ -22,22 +24,34 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) { - entityLivingBaseIn.heal(amplifier + 1); + entityLivingBaseIn.heal(1); } - //todo reduce harmful effects timer + //remove harmful effects over time + for (MobEffectInstance activeEffect : entityLivingBaseIn.getActiveEffects()) + { + if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) + { + MobEffectInstance effectInstance = new MobEffectInstance( + activeEffect.getEffect(), + Mth.floor(activeEffect.getDuration() * 0.8d), + activeEffect.getAmplifier(), + activeEffect.isAmbient(), + activeEffect.isVisible(), + activeEffect.showIcon()); + entityLivingBaseIn.removeEffectNoUpdate(activeEffect.getEffect()); + entityLivingBaseIn.addEffect(effectInstance); + } + } } @Override public boolean isDurationEffectTick(int duration, int amplifier) { - int k = 40 >> amplifier; - if (k > 0) - { + int k = 50 >> amplifier; + if (k > 0) { return duration % k == 0; - } - else - { + } else { return true; } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java new file mode 100644 index 000000000..dc9cab7c6 --- /dev/null +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java @@ -0,0 +1,90 @@ +/* + * File created ~ 27 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.manifestation.feruchemy; + +import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.charge.MetalmindChargeHelper; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +public class FeruchemyGold extends FeruchemyBase +{ + public FeruchemyGold(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + + //don't heal more than needed. + if (livingEntity.tickCount % 20 != 0 || livingEntity.getHealth() >= livingEntity.getMaxHealth()) + { + return; + } + + int mode = getMode(data); + + int cost; + + MobEffect effect = getEffect(mode); + final boolean tapping = mode < 0; + final boolean storing = mode > 0; + + // if we are tapping + //check if there is charges to tap + if (tapping) + { + //wanting to tap + //get cost + cost = mode <= -3 ? -(mode * mode) : mode; + + } + //if we are storing + //check if there is space to store + else + { + if (storing) + { + cost = mode; + } + //can't store or tap any more + else + { + //remove active effects. + //let the current effect run out. + return; + } + } + + final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); + if (metalmind != null)//success + { + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); + + if (effect == null) + { + return; + } + + livingEntity.addEffect(currentEffect); + } + else + { + if (tapping) + { + //move towards turning off feruchemy. + data.setMode(this, mode + 1); + } + } + } +} diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index 664c7527d..fb2af244e 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -151,6 +151,8 @@ private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalTy return new FeruchemyAluminum(metalType); case NICROSIL: return new FeruchemyNicrosil(metalType); + case GOLD: + return new FeruchemyGold(metalType); case ELECTRUM: return new FeruchemyElectrum(metalType); default: From e6d53f14403054319294e95ae5dbd8af16ff493f Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:38:26 +1200 Subject: [PATCH 0165/1090] feru gold tap only reduce harmful if not healing --- .../effects/feruchemy/tap/GoldTapEffect.java | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 8e8ebac66..b7c7ff5f3 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -26,21 +26,23 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { entityLivingBaseIn.heal(1); } - - //remove harmful effects over time - for (MobEffectInstance activeEffect : entityLivingBaseIn.getActiveEffects()) + else { - if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) + //remove harmful effects over time + for (MobEffectInstance activeEffect : entityLivingBaseIn.getActiveEffects()) { - MobEffectInstance effectInstance = new MobEffectInstance( - activeEffect.getEffect(), - Mth.floor(activeEffect.getDuration() * 0.8d), - activeEffect.getAmplifier(), - activeEffect.isAmbient(), - activeEffect.isVisible(), - activeEffect.showIcon()); - entityLivingBaseIn.removeEffectNoUpdate(activeEffect.getEffect()); - entityLivingBaseIn.addEffect(effectInstance); + if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) + { + MobEffectInstance effectInstance = new MobEffectInstance( + activeEffect.getEffect(), + Mth.floor(activeEffect.getDuration() * 0.8d), + activeEffect.getAmplifier(), + activeEffect.isAmbient(), + activeEffect.isVisible(), + activeEffect.showIcon()); + entityLivingBaseIn.removeEffectNoUpdate(activeEffect.getEffect()); + entityLivingBaseIn.addEffect(effectInstance); + } } } } From a175b4a0bfac0b508fc2f26f48607e638069ae15 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 20:45:06 +1200 Subject: [PATCH 0166/1090] gold harmful effects reduce amount dependant on amplifier --- .../leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index b7c7ff5f3..4835f91c8 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -33,9 +33,11 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) { + double reduceAmount = 1 - ((1 + amplifier) / 10d); + MobEffectInstance effectInstance = new MobEffectInstance( activeEffect.getEffect(), - Mth.floor(activeEffect.getDuration() * 0.8d), + Mth.floor(activeEffect.getDuration() * reduceAmount), activeEffect.getAmplifier(), activeEffect.isAmbient(), activeEffect.isVisible(), From cadd2f17a209c1748b5f522e09d072b96afdf5fc Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 21:14:23 +1200 Subject: [PATCH 0167/1090] Fixed a bunch of effects not running at tap 1 or two --- .../leaf/cosmere/effects/MobEffectBase.java | 34 ++++++++++++++ .../allomancy/AllomancyBoostEffect.java | 3 +- .../allomancy/AllomancyEffectBase.java | 25 +++------- .../feruchemy/FeruchemyEffectBase.java | 9 +--- .../feruchemy/store/DuraluminStoreEffect.java | 6 --- .../feruchemy/tap/BendalloyTapEffect.java | 30 ++++++------ .../effects/feruchemy/tap/BrassTapEffect.java | 25 ++-------- .../effects/feruchemy/tap/GoldTapEffect.java | 47 ++++++++----------- 8 files changed, 85 insertions(+), 94 deletions(-) create mode 100644 src/main/java/leaf/cosmere/effects/MobEffectBase.java diff --git a/src/main/java/leaf/cosmere/effects/MobEffectBase.java b/src/main/java/leaf/cosmere/effects/MobEffectBase.java new file mode 100644 index 000000000..df84d1652 --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/MobEffectBase.java @@ -0,0 +1,34 @@ +/* + * File created ~ 26 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.effects; + +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; + +public abstract class MobEffectBase extends MobEffect +{ + protected MobEffectBase(MobEffectCategory mobEffectCategory, int colorValue) + { + super(mobEffectCategory, colorValue); + } + + protected int getActiveTick() + { + return 20; + } + + protected boolean isActiveTick(LivingEntity livingEntity) + { + return livingEntity.tickCount % getActiveTick() == 0; + } + + @Override + public boolean isDurationEffectTick(int pDuration, int pAmplifier) + { + //assume true, since we can't check the entity here + return true; + } +} diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 6cd3c4c5b..1ed51e55f 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -7,13 +7,14 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.MobEffectBase; import leaf.cosmere.registry.AttributesRegistry; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -public class AllomancyBoostEffect extends MobEffect +public class AllomancyBoostEffect extends MobEffectBase { public AllomancyBoostEffect(Metals.MetalType type, MobEffectCategory effectType) { diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java index 958ca8804..86ff4545a 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyEffectBase.java @@ -5,12 +5,13 @@ package leaf.cosmere.effects.allomancy; import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.MobEffectBase; import leaf.cosmere.items.IHasMetalType; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; -public class AllomancyEffectBase extends MobEffect implements IHasMetalType +public class AllomancyEffectBase extends MobEffectBase implements IHasMetalType { protected final Metals.MetalType metalType; @@ -30,27 +31,15 @@ public Metals.MetalType getMetalType() @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { + if (!isActiveTick(entityLivingBaseIn)) + { + return; + } + if (entityLivingBaseIn.level.isClientSide) { //client side only? } } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; -/* - //but if we are a specific effect - if (metalType == Metals.MetalType.BENDALLOY) - { - int k = 50 >> amplifier; - if (k > 0) - { - result = duration % k == 0; - } - }*/ - return result; - } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java index 6a739c897..0f89a27d7 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/FeruchemyEffectBase.java @@ -5,12 +5,13 @@ package leaf.cosmere.effects.feruchemy; import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.MobEffectBase; import leaf.cosmere.items.IHasMetalType; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; -public class FeruchemyEffectBase extends MobEffect implements IHasMetalType +public class FeruchemyEffectBase extends MobEffectBase implements IHasMetalType { protected final Metals.MetalType metalType; final double bonusPerLevel = 1; @@ -37,10 +38,4 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) } } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - return true; - } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index a308d119b..381e7e82b 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -24,12 +24,6 @@ public DuraluminStoreEffect(Metals.MetalType type, MobEffectCategory effectType) MinecraftForge.EVENT_BUS.addListener(this::onLivingVisibilityEvent); } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - return true; - } - public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) { MobEffectInstance effectInstance = event.getEntityLiving().getEffect(this); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java index e6f0ce98f..67ffecca4 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java @@ -9,6 +9,7 @@ import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodData; public class BendalloyTapEffect extends FeruchemyEffectBase @@ -18,28 +19,27 @@ public BendalloyTapEffect(Metals.MetalType type, MobEffectCategory effectType) super(type, effectType); } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - //assume we can apply the effect regardless - boolean result = true; - - int k = 50 >> amplifier + 1; - if (k > 0) + if (!isActiveTick(entityLivingBaseIn)) { - result = duration % k == 0; + return; } - return result; - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { if (!entityLivingBaseIn.level.isClientSide) { - ((Player) entityLivingBaseIn).getFoodData().eat(amplifier + 1, 0.0F); + final FoodData foodData = ((Player) entityLivingBaseIn).getFoodData(); + final int i = 1 + amplifier; + if (foodData.needsFood()) + { + foodData.setFoodLevel(foodData.getFoodLevel() + i); + } + else + { + //add saturation after. + foodData.eat(0, i); + } //todo add tough as nails mod compatibility? } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java index 64f5944b7..e17c6b6a7 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BrassTapEffect.java @@ -32,6 +32,11 @@ public BrassTapEffect(Metals.MetalType type, MobEffectCategory effectType) @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { + if (!isActiveTick(entityLivingBaseIn)) + { + return; + } + if (!entityLivingBaseIn.level.isClientSide && amplifier >= 5 && !entityLivingBaseIn.isInWater()) { //set user on fire @@ -40,26 +45,6 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) } - - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - //assume we can apply the effect regardless - boolean result = true; - - //but if we are a specific effect - if (metalType == Metals.MetalType.BENDALLOY) - { - int k = 100 >> amplifier; - if (k > 0) - { - result = duration % k == 0; - } - } - return result; - } - - @SubscribeEvent public static void onLivingDamageEvent(LivingDamageEvent event) { diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 4835f91c8..8d7e0d65f 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -22,41 +22,34 @@ public GoldTapEffect(Metals.MetalType type, MobEffectCategory effectType) @Override public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { + if (!isActiveTick(entityLivingBaseIn)) + { + return; + } + if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) { entityLivingBaseIn.heal(1); } - else + + //remove harmful effects over time + for (MobEffectInstance activeEffect : entityLivingBaseIn.getActiveEffects()) { - //remove harmful effects over time - for (MobEffectInstance activeEffect : entityLivingBaseIn.getActiveEffects()) + if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) { - if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) - { - double reduceAmount = 1 - ((1 + amplifier) / 10d); - - MobEffectInstance effectInstance = new MobEffectInstance( - activeEffect.getEffect(), - Mth.floor(activeEffect.getDuration() * reduceAmount), - activeEffect.getAmplifier(), - activeEffect.isAmbient(), - activeEffect.isVisible(), - activeEffect.showIcon()); - entityLivingBaseIn.removeEffectNoUpdate(activeEffect.getEffect()); - entityLivingBaseIn.addEffect(effectInstance); - } + double reduceAmount = 1 - ((1 + amplifier) / 10d); + + MobEffectInstance effectInstance = new MobEffectInstance( + activeEffect.getEffect(), + Mth.floor(activeEffect.getDuration() * reduceAmount), + activeEffect.getAmplifier(), + activeEffect.isAmbient(), + activeEffect.isVisible(), + activeEffect.showIcon()); + entityLivingBaseIn.removeEffectNoUpdate(activeEffect.getEffect()); + entityLivingBaseIn.addEffect(effectInstance); } } } - @Override - public boolean isDurationEffectTick(int duration, int amplifier) - { - int k = 50 >> amplifier; - if (k > 0) { - return duration % k == 0; - } else { - return true; - } - } } From 056957a4ac7afb4978efaad92e516ad841725fb8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 21:15:21 +1200 Subject: [PATCH 0168/1090] Fixed feru bendalloy not giving saturation --- .../feruchemy/store/BendalloyStoreEffect.java | 21 +++++++------------ 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java index 5b08d20ba..433f0e357 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java @@ -9,6 +9,7 @@ import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodData; // food public class BendalloyStoreEffect extends FeruchemyEffectBase @@ -18,27 +19,19 @@ public BendalloyStoreEffect(Metals.MetalType type, MobEffectCategory effectType) super(type, effectType); } + @Override - public boolean isDurationEffectTick(int duration, int amplifier) + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { - //assume we can apply the effect regardless - boolean result = true; - - int k = 50 >> amplifier; - if (k > 0) + if (!isActiveTick(entityLivingBaseIn)) { - result = duration % k == 0; + return; } - return result; - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { if (!entityLivingBaseIn.level.isClientSide) { - ((Player) entityLivingBaseIn).getFoodData().addExhaustion(0.5F * (float) (amplifier + 1)); + final FoodData foodData = ((Player) entityLivingBaseIn).getFoodData(); + foodData.setFoodLevel(foodData.getFoodLevel() + 1 + amplifier); //todo add tough as nails mod compatibility? } From 7bee14aff6a839ace66b2bc1601176f08631d424 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 26 May 2022 21:29:31 +1200 Subject: [PATCH 0169/1090] add deepslate tags --- src/main/generated/.cache/cache | 21 +++++++++++-------- .../data/forge/tags/blocks/ores/aluminum.json | 3 ++- .../data/forge/tags/blocks/ores/cadmium.json | 3 ++- .../data/forge/tags/blocks/ores/chromium.json | 3 ++- .../data/forge/tags/blocks/ores/lead.json | 3 ++- .../data/forge/tags/blocks/ores/nickel.json | 3 ++- .../data/forge/tags/blocks/ores/silver.json | 3 ++- .../data/forge/tags/blocks/ores/tin.json | 3 ++- .../data/forge/tags/blocks/ores/zinc.json | 3 ++- .../tags/blocks/mineable/pickaxe.json | 8 +++++++ .../tags/blocks/needs_iron_tool.json | 16 +++++++------- .../tags/blocks/needs_stone_tool.json | 13 ++++++++++++ .../cosmere/datagen/blocks/BlockTagsGen.java | 7 ++++++- 13 files changed, 63 insertions(+), 26 deletions(-) create mode 100644 src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 471ff43d6..9fc6b270d 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -1cc91f8c85e32c6ba92e082cfcbc9ae8a7c53e10 assets/cosmere/lang/en_us.json +3a40b6f702585472890cd6f102a71361319e96b1 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -826,14 +826,14 @@ d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmin 71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/curio.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json -f5b416f3fe61239a50d82fae0dd54f5e8b4b0df7 data/forge/tags/blocks/ores/aluminum.json -e22f37d7af5f06278e822a4904a89b450b64e958 data/forge/tags/blocks/ores/cadmium.json -4b9f571ae1e74c979d8a8dd634fbb50af0c744cf data/forge/tags/blocks/ores/chromium.json -fe94054a6e0bb1d0124667b81f03a4aad73a113a data/forge/tags/blocks/ores/lead.json -46a41519749ba29902c4c73f82632fce0ba2be79 data/forge/tags/blocks/ores/nickel.json -bba17dc9bc1f143dab38885c0731c80acd68c01e data/forge/tags/blocks/ores/silver.json -76060ddbd9b7f4b35569226f693126de396f6868 data/forge/tags/blocks/ores/tin.json -91f72cdcc00ca284de29df2d512358873332b235 data/forge/tags/blocks/ores/zinc.json +64f864afd9ad5d67a1dd542a22bff6755f9ac0cf data/forge/tags/blocks/ores/aluminum.json +0149f3504fe4cc3ec5f3b0b0209e89902b63fd00 data/forge/tags/blocks/ores/cadmium.json +6a518a08ce802299308c4e9d41914ce661c4d47e data/forge/tags/blocks/ores/chromium.json +d6f3389650a44da204ccb3a178c501f5c6fc3596 data/forge/tags/blocks/ores/lead.json +df3d0142ac7337477d92c9d401bd9ebdad7c24c8 data/forge/tags/blocks/ores/nickel.json +c028339f8e117532e147f64089eb7137dab7ca06 data/forge/tags/blocks/ores/silver.json +2ce0dc95f999e969b6c97e5843beb5c949bf76f0 data/forge/tags/blocks/ores/tin.json +6be3a7a64d16704e882a648a18e6b99d0d304da7 data/forge/tags/blocks/ores/zinc.json f963f2d004e93e755b9b88c212159e1999e442a9 data/forge/tags/blocks/storage_blocks.json 3d5ad66889ba2954ba4b68386cc07115f0bf68d1 data/forge/tags/blocks/storage_blocks/aluminum.json 96e63f4f07ad6d42e660685736c6a5c2b0ab10ad data/forge/tags/blocks/storage_blocks/atium.json @@ -955,4 +955,7 @@ dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/items/storage_blocks/st ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/items/storage_blocks/zinc.json e41ca9272ddd7549f0065c670b382c34c92d81bb data/minecraft/tags/blocks/beacon_base_blocks.json 8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/dragon_immune.json +e0833578e138951e4cdc57c013a4fa95b8d6c39c data/minecraft/tags/blocks/mineable/pickaxe.json +b8ae9405b2ede5a77424b927d0fc24a3f53be8fa data/minecraft/tags/blocks/needs_iron_tool.json +f586e1b29fa4c5e6dd56092f75a5ea1db7e0e9e1 data/minecraft/tags/blocks/needs_stone_tool.json 8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/wither_immune.json diff --git a/src/main/generated/data/forge/tags/blocks/ores/aluminum.json b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json index e652dd099..d294b8955 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/aluminum.json +++ b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:aluminum_ore" + "cosmere:aluminum_ore", + "cosmere:aluminum_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/cadmium.json b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json index b97450e34..b18c13b6c 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/cadmium.json +++ b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:cadmium_ore" + "cosmere:cadmium_ore", + "cosmere:cadmium_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/chromium.json b/src/main/generated/data/forge/tags/blocks/ores/chromium.json index 66e679cf8..bc202aead 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/chromium.json +++ b/src/main/generated/data/forge/tags/blocks/ores/chromium.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:chromium_ore" + "cosmere:chromium_ore", + "cosmere:chromium_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/lead.json b/src/main/generated/data/forge/tags/blocks/ores/lead.json index 22ef9950d..b8785b2bf 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/lead.json +++ b/src/main/generated/data/forge/tags/blocks/ores/lead.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:lead_ore" + "cosmere:lead_ore", + "cosmere:lead_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/nickel.json b/src/main/generated/data/forge/tags/blocks/ores/nickel.json index 468ddefc3..81e7f31b0 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/nickel.json +++ b/src/main/generated/data/forge/tags/blocks/ores/nickel.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:nickel_ore" + "cosmere:nickel_ore", + "cosmere:nickel_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/silver.json b/src/main/generated/data/forge/tags/blocks/ores/silver.json index 988bcf40d..f6b71eed9 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/silver.json +++ b/src/main/generated/data/forge/tags/blocks/ores/silver.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:silver_ore" + "cosmere:silver_ore", + "cosmere:silver_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/tin.json b/src/main/generated/data/forge/tags/blocks/ores/tin.json index 6499cb774..968c41721 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/tin.json +++ b/src/main/generated/data/forge/tags/blocks/ores/tin.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:tin_ore" + "cosmere:tin_ore", + "cosmere:tin_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/zinc.json b/src/main/generated/data/forge/tags/blocks/ores/zinc.json index 1f5cfc5a2..23a17ba76 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/zinc.json +++ b/src/main/generated/data/forge/tags/blocks/ores/zinc.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "cosmere:zinc_ore" + "cosmere:zinc_ore", + "cosmere:zinc_ore_deepslate" ] } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json index bcb808c89..8bffb7780 100644 --- a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -3,20 +3,25 @@ "values": [ "cosmere:steel_block", "cosmere:tin_ore", + "cosmere:tin_ore_deepslate", "cosmere:tin_block", "cosmere:pewter_block", "cosmere:zinc_ore", + "cosmere:zinc_ore_deepslate", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:copper_block", "cosmere:bronze_block", "cosmere:aluminum_ore", + "cosmere:aluminum_ore_deepslate", "cosmere:aluminum_block", "cosmere:duralumin_block", "cosmere:chromium_ore", + "cosmere:chromium_ore_deepslate", "cosmere:chromium_block", "cosmere:nicrosil_block", "cosmere:cadmium_ore", + "cosmere:cadmium_ore_deepslate", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -26,10 +31,13 @@ "cosmere:malatium_block", "cosmere:lerasatium_block", "cosmere:nickel_ore", + "cosmere:nickel_ore_deepslate", "cosmere:nickel_block", "cosmere:lead_ore", + "cosmere:lead_ore_deepslate", "cosmere:lead_block", "cosmere:silver_ore", + "cosmere:silver_ore_deepslate", "cosmere:silver_block" ] } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json index bcb808c89..a2ff7fda5 100644 --- a/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json @@ -2,21 +2,21 @@ "replace": false, "values": [ "cosmere:steel_block", - "cosmere:tin_ore", + "cosmere:tin_ore_deepslate", "cosmere:tin_block", "cosmere:pewter_block", - "cosmere:zinc_ore", + "cosmere:zinc_ore_deepslate", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:copper_block", "cosmere:bronze_block", - "cosmere:aluminum_ore", + "cosmere:aluminum_ore_deepslate", "cosmere:aluminum_block", "cosmere:duralumin_block", - "cosmere:chromium_ore", + "cosmere:chromium_ore_deepslate", "cosmere:chromium_block", "cosmere:nicrosil_block", - "cosmere:cadmium_ore", + "cosmere:cadmium_ore_deepslate", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -25,11 +25,11 @@ "cosmere:harmonium_block", "cosmere:malatium_block", "cosmere:lerasatium_block", - "cosmere:nickel_ore", + "cosmere:nickel_ore_deepslate", "cosmere:nickel_block", - "cosmere:lead_ore", + "cosmere:lead_ore_deepslate", "cosmere:lead_block", - "cosmere:silver_ore", + "cosmere:silver_ore_deepslate", "cosmere:silver_block" ] } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json new file mode 100644 index 000000000..fd111c2b1 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json @@ -0,0 +1,13 @@ +{ + "replace": false, + "values": [ + "cosmere:tin_ore", + "cosmere:zinc_ore", + "cosmere:aluminum_ore", + "cosmere:chromium_ore", + "cosmere:cadmium_ore", + "cosmere:nickel_ore", + "cosmere:lead_ore", + "cosmere:silver_ore" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 212775571..e8d6b96f4 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -44,7 +44,12 @@ protected void addTags() final OreBlock oreBlock = metalType.getOreBlock(); add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), oreBlock); add(BlockTags.MINEABLE_WITH_PICKAXE, oreBlock); - add(BlockTags.NEEDS_IRON_TOOL, oreBlock); + add(BlockTags.NEEDS_STONE_TOOL, oreBlock); + + final OreBlock oreDeepslateBlock = metalType.getDeepslateOreBlock(); + add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), oreDeepslateBlock); + add(BlockTags.MINEABLE_WITH_PICKAXE, oreDeepslateBlock); + add(BlockTags.NEEDS_IRON_TOOL, oreDeepslateBlock); } //put metal type tag on block From c3a6f1694346cdfc56b23691cd77a5e586e3e83f Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 27 May 2022 08:52:24 +1200 Subject: [PATCH 0170/1090] Make bendalloy only slow people around you --- .../cosmere/manifestation/allomancy/AllomancyBendalloy.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index 193abdbb5..94f6f87cc 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -34,7 +34,7 @@ protected void performEffect(ISpiritweb data) int range = this.getRange(data); - List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, true); + List entitiesToAffect = getLivingEntitiesInRange(data.getLiving(), range, false); for (LivingEntity e : entitiesToAffect) { From 54c7974ed83a0a245143be851b6dc8b2c3b0918e Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 27 May 2022 08:52:38 +1200 Subject: [PATCH 0171/1090] update changelog and bump version number --- Changelog.md | 18 ++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index cc509b8e7..98f31fb70 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,23 @@ The Cosmere Project - For 1.16 Minecraft +B38 + +Make bendalloy only slow people around you + + +B37 + +Buffed compounding attribute gain amount. +Added death by spike localisation. +Fixed mod blocks being slow to mine. Should be faster with correct tool. +Fixed tapping1 gold not doing anything. +Fixed storing gold not updating health properly. +Fixed feru gold removing from metalmind even when fully healthy +Made feru gold reduce harmful effect timer each time gold tap effect ticks. +Fixed a bunch of effects not running at tap 1 or two +Fixed feru bendalloy not giving saturation. + + B36 Fixed hemalurgic spikes constantly damaging when used as feruchemical storage. diff --git a/gradle.properties b/gradle.properties index 40635d5e1..39a29d2e3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=37 +build_number=38 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 87a68ffa07ee22fb919de12f9349a99a154f91db Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 27 May 2022 17:46:44 +1200 Subject: [PATCH 0172/1090] Update FeruchemyGold.java --- .../leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java index dc9cab7c6..0af8be868 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java @@ -27,7 +27,7 @@ public void tick(ISpiritweb data) LivingEntity livingEntity = data.getLiving(); //don't heal more than needed. - if (livingEntity.tickCount % 20 != 0 || livingEntity.getHealth() >= livingEntity.getMaxHealth()) + if (livingEntity.tickCount % 20 != 0) { return; } @@ -66,6 +66,9 @@ public void tick(ISpiritweb data) } } + if (tapping && livingEntity.getHealth() >= livingEntity.getMaxHealth()) + return; + final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); if (metalmind != null)//success { From 946e544135befccf4bc470209bbfc4bf4e9675d6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 27 May 2022 17:46:56 +1200 Subject: [PATCH 0173/1090] fix feru bendalloy for real this time --- Changelog.md | 5 +- .../feruchemy/store/BendalloyStoreEffect.java | 5 +- .../feruchemy/tap/BendalloyTapEffect.java | 2 +- .../feruchemy/FeruchemyBendalloy.java | 56 +++++++++++++++++++ .../registry/ManifestationRegistry.java | 2 + 5 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java diff --git a/Changelog.md b/Changelog.md index 98f31fb70..79fdd6486 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,8 +2,9 @@ The Cosmere Project - For 1.16 Minecraft B38 -Make bendalloy only slow people around you - +Make allo bendalloy only slow people around you +fix feru gold storing not working when health was full. +fix feru bendalloy for real this time. B37 diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java index 433f0e357..b84105956 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BendalloyStoreEffect.java @@ -31,9 +31,8 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) if (!entityLivingBaseIn.level.isClientSide) { final FoodData foodData = ((Player) entityLivingBaseIn).getFoodData(); - foodData.setFoodLevel(foodData.getFoodLevel() + 1 + amplifier); - - //todo add tough as nails mod compatibility? + foodData.setFoodLevel(Math.max(0, foodData.getFoodLevel() - (1 + amplifier))); + foodData.setSaturation(Math.min(foodData.getFoodLevel(), foodData.getSaturationLevel())); } } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java index 67ffecca4..2e57cae44 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/BendalloyTapEffect.java @@ -38,7 +38,7 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) else { //add saturation after. - foodData.eat(0, i); + foodData.eat(1, i); } //todo add tough as nails mod compatibility? diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java new file mode 100644 index 000000000..3a6a4a91b --- /dev/null +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java @@ -0,0 +1,56 @@ +/* + * File created ~ 27 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.manifestation.feruchemy; + +import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.charge.MetalmindChargeHelper; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.food.FoodData; +import net.minecraft.world.item.ItemStack; + +public class FeruchemyBendalloy extends FeruchemyBase +{ + public FeruchemyBendalloy(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public void tick(ISpiritweb data) + { + //don't check every tick. + LivingEntity livingEntity = data.getLiving(); + int mode = getMode(data); + if (mode == 0) + { + return; + } + + final boolean tapping = mode < 0; + final boolean storing = mode > 0; + + if (livingEntity instanceof Player player) + { + FoodData foodData = player.getFoodData(); + if (storing && foodData.getFoodLevel() <= 0) + { + //no food to store + return; + } + else if (tapping && !(foodData.needsFood() || foodData.getSaturationLevel() < foodData.getFoodLevel())) + { + //already full + return; + } + } + + super.tick(data); + } +} diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index fb2af244e..e2e1b4bb7 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -155,6 +155,8 @@ private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalTy return new FeruchemyGold(metalType); case ELECTRUM: return new FeruchemyElectrum(metalType); + case BENDALLOY: + return new FeruchemyBendalloy(metalType); default: return new FeruchemyBase(metalType); } From 0c6f293a42fd7a7223666491e49fa4d212deaf35 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 15:28:26 +1200 Subject: [PATCH 0174/1090] Fix hemalurgy not stealing from players --- .../java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 28a65263e..3a9da54ad 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -107,6 +107,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); if (manifestation != null) { + entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); return; } @@ -122,6 +123,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); if (manifestation != null) { + entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); return; } @@ -133,16 +135,17 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType { //Steals any one power //todo decide if we just pick a random power - //then try steal it - //todo decide if prefer allomancy over feruchemy? AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); if (manifestation == null) { + //todo decide if prefer allomancy over feruchemy? manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); } + //then try steal it if (manifestation != null) { + entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); return; } @@ -152,6 +155,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType { for (AManifestation manifestation : manifestationsFound) { + entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); } } From 9e3b7d08294d1dbfac43dfd81fccbf2634eb9e62 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 15:28:52 +1200 Subject: [PATCH 0175/1090] fix metalworking table not dropping when broken --- src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index e8d6b96f4..0b5e953f2 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -32,6 +32,10 @@ protected void addTags() add(TagsRegistry.Blocks.WITHER_PROOF, BlocksRegistry.GEM_BLOCK.get()); add(BlockTags.BEACON_BASE_BLOCKS, BlocksRegistry.GEM_BLOCK.get()); + add(BlockTags.NEEDS_STONE_TOOL,BlocksRegistry.METALWORKING_TABLE.get()); + add(BlockTags.MINEABLE_WITH_AXE,BlocksRegistry.METALWORKING_TABLE.get()); + + for (Metals.MetalType metalType : Metals.MetalType.values()) { if (!metalType.hasMaterialItem()) From d830f3da8237f3076ac1baf55001dfe0cb47a9e4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 15:35:05 +1200 Subject: [PATCH 0176/1090] spike death event relevant only on server --- .../java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 3e48d2a5e..aa25175db 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -255,6 +255,9 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool @SubscribeEvent public static void onEntityDeath(LivingDeathEvent event) { + if (event.getEntityLiving().level.isClientSide()) + return; + if (event.getSource().getEntity() instanceof Player playerEntity) { SpiritwebCapability.get(playerEntity).ifPresent(iSpiritweb -> From c5466ff5c74e717946a15ecfbde85692742ea7ca Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 20:43:48 +1200 Subject: [PATCH 0177/1090] metal working table data gen --- src/main/generated/.cache/cache | 3 ++- .../generated/data/minecraft/tags/blocks/mineable/axe.json | 6 ++++++ .../data/minecraft/tags/blocks/needs_stone_tool.json | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 src/main/generated/data/minecraft/tags/blocks/mineable/axe.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 9fc6b270d..efa3e52de 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -955,7 +955,8 @@ dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/items/storage_blocks/st ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/items/storage_blocks/zinc.json e41ca9272ddd7549f0065c670b382c34c92d81bb data/minecraft/tags/blocks/beacon_base_blocks.json 8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/dragon_immune.json +4618f8470f32ec0298a79e361cf984bda2cf6b26 data/minecraft/tags/blocks/mineable/axe.json e0833578e138951e4cdc57c013a4fa95b8d6c39c data/minecraft/tags/blocks/mineable/pickaxe.json b8ae9405b2ede5a77424b927d0fc24a3f53be8fa data/minecraft/tags/blocks/needs_iron_tool.json -f586e1b29fa4c5e6dd56092f75a5ea1db7e0e9e1 data/minecraft/tags/blocks/needs_stone_tool.json +10d0b6dac23908b61ab208e5e0c1e001172efbb4 data/minecraft/tags/blocks/needs_stone_tool.json 8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/wither_immune.json diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json new file mode 100644 index 000000000..b9b746eb0 --- /dev/null +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json @@ -0,0 +1,6 @@ +{ + "replace": false, + "values": [ + "cosmere:metalworking_table" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json index fd111c2b1..85713b520 100644 --- a/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json +++ b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ + "cosmere:metalworking_table", "cosmere:tin_ore", "cosmere:zinc_ore", "cosmere:aluminum_ore", From 5194ac8dc5df77e8f8286d317ae3690f1fde9287 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 22:34:03 +1200 Subject: [PATCH 0178/1090] Upgrades to the power menu --- .../leaf/cosmere/client/ClientEvents.java | 7 +- .../leaf/cosmere/client/ClientHelper.java | 4 + .../java/leaf/cosmere/client/ClientSetup.java | 8 + .../cosmere/client/gui/SpiritwebMenu.java | 369 ++++++++++-------- .../cosmere/constants/Manifestations.java | 20 + .../cosmere/utils/helpers/MathHelper.java | 7 + .../cosmere/textures/icon/allomancy.png | Bin 0 -> 374 bytes .../cosmere/textures/icon/feruchemy.png | Bin 0 -> 391 bytes .../cosmere/textures/icon/surgebinding.png | Bin 0 -> 306 bytes 9 files changed, 244 insertions(+), 171 deletions(-) create mode 100644 src/main/resources/assets/cosmere/textures/icon/allomancy.png create mode 100644 src/main/resources/assets/cosmere/textures/icon/feruchemy.png create mode 100644 src/main/resources/assets/cosmere/textures/icon/surgebinding.png diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index 92a352ef3..f173d507e 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -156,12 +156,13 @@ public static void renderSpiritwebHUD(final RenderGameOverlayEvent.Post event) SpiritwebCapability.get(Minecraft.getInstance().player).ifPresent(cap -> { SpiritwebCapability spiritweb = (SpiritwebCapability) cap; - spiritweb.renderSelectedHUD(event.getMatrixStack()); - if (spiritweb.hasAnyPowers()) + //if (!SpiritwebMenu.instance.isVisible()) { - SpiritwebMenu.instance.postRender(event, spiritweb); + spiritweb.renderSelectedHUD(event.getMatrixStack()); } + + SpiritwebMenu.instance.postRender(event, spiritweb); }); } diff --git a/src/main/java/leaf/cosmere/client/ClientHelper.java b/src/main/java/leaf/cosmere/client/ClientHelper.java index d34999d78..274aaf919 100644 --- a/src/main/java/leaf/cosmere/client/ClientHelper.java +++ b/src/main/java/leaf/cosmere/client/ClientHelper.java @@ -17,6 +17,10 @@ public class ClientHelper public static TextureAtlasSprite arrowDown; public static TextureAtlasSprite on; public static TextureAtlasSprite off; + + public static TextureAtlasSprite allomancy; + public static TextureAtlasSprite feruchemy; + public static TextureAtlasSprite surgebinding; private final HashMap manifestationSprites = new HashMap<>(); public static TextureAtlasSprite blank; public static SpriteIconPositioning blankSIP; diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index dd0e3296e..218f3304d 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -86,6 +86,10 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) event.addSprite(ResourceLocationHelper.prefix("icon/on")); event.addSprite(ResourceLocationHelper.prefix("icon/off")); + event.addSprite(ResourceLocationHelper.prefix("icon/allomancy")); + event.addSprite(ResourceLocationHelper.prefix("icon/feruchemy")); + event.addSprite(ResourceLocationHelper.prefix("icon/surgebinding")); + for (final Metals.MetalType metalType : Metals.MetalType.values()) { if (!metalType.hasAssociatedManifestation()) @@ -115,6 +119,10 @@ public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post e ClientHelper.on = map.getSprite(ResourceLocationHelper.prefix("icon/on")); ClientHelper.off = map.getSprite(ResourceLocationHelper.prefix("icon/off")); + ClientHelper.allomancy = map.getSprite(ResourceLocationHelper.prefix("icon/allomancy")); + ClientHelper.feruchemy = map.getSprite(ResourceLocationHelper.prefix("icon/feruchemy")); + ClientHelper.surgebinding = map.getSprite(ResourceLocationHelper.prefix("icon/surgebinding")); + ClientHelper.blankSIP = getSIP(map, "blank"); for (final Metals.MetalType metalType : Metals.MetalType.values()) diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 3e45baca3..2142b9716 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -18,14 +18,14 @@ import com.mojang.blaze3d.vertex.*; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientHelper; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.ChangeManifestationModeMessage; -import leaf.cosmere.network.packets.DeactivateCurrentManifestationsMessage; import leaf.cosmere.network.packets.SetSelectedManifestationMessage; +import leaf.cosmere.registry.KeybindingRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.math.Vector2; -import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; @@ -35,30 +35,29 @@ import net.minecraft.network.chat.TextComponent; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.client.event.RenderGameOverlayEvent; +import org.jetbrains.annotations.NotNull; import org.lwjgl.opengl.GL11; import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; import java.util.concurrent.TimeUnit; -import static leaf.cosmere.registry.KeybindingRegistry.MANIFESTATION_MENU; - public class SpiritwebMenu extends Screen { - - private final float TIME_SCALE = 0.01f; final double TEXT_DISTANCE = 30; public static final SpiritwebMenu instance = new SpiritwebMenu(); private SpiritwebCapability spiritweb = null; private float visibility = 0.0f; - private boolean canShow = true; private Stopwatch lastChange = Stopwatch.createStarted(); - public AManifestation switchToPower = null; - public ButtonAction doAction = null; - public boolean actionUsed = false; + public AManifestation selectedManifestation = null; + public SidedMenuButton doAction = null; + private Manifestations.ManifestationTypes selectedPowerType = Manifestations.ManifestationTypes.ALLOMANCY; - protected ArrayList radialButtonRegions = new ArrayList<>(); + protected ArrayList radialMenuButtons = new ArrayList<>(); protected ArrayList sidedMenuButtons = new ArrayList<>(); protected SpiritwebMenu() @@ -66,40 +65,19 @@ protected SpiritwebMenu() super(new TextComponent("Menu")); } - public boolean raiseVisibility() + @Override + public boolean isPauseScreen() { - if (!canShow()) - { - return false; - } - - visibility = MathHelper.clamp01(visibility + lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); - lastChange = Stopwatch.createStarted(); - return true; + return false; } - public void decreaseVisibility() + public void raiseVisibility() { - setCanShow(true); - visibility = MathHelper.clamp01(visibility - lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); + final float TIME_SCALE = 0.01f; + visibility = MathHelper.clamp01(visibility + lastChange.elapsed(TimeUnit.MILLISECONDS) * TIME_SCALE); lastChange = Stopwatch.createStarted(); } - public boolean canShow() - { - return canShow; - } - - public void setCanShow(final boolean canShow) - { - this.canShow = canShow; - } - - public boolean isVisible() - { - return visibility > 0.001; - } - public void setScaledResolution(final int scaledWidth, final int scaledHeight) { width = scaledWidth; @@ -115,110 +93,94 @@ public Minecraft getMinecraft() public void postRender(RenderGameOverlayEvent.Post event, SpiritwebCapability spiritweb) { - this.spiritweb = spiritweb; - final boolean wasVisible = isVisible(); + if (KeybindingRegistry.MANIFESTATION_MENU.consumeClick()) + { + final Window window = event.getWindow(); + init(Minecraft.getInstance(), window.getGuiScaledWidth(), window.getGuiScaledHeight()); + setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); + this.spiritweb = spiritweb; + getMinecraft().screen = SpiritwebMenu.instance; + getMinecraft().mouseHandler.releaseMouse(); + visibility = 0; + lastChange = Stopwatch.createStarted(); + + selectedManifestation = spiritweb.manifestation(); - if (!MANIFESTATION_MENU.isUnbound() && MANIFESTATION_MENU.isDown()) + SetupButtons(); + } + if (KeybindingRegistry.MANIFESTATION_MENU.isDown()) { - actionUsed = false; - if (raiseVisibility()) - { - getMinecraft().mouseHandler.releaseMouse(); - } + raiseVisibility(); } - else + } + + @Override + public boolean keyReleased(int pKeyCode, int pScanCode, int pModifiers) + { + if (KeybindingRegistry.MANIFESTATION_MENU.matches(pKeyCode, pScanCode)) { - if (!actionUsed) + for (RadialMenuButton radialMenuButton : radialMenuButtons) { - if (switchToPower != null) - { - //todo open menu sound - //ClientSide.instance.playRadialMenu(); - - Network.sendToServer(new SetSelectedManifestationMessage(switchToPower)); - } - - if (doAction != null) + if (radialMenuButton.highlighted) { - //todo open menu sound - //ClientSide.instance.playRadialMenu(); - switch (doAction) - { -/* case ROLL_X: - PacketRotateVoxelBlob pri = new PacketRotateVoxelBlob(Direction.Axis.X, Rotation.CLOCKWISE_90); - ChiselsAndBits.getNetworkChannel().sendToServer(pri); - break;*/ - - case INACTIVE: - //deactivate current - if (spiritweb.canTickSelectedManifestation()) - { - Network.sendToServer(new DeactivateCurrentManifestationsMessage()); - } - break; - case ACTIVE: - //activate current - if (!spiritweb.canTickSelectedManifestation()) - { - //Network.sendToServer(new ToggleManifestationMessage()); - } - break; - case MODE_INCREASE: - //change mode to positive - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), 1)); - break; - case MODE_DECREASE: - //change mode to negative. - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), -1)); - break; - } + Network.sendToServer(new SetSelectedManifestationMessage(radialMenuButton.manifestation)); + break; } } - actionUsed = true; - decreaseVisibility(); + CloseScreen(); } + return super.keyReleased(pKeyCode, pScanCode, pModifiers); + } - if (isVisible()) + @Override + public boolean mouseClicked(final double mouseX, final double mouseY, final int button) + { + for (RadialMenuButton radialMenuButton : radialMenuButtons) { - final Window window = event.getWindow(); - init(Minecraft.getInstance(), window.getGuiScaledWidth(), window.getGuiScaledHeight()); - setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); - - if (!wasVisible) + if (radialMenuButton.highlighted) { - getMinecraft().screen = SpiritwebMenu.instance; - getMinecraft().mouseHandler.releaseMouse(); - } - - if (getMinecraft().mouseHandler.isMouseGrabbed()) - { - KeyMapping.releaseAll(); + if (button == 0) + { + Network.sendToServer(new ChangeManifestationModeMessage(radialMenuButton.manifestation, 1)); + } + else + { + Network.sendToServer(new ChangeManifestationModeMessage(radialMenuButton.manifestation, -1)); + } + return true; } } - else + for (SidedMenuButton sidedMenuButton : sidedMenuButtons) { - if (wasVisible) + if (sidedMenuButton.highlighted) { - getMinecraft().mouseHandler.grabMouse(); + if (sidedMenuButton.powerType != -1) + { + selectedPowerType = Manifestations.ManifestationTypes.valueOf(doAction.powerType).get(); + SetupButtons(); + } + else if (sidedMenuButton.action != null) + { + //do other action + } + + return true; } } + CloseScreen(); + return true; } - @Override - public boolean mouseClicked(final double mouseX, final double mouseY, final int button) + private void CloseScreen() { - this.visibility = 0f; - canShow = false; this.minecraft.setScreen(null); - if (this.minecraft.screen == null) { this.minecraft.setWindowActive(true); this.minecraft.getSoundManager().resume(); this.minecraft.mouseHandler.grabMouse(); } - return true; } private static class SidedMenuButton @@ -229,6 +191,7 @@ private static class SidedMenuButton public boolean highlighted; public final ButtonAction action; + public final int powerType; public TextureAtlasSprite icon; public int color; public String name; @@ -244,6 +207,7 @@ public SidedMenuButton( { this.name = name; this.action = action; + this.powerType = -1; x1 = x; x2 = x + 18; y1 = y; @@ -255,25 +219,26 @@ public SidedMenuButton( public SidedMenuButton( final String name, - final ButtonAction action, + final int powerType, final double x, final double y, - final int col, + final TextureAtlasSprite ico, final Direction textSide) { this.name = name; - this.action = action; + this.action = null; + this.powerType = powerType; x1 = x; x2 = x + 18; y1 = y; y2 = y + 18; - color = col; + icon = ico; + color = 0xffffff; this.textSide = textSide; } - } - static class RadialButtonRegion + static class RadialMenuButton { public final AManifestation manifestation; @@ -281,7 +246,7 @@ static class RadialButtonRegion public double centerY; public boolean highlighted; - public RadialButtonRegion(final AManifestation manifestation) + public RadialMenuButton(final AManifestation manifestation) { this.manifestation = manifestation; } @@ -290,22 +255,51 @@ public RadialButtonRegion(final AManifestation manifestation) protected void SetupButtons() { - sidedMenuButtons.add(spiritweb.canTickSelectedManifestation() - ? new SidedMenuButton("gui.cosmere.other.inactive", ButtonAction.INACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.off, Direction.WEST) - : new SidedMenuButton("gui.cosmere.other.active", ButtonAction.ACTIVE, TEXT_DISTANCE + 20, -50, ClientHelper.on, Direction.WEST)); - - sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.increase", ButtonAction.MODE_INCREASE, TEXT_DISTANCE * 2, -10, ClientHelper.arrowUp, Direction.EAST)); - sidedMenuButtons.add(new SidedMenuButton("gui.cosmere.mode.decrease", ButtonAction.MODE_DECREASE, TEXT_DISTANCE * 2, 10, ClientHelper.arrowDown, Direction.EAST)); + radialMenuButtons.clear(); + sidedMenuButtons.clear(); + final List availableManifestations = spiritweb.getAvailableManifestations(); - for (AManifestation manifestation : spiritweb.getAvailableManifestations()) + if (availableManifestations.size() <= 16) { - radialButtonRegions.add(new RadialButtonRegion(manifestation)); + for (AManifestation manifestation : availableManifestations) + { + radialMenuButtons.add(new RadialMenuButton(manifestation)); + } + } + else + { + Set foundPowerTypes = new HashSet<>(); + + for (AManifestation manifestation : availableManifestations) + { + if (manifestation.getManifestationType() == selectedPowerType) + { + radialMenuButtons.add(new RadialMenuButton(manifestation)); + } + foundPowerTypes.add(manifestation.getManifestationType()); + } + + for (Manifestations.ManifestationTypes foundPowerType : foundPowerTypes) + { + final int index = foundPowerType.getID() - 1; + final double v = TEXT_DISTANCE * index; + sidedMenuButtons.add( + new SidedMenuButton( + foundPowerType.getName(), + foundPowerType.getID(), + v - ((TEXT_DISTANCE * foundPowerTypes.size()) / 2) + 5, + -75, + foundPowerType.getSprite(), + Direction.UP) + ); + + } } } @Override - public void render(final PoseStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) + public void render(final @NotNull PoseStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) { if (spiritweb == null) { @@ -321,9 +315,7 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous RenderSystem.disableTexture(); RenderSystem.enableBlend(); - //RenderSystem.disableAlphaTest(); RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); - //RenderSystem.shadeModel(GL11.GL_SMOOTH); final Tesselator tessellator = Tesselator.getInstance(); final BufferBuilder buffer = tessellator.getBuilder(); @@ -335,12 +327,7 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous final double middle_x = width / 2f; final double middle_y = height / 2f; - radialButtonRegions.clear(); - sidedMenuButtons.clear(); - - SetupButtons(); - - switchToPower = null; + selectedManifestation = null; doAction = null; //render the button backgrounds @@ -370,15 +357,15 @@ public void render(final PoseStack matrixStack, final int mouseX, final int mous //draw sided button strings renderSidedButtonStrings(matrixStack, middle_x, middle_y); //do extra text info stuff - renderAnyExtraInfoTexts(matrixStack, (int) middle_y); + renderAnyExtraInfoTexts(matrixStack, (int) middle_x, (int) middle_y); matrixStack.popPose(); } - private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) + private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int middle_y) { - int x = 10; - final int[] y = {middle_y / 2}; + int leftSideX = 10; + final int[] y = {(int) middle_y / 2}; spiritweb.METALS_INGESTED.forEach((key, value) -> { @@ -386,10 +373,23 @@ private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_y) { //todo localisation check final String text = key.getName() + ": " + value; - font.drawShadow(matrixStack, text, x, y[0], 0xffffffff); + font.drawShadow(matrixStack, text, leftSideX, y[0], 0xffffffff); y[0] += 10; } }); + + if (selectedManifestation == null) + { + return; + } + + y[0] = (int) middle_y / 2; + int rightSideX = middle_x + 35; + + font.drawShadow(matrixStack, I18n.get(selectedManifestation.translation().getKey()), rightSideX, y[0], 0xffffffff); + //todo mode translation + font.drawShadow(matrixStack, "Mode: " + spiritweb.getMode(selectedManifestation), rightSideX, y[0] + 10, 0xffffffff); + } private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, double middle_y) @@ -423,7 +423,7 @@ private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, do private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int middle_y) { - for (final RadialButtonRegion button : radialButtonRegions) + for (final RadialMenuButton button : radialMenuButtons) { //but only if that button is highlighted if (button.highlighted) @@ -453,7 +453,7 @@ private void renderSidedButtonIcons(BufferBuilder buffer, double middle_x, doubl { for (final SidedMenuButton button : sidedMenuButtons) { - final float f = switchToPower == null ? 1.0f : 0.5f; + final float f = selectedManifestation == null ? 1.0f : 0.5f; final float a = 1.0f; final double u1 = 0; @@ -481,7 +481,7 @@ private void renderSidedButtonIcons(BufferBuilder buffer, double middle_x, doubl private void renderRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) { - for (final RadialButtonRegion mnuRgn : radialButtonRegions) + for (final RadialMenuButton mnuRgn : radialMenuButtons) { final double x = mnuRgn.centerX; final double y = mnuRgn.centerY; @@ -517,13 +517,22 @@ private void renderSidedButtons(BufferBuilder buffer, double mouseVecX, double m for (final SidedMenuButton button : sidedMenuButtons) { final float a = 0.5f; - float f = 0f; + float f; if (button.x1 <= mouseVecX && button.x2 >= mouseVecX && button.y1 <= mouseVecY && button.y2 >= mouseVecY) { f = 1; button.highlighted = true; - doAction = button.action; + doAction = button; + } + else + { + button.highlighted = false; + + //highlight button, but don't draw string unless mouse over + f = selectedPowerType.getID() == button.powerType + ? 1 + : 0; } //set first triangle @@ -537,26 +546,27 @@ private void renderSidedButtons(BufferBuilder buffer, double mouseVecX, double m private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double mouseVecY, double middle_x, double middle_y) { - if (!radialButtonRegions.isEmpty()) + if (!radialMenuButtons.isEmpty()) { final float ring_inner_edge = -10; final float ring_outer_edge = -50; // todo test if I can get down to one button only - final int totalButtons = radialButtonRegions.size(); + final int totalButtons = radialMenuButtons.size(); Vector2 innerEdge; Vector2 outerEdge; - boolean smallMode = radialButtonRegions.size() == 2; + boolean smallMode = radialMenuButtons.size() == 2; innerEdge = new Vector2(0, ring_inner_edge); outerEdge = new Vector2(0, ring_outer_edge); - - for (final RadialButtonRegion region : radialButtonRegions) + int i = radialMenuButtons.size() - 1; + while (i >= 0) { + RadialMenuButton region = radialMenuButtons.get(i); //left side inner point double x1m1; double y1m1; @@ -589,9 +599,6 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double y1m2 = outerEdge.y; outerEdge.Rotate(60); - //4 - x2m2 = outerEdge.x; - y2m2 = outerEdge.y; } else { @@ -611,11 +618,11 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double //right side inner point x1m2 = innerEdge.x; y1m2 = innerEdge.y; - //right side outer point - x2m2 = outerEdge.x; - y2m2 = outerEdge.y; } + //4 or right side outer point + x2m2 = outerEdge.x; + y2m2 = outerEdge.y; //the center of a regular polygon can be found by adding up // all corner positions and divide by the total count @@ -642,28 +649,54 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double //if (begin_rad <= mouseAngle && mouseAngle <= end_rad && showHighlight) if (showHighlight) { - f = 1; + f = 0.1f; region.highlighted = true; - switchToPower = region.manifestation; + selectedManifestation = region.manifestation; + } + else + { + region.highlighted = false; + } + + float lerpPositive = 0; + float lerpNegative = 0; + + if (region.manifestation != null) + { + int mode = region.manifestation.getMode(spiritweb); + int modeMin = region.manifestation.modeMin(spiritweb); + int modeMax = region.manifestation.modeMax(spiritweb); + + if (mode > 0) + { + lerpPositive = MathHelper.InverseLerp(0, modeMax, mode) - 0.1f; + } + else if (mode < 0) + { + lerpNegative = MathHelper.InverseLerp(0, Math.abs(modeMin), Math.abs(mode)) - 0.1f; + } } + float r = lerpPositive + f; + float g = f; + float b = lerpNegative + f; if (smallMode) { - buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(r, g, b, a).endVertex(); + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(r, g, b, a).endVertex(); } else { //set the square pos - buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(f, f, f, a).endVertex(); + buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(r, g, b, a).endVertex(); + buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(r, g, b, a).endVertex(); } + buffer.vertex(middle_x + x2m2, middle_y + y2m2, 0).color(r, g, b, a).endVertex(); + buffer.vertex(middle_x + x1m2, middle_y + y1m2, 0).color(r, g, b, a).endVertex(); + + i--; } } } diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index 8d61141dc..e9cbdb58b 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -4,8 +4,10 @@ package leaf.cosmere.constants; +import leaf.cosmere.client.ClientHelper; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import java.util.Arrays; import java.util.Locale; @@ -89,6 +91,24 @@ public String getName() { return this.name().toLowerCase(Locale.ROOT); } + + public TextureAtlasSprite getSprite() + { + switch (this) + { + case ALLOMANCY: + return ClientHelper.allomancy; + case FERUCHEMY: + return ClientHelper.feruchemy; + case RADIANT: + return ClientHelper.surgebinding; + case ELANTRIAN: + break; + case AWAKENER: + break; + } + return null; + } } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java index 11c4e7ea0..b1f198842 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java @@ -20,6 +20,13 @@ public static boolean randomBool() return RANDOM.nextBoolean(); } + public static float InverseLerp(float a, float b, float value) + { + if (a != b) + return clamp01((value - a) / (b - a)); + else + return 0.0f; + } public static float clamp01(final float f) { diff --git a/src/main/resources/assets/cosmere/textures/icon/allomancy.png b/src/main/resources/assets/cosmere/textures/icon/allomancy.png new file mode 100644 index 0000000000000000000000000000000000000000..d120831143cf8b960d29e0352d71465907e84c7c GIT binary patch literal 374 zcmV-+0g3*JP)qR{{3l`&rH}f~fOou;5xN1&^LZmAi(F|`8cONfe zmPD&FJknx|M?L$MSi@H>5D=;RO?oZ$W*|S2Q;|3Okd28PcEoQhnllexZG6fj^WB)a z#uv}tzn$K=w#3YNyb11e+g4Nl3;NcJaX(*OzP78mrOggXOql7vovHTz&UXO@0C!i* UL)~dgkpKVy07*qoM6N<$f=G>$fB*mh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/icon/feruchemy.png b/src/main/resources/assets/cosmere/textures/icon/feruchemy.png new file mode 100644 index 0000000000000000000000000000000000000000..9b17accfd2f149fb8efdaa1aafbc79c3a4507f4b GIT binary patch literal 391 zcmV;20eJq2P)$dqFclpaZ!AvFGf~Tx18hnQyGz zV|`vb53RMp7(wLqg}EnQ&%C~YLM}@N0s|+oH!U?PDTQ~@bK-B?pfDHNQ*6#2;o{cR$ga_ZldDgh5fxAdR~#r>JH+*w zSHT2Aw}BaI8<=s;nHhS4(QRNu&E2uM4Mv;Wg>@YHJw!S`)Ah*OO+0Q0yn<)GzRcVg zn85pg1U}qgcKOWO;ih}T197zpDKRFaQ$V2)Pdm`x^iN002ovPDHLkV1iXKoVWl0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/icon/surgebinding.png b/src/main/resources/assets/cosmere/textures/icon/surgebinding.png new file mode 100644 index 0000000000000000000000000000000000000000..3eab65dec455041f7f5b858ddef28ac68a77b75d GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`oCO|{#S9GG!XV7ZFl&wkP*AeO zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkDP|o1;4H0K}SaA339z$m)o<^JUn52}|O@P49VFZe>f$T*2T)?-UmRQ>{n zNVTY?z1F*}x#sLIVU#bpd~2u1-~NzquKRw6JXr8)amHQ0jpotT>gi^?e#CYjNn6y% wl9m3h@?~mRqlvxr)0qxG+a0b7$uY7qRCTs>UrTB#2YQ9U)78&qol`;+0N$c-B>(^b literal 0 HcmV?d00001 From d4cb383afdfdce55ff6f2ea6cf6f16670dd13ad4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 28 May 2022 23:46:40 +1200 Subject: [PATCH 0179/1090] starting to fix initialization bug on entities --- .../cap/entity/SpiritwebCapability.java | 17 +++++++++++- .../cosmere/handlers/EntityEventHandler.java | 27 +++---------------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 052d11325..29588a24e 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -75,6 +75,7 @@ public class SpiritwebCapability implements ISpiritweb //detect if capability has been set up yet private boolean didSetup = false; + private boolean hasBeenInitialized = false; private final LivingEntity livingEntity; @@ -120,6 +121,7 @@ public CompoundTag serializeNBT() { CompoundTag nbt = new CompoundTag(); + nbt.putBoolean("assigned_powers", hasBeenInitialized); nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); @@ -151,7 +153,8 @@ public CompoundTag serializeNBT() @Override public void deserializeNBT(CompoundTag nbt) { - CompoundTag modeNBT = nbt.getCompound("manifestation_modes");; + hasBeenInitialized = nbt.getBoolean("assigned_powers"); + CompoundTag modeNBT = nbt.getCompound("manifestation_modes"); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { final String manifestationLoc = manifestation.getRegistryName().toString(); @@ -408,6 +411,16 @@ public void setSelectedManifestation(AManifestation manifestation) selectedManifestation = manifestation; } + public boolean hasBeenInitialized() + { + return hasBeenInitialized; + } + + public void setHasBeenInitialized() + { + hasBeenInitialized = true; + } + public boolean hasAnyPowers() { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) @@ -495,6 +508,8 @@ public void giveManifestation(AManifestation manifestation) manifestationAttribute.applyNonPersistentModifier(attributeModifier);*/ } + + hasBeenInitialized = true; } @Override diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 1c1968555..0b809640e 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -12,7 +12,6 @@ import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; -import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.core.Direction; @@ -20,8 +19,6 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.entity.animal.Cat; import net.minecraft.world.entity.monster.Monster; @@ -44,7 +41,6 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.registries.RegistryObject; import javax.annotation.Nonnull; import java.util.Arrays; @@ -71,7 +67,7 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) //find out if any innate powers exist on the entity first //if they do - if (spiritweb.hasAnyPowers()) + if (spiritweb.hasBeenInitialized() || spiritweb.hasAnyPowers()) { //then skip //no need to give them extras just for rejoining the world. @@ -85,23 +81,6 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) { //give random power giveEntityStartingManifestation(livingEntity, spiritweb); - - - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) - { - AttributeInstance newPlayerAttribute = ((Player) eventEntity).getAttribute(metalRelatedAttribute.get()); - - if (newPlayerAttribute != null) - { - newPlayerAttribute.setBaseValue(newPlayerAttribute.getBaseValue()); - } - - } - } } } else if (eventEntity instanceof AbstractVillager @@ -117,6 +96,8 @@ else if (eventEntity instanceof AbstractVillager } } + + spiritweb.setHasBeenInitialized(); }); } @@ -205,7 +186,7 @@ else if (handItem == Items.GOLD_NUGGET) { metalType = Metals.MetalType.GOLD; } - /*else if (handItem == Items.COPPER_NUGGET)//todo copper 1.18 + /*else if (handItem == Items.COPPER_NUGGET)//todo if copper ever has nuggets { metalType = Metals.MetalType.COPPER; }*/ From 65c977d02e5a62a5f883200d1888c387b3852331 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 29 May 2022 00:07:00 +1200 Subject: [PATCH 0180/1090] Update SpiritwebCapability.java --- src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 29588a24e..d9cc0cab3 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -443,11 +443,12 @@ public boolean hasAnyPowers() if (manifestationAttribute.getValue() > 5) { + setHasBeenInitialized(); return true; } } - + setHasBeenInitialized(); return false; } From 014f36e40e3f4a743058e95b6d427e4dc2ad9c39 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 29 May 2022 08:50:46 +1200 Subject: [PATCH 0181/1090] fix hemalurgic spikes not getting powers properly --- .../java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 3a9da54ad..6ea8636a8 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -107,8 +107,8 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); if (manifestation != null) { - entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + entityKilledSpiritWeb.removeManifestation(manifestation); return; } @@ -123,8 +123,8 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); if (manifestation != null) { - entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + entityKilledSpiritWeb.removeManifestation(manifestation); return; } } @@ -145,8 +145,8 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //then try steal it if (manifestation != null) { - entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + entityKilledSpiritWeb.removeManifestation(manifestation); return; } } @@ -155,8 +155,8 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType { for (AManifestation manifestation : manifestationsFound) { - entityKilledSpiritWeb.removeManifestation(manifestation); Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); + entityKilledSpiritWeb.removeManifestation(manifestation); } } break; From 5bf3c692ef1ca7069f592f42e629ffab3cdfc36d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 29 May 2022 08:55:29 +1200 Subject: [PATCH 0182/1090] bump version and update changelog --- Changelog.md | 11 +++++++++++ gradle.properties | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 79fdd6486..d20a80bf4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,10 +1,21 @@ The Cosmere Project - For 1.16 Minecraft +B39 + +Fix hemalurgic spikes not stealing powers properly + + B38 Make allo bendalloy only slow people around you fix feru gold storing not working when health was full. fix feru bendalloy for real this time. +Better menu handling for over 16 powers +Better menu information for what powers are active. +fix mobs getting reinitialized on being reloaded, gaining powers when they shouldn't. +fix metalworking table not dropping when broken +fix hemalurgy not actually taking powers from player entities. + B37 diff --git a/gradle.properties b/gradle.properties index 39a29d2e3..7c841e74b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=38 +build_number=40 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From bb40afd1db6d5de73618cb0321c152197b9ea4ec Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:45:36 +1200 Subject: [PATCH 0183/1090] Curio spike and bracelet rendering --- src/main/generated/.cache/cache | 12 +- .../generated/assets/cosmere/lang/en_us.json | 3 + .../tags/items/{curio.json => back.json} | 0 .../data/curios/tags/items/body.json | 24 ++ .../data/curios/tags/items/bracelet.json | 21 +- .../data/curios/tags/items/feet.json | 24 ++ .../data/curios/tags/items/hands.json | 42 ++ .../data/curios/tags/items/head.json | 24 ++ .../data/curios/tags/items/legs.json | 24 ++ .../data/curios/tags/items/lynchpin.json | 24 ++ .../leaf/cosmere/cap/entity/ISpiritweb.java | 3 + .../cap/entity/SpiritwebCapability.java | 16 +- .../java/leaf/cosmere/client/ClientSetup.java | 42 +- .../client/render/curio/CurioRenderers.java | 30 ++ .../render/curio/CuriosLayerDefinitions.java | 17 + .../render/curio/model/BraceletModel.java | 231 ++++++++++ .../client/render/curio/model/SpikeModel.java | 407 ++++++++++++++++++ .../curio/renderer/BraceletRenderer.java | 52 +++ .../render/curio/renderer/SpikeRenderer.java | 51 +++ .../leaf/cosmere/commands/CosmereCommand.java | 4 +- .../commands/subcommands/EyeCommand.java | 62 +++ .../subcommands/ManifestationCommand.java | 25 +- .../commands/subcommands/ModCommand.java | 32 +- .../cosmere/compat/curios/CuriosCompat.java | 15 +- .../leaf/cosmere/constants/Constants.java | 1 + .../cosmere/datagen/items/ItemTagsGen.java | 13 +- .../cosmere/datagen/language/EngLangGen.java | 23 +- .../leaf/cosmere/registry/TagsRegistry.java | 26 +- 28 files changed, 1172 insertions(+), 76 deletions(-) rename src/main/generated/data/curios/tags/items/{curio.json => back.json} (100%) create mode 100644 src/main/generated/data/curios/tags/items/body.json create mode 100644 src/main/generated/data/curios/tags/items/feet.json create mode 100644 src/main/generated/data/curios/tags/items/hands.json create mode 100644 src/main/generated/data/curios/tags/items/head.json create mode 100644 src/main/generated/data/curios/tags/items/legs.json create mode 100644 src/main/generated/data/curios/tags/items/lynchpin.json create mode 100644 src/main/java/leaf/cosmere/client/render/curio/CurioRenderers.java create mode 100644 src/main/java/leaf/cosmere/client/render/curio/CuriosLayerDefinitions.java create mode 100644 src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java create mode 100644 src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java create mode 100644 src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java create mode 100644 src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java create mode 100644 src/main/java/leaf/cosmere/commands/subcommands/EyeCommand.java diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index efa3e52de..46f8d18fa 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -3a40b6f702585472890cd6f102a71361319e96b1 assets/cosmere/lang/en_us.json +2ec6d0fb720a01bbb04a0920095831d88e28e6d1 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -822,8 +822,14 @@ ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_meta d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json 6fe02255d6c35f42bd3f9234b1c239022e995d8a data/cosmere/recipes/zinc_spike.json 71fba22e4872d99a897821df1e2fc5fef14794ec data/cosmere/tags/items/spike.json -6d2602fc3592bdf26c0b7f56b7960810f0b7daf0 data/curios/tags/items/bracelet.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/curio.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/back.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/body.json +fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/bracelet.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/feet.json +fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/hands.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/head.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/legs.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/lynchpin.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json 64f864afd9ad5d67a1dd542a22bff6755f9ac0cf data/forge/tags/blocks/ores/aluminum.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index c79acb5cd..73873a645 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -138,6 +138,7 @@ "block.cosmere.zinc_block": "Zinc Block", "block.cosmere.zinc_ore": "Zinc Ore", "block.cosmere.zinc_ore_deepslate": "Zinc Ore Deepslate", + "command.cosmere.eyeheight.set.success": "Set eye height to %s", "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", @@ -176,6 +177,8 @@ "cosmere.tineye": "Tineye", "cosmere.trueself": "Trueself", "cosmere.windwhisperer": "Windwhisperer", + "curios.identifier.feet": "Feet", + "curios.identifier.legs": "Legs", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "effect.cosmere.allomancy_boost": "Allomancy Boost", diff --git a/src/main/generated/data/curios/tags/items/curio.json b/src/main/generated/data/curios/tags/items/back.json similarity index 100% rename from src/main/generated/data/curios/tags/items/curio.json rename to src/main/generated/data/curios/tags/items/back.json diff --git a/src/main/generated/data/curios/tags/items/body.json b/src/main/generated/data/curios/tags/items/body.json new file mode 100644 index 000000000..25f6cb518 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/body.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/bracelet.json b/src/main/generated/data/curios/tags/items/bracelet.json index aa0a8e5e4..7cdc7b0c1 100644 --- a/src/main/generated/data/curios/tags/items/bracelet.json +++ b/src/main/generated/data/curios/tags/items/bracelet.json @@ -3,21 +3,40 @@ "values": [ "cosmere:bands_of_mourning", "cosmere:iron_bracelet_metalmind", + "cosmere:iron_spike", "cosmere:steel_bracelet_metalmind", + "cosmere:steel_spike", "cosmere:tin_bracelet_metalmind", + "cosmere:tin_spike", "cosmere:pewter_bracelet_metalmind", + "cosmere:pewter_spike", "cosmere:zinc_bracelet_metalmind", + "cosmere:zinc_spike", "cosmere:brass_bracelet_metalmind", + "cosmere:brass_spike", "cosmere:copper_bracelet_metalmind", + "cosmere:copper_spike", "cosmere:bronze_bracelet_metalmind", + "cosmere:bronze_spike", "cosmere:aluminum_bracelet_metalmind", + "cosmere:aluminum_spike", "cosmere:duralumin_bracelet_metalmind", + "cosmere:duralumin_spike", "cosmere:chromium_bracelet_metalmind", + "cosmere:chromium_spike", "cosmere:nicrosil_bracelet_metalmind", + "cosmere:nicrosil_spike", "cosmere:cadmium_bracelet_metalmind", + "cosmere:cadmium_spike", "cosmere:bendalloy_bracelet_metalmind", + "cosmere:bendalloy_spike", "cosmere:gold_bracelet_metalmind", + "cosmere:gold_spike", "cosmere:electrum_bracelet_metalmind", - "cosmere:atium_bracelet_metalmind" + "cosmere:electrum_spike", + "cosmere:atium_bracelet_metalmind", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" ] } \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/feet.json b/src/main/generated/data/curios/tags/items/feet.json new file mode 100644 index 000000000..25f6cb518 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/feet.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/hands.json b/src/main/generated/data/curios/tags/items/hands.json new file mode 100644 index 000000000..7cdc7b0c1 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/hands.json @@ -0,0 +1,42 @@ +{ + "replace": false, + "values": [ + "cosmere:bands_of_mourning", + "cosmere:iron_bracelet_metalmind", + "cosmere:iron_spike", + "cosmere:steel_bracelet_metalmind", + "cosmere:steel_spike", + "cosmere:tin_bracelet_metalmind", + "cosmere:tin_spike", + "cosmere:pewter_bracelet_metalmind", + "cosmere:pewter_spike", + "cosmere:zinc_bracelet_metalmind", + "cosmere:zinc_spike", + "cosmere:brass_bracelet_metalmind", + "cosmere:brass_spike", + "cosmere:copper_bracelet_metalmind", + "cosmere:copper_spike", + "cosmere:bronze_bracelet_metalmind", + "cosmere:bronze_spike", + "cosmere:aluminum_bracelet_metalmind", + "cosmere:aluminum_spike", + "cosmere:duralumin_bracelet_metalmind", + "cosmere:duralumin_spike", + "cosmere:chromium_bracelet_metalmind", + "cosmere:chromium_spike", + "cosmere:nicrosil_bracelet_metalmind", + "cosmere:nicrosil_spike", + "cosmere:cadmium_bracelet_metalmind", + "cosmere:cadmium_spike", + "cosmere:bendalloy_bracelet_metalmind", + "cosmere:bendalloy_spike", + "cosmere:gold_bracelet_metalmind", + "cosmere:gold_spike", + "cosmere:electrum_bracelet_metalmind", + "cosmere:electrum_spike", + "cosmere:atium_bracelet_metalmind", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/head.json b/src/main/generated/data/curios/tags/items/head.json new file mode 100644 index 000000000..25f6cb518 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/head.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/legs.json b/src/main/generated/data/curios/tags/items/legs.json new file mode 100644 index 000000000..25f6cb518 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/legs.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/generated/data/curios/tags/items/lynchpin.json b/src/main/generated/data/curios/tags/items/lynchpin.json new file mode 100644 index 000000000..25f6cb518 --- /dev/null +++ b/src/main/generated/data/curios/tags/items/lynchpin.json @@ -0,0 +1,24 @@ +{ + "replace": false, + "values": [ + "cosmere:iron_spike", + "cosmere:steel_spike", + "cosmere:tin_spike", + "cosmere:pewter_spike", + "cosmere:zinc_spike", + "cosmere:brass_spike", + "cosmere:copper_spike", + "cosmere:bronze_spike", + "cosmere:aluminum_spike", + "cosmere:duralumin_spike", + "cosmere:chromium_spike", + "cosmere:nicrosil_spike", + "cosmere:cadmium_spike", + "cosmere:bendalloy_spike", + "cosmere:gold_spike", + "cosmere:electrum_spike", + "cosmere:atium_spike", + "cosmere:lerasium_spike", + "cosmere:lerasatium_spike" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index 7e7efb489..8fc30b45b 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -71,4 +71,7 @@ public interface ISpiritweb extends INBTSerializable boolean adjustIngestedMetal(Metals.MetalType metalType, int amountToAdjust, boolean doAdjust); void transferFrom(ISpiritweb oldSpiritWeb); + + int getEyeHeight(); + void setEyeHeight(int eyeHeight); } diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index d9cc0cab3..4a41f2fa8 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -90,6 +90,7 @@ public class SpiritwebCapability implements ISpiritweb //stormlight stored private int stormlightStored = 0; + private int eyeHeight = 0; //metals ingested public final Map METALS_INGESTED = @@ -125,6 +126,7 @@ public CompoundTag serializeNBT() nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); + nbt.putInt("eye_height", eyeHeight); final CompoundTag modeNBT = new CompoundTag(); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) @@ -167,7 +169,7 @@ public void deserializeNBT(CompoundTag nbt) biochromaticBreathStored = nbt.getInt("stored_breaths"); stormlightStored = nbt.getInt("stored_stormlight"); - + eyeHeight = nbt.getInt("eye_height"); final CompoundTag ingestedMetals = nbt.getCompound("ingested_metals"); for (Metals.MetalType metalType : Metals.MetalType.values()) @@ -311,6 +313,18 @@ public void transferFrom(ISpiritweb oldSpiritWeb) } } + @Override + public int getEyeHeight() + { + return eyeHeight; + } + + @Override + public void setEyeHeight(int eyeHeight) + { + this.eyeHeight = eyeHeight; + } + @OnlyIn(Dist.CLIENT) @Override public void renderWorldEffects(RenderLevelLastEvent event) diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index 218f3304d..d4da30b15 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -6,6 +6,10 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.client.gui.SpriteIconPositioning; +import leaf.cosmere.client.render.curio.CurioRenderers; +import leaf.cosmere.client.render.curio.CuriosLayerDefinitions; +import leaf.cosmere.client.render.curio.model.BraceletModel; +import leaf.cosmere.client.render.curio.model.SpikeModel; import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.store.DuraluminStoreEffect; import leaf.cosmere.manifestation.AManifestation; @@ -17,7 +21,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.NoopRenderer; import net.minecraft.client.renderer.entity.ThrownItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.resources.ResourceLocation; @@ -39,6 +42,16 @@ @Mod.EventBusSubscriber(modid = Cosmere.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class ClientSetup { + + @SubscribeEvent + public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) + { + evt.registerLayerDefinition(CuriosLayerDefinitions.SPIKE, SpikeModel::createLayer); + evt.registerLayerDefinition(CuriosLayerDefinitions.BRACELET, BraceletModel::createLayer); + //evt.registerLayerDefinition(CuriosLayerDefinitions.NECKLACE, NecklaceModel::createLayer); + } + + @SubscribeEvent public static void init(final FMLClientSetupEvent event) { @@ -51,16 +64,18 @@ public static void init(final FMLClientSetupEvent event) //special thank you to @Random on the forge discord who told me that you have to tell the block it has transparency for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (!metalType.hasOre()) - { - continue; - } + if (!metalType.hasOre()) + { + continue; + } RenderType cutoutMipped = RenderType.cutoutMipped(); ItemBlockRenderTypes.setRenderLayer(metalType.getOreBlock(), cutoutMipped); ItemBlockRenderTypes.setRenderLayer(metalType.getDeepslateOreBlock(), cutoutMipped); } + CurioRenderers.register(); + LogHelper.info("Client setup complete!"); } @@ -92,10 +107,10 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) for (final Metals.MetalType metalType : Metals.MetalType.values()) { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } + if (!metalType.hasAssociatedManifestation()) + { + continue; + } String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); event.addSprite(ResourceLocationHelper.prefix("icon/allomancy/" + metalToLower)); @@ -127,10 +142,10 @@ public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post e for (final Metals.MetalType metalType : Metals.MetalType.values()) { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } + if (!metalType.hasAssociatedManifestation()) + { + continue; + } //get allomantic version AManifestation allo = ManifestationRegistry.ALLOMANCY_POWERS.get(metalType).get(); @@ -141,7 +156,6 @@ public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post e } } - @OnlyIn(Dist.CLIENT) private static SpriteIconPositioning getSIP(final TextureAtlas map, final String path) { final SpriteIconPositioning sip = new SpriteIconPositioning(); diff --git a/src/main/java/leaf/cosmere/client/render/curio/CurioRenderers.java b/src/main/java/leaf/cosmere/client/render/curio/CurioRenderers.java new file mode 100644 index 000000000..267531bff --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/CurioRenderers.java @@ -0,0 +1,30 @@ +package leaf.cosmere.client.render.curio; + +import leaf.cosmere.client.render.curio.renderer.BraceletRenderer; +import leaf.cosmere.client.render.curio.renderer.SpikeRenderer; +import leaf.cosmere.registry.ItemsRegistry; +import net.minecraft.world.item.Item; +import net.minecraftforge.registries.RegistryObject; +import top.theillusivec4.curios.api.client.CuriosRendererRegistry; +import top.theillusivec4.curios.api.client.ICurioRenderer; + +import java.util.function.Supplier; + +public class CurioRenderers +{ + public static void register() + { + final Supplier spikeRenderer = SpikeRenderer::new; + for (RegistryObject itemRegistryObject : ItemsRegistry.METAL_SPIKE.values()) + { + CuriosRendererRegistry.register(itemRegistryObject.get(), spikeRenderer); + } + + final Supplier bracelet = BraceletRenderer::new; + for (RegistryObject itemRegistryObject : ItemsRegistry.METAL_BRACELETS.values()) + { + CuriosRendererRegistry.register(itemRegistryObject.get(), bracelet); + } + CuriosRendererRegistry.register(ItemsRegistry.BANDS_OF_MOURNING.get(), bracelet); + } +} diff --git a/src/main/java/leaf/cosmere/client/render/curio/CuriosLayerDefinitions.java b/src/main/java/leaf/cosmere/client/render/curio/CuriosLayerDefinitions.java new file mode 100644 index 000000000..ee936045f --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/CuriosLayerDefinitions.java @@ -0,0 +1,17 @@ +/* + * File created ~ 30 - 5 - 2022 ~ Leaf + */ + +package leaf.cosmere.client.render.curio; + +import leaf.cosmere.Cosmere; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraft.resources.ResourceLocation; + +public class CuriosLayerDefinitions +{ + public static final ModelLayerLocation SPIKE = new ModelLayerLocation(ResourceLocationHelper.prefix("spike"), "spike"); + public static final ModelLayerLocation BRACELET = new ModelLayerLocation(ResourceLocationHelper.prefix("bracelet"), "bracelet"); + public static final ModelLayerLocation NECKLACE = new ModelLayerLocation(ResourceLocationHelper.prefix("necklace"), "necklace"); +} diff --git a/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java b/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java new file mode 100644 index 000000000..0f659ce03 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java @@ -0,0 +1,231 @@ +/* + * Copyright (c) 2018-2020 C4 + * + * This file is part of Curios, a mod made for Minecraft. + * + * Curios is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Curios is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Curios. If not, see . + */ + +package leaf.cosmere.client.render.curio.model; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; + +import javax.annotation.Nonnull; +import java.awt.*; + +public class BraceletModel extends HumanoidModel +{ + private static final ResourceLocation TEXTURE = ResourceLocationHelper.prefix("textures/block/metal_block.png"); + + // region string IDs + private static final String leftArmID = "left_arm"; + private static final String rightArmID = "right_arm"; + private static final String braceletID = "bracelet"; + private static final String handsID = "hands"; +//endregion + + //region model parts + private final ModelPart root; + private final ModelPart rightArmUpper; + private final ModelPart rightArmLower; + private final ModelPart rightHand; + private final ModelPart leftArmUpper; + private final ModelPart leftArmLower; + private final ModelPart leftHand; +//endregion + + public BraceletModel(ModelPart part) + { + super(part, RenderType::entityCutoutNoCull); + this.root = part; + ModelPart find = part.getChild(rightArmID); + rightArmUpper = find.getChild("upper_spike"); + rightArmLower = find.getChild("lower_spike"); + rightHand = find.getChild("hand"); + + find = part.getChild(leftArmID); + leftArmUpper = find.getChild("upper_spike"); + leftArmLower = find.getChild("lower_spike"); + leftHand = find.getChild("hand"); + } + + public static LayerDefinition createLayer() + { + CubeDeformation cube = new CubeDeformation(0.4F); + MeshDefinition mesh = HumanoidModel.createMesh(cube, 0.0F); + PartDefinition part = mesh.getRoot(); + + final PartDefinition rightArm = part.addOrReplaceChild( + rightArmID, + CubeListBuilder.create(), + PartPose.ZERO + ); + + rightArm.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 0, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + rightArm.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 3, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + rightArm.addOrReplaceChild("hand", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 6, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + + final PartDefinition leftArm = part.addOrReplaceChild( + leftArmID, + CubeListBuilder.create().mirror(), + PartPose.ZERO + ); + + leftArm.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 0, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + leftArm.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 3, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + leftArm.addOrReplaceChild("hand", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 6, -2.5F, 2, 1, 5, cube), + PartPose.ZERO); + + + return LayerDefinition.create(mesh, 16, 16); + } + + @Override + @Nonnull + protected Iterable headParts() + { + return ImmutableList.of(); + } + + @Override + @Nonnull + protected Iterable bodyParts() + { + return ImmutableList.of( + this.rightArm, + this.leftArm); + } + + public void render(ItemStack stack, SlotContext slotContext, PoseStack matrixStack, MultiBufferSource buffer, int light) + { + final boolean leftHandSide = slotContext.index() % 2 == 0; + + + ModelPart modelPartToRender = null; + switch (slotContext.identifier()) + { + case braceletID: + switch (slotContext.index()) + { + case 0: + modelPartToRender = leftArmUpper; + break; + case 1: + modelPartToRender = rightArmUpper; + break; + case 2: + modelPartToRender = leftArmLower; + break; + case 3: + modelPartToRender = rightArmLower; + break; + } + + if (modelPartToRender != null) + { + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftArmID : rightArmID)); + } + break; + case handsID: + modelPartToRender = leftHandSide ? leftHand : rightHand; + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftArmID : rightArmID)); + break; + } + + if (modelPartToRender == null) + { + return; + } + + IHasMetalType item = (IHasMetalType) stack.getItem(); + + Color color = item.getMetalType().getColor(); + VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer( + buffer, + renderType(TEXTURE), + false, + stack.getItem() == ItemsRegistry.BANDS_OF_MOURNING.get()); + + + modelPartToRender.render( + matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + color.getRed() / 255f, + color.getGreen() / 255f, + color.getBlue() / 255f, + 1); + + + /* + //debug only, so a spike will render in all locations + renderToBuffer( + matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + color.getRed(), + color.getGreen(), + color.getBlue(), + 1);*/ + + + } +} diff --git a/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java new file mode 100644 index 000000000..124502a86 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java @@ -0,0 +1,407 @@ +/* + * Copyright (c) 2018-2020 C4 + * + * This file is part of Curios, a mod made for Minecraft. + * + * Curios is free software: you can redistribute it and/or modify it + * under the terms of the GNU Lesser General Public License as published + * by the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Curios is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Curios. If not, see . + */ + +package leaf.cosmere.client.render.curio.model; + +import com.google.common.collect.ImmutableList; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.items.IHasMetalType; +import leaf.cosmere.items.MetalmindItem; +import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.client.model.HumanoidModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; + +import javax.annotation.Nonnull; +import java.awt.*; + +public class SpikeModel extends HumanoidModel +{ + private static final ResourceLocation TEXTURE = ResourceLocationHelper.prefix("textures/block/metal_block.png"); + +// region string IDs + private static final String leftArmID = "left_arm"; + private static final String rightArmID = "right_arm"; + private static final String leftLegID = "left_leg"; + private static final String rightLegID = "right_leg"; + private static final String headID = "head"; + private static final String eyeRootID = "eyeRoot"; + private static final String backID = "back"; + private static final String bodyID = "body"; + private static final String lynchpinID = "lynchpin"; + private static final String braceletID = "bracelet"; + private static final String handsID = "hands"; + private static final String legsID = "legs"; + private static final String feetID = "feet"; +//endregion + +//region model parts + private final ModelPart root; + private final ModelPart eyeRoot; + private final ModelPart eyeLeft; + private final ModelPart eyeRight; + private final ModelPart lynchpin; + private final ModelPart back; + private final ModelPart ribLeft; + private final ModelPart ribRight; + private final ModelPart rightArmUpper; + private final ModelPart rightArmLower; + private final ModelPart rightHand; + private final ModelPart leftArmUpper; + private final ModelPart leftArmLower; + private final ModelPart leftHand; + private final ModelPart rightLegUpper; + private final ModelPart rightLegLower; + private final ModelPart leftLegUpper; + private final ModelPart leftLegLower; +//endregion + + public SpikeModel(ModelPart part) + { + super(part, RenderType::entityCutoutNoCull); + this.root = part; + ModelPart find = this.root.getChild(headID); + + eyeRoot = find.getChild(eyeRootID); + eyeLeft = eyeRoot.getChild("left_eye"); + eyeRight = eyeRoot.getChild("right_eye"); + + find = part.getChild(bodyID); + lynchpin = find.getChild(lynchpinID); + back = find.getChild("back"); + ribLeft = find.getChild("rib_left"); + ribRight = find.getChild("rib_right"); + + find = part.getChild(rightArmID); + rightArmUpper = find.getChild("upper_spike"); + rightArmLower = find.getChild("lower_spike"); + rightHand = find.getChild("hand"); + + find = part.getChild(leftArmID); + leftArmUpper = find.getChild("upper_spike"); + leftArmLower = find.getChild("lower_spike"); + leftHand = find.getChild("hand"); + + find = part.getChild(rightLegID); + rightLegUpper = find.getChild("upper_spike"); + rightLegLower = find.getChild("lower_spike"); + + find = part.getChild(leftLegID); + leftLegUpper = find.getChild("upper_spike"); + leftLegLower = find.getChild("lower_spike"); + } + + public static LayerDefinition createLayer() + { + CubeDeformation cube = new CubeDeformation(0.4F); + MeshDefinition mesh = HumanoidModel.createMesh(cube, 0.0F); + PartDefinition part = mesh.getRoot(); + + + final PartDefinition head = part.addOrReplaceChild( + headID, + CubeListBuilder.create(), + PartPose.ZERO + ); + final PartDefinition eyeRoot = head.addOrReplaceChild( + eyeRootID, + CubeListBuilder.create(), + PartPose.ZERO + ); + + eyeRoot.addOrReplaceChild( + "right_eye", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.0F, -3.0F, -5.0F, 2.0F, 2.0F, 10, cube), + PartPose.ZERO); + + final String left_eye = "left_eye"; + eyeRoot.addOrReplaceChild( + left_eye, + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.0F, -3.0F, -5.0F, 2.0F, 2.0F, 10, cube), + PartPose.ZERO); + + + final PartDefinition body = part.addOrReplaceChild( + bodyID, + CubeListBuilder.create(), + PartPose.ZERO + ); + + body.addOrReplaceChild( + lynchpinID, + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-0.5F, 1.5F, 2.0F, 1.0F, 1.0F, 2.0F, cube), + PartPose.ZERO); + + body.addOrReplaceChild( + "back", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-1F, 3.5f, 0.0F, 2.0F, 2.0F, 3.0F, cube), + PartPose.ZERO); + + body.addOrReplaceChild( + "rib_right", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-2.5F, 7.0F, -2.5f, 0.5F, 0.5F, 5.0F, cube), + PartPose.ZERO); + + body.addOrReplaceChild( + "rib_left", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(2F, 7.0F, -2.5f, 0.5F, 0.5F, 5.0F, cube), + PartPose.ZERO); + + + final PartDefinition rightArm = part.addOrReplaceChild( + rightArmID, + CubeListBuilder.create(), + PartPose.ZERO + ); + + rightArm.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 0, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + rightArm.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 3, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + rightArm.addOrReplaceChild("hand", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-3.5f, 6, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + + final PartDefinition leftArm = part.addOrReplaceChild( + leftArmID, + CubeListBuilder.create().mirror(), + PartPose.ZERO + ); + + leftArm.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 0, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + leftArm.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 3, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + leftArm.addOrReplaceChild("hand", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(1.5f, 6, -0.5F, 2, 1, 1, cube), + PartPose.ZERO); + + final PartDefinition rightLeg = part.addOrReplaceChild( + rightLegID, + CubeListBuilder.create(), + PartPose.ZERO + ); + + rightLeg.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-0.5F, 2.0F, -2.5F, 1, 1, 5, cube), + PartPose.ZERO); + + rightLeg.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-0.5F, 7.0F, -2.5F, 1, 1, 5, cube), + PartPose.ZERO); + + + final PartDefinition leftLeg = part.addOrReplaceChild( + leftLegID, + CubeListBuilder.create().mirror(), + PartPose.ZERO + ); + + leftLeg.addOrReplaceChild("upper_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-0.5F, 2.0F, -2.5F, 1, 1, 5, cube), + PartPose.ZERO); + + leftLeg.addOrReplaceChild("lower_spike", + CubeListBuilder.create() + .texOffs(0, 0) + .addBox(-0.5F, 7.0F, -2.5F, 1, 1, 5, cube), + PartPose.ZERO); + + return LayerDefinition.create(mesh, 16, 16); + } + + @Override + @Nonnull + protected Iterable headParts() + { + return ImmutableList.of(this.head); + } + + @Override + @Nonnull + protected Iterable bodyParts() + { + return ImmutableList.of( + this.body, + this.rightArm, + this.leftArm, + this.rightLeg, + this.leftLeg, + this.hat); + } + + public void render(ItemStack stack, SlotContext slotContext, PoseStack matrixStack, MultiBufferSource buffer, int light) + { + final boolean leftHandSide = slotContext.index() % 2 == 0; + + + ModelPart modelPartToRender = null; + switch (slotContext.identifier()) + { + case headID: + eyeLeft.visible = leftHandSide; + eyeRight.visible = !leftHandSide; + + SpiritwebCapability.get(slotContext.entity()).ifPresent((data)->{ + eyeRoot.y = data.getEyeHeight(); + }); + + //we can call render on the head directly, since we have made other spike not visible. + //we do this so that we can use the eye height and have it follow proper head rotations + modelPartToRender = head; + + break; + case lynchpinID: + modelPartToRender = lynchpin; + modelPartToRender.copyFrom(this.root.getChild(bodyID)); + + modelPartToRender.y = -1; + break; + case backID: + modelPartToRender = back; + modelPartToRender.copyFrom(this.root.getChild(bodyID)); + break; + case bodyID: + modelPartToRender = leftHandSide ? ribLeft : ribRight; + modelPartToRender.copyFrom(this.root.getChild(bodyID)); + break; + case braceletID: + switch (slotContext.index()) + { + case 0: + modelPartToRender = leftArmUpper; + break; + case 1: + modelPartToRender = rightArmUpper; + break; + case 2: + modelPartToRender = leftArmLower; + break; + case 3: + modelPartToRender = rightArmLower; + break; + } + + if (modelPartToRender != null) + { + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftArmID : rightArmID)); + } + break; + case handsID: + modelPartToRender = leftHandSide ? leftHand : rightHand; + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftArmID : rightArmID)); + break; + case legsID: + modelPartToRender = slotContext.index() == 0 ? leftLegUpper : rightLegUpper; + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftLegID : rightLegID)); + break; + case feetID: + modelPartToRender = slotContext.index() == 0 ? leftLegLower : rightLegLower; + modelPartToRender.copyFrom(this.root.getChild(leftHandSide ? leftLegID : rightLegID)); + break; + } + + if (modelPartToRender == null) + { + return; + } + + IHasMetalType item = (IHasMetalType) stack.getItem(); + + Color color = item.getMetalType().getColor(); + VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer(buffer, renderType(TEXTURE), false, false); + + + modelPartToRender.render( + matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + color.getRed() / 255f, + color.getGreen() / 255f, + color.getBlue() / 255f, + 1); + + + /* + //debug only, so a spike will render in all locations + renderToBuffer( + matrixStack, + vertexBuilder, + light, + OverlayTexture.NO_OVERLAY, + color.getRed(), + color.getGreen(), + color.getBlue(), + 1);*/ + + + } +} diff --git a/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java new file mode 100644 index 000000000..28b150fa1 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java @@ -0,0 +1,52 @@ +package leaf.cosmere.client.render.curio.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import leaf.cosmere.client.render.curio.CuriosLayerDefinitions; +import leaf.cosmere.client.render.curio.model.BraceletModel; +import leaf.cosmere.client.render.curio.model.SpikeModel; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; +import top.theillusivec4.curios.api.client.ICurioRenderer; + +public class BraceletRenderer implements ICurioRenderer +{ + BraceletModel model; + + public BraceletRenderer() + { + final ModelPart modelPart = Minecraft.getInstance().getEntityModels().bakeLayer(CuriosLayerDefinitions.BRACELET); + model = new BraceletModel(modelPart); + } + + @Override + public > void render( + ItemStack stack, + SlotContext slotContext, + PoseStack matrixStack, + RenderLayerParent renderLayerParent, + MultiBufferSource renderTypeBuffer, + int light, float limbSwing, + float limbSwingAmount, + float partialTicks, + float ageInTicks, + float netHeadYaw, + float headPitch) + { + + LivingEntity entity = slotContext.entity(); + + this.model.prepareMobModel(entity, limbSwing, limbSwingAmount, partialTicks); + this.model.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + + ICurioRenderer.followBodyRotations(entity, this.model); + + this.model.render(stack, slotContext, matrixStack, renderTypeBuffer, light); + + } +} diff --git a/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java b/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java new file mode 100644 index 000000000..e3f9b7750 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java @@ -0,0 +1,51 @@ +package leaf.cosmere.client.render.curio.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import leaf.cosmere.client.render.curio.CuriosLayerDefinitions; +import leaf.cosmere.client.render.curio.model.SpikeModel; +import net.minecraft.client.Minecraft; +import net.minecraft.client.model.EntityModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; +import top.theillusivec4.curios.api.client.ICurioRenderer; + +public class SpikeRenderer implements ICurioRenderer +{ + SpikeModel model; + + public SpikeRenderer() + { + final ModelPart modelPart = Minecraft.getInstance().getEntityModels().bakeLayer(CuriosLayerDefinitions.SPIKE); + model = new SpikeModel(modelPart); + } + + @Override + public > void render( + ItemStack stack, + SlotContext slotContext, + PoseStack matrixStack, + RenderLayerParent renderLayerParent, + MultiBufferSource renderTypeBuffer, + int light, float limbSwing, + float limbSwingAmount, + float partialTicks, + float ageInTicks, + float netHeadYaw, + float headPitch) + { + + LivingEntity entity = slotContext.entity(); + + this.model.prepareMobModel(entity, limbSwing, limbSwingAmount, partialTicks); + this.model.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); + + ICurioRenderer.followBodyRotations(entity, this.model); + + this.model.render(stack, slotContext, matrixStack, renderTypeBuffer, light); + + } +} diff --git a/src/main/java/leaf/cosmere/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/commands/CosmereCommand.java index 8cd360cb7..bda10a197 100644 --- a/src/main/java/leaf/cosmere/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/commands/CosmereCommand.java @@ -11,6 +11,7 @@ import com.mojang.brigadier.CommandDispatcher; import leaf.cosmere.Cosmere; import leaf.cosmere.commands.arguments.ManifestationsArgumentType; +import leaf.cosmere.commands.subcommands.EyeCommand; import leaf.cosmere.commands.subcommands.ManifestationCommand; import leaf.cosmere.commands.subcommands.TestCommand; import net.minecraft.commands.CommandSourceStack; @@ -25,7 +26,8 @@ public class CosmereCommand public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal(Cosmere.MODID) - .then(TestCommand.register(dispatcher)) + //.then(TestCommand.register(dispatcher)) + .then(EyeCommand.register(dispatcher)) .then(ManifestationCommand.register(dispatcher)) ); } diff --git a/src/main/java/leaf/cosmere/commands/subcommands/EyeCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/EyeCommand.java new file mode 100644 index 000000000..12bf26f51 --- /dev/null +++ b/src/main/java/leaf/cosmere/commands/subcommands/EyeCommand.java @@ -0,0 +1,62 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.commands.subcommands; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Constants; +import leaf.cosmere.utils.helpers.TextHelper; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.server.level.ServerPlayer; + +import java.util.Collection; + +public class EyeCommand extends ModCommand +{ + + + public static ArgumentBuilder register(CommandDispatcher dispatcher) + { + return Commands.literal("eyeHeight") + .then(Commands.argument("height", IntegerArgumentType.integer(0, 3)) + .executes(EyeCommand::setEyeHeight) + .then(Commands.argument("target", EntityArgument.players()) + .requires(context -> context.hasPermission(2)) + .executes(EyeCommand::setEyeHeight))); + } + + private static int setEyeHeight(CommandContext context) throws CommandSyntaxException + { + Collection players = getPlayers(context, 3); + int value = IntegerArgumentType.getInteger(context, "height"); + + for (ServerPlayer player : players) + { + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + spiritweb.setEyeHeight(-value); + spiritweb.syncToClients(null); + + }); + } + + context.getSource().sendSuccess(TextHelper.createTranslatedText(Constants.Strings.SET_EYE_HEIGHT_SUCCESS, value), true); + + return SINGLE_SUCCESS; + } + + @Override + public int run(CommandContext context) throws CommandSyntaxException + { + return SINGLE_SUCCESS; + } + +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index 117caa32d..65f62fa43 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -29,8 +29,6 @@ import java.util.ArrayList; import java.util.Collection; -import static leaf.cosmere.constants.Constants.Strings.POWERS_FOUND; - public class ManifestationCommand extends ModCommand { @@ -42,7 +40,7 @@ public int run(CommandContext context) throws CommandSyntaxE private static int check(CommandContext context) throws CommandSyntaxException { - Collection players = getPlayers(context, 2); + Collection players = getPlayers(context, 3); for (ServerPlayer player : players) { @@ -50,7 +48,7 @@ private static int check(CommandContext context) throws Comm { CommandSourceStack source = context.getSource(); - TranslatableComponent powersFound = new TranslatableComponent(POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); + TranslatableComponent powersFound = new TranslatableComponent(Constants.Strings.POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); final BaseComponent leftBracketTextComponent = new TextComponent("["); final BaseComponent rightBracketTextComponent = new TextComponent("]"); @@ -75,7 +73,7 @@ private static int check(CommandContext context) throws Comm private static int clear(CommandContext context) throws CommandSyntaxException { - Collection players = getPlayers(context, 2); + Collection players = getPlayers(context, 3); for (ServerPlayer player : players) { @@ -94,7 +92,7 @@ private static int clear(CommandContext context) throws Comm private static int reroll(CommandContext context) throws CommandSyntaxException { - Collection players = getPlayers(context, 2); + Collection players = getPlayers(context, 3); for (ServerPlayer player : players) { @@ -118,7 +116,7 @@ private static int reroll(CommandContext context) throws Com private static int give(CommandContext context) throws CommandSyntaxException { - Collection players = getPlayers(context, 2); + Collection players = getPlayers(context, 4); for (ServerPlayer player : players) { @@ -146,7 +144,7 @@ private static int give(CommandContext context) throws Comma private static int remove(CommandContext context) throws CommandSyntaxException { - Collection players = getPlayers(context, 2); + Collection players = getPlayers(context, 4); for (ServerPlayer player : players) { @@ -200,15 +198,4 @@ private static int remove(CommandContext context) throws Com .executes(ManifestationCommand::remove)))) ; // end add } - - //I'm not entirely certain this works. - public static Collection getPlayers(CommandContext context, int numOfParams) throws CommandSyntaxException { - Collection players = new ArrayList<>(); - if(context.getInput().split(" ").length == numOfParams) { - players.add(context.getSource().getPlayerOrException()); - } else { - players = EntityArgument.getPlayers(context, "target"); - } - return players; - } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java index f7021742b..ffde0b87f 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ModCommand.java @@ -5,24 +5,32 @@ package leaf.cosmere.commands.subcommands; import com.mojang.brigadier.Command; +import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.server.level.ServerPlayer; + +import java.util.ArrayList; +import java.util.Collection; public abstract class ModCommand implements Command { - private int permLevel = 2; - - public ModCommand() - { - } - - public ModCommand(int level) - { - this.permLevel = level; - } + public ModCommand() { } - public boolean canExecute(CommandSourceStack source) throws CommandSyntaxException + //I'm not entirely certain this works. + public static Collection getPlayers(CommandContext context, int numOfParams) throws CommandSyntaxException { - return source.hasPermission(permLevel); + Collection players = new ArrayList<>(); + final String[] s = context.getInput().split(" "); + if (s.length <= numOfParams) + { + players.add(context.getSource().getPlayerOrException()); + } + else + { + players = EntityArgument.getPlayers(context, "target"); + } + return players; } } diff --git a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java index 39647404e..c10f896b7 100644 --- a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java +++ b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java @@ -4,6 +4,7 @@ package leaf.cosmere.compat.curios; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModList; @@ -47,9 +48,6 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) SlotTypePreset[] oneSlot = { SlotTypePreset.BACK, SlotTypePreset.BELT, - SlotTypePreset.BODY, - SlotTypePreset.HEAD, - SlotTypePreset.NECKLACE, }; for (SlotTypePreset type : oneSlot) @@ -58,10 +56,10 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) } SlotTypePreset[] twoSlot = { + SlotTypePreset.HEAD, SlotTypePreset.HANDS, - SlotTypePreset.RING, SlotTypePreset.CHARM, - SlotTypePreset.BRACELET, + SlotTypePreset.BODY, SlotTypePreset.NECKLACE, }; @@ -69,6 +67,13 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) { InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> type.getMessageBuilder().size(2).build()); } + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.BRACELET.getMessageBuilder().size(4).build()); + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.RING.getMessageBuilder().size(8).build()); + + //custom slots + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("legs").priority(450).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_LEGGINGS).build()); + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("feet").priority(500).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_BOOTS).build()); + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("lynchpin").priority(59).size(1).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); } } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 45ec4e55d..54d074da7 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -105,6 +105,7 @@ public static class Strings public static final String POWERS_FOUND = "command.cosmere.power.found"; + public static final String SET_EYE_HEIGHT_SUCCESS = "command.cosmere.eyeheight.set.success"; public static final String CONTAINED_METALS = "tooltip.cosmere.metals.contained"; diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 57a3bcf27..5a06eb6cd 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -34,6 +34,7 @@ protected void addTags() { add(TagsRegistry.Items.CURIO_BRACELET, ItemsRegistry.BANDS_OF_MOURNING.get()); + add(TagsRegistry.Items.CURIO_HANDS, ItemsRegistry.BANDS_OF_MOURNING.get()); for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -43,14 +44,22 @@ protected void addTags() add(TagsRegistry.Items.CURIO_NECKLACE, metalType.getNecklaceItem()); add(TagsRegistry.Items.CURIO_RING, metalType.getRingItem()); add(TagsRegistry.Items.CURIO_BRACELET, metalType.getBraceletItem()); + add(TagsRegistry.Items.CURIO_HANDS, metalType.getBraceletItem()); } if (metalType.hasHemalurgicEffect()) { HemalurgicSpikeItem spikeItem = metalType.getSpikeItem(); - - add(TagsRegistry.Items.CURIO_ANY, spikeItem); add(TagsRegistry.Items.METAL_SPIKE, spikeItem); + + add(TagsRegistry.Items.CURIO_HEAD, spikeItem); + add(TagsRegistry.Items.CURIO_LYNCHPIN, spikeItem); + add(TagsRegistry.Items.CURIO_BACK, spikeItem); + add(TagsRegistry.Items.CURIO_BODY, spikeItem); + add(TagsRegistry.Items.CURIO_BRACELET, spikeItem); + add(TagsRegistry.Items.CURIO_HANDS, spikeItem); + add(TagsRegistry.Items.CURIO_LEGS, spikeItem); + add(TagsRegistry.Items.CURIO_FEET, spikeItem); } // tell the ingots that our ingots are related diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 6582fdd59..28b4a1bda 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -5,6 +5,7 @@ package leaf.cosmere.datagen.language; import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; @@ -228,11 +229,25 @@ else if (item instanceof MetalmindItem) add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); } + //curios + + add("curios.identifier.feet", "Feet"); + add("curios.identifier.legs", "Legs"); + //Sound Schemes //Configs //Commands + add(POWER_INVALID, "Invalid power"); + add(POWER_SET_SUCCESS, "Successfully set power to: %s"); + add(POWER_SET_FAIL, "Failed to update power"); + add(POWER_MODE_SET, "Mode set to: %s"); + add(POWER_ACTIVE, "Power now active: %s"); + add(POWER_INACTIVE, "Power now inactive: %s"); + + add(POWERS_FOUND, "Powers found for: %s \n"); + add(Constants.Strings.SET_EYE_HEIGHT_SUCCESS, "Set eye height to %s"); //Tooltips @@ -273,14 +288,6 @@ else if (item instanceof MetalmindItem) //powers - add(POWER_INVALID, "Invalid power"); - add(POWER_SET_SUCCESS, "Successfully set power to: %s"); - add(POWER_SET_FAIL, "Failed to update power"); - add(POWER_MODE_SET, "Mode set to: %s"); - add(POWER_ACTIVE, "Power now active: %s"); - add(POWER_INACTIVE, "Power now inactive: %s"); - - add(POWERS_FOUND, "Powers found for: %s \n"); add(CONTAINED_POWERS_FOUND, "Hemalurgic Charge:"); diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index de5021e6d..be5c4b24b 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -12,6 +12,7 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; +import top.theillusivec4.curios.api.CuriosApi; import java.util.Arrays; import java.util.Map; @@ -23,16 +24,21 @@ public class TagsRegistry public static class Items { - public static final TagKey CURIO_ANY = makeItem("curios", "curio"); - public static final TagKey CURIO_BACK = makeItem("curios", "back"); - public static final TagKey CURIO_BELT = makeItem("curios", "belt"); - public static final TagKey CURIO_BODY = makeItem("curios", "body"); - public static final TagKey CURIO_BRACELET = makeItem("curios", "bracelet"); - public static final TagKey CURIO_CHARM = makeItem("curios", "charm"); - public static final TagKey CURIO_HEAD = makeItem("curios", "head"); - public static final TagKey CURIO_HANDS = makeItem("curios", "hands"); - public static final TagKey CURIO_NECKLACE = makeItem("curios", "necklace"); - public static final TagKey CURIO_RING = makeItem("curios", "ring"); + public static final TagKey CURIO_ANY = makeItem(CuriosApi.MODID, "curio"); + public static final TagKey CURIO_BACK = makeItem(CuriosApi.MODID, "back"); + public static final TagKey CURIO_BELT = makeItem(CuriosApi.MODID, "belt"); + public static final TagKey CURIO_BODY = makeItem(CuriosApi.MODID, "body"); + public static final TagKey CURIO_BRACELET = makeItem(CuriosApi.MODID, "bracelet"); + public static final TagKey CURIO_CHARM = makeItem(CuriosApi.MODID, "charm"); + public static final TagKey CURIO_HEAD = makeItem(CuriosApi.MODID, "head"); + public static final TagKey CURIO_HANDS = makeItem(CuriosApi.MODID, "hands"); + public static final TagKey CURIO_NECKLACE = makeItem(CuriosApi.MODID, "necklace"); + public static final TagKey CURIO_RING = makeItem(CuriosApi.MODID, "ring"); + public static final TagKey CURIO_LEGS = makeItem(CuriosApi.MODID, "legs"); + public static final TagKey CURIO_FEET = makeItem(CuriosApi.MODID, "feet"); + + + public static final TagKey CURIO_LYNCHPIN = makeItem(CuriosApi.MODID, "lynchpin"); public static TagKey METAL_SPIKE = makeItem("cosmere", "spike"); From f7c345c55a3e266e29a843c1e84ee707ab73d81e Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:47:59 +1200 Subject: [PATCH 0184/1090] Allomancy boost effect fix --- .../leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 1ed51e55f..06cd16f61 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -29,7 +29,7 @@ public AllomancyBoostEffect(Metals.MetalType type, MobEffectCategory effectType) addAttributeModifier( attributeRegistered.getValue().get(), "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", - 0.334D, + 1.334D, AttributeModifier.Operation.MULTIPLY_TOTAL); }); } From 455077a3821b4a7abb2564fd5395b7727fca2506 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:48:43 +1200 Subject: [PATCH 0185/1090] script cleanup --- src/main/java/leaf/cosmere/items/GemItem.java | 18 ------------------ .../leaf/cosmere/items/gems/PolestoneItem.java | 6 ------ 2 files changed, 24 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/items/GemItem.java diff --git a/src/main/java/leaf/cosmere/items/GemItem.java b/src/main/java/leaf/cosmere/items/GemItem.java deleted file mode 100644 index 566c10788..000000000 --- a/src/main/java/leaf/cosmere/items/GemItem.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.items; - -import leaf.cosmere.itemgroups.CosmereItemGroups; -import leaf.cosmere.properties.PropTypes; -import net.minecraft.world.item.Rarity; - -public class GemItem extends ChargeableItemBase -{ - public GemItem() - { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); - } - -} diff --git a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java index c854ed7bf..1128442a4 100644 --- a/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java +++ b/src/main/java/leaf/cosmere/items/gems/PolestoneItem.java @@ -52,12 +52,6 @@ public Roshar.GemSize getSize() return this.gemSize; } - @Override - public int getEntityLifespan(ItemStack itemStack, Level world) - { - return Integer.MAX_VALUE; - } - @Override public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) { From 2470c7f2748700e69f0f2da539c56f829d97dc2b Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:49:16 +1200 Subject: [PATCH 0186/1090] Allow tapping aluminum so it's faster to drain and re-use --- .../leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java index c15255568..ffea1b2e9 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java @@ -17,7 +17,7 @@ public FeruchemyAluminum(Metals.MetalType metalType) @Override public int modeMin(ISpiritweb data) { - return -1; + return -10; } @Override From fb40bbcbcc892a24ae526c7bdb09d01ee5a6763f Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:59:04 +1200 Subject: [PATCH 0187/1090] Fix spikes not auto equipping from mods like corail tombstone. --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 1 + src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 1 + .../java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 6 ------ 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 46f8d18fa..09d793a74 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -2ec6d0fb720a01bbb04a0920095831d88e28e6d1 assets/cosmere/lang/en_us.json +b20ae8977aca9a89ad8b32adc3e79ce779413ea5 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 73873a645..84f22edb5 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -179,6 +179,7 @@ "cosmere.windwhisperer": "Windwhisperer", "curios.identifier.feet": "Feet", "curios.identifier.legs": "Legs", + "curios.identifier.lynchpin": "Lynch Pin", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "effect.cosmere.allomancy_boost": "Allomancy Boost", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 28b4a1bda..c0af7c2b0 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -233,6 +233,7 @@ else if (item instanceof MetalmindItem) add("curios.identifier.feet", "Feet"); add("curios.identifier.legs", "Legs"); + add("curios.identifier.lynchpin", "Lynch Pin"); //Sound Schemes diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index aa25175db..46571467b 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -351,12 +351,6 @@ public boolean canEquip(String identifier, LivingEntity livingEntity, ItemStack return true; } - @Override - public boolean canEquipFromUse(SlotContext slotContext, ItemStack stack) - { - //has to be a conscious decision to stab yourself - return true; - } @Override public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stack) From b585270eecb13b6c9fb3cbab8ebab2dfc901c795 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 19:59:15 +1200 Subject: [PATCH 0188/1090] adding some things into the iron/steel whitelist --- .../cosmere/manifestation/allomancy/AllomancyIronSteel.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index fc6d1c35c..c867f7c8f 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -429,6 +429,9 @@ private static void createWhitelist() //add the obvious stuff s_whiteList.add("lightning_rod"); + s_whiteList.add("netherite"); + s_whiteList.add("ancient_debris"); + s_whiteList.add("hopper"); String[] metalNames = Arrays.stream(Metals.MetalType.values()).map(Metals.MetalType::getName).toArray(String[]::new); From eb0f63bdba202e62f0b81674545b3fa744162280 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 1 Jun 2022 20:10:12 +1200 Subject: [PATCH 0189/1090] bump version and update changelog --- Changelog.md | 9 +++++++++ gradle.properties | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index d20a80bf4..d2cb97e89 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,14 @@ The Cosmere Project - For 1.16 Minecraft +B40 + +Curio spike and bracelet rendering again! Yay :D +Allomancy boost fix. Was accidentally making weaker instead of stronger. +Allow tapping aluminum at a larger rate, so it's faster to drain and re-use. +Fix spikes not auto equipping from mods like corail tombstone. +Adding more stuff to the default iron/steel whitelist + + B39 Fix hemalurgic spikes not stealing powers properly diff --git a/gradle.properties b/gradle.properties index 7c841e74b..c6cb8cc95 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.0 parchment_version=2022.05.02 jar_name=Cosmere-Mod -build_number=40 +build_number=41 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 9f03973bdc7b9ce77144267572baae4186f14d9e Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 2 Jun 2022 09:14:28 +1200 Subject: [PATCH 0190/1090] Clean up and fix accidental copy paste. --- .../render/curio/model/BraceletModel.java | 17 +---------------- .../client/render/curio/model/SpikeModel.java | 19 +------------------ .../curio/renderer/BraceletRenderer.java | 1 - 3 files changed, 2 insertions(+), 35 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java b/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java index 0f659ce03..97a630bd4 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java +++ b/src/main/java/leaf/cosmere/client/render/curio/model/BraceletModel.java @@ -1,20 +1,5 @@ /* - * Copyright (c) 2018-2020 C4 - * - * This file is part of Curios, a mod made for Minecraft. - * - * Curios is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Curios is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Curios. If not, see . + * File created ~ 30 - 5 - 2022 ~ Leaf */ package leaf.cosmere.client.render.curio.model; diff --git a/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java index 124502a86..c78f38da8 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java +++ b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java @@ -1,20 +1,5 @@ /* - * Copyright (c) 2018-2020 C4 - * - * This file is part of Curios, a mod made for Minecraft. - * - * Curios is free software: you can redistribute it and/or modify it - * under the terms of the GNU Lesser General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Curios is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Curios. If not, see . + * File created ~ 30 - 5 - 2022 ~ Leaf */ package leaf.cosmere.client.render.curio.model; @@ -24,8 +9,6 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.items.IHasMetalType; -import leaf.cosmere.items.MetalmindItem; -import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.client.model.HumanoidModel; import net.minecraft.client.model.geom.ModelPart; diff --git a/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java index 28b150fa1..e7eda9469 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java +++ b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java @@ -3,7 +3,6 @@ import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.client.render.curio.CuriosLayerDefinitions; import leaf.cosmere.client.render.curio.model.BraceletModel; -import leaf.cosmere.client.render.curio.model.SpikeModel; import net.minecraft.client.Minecraft; import net.minecraft.client.model.EntityModel; import net.minecraft.client.model.geom.ModelPart; From b63aacdd57ac19e1b6bb55918d41b758d171a59b Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 2 Jun 2022 17:01:07 +1200 Subject: [PATCH 0191/1090] debuffed compounding, so you can get around tap 5 while still gaining attributes --- Changelog.md | 5 +++++ .../cosmere/manifestation/allomancy/AllomancyBase.java | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index d2cb97e89..c88216590 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,10 @@ The Cosmere Project - For 1.16 Minecraft +B41 + +Changed compound amount to be dependant on allomantic strength and mode. + + B40 Curio spike and bracelet rendering again! Yay :D diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index cea904ee0..d5fad8730 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -124,7 +124,12 @@ public void tick(ISpiritweb data) if (feruchemyMode != 0 && isActiveTick) { //todo config variable - int secondsOfFeruchemyToAdd = 25; + //eg 10 base, * 2 for flaring mode = 20 + //or from spike 7 * 2 = 14 + //then add the config value + //max should be around 30. 50 was way too much + + int secondsOfFeruchemyToAdd = (int) Math.floor(getRange(data)) - 5; if (null != MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, (-secondsOfFeruchemyToAdd) * (mode), true, true)) { //compound successful From 730930b007ef770bca263089967af9265aaa2c9f Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 3 Jun 2022 10:17:42 +1200 Subject: [PATCH 0192/1090] Tidied up player clone code for when player dies or returns from the end. --- Changelog.md | 3 +- .../cap/entity/SpiritwebCapability.java | 48 +++++++++++++++++++ .../cosmere/handlers/PlayerEventHandler.java | 28 ----------- 3 files changed, 50 insertions(+), 29 deletions(-) diff --git a/Changelog.md b/Changelog.md index c88216590..4adb2bb3f 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,7 +2,8 @@ The Cosmere Project - For 1.16 Minecraft B41 -Changed compound amount to be dependant on allomantic strength and mode. +Changed compound amount to be dependent on allomantic strength and mode. +Tidied up player clone code for when player dies or returns from the end. B40 diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 4a41f2fa8..9ce41f033 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -305,12 +305,60 @@ public void transferFrom(ISpiritweb oldSpiritWeb) //TODO config options that let you choose what can be transferred + //transfer attributes + var oldAttMap = oldWeb.getLiving().getAttributes(); + var newAttMap = getLiving().getAttributes(); + + // A player's manifestations is now determined by attributes, which lets me do cool things like mess with strength in a power. + // So if we've set a base value for an attribute on the player, copy it to the new one. + for (RegistryObject attributeRegistryObject : AttributesRegistry.COSMERE_ATTRIBUTES.values()) + { + if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) + { + AttributeInstance oldPlayerAttribute = oldAttMap.getInstance(attributeRegistryObject.get()); + AttributeInstance newPlayerAttribute = newAttMap.getInstance(attributeRegistryObject.get()); + + if (newPlayerAttribute != null && oldPlayerAttribute != null) + { + // make sure that they match what the old player entity had. + if (oldPlayerAttribute.getBaseValue() > 0) + { + newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); + } + //clear out the attributes that were placed on the newly cloned player at creation + else if (newPlayerAttribute.getBaseValue() > 0) + { + newPlayerAttribute.setBaseValue(0); + } + } + } + } + stormlightStored += oldWeb.stormlightStored; biochromaticBreathStored += oldWeb.biochromaticBreathStored; for (Metals.MetalType metalType : oldWeb.METALS_INGESTED.keySet()) { METALS_INGESTED.put(metalType, oldWeb.METALS_INGESTED.get(metalType)); } + + selectedManifestation = oldWeb.manifestation(); + + eyeHeight = oldWeb.getEyeHeight(); + + //todo client config? not sure that's possible on a server side function + for (AManifestation manifestation : oldWeb.getAvailableManifestations()) + { + int mode = oldWeb.getMode(manifestation); + if (mode != 0) + { + setMode(manifestation, mode); + } + } + + if (oldWeb.hasBeenInitialized) + { + setHasBeenInitialized(); + } } @Override diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index 807e7a1d4..b3c400be8 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -40,34 +40,6 @@ public static void onPlayerClone(PlayerEvent.Clone event) newSpiritWeb.transferFrom(oldSpiritWeb); })); - - var oldAttMap = event.getOriginal().getAttributes(); - var newAttMap = event.getPlayer().getAttributes(); - - // A player's manifestations is now determined by attributes, which lets me do cool things like mess with strength in a power. - // So if we've set a base value for an attribute on the player, copy it to the new one. - for (RegistryObject attributeRegistryObject : AttributesRegistry.COSMERE_ATTRIBUTES.values()) - { - if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) - { - AttributeInstance oldPlayerAttribute = oldAttMap.getInstance(attributeRegistryObject.get()); - AttributeInstance newPlayerAttribute = newAttMap.getInstance(attributeRegistryObject.get()); - - if (newPlayerAttribute != null && oldPlayerAttribute != null) - { - // make sure that they match what the old player entity had. - if (oldPlayerAttribute.getBaseValue() > 0) - { - newPlayerAttribute.setBaseValue(oldPlayerAttribute.getBaseValue()); - } - //clear out the attributes that were placed on the newly cloned player at creation - else if (newPlayerAttribute.getBaseValue() > 0) - { - newPlayerAttribute.setBaseValue(0); - } - } - } - } } @SubscribeEvent From 95776c03a410f9ab79f1261ceafe02478c397402 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 3 Jun 2022 13:32:38 +1200 Subject: [PATCH 0193/1090] feruchemical copper stores levels rather than points. --- .../leaf/cosmere/charge/ItemChargeHelper.java | 2 +- .../cosmere/charge/MetalmindChargeHelper.java | 4 +- .../feruchemy/FeruchemyBase.java | 29 +++++ .../feruchemy/FeruchemyCopper.java | 100 ++++++++++-------- .../leaf/cosmere/utils/helpers/XPHelper.java | 93 ++++++++-------- 5 files changed, 135 insertions(+), 93 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java index cec99d180..3430efb26 100644 --- a/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/ItemChargeHelper.java @@ -159,7 +159,7 @@ public static ItemStack adjustChargeExact(Player player, int adjustValue, boolea final UUID attunedPlayer = chargeItemSlot.getAttunedPlayer(stackInSlot); if (checkPlayer && playerUnableToAccess //if we need to make sure the player has access and they do not || //or if the player is trying to store in an unsealed metalmind but have identity - adjustValue < 0 && !isStoringIdentity && attunedPlayer != null && attunedPlayer.compareTo(Constants.NBT.UNKEYED_UUID) == 0) + storing && !isStoringIdentity && attunedPlayer != null && attunedPlayer.compareTo(Constants.NBT.UNKEYED_UUID) == 0) { continue; } diff --git a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java index 982d19e14..bc081550b 100644 --- a/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java +++ b/src/main/java/leaf/cosmere/charge/MetalmindChargeHelper.java @@ -41,7 +41,7 @@ private static Predicate getIsItemInvalidMetalmind(Metals.MetalType m }; } - public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalType metalType, int chargeToGet, boolean remove, boolean checkPlayer) + public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalType metalType, int adjustValue, boolean remove, boolean checkPlayer) { List items = ItemChargeHelper.getChargeItems(player); List acc = ItemChargeHelper.getChargeCurios(player); @@ -55,6 +55,6 @@ public static ItemStack adjustMetalmindChargeExact(Player player, Metals.MetalTy return null; } - return ItemChargeHelper.adjustChargeExact(player, chargeToGet, remove, checkPlayer, items, acc); + return ItemChargeHelper.adjustChargeExact(player, adjustValue, remove, checkPlayer, items, acc); } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index bb6b35e47..4cc5414f5 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -62,6 +62,35 @@ public int modeMin(ISpiritweb data) return -10; } + public boolean isStoring(ISpiritweb data) + { + return getMode(data) > 0; + } + public boolean isTapping(ISpiritweb data) + { + return getMode(data) < 0; + } + + public int getCost(int mode) + { + // if we are tapping + //check if there is charges to tap + if (mode < 0) + { + //wanting to tap + //get cost + return mode <= -3 ? mode : -(mode * mode); + + } + //if we are storing + //check if there is space to store + else if (mode > 0) + { + return mode; + } + return 0; + } + @Override public void tick(ISpiritweb data) { diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index f66e33be0..5c401d9d8 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -7,12 +7,11 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.EffectsHelper; import leaf.cosmere.utils.helpers.XPHelper; -import net.minecraft.world.effect.MobEffect; -import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; public class FeruchemyCopper extends FeruchemyBase { @@ -24,13 +23,13 @@ public FeruchemyCopper(Metals.MetalType metalType) @Override public int modeMin(ISpiritweb data) { - return -20; + return -1; } @Override public int modeMax(ISpiritweb data) { - return 20; + return 1; } @Override @@ -54,62 +53,74 @@ public void tick(ISpiritweb data) return; } - performXPAdjustment(playerEntity, mode); + performXPAdjustment(data, playerEntity); } - private int getCost(int mode) + + private void performXPAdjustment(ISpiritweb data, Player playerEntity) { - // if we are tapping - //check if there is charges to tap - if (mode < 0) - { - //wanting to tap - //get cost - return mode <= -3 ? -(mode * mode) : mode; + float experiencePoints;// = playerEntity.isCreative() ? 10 : mode; + + final boolean storing = isStoring(data); + final boolean tapping = isTapping(data); + if (storing) // active storage + { + //store xp progress, if any. + if (playerEntity.experienceProgress > 0) + { + experiencePoints = playerEntity.experienceProgress; + } + //else store a level's worth of xp points. + else + { + experiencePoints = XPHelper.getXpNeededForNextLevel(playerEntity.experienceLevel - 1); + } } - //if we are storing - //check if there is space to store - else if (mode > 0) + else { - return mode; + if (tapping) // tapping storage + { + experiencePoints = XPHelper.getXpNeededForNextLevel(playerEntity.experienceLevel); + } + else + { + return; + } } - return 0; - } - private void performXPAdjustment(Player playerEntity, int mode) - { - int cost = getCost(mode); - int experiencePoints = playerEntity.isCreative() ? 10 : cost; + //mode < 0 means we are tapping eg. removing from metalmind + //mode > 0 means we are storing eg. adding to the metalmind - if (playerEntity.totalExperience > cost && MetalmindChargeHelper.adjustMetalmindChargeExact(playerEntity, metalType, -experiencePoints, true, true) != null) - { - //successfully added xp to metalmind - if (!playerEntity.isCreative()) + //successfully added xp to metalmind + final int xp = Mth.floor(experiencePoints); + + + if ((storing && playerEntity.totalExperience >= xp) || tapping) + { + final ItemStack itemStack = + MetalmindChargeHelper.adjustMetalmindChargeExact( + playerEntity, + metalType, + storing ? -xp : xp, + true, + true); + if (itemStack != null) { //adjust player xp - if (cost > 0) // active storage + if (storing) // active storage { - decreasePlayerExperience(playerEntity, cost); + decreasePlayerLevel(playerEntity, xp); } else // tapping storage { - playerEntity.giveExperiencePoints(-cost); + XPHelper.giveExperiencePoints(playerEntity, xp); } - } - - - MobEffect effect = getEffect(mode); - - MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - - //potion effect doesn't do anything other than tell the player they are storing. - playerEntity.addEffect(currentEffect); } } @@ -118,12 +129,11 @@ private void performXPAdjustment(Player playerEntity, int mode) //unless it does, in which case I'm a goober who can't read. //either way, thank you xreliquary and P3pp3rF1y showing their example of decreasing player xp nicely. //https://github.com/P3pp3rF1y/Reliquary/blob/1.16.x/src/main/java/xreliquary/items/HeroMedallionItem.java - private void decreasePlayerExperience(Player player, int pointsToRemove) + private static void decreasePlayerLevel(Player player, int pointsToRemove) { - player.totalExperience -= pointsToRemove; - int newLevel = XPHelper.getLevelForExperience(player.totalExperience); - player.experienceLevel = newLevel; - player.experienceProgress = (float) (player.totalExperience - XPHelper.getExperienceForLevel(newLevel)) / player.getXpNeededForNextLevel(); + player.totalExperience = Math.max(player.totalExperience - pointsToRemove, 0); + player.experienceLevel = XPHelper.getLevelForTotalExperience(player.totalExperience); + player.experienceProgress = 0; } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java index 70c1c1910..adc0ec461 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java @@ -3,78 +3,81 @@ */ /* - * File created ~ 27 - 4 - 2021 ~ Leaf - * - * - * Code obtained from xReliquary @see {https://raw.githubusercontent.com/P3pp3rF1y/Reliquary/c18065d5874c106ef1c1befe9cbde4a4b754a05b/src/main/java/xreliquary/util/XpHelper.java} - * - * who in turn got it from: - * - * Code originally from EnderIO @see {https://github.com/SleepyTrousers/EnderIO/blob/master/src/main/java/crazypants/enderio/xp/XpUtil.java} + * File updated ~ 03 - 6 - 2022 ~ Leaf * */ package leaf.cosmere.utils.helpers; -/** - * - */ +import net.minecraft.util.Mth; +import net.minecraft.world.entity.player.Player; + public class XPHelper { - private static final int RATIO = 20; - public static int liquidToExperience(int liquid) + /** + * A copy of the related function in Player, except without the call to forge event + * see {@link net.minecraft.world.entity.player.Player#giveExperiencePoints}#() + */ + public static void giveExperiencePoints(Player player, int points) { - return liquid / RATIO; - } + player.increaseScore(points); + player.experienceProgress += (float) points / (float) player.getXpNeededForNextLevel(); + player.totalExperience = Mth.clamp(player.totalExperience + points, 0, Integer.MAX_VALUE); - public static int experienceToLiquid(int xp) - { - return xp * RATIO; - } + while (player.experienceProgress < 0.0F) + { + float f = player.experienceProgress * (float) player.getXpNeededForNextLevel(); + if (player.experienceLevel > 0) + { + player.giveExperienceLevels(-1); + player.experienceProgress = 1.0F + f / (float) player.getXpNeededForNextLevel(); + } + else + { + player.giveExperienceLevels(-1); + player.experienceProgress = 0.0F; + } + } - public static int getExperienceForLevel(int level) - { - if (level == 0) + while (player.experienceProgress >= 1.0F) { - return 0; + player.experienceProgress = (player.experienceProgress - 1.0F) * (float) player.getXpNeededForNextLevel(); + player.giveExperienceLevels(1); + player.experienceProgress /= (float) player.getXpNeededForNextLevel(); } - if (level > 0 && level < 16) + } + + + /** + * see {@link net.minecraft.world.entity.player.Player#getXpNeededForNextLevel}#() + */ + public static int getXpNeededForNextLevel(int playerLevel) + { + if (playerLevel >= 30) { - return level * (12 + level * 2) / 2; + return 112 + (playerLevel - 30) * 9; } - else if (level > 15 && level < 31) + else if (playerLevel >= 15) { - return (level - 15) * (69 + (level - 15) * 5) / 2 + 315; + return 37 + (playerLevel - 15) * 5; } else { - return (level - 30) * (215 + (level - 30) * 9) / 2 + 1395; + return 7 + playerLevel * 2; } } - public static int getExperienceLimitOnLevel(int level) - { - return level >= 30 ? 112 + (level - 30) * 9 : (level >= 15 ? 37 + (level - 15) * 5 : 7 + level * 2); - } - - public static int getLevelForExperience(int experience) + public static int getLevelForTotalExperience(int experience) { int i = 0; - while (getExperienceForLevel(i) <= experience) + int xp = 0; + while (xp <= experience) { + xp += getXpNeededForNextLevel(i); + i++; } return i - 1; } - - public static int durabilityToXp(int durability) - { - return durability / 2; - } - - public static int xpToDurability(int xp) - { - return xp * 2; - } } From d5f4d2fecd49c2b00f8059b621d7d8ae7c6f080f Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:12:10 +1200 Subject: [PATCH 0194/1090] updating forge to 40.1.30 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c6cb8cc95..25759e0b6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.jvmargs=-Xmx8G # #Tue Feb 01 08:46:10 NZDT 2022 minecraft_version=1.18.2 -forge_version=1.18.2-40.1.0 +forge_version=1.18.2-40.1.30 parchment_version=2022.05.02 jar_name=Cosmere-Mod From ff9b2ae6199deed671c6a9fa6e9fff83b6dcb911 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:12:42 +1200 Subject: [PATCH 0195/1090] Lynch to Linch --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 2 +- .../client/render/curio/model/SpikeModel.java | 12 ++++++------ .../leaf/cosmere/compat/curios/CuriosCompat.java | 2 +- .../java/leaf/cosmere/datagen/items/ItemTagsGen.java | 2 +- .../leaf/cosmere/datagen/language/EngLangGen.java | 2 +- .../java/leaf/cosmere/registry/TagsRegistry.java | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 09d793a74..e883c0332 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -829,7 +829,7 @@ fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/bracelet.json fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/hands.json 71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/head.json 71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/legs.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/lynchpin.json +71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/linchpin.json a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json 64f864afd9ad5d67a1dd542a22bff6755f9ac0cf data/forge/tags/blocks/ores/aluminum.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 84f22edb5..f129e8078 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -179,7 +179,7 @@ "cosmere.windwhisperer": "Windwhisperer", "curios.identifier.feet": "Feet", "curios.identifier.legs": "Legs", - "curios.identifier.lynchpin": "Lynch Pin", + "curios.identifier.linchpin": "Linch pin", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "effect.cosmere.allomancy_boost": "Allomancy Boost", diff --git a/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java index c78f38da8..23cc10f7e 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java +++ b/src/main/java/leaf/cosmere/client/render/curio/model/SpikeModel.java @@ -39,7 +39,7 @@ public class SpikeModel extends HumanoidModel private static final String eyeRootID = "eyeRoot"; private static final String backID = "back"; private static final String bodyID = "body"; - private static final String lynchpinID = "lynchpin"; + private static final String linchpinID = "linchpin"; private static final String braceletID = "bracelet"; private static final String handsID = "hands"; private static final String legsID = "legs"; @@ -51,7 +51,7 @@ public class SpikeModel extends HumanoidModel private final ModelPart eyeRoot; private final ModelPart eyeLeft; private final ModelPart eyeRight; - private final ModelPart lynchpin; + private final ModelPart linchpin; private final ModelPart back; private final ModelPart ribLeft; private final ModelPart ribRight; @@ -78,7 +78,7 @@ public SpikeModel(ModelPart part) eyeRight = eyeRoot.getChild("right_eye"); find = part.getChild(bodyID); - lynchpin = find.getChild(lynchpinID); + linchpin = find.getChild(linchpinID); back = find.getChild("back"); ribLeft = find.getChild("rib_left"); ribRight = find.getChild("rib_right"); @@ -143,7 +143,7 @@ public static LayerDefinition createLayer() ); body.addOrReplaceChild( - lynchpinID, + linchpinID, CubeListBuilder.create() .texOffs(0, 0) .addBox(-0.5F, 1.5F, 2.0F, 1.0F, 1.0F, 2.0F, cube), @@ -301,8 +301,8 @@ public void render(ItemStack stack, SlotContext slotContext, PoseStack matrixSta modelPartToRender = head; break; - case lynchpinID: - modelPartToRender = lynchpin; + case linchpinID: + modelPartToRender = linchpin; modelPartToRender.copyFrom(this.root.getChild(bodyID)); modelPartToRender.y = -1; diff --git a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java index c10f896b7..2598281b0 100644 --- a/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java +++ b/src/main/java/leaf/cosmere/compat/curios/CuriosCompat.java @@ -73,7 +73,7 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) //custom slots InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("legs").priority(450).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_LEGGINGS).build()); InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("feet").priority(500).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_BOOTS).build()); - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("lynchpin").priority(59).size(1).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); + InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("linchpin").priority(59).size(1).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); } } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index 5a06eb6cd..c7bd9e986 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -53,7 +53,7 @@ protected void addTags() add(TagsRegistry.Items.METAL_SPIKE, spikeItem); add(TagsRegistry.Items.CURIO_HEAD, spikeItem); - add(TagsRegistry.Items.CURIO_LYNCHPIN, spikeItem); + add(TagsRegistry.Items.CURIO_LINCHPIN, spikeItem); add(TagsRegistry.Items.CURIO_BACK, spikeItem); add(TagsRegistry.Items.CURIO_BODY, spikeItem); add(TagsRegistry.Items.CURIO_BRACELET, spikeItem); diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index c0af7c2b0..566a4bc72 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -233,7 +233,7 @@ else if (item instanceof MetalmindItem) add("curios.identifier.feet", "Feet"); add("curios.identifier.legs", "Legs"); - add("curios.identifier.lynchpin", "Lynch Pin"); + add("curios.identifier.linchpin", "Linch pin"); //Sound Schemes diff --git a/src/main/java/leaf/cosmere/registry/TagsRegistry.java b/src/main/java/leaf/cosmere/registry/TagsRegistry.java index be5c4b24b..32d87fe6f 100644 --- a/src/main/java/leaf/cosmere/registry/TagsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/TagsRegistry.java @@ -38,7 +38,7 @@ public static class Items public static final TagKey CURIO_FEET = makeItem(CuriosApi.MODID, "feet"); - public static final TagKey CURIO_LYNCHPIN = makeItem(CuriosApi.MODID, "lynchpin"); + public static final TagKey CURIO_LINCHPIN = makeItem(CuriosApi.MODID, "linchpin"); public static TagKey METAL_SPIKE = makeItem("cosmere", "spike"); From ac04bfce17b6d2fea91b933a6371f5a7eece34ef Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:13:05 +1200 Subject: [PATCH 0196/1090] script clean up --- .../cosmere/manifestation/feruchemy/FeruchemyCopper.java | 8 ++------ src/main/java/leaf/cosmere/utils/helpers/XPHelper.java | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index 5c401d9d8..6e392dc3d 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -101,11 +101,12 @@ private void performXPAdjustment(ISpiritweb data, Player playerEntity) if ((storing && playerEntity.totalExperience >= xp) || tapping) { + final int adjustValue = storing ? -xp : xp; final ItemStack itemStack = MetalmindChargeHelper.adjustMetalmindChargeExact( playerEntity, metalType, - storing ? -xp : xp, + adjustValue, true, true); if (itemStack != null) @@ -124,11 +125,6 @@ private void performXPAdjustment(ISpiritweb data, Player playerEntity) } } - - //why does minecraft not have functions that handle this better - //unless it does, in which case I'm a goober who can't read. - //either way, thank you xreliquary and P3pp3rF1y showing their example of decreasing player xp nicely. - //https://github.com/P3pp3rF1y/Reliquary/blob/1.16.x/src/main/java/xreliquary/items/HeroMedallionItem.java private static void decreasePlayerLevel(Player player, int pointsToRemove) { player.totalExperience = Math.max(player.totalExperience - pointsToRemove, 0); diff --git a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java index adc0ec461..47cab6db2 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/XPHelper.java @@ -17,7 +17,7 @@ public class XPHelper /** * A copy of the related function in Player, except without the call to forge event - * see {@link net.minecraft.world.entity.player.Player#giveExperiencePoints}#() + * see {@link net.minecraft.world.entity.player.Player#giveExperiencePoints} */ public static void giveExperiencePoints(Player player, int points) { From acf1212c4e6902f5872e8db894e59ee361dfa814 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:45:35 +1200 Subject: [PATCH 0197/1090] spikes in more chests --- .../loot_tables/inject/simple_dungeon.json | 15 ++++++ .../loot_tables/inject/spawn_bonus_chest.json | 34 +++++++++--- .../inject/stronghold_corridor.json | 4 +- .../inject/stronghold_crossing.json | 54 ++++++++++--------- .../inject/stronghold_library.json | 4 +- 5 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json index f18426447..c09a46794 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/simple_dungeon.json @@ -18,6 +18,21 @@ } ] }, + { + "type": "minecraft:item", + "name": "cosmere:steel_spike", + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, { "type": "minecraft:item", "name": "cosmere:atium_nugget", diff --git a/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json index e0f5e53f5..adcec1d26 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/spawn_bonus_chest.json @@ -2,12 +2,30 @@ "__comment": "This table is injected as its own pool into minecraft:chests/spawn_bonus_chest", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "minecraft:empty" - } - ] - }] + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:steel_spike", + "weight": 50, + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_spike" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:empty", + "weight": 50 + } + ] + } + ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json index 954f1e1aa..2fa0f62df 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_corridor.json @@ -14,6 +14,7 @@ "type": "minecraft:item", "__comment": "with randomise metal type function, only tin doesn't matter here.", "name": "cosmere:tin_ring_metalmind", + "weight": 50, "functions": [ { "function": "cosmere:randomise_metaltype" @@ -24,7 +25,8 @@ ] }, { - "type": "minecraft:empty" + "type": "minecraft:empty", + "weight": 40 } ] } diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json index af471dc4f..f452a74d1 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_crossing.json @@ -2,31 +2,33 @@ "__comment": "This table is injected as its own pool into minecraft:chests/stronghold_crossing", "pools": [ { - "name": "main", - "rolls": 1, - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:lerasium_nugget", - "weight": 10 - }, - { - "type": "minecraft:item", - "__comment": "with randomise metal type function, only tin doesn't matter here.", - "name": "cosmere:tin_ring_metalmind", - "functions": [ - { - "function": "cosmere:randomise_metaltype" - }, - { - "function": "cosmere:invest_metalmind" - } - ] - }, - { - "type": "minecraft:empty" - } - ] - } + "name": "main", + "rolls": 1, + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_nugget", + "weight": 10 + }, + { + "type": "minecraft:item", + "__comment": "with randomise metal type function, only tin doesn't matter here.", + "name": "cosmere:tin_ring_metalmind", + "weight": 50, + "functions": [ + { + "function": "cosmere:randomise_metaltype" + }, + { + "function": "cosmere:invest_metalmind" + } + ] + }, + { + "type": "minecraft:empty", + "weight": 40 + } + ] + } ] } \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json index 1631a34d6..0fd19a8d7 100644 --- a/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json +++ b/src/main/resources/data/cosmere/loot_tables/inject/stronghold_library.json @@ -14,6 +14,7 @@ "type": "minecraft:item", "__comment": "with randomise metal type function, only tin doesn't matter here.", "name": "cosmere:tin_ring_metalmind", + "weight": 50, "functions": [ { "function": "cosmere:randomise_metaltype" @@ -24,7 +25,8 @@ ] }, { - "type": "minecraft:empty" + "type": "minecraft:empty", + "weight": 40 } ] } From c1c169826b3e453920b0ef85fe76118fa7457d47 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:46:02 +1200 Subject: [PATCH 0198/1090] fix creative menu lerasatium spikes --- .../leaf/cosmere/items/curio/HemalurgicSpikeItem.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 46571467b..c8e7c392b 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -158,7 +158,7 @@ else if (this.getMetalType() == Metals.MetalType.TIN) case ELECTRUM: ItemStack allomancySpike = new ItemStack(this); AManifestation allomancyMani = ManifestationRegistry.ALLOMANCY_POWERS.get(stealType).get(); - Invest(allomancySpike, allomancyMani, 10, UUID.randomUUID()); + Invest(allomancySpike, allomancyMani, 7, UUID.randomUUID()); stacks.add(allomancySpike); break; //steals feruchemical abilities @@ -168,7 +168,7 @@ else if (this.getMetalType() == Metals.MetalType.TIN) case GOLD: ItemStack feruchemySpike = new ItemStack(this); AManifestation feruchemyMani = ManifestationRegistry.FERUCHEMY_POWERS.get(stealType).get(); - Invest(feruchemySpike, feruchemyMani, 10, UUID.randomUUID()); + Invest(feruchemySpike, feruchemyMani, 7, UUID.randomUUID()); stacks.add(feruchemySpike); break; } @@ -183,13 +183,13 @@ else if (this.getMetalType() == Metals.MetalType.TIN) } } - if (this.getMetalType() == Metals.MetalType.LERASIUM) + if (this.getMetalType() == Metals.MetalType.LERASATIUM) { ItemStack bound = new ItemStack(this); final UUID identity = UUID.randomUUID(); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - Invest(bound, manifestation, 6, identity); + Invest(bound, manifestation, 5, identity); } stacks.add(bound); From 0b04316aef2baf312aa2fda2cfdbad47ba497cdb Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:46:38 +1200 Subject: [PATCH 0199/1090] steelpush/ironpull clear whitelist on turning off power --- .../cap/entity/SpiritwebCapability.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 9ce41f033..cd763bb2d 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -252,16 +252,30 @@ public void tick() else//if client { AManifestation iron = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); - if (iron.isActive(this)) + final boolean ironActive = iron.isActive(this); + AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); + final boolean steelActive = steel.isActive(this); + + if (ironActive) { ((AllomancyIronSteel) iron).performEffect(this); } + else if (!pullEntities.isEmpty() || !pullBlocks.isEmpty()) + { + pullEntities.clear(); + pullBlocks.clear(); + } - AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - if (steel.isActive(this)) + + if (steelActive) { ((AllomancyIronSteel) steel).performEffect(this); } + else if (!pushEntities.isEmpty() || !pushBlocks.isEmpty()) + { + pushEntities.clear(); + pushBlocks.clear(); + } } } From 29f31232263ecb53dee5117564b0396c8bced80c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:47:48 +1200 Subject: [PATCH 0200/1090] linchpin rename data gen run --- src/main/generated/.cache/cache | 2 +- .../data/curios/tags/items/{lynchpin.json => linchpin.json} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/main/generated/data/curios/tags/items/{lynchpin.json => linchpin.json} (100%) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index e883c0332..187e807a6 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -b20ae8977aca9a89ad8b32adc3e79ce779413ea5 assets/cosmere/lang/en_us.json +ac4dd1e567cc094dfc637a5029ea945e93a99c27 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/data/curios/tags/items/lynchpin.json b/src/main/generated/data/curios/tags/items/linchpin.json similarity index 100% rename from src/main/generated/data/curios/tags/items/lynchpin.json rename to src/main/generated/data/curios/tags/items/linchpin.json From c3e74f8d9807af8109e4f8b9b56ba51e11dd70f2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:47:53 +1200 Subject: [PATCH 0201/1090] remove rare nuggets from trader --- src/main/java/leaf/cosmere/handlers/CommonEvents.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/CommonEvents.java b/src/main/java/leaf/cosmere/handlers/CommonEvents.java index 77541b4db..d7cdeeadd 100644 --- a/src/main/java/leaf/cosmere/handlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/handlers/CommonEvents.java @@ -96,7 +96,7 @@ public static void registerTrades(VillagerTradesEvent event) break; case 3: { - addNuggetTrades(tradesForLevel, Rarity.UNCOMMON); + //addNuggetTrades(tradesForLevel, Rarity.UNCOMMON); addBlendTrades(tradesForLevel, Rarity.COMMON); ItemStack itemStackForSale = new ItemStack(ItemsRegistry.METAL_VIAL.get(), 1); @@ -105,13 +105,13 @@ public static void registerTrades(VillagerTradesEvent event) break; case 4: { - addNuggetTrades(tradesForLevel, Rarity.RARE); + //addNuggetTrades(tradesForLevel, Rarity.RARE); addRawOreTrades(tradesForLevel, Rarity.COMMON); } break; case 5: { - addNuggetTrades(tradesForLevel, Rarity.EPIC); + //addNuggetTrades(tradesForLevel, Rarity.EPIC); addOreTrades(tradesForLevel, Rarity.COMMON); } break; From 45ecde0d8253d5c5e26dda92adceae65b7d87445 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 12:48:16 +1200 Subject: [PATCH 0202/1090] updating parchment version --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 25759e0b6..572a3d027 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,7 @@ org.gradle.jvmargs=-Xmx8G #Tue Feb 01 08:46:10 NZDT 2022 minecraft_version=1.18.2 forge_version=1.18.2-40.1.30 -parchment_version=2022.05.02 +parchment_version=2022.05.22 jar_name=Cosmere-Mod build_number=41 From 5acc15dc33b5eafc19067ccc9795614f843e153e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 13:07:25 +1200 Subject: [PATCH 0203/1090] Fix crash when trying to use guide book when patchouli is not installed --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 1 + .../leaf/cosmere/datagen/language/EngLangGen.java | 1 + src/main/java/leaf/cosmere/items/GuideItem.java | 12 ++++++++---- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 187e807a6..a9f872160 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -ac4dd1e567cc094dfc637a5029ea945e93a99c27 assets/cosmere/lang/en_us.json +0c99b90e398ebd5099fa1c33dfb9e8a6baf4a92a assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index f129e8078..ad25f6c81 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -669,6 +669,7 @@ "tooltip.cosmere.attribute.tin": "+%s%% Better Night Vision", "tooltip.cosmere.attribute.zinc": "+%s%% Emotional Fortitude", "tooltip.cosmere.metals.contained": "Contained Metals:", + "tooltip.cosmere.patchouli.not_installed": "Patchouli is not installed. Documentation is not available.", "tooltip.cosmere.power.found": "Hemalurgic Charge:", "tooltip.item.info.control": "\u00A77Hold \u00A78[\u00A7eControl\u00A78]", "tooltip.item.info.shift": "\u00A77Hold \u00A78[\u00A7eShift\u00A78]", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 566a4bc72..69dc8aa33 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -273,6 +273,7 @@ else if (item instanceof MetalmindItem) //ARS Arcanum + add(PATCHOULI_NOT_INSTALLED, "Patchouli is not installed. Documentation is not available."); add("cosmere.landing", "The Cosmere is filled with many fantastical things. I have left my findings written within this book."); //KeyBindings diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index 568203695..d26f949d7 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -5,10 +5,12 @@ package leaf.cosmere.items; import leaf.cosmere.compat.patchouli.PatchouliCompat; +import leaf.cosmere.constants.Constants; import leaf.cosmere.properties.PropTypes; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.ChatFormatting; +import net.minecraft.Util; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; @@ -30,8 +32,6 @@ import javax.annotation.Nonnull; import java.util.List; -import static leaf.cosmere.constants.Constants.Strings.PATCHOULI_NOT_INSTALLED; - public class GuideItem extends Item { @@ -96,7 +96,7 @@ public static Component getEdition() } else { - return TextHelper.createTranslatedText(PATCHOULI_NOT_INSTALLED); + return TextHelper.createTranslatedText(Constants.Strings.PATCHOULI_NOT_INSTALLED); } } @@ -106,7 +106,11 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In { ItemStack stack = playerIn.getItemInHand(handIn); - if (playerIn instanceof ServerPlayer player) + if (!PatchouliCompat.PatchouliIsPresent()) + { + playerIn.sendMessage(TextHelper.createTranslatedText(Constants.Strings.PATCHOULI_NOT_INSTALLED), Util.NIL_UUID); + } + else if (playerIn instanceof ServerPlayer player) { //UseItemSuccessTrigger.INSTANCE.trigger(player, stack, player.getServerWorld(), player.getPosX(), player.getPosY(), player.getPosZ()); From c2506278c3ff6b209f9f939c445247920208e4ac Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 13:14:28 +1200 Subject: [PATCH 0204/1090] more intelligent clearing push/pull lists on turning off power. --- .../cap/entity/SpiritwebCapability.java | 14 ++------------ .../allomancy/AllomancyIronSteel.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index cd763bb2d..1e8bf7f9c 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -253,29 +253,19 @@ public void tick() { AManifestation iron = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.IRON).get(); final boolean ironActive = iron.isActive(this); - AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); - final boolean steelActive = steel.isActive(this); if (ironActive) { ((AllomancyIronSteel) iron).performEffect(this); } - else if (!pullEntities.isEmpty() || !pullBlocks.isEmpty()) - { - pullEntities.clear(); - pullBlocks.clear(); - } + AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); + final boolean steelActive = steel.isActive(this); if (steelActive) { ((AllomancyIronSteel) steel).performEffect(this); } - else if (!pushEntities.isEmpty() || !pushBlocks.isEmpty()) - { - pushEntities.clear(); - pushBlocks.clear(); - } } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index c867f7c8f..7a97de143 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -67,6 +67,25 @@ public void performEffect(ISpiritweb data) } } + @Override + public void onModeChange(ISpiritweb cap) + { + super.onModeChange(cap); + + if (getMode(cap) != 0) + { + return; + } + + SpiritwebCapability data = (SpiritwebCapability) cap; + + List blocks = isPush ? data.pushBlocks : data.pullBlocks; + List entities = isPush ? data.pushEntities : data.pullEntities; + + blocks.clear(); + entities.clear(); + } + @OnlyIn(Dist.CLIENT) private void performEffectClient(ISpiritweb cap) { From eeeb31f7817d3c07f96f7cda2fb6fa804cad12b5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 13:15:21 +1200 Subject: [PATCH 0205/1090] update changelog and bump version --- Changelog.md | 7 +++++++ gradle.properties | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 4adb2bb3f..7fa6026e3 100644 --- a/Changelog.md +++ b/Changelog.md @@ -4,6 +4,13 @@ B41 Changed compound amount to be dependent on allomantic strength and mode. Tidied up player clone code for when player dies or returns from the end. +Feruchemical copper now stores full levels, rather than xp points. +Updated cosmere to build against forge version 40.1.30 +Renamed lynch to linch. +Spikes available in more chests. +Fix creative mode lerasium spikes containing powers, they've been moved to lerasatium spikes. +Clear iron/steel push pull list when turning off powers. +Fix crash from trying to use the guide book when patchouli is not installed. B40 diff --git a/gradle.properties b/gradle.properties index 572a3d027..8f1b8c2ac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere-Mod -build_number=41 +build_number=42 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From a142a4d39bc256052ab35ce8369624065af5a847 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jun 2022 13:59:20 +1200 Subject: [PATCH 0206/1090] shorten mod file name --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8f1b8c2ac..9ba2d60df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ minecraft_version=1.18.2 forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 -jar_name=Cosmere-Mod +jar_name=Cosmere build_number=42 jei_version=9.7.0.194 From c5d384d9e79df5570821294f01ee06f76ed822b8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Jun 2022 13:47:53 +1200 Subject: [PATCH 0207/1090] Fix menu icons not rendering properly when certain mods are installed --- .../java/leaf/cosmere/client/ClientSetup.java | 4 +- .../cosmere/client/gui/SpiritwebMenu.java | 134 +++++++++++------- .../cosmere/constants/Manifestations.java | 17 --- 3 files changed, 87 insertions(+), 68 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index d4da30b15..bc21f625a 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -160,8 +160,8 @@ private static SpriteIconPositioning getSIP(final TextureAtlas map, final String { final SpriteIconPositioning sip = new SpriteIconPositioning(); - final ResourceLocation sprite = new ResourceLocation("cosmere", "icon/" + path.toLowerCase(Locale.ROOT)); - final ResourceLocation png = new ResourceLocation("cosmere", "textures/icon/" + path.toLowerCase(Locale.ROOT) + ".png"); + final ResourceLocation sprite = ResourceLocationHelper.prefix("icon/" + path.toLowerCase(Locale.ROOT)); + final ResourceLocation png = ResourceLocationHelper.prefix("textures/icon/" + path.toLowerCase(Locale.ROOT) + ".png"); sip.sprite = map.getSprite(sprite); diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 2142b9716..c53369cf6 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -16,15 +16,19 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; +import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientHelper; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.network.packets.SetSelectedManifestationMessage; import leaf.cosmere.registry.KeybindingRegistry; import leaf.cosmere.utils.helpers.MathHelper; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; import leaf.cosmere.utils.math.Vector2; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; @@ -33,6 +37,7 @@ import net.minecraft.client.resources.language.I18n; import net.minecraft.core.Direction; import net.minecraft.network.chat.TextComponent; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.client.event.RenderGameOverlayEvent; import org.jetbrains.annotations.NotNull; @@ -192,7 +197,6 @@ private static class SidedMenuButton public final ButtonAction action; public final int powerType; - public TextureAtlasSprite icon; public int color; public String name; public Direction textSide; @@ -202,7 +206,6 @@ public SidedMenuButton( final ButtonAction action, final double x, final double y, - final TextureAtlasSprite ico, final Direction textSide) { this.name = name; @@ -212,7 +215,6 @@ public SidedMenuButton( x2 = x + 18; y1 = y; y2 = y + 18; - icon = ico; color = 0xffffff; this.textSide = textSide; } @@ -222,7 +224,6 @@ public SidedMenuButton( final int powerType, final double x, final double y, - final TextureAtlasSprite ico, final Direction textSide) { this.name = name; @@ -232,7 +233,6 @@ public SidedMenuButton( x2 = x + 18; y1 = y; y2 = y + 18; - icon = ico; color = 0xffffff; this.textSide = textSide; } @@ -290,7 +290,6 @@ protected void SetupButtons() foundPowerType.getID(), v - ((TEXT_DISTANCE * foundPowerTypes.size()) / 2) + 5, -75, - foundPowerType.getSprite(), Direction.UP) ); @@ -337,20 +336,8 @@ public void render(final @NotNull PoseStack matrixStack, final int mouseX, final //draw out what we've asked for tessellator.end(); - //then we switch to icons - RenderSystem.enableTexture(); - RenderSystem.setShaderColor(1, 1, 1, 1.0f); - RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); - RenderSystem.setShader(GameRenderer::getPositionTexShader); - RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(InventoryMenu.BLOCK_ATLAS).getId()); - buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); - - //put the icons on the region buttons - renderRadialButtonIcons(buffer, middle_x, middle_y); - //put the icons on the sided buttons - renderSidedButtonIcons(buffer, middle_x, middle_y); + drawIcons(matrixStack, buffer, middle_x, middle_y); - tessellator.end(); // draw radial button strings renderRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); @@ -362,6 +349,26 @@ public void render(final @NotNull PoseStack matrixStack, final int mouseX, final matrixStack.popPose(); } + private void drawIcons(@NotNull PoseStack matrixStack, BufferBuilder buffer, double middle_x, double middle_y) + { + matrixStack.pushPose(); + RenderSystem.enableTexture(); + RenderSystem.enableBlend(); + + //then we switch to icons + RenderSystem.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA); + RenderSystem.setShader(GameRenderer::getPositionTexShader); + //RenderSystem.bindTexture(Minecraft.getInstance().getTextureManager().getTexture(InventoryMenu.BLOCK_ATLAS).getId()); + //buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); + + //put the icons on the region buttons + renderRadialButtonIcons(matrixStack, middle_x, middle_y); + //put the icons on the sided buttons + renderSidedButtonIcons(matrixStack, middle_x, middle_y); + + matrixStack.popPose(); + } + private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int middle_y) { int leftSideX = 10; @@ -449,44 +456,36 @@ private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int } } - private void renderSidedButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + private void renderSidedButtonIcons(PoseStack matrixStack, double middleX, double middleY) { + final StringBuilder stringBuilder = new StringBuilder(); for (final SidedMenuButton button : sidedMenuButtons) { - final float f = selectedManifestation == null ? 1.0f : 0.5f; - final float a = 1.0f; + stringBuilder.setLength(0); + final double x = (button.x1 + button.x2) / 2 + 0.01; + final double y = (button.y1 + button.y2) / 2 + 0.01; - final double u1 = 0; - final double u2 = 16; - final double v1 = 0; - final double v2 = 16; + stringBuilder + .append("textures/icon/") + .append(button.name) + .append(".png"); - final TextureAtlasSprite sprite = button.icon == null ? ClientHelper.blank : button.icon; + RenderSystem.setShaderTexture(0, ResourceLocationHelper.prefix(stringBuilder.toString())); + blit(matrixStack, (int) (middleX + x - 8), (int) (middleY + y - 8), 16, 16, 0, 0, 18, 18, 18, 18); - final double btnx1 = button.x1 + 1; - final double btnx2 = button.x2 - 1; - final double btny1 = button.y1 + 1; - final double btny2 = button.y2 - 1; - - final float red = f * ((button.color >> 16 & 0xff) / 255.0f); - final float green = f * ((button.color >> 8 & 0xff) / 255.0f); - final float blue = f * ((button.color & 0xff) / 255.0f); - - buffer.vertex(middle_x + btnx1, middle_y + btny1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx1, middle_y + btny2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx2, middle_y + btny2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(red, green, blue, a).endVertex(); - buffer.vertex(middle_x + btnx2, middle_y + btny1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(red, green, blue, a).endVertex(); } } - private void renderRadialButtonIcons(BufferBuilder buffer, double middle_x, double middle_y) + private void renderRadialButtonIcons(PoseStack matrixStack, double middleX, double middleY) { - for (final RadialMenuButton mnuRgn : radialMenuButtons) + final StringBuilder stringBuilder = new StringBuilder(); + for (final RadialMenuButton menuRegion : radialMenuButtons) { - final double x = mnuRgn.centerX; - final double y = mnuRgn.centerY; + stringBuilder.setLength(0); + final double x = menuRegion.centerX; + final double y = menuRegion.centerY; - final SpriteIconPositioning sip = ClientHelper.instance.getIconForManifestation(mnuRgn.manifestation); + final SpriteIconPositioning sip = ClientHelper.instance.getIconForManifestation(menuRegion.manifestation); final double scalex = 15 * sip.width * 0.5; final double scaley = 15 * sip.height * 0.5; @@ -505,10 +504,47 @@ private void renderRadialButtonIcons(BufferBuilder buffer, double middle_x, doub final double v1 = sip.top * 16.0; final double v2 = (sip.top + sip.height) * 16.0; - buffer.vertex(middle_x + x1, middle_y + y1, 0).uv(sprite.getU(u1), sprite.getV(v1)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x1, middle_y + y2, 0).uv(sprite.getU(u1), sprite.getV(v2)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2, middle_y + y2, 0).uv(sprite.getU(u2), sprite.getV(v2)).color(f, f, f, a).endVertex(); - buffer.vertex(middle_x + x2, middle_y + y1, 0).uv(sprite.getU(u2), sprite.getV(v1)).color(f, f, f, a).endVertex(); + + AManifestation mani = menuRegion.manifestation; + final Manifestations.ManifestationTypes manifestationType = mani.getManifestationType(); + stringBuilder + .append("textures/icon/") + .append(manifestationType.getName()) + .append("/"); + + switch (manifestationType) + { + case ALLOMANCY: + AllomancyBase allomancyBase = (AllomancyBase) mani; + stringBuilder.append(allomancyBase.getMetalType().getName()); + break; + case FERUCHEMY: + FeruchemyBase feruchemyBase = (FeruchemyBase) mani; + stringBuilder.append(feruchemyBase.getMetalType().getName()); + break; + case RADIANT: + break; + case ELANTRIAN: + break; + case AWAKENER: + break; + } + + stringBuilder.append(".png"); + final ResourceLocation textureLocation = ResourceLocationHelper.prefix(stringBuilder.toString()); + RenderSystem.setShaderTexture(0, textureLocation); + blit(matrixStack, + (int) (middleX + x1), + (int) (middleY + y1), + 16, + 16, + 0, + 0, + 18, + 18, + 18, + 18); + } } diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index e9cbdb58b..cee0f6cd4 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -92,23 +92,6 @@ public String getName() return this.name().toLowerCase(Locale.ROOT); } - public TextureAtlasSprite getSprite() - { - switch (this) - { - case ALLOMANCY: - return ClientHelper.allomancy; - case FERUCHEMY: - return ClientHelper.feruchemy; - case RADIANT: - return ClientHelper.surgebinding; - case ELANTRIAN: - break; - case AWAKENER: - break; - } - return null; - } } } From f06f1bd6ddbb0d43629824aa16fa828261edb43f Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 5 Jun 2022 13:47:57 +1200 Subject: [PATCH 0208/1090] Update InvestMetalmindLootFunction.java --- .../java/leaf/cosmere/loot/InvestMetalmindLootFunction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java index 338d7b919..0985aba76 100644 --- a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java @@ -58,7 +58,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) item.setCharge(stack, (int) Mth.lerp(strengthLevel / 10, 1, maxCharge)); StackNBTHelper.setUuid(stack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNKEYED_UUID); - StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unsealed"); // todo translation + StackNBTHelper.setString(stack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unkeyed"); // todo translation return stack; } From 341f3a6719ab433f9007a6faa45351f62242c007 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 17:59:26 +1200 Subject: [PATCH 0209/1090] HWYLA limited to bronze allomancy and what's active --- .../compat/hwyla/SpiritWebTooltip.java | 46 +++++++------------ 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index c3922f01c..0b1ed54f7 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -8,6 +8,8 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBronze; +import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.TextHelper; import mcp.mobius.waila.api.EntityAccessor; import mcp.mobius.waila.api.IEntityComponentProvider; @@ -23,39 +25,25 @@ public class SpiritWebTooltip implements IEntityComponentProvider @Override public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig iPluginConfig) { -/* - //todo add other ways we would allow the user to see spiritweb info - if (!accessor.getPlayer().isCreative()) - { - return; - }*/ - //check the entity we are trying to - SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(iSpiritweb -> + SpiritwebCapability.get(accessor.getPlayer()).ifPresent(clientPlayer -> { - - //todo check mistborn/feruchemist status - boolean mistborn = false;//iSpiritweb.isMistborn(); - boolean fullFeruchemist = false;//iSpiritweb.isFullFeruchemist(); - if (mistborn) - { - tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASIUM.getMistingName())); - } - if (fullFeruchemist) - { - tooltip.add(TextHelper.createTranslatedText(Metals.MetalType.LERASATIUM.getFerringName())); - } - - - //show all manifestations, including hemalurgic based ones. - for (AManifestation manifestation : iSpiritweb.getAvailableManifestations()) + AllomancyBronze allomancyBronze = (AllomancyBronze) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.BRONZE).get(); + if (allomancyBronze.isMetalBurning(clientPlayer)) { - if ((mistborn && manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY) - || (fullFeruchemist && manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY)) + //check the entity we are trying to + SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(targetSpiritweb -> { - continue; - } - tooltip.add(manifestation.translation()); + //show all manifestations, including hemalurgic based ones. + for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) + { + if (manifestation.isActive(targetSpiritweb)) + { + continue; + } + tooltip.add(manifestation.translation()); + } + }); } }); } From 6ff0084663ce836f74d7d9c22b1e2f355c537ba4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 18:03:04 +1200 Subject: [PATCH 0210/1090] Allomantic tin now has does incremental night vision improvement, rather than doing the potion effect. --- .../manifestation/allomancy/AllomancyTin.java | 14 ----------- .../leaf/cosmere/mixin/LightTextureMixin.java | 23 ++++++++++++++++++- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java index 6f7343788..d8a44c57c 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyTin.java @@ -28,20 +28,6 @@ public AllomancyTin(Metals.MetalType metalType) super(metalType); } - @Override - protected void performEffect(ISpiritweb data) - { - //Increases Physical Senses - LivingEntity livingEntity = data.getLiving(); - boolean isActiveTick = livingEntity.tickCount % 20 == 0; - - //give night vision - if (isActiveTick) - { - livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.NIGHT_VISION, 0)); - } - } - @OnlyIn(Dist.CLIENT) @SubscribeEvent diff --git a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java index 185c46bdf..e09bc4290 100644 --- a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java +++ b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java @@ -4,18 +4,25 @@ package leaf.cosmere.mixin; +import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.LightTexture; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.player.Player; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.registries.RegistryObject; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.Constant; import org.spongepowered.asm.mixin.injection.ModifyConstant; +import javax.xml.crypto.Data; + @Mixin(LightTexture.class) public class LightTextureMixin { @@ -29,9 +36,23 @@ private float updateLightTextureConstant(float prev) return prev; } + final LazyOptional iSpiritwebLazyOptional = SpiritwebCapability.get(clientPlayer); + float tinAlloVal = 0; + + if (iSpiritwebLazyOptional.isPresent()) + { + var spiritweb = iSpiritwebLazyOptional.resolve(); + final AllomancyBase tinAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.TIN).get(); + if (spiritweb.isPresent() && tinAllomancy.isMetalBurning(spiritweb.get())) + { + tinAlloVal = spiritweb.get().getMode(tinAllomancy) == 1 ? 0.25f : 0.75f; + } + } + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.TIN.getName()); AttributeInstance attribute = clientPlayer.getAttribute(attributeRegistryObject.get()); //return modded val - return attribute != null ? (float) attribute.getValue() : prev; + final float v = attribute != null ? (float) attribute.getValue() : prev; + return v + tinAlloVal; } } From 1568487b85b44267a2462466e90b32e3e05082a2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 18:06:36 +1200 Subject: [PATCH 0211/1090] Update FeruchemyBronze.java --- .../cosmere/manifestation/feruchemy/FeruchemyBronze.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java index 4b9f3ec8e..95dd1ca25 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -51,16 +51,14 @@ public int modeMax(ISpiritweb data) @Override public void tick(ISpiritweb data) { - //don't check every tick. - LivingEntity livingEntity = data.getLiving(); + super.tick(data); + int mode = getMode(data); - if (!(livingEntity instanceof ServerPlayer) || livingEntity.tickCount % 20 != 0) + if (mode == 0) { return; } - int mode = getMode(data); - //can't store or tap any more switch (mode) { From 542847bd26f727830235f0b66b025fb91e041f7d Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 19:49:23 +1200 Subject: [PATCH 0212/1090] Fixed a bug where manifestation strength was incorrect --- .../leaf/cosmere/items/curio/IHemalurgicInfo.java | 8 ++++---- .../leaf/cosmere/manifestation/AManifestation.java | 2 +- .../cosmere/manifestation/ManifestationBase.java | 2 +- .../manifestation/allomancy/AllomancyBase.java | 10 +++++++--- .../manifestation/allomancy/AllomancyBrass.java | 7 +++---- .../manifestation/allomancy/AllomancyDuralumin.java | 2 +- .../manifestation/allomancy/AllomancyNicrosil.java | 2 +- .../manifestation/feruchemy/FeruchemyBase.java | 13 ++++++++++--- .../manifestation/feruchemy/FeruchemyNicrosil.java | 2 +- 9 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 6ea8636a8..1506f902f 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -107,7 +107,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); if (manifestation != null) { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true) * 0.7f, entityKilled.getUUID()); entityKilledSpiritWeb.removeManifestation(manifestation); return; } @@ -123,7 +123,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); if (manifestation != null) { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true) * 0.7f, entityKilled.getUUID()); entityKilledSpiritWeb.removeManifestation(manifestation); return; } @@ -145,7 +145,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType //then try steal it if (manifestation != null) { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb) * 0.7f, entityKilled.getUUID()); + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true) * 0.7f, entityKilled.getUUID()); entityKilledSpiritWeb.removeManifestation(manifestation); return; } @@ -155,7 +155,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType { for (AManifestation manifestation : manifestationsFound) { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb), entityKilled.getUUID()); + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true), entityKilled.getUUID()); entityKilledSpiritWeb.removeManifestation(manifestation); } } diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index 80aa772f9..7068b7236 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -36,7 +36,7 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract boolean isActive(ISpiritweb data); - public abstract double getStrength(ISpiritweb data); + public abstract double getStrength(ISpiritweb data, boolean getBaseStrength); public TranslatableComponent translation() { diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 30b75f4eb..6728f7bd1 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -79,7 +79,7 @@ public boolean isActive(ISpiritweb data) } @Override - public double getStrength(ISpiritweb data) + public double getStrength(ISpiritweb data, boolean getBaseStrength) { return 0; } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index d5fad8730..cf622cdbe 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -157,11 +157,15 @@ else if (getMetalType().isPushMetal()) return null; } - public double getStrength(ISpiritweb data) + public double getStrength(ISpiritweb data, boolean getBaseStrength) { RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); AttributeInstance attribute = data.getLiving().getAttribute(mistingAttribute.get()); - return attribute != null ? attribute.getValue() : 0; + if (attribute != null) + { + return getBaseStrength ? attribute.getBaseValue() : attribute.getValue(); + } + return 0; } @@ -173,7 +177,7 @@ public int getRange(ISpiritweb data) } //get allomantic strength - double allomanticStrength = getStrength(data); + double allomanticStrength = getStrength(data, false); return Mth.floor(allomanticStrength * getMode(data)); } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 3d6515065..33fbad9ef 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -27,7 +27,7 @@ protected void performEffect(ISpiritweb data) int mode = getMode(data); //todo, replace x * mode with config based value - double allomanticStrength = getStrength(data); + double allomanticStrength = getStrength(data, false); int range = getRange(data); @@ -41,11 +41,10 @@ protected void performEffect(ISpiritweb data) switch (mode) { - case 3: - mob.setTarget(null); case 2: - mob.setAggressive(false); + mob.setTarget(null); case 1: + mob.setAggressive(false); default: //stop angry targets from attacking things e.setLastHurtByMob(null); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java index d96bf2b8e..09043ed1d 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java @@ -31,7 +31,7 @@ public void performEffect(ISpiritweb data) //apply the effect regardless, because duralumin is currently active. MobEffectInstance newEffect = EffectsHelper.getNewEffect( EffectsRegistry.ALLOMANCY_BOOST.get(), - Mth.floor(getStrength(data)) + Mth.floor(getStrength(data,false)) ); data.getLiving().addEffect(newEffect); } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java index 0f5fa6b3a..62c4587d5 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyNicrosil.java @@ -65,7 +65,7 @@ public void onLivingHurtEvent(LivingHurtEvent event) //valid set up found. MobEffectInstance newEffect = EffectsHelper.getNewEffect( EffectsRegistry.ALLOMANCY_BOOST.get(), - Mth.floor(getStrength(iSpiritweb)) + Mth.floor(getStrength(iSpiritweb,false)) ); //apply to the hit entity diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 4cc5414f5..df0820aae 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -12,6 +12,7 @@ import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; @@ -71,8 +72,10 @@ public boolean isTapping(ISpiritweb data) return getMode(data) < 0; } - public int getCost(int mode) + public int getCost(ISpiritweb data) { + int mode = data.getMode(this); + // if we are tapping //check if there is charges to tap if (mode < 0) @@ -171,10 +174,14 @@ else if (mode < 0) } - public double getStrength(ISpiritweb cap) + public double getStrength(ISpiritweb cap, boolean getBaseStrength) { RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); AttributeInstance attribute = cap.getLiving().getAttribute(attributeRegistryObject.get()); - return attribute != null ? attribute.getValue() : 0; + if (attribute != null) + { + return getBaseStrength ? attribute.getBaseValue() : attribute.getValue(); + } + return 0; } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 005149a44..feaf04c22 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -175,7 +175,7 @@ else if (!nbt.contains("identity") || (nbt.getUUID("identity").compareTo(Constan //this will add/remove powers based on what the user currently has. if (data.hasManifestation(manifestation)) { - nbt.putDouble(manifestation.getName(), manifestation.getStrength(data)); + nbt.putDouble(manifestation.getName(), manifestation.getStrength(data, false)); } //remove if not available else if (nbt.contains(manifestation.getName())) From 72d39561580292aff84a91b2f7ff9dc27e4fa976 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 19:50:16 +1200 Subject: [PATCH 0213/1090] Feruchemical strength actually matters. Dictates how much you can store/tap --- .../leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index df0820aae..4b1c67f27 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -53,14 +53,16 @@ public boolean modeWraps(ISpiritweb data) @Override public int modeMax(ISpiritweb data) { - return 3; + final double strength = getStrength(data, false); + return Mth.fastFloor(strength / 3); } //tapping is negative, eg taking from store @Override public int modeMin(ISpiritweb data) { - return -10; + final double strength = getStrength(data, false); + return -(Mth.fastFloor(strength)); } public boolean isStoring(ISpiritweb data) From 5fad2322971cd37c36d7eb3cfee79ad7273830fc Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 20:07:10 +1200 Subject: [PATCH 0214/1090] Fix feruchemical iron to increase gravity. --- .../feruchemy/store/IronStoreEffect.java | 10 ++++++++-- .../effects/feruchemy/tap/IronTapEffect.java | 18 ++++++------------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java index d4aff39e5..fbd6b4371 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/IronStoreEffect.java @@ -12,6 +12,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraftforge.common.ForgeMod; public class IronStoreEffect extends FeruchemyEffectBase @@ -22,8 +23,13 @@ public IronStoreEffect(Metals.MetalType type, MobEffectCategory effectType) addAttributeModifier( Attributes.KNOCKBACK_RESISTANCE, "a8fade1f-573d-405d-9885-39da3906d5f6", - -0.1D, - AttributeModifier.Operation.MULTIPLY_TOTAL); + -0.3D, + AttributeModifier.Operation.ADDITION); +/* addAttributeModifier( + ForgeMod.ENTITY_GRAVITY.get(), + "89499e2b-8797-4473-89c4-541aa703f17f", + -0.01D, + AttributeModifier.Operation.ADDITION);*/ } @Override diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java index 6988603bb..1c583e893 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/IronTapEffect.java @@ -12,6 +12,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraftforge.common.ForgeMod; public class IronTapEffect extends FeruchemyEffectBase @@ -24,17 +25,10 @@ public IronTapEffect(Metals.MetalType type, MobEffectCategory effectType) "bb29d10a-c58f-4f7e-956b-133b2685831f", 0.1D, AttributeModifier.Operation.ADDITION); - } - - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) - { - //ensure the user has correct buffs at least as strong as their store effect - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) - { - return; - } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.SLOW_FALLING, -amplifier)); - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, -amplifier)); + addAttributeModifier( + ForgeMod.ENTITY_GRAVITY.get(), + "89499e2b-8797-4473-89c4-541aa703f17f", + 0.01D, + AttributeModifier.Operation.ADDITION); } } From 3819c0adb288aa3b7f47b8deffbfcd6ac6df6212 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 20:41:43 +1200 Subject: [PATCH 0215/1090] Fix bands of mourning creative item not granting powers --- .../leaf/cosmere/items/MetalmindItem.java | 2 +- .../items/curio/BandsOfMourningItem.java | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index 9d416d004..d466d2cb6 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -61,7 +61,7 @@ public Multimap getAttributeModifiers(SlotContext if (stack.getItem() instanceof IHemalurgicInfo) { //add hemalurgic attributes, if any. - ((IHemalurgicInfo) (stack.getItem())).getHemalurgicAttributes(attributeModifiers, stack, metalType); + ((IHemalurgicInfo) stack.getItem()).getHemalurgicAttributes(attributeModifiers, stack, metalType); } return attributeModifiers; diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java index 10dc8464b..928ddf08e 100644 --- a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -4,14 +4,25 @@ package leaf.cosmere.items.curio; +import com.google.common.collect.LinkedHashMultimap; +import com.google.common.collect.Multimap; +import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.CompoundNBTHelper; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; +import top.theillusivec4.curios.api.SlotContext; import javax.annotation.Nonnull; import java.util.Optional; +import java.util.UUID; public class BandsOfMourningItem extends BraceletMetalmindItem { @@ -59,4 +70,35 @@ public int getMaxCharge(ItemStack stack) { return Integer.MAX_VALUE - 100; } + + + @Override + public Multimap getAttributeModifiers(SlotContext slotContext, UUID uuid, ItemStack stack) + { + Multimap attributeModifiers = super.getAttributeModifiers(slotContext, uuid, stack); + CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String manifestationName = manifestation.getName(); + if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || !AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + continue; + } + + attributeModifiers.put( + AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + new AttributeModifier( + Constants.NBT.UNKEYED_UUID, + manifestationName, + CompoundNBTHelper.getDouble( + nbt, + manifestationName, + 0), + AttributeModifier.Operation.ADDITION)); + + } + + return attributeModifiers; + } } From 5e4f4a97683404d22e53c731a43e5292108dab5e Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 20:45:52 +1200 Subject: [PATCH 0216/1090] Initial setup for atium powers. --- src/main/generated/.cache/cache | 6 ++- .../generated/assets/cosmere/lang/en_us.json | 10 +++++ .../cosmere/advancements/allomancy/atium.json | 40 +++++++++++++++++++ .../cosmere/advancements/feruchemy/atium.json | 40 +++++++++++++++++++ .../entries/allomancy/allomantic_atium.json | 19 +++++++++ .../entries/feruchemy/feruchemical_atium.json | 30 ++++++++++++++ .../java/leaf/cosmere/constants/Metals.java | 2 +- 7 files changed, 145 insertions(+), 2 deletions(-) create mode 100644 src/main/generated/data/cosmere/advancements/allomancy/atium.json create mode 100644 src/main/generated/data/cosmere/advancements/feruchemy/atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json create mode 100644 src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index a9f872160..fc945dc03 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -0c99b90e398ebd5099fa1c33dfb9e8a6baf4a92a assets/cosmere/lang/en_us.json +d306deda603550f38bd99faf634dff58f6aeff95 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json @@ -251,6 +251,7 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.j 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/zircon_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/zircon_mark.json 96c40fa6beeac6aa79a7f28854f4bbce81815df9 data/cosmere/advancements/allomancy/aluminum.json +bbff50103b8a060ea98c487514ed97a3a5273817 data/cosmere/advancements/allomancy/atium.json f5317fefdf760645db525fcc47ce8fe1d8c8ca31 data/cosmere/advancements/allomancy/bendalloy.json 0d5a25d3f85fcadd1e130c4df78b001a5ef22543 data/cosmere/advancements/allomancy/brass.json e1c39b8b9f910a627f6b4d576081822a4fa08a02 data/cosmere/advancements/allomancy/bronze.json @@ -268,6 +269,7 @@ d7d71d5dcf86b9cab0fe3a2d7fcbabb839d4c3bc data/cosmere/advancements/allomancy/ste a00bc9ec54a115174500033b84109a8f57cc2843 data/cosmere/advancements/allomancy/tin.json f4ec216c8f36a5f4a0996c2d0e0b92d04641d4c4 data/cosmere/advancements/allomancy/zinc.json 8f190aaec5a94b9e41ec27c475a8ddce1a56a641 data/cosmere/advancements/feruchemy/aluminum.json +514cea5dbf9e0749d1ad4eeb7e335914990e7f64 data/cosmere/advancements/feruchemy/atium.json 43423c8432012d4fa5b0c334335569b0dde64aab data/cosmere/advancements/feruchemy/bendalloy.json 7d65c352d68349183e449120ed4f0c3dab7e4c83 data/cosmere/advancements/feruchemy/brass.json 9e4a82c403d39b64081a3d207d4ec6484176ad73 data/cosmere/advancements/feruchemy/bronze.json @@ -549,6 +551,7 @@ e860cb608a0be02ccdf76119bbe5043df64f14af data/cosmere/patchouli_books/guide/en_u 4e70e0639abea89d041c957efb07ab7b2c443a47 data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json 2d7a5bbaef8038b0c677d166e8473684486443fe data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json 1d37aa4bceb0a1d8be3bb22e596da7af47c2f424 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +0453e677dc19bca610c4b3856c5a55a1c207397f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json db3f16ff2947f1e87fb6a938e9af541c1496547b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json 822fab5ce546238a87788f78499407f0da3b793d data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json 1ac3cb7e27d05253b803ca97abeaf82b9ae47a8f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json @@ -565,6 +568,7 @@ c1495e6848497f5fd56fcc9c1e6c8d02b21d0657 data/cosmere/patchouli_books/guide/en_u 133be6efafddec850e8a18d003220f307f012867 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json 81029e199312919cfbee0c1ad1950126a3daea25 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json 7876af9c7402b00e12279ff158beef06bc6cecb4 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +b2e1061255022d49a7584e489b3a081a1da3a504 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json 36b802651e32bca64d2f51c8fedb9e216754ea9a data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json 7bf8121e708c9e63831bbc0b070aa14952d987db data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json 272216802dfb12a93242f17c792642e55a7a8875 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index ad25f6c81..ae72eb7b8 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -1,6 +1,8 @@ { "advancements.cosmere.allomancy.aluminum.description": "Test description: Allomantic Aluminum", "advancements.cosmere.allomancy.aluminum.title": "Allomantic Aluminum", + "advancements.cosmere.allomancy.atium.description": "Test description: Allomantic Atium", + "advancements.cosmere.allomancy.atium.title": "Allomantic Atium", "advancements.cosmere.allomancy.bendalloy.description": "Test description: Allomantic Bendalloy", "advancements.cosmere.allomancy.bendalloy.title": "Allomantic Bendalloy", "advancements.cosmere.allomancy.brass.description": "Test description: Allomantic Brass", @@ -39,6 +41,8 @@ "advancements.cosmere.elantrian.title": "Elantrian", "advancements.cosmere.feruchemy.aluminum.description": "Test description: Feruchemical Aluminum", "advancements.cosmere.feruchemy.aluminum.title": "Feruchemical Aluminum", + "advancements.cosmere.feruchemy.atium.description": "Test description: Feruchemical Atium", + "advancements.cosmere.feruchemy.atium.title": "Feruchemical Atium", "advancements.cosmere.feruchemy.bendalloy.description": "Test description: Feruchemical Bendalloy", "advancements.cosmere.feruchemy.bendalloy.title": "Feruchemical Bendalloy", "advancements.cosmere.feruchemy.brass.description": "Test description: Feruchemical Brass", @@ -151,6 +155,7 @@ "cosmere.connector": "Connector", "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", + "cosmere.elderling": "Elderling", "cosmere.firesoul": "Firesoul", "cosmere.gasper": "Gasper", "cosmere.landing": "The Cosmere is filled with many fantastical things. I have left my findings written within this book.", @@ -162,6 +167,7 @@ "cosmere.pulser": "Pulser", "cosmere.rioter": "Rioter", "cosmere.seeker": "Seeker", + "cosmere.seer": "Seer", "cosmere.sentry": "Sentry", "cosmere.skimmer": "Skimmer", "cosmere.slider": "Slider", @@ -574,6 +580,8 @@ "keys.cosmere.main": "Cosmere", "manifestation.cosmere.allomantic_aluminum": "Allomantic Aluminum", "manifestation.cosmere.allomantic_aluminum.description": "Users can burn aluminum", + "manifestation.cosmere.allomantic_atium": "Allomantic Atium", + "manifestation.cosmere.allomantic_atium.description": "Users can burn atium", "manifestation.cosmere.allomantic_bendalloy": "Allomantic Bendalloy", "manifestation.cosmere.allomantic_bendalloy.description": "Users can burn bendalloy", "manifestation.cosmere.allomantic_brass": "Allomantic Brass", @@ -606,6 +614,8 @@ "manifestation.cosmere.allomantic_zinc.description": "Users can burn zinc", "manifestation.cosmere.feruchemical_aluminum": "Feruchemical Aluminum", "manifestation.cosmere.feruchemical_aluminum.description": "Users can tap aluminum", + "manifestation.cosmere.feruchemical_atium": "Feruchemical Atium", + "manifestation.cosmere.feruchemical_atium.description": "Users can tap atium", "manifestation.cosmere.feruchemical_bendalloy": "Feruchemical Bendalloy", "manifestation.cosmere.feruchemical_bendalloy.description": "Users can tap bendalloy", "manifestation.cosmere.feruchemical_brass": "Feruchemical Brass", diff --git a/src/main/generated/data/cosmere/advancements/allomancy/atium.json b/src/main/generated/data/cosmere/advancements/allomancy/atium.json new file mode 100644 index 000000000..4e7637994 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/allomancy/atium.json @@ -0,0 +1,40 @@ +{ + "parent": "cosmere:allomancy/root", + "display": { + "icon": { + "item": "cosmere:atium_nugget" + }, + "title": { + "translate": "advancements.cosmere.allomancy.atium.title" + }, + "description": { + "translate": "advancements.cosmere.allomancy.atium.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 50 + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:atium_nugget" + ] + } + ] + } + } + }, + "requirements": [ + [ + "has_item" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json new file mode 100644 index 000000000..b0db9fa04 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json @@ -0,0 +1,40 @@ +{ + "parent": "cosmere:feruchemy/root", + "display": { + "icon": { + "item": "cosmere:atium_ring_metalmind" + }, + "title": { + "translate": "advancements.cosmere.feruchemy.atium.title" + }, + "description": { + "translate": "advancements.cosmere.feruchemy.atium.description" + }, + "frame": "task", + "show_toast": true, + "announce_to_chat": true, + "hidden": false + }, + "rewards": { + "experience": 50 + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:atium_ring_metalmind" + ] + } + ] + } + } + }, + "requirements": [ + [ + "has_item" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json new file mode 100644 index 000000000..e7585d671 --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json @@ -0,0 +1,19 @@ +{ + "name": "Allomantic Atium", + "category": "cosmere:allomancy", + "icon": "cosmere:atium_nugget", + "pages": [ + { + "type": "text", + "text": "A misting who burns $(thing)atium$() is known as a \"$(thing)Seer$()\"." + }, + { + "type": "text", + "text": "$(#f00)(NYI)$()" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json new file mode 100644 index 000000000..b983ba5ce --- /dev/null +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json @@ -0,0 +1,30 @@ +{ + "name": "Feruchemical Atium", + "category": "cosmere:feruchemy", + "icon": "cosmere:atium_bracelet_metalmind", + "pages": [ + { + "type": "text", + "text": "manifestation.cosmere.feruchemical_atium.description" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:atium_bracelet_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:atium_ring_metalmind", + "recipe2": "" + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:atium_necklace_metalmind", + "recipe2": "" + } + ], + "priority": false, + "secret": false, + "read_by_default": false, + "sortnum": 16 +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 2a10c5f66..09b8c7e18 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -134,7 +134,7 @@ public boolean hasAssociatedManifestation() { switch (this) { - case ATIUM: + //case ATIUM: case MALATIUM: case LERASIUM: //these are mistborn, but its handled by giving access to all other metals case LERASATIUM: //these are feruchemists, but its handled by giving access to all other metals From a286d27a21f6c1a1bd4f1aeffb32b556b2ca85c9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 20:51:22 +1200 Subject: [PATCH 0217/1090] creative mode can see all powers on a player --- src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 0b1ed54f7..6865e6657 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -29,7 +29,7 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf SpiritwebCapability.get(accessor.getPlayer()).ifPresent(clientPlayer -> { AllomancyBronze allomancyBronze = (AllomancyBronze) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.BRONZE).get(); - if (allomancyBronze.isMetalBurning(clientPlayer)) + if (allomancyBronze.isMetalBurning(clientPlayer) || accessor.getPlayer().isCreative()) { //check the entity we are trying to SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(targetSpiritweb -> @@ -37,7 +37,7 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf //show all manifestations, including hemalurgic based ones. for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) { - if (manifestation.isActive(targetSpiritweb)) + if (manifestation.isActive(targetSpiritweb) || accessor.getPlayer().isCreative()) { continue; } From 7e1fcea939331dc7103eeb0ca14a04e2f5c88133 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 6 Jun 2022 20:53:26 +1200 Subject: [PATCH 0218/1090] update changelog and bump version number --- Changelog.md | 17 +++++++++++++++++ gradle.properties | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 7fa6026e3..5ce82e362 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,22 @@ The Cosmere Project - For 1.16 Minecraft +B43 + +Allomantic tin now has does incremental night vision improvement, rather than doing the potion effect. +HWYLA limited to bronze allomancy and what's active +Fix feruchemy bronze not storing to metalmind. +Fixed a bug where manifestation strength was incorrect +Made it so Feruchemical strength actually matters. Dictates how much you can store/tap. +Fix feruchemical iron to increase gravity. +Fix bands of mourning creative item not granting powers + + +B42 + +Fix icons not rendering when certain other mods are installed. +Fix metalminds from loot chests incorrectly listing themselves as unsealed instead of unkeyed. + + B41 Changed compound amount to be dependent on allomantic strength and mode. diff --git a/gradle.properties b/gradle.properties index 9ba2d60df..cac5d2431 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere -build_number=42 +build_number=44 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From f0649569b408fd507bd092672b8c07f008b5e463 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 08:38:16 +1200 Subject: [PATCH 0219/1090] fix tapping gold only healing one hp regardless of tap amount --- .../leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java index 8d7e0d65f..1acc583c9 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/GoldTapEffect.java @@ -27,9 +27,10 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) return; } + final int i = 1 + amplifier; if (entityLivingBaseIn.getHealth() < entityLivingBaseIn.getMaxHealth()) { - entityLivingBaseIn.heal(1); + entityLivingBaseIn.heal(i); } //remove harmful effects over time @@ -37,7 +38,7 @@ public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) { if (!activeEffect.getEffect().isBeneficial() && activeEffect.getDuration() > 5) { - double reduceAmount = 1 - ((1 + amplifier) / 10d); + double reduceAmount = 1 - (i / 10d); MobEffectInstance effectInstance = new MobEffectInstance( activeEffect.getEffect(), From d9de9f843dd0ed3c7067d596bfe61c5e89705ae0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 13:08:44 +1200 Subject: [PATCH 0220/1090] crafting filled vials now take into account how much metal was in the vial before. --- .../leaf/cosmere/items/MetalNuggetItem.java | 2 +- .../leaf/cosmere/items/MetalVialItem.java | 20 +++++++++-- .../cosmere/recipes/VialMixingRecipe.java | 35 +++++++++++++------ 3 files changed, 43 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 61744e184..bc35a09a5 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -29,7 +29,7 @@ public MetalNuggetItem(Metals.MetalType metalType) public int getUseDuration(ItemStack stack) { //be annoying enough that people prefer metal vials - return 16; + return 64; } public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 57560b873..647195e7e 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -39,7 +39,7 @@ public class MetalVialItem extends BaseItem implements IHasMetalType { private final String metal_ids = "metalIDs"; private final String metal_amounts = "metalAmounts"; - private final int MAX_METALS_COUNT = 8; + private final int MAX_METALS_COUNT = 16; private CompoundTag getContainedMetalsTag(ItemStack stack) { @@ -48,7 +48,14 @@ private CompoundTag getContainedMetalsTag(ItemStack stack) public boolean isFull(ItemStack stack) { - return containedMetalCount(stack) >= MAX_METALS_COUNT; + return containedMetalCount(stack) >= getMaxFillCount(stack); + } + + public int getMaxFillCount(ItemStack stack) + { + final CompoundTag stackTags = stack.getOrCreateTag(); + final String max_count = "max_count"; + return stackTags.contains(max_count) ? stackTags.getInt(max_count) : MAX_METALS_COUNT; } @Nonnull @@ -240,4 +247,13 @@ public Metals.MetalType getMetalType() { return Metals.MetalType.IRON; } + + public void addMetals(ItemStack newMetalVialStack, ItemStack oldMetalVialStack) + { + Map sorted = getStoredMetalsMap(getContainedMetalsTag(oldMetalVialStack)); + for (Integer metalID : sorted.keySet()) + { + addMetals(newMetalVialStack, metalID, sorted.get(metalID)); + } + } } diff --git a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java index b3d90dd6f..8020e919e 100644 --- a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java +++ b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java @@ -45,8 +45,11 @@ public VialMixingRecipe(ResourceLocation loc) public boolean matches(CraftingContainer inv, Level world) { boolean hasNugget = false; - ItemStack bottle = null; + ItemStack vialStack = null; final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); + int bottleAmount = 0; + int nuggetTotal = 0; + MetalVialItem vialItem = null; for (int i = 0; i < inv.getContainerSize(); i++) { @@ -59,32 +62,39 @@ public boolean matches(CraftingContainer inv, Level world) if (INGREDIENT_BOTTLE.test(stack)) { //only one allowed - if (bottle != null) + if (vialStack != null) { return false; } - bottle = stack; + vialStack = stack; + vialItem = (MetalVialItem) vialStack.getItem(); + bottleAmount = vialItem.containedMetalCount(vialStack); } else if (INGREDIENT_NUGGETS.test(stack)) { //but multiple nuggets allowed hasNugget = true; + nuggetTotal++; } } - if (bottle == null) + if (vialStack == null) { - //no bottle, no service + //no vialStack, no service return false; } - //check how full the bottle is, but only if its the vial + if (bottleAmount + nuggetTotal > vialItem.getMaxFillCount(vialStack)) + { + return false; + } + + //check how full the vialStack is, but only if its the vial //minecraft bottles can be inherently empty - if (bottle.getItem() == ItemsRegistry.METAL_VIAL.get()) + if (vialStack.getItem() == ItemsRegistry.METAL_VIAL.get()) { - MetalVialItem item = (MetalVialItem) bottle.getItem(); - return hasNugget && !item.isFull(bottle); + return hasNugget && !vialItem.isFull(vialStack); } @@ -96,7 +106,6 @@ else if (INGREDIENT_NUGGETS.test(stack)) public ItemStack assemble(CraftingContainer inv) { MetalVialItem metalVial = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); - final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); ItemStack itemstack = new ItemStack(metalVial); for (int i = 0; i < inv.getContainerSize(); ++i) @@ -107,7 +116,7 @@ public ItemStack assemble(CraftingContainer inv) continue; } - if (INGREDIENT_NUGGETS.test(stackInSlot)) + if (stackInSlot.is(Tags.Items.NUGGETS)) { if (stackInSlot.getItem() instanceof MetalNuggetItem) { @@ -124,6 +133,10 @@ else if (stackInSlot.getItem() == Items.GOLD_NUGGET) } } + else if (stackInSlot.is(metalVial)) + { + metalVial.addMetals(itemstack, stackInSlot); + } } return itemstack; } From a69c265b3e412e3e5bba87d1c8a7038db70158eb Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 13:54:45 +1200 Subject: [PATCH 0221/1090] Copper/Bronze allomancy checks strength --- .../cosmere/compat/hwyla/SpiritWebTooltip.java | 15 +++++++++++++-- .../java/leaf/cosmere/mixin/EntityMixin.java | 17 ++++++++--------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 6865e6657..4ca806630 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -8,6 +8,7 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.allomancy.AllomancyBronze; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.TextHelper; @@ -25,19 +26,29 @@ public class SpiritWebTooltip implements IEntityComponentProvider @Override public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig iPluginConfig) { + final boolean playerCreativeMode = accessor.getPlayer().isCreative(); //check the entity we are trying to SpiritwebCapability.get(accessor.getPlayer()).ifPresent(clientPlayer -> { AllomancyBronze allomancyBronze = (AllomancyBronze) ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.BRONZE).get(); - if (allomancyBronze.isMetalBurning(clientPlayer) || accessor.getPlayer().isCreative()) + if (allomancyBronze.isMetalBurning(clientPlayer) || playerCreativeMode) { + final double playerBronzeStrength = allomancyBronze.getStrength(clientPlayer, false); //check the entity we are trying to SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(targetSpiritweb -> { + final AllomancyBase copperAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get(); + final double targetCopperStrength = copperAllomancy.getStrength(targetSpiritweb, false); + + if (!playerCreativeMode && (copperAllomancy.isMetalBurning(targetSpiritweb) && targetCopperStrength >= playerBronzeStrength)) + { + return; + } + //show all manifestations, including hemalurgic based ones. for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) { - if (manifestation.isActive(targetSpiritweb) || accessor.getPlayer().isCreative()) + if (manifestation.isActive(targetSpiritweb) || playerCreativeMode) { continue; } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 129f565ef..ab943a00c 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -8,6 +8,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.manifestation.allomancy.AllomancyCopper; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; import net.minecraft.world.entity.Entity; @@ -45,40 +46,38 @@ private void handleIsGlowing(CallbackInfoReturnable cir) { return; } + final double bronzeStrength = bronzeAllomancyManifestation.getStrength(playerSpiritweb, false); SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> { //if target has copper and it's active, early exit - if (ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get().isActive(targetSpiritweb)) + final AllomancyBase copperAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get(); + final double copperStrength = copperAllomancy.getStrength(targetSpiritweb, false); + + if (copperAllomancy.isMetalBurning(targetSpiritweb) && copperStrength >= bronzeStrength) { - //check whether or not the target beats the player in allomantic power return; } //get allomantic strength of - int mode = bronzeAllomancyManifestation.getMode(playerSpiritweb); - //todo range to config double range = bronzeAllomancyManifestation.getRange(playerSpiritweb); boolean found = false; - //if target is player and has any active manifestations, - - - //or if target is not a player and has any manifestations at all - for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { //don't tick powers that the user doesn't have //don't tick powers that are not active final boolean targetIsPlayer = target instanceof Player; + //if target is not a player and has any manifestations at all if (!targetIsPlayer && targetSpiritweb.hasManifestation(manifestation)) { found = true; break; } + //if target is player and has any active manifestations, else if (targetIsPlayer && manifestation.isActive(targetSpiritweb)) { found = true; From 59b548cfa21f4f1271bf8e8b0b8ecdacda63c1e7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 13:56:05 +1200 Subject: [PATCH 0222/1090] Update SpiritWebTooltip.java --- src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 4ca806630..11bb8f44e 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -48,7 +48,7 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf //show all manifestations, including hemalurgic based ones. for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) { - if (manifestation.isActive(targetSpiritweb) || playerCreativeMode) + if (!manifestation.isActive(targetSpiritweb) && !playerCreativeMode) { continue; } From 46a74c5e483eced6540e06759c4aca25211dd1b5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 18:53:25 +1200 Subject: [PATCH 0223/1090] Fix nicrosil crash --- .../cosmere/manifestation/feruchemy/FeruchemyNicrosil.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index feaf04c22..45984b7f3 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -6,6 +6,7 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; +import com.mojang.blaze3d.shaders.Effect; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Constants; @@ -19,6 +20,7 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -204,7 +206,7 @@ private static void checkTapNicrosil(ISpiritweb data, ItemStack metalmind) attributeModifiers.put( AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), new AttributeModifier( - nbt.getUUID("identity"), + nbt.hasUUID("identity") ? nbt.getUUID("identity") : Constants.NBT.UNKEYED_UUID, manifestationName, CompoundNBTHelper.getDouble( nbt, From 92a1a075e33ebcadb820c582698fe22bceedc2ed Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 18:53:48 +1200 Subject: [PATCH 0224/1090] Tin store now affects render distance. --- .../leaf/cosmere/mixin/GameRendererMixin.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index d4b13d079..61151d950 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -5,11 +5,13 @@ import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -25,8 +27,7 @@ private static void removeNightVisionFlash(LivingEntity livingEntity, float f, C info.setReturnValue(i > 0 ? 1 : i); } - @Inject( - at = @At("RETURN"), + @Inject(at = @At("RETURN"), method = "getFov", cancellable = true ) @@ -35,7 +36,6 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean double fov = info.getReturnValue(); Player player = (Player) Minecraft.getInstance().getCameraEntity(); MobEffectInstance tinTapEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); - MobEffectInstance tinStoreEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); if (tinTapEffect != null && tinTapEffect.getDuration() > 0) { int amplifier = tinTapEffect.getAmplifier(); @@ -43,16 +43,34 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean info.setReturnValue(zoomedFov); return; } - if (tinStoreEffect != null && tinStoreEffect.getDuration() > 0) - { - int amplifier = tinStoreEffect.getAmplifier(); - double zoomedFov = fov * (amplifier + 2); - info.setReturnValue(zoomedFov); - return; - } info.setReturnValue(fov); } + @Inject(at = @At("RETURN"), + method = "getRenderDistance", + cancellable = true + ) + private void getRenderDistance(CallbackInfoReturnable info) + { + float renderDistance = info.getReturnValue(); + Player player = (Player) Minecraft.getInstance().getCameraEntity(); + MobEffectInstance tinTapEffect = null; + if (player != null) + { + tinTapEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); + } + if (tinTapEffect != null && tinTapEffect.getDuration() > 0) + { + int amplifier = tinTapEffect.getAmplifier(); + final int i = amplifier + 1; + final double pow = Math.pow(2, i); + final int floor = Mth.fastFloor(pow); + final float v = renderDistance / floor; + + info.setReturnValue(v); + } + + } } From 05cb6954defadc405311ce924090934e51319a62 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 19:52:54 +1200 Subject: [PATCH 0225/1090] brass store has reduceable fire damage --- .../feruchemy/store/BrassStoreEffect.java | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java index 03bdf9d73..73324c9ef 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java @@ -6,10 +6,10 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; -import leaf.cosmere.utils.helpers.EffectsHelper; import net.minecraft.world.effect.MobEffectCategory; -import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingHurtEvent; //warmth public class BrassStoreEffect extends FeruchemyEffectBase @@ -17,17 +17,34 @@ public class BrassStoreEffect extends FeruchemyEffectBase public BrassStoreEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); + MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); } - @Override - public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + public void onLivingHurtEvent(LivingHurtEvent event) { - //ensure the user has fire resistence at least as strong as their store effect - - if (entityLivingBaseIn.level.isClientSide || entityLivingBaseIn.tickCount % 20 != 0) + if (!event.getSource().isFire()) { return; } - entityLivingBaseIn.addEffect(EffectsHelper.getNewEffect(MobEffects.FIRE_RESISTANCE, amplifier)); + + MobEffectInstance effectInstance = event.getEntityLiving().getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + final float amount; + switch (effectInstance.getAmplifier()) + { + case 0: + amount = event.getAmount() / 2; + break; + case 1: + amount = event.getAmount() / 4; + break; + default: + case 2: + event.setCanceled(true); + return; + } + event.setAmount(amount); + } } } From 053849700668b16236a5d532e96049ce10eee4a6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 20:04:57 +1200 Subject: [PATCH 0226/1090] Fix some menu radial button icon overlap --- src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index c53369cf6..96d15b74b 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -289,7 +289,7 @@ protected void SetupButtons() foundPowerType.getName(), foundPowerType.getID(), v - ((TEXT_DISTANCE * foundPowerTypes.size()) / 2) + 5, - -75, + -90, Direction.UP) ); @@ -584,9 +584,8 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double { if (!radialMenuButtons.isEmpty()) { - - final float ring_inner_edge = -10; - final float ring_outer_edge = -50; + final float ring_inner_edge = -20; + final float ring_outer_edge = -60; // todo test if I can get down to one button only final int totalButtons = radialMenuButtons.size(); From 87cf9fc60264ac990e98d882221fe3188842c704 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 20:56:50 +1200 Subject: [PATCH 0227/1090] lerasatium spikes get all powers at 50% power --- src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 1506f902f..23556b083 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -155,7 +155,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType { for (AManifestation manifestation : manifestationsFound) { - Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true), entityKilled.getUUID()); + Invest(stack, manifestation, manifestation.getStrength(entityKilledSpiritWeb, true) * 0.5f, entityKilled.getUUID()); entityKilledSpiritWeb.removeManifestation(manifestation); } } From c93b824738ca33931d0ed8a13b15a726a5dd918c Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 7 Jun 2022 20:59:43 +1200 Subject: [PATCH 0228/1090] Hide cosmere curios when invisible potion effect applied --- .../client/render/curio/renderer/BraceletRenderer.java | 8 ++++++++ .../client/render/curio/renderer/SpikeRenderer.java | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java index e7eda9469..76f297809 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java +++ b/src/main/java/leaf/cosmere/client/render/curio/renderer/BraceletRenderer.java @@ -8,6 +8,8 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; @@ -40,6 +42,12 @@ public > void render( LivingEntity entity = slotContext.entity(); + MobEffectInstance effectInstance = entity.getEffect(MobEffects.INVISIBILITY); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + return; + } + this.model.prepareMobModel(entity, limbSwing, limbSwingAmount, partialTicks); this.model.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); diff --git a/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java b/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java index e3f9b7750..6f167e4bf 100644 --- a/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java +++ b/src/main/java/leaf/cosmere/client/render/curio/renderer/SpikeRenderer.java @@ -8,6 +8,8 @@ import net.minecraft.client.model.geom.ModelPart; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.RenderLayerParent; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; @@ -40,6 +42,12 @@ public > void render( LivingEntity entity = slotContext.entity(); + MobEffectInstance effectInstance = entity.getEffect(MobEffects.INVISIBILITY); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + return; + } + this.model.prepareMobModel(entity, limbSwing, limbSwingAmount, partialTicks); this.model.setupAnim(entity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); From 403cc7acf28d7c3d31a24304b2027f1dc29c2cc8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 11:33:59 +1200 Subject: [PATCH 0229/1090] F-Zinc fixes --- .../feruchemy/store/ZincStoreEffect.java | 26 ++++++++++++++++++ .../effects/feruchemy/tap/ZincTapEffect.java | 27 +++++++++++++++++++ .../cosmere/handlers/PlayerEventHandler.java | 15 ----------- .../cosmere/registry/EffectsRegistry.java | 4 +++ 4 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java new file mode 100644 index 000000000..72fda1d12 --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java @@ -0,0 +1,26 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.store; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; + + +public class ZincStoreEffect extends FeruchemyEffectBase +{ + public ZincStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()).get(), + "9d50ed05-06f4-4bc2-83bc-d870f93696bf", + -0.1D, + AttributeModifier.Operation.ADDITION); + } + +} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java new file mode 100644 index 000000000..ebcc8fc14 --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java @@ -0,0 +1,27 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.tap; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraftforge.common.ForgeMod; + + +public class ZincTapEffect extends FeruchemyEffectBase +{ + public ZincTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()).get(), + "1a7c0d6e-d206-4939-ae07-b47783656f2d", + 0.1D, + AttributeModifier.Operation.ADDITION); + } +} diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index b3c400be8..2c359b8d3 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -87,21 +87,6 @@ public void onXPChange(PlayerXpEvent.XpChange event) return; } - //Feruchemical Zinc - { - MobEffectInstance tappingZincEffect = event.getPlayer().getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.ZINC).get()); - MobEffectInstance storingZincEffect = event.getPlayer().getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.ZINC).get()); - - if (tappingZincEffect != null) - { - event.setAmount(event.getAmount() * (tappingZincEffect.getAmplifier() + 2)); - } - if (storingZincEffect != null) - { - event.setAmount(event.getAmount() / (storingZincEffect.getAmplifier() + 2)); - } - } - RegistryObject xpGainRateAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()); if (xpGainRateAttribute != null && xpGainRateAttribute.isPresent()) { diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index dd5334fd4..1c9581691 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -68,6 +68,8 @@ private static MobEffect makeStoringEffect(Metals.MetalType metalType) return (new SteelStoreEffect(metalType, MobEffectCategory.BENEFICIAL)); case PEWTER: return new PewterStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + case ZINC: + return new ZincStoreEffect(metalType, MobEffectCategory.BENEFICIAL); case BRASS: return new BrassStoreEffect(metalType, MobEffectCategory.BENEFICIAL); case DURALUMIN: @@ -97,6 +99,8 @@ private static MobEffect makeTappingEffect(Metals.MetalType metalType) return new SteelTapEffect(metalType, MobEffectCategory.BENEFICIAL); case PEWTER: return new PewterTapEffect(metalType, MobEffectCategory.BENEFICIAL); + case ZINC: + return new ZincTapEffect(metalType, MobEffectCategory.BENEFICIAL); case BRASS: return new BrassTapEffect(metalType, MobEffectCategory.BENEFICIAL); case DURALUMIN: From 804a2791abfb095f3e0ee58d032682e1cc580257 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 11:54:13 +1200 Subject: [PATCH 0230/1090] Spawned metalborn have ferring/misting names if they only have one power --- .../cosmere/utils/helpers/EntityHelper.java | 50 ++++++++++++------- .../cosmere/utils/helpers/MathHelper.java | 1 + 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index bbe4b24b1..fe1470da8 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -58,6 +58,9 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe int allomancyPower = MathHelper.randomInt(0, 15); int feruchemyPower = MathHelper.randomInt(0, 15); + final Metals.MetalType allomancyMetal = Metals.MetalType.valueOf(allomancyPower).get(); + final Metals.MetalType feruchemyMetal = Metals.MetalType.valueOf(feruchemyPower).get(); + //if not twinborn, pick one power boolean isAllomancy = MathHelper.randomBool(); @@ -85,29 +88,42 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe : "Feruchemist")); } } - else if (isTwinborn) + else { - spiritwebCapability.giveManifestation(ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.valueOf(allomancyPower).get()).get()); - spiritwebCapability.giveManifestation(ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.valueOf(feruchemyPower).get()).get()); + if (isTwinborn) + { + spiritwebCapability.giveManifestation(ManifestationRegistry.ALLOMANCY_POWERS.get(allomancyMetal).get()); + spiritwebCapability.giveManifestation(ManifestationRegistry.FERUCHEMY_POWERS.get(feruchemyMetal).get()); - if (!isPlayerEntity) + if (!isPlayerEntity) + { + //todo translations + //todo grant random name + entity.setCustomName(TextHelper.createTranslatedText("Twinborn")); + } + } + else { + AManifestation manifestation = + isAllomancy + ? ManifestationRegistry.ALLOMANCY_POWERS.get(allomancyMetal).get() + : ManifestationRegistry.FERUCHEMY_POWERS.get(feruchemyMetal).get(); + + spiritwebCapability.giveManifestation(manifestation); //todo translations //todo grant random name - entity.setCustomName(TextHelper.createTranslatedText("Twinborn")); + //entity.setCustomName(powerType.getManifestation(powerID).translation()); + + if (!isPlayerEntity) + { + //todo translations + //todo grant random name + entity.setCustomName(TextHelper.createTranslatedText( + isAllomancy + ? allomancyMetal.getMistingName() + : feruchemyMetal.getFerringName())); + } } } - else - { - AManifestation manifestation = - isAllomancy - ? ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.valueOf(allomancyPower).get()).get() - : ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.valueOf(feruchemyPower).get()).get(); - - spiritwebCapability.giveManifestation(manifestation); - //todo translations - //todo grant random name - //entity.setCustomName(powerType.getManifestation(powerID).translation()); - } } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java index b1f198842..b3978a23a 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/MathHelper.java @@ -10,6 +10,7 @@ public class MathHelper { public final static Random RANDOM = new Random(); + //inclusive public static int randomInt(int min, int max) { return RANDOM.nextInt((max - min) + 1) + min; From 51a4cc26ffd3bc2a3fae8743bdcb228cb65ba643 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 12:04:26 +1200 Subject: [PATCH 0231/1090] Fix deactivate manifestations not clearing modes on client --- .../cap/entity/SpiritwebCapability.java | 1 + .../java/leaf/cosmere/network/Network.java | 2 +- .../DeactivateAllManifestationsMessage.java | 52 ------------------- 3 files changed, 2 insertions(+), 53 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 1e8bf7f9c..2ed6e58e3 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -157,6 +157,7 @@ public void deserializeNBT(CompoundTag nbt) { hasBeenInitialized = nbt.getBoolean("assigned_powers"); CompoundTag modeNBT = nbt.getCompound("manifestation_modes"); + MANIFESTATIONS_MODE.clear(); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { final String manifestationLoc = manifestation.getRegistryName().toString(); diff --git a/src/main/java/leaf/cosmere/network/Network.java b/src/main/java/leaf/cosmere/network/Network.java index 373838c5e..5dab80842 100644 --- a/src/main/java/leaf/cosmere/network/Network.java +++ b/src/main/java/leaf/cosmere/network/Network.java @@ -34,7 +34,7 @@ public static void init() NETWORK_CHANNEL.registerMessage(id++, SyncPlayerSpiritwebMessage.class, SyncPlayerSpiritwebMessage::encode, SyncPlayerSpiritwebMessage::decode, SyncPlayerSpiritwebMessage::handle); NETWORK_CHANNEL.registerMessage(id++, DeactivateCurrentManifestationsMessage.class, DeactivateCurrentManifestationsMessage::encode, DeactivateCurrentManifestationsMessage::new, DeactivateCurrentManifestationsMessage::handle); NETWORK_CHANNEL.registerMessage(id++, ChangeManifestationModeMessage.class, ChangeManifestationModeMessage::encode, ChangeManifestationModeMessage::decode, ChangeManifestationModeMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, DeactivateAllManifestationsMessage.class, DeactivateAllManifestationsMessage::encode, DeactivateAllManifestationsMessage::new, DeactivateAllManifestationsMessage::handle); + //NETWORK_CHANNEL.registerMessage(id++, DeactivateAllManifestationsMessage.class, DeactivateAllManifestationsMessage::encode, DeactivateAllManifestationsMessage::new, DeactivateAllManifestationsMessage::handle); NETWORK_CHANNEL.registerMessage(id++, ChangeSelectedManifestationMessage.class, ChangeSelectedManifestationMessage::encode, ChangeSelectedManifestationMessage::decode, ChangeSelectedManifestationMessage::handle); NETWORK_CHANNEL.registerMessage(id++, SetSelectedManifestationMessage.class, SetSelectedManifestationMessage::encode, SetSelectedManifestationMessage::decode, SetSelectedManifestationMessage::handle); NETWORK_CHANNEL.registerMessage(id++, SyncPushPullMessage.class, SyncPushPullMessage::encode, SyncPushPullMessage::decode, SyncPushPullMessage::handle); diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java deleted file mode 100644 index 5c83b59d5..000000000 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateAllManifestationsMessage.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.network.packets; - -import leaf.cosmere.cap.entity.SpiritwebCapability; -import net.minecraft.Util; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.BaseComponent; -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.level.ServerPlayer; -import net.minecraftforge.network.NetworkEvent; - -import java.util.function.Supplier; - -import static leaf.cosmere.constants.Constants.Translations.POWER_INACTIVE; - -public class DeactivateAllManifestationsMessage -{ - - public DeactivateAllManifestationsMessage() - { - } - - public DeactivateAllManifestationsMessage(FriendlyByteBuf buffer) - { - } - - public static void handle(DeactivateAllManifestationsMessage message, Supplier ctx) - { - NetworkEvent.Context context = ctx.get(); - ServerPlayer sender = context.getSender(); - MinecraftServer server = sender.getServer(); - server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> - { - BaseComponent manifestationText = POWER_INACTIVE; - - cap.deactivateManifestations(); - - sender.sendMessage(manifestationText, Util.NIL_UUID); - cap.syncToClients(null); - })); - context.setPacketHandled(true); - } - - public void encode(FriendlyByteBuf buf) - { - - } - -} From 4a63652e3c6a7d4f4fc4a12b3b7d3b8bb5e45011 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 13:06:42 +1200 Subject: [PATCH 0232/1090] Strength in metal dependent on how you got it --- .../leaf/cosmere/cap/entity/ISpiritweb.java | 3 +- .../cap/entity/SpiritwebCapability.java | 2 +- .../leaf/cosmere/client/ClientEvents.java | 6 ++-- .../subcommands/ManifestationCommand.java | 6 ++-- .../leaf/cosmere/items/MetalNuggetItem.java | 6 ++-- .../cosmere/items/curio/IHemalurgicInfo.java | 25 ++++++++++++++- .../java/leaf/cosmere/network/Network.java | 2 +- ...a => DeactivateManifestationsMessage.java} | 8 ++--- .../cosmere/registry/KeybindingRegistry.java | 4 +-- .../cosmere/utils/helpers/EntityHelper.java | 32 +++++++++++-------- 10 files changed, 61 insertions(+), 33 deletions(-) rename src/main/java/leaf/cosmere/network/packets/{DeactivateCurrentManifestationsMessage.java => DeactivateManifestationsMessage.java} (78%) diff --git a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java index 8fc30b45b..074aff6f2 100644 --- a/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java +++ b/src/main/java/leaf/cosmere/cap/entity/ISpiritweb.java @@ -8,7 +8,6 @@ package leaf.cosmere.cap.entity; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; import net.minecraft.nbt.CompoundTag; @@ -30,7 +29,7 @@ public interface ISpiritweb extends INBTSerializable boolean hasManifestation(AManifestation aManifestation, boolean ignoreTemporaryPower); - void giveManifestation(AManifestation aManifestation); + void giveManifestation(AManifestation manifestation, int i); void removeManifestation(AManifestation aManifestation); diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 2ed6e58e3..e8538be6f 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -555,7 +555,7 @@ public boolean hasManifestation(AManifestation manifestation, boolean ignoreTemp @Override - public void giveManifestation(AManifestation manifestation) + public void giveManifestation(AManifestation manifestation, int i) { String manifestationName = manifestation.getName(); if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index f173d507e..b3e0032e0 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -11,7 +11,7 @@ import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.network.packets.ChangeSelectedManifestationMessage; -import leaf.cosmere.network.packets.DeactivateCurrentManifestationsMessage; +import leaf.cosmere.network.packets.DeactivateManifestationsMessage; import leaf.cosmere.registry.KeybindingRegistry; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -65,12 +65,12 @@ public static void onKey(InputEvent.KeyInputEvent event) SpiritwebCapability.get(player).ifPresent(spiritweb -> { - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_TOGGLE)) + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_DEACTIVATE)) { //if crouching, only turn off. if (player.isCrouching() && spiritweb.canTickSelectedManifestation()) { - Network.sendToServer(new DeactivateCurrentManifestationsMessage()); + Network.sendToServer(new DeactivateManifestationsMessage()); } //otherwise do a normal toggle else if (!player.isCrouching()) diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index 65f62fa43..c0c4bf0ed 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -24,9 +24,6 @@ import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.server.level.ServerPlayer; -import javax.naming.Context; - -import java.util.ArrayList; import java.util.Collection; public class ManifestationCommand extends ModCommand @@ -134,7 +131,8 @@ private static int give(CommandContext context) throws Comma } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { - spiritweb.giveManifestation(manifestation); + //todo config ability strength + spiritweb.giveManifestation(manifestation, 10); source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); spiritweb.syncToClients(null); }); diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index bc35a09a5..1076136e2 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -73,14 +73,16 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met //give allomancy if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY) { - spiritweb.giveManifestation(manifestation); + //todo config allomancy strength + spiritweb.giveManifestation(manifestation, 13); } break; case LERASATIUM: //give feruchemy if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY) { - spiritweb.giveManifestation(manifestation); + //todo config feruchemy strength + spiritweb.giveManifestation(manifestation, 13); } break; } diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 23556b083..379835fcd 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -353,10 +353,33 @@ default double getHemalurgicStrength(ItemStack stack, AManifestation manifestati default double getHemalurgicStrength(ItemStack stack, String name) { - return CompoundNBTHelper.getDouble( + double strength = CompoundNBTHelper.getDouble( getHemalurgicInfo(stack), name, 0); + + HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) stack.getItem(); + switch (spikeItem.getMetalType()) + { + case LERASATIUM -> + { + //lerasatium spikes can't give more than 5 + //todo config max lerasatium spike strength amount + strength = Math.min(5, strength); + } + case IRON, TIN, COPPER, CHROMIUM, ZINC, NICROSIL -> + { + //nil + } + default -> + { + //other spikes can't give more than 7 + //todo config max power spike strength amount + strength = Math.min(7, strength); + } + } + + return strength; } default void setHemalurgicStrength(ItemStack stack, Metals.MetalType metalType, double val) diff --git a/src/main/java/leaf/cosmere/network/Network.java b/src/main/java/leaf/cosmere/network/Network.java index 5dab80842..dd9dee2b3 100644 --- a/src/main/java/leaf/cosmere/network/Network.java +++ b/src/main/java/leaf/cosmere/network/Network.java @@ -32,7 +32,7 @@ public static void init() { int id = 0; NETWORK_CHANNEL.registerMessage(id++, SyncPlayerSpiritwebMessage.class, SyncPlayerSpiritwebMessage::encode, SyncPlayerSpiritwebMessage::decode, SyncPlayerSpiritwebMessage::handle); - NETWORK_CHANNEL.registerMessage(id++, DeactivateCurrentManifestationsMessage.class, DeactivateCurrentManifestationsMessage::encode, DeactivateCurrentManifestationsMessage::new, DeactivateCurrentManifestationsMessage::handle); + NETWORK_CHANNEL.registerMessage(id++, DeactivateManifestationsMessage.class, DeactivateManifestationsMessage::encode, DeactivateManifestationsMessage::new, DeactivateManifestationsMessage::handle); NETWORK_CHANNEL.registerMessage(id++, ChangeManifestationModeMessage.class, ChangeManifestationModeMessage::encode, ChangeManifestationModeMessage::decode, ChangeManifestationModeMessage::handle); //NETWORK_CHANNEL.registerMessage(id++, DeactivateAllManifestationsMessage.class, DeactivateAllManifestationsMessage::encode, DeactivateAllManifestationsMessage::new, DeactivateAllManifestationsMessage::handle); NETWORK_CHANNEL.registerMessage(id++, ChangeSelectedManifestationMessage.class, ChangeSelectedManifestationMessage::encode, ChangeSelectedManifestationMessage::decode, ChangeSelectedManifestationMessage::handle); diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java similarity index 78% rename from src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java rename to src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java index 50a10ab9e..8c8ac8fd1 100644 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateCurrentManifestationsMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java @@ -16,18 +16,18 @@ import static leaf.cosmere.constants.Constants.Translations.POWER_INACTIVE; -public class DeactivateCurrentManifestationsMessage +public class DeactivateManifestationsMessage { - public DeactivateCurrentManifestationsMessage() + public DeactivateManifestationsMessage() { } - public DeactivateCurrentManifestationsMessage(FriendlyByteBuf buffer) + public DeactivateManifestationsMessage(FriendlyByteBuf buffer) { } - public static void handle(DeactivateCurrentManifestationsMessage message, Supplier ctx) + public static void handle(DeactivateManifestationsMessage message, Supplier ctx) { NetworkEvent.Context context = ctx.get(); ServerPlayer sender = context.getSender(); diff --git a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java index 8935a006f..4073a356f 100644 --- a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java +++ b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java @@ -25,7 +25,7 @@ public class KeybindingRegistry { public static KeyMapping MANIFESTATION_MENU; - public static KeyMapping MANIFESTATION_TOGGLE; + public static KeyMapping MANIFESTATION_DEACTIVATE; public static KeyMapping MANIFESTATION_NEXT; public static KeyMapping MANIFESTATION_PREVIOUS; @@ -39,7 +39,7 @@ public class KeybindingRegistry public static void register(FMLClientSetupEvent event) { ClientRegistry.registerKeyBinding(MANIFESTATION_MENU = new KeyMapping(KEY_MANIFESTATION_MENU, GLFW.GLFW_KEY_G, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_TOGGLE = new KeyMapping(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATION_DEACTIVATE = new KeyMapping(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(MANIFESTATION_NEXT = new KeyMapping(KEY_MANIFESTATION_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(MANIFESTATION_PREVIOUS = createKeybinding(KEY_MANIFESTATION_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index fe1470da8..42ff2d588 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -8,6 +8,7 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; @@ -55,11 +56,11 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe boolean isTwinborn = isPlayerEntity || MathHelper.randomInt(0, 16) < 3; //randomise the given powers from allomancy and feruchemy - int allomancyPower = MathHelper.randomInt(0, 15); - int feruchemyPower = MathHelper.randomInt(0, 15); + int allomancyPowerID = MathHelper.randomInt(0, 15); + int feruchemyPowerID = MathHelper.randomInt(0, 15); - final Metals.MetalType allomancyMetal = Metals.MetalType.valueOf(allomancyPower).get(); - final Metals.MetalType feruchemyMetal = Metals.MetalType.valueOf(feruchemyPower).get(); + final Metals.MetalType allomancyMetal = Metals.MetalType.valueOf(allomancyPowerID).get(); + final Metals.MetalType feruchemyMetal = Metals.MetalType.valueOf(feruchemyPowerID).get(); //if not twinborn, pick one power boolean isAllomancy = MathHelper.randomBool(); @@ -75,7 +76,7 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe if ((isAllomancy && manifestationType == Manifestations.ManifestationTypes.ALLOMANCY) || (!isAllomancy && manifestationType == Manifestations.ManifestationTypes.FERUCHEMY)) { - spiritwebCapability.giveManifestation(manifestation); + spiritwebCapability.giveManifestation(manifestation, 8); } } @@ -83,17 +84,22 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe { //todo translations //todo grant random name - entity.setCustomName(TextHelper.createTranslatedText(isAllomancy - ? "Mistborn" - : "Feruchemist")); + entity.setCustomName( + TextHelper.createTranslatedText( + isAllomancy + ? "Mistborn" + : "Feruchemist") + ); } } else { + final AllomancyBase allomancyPower = ManifestationRegistry.ALLOMANCY_POWERS.get(allomancyMetal).get(); + final AManifestation feruchemyPower = ManifestationRegistry.FERUCHEMY_POWERS.get(feruchemyMetal).get(); if (isTwinborn) { - spiritwebCapability.giveManifestation(ManifestationRegistry.ALLOMANCY_POWERS.get(allomancyMetal).get()); - spiritwebCapability.giveManifestation(ManifestationRegistry.FERUCHEMY_POWERS.get(feruchemyMetal).get()); + spiritwebCapability.giveManifestation(allomancyPower, 9); + spiritwebCapability.giveManifestation(feruchemyPower, 9); if (!isPlayerEntity) { @@ -106,10 +112,10 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe { AManifestation manifestation = isAllomancy - ? ManifestationRegistry.ALLOMANCY_POWERS.get(allomancyMetal).get() - : ManifestationRegistry.FERUCHEMY_POWERS.get(feruchemyMetal).get(); + ? allomancyPower + : feruchemyPower; - spiritwebCapability.giveManifestation(manifestation); + spiritwebCapability.giveManifestation(manifestation, 10); //todo translations //todo grant random name //entity.setCustomName(powerType.getManifestation(powerID).translation()); From 56dcafacc49697fbff55af0cdd4ec3b5519e484e Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 15:33:31 +1200 Subject: [PATCH 0233/1090] a-bronze now competes against copper cloud strength --- .../compat/hwyla/SpiritWebTooltip.java | 11 +++++--- .../allomancy/AllomancyCopper.java | 25 ++++++++++++++++--- .../java/leaf/cosmere/mixin/EntityMixin.java | 10 +++++--- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 11bb8f44e..cc9838a29 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -10,12 +10,14 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.allomancy.AllomancyBronze; +import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.TextHelper; import mcp.mobius.waila.api.EntityAccessor; import mcp.mobius.waila.api.IEntityComponentProvider; import mcp.mobius.waila.api.ITooltip; import mcp.mobius.waila.api.config.IPluginConfig; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; public class SpiritWebTooltip implements IEntityComponentProvider @@ -37,10 +39,13 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf //check the entity we are trying to SpiritwebCapability.get((LivingEntity) accessor.getEntity()).ifPresent(targetSpiritweb -> { - final AllomancyBase copperAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get(); - final double targetCopperStrength = copperAllomancy.getStrength(targetSpiritweb, false); + MobEffectInstance effect = targetSpiritweb.getLiving().getEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); - if (!playerCreativeMode && (copperAllomancy.isMetalBurning(targetSpiritweb) && targetCopperStrength >= playerBronzeStrength)) + final double copperCloudStrength = + effect!= null && effect.getDuration() > 0 + ? effect.getAmplifier() : 0; + + if (!playerCreativeMode && (copperCloudStrength >= playerBronzeStrength)) { return; } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java index b62b9f510..b3179db17 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java @@ -8,8 +8,21 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.utils.helpers.EffectsHelper; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.functions.LootingEnchantFunction; +import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.predicates.LootItemKilledByPlayerCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceWithLootingCondition; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import java.util.List; @@ -31,10 +44,14 @@ protected void performEffect(ISpiritweb data) //Hides Allomantic Pulses if (isActiveTick) { - int mode = getMode(data); - MobEffectInstance newEffect = EffectsHelper.getNewEffect(EffectsRegistry.ALLOMANTIC_COPPER.get(), mode - 1); - - List entitiesToApplyEffect = getLivingEntitiesInRange(livingEntity, 5, true); + MobEffectInstance newEffect = EffectsHelper.getNewEffect( + EffectsRegistry.ALLOMANTIC_COPPER.get(), + Mth.fastFloor( + getStrength(data, false) + ) + ); + + List entitiesToApplyEffect = getLivingEntitiesInRange(livingEntity, getRange(data), true); for (LivingEntity e : entitiesToApplyEffect) { diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index ab943a00c..173533e99 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -9,8 +9,10 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.allomancy.AllomancyCopper; +import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; +import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -51,10 +53,12 @@ private void handleIsGlowing(CallbackInfoReturnable cir) SpiritwebCapability.get(target).ifPresent(targetSpiritweb -> { //if target has copper and it's active, early exit - final AllomancyBase copperAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.COPPER).get(); - final double copperStrength = copperAllomancy.getStrength(targetSpiritweb, false); + MobEffectInstance effect = targetSpiritweb.getLiving().getEffect(EffectsRegistry.ALLOMANTIC_COPPER.get()); + final double copperCloudStrength = + effect != null && effect.getDuration() > 0 + ? effect.getAmplifier() : 0; - if (copperAllomancy.isMetalBurning(targetSpiritweb) && copperStrength >= bronzeStrength) + if (copperCloudStrength >= bronzeStrength) { return; } From f7efe68914af2c02904e799ceee0f92e0a4f21e7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 19:33:02 +1200 Subject: [PATCH 0234/1090] Mode increase/decrease affected by shift/ctrl --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 2 +- .../leaf/cosmere/client/ClientEvents.java | 32 ++++++++++++------- .../leaf/cosmere/constants/Constants.java | 2 +- .../cosmere/datagen/language/EngLangGen.java | 2 +- .../cosmere/registry/KeybindingRegistry.java | 4 +-- 6 files changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index fc945dc03..a418e5763 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -d306deda603550f38bd99faf634dff58f6aeff95 assets/cosmere/lang/en_us.json +1345b1bfaae04edb19e0a0265133ea10a34d1adf assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index ae72eb7b8..b6578a687 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -576,7 +576,7 @@ "key.cosmere.powers.mode.increase": "Mode Increase", "key.cosmere.powers.next": "Next Power", "key.cosmere.powers.previous": "Previous Power", - "key.cosmere.powers.toggle": "Toggle Current Powers", + "key.cosmere.powers.toggle": "Deactivate All Powers", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.allomantic_aluminum": "Allomantic Aluminum", "manifestation.cosmere.allomantic_aluminum.description": "Users can burn aluminum", diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index b3e0032e0..3e407a157 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -15,6 +15,7 @@ import leaf.cosmere.registry.KeybindingRegistry; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; import net.minecraft.util.Mth; import net.minecraft.util.profiling.ProfilerFiller; @@ -65,15 +66,15 @@ public static void onKey(InputEvent.KeyInputEvent event) SpiritwebCapability.get(player).ifPresent(spiritweb -> { - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_DEACTIVATE)) + if (isKeyPressed(event, KeybindingRegistry.MANIFESTATIONS_DEACTIVATE)) { //if crouching, only turn off. - if (player.isCrouching() && spiritweb.canTickSelectedManifestation()) + if (Screen.hasShiftDown()) { Network.sendToServer(new DeactivateManifestationsMessage()); } //otherwise do a normal toggle - else if (!player.isCrouching()) + else { //todo decide if there is an activation state? } @@ -89,16 +90,25 @@ else if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_NEXT)) Network.sendToServer(new ChangeSelectedManifestationMessage(1)); } + final boolean modeIncreasePressed = isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE); + final boolean modeDecreasedPressed = isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE); - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_INCREASE)) + if (modeIncreasePressed || modeDecreasedPressed) { - int dir = (player.isCrouching() ? 3 : 1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), dir)); - } - if (isKeyPressed(event, KeybindingRegistry.MANIFESTATION_MODE_DECREASE)) - { - int dir = (player.isCrouching() ? -3 : -1); - Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), dir)); + int dir; + if (Screen.hasShiftDown()) + { + dir = 5; + } + else if (Screen.hasControlDown()) + { + dir = 10; + } + else + { + dir = 1; + } + Network.sendToServer(new ChangeManifestationModeMessage(spiritweb.manifestation(), dir * (modeIncreasePressed ? 1 : -1))); } }); } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 54d074da7..ac0ff7ccd 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -86,7 +86,7 @@ public static class Strings public static final String KEY_MANIFESTATION_NEXT = "key.cosmere.powers.next"; public static final String KEY_MANIFESTATION_PREVIOUS = "key.cosmere.powers.previous"; - public static final String KEY_MANIFESTATION_TOGGLE = "key.cosmere.powers.toggle"; + public static final String KEY_DEACTIVATE_ALL_POWERS = "key.cosmere.powers.toggle"; public static final String KEY_MANIFESTATION_MENU = "key.cosmere.powers.menu"; public static final String KEY_ALLOMANCY_PUSH = "key.cosmere.allomancy.push"; diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index 69dc8aa33..c60748dd7 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -279,7 +279,7 @@ else if (item instanceof MetalmindItem) //KeyBindings add(KEYS_CATEGORY, "Cosmere"); add(KEY_MANIFESTATION_MENU, "Powers Menu"); - add(KEY_MANIFESTATION_TOGGLE, "Toggle Current Powers"); + add(KEY_DEACTIVATE_ALL_POWERS, "Deactivate All Powers"); add(KEY_MANIFESTATION_NEXT, "Next Power"); add(KEY_MANIFESTATION_PREVIOUS, "Previous Power"); add(KEY_MANIFESTATION_MODE_INCREASE, "Mode Increase"); diff --git a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java index 4073a356f..497080bbf 100644 --- a/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java +++ b/src/main/java/leaf/cosmere/registry/KeybindingRegistry.java @@ -25,7 +25,7 @@ public class KeybindingRegistry { public static KeyMapping MANIFESTATION_MENU; - public static KeyMapping MANIFESTATION_DEACTIVATE; + public static KeyMapping MANIFESTATIONS_DEACTIVATE; public static KeyMapping MANIFESTATION_NEXT; public static KeyMapping MANIFESTATION_PREVIOUS; @@ -39,7 +39,7 @@ public class KeybindingRegistry public static void register(FMLClientSetupEvent event) { ClientRegistry.registerKeyBinding(MANIFESTATION_MENU = new KeyMapping(KEY_MANIFESTATION_MENU, GLFW.GLFW_KEY_G, KEYS_CATEGORY)); - ClientRegistry.registerKeyBinding(MANIFESTATION_DEACTIVATE = new KeyMapping(KEY_MANIFESTATION_TOGGLE, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); + ClientRegistry.registerKeyBinding(MANIFESTATIONS_DEACTIVATE = new KeyMapping(KEY_DEACTIVATE_ALL_POWERS, GLFW.GLFW_KEY_C, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(MANIFESTATION_NEXT = new KeyMapping(KEY_MANIFESTATION_NEXT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); ClientRegistry.registerKeyBinding(MANIFESTATION_PREVIOUS = createKeybinding(KEY_MANIFESTATION_PREVIOUS, KeyModifier.SHIFT, GLFW.GLFW_KEY_V, KEYS_CATEGORY)); From 8b07a634576b513d94f81774cafe67b08d16f3ab Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 19:39:12 +1200 Subject: [PATCH 0235/1090] Wearing gold metalminds/spikes makes piglins neutral --- src/main/java/leaf/cosmere/items/MetalmindItem.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/java/leaf/cosmere/items/MetalmindItem.java b/src/main/java/leaf/cosmere/items/MetalmindItem.java index d466d2cb6..2a25258da 100644 --- a/src/main/java/leaf/cosmere/items/MetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/MetalmindItem.java @@ -66,4 +66,16 @@ public Multimap getAttributeModifiers(SlotContext return attributeModifiers; } + + @Override + public boolean makesPiglinsNeutral(SlotContext slotContext, ItemStack stack) + { + return makesPiglinsNeutral(stack, slotContext.entity()); + } + + @Override + public boolean makesPiglinsNeutral(ItemStack stack, LivingEntity wearer) + { + return this.metalType == Metals.MetalType.GOLD; + } } From a5f5787cf29f484dbc9077a1d73d3773d23a87a0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 19:56:19 +1200 Subject: [PATCH 0236/1090] Update changelog and bump version --- Changelog.md | 20 ++++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 5ce82e362..704eff609 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,25 @@ The Cosmere Project - For 1.16 Minecraft +B44 + +Fix tapping gold only healing one hp regardless of tap amount +Crafting filled vials now take into account how much metal was in the vial before. +Copper/Bronze allomancy checks strength +Fix nicrosil crash +Tin store now affects render distance. +Brass store has reduceable fire damage +Fix some menu radial button icon overlap +Lerasatium spikes get all powers at 50% of donors strength. +Hide cosmere curios when invisible potion effect applied +Fix F-Zinc being inverted. +Spawned mob metalborn have ferring/misting names if they only have one power +Fix deactivate manifestations not clearing modes on client +Strength in metal dependent on how you got it. Misting/twinborn are slightly stronger than full feruchemist/mistborn. God metal granting powers grant 'ancient' strength. +A-Bronze now competes against copper cloud effect in order to make entities and see information in hwyla. +Mode increase/decrease affected by shift/ctrl. +Wearing gold metalminds/spikes makes piglins neutral. + + B43 Allomantic tin now has does incremental night vision improvement, rather than doing the potion effect. diff --git a/gradle.properties b/gradle.properties index cac5d2431..b07d60e29 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere -build_number=44 +build_number=45 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 0da2c891e07e911b110532a527ad69fb19580fd2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 21:08:26 +1200 Subject: [PATCH 0237/1090] Fix ferring/misting names being lowercase --- src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index 42ff2d588..f5e8402c9 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -124,10 +124,11 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe { //todo translations //todo grant random name + final String s = StringHelper.fixCapitalisation(isAllomancy + ? allomancyMetal.getMistingName() + : feruchemyMetal.getFerringName()); entity.setCustomName(TextHelper.createTranslatedText( - isAllomancy - ? allomancyMetal.getMistingName() - : feruchemyMetal.getFerringName())); + s)); } } } From 74fa8105916a6615417060934be636c400877b12 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 21:12:57 +1200 Subject: [PATCH 0238/1090] Show powers a mob has if burning bronze. --- src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index cc9838a29..7524b3469 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -19,6 +19,7 @@ import mcp.mobius.waila.api.config.IPluginConfig; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; public class SpiritWebTooltip implements IEntityComponentProvider { @@ -49,11 +50,12 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf { return; } + final boolean targetIsPlayer = targetSpiritweb.getLiving() instanceof Player; //show all manifestations, including hemalurgic based ones. for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) { - if (!manifestation.isActive(targetSpiritweb) && !playerCreativeMode) + if (!targetIsPlayer || (!manifestation.isActive(targetSpiritweb)) && !playerCreativeMode) { continue; } From 8a7245e8c61ef7e05186e82e2f1909c8b278b20d Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jun 2022 21:23:05 +1200 Subject: [PATCH 0239/1090] Stronger tin tapping. Needs testing --- src/main/java/leaf/cosmere/mixin/GameRendererMixin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index 61151d950..0ec3aa503 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -39,8 +39,10 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean if (tinTapEffect != null && tinTapEffect.getDuration() > 0) { int amplifier = tinTapEffect.getAmplifier(); - double zoomedFov = fov / (amplifier + 2); - info.setReturnValue(zoomedFov); + final int i = amplifier + 1; + final double pow = Math.pow(2, i); + final double v = fov / pow; + info.setReturnValue(v); return; } From f2ff2c7cfc015d6183f3a7f77c0159ea915493c5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:17:11 +1200 Subject: [PATCH 0240/1090] tidied up feruchemy base. --- .../feruchemy/FeruchemyBase.java | 70 ++++++++----------- 1 file changed, 29 insertions(+), 41 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 4b1c67f27..e8b389c52 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -74,6 +74,29 @@ public boolean isTapping(ISpiritweb data) return getMode(data) < 0; } + public boolean canAfford(ISpiritweb data, boolean simulate) + { + int cost = getCost(data); + final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, !simulate, true); + + if (metalmind != null) + { + return true; + } + + if (!simulate) + { + final int mode = getMode(data); + if (mode < 0) + { + //move towards turning off feruchemy. + data.setMode(this, mode + 1); + } + } + + return false; + } + public int getCost(ISpiritweb data) { int mode = data.getMode(this); @@ -84,8 +107,7 @@ public int getCost(ISpiritweb data) { //wanting to tap //get cost - return mode <= -3 ? mode : -(mode * mode); - + return mode >= -3 ? mode : -(mode * mode); } //if we are storing //check if there is space to store @@ -96,49 +118,24 @@ else if (mode > 0) return 0; } + @Override public void tick(ISpiritweb data) { //don't check every tick. LivingEntity livingEntity = data.getLiving(); - if (livingEntity.tickCount % 20 != 0) - { - return; - } - int mode = getMode(data); - int cost; - - MobEffect effect = getEffect(mode); - - // if we are tapping - //check if there is charges to tap - if (mode < 0) - { - //wanting to tap - //get cost - cost = mode <= -3 ? -(mode * mode) : mode; - - } - //if we are storing - //check if there is space to store - else if (mode > 0) + if ((livingEntity.tickCount % 20 != 0) || mode == 0) { - cost = mode; - } - //can't store or tap any more - else - { - //remove active effects. - //let the current effect run out. + //if not active tick, or mode is off return; } - final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); - if (metalmind != null)//success + if (canAfford(data, false))//success { + MobEffect effect = getEffect(mode); MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); if (effect == null) @@ -148,15 +145,6 @@ else if (mode > 0) livingEntity.addEffect(currentEffect); } - else - { - if (mode < 0) - { - //move towards turning off feruchemy. - data.setMode(this, mode + 1); - } - } - } protected MobEffect getEffect(int mode) From eaad49573b22f5656487e70adf6cab64af7fa5f3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:18:07 +1200 Subject: [PATCH 0241/1090] f-tin no longer cutting out on laggy connections --- .../leaf/cosmere/mixin/GameRendererMixin.java | 60 ++++++++++++------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java index 0ec3aa503..44b6bbe1f 100644 --- a/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java +++ b/src/main/java/leaf/cosmere/mixin/GameRendererMixin.java @@ -1,7 +1,10 @@ package leaf.cosmere.mixin; +import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; -import leaf.cosmere.registry.EffectsRegistry; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; +import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Camera; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GameRenderer; @@ -11,7 +14,6 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -35,18 +37,24 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean { double fov = info.getReturnValue(); Player player = (Player) Minecraft.getInstance().getCameraEntity(); - MobEffectInstance tinTapEffect = player.getEffect(EffectsRegistry.TAPPING_EFFECTS.get(Metals.MetalType.TIN).get()); - if (tinTapEffect != null && tinTapEffect.getDuration() > 0) + + if (player == null) { - int amplifier = tinTapEffect.getAmplifier(); - final int i = amplifier + 1; - final double pow = Math.pow(2, i); - final double v = fov / pow; - info.setReturnValue(v); return; } - info.setReturnValue(fov); + SpiritwebCapability.get(player).ifPresent(playerSpiritweb -> + { + final FeruchemyBase tinF = (FeruchemyBase) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.TIN).get(); + + if (tinF.isTapping(playerSpiritweb) && tinF.canAfford(playerSpiritweb, true)) + { + final int i = Mth.abs(tinF.getMode(playerSpiritweb)); + final double pow = Math.pow(2, i); + final double v = fov / pow; + info.setReturnValue(v); + } + }); } @@ -56,23 +64,31 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean ) private void getRenderDistance(CallbackInfoReturnable info) { - float renderDistance = info.getReturnValue(); Player player = (Player) Minecraft.getInstance().getCameraEntity(); - MobEffectInstance tinTapEffect = null; - if (player != null) + + if (player == null) { - tinTapEffect = player.getEffect(EffectsRegistry.STORING_EFFECTS.get(Metals.MetalType.TIN).get()); + return; } - if (tinTapEffect != null && tinTapEffect.getDuration() > 0) + + SpiritwebCapability.get(player).ifPresent(playerSpiritweb -> { - int amplifier = tinTapEffect.getAmplifier(); - final int i = amplifier + 1; - final double pow = Math.pow(2, i); - final int floor = Mth.fastFloor(pow); - final float v = renderDistance / floor; + final FeruchemyBase feruchemy = (FeruchemyBase) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.TIN).get(); + + if (feruchemy.isStoring(playerSpiritweb) && feruchemy.canAfford(playerSpiritweb, true)) + { + float renderDistance = info.getReturnValue(); + + final int i = Mth.abs(feruchemy.getMode(playerSpiritweb)); + final double pow = Math.pow(2, i); + final int floor = Mth.fastFloor(pow); + final float v = renderDistance / floor; + + info.setReturnValue(v); + } + + }); - info.setReturnValue(v); - } } } From 4c82cb85b0921d6056abcf239ce8e9e2f10e3755 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:18:40 +1200 Subject: [PATCH 0242/1090] double bendalloy cost if player full and getting saturation --- .../feruchemy/FeruchemyBendalloy.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java index 3a6a4a91b..64ab34308 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBendalloy.java @@ -22,6 +22,25 @@ public FeruchemyBendalloy(Metals.MetalType metalType) super(metalType); } + @Override + public int getCost(ISpiritweb data) + { + int cost = super.getCost(data); + + if (data.getLiving() instanceof Player player) + { + FoodData foodData = player.getFoodData(); + if (isTapping(data) && !foodData.needsFood() && foodData.getSaturationLevel() < foodData.getFoodLevel()) + { + //todo config + //currently double cost if only doing saturation + cost *= 2; + } + } + + return cost; + } + @Override public void tick(ISpiritweb data) { @@ -33,18 +52,15 @@ public void tick(ISpiritweb data) return; } - final boolean tapping = mode < 0; - final boolean storing = mode > 0; - if (livingEntity instanceof Player player) { FoodData foodData = player.getFoodData(); - if (storing && foodData.getFoodLevel() <= 0) + if (isStoring(data) && foodData.getFoodLevel() <= 0) { //no food to store return; } - else if (tapping && !(foodData.needsFood() || foodData.getSaturationLevel() < foodData.getFoodLevel())) + else if (isTapping(data) && !(foodData.needsFood() || foodData.getSaturationLevel() < foodData.getFoodLevel())) { //already full return; From 6615557ced4b22f28bca654b7eaddaa58f6693e1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:29:36 +1200 Subject: [PATCH 0243/1090] Code clean up --- src/main/generated/.cache/cache | 2 +- .../generated/assets/cosmere/lang/en_us.json | 52 +++++++++---------- .../cosmere/client/gui/SpiritwebMenu.java | 8 ++- .../cosmere/constants/Manifestations.java | 20 ++++--- .../cosmere/datagen/language/EngLangGen.java | 6 +-- .../items/curio/HemalurgicSpikeItem.java | 16 +++--- .../surgebinding/SurgebindingBase.java | 2 +- 7 files changed, 50 insertions(+), 56 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index a418e5763..efe3be441 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -1345b1bfaae04edb19e0a0265133ea10a34d1adf assets/cosmere/lang/en_us.json +f5ecbf99b3f72a692be5004af71e2f47413a4f61 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index b6578a687..72552964c 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -35,10 +35,10 @@ "advancements.cosmere.allomancy.title": "Allomancy", "advancements.cosmere.allomancy.zinc.description": "Test description: Allomantic Zinc", "advancements.cosmere.allomancy.zinc.title": "Allomantic Zinc", - "advancements.cosmere.awakener.description": "Test description: Awakener", - "advancements.cosmere.awakener.title": "Awakener", - "advancements.cosmere.elantrian.description": "Test description: Elantrian", - "advancements.cosmere.elantrian.title": "Elantrian", + "advancements.cosmere.aon_dor.description": "Test description: Aon Dor", + "advancements.cosmere.aon_dor.title": "Aon Dor", + "advancements.cosmere.awakening.description": "Test description: Awakening", + "advancements.cosmere.awakening.title": "Awakening", "advancements.cosmere.feruchemy.aluminum.description": "Test description: Feruchemical Aluminum", "advancements.cosmere.feruchemy.aluminum.title": "Feruchemical Aluminum", "advancements.cosmere.feruchemy.atium.description": "Test description: Feruchemical Atium", @@ -79,28 +79,28 @@ "advancements.cosmere.none.none.description": "Test description: None", "advancements.cosmere.none.none.title": "None", "advancements.cosmere.none.title": "None", - "advancements.cosmere.radiant.description": "Test description: Radiant", - "advancements.cosmere.radiant.surgebinding_abrasion.description": "Test description: Surgebinding Abrasion", - "advancements.cosmere.radiant.surgebinding_abrasion.title": "Surgebinding Abrasion", - "advancements.cosmere.radiant.surgebinding_adhesion.description": "Test description: Surgebinding Adhesion", - "advancements.cosmere.radiant.surgebinding_adhesion.title": "Surgebinding Adhesion", - "advancements.cosmere.radiant.surgebinding_cohesion.description": "Test description: Surgebinding Cohesion", - "advancements.cosmere.radiant.surgebinding_cohesion.title": "Surgebinding Cohesion", - "advancements.cosmere.radiant.surgebinding_division.description": "Test description: Surgebinding Division", - "advancements.cosmere.radiant.surgebinding_division.title": "Surgebinding Division", - "advancements.cosmere.radiant.surgebinding_gravitation.description": "Test description: Surgebinding Gravitation", - "advancements.cosmere.radiant.surgebinding_gravitation.title": "Surgebinding Gravitation", - "advancements.cosmere.radiant.surgebinding_illumination.description": "Test description: Surgebinding Illumination", - "advancements.cosmere.radiant.surgebinding_illumination.title": "Surgebinding Illumination", - "advancements.cosmere.radiant.surgebinding_progression.description": "Test description: Surgebinding Progression", - "advancements.cosmere.radiant.surgebinding_progression.title": "Surgebinding Progression", - "advancements.cosmere.radiant.surgebinding_tension.description": "Test description: Surgebinding Tension", - "advancements.cosmere.radiant.surgebinding_tension.title": "Surgebinding Tension", - "advancements.cosmere.radiant.surgebinding_transformation.description": "Test description: Surgebinding Transformation", - "advancements.cosmere.radiant.surgebinding_transformation.title": "Surgebinding Transformation", - "advancements.cosmere.radiant.surgebinding_transportation.description": "Test description: Surgebinding Transportation", - "advancements.cosmere.radiant.surgebinding_transportation.title": "Surgebinding Transportation", - "advancements.cosmere.radiant.title": "Radiant", + "advancements.cosmere.surgebinding.description": "Test description: Surgebinding", + "advancements.cosmere.surgebinding.surgebinding_abrasion.description": "Test description: Surgebinding Abrasion", + "advancements.cosmere.surgebinding.surgebinding_abrasion.title": "Surgebinding Abrasion", + "advancements.cosmere.surgebinding.surgebinding_adhesion.description": "Test description: Surgebinding Adhesion", + "advancements.cosmere.surgebinding.surgebinding_adhesion.title": "Surgebinding Adhesion", + "advancements.cosmere.surgebinding.surgebinding_cohesion.description": "Test description: Surgebinding Cohesion", + "advancements.cosmere.surgebinding.surgebinding_cohesion.title": "Surgebinding Cohesion", + "advancements.cosmere.surgebinding.surgebinding_division.description": "Test description: Surgebinding Division", + "advancements.cosmere.surgebinding.surgebinding_division.title": "Surgebinding Division", + "advancements.cosmere.surgebinding.surgebinding_gravitation.description": "Test description: Surgebinding Gravitation", + "advancements.cosmere.surgebinding.surgebinding_gravitation.title": "Surgebinding Gravitation", + "advancements.cosmere.surgebinding.surgebinding_illumination.description": "Test description: Surgebinding Illumination", + "advancements.cosmere.surgebinding.surgebinding_illumination.title": "Surgebinding Illumination", + "advancements.cosmere.surgebinding.surgebinding_progression.description": "Test description: Surgebinding Progression", + "advancements.cosmere.surgebinding.surgebinding_progression.title": "Surgebinding Progression", + "advancements.cosmere.surgebinding.surgebinding_tension.description": "Test description: Surgebinding Tension", + "advancements.cosmere.surgebinding.surgebinding_tension.title": "Surgebinding Tension", + "advancements.cosmere.surgebinding.surgebinding_transformation.description": "Test description: Surgebinding Transformation", + "advancements.cosmere.surgebinding.surgebinding_transformation.title": "Surgebinding Transformation", + "advancements.cosmere.surgebinding.surgebinding_transportation.description": "Test description: Surgebinding Transportation", + "advancements.cosmere.surgebinding.surgebinding_transportation.title": "Surgebinding Transportation", + "advancements.cosmere.surgebinding.title": "Surgebinding", "argument.cosmere.power.invalid": "Invalid power", "block.cosmere.aluminum_block": "Aluminum Block", "block.cosmere.aluminum_ore": "Aluminum Ore", diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 96d15b74b..cec58ad33 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -16,7 +16,6 @@ import com.mojang.blaze3d.platform.Window; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.ClientHelper; import leaf.cosmere.constants.Manifestations; @@ -38,7 +37,6 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.TextComponent; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.client.event.RenderGameOverlayEvent; import org.jetbrains.annotations.NotNull; import org.lwjgl.opengl.GL11; @@ -522,11 +520,11 @@ private void renderRadialButtonIcons(PoseStack matrixStack, double middleX, doub FeruchemyBase feruchemyBase = (FeruchemyBase) mani; stringBuilder.append(feruchemyBase.getMetalType().getName()); break; - case RADIANT: + case SURGEBINDING: break; - case ELANTRIAN: + case AON_DOR: break; - case AWAKENER: + case AWAKENING: break; } diff --git a/src/main/java/leaf/cosmere/constants/Manifestations.java b/src/main/java/leaf/cosmere/constants/Manifestations.java index cee0f6cd4..9a81d9ce5 100644 --- a/src/main/java/leaf/cosmere/constants/Manifestations.java +++ b/src/main/java/leaf/cosmere/constants/Manifestations.java @@ -4,10 +4,8 @@ package leaf.cosmere.constants; -import leaf.cosmere.client.ClientHelper; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; import java.util.Arrays; import java.util.Locale; @@ -17,9 +15,9 @@ public class Manifestations { public final static int ALLOMANCY_ID = 1; public final static int FERUCHEMY_ID = 2; - public final static int RADIANT_ID = 3; - public final static int ELANTRIAN_ID = 4; - public final static int AWAKENER_ID = 5; + public final static int SURGEBINDING_ID = 3; + public final static int AONDOR_ID = 4; + public final static int AWAKENING_ID = 5; public enum ManifestationTypes { @@ -31,13 +29,13 @@ public enum ManifestationTypes FERUCHEMY(FERUCHEMY_ID), //Knight Radiant Section - RADIANT(RADIANT_ID), + SURGEBINDING(SURGEBINDING_ID), // AonDor - ELANTRIAN(ELANTRIAN_ID), + AON_DOR(AONDOR_ID), // AonDor - AWAKENER(AWAKENER_ID); + AWAKENING(AWAKENING_ID); ManifestationTypes(int id) @@ -77,11 +75,11 @@ public AManifestation getManifestation(int powerID) return ManifestationRegistry.FERUCHEMY_POWERS.get(metalType.get()).get(); } break; - case RADIANT: + case SURGEBINDING: break; - case ELANTRIAN: + case AON_DOR: break; - case AWAKENER: + case AWAKENING: break; } return ManifestationRegistry.NONE.get(); diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index c60748dd7..a4306fc2a 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -130,9 +130,9 @@ else if (item instanceof MetalmindItem) add(String.format(titleFormat, tabName + "." + metalName), StringHelper.fixCapitalisation(name)); add(String.format(descriptionFormat, tabName + "." + metalName), "Test description: " + StringHelper.fixCapitalisation(name)); break; - case RADIANT: - case ELANTRIAN: - case AWAKENER: + case SURGEBINDING: + case AON_DOR: + case AWAKENING: default: case NONE: description = "No Special Powers"; diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index c8e7c392b..48b5fdf95 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -6,20 +6,15 @@ import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.itemgroups.CosmereItemGroups; import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraft.client.model.HumanoidModel; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.ItemRenderer; -import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -45,11 +40,8 @@ import org.apache.commons.lang3.tuple.ImmutableTriple; import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.SlotContext; -import top.theillusivec4.curios.api.SlotTypePreset; -import top.theillusivec4.curios.api.type.capability.ICurio; import javax.annotation.Nonnull; -import java.awt.*; import java.util.Collection; import java.util.List; import java.util.Optional; @@ -189,6 +181,12 @@ else if (this.getMetalType() == Metals.MetalType.TIN) final UUID identity = UUID.randomUUID(); for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { + //lerasatium creative mode hide surge powers for now + if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.SURGEBINDING) + { + continue; + } + Invest(bound, manifestation, 5, identity); } diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java index ba9b00dbf..ce367cb50 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java @@ -12,6 +12,6 @@ public class SurgebindingBase extends ManifestationBase { public SurgebindingBase(Roshar.Surges surge) { - super(Manifestations.ManifestationTypes.RADIANT, surge.getColor()); + super(Manifestations.ManifestationTypes.SURGEBINDING, surge.getColor()); } } From 7f266cd1e366755ea5ae602ec718c719147f5585 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:36:02 +1200 Subject: [PATCH 0244/1090] Fix bottle to vial recipe --- .../cosmere/recipes/VialMixingRecipe.java | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java index 8020e919e..a227024a9 100644 --- a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java +++ b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java @@ -27,14 +27,6 @@ public class VialMixingRecipe extends CustomRecipe { private static final Ingredient INGREDIENT_BOTTLE = Ingredient.of(Items.GLASS_BOTTLE, ItemsRegistry.METAL_VIAL.get()); -/* private static final Ingredient INGREDIENT_NUGGET = Ingredient.fromItems( - ItemsRegistry.METAL_NUGGETS - .values() - .stream() - .map(RegistryObject::get) - .toArray(Item[]::new) - );*/ - public VialMixingRecipe(ResourceLocation loc) { @@ -42,14 +34,14 @@ public VialMixingRecipe(ResourceLocation loc) } @Override - public boolean matches(CraftingContainer inv, Level world) + public boolean matches(CraftingContainer inv, @Nonnull Level world) { boolean hasNugget = false; ItemStack vialStack = null; final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); int bottleAmount = 0; int nuggetTotal = 0; - MetalVialItem vialItem = null; + MetalVialItem metalVialItem = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); for (int i = 0; i < inv.getContainerSize(); i++) { @@ -68,8 +60,11 @@ public boolean matches(CraftingContainer inv, Level world) } vialStack = stack; - vialItem = (MetalVialItem) vialStack.getItem(); - bottleAmount = vialItem.containedMetalCount(vialStack); + //if is vial and not bottle, check it for contained metals. + if (vialStack.is(metalVialItem)) + { + bottleAmount = metalVialItem.containedMetalCount(vialStack); + } } else if (INGREDIENT_NUGGETS.test(stack)) { @@ -85,7 +80,7 @@ else if (INGREDIENT_NUGGETS.test(stack)) return false; } - if (bottleAmount + nuggetTotal > vialItem.getMaxFillCount(vialStack)) + if (bottleAmount + nuggetTotal > metalVialItem.getMaxFillCount(vialStack)) { return false; } @@ -94,7 +89,7 @@ else if (INGREDIENT_NUGGETS.test(stack)) //minecraft bottles can be inherently empty if (vialStack.getItem() == ItemsRegistry.METAL_VIAL.get()) { - return hasNugget && !vialItem.isFull(vialStack); + return hasNugget && !metalVialItem.isFull(vialStack); } @@ -149,13 +144,13 @@ public boolean canCraftInDimensions(int width, int height) } @Override - public ResourceLocation getId() + public @Nonnull ResourceLocation getId() { return ResourceLocationHelper.prefix("vial_mix"); } @Override - public RecipeSerializer getSerializer() + public @Nonnull RecipeSerializer getSerializer() { return RecipeRegistry.VIAL_RECIPE_SERIALIZER.get(); } From c5db9557d9898283d2051d0fbc9986824ddd92df Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 20:48:29 +1200 Subject: [PATCH 0245/1090] Update SpiritWebTooltip.java --- .../java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 7524b3469..272e66819 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -55,11 +55,13 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf //show all manifestations, including hemalurgic based ones. for (AManifestation manifestation : targetSpiritweb.getAvailableManifestations()) { - if (!targetIsPlayer || (!manifestation.isActive(targetSpiritweb)) && !playerCreativeMode) + //if player is creative mode + //or target is a mob + //or player has this manifestation active + if (playerCreativeMode || !targetIsPlayer || manifestation.isActive(targetSpiritweb)) { - continue; + tooltip.add(manifestation.translation()); } - tooltip.add(manifestation.translation()); } }); } From 74da25e39b473375ddbef9304c74dcf387191ec8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 9 Jun 2022 22:01:38 +1200 Subject: [PATCH 0246/1090] fix coin pouch causing take animation even when it can't pick up any --- .../java/leaf/cosmere/items/CoinPouchItem.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/CoinPouchItem.java b/src/main/java/leaf/cosmere/items/CoinPouchItem.java index e642efed7..150b1ef58 100644 --- a/src/main/java/leaf/cosmere/items/CoinPouchItem.java +++ b/src/main/java/leaf/cosmere/items/CoinPouchItem.java @@ -215,13 +215,15 @@ public static boolean onPickupItem(ItemEntity entity, Player player) //great, we fit it all. } - //here's what we couldn't fit (if any) - entity.setItem(entityStack); - //do the take animation where the entity flies into the player final int amountTaken = originalCount - entityStack.getCount(); - player.take(entity, amountTaken); - - return true; + if (amountTaken > 0) + { + //here's what we couldn't fit (if any) + entity.setItem(entityStack); + //do the take animation where the entity flies into the player + player.take(entity, amountTaken); + return true; + } } } } From ebec64e3c71ecac1d78d3573e9c87d42e0ce6bfc Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jun 2022 15:00:22 +1200 Subject: [PATCH 0247/1090] Make raiders 1/50 chance of powers --- src/main/java/leaf/cosmere/handlers/EntityEventHandler.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 0b809640e..8197885ce 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -90,7 +90,10 @@ else if (eventEntity instanceof AbstractVillager { //random 1/16 // only 1 in 16 will have the gene - if (MathHelper.randomInt(1, 16) % 16 == 0) + + + final int chance = eventEntity instanceof Raider ? 50 : 16; + if (MathHelper.randomInt(1, chance) % chance == 0) { giveEntityStartingManifestation(livingEntity, spiritweb); } From 9973436c78868b17af2e7d5c0ea951844ab2f55f Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 12:31:27 +1200 Subject: [PATCH 0248/1090] zero bonus rolls on injected loot --- src/main/java/leaf/cosmere/loot/LootHandler.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index 8f3e1acbb..2bbcbd774 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -9,6 +9,7 @@ import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; import net.minecraft.world.level.storage.loot.entries.LootTableReference; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import net.minecraftforge.event.LootTableLoadEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -57,7 +58,7 @@ public static LootPool getInjectPool(String entryName) { return LootPool.lootPool() .add(getInjectEntry(entryName, 1)) - .setBonusRolls(UniformGenerator.between(0,1)) + .setBonusRolls(ConstantValue.exactly(0)) .name("cosmere_inject") .build(); } From c05ede8de8388830f35f0b3debda5fd336f8d523 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 19:55:18 +1200 Subject: [PATCH 0249/1090] Fix clients not calling on mode change when updated --- .../cap/entity/SpiritwebCapability.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index e8538be6f..e302f2fb3 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -157,13 +157,27 @@ public void deserializeNBT(CompoundTag nbt) { hasBeenInitialized = nbt.getBoolean("assigned_powers"); CompoundTag modeNBT = nbt.getCompound("manifestation_modes"); - MANIFESTATIONS_MODE.clear(); + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { final String manifestationLoc = manifestation.getRegistryName().toString(); + + int oldManifestationMode = MANIFESTATIONS_MODE.getOrDefault(manifestation,0); + int newManifestationMode = 0; + if (modeNBT.contains(manifestationLoc)) { - MANIFESTATIONS_MODE.put(manifestation, modeNBT.getInt(manifestationLoc)); + newManifestationMode = modeNBT.getInt(manifestationLoc); + MANIFESTATIONS_MODE.put(manifestation, newManifestationMode); + } + else + { + MANIFESTATIONS_MODE.remove(manifestation); + } + + if (getLiving().level.isClientSide && oldManifestationMode != newManifestationMode) + { + manifestation.onModeChange(this); } } selectedManifestation = ManifestationRegistry.fromID(nbt.getString("selected_power")); From 5ede50c4914725b25825cdc038a9015d8bf5d340 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 20:05:34 +1200 Subject: [PATCH 0250/1090] potentially fix crash related to single player not having a server --- src/main/java/leaf/cosmere/charge/IChargeable.java | 2 +- .../java/leaf/cosmere/utils/helpers/PlayerHelper.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index f395a9254..2b2b40cb9 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -105,7 +105,7 @@ default UUID getAttunedPlayer(ItemStack itemStack) default void setAttunedPlayerName(ItemStack itemStack, Player entity) { - String playerName = PlayerHelper.getPlayerName(entity.getUUID(), entity.getServer()); + String playerName = entity.getDisplayName().getString(); StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, playerName); } diff --git a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java index 9cc04fd0b..dbe7a5398 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/PlayerHelper.java @@ -18,8 +18,15 @@ public class PlayerHelper { public static String getPlayerName(UUID id, MinecraftServer server) { - final Optional gameProfile = server.getProfileCache().get(id); - return gameProfile.isPresent() ? gameProfile.get().getName() : "OFFLINE Player"; + if (server != null) + { + final Optional gameProfile = server.getProfileCache().get(id); + if (gameProfile.isPresent()) + { + return gameProfile.get().getName(); + } + } + return "OFFLINE Player"; } //Basically a modified copy of the pick function in GameRenderer.java, but with the ability to set pick distance From 43ea47263ba825c3ee719836a349e4e2b867e529 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 21:01:45 +1200 Subject: [PATCH 0251/1090] cats have decent night vision to steal --- src/main/java/leaf/cosmere/constants/Metals.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 09b8c7e18..b6f1cb34b 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -676,6 +676,10 @@ else if (killedEntity instanceof Player) { strengthToAdd = 0.25; } + else if (killedEntity instanceof Cat) + { + strengthToAdd = 0.5; + } else { final AttributeInstance attribute = killedEntity.getAttribute(Attributes.FOLLOW_RANGE); From 300f44c46ee765de1b180a3ccf96cf60fbe0d97b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 21:08:29 +1200 Subject: [PATCH 0252/1090] Early implementation of feru atium --- .../FeruchemicalAtiumEventHandler.java | 116 ++++++++++++++++++ .../feruchemy/FeruchemyAtium.java | 80 ++++++++++++ .../java/leaf/cosmere/mixin/EntityMixin.java | 35 ++++++ .../mixin/EntityRenderDispatcherMixin.java | 32 +++++ .../leaf/cosmere/mixin/IForgeEntityMixin.java | 38 ++++++ .../leaf/cosmere/mixin/LivingEntityMixin.java | 31 +++++ .../java/leaf/cosmere/mixin/PlayerMixin.java | 25 ++++ .../packets/SyncPlayerSpiritwebMessage.java | 7 +- .../registry/ManifestationRegistry.java | 2 + .../java/leaf/cosmere/utils/math/Easing.java | 14 +++ src/main/resources/cosmere.mixins.json | 4 + 11 files changed, 383 insertions(+), 1 deletion(-) create mode 100644 src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java create mode 100644 src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java create mode 100644 src/main/java/leaf/cosmere/mixin/EntityRenderDispatcherMixin.java create mode 100644 src/main/java/leaf/cosmere/mixin/IForgeEntityMixin.java create mode 100644 src/main/java/leaf/cosmere/mixin/LivingEntityMixin.java create mode 100644 src/main/java/leaf/cosmere/mixin/PlayerMixin.java create mode 100644 src/main/java/leaf/cosmere/utils/math/Easing.java diff --git a/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java b/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java new file mode 100644 index 000000000..fcdb03b62 --- /dev/null +++ b/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java @@ -0,0 +1,116 @@ +/* + * File created ~ 11 - 6 - 2022 ~ Leaf + */ + +package leaf.cosmere.handlers; + +import leaf.cosmere.Cosmere; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.client.event.RenderLivingEvent; +import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.event.entity.EntityEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; + +@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) +public class FeruchemicalAtiumEventHandler +{ + @SubscribeEvent + public static void changeSize(EntityEvent.Size event) + { + if (event.getEntity() instanceof LivingEntity livingEntity) + { + float scale = FeruchemyAtium.getScale(livingEntity); + event.setNewSize(event.getNewSize().scale(scale)); + event.setNewEyeHeight(event.getNewEyeHeight() * scale); + + } + } + + @SubscribeEvent + public static void onRenderPlayerPre(RenderPlayerEvent.Pre event) + { + try + { + float scale = FeruchemyAtium.getScale(event.getEntityLiving()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().pushPose(); + event.getPoseStack().scale(scale, scale, scale); + if (event.getEntity().isCrouching() && scale < 0.2F) + { + event.getPoseStack().translate(0, 1.0, 0); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onRenderPlayerPost(RenderPlayerEvent.Post event) + { + try + { + float scale = FeruchemyAtium.getScale(event.getEntityLiving()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().popPose(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onLivingRenderPre(RenderLivingEvent.Pre event) + { + if (event.getEntity() instanceof Player) + { + return; + } + + try + { + float scale = FeruchemyAtium.getScale(event.getEntity()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().pushPose(); + event.getPoseStack().scale(scale, scale, scale); + } + + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onLivingRenderPost(RenderLivingEvent.Post event) + { + if (event.getEntity() instanceof Player) + { + return; + } + + try + { + float scale = FeruchemyAtium.getScale(event.getEntity()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().popPose(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java new file mode 100644 index 000000000..1fb791d72 --- /dev/null +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java @@ -0,0 +1,80 @@ +/* + * File created ~ 27 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.manifestation.feruchemy; + +import leaf.cosmere.cap.entity.ISpiritweb; +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.MathHelper; +import leaf.cosmere.utils.math.Easing; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.common.util.LazyOptional; + +public class FeruchemyAtium extends FeruchemyBase +{ + public FeruchemyAtium(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public void onModeChange(ISpiritweb data) + { + super.onModeChange(data); + data.getLiving().refreshDimensions(); + } + + public float getScale(ISpiritweb data) + { + if (isActive(data) && canAfford(data, true)) + { + final int mode = getMode(data); + float v;// = mode * 0.1f; + + if (isStoring(data)) + { + v = mode * 0.1f; + } + else// if (isTapping(data)) + { + final float inverseLerp = MathHelper.InverseLerp(0, 21, Math.abs(mode)); + final float v1 = Easing.easeOutQuad(inverseLerp); + + v = Mth.lerp(v1,0, -0.8f); + } + + + + float scale = 1 + v; + + + + return scale; + } + return 1; + } + + + + public static float getScale(LivingEntity living) + { + final LazyOptional iSpiritwebLazyOptional = SpiritwebCapability.get(living); + + if (iSpiritwebLazyOptional.isPresent()) + { + var spiritwebOptional = iSpiritwebLazyOptional.resolve(); + if (spiritwebOptional.isPresent()) + { + final ISpiritweb iSpiritweb = spiritwebOptional.get(); + FeruchemyAtium atiumF = (FeruchemyAtium) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ATIUM).get(); + return atiumF.getScale(iSpiritweb); + } + } + + return 1; + } +} diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index 173533e99..d60fddb6c 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -9,14 +9,21 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.allomancy.AllomancyCopper; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.phys.AABB; +import net.minecraft.world.phys.Vec3; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -97,5 +104,33 @@ else if (targetIsPlayer && manifestation.isActive(targetSpiritweb)) }); } + + @Inject(at = @At("RETURN"), method = "canEnterPose", cancellable = true) + public void handleCanEnterPose(Pose pose, CallbackInfoReturnable cir) + { + Entity entity = (Entity) (Object) this; + + if(entity instanceof LivingEntity livingEntity) + { + SpiritwebCapability.get(livingEntity).ifPresent(data-> + { + FeruchemyAtium atiumF = (FeruchemyAtium) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ATIUM).get(); + float scale = atiumF.getScale(data); + if (scale > 0.01 || scale < -0.01) + { + EntityDimensions entityDimensions = livingEntity.getDimensions(pose); + entityDimensions = entityDimensions.scale(scale); + double f = entityDimensions.width / 2.0F; + Vec3 vector3d = new Vec3(livingEntity.getX() - f, livingEntity.getY(), livingEntity.getZ() - f); + Vec3 vector3d1 = new Vec3(livingEntity.getX() + f, livingEntity.getY() + (double)entityDimensions.height, livingEntity.getZ() + f); + AABB box = new AABB(vector3d, vector3d1); + + + + cir.setReturnValue(livingEntity.level.noCollision(livingEntity, box.deflate(1.0E-7D))); + } + }); + } + } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityRenderDispatcherMixin.java b/src/main/java/leaf/cosmere/mixin/EntityRenderDispatcherMixin.java new file mode 100644 index 000000000..435e7e0e8 --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/EntityRenderDispatcherMixin.java @@ -0,0 +1,32 @@ +/* + * File created ~ 11 - 6 - 2022 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import com.mojang.blaze3d.vertex.PoseStack; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.entity.EntityRenderDispatcher; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.level.LevelReader; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(EntityRenderDispatcher.class) +public class EntityRenderDispatcherMixin +{ + + @ModifyArg(method = "render", index = 6, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRenderDispatcher;renderShadow(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/world/entity/Entity;FFLnet/minecraft/world/level/LevelReader;F)V")) + private float renderShadowSizeProxy(PoseStack pMatrixStack, MultiBufferSource pBuffer, Entity pEntity, float pWeight, float pPartialTicks, LevelReader pLevel, float pSize) + { + if (pEntity instanceof LivingEntity livingEntity) + { + return pSize * FeruchemyAtium.getScale(livingEntity); + } + + return pSize; + } +} diff --git a/src/main/java/leaf/cosmere/mixin/IForgeEntityMixin.java b/src/main/java/leaf/cosmere/mixin/IForgeEntityMixin.java new file mode 100644 index 000000000..cad846b9b --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/IForgeEntityMixin.java @@ -0,0 +1,38 @@ +/* + * File created ~ 11 - 6 - 2022 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraftforge.common.ForgeMod; +import net.minecraftforge.common.extensions.IForgeEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Overwrite; + +@Mixin(IForgeEntity.class) +public interface IForgeEntityMixin +{ + @Overwrite(remap = false) + default float getStepHeight() + { + final Entity self = (Entity) this; + float vanillaStep = self.maxUpStep; + if (self instanceof LivingEntity living) + { + AttributeInstance stepHeightAttribute = living.getAttribute(ForgeMod.STEP_HEIGHT_ADDITION.get()); + if (stepHeightAttribute != null) + { + final float max = (float) Math.max(0, vanillaStep + stepHeightAttribute.getValue()); + + + + return max * FeruchemyAtium.getScale(living); + } + } + return vanillaStep; + } +} diff --git a/src/main/java/leaf/cosmere/mixin/LivingEntityMixin.java b/src/main/java/leaf/cosmere/mixin/LivingEntityMixin.java new file mode 100644 index 000000000..eb36abd36 --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/LivingEntityMixin.java @@ -0,0 +1,31 @@ +/* + * File created ~ 6 - 6 - 2021 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import net.minecraft.world.entity.LivingEntity; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(LivingEntity.class) +public class LivingEntityMixin +{ + @Inject(at = @At("RETURN"), method = "getJumpPower", cancellable = true) + protected void handleGetJumpPower(CallbackInfoReturnable cir) + { + LivingEntity livingEntity = (LivingEntity) (Object) this; + cir.setReturnValue(cir.getReturnValue() * FeruchemyAtium.getScale(livingEntity)); + } + + @Inject(at = @At("RETURN"), method = "getSpeed", cancellable = true) + protected void handleGetSpeed(CallbackInfoReturnable cir) + { + LivingEntity livingEntity = (LivingEntity) (Object) this; + cir.setReturnValue(cir.getReturnValue() * FeruchemyAtium.getScale(livingEntity)); + } +} + diff --git a/src/main/java/leaf/cosmere/mixin/PlayerMixin.java b/src/main/java/leaf/cosmere/mixin/PlayerMixin.java new file mode 100644 index 000000000..c65c602ed --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/PlayerMixin.java @@ -0,0 +1,25 @@ +/* + * File created ~ 6 - 6 - 2021 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Player.class) +public class PlayerMixin +{ + /*@Inject(at = @At("RETURN"), method = "getSpeed", cancellable = true) + protected void handleGetSpeed(CallbackInfoReturnable cir) + { + LivingEntity livingEntity = (LivingEntity) (Object) this; + cir.setReturnValue(cir.getReturnValue() * (FeruchemyAtium.getScale(livingEntity))); + }*/ +} + diff --git a/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java b/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java index 7c5a8a220..75f9ab22c 100644 --- a/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SyncPlayerSpiritwebMessage.java @@ -43,7 +43,12 @@ public static void handle(SyncPlayerSpiritwebMessage mes, Supplier c.deserializeNBT(mes.entityNBT)); + SpiritwebCapability.get((LivingEntity) result).ifPresent((c) -> + { + c.deserializeNBT(mes.entityNBT); + c.getLiving().refreshDimensions(); + }); + } }); cont.get().setPacketHandled(true); diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index e2e1b4bb7..d04bc6bb9 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -157,6 +157,8 @@ private static FeruchemyBase makeFeruchemyManifestation(Metals.MetalType metalTy return new FeruchemyElectrum(metalType); case BENDALLOY: return new FeruchemyBendalloy(metalType); + case ATIUM: + return new FeruchemyAtium(metalType); default: return new FeruchemyBase(metalType); } diff --git a/src/main/java/leaf/cosmere/utils/math/Easing.java b/src/main/java/leaf/cosmere/utils/math/Easing.java new file mode 100644 index 000000000..0a8c83c7f --- /dev/null +++ b/src/main/java/leaf/cosmere/utils/math/Easing.java @@ -0,0 +1,14 @@ +/* + * File created ~ 11 - 6 - 2022 ~ Leaf + */ + +package leaf.cosmere.utils.math; + +public class Easing +{ + + public static float easeOutQuad(float x) + { + return 1 - (1 - x) * (1 - x); + } +} diff --git a/src/main/resources/cosmere.mixins.json b/src/main/resources/cosmere.mixins.json index e9664849f..94d1c2ff0 100644 --- a/src/main/resources/cosmere.mixins.json +++ b/src/main/resources/cosmere.mixins.json @@ -5,10 +5,14 @@ "compatibilityLevel": "JAVA_8", "refmap": "cosmere.refmap.json", "mixins": [ + "IForgeEntityMixin", + "LivingEntityMixin", + "PlayerMixin" ], "client": [ "EffectInstanceMixin", "EntityMixin", + "EntityRenderDispatcherMixin", "GameRendererMixin", "LightTextureMixin" ], From cbc471faf9071db63b0697b92e4e8fa307b8a150 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 21:42:12 +1200 Subject: [PATCH 0253/1090] Fix servers not booting --- .../leaf/cosmere/client/ClientEvents.java | 90 +++++++++++++- .../cosmere/handlers/EntityEventHandler.java | 15 +++ .../FeruchemicalAtiumEventHandler.java | 116 ------------------ 3 files changed, 102 insertions(+), 119 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index 3e407a157..1cbb8d8e0 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -8,6 +8,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.client.gui.SpiritwebMenu; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.network.packets.ChangeSelectedManifestationMessage; @@ -20,12 +21,11 @@ import net.minecraft.util.Mth; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.InputEvent; +import net.minecraftforge.client.event.*; import net.minecraftforge.client.event.InputEvent.MouseScrollEvent; -import net.minecraftforge.client.event.RenderGameOverlayEvent; -import net.minecraftforge.client.event.RenderLevelLastEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -177,4 +177,88 @@ public static void renderSpiritwebHUD(final RenderGameOverlayEvent.Post event) } + @SubscribeEvent + public static void onRenderPlayerPre(RenderPlayerEvent.Pre event) + { + try + { + float scale = FeruchemyAtium.getScale(event.getEntityLiving()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().pushPose(); + event.getPoseStack().scale(scale, scale, scale); + if (event.getEntity().isCrouching() && scale < 0.2F) + { + event.getPoseStack().translate(0, 1.0, 0); + } + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onRenderPlayerPost(RenderPlayerEvent.Post event) + { + try + { + float scale = FeruchemyAtium.getScale(event.getEntityLiving()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().popPose(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onLivingRenderPre(RenderLivingEvent.Pre event) + { + if (event.getEntity() instanceof Player) + { + return; + } + + try + { + float scale = FeruchemyAtium.getScale(event.getEntity()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().pushPose(); + event.getPoseStack().scale(scale, scale, scale); + } + + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @SubscribeEvent + public static void onLivingRenderPost(RenderLivingEvent.Post event) + { + if (event.getEntity() instanceof Player) + { + return; + } + + try + { + float scale = FeruchemyAtium.getScale(event.getEntity()); + if (scale > 1.01 || scale < 0.99) + { + event.getPoseStack().popPose(); + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } } diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 8197885ce..d83f7da66 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -12,6 +12,7 @@ import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.core.Direction; @@ -35,6 +36,7 @@ import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.event.entity.living.LivingEvent; import net.minecraftforge.event.entity.player.EntityItemPickupEvent; @@ -280,4 +282,17 @@ else if (stack.getItem() instanceof HemalurgicSpikeItem spike) }); } + + + @SubscribeEvent + public static void changeSize(EntityEvent.Size event) + { + if (event.getEntity() instanceof LivingEntity livingEntity) + { + float scale = FeruchemyAtium.getScale(livingEntity); + event.setNewSize(event.getNewSize().scale(scale)); + event.setNewEyeHeight(event.getNewEyeHeight() * scale); + + } + } } diff --git a/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java b/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java deleted file mode 100644 index fcdb03b62..000000000 --- a/src/main/java/leaf/cosmere/handlers/FeruchemicalAtiumEventHandler.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * File created ~ 11 - 6 - 2022 ~ Leaf - */ - -package leaf.cosmere.handlers; - -import leaf.cosmere.Cosmere; -import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraftforge.client.event.RenderLivingEvent; -import net.minecraftforge.client.event.RenderPlayerEvent; -import net.minecraftforge.event.entity.EntityEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; - -@Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) -public class FeruchemicalAtiumEventHandler -{ - @SubscribeEvent - public static void changeSize(EntityEvent.Size event) - { - if (event.getEntity() instanceof LivingEntity livingEntity) - { - float scale = FeruchemyAtium.getScale(livingEntity); - event.setNewSize(event.getNewSize().scale(scale)); - event.setNewEyeHeight(event.getNewEyeHeight() * scale); - - } - } - - @SubscribeEvent - public static void onRenderPlayerPre(RenderPlayerEvent.Pre event) - { - try - { - float scale = FeruchemyAtium.getScale(event.getEntityLiving()); - if (scale > 1.01 || scale < 0.99) - { - event.getPoseStack().pushPose(); - event.getPoseStack().scale(scale, scale, scale); - if (event.getEntity().isCrouching() && scale < 0.2F) - { - event.getPoseStack().translate(0, 1.0, 0); - } - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - @SubscribeEvent - public static void onRenderPlayerPost(RenderPlayerEvent.Post event) - { - try - { - float scale = FeruchemyAtium.getScale(event.getEntityLiving()); - if (scale > 1.01 || scale < 0.99) - { - event.getPoseStack().popPose(); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - @SubscribeEvent - public static void onLivingRenderPre(RenderLivingEvent.Pre event) - { - if (event.getEntity() instanceof Player) - { - return; - } - - try - { - float scale = FeruchemyAtium.getScale(event.getEntity()); - if (scale > 1.01 || scale < 0.99) - { - event.getPoseStack().pushPose(); - event.getPoseStack().scale(scale, scale, scale); - } - - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - @SubscribeEvent - public static void onLivingRenderPost(RenderLivingEvent.Post event) - { - if (event.getEntity() instanceof Player) - { - return; - } - - try - { - float scale = FeruchemyAtium.getScale(event.getEntity()); - if (scale > 1.01 || scale < 0.99) - { - event.getPoseStack().popPose(); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } -} From d7e35c92a7a9bde7032be7c81b4f7c16c48c5674 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 11 Jun 2022 22:02:53 +1200 Subject: [PATCH 0254/1090] update changelog and bump version --- Changelog.md | 26 ++++++++++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 704eff609..8764896c4 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,31 @@ The Cosmere Project - For 1.16 Minecraft +B47 + + + + +B46 + +Fix servers not booting + + +B45 + +Fix misting/ferring names being lower case. +Fix bronze allomancy hwyla tooltip show powers a mob has. Players still only show what's active. +F-tin should no longer cutting out on laggy connections +Double bendalloy tap cost if player full and only tapping for saturation +Fix bottle to vial recipe +Zero bonus rolls on injected loot +Make pillager metalborn rarer +Fix coin pouch 'take' animation, playing even when full. +Fix clients not calling on mode change, when modes change. +Fix potential crash in single player mode when trying to get player names. +Cats now have decent night vision to steal. +Very early implementation of feru atium, which stores 'smallness'. Expect it to change. + + B44 Fix tapping gold only healing one hp regardless of tap amount diff --git a/gradle.properties b/gradle.properties index b07d60e29..81386e533 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere -build_number=45 +build_number=47 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 25926b9f9c8c1bdc0ce326aaddf5018fb71d6a47 Mon Sep 17 00:00:00 2001 From: leafreynolds <80794784+leafreynolds@users.noreply.github.com> Date: Sun, 12 Jun 2022 12:49:08 +1200 Subject: [PATCH 0255/1090] fix f-copper not storing till you've been able to tap --- .../feruchemy/FeruchemyCopper.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java index 6e392dc3d..fdf1a4e4c 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyCopper.java @@ -70,7 +70,7 @@ private void performXPAdjustment(ISpiritweb data, Player playerEntity) //store xp progress, if any. if (playerEntity.experienceProgress > 0) { - experiencePoints = playerEntity.experienceProgress; + experiencePoints = playerEntity.experienceProgress * playerEntity.getXpNeededForNextLevel(); } //else store a level's worth of xp points. else @@ -78,16 +78,13 @@ private void performXPAdjustment(ISpiritweb data, Player playerEntity) experiencePoints = XPHelper.getXpNeededForNextLevel(playerEntity.experienceLevel - 1); } } + else if (tapping) // tapping storage + { + experiencePoints = XPHelper.getXpNeededForNextLevel(playerEntity.experienceLevel); + } else { - if (tapping) // tapping storage - { - experiencePoints = XPHelper.getXpNeededForNextLevel(playerEntity.experienceLevel); - } - else - { - return; - } + return; } @@ -99,7 +96,7 @@ private void performXPAdjustment(ISpiritweb data, Player playerEntity) final int xp = Mth.floor(experiencePoints); - if ((storing && playerEntity.totalExperience >= xp) || tapping) + if ((storing && xp <= playerEntity.totalExperience) || tapping) { final int adjustValue = storing ? -xp : xp; final ItemStack itemStack = From cf5f14885717d1902768d74982549262f39f0578 Mon Sep 17 00:00:00 2001 From: leafreynolds <80794784+leafreynolds@users.noreply.github.com> Date: Sun, 12 Jun 2022 13:06:26 +1200 Subject: [PATCH 0256/1090] Vial mixing recipe accepts any valid mod nuggets --- .../cosmere/recipes/VialMixingRecipe.java | 51 +++++++++++-------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java index a227024a9..10c1deb21 100644 --- a/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java +++ b/src/main/java/leaf/cosmere/recipes/VialMixingRecipe.java @@ -5,13 +5,14 @@ package leaf.cosmere.recipes; import leaf.cosmere.constants.Metals; -import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.MetalVialItem; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.RecipeRegistry; import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.CustomRecipe; @@ -21,6 +22,7 @@ import net.minecraftforge.common.Tags; import javax.annotation.Nonnull; +import java.util.Optional; //not to be confused with the vile mixing recipe, // where you just make gross things @@ -38,7 +40,6 @@ public boolean matches(CraftingContainer inv, @Nonnull Level world) { boolean hasNugget = false; ItemStack vialStack = null; - final Ingredient INGREDIENT_NUGGETS = Ingredient.of(Tags.Items.NUGGETS); int bottleAmount = 0; int nuggetTotal = 0; MetalVialItem metalVialItem = (MetalVialItem) ItemsRegistry.METAL_VIAL.get(); @@ -66,12 +67,12 @@ public boolean matches(CraftingContainer inv, @Nonnull Level world) bottleAmount = metalVialItem.containedMetalCount(vialStack); } } - else if (INGREDIENT_NUGGETS.test(stack)) - { - //but multiple nuggets allowed - hasNugget = true; - nuggetTotal++; - } + else if (testForViableNugget(stack).isPresent()) + { + //but multiple nuggets allowed + hasNugget = true; + nuggetTotal++; + } } if (vialStack == null) @@ -96,6 +97,20 @@ else if (INGREDIENT_NUGGETS.test(stack)) return hasNugget; } + private Optional> testForViableNugget(ItemStack stack) + { + for (Metals.MetalType value : Metals.MetalType.values()) + { + TagKey metalNuggetTag = value.getMetalNuggetTag(); + if (stack.is(metalNuggetTag)) + { + return Optional.of(metalNuggetTag); + } + } + + return Optional.empty(); + } + @Override @Nonnull public ItemStack assemble(CraftingContainer inv) @@ -113,20 +128,14 @@ public ItemStack assemble(CraftingContainer inv) if (stackInSlot.is(Tags.Items.NUGGETS)) { - if (stackInSlot.getItem() instanceof MetalNuggetItem) - { - metalVial.addMetals(itemstack, ((MetalNuggetItem) stackInSlot.getItem()).getMetalType().getID(), 1); - } - //special vanilla logic since we don't create our own copies of iron/gold - else if (stackInSlot.getItem() == Items.IRON_NUGGET) - { - metalVial.addMetals(itemstack, Metals.MetalType.IRON.getID(), 1); - } - else if (stackInSlot.getItem() == Items.GOLD_NUGGET) - { - metalVial.addMetals(itemstack, Metals.MetalType.GOLD.getID(), 1); + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (stackInSlot.is(metalType.getMetalNuggetTag())) + { + metalVial.addMetals(itemstack, metalType.getID(), 1); + break; + } } - } else if (stackInSlot.is(metalVial)) { From 439d32b9664696cf4c0f1ddb8abdeb11615c49e3 Mon Sep 17 00:00:00 2001 From: leafreynolds <80794784+leafreynolds@users.noreply.github.com> Date: Sun, 12 Jun 2022 13:47:58 +1200 Subject: [PATCH 0257/1090] chromium hemalurgy --- src/main/java/leaf/cosmere/constants/Metals.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index b6f1cb34b..7af531a86 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -21,6 +21,7 @@ import net.minecraft.world.entity.animal.Pufferfish; import net.minecraft.world.entity.animal.Rabbit; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; +import net.minecraft.world.entity.boss.wither.WitherBoss; import net.minecraft.world.entity.monster.Phantom; import net.minecraft.world.entity.monster.WitherSkeleton; import net.minecraft.world.entity.player.Player; @@ -748,26 +749,30 @@ else if (killedEntity instanceof EnderDragon dragonEntity) if (killedEntity instanceof Rabbit) { - strengthToAdd = 0.77; + strengthToAdd = 0.25; } else if (killedEntity instanceof WitherSkeleton) { - strengthToAdd = -0.77; + strengthToAdd = -1; + } + else if (killedEntity instanceof WitherBoss) + { + strengthToAdd = -3; } else if (killedEntity instanceof Pufferfish) { - strengthToAdd = -0.05; + strengthToAdd = -0.5; } else if (killedEntity instanceof Cat cat) { final int catType = cat.getCatType(); if (catType == 10)//all black { - strengthToAdd = -1; + strengthToAdd = -5; } else if (catType == 8)//white { - strengthToAdd = 0.35; + strengthToAdd = 1; } } break; From 207f1bb4c5b053ad8cbc7200ace7b7bde38d8915 Mon Sep 17 00:00:00 2001 From: Ridanis Date: Sun, 12 Jun 2022 23:14:22 +0200 Subject: [PATCH 0258/1090] Textures Update --- .gitignore | 1 + .../cosmere/textures/block/gem_block.png | Bin 3087 -> 49790 bytes .../cosmere/textures/block/metal_block.png | Bin 2912 -> 49707 bytes .../cosmere/textures/item/metal_blend.png | Bin 3829 -> 4235 bytes .../cosmere/textures/item/metal_bracelet.png | Bin 3023 -> 49187 bytes .../cosmere/textures/item/metal_ingot.png | Bin 2930 -> 3990 bytes .../cosmere/textures/item/metal_necklace.png | Bin 3057 -> 49280 bytes .../cosmere/textures/item/metal_nugget.png | Bin 2880 -> 4122 bytes .../cosmere/textures/item/metal_raw.png | Bin 3222 -> 4341 bytes .../cosmere/textures/item/metal_ring.png | Bin 3068 -> 49129 bytes .../cosmere/textures/item/metal_spike.png | Bin 2926 -> 49194 bytes .../cosmere/textures/item/metal_vial.png | Bin 2882 -> 49280 bytes .../textures/item/metal_vial_shavings.png | Bin 0 -> 49151 bytes .../cosmere/textures/item/polestone_broam.png | Bin 3829 -> 49571 bytes .../cosmere/textures/item/polestone_chip.png | Bin 3829 -> 49535 bytes .../cosmere/textures/item/polestone_mark.png | Bin 3829 -> 49550 bytes 16 files changed, 1 insertion(+) create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_vial_shavings.png diff --git a/.gitignore b/.gitignore index f36a9849a..3d9c9376b 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ run # Files from Forge MDK forge*changelog.txt .run/_cosmere [incrementBuildNumber].run.xml +src/main/resources/assets/cosmere/textures/item/metal_bracelet - Copy.png diff --git a/src/main/resources/assets/cosmere/textures/block/gem_block.png b/src/main/resources/assets/cosmere/textures/block/gem_block.png index 57870e4e80451a9bca127fedd35765b799d02030..e188161afd2e90f94d75cf7afe680b3296a4e98d 100644 GIT binary patch literal 49790 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 diff --git a/src/main/resources/assets/cosmere/textures/block/metal_block.png b/src/main/resources/assets/cosmere/textures/block/metal_block.png index 71e689bc9658ce4ef600d204bf0a2352706c0529..b7de3f84581db7c735e54a7aaa9ab36b65a13538 100644 GIT binary patch literal 49707 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 I{pqj$zq({^O8@`> delta 2898 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
jeeB`OqLLPjQ;$oZ%i{cmNR}0S zN^$CZD*bi3kE8!%R(0F^DjlzJ<|O8Z11Um}$b``DJbTwll8}P;0&-bh32jzddT5=JnL@pIzLhn%q83 zr!aaeF0gcpqW{b-P9&$;RY=BqhE}Fo#;%ovRgLjGmEOUniGV$A+!=;P(n=QodK<8g zE2E2H{Yl96o;Xx8Dkxa=>zEzx2|94W5j%O6!DFq4(Pyep6Cb;vSf_}!UVr7YUV)oC z4u1vDc&2dKeaUA@=^&}!xUKe4ZALl9+6}WBP+t}3vc1TWC5Ii~toQ%SiXR-vl2;zD z-w5#7e!IOj$vPhFEwGR6svYqaSS_nFuDiUcwxT`)9giANwK^CZUK_h}wZS)gqjyYu zn>-@C=OA$_fdP6nAw8ihk}h&N>w=2B{Isg~{^DK%w8yE3Ka1_)$w5~+8>?9G&cN~z zwl}ReCv`nF>5cpCy#1wyW%g&d)~43euRHvtBy2Y??XEQXj`?z~7@AA|m3KB7ZADAQOnWxw(I!t*tE{4u}6wCx0pMBbm?zLFh-3UkVV(1ot01 zAk2L)@{<6efapdb6UGDr!JRlJ-k9MjGW1yRiQPrN@k! diff --git a/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png b/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png index 59bdd03a4e8607a1430c51f1889de33529f056d8..2ea9ae05e841b71882be6a6cba8e9b1d82f2ad28 100644 GIT binary patch literal 49187 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 delta 2998 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 sx8Pr4|ALtzBF@!Xel7i;Ka05eIg>#{z4-2S z*0C9ZWw1&1zx?ZcC-q#tnU`R8kXBJh}j3v=VYd>1gU;z{N=(`ST&=qYL2X zP&=9^p5#~a*~M}YPZ!6Y+hJ`ob4^gZ?sX7NW>V3>9tk;#{cy_n%Wd#Xw6iFTj0him zz^gL97Hv-=Xo>RziFrN?Fp`j@BiWpiRa?fkr0 z7DC8*9XOx7U-0RC0<~m)v+bBqLC00AnnV?b ziHr!L7#Ws|k)vuBIsce$attgUTd=t1X`@@lP#R}3^Nnrq2AbQIPMNEcI8WGOm9 zT-Au8X*%N$&I(DbZBPR)k)*rwS-CYhonWp!-yAeBw7n$C$+I&%o~7rWQ%YU9ylrlQD(l0Xq4 zO;iV&gqcWEBv3*L!&K?Kn&__50J4q^4MKom90RM!abet%9S57M^V_Ie69VGRu>$Tv zTNk|qI|o};-p@ag)>~+Bv`uKU5op4292&4W?A?G4x@)}V`r0gqmb(e}HN_&|jcX+2 z!!yvQYcQ+W(RIJNz{6F}2P7o0nc0qZ zBC>Gv1W~5S+|XsD>8^_;4t!}!s(~m}*isp%rscL1e0_pUTUKl}W&Hm>L9No!SyG+h za9R@IK`5GKP-3_SG8k)6KVZ`ZY+8<~n-(`^suqwOC^NZNW-ejN_z-yK*?)*_kus^?TuG~ zghIHRJ$~Eb;Y_CI{;|UFl=;~CFP+)DdwB3iyWZ13s6HLPaiXZM|5uM6E&cH1$$NhK z^Yec{`HS91@v&c68eZR-dBS*q>&%#$lC zpRAqRbl>*PN1i!6d(YtOOIJQ}`h}xEe)`tqJJ`&-e>ZvliG8npdGGBfcChm+i+4%= zM{|!9@1*rhL(DHOAHRI$4@3VDwpHHy{bPGF$G`jj%&V^yjavpbKQ%tyU-|+2=7Hej zio4~+-rIT4g$FkN&y-@Z#y0`Q^TCul;7@#lLJV{_>f1rgv)b?9$eyfsK!3 z9{v2tg^%62^!C0_eeY1_tKT^D=Apw+^-8zC5#VFK-}CiTTfg|=`XSt3Ha@iT;;WDS z`i1BFHVpVLi+#ekP6&7Ws(SfP7hgZRXY|TodF9PVPkmwT(zC(Y{C7UP_w-LP4~gge y4@|tY{M?3PU%Tb4b<1Z=zJ1`gmkzzw|6+dm(%;^??_6?o9vdAmEbo5kbN>cA6CtPo delta 2903 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 Ny$9+)y8Zrd{2RYrPuBnd delta 2853 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 Tzt|lAW1?g6ip-DN*KPhcn>w-< delta 3197 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

ZzBvCU(JykRVU(3YfoOz%|1t7}H4RLdPv5jA$^U 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 R;-B}l?`{5J^{2k={{rY%(>DMB delta 2900 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 diff --git a/src/main/resources/assets/cosmere/textures/item/metal_vial_shavings.png b/src/main/resources/assets/cosmere/textures/item/metal_vial_shavings.png new file mode 100644 index 0000000000000000000000000000000000000000..74fa34f85b7d28d29eefa9524cb8eb6e94cc6948 GIT binary patch literal 49151 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 Wy}c5j(DU>{WFtLu-Ex>?)4ki? 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 literal 3829 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 Mo0=c4zU|}x7hZTdd;kCd literal 3829 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 NqrSF@Rt3Z%@_!~|-*Er{ From 7cf23efa72a09219b8db20e36deb2f3a6e22c7b7 Mon Sep 17 00:00:00 2001 From: Kal Chikhou <64355028+Ridanisaurus@users.noreply.github.com> Date: Sun, 12 Jun 2022 23:15:32 +0200 Subject: [PATCH 0259/1090] Update .gitignore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3d9c9376b..f36a9849a 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,3 @@ run # Files from Forge MDK forge*changelog.txt .run/_cosmere [incrementBuildNumber].run.xml -src/main/resources/assets/cosmere/textures/item/metal_bracelet - Copy.png From 4e440c8857ebcb4acfe752c907069cf97db5d33d Mon Sep 17 00:00:00 2001 From: leafreynolds <80794784+leafreynolds@users.noreply.github.com> Date: Mon, 13 Jun 2022 09:30:34 +1200 Subject: [PATCH 0260/1090] Merge pull request #3 from Ridanisaurus/main Texture Update From e7f81c50830f066fd97525c07d37af9d84926133 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 14:20:15 +1200 Subject: [PATCH 0261/1090] cherrypicked commit didn't work right --- .../cosmere/textures/block/gem_block.png | Bin 49790 -> 50120 bytes .../cosmere/textures/block/metal_block.png | Bin 49707 -> 50091 bytes .../cosmere/textures/block/ore_block.png | Bin 3829 -> 49944 bytes .../textures/block/ore_block_tint_overlay.png | Bin 3049 -> 49919 bytes .../cosmere/textures/item/copper_clip.png | Bin 3077 -> 0 bytes .../cosmere/textures/item/gold_boxing.png | Bin 3077 -> 0 bytes .../assets/cosmere/textures/item/guide.png | Bin 4328 -> 49292 bytes .../cosmere/textures/item/metal_bead.png | Bin 2867 -> 0 bytes .../cosmere/textures/item/metal_blend.png | Bin 4235 -> 50729 bytes .../cosmere/textures/item/metal_bracelet.png | Bin 49187 -> 50832 bytes .../cosmere/textures/item/metal_ingot.png | Bin 3990 -> 49943 bytes .../cosmere/textures/item/metal_necklace.png | Bin 49280 -> 50841 bytes .../cosmere/textures/item/metal_nugget.png | Bin 4122 -> 50594 bytes .../cosmere/textures/item/metal_raw.png | Bin 4341 -> 50813 bytes .../cosmere/textures/item/metal_ring.png | Bin 49129 -> 50730 bytes .../cosmere/textures/item/metal_spike.png | Bin 49194 -> 49848 bytes .../cosmere/textures/item/polestone_broam.png | Bin 49571 -> 49883 bytes .../cosmere/textures/item/polestone_chip.png | Bin 49535 -> 50610 bytes .../cosmere/textures/item/polestone_mark.png | Bin 49550 -> 50622 bytes 19 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/cosmere/textures/item/copper_clip.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/gold_boxing.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_bead.png diff --git a/src/main/resources/assets/cosmere/textures/block/gem_block.png b/src/main/resources/assets/cosmere/textures/block/gem_block.png index e188161afd2e90f94d75cf7afe680b3296a4e98d..fd6ef8dccf0e8f6f8b10548877cc85d036a3e6ce 100644 GIT binary patch delta 795 zcmey@!hE8gd4dJg!3P_yWSF^(LktY9jLoe~%_b)>D`bj{37l5{PT3=(xs z4J?w(j0}>^&CHWG`?DNonyka3Jo!+7(B$=O;+uuo6PXl^(h|)~EOd=hOiXo+3{1>) zEzB%Zb(1VDQjCpEEG;ZkCQl3!p3KiFKDmg~N6Ey}$Rx$cR5vxr)Iv8U&BR#O!qPHD z*U&sA#lRpXInB^ua-cU@`R09`krGN~iHU|5X1Zx+24=cuMkdL+iOFe6y5?qzslI=DPW+t& z?UY|9U2g0?^L(==!{IFv*BS1ZuG=y5gg(RDd%JZ@80uHXFx)sNFa2F=;dcJ@x2^Q+ z4lD`KT={279P5HW^DoVlt3oHr%1!Y+$?^BW<6HsvrSje>n_B$>WK=)QvGC$}`m(|# z#eUX?^31t~RWZj3B^|t9xc~NB9saK5_qyjM<_&8$EqUkjBz*OB5!r)NkABU1S=E;q zb*siK_xnBWsX(c!4X$Rp&ru4kLGccg0$_ua2DK|*s+xh}tbf8M;r zsK~=xau&ANIj}l)s7iHpt30 z;{@-=;hA=}@1K5Z_38{==k@Jzu0yN5cg=&385VN9mieZoY!~aRcI?sJ7jUn_O|a=- p%(|=R{_*D7&0clB=j`{ekGyVN4{y1IR@E>7fv2mV%Q~loCIBGdFr)wg delta 600 zcmX@n&it>1d4dJgfejn2WSF^(LX3>83@xpUOeQBVDD3=>mREX@rJ%nU3iGqPw+7Gzi1?9XzTX>%NVBGY7UF7M5YxFRJs zyDR^h<3WreN(#j#u4N@w4XbNu}==gRXMb;-#FTqXD9zc5J5nXMLC zf8lb%FMhbgS`)yB&oTZH*0RU8C5aLWJY z7n5c4^4g=Mt7VFw2{jxmsHjhi*{S&@`Plu>*FJIw3Wq+@Q|??cg8>LUUHx3vIVCg! E0Ol9>m;e9( diff --git a/src/main/resources/assets/cosmere/textures/block/metal_block.png b/src/main/resources/assets/cosmere/textures/block/metal_block.png index b7de3f84581db7c735e54a7aaa9ab36b65a13538..d1bf1119647e2221d56fe05b93b4e7805586d863 100644 GIT binary patch delta 805 zcma)2Ye-XJ0G(bn*K;Iou9tdeq|_Jp@!fmBJF#-PvMjS&K^o$=?_N^NtSsq;Wm%?} zk4r=^Y=u&-2e#bn46*T(Q&(6OChx2kCA)LpEa^&CeuGTn{ z7|&WL+Q{-oPEgVb!@snYNH*9xEMP{&K;&f#@CedCqy-zWBPd&Co`smN444-w(+tKK z@qnf<2Y4A;0g|x|2sF*nBD5h!pj@j1n*2$tBymWx0g2%RK=F_THVSb*itQ}6N<1Se zj&&i*%^;m?>Nu-^1S4B{hya5j2N(+S0P#oyHW6W#fg%#ILSG9}rl@tw4)sbBiVVbz z&(6jnfMuUM5`E=q0b`27cA2J>IP+h*>!EsMr~(2=B`z%5r6nr}5=xBSw@*Sc4@42# zfsOX%v5>}AJC9@pCB-i?+Ep_r;W64CsFjZ*v2e zSfAmSKdR)7sZ@U3m&eChqACtl)+RP3Yo69O?(El8mS^itnJd0&jn0=1)y_-7=DzTx z_f^Tlw1IS;qr~ZIZ*iDncBxlQCu@S~FDFgzsJ@(`!K}b--n4t};k;9c>$7y_1#_z+ zp<&5hqn=2%oPWrw?v}E9AMX#k@H$MNGChBBW3LK#WkP**T2HKJ;nuf?iq;s@@X)X- z{bNjSozq(zRkTNaFl^*VTS?)j#@_2o*@@=@r|v5L@w^P(pOJDVRF%7rP(|M{k5R47 z8t?BWXHM`T$DlMe`LyTu*#yhyWxp=0C6^q+9W@sRwixw!UW5L4K~V7F=3A{)QT~R6 z8G5F!St}M_WzBCUfv(-L9zHttg~r?av*b%=qE%D)s;J|Eq0D_We&XC?Zo0~G>pRg| z^GUa(tNY;Ph21^#I|Cl|S<+@#6&Ie1(hi=wqRo0TnzCR}_%5`|DE4N{P{yMCP9ou? oXW3}#ny>wM{t3NjOgl1x`|xqQ=Ipmw&s07vHz&p4Fr^p#0d^QH*Z=?k delta 596 zcmZ48&b+#Xd4dJgfs~C_GR#~?Ax1`4hUQi#Mw1hmm65r<%mK=lMh0dkmZm1UhL(wj zx)y0BM!HFc7OA=^=H|&pDanS3=H`=Fv?u>mQrYa!a+qmz9D5?uWNt3+&5O7qB{sV& zPhj4xtgbNAg9vldloX0fT+2$V$}>{)Y?X`*jEr;*%ybPA4%9X+X&)~e|La{V zc}}0LtoqjZ``;L}nh*B=eb%@7TBl{&l;^pR#0`s{irP9vtMD)Yfv2mV%Q~loCII2? B?AHJQ diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block.png b/src/main/resources/assets/cosmere/textures/block/ore_block.png index 637ae251279e4c498764e14fdf418a742c061bb1..3133a5c7a06cbe3de750460ba6049985feada9cb 100644 GIT binary patch literal 49944 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 literal 3829 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 diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block_tint_overlay.png b/src/main/resources/assets/cosmere/textures/block/ore_block_tint_overlay.png index bf5802055dbb3003871c837fec7a712012c2264d..cffab94d2ee798a3bed8bd37e4473b7e096cd073 100644 GIT binary patch literal 49919 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⋙r%rwfkv4v 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 delta 3024 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 Tyihxm00000NkvXXu0mjf#<#hB diff --git a/src/main/resources/assets/cosmere/textures/item/gold_boxing.png b/src/main/resources/assets/cosmere/textures/item/gold_boxing.png deleted file mode 100644 index 7b61d51933df1043200282cfac9687a4398bdaab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3077 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 Tyihxm00000NkvXXu0mjf#<#hB diff --git a/src/main/resources/assets/cosmere/textures/item/guide.png b/src/main/resources/assets/cosmere/textures/item/guide.png index c088faa06d25ee9deb76287c8b09eb225477ee67..cdd165fba4984579cf9964493745fecc4ca4b331 100644 GIT binary patch literal 49292 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 O;qDFX57ck{`u_`LinpWy delta 625 zcmZ44!`!Vn!GekJ^hPU5W?oZWL-PG1e$46qmS` zl~|Q$q~_Tw85tNE=^CJTLEFG+vfLr<&0>c$80)(antL%YFs6CBIEGmC9-VBTeJDWW zX#K<{Z&iu67wnakSe7`yd=~bLaaT#PCP(JWCy!oSSQ+oc^_OYxQBTb#D@`X=4HnMM z(hF`&f|p-+{OsX%@SxNCFZcGozf*nA*2b0Npq}7O&cEWk-xzv!AJ2VXGuO-DXUN)| zR0W2_DP0ovOOrMP&N!I$l5xQ?(~XweSuw)W0$DnzUVZMq{MqaZZAJGQ9E$o%S&9;_(tWcF)U`nxGt zFHQdb$2D#f(15bVo$p)jG_GIy`&O!v9J5CDX}#3itzS~!E^lFIc+h;mXkoy=zvgw! YO13MN*Y#d*V*mnAS3g#lbxsLQ0O{xghyVZp diff --git a/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png b/src/main/resources/assets/cosmere/textures/item/metal_bracelet.png index 2ea9ae05e841b71882be6a6cba8e9b1d82f2ad28..5b4e6896f006c5a4fe228b8fe5524b4b214071f4 100644 GIT binary patch delta 1656 zcma)+e{5FO8OPuDEx%^bu5Z`3Ss2n=C@tZU^ZTAt%77NMxGA8Bn?HNbJ?C0AU=S3i zF0YcPL4!72v}0o|mD!0Fp?NEgLVya3jD@j5X8BPyh>e&Gi85ODi|){6iGS|qCO0SN zIp6a<&-e4(EzhJ|*QHx!;lVjwbraIxqDv62W2lahq&Z#n&E>lEqAF`FlA)ErIYnSK zBOt>_1I0v1f=tBm`l9Jop>;^p5JD76aFj)0s5Rh1hm>~CVJ7nniw+b9e!->lJA{XT z1fyV(NlI^3jfsL@#!h$xD1BRFZEw}@sRjjyj!qNYQ=1a#k7Y3BX zS}+O3G7bbW0a8c@MoCKvQ&QRF&s#Ieb>p%DWmv@q0plzND_97ISq@%UA&fNUWJLOE zC{u)4;xjZ{f{lH`QYi~Kv=$*7#TX@L8b(y}kB-|`7%*WJbr9h&1fm!MB~1)5iwH;7 z5QJ?qx41Sxv3O-s6^)b%W6dGt5e9{s0<8=MLZsCc`43GB>NCmkwb{TCsW}xOtnpFC zhZ++y5JWSrF(Za2xG9s||LttDzT}4i#*|>6tTI|a7&8Z&7y?v@*a@LXY(^^d;l4t{ zQN$qPBm%;j1rs|0Sm}sj>I+pPee7fjxj4wO<-a({8?TSzTqpec?3c`8F2 zO68sZYFQ?EWlA>bnYuCHGLkX!$Xk0=)*J7HCya!`MnXrP+N8H;TK@K$eMNzYNldA? zJa!&EKOA5pN+8Ap6G^mmc%%>8r)Tq}Fn&}eBRclJ2)_;7v*gb>28L6Ku(LwiMBnHc zoRQ5>B(3RySr-bffaxd#Zaw41`vTOvtU0!hMkDgWESrCa?|Odz|1snwn6z@${Kr?- zt!{D4X9dK=>BkrFH~t=v?1KEsJr5S-j*R}viBzg!aKXH}OXRx8lG!bp#S=c5eW9tX z{D#$)OVHF))z99&{7`Ab&J*p&7PPm^bHOj`Hcb0n@5^e_qd=UY+n*88@g)P4qd zBWo6>*sboJ*ay8r#`eQ*8ra?S8_sj=txqt9O2cFVEBdUv#aVCaFl9h)kW zPuI6;+0!vFRQuGmFAWw>nbG+BKcseC`VtnG9eyyi=xgE?Ze7~dGUME(AD5&Lw9b6$ z^po%HoIS})|LaPwa(VlkmE-1Ib9i&(sm*;2m$vtGU6bp7>>!k#y=l?z!VR-tc>79I z?#}S>weLSuQ{26y?|e)4#cM46o_u;0p(UXr4neW`$+WCuD z($)9YjNSjl<@E8JyL$d{bFOh>{XOMvN2>kX-#>QN;f0&OpZU!PHD%8`42i^KDqz^ delta 736 zcmbQx%e=UOd4dJgK9-GEGR#~?Aw~vPhQ?Ngrjrwxm65r<%mKH~X_3X4<@pJ%MTSJFc}%o1gO*u}uCb zCd(bt-Yj-FgR!1% zkHiTE2F9bFE{-7eGKqM#i0p`(kJ0ugGx9>Ox<(TfX0g z=v=4!%CkjZD`@*g`4&o4T;cCe+1zyD`-R!LhYl$7*f1P>e~clGl|g__4yZd(Gkde{ z@7D^tZ+E2C)T!OvRFhX5_DB4ZJRi#@#twxqwqL@cTfW_YQNpC7X2h=JwIPzx>Hg#E zf8~G5)z9@?v3k-jE!P=p!G#xBt)4Xdb@Zk^0=LD4eC=+n;d=1=yZo8iefM84lASKL z;8Mz|vtQTVV4HTNP)6|h#8s<>-tMre|CvriD zk8dwuKhnDWammRmU)q_!@qhdA=OK54!>RkRYC^_q`ff&bw@4HH@ti@JH q>6iR8HFILTG3k=aslZ}!p?b#2yH6R2SQ^AJ0D-5gpUXO@geCw^B03oW diff --git a/src/main/resources/assets/cosmere/textures/item/metal_ingot.png b/src/main/resources/assets/cosmere/textures/item/metal_ingot.png index 681d70dfe53045e4188d3f58d402f95b569cad5e..ec32d35a062fc83f29b96f5260af42604e9f6bdf 100644 GIT binary patch literal 49943 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 Xw(IVH`QWvm0SG)@{an^LB{Ts5NMYek diff --git a/src/main/resources/assets/cosmere/textures/item/metal_necklace.png b/src/main/resources/assets/cosmere/textures/item/metal_necklace.png index f62d5ac91fe846b4df2ed22d189904e56db03d8b..207b3c8546b7f30079ba91b426c8a7ca04a00f36 100644 GIT binary patch delta 1631 zcma)+d2AL%7{=Rv*wl{H z(o5l*f=hy=$J1lI{f+%W;Tn_^0l4EzfFX7OCzb?=GsP?>i8TL_hGLpbjR=}Zae^s8 z0$cUP5ChnW(%hHV4HFa(S`3MlL%3knB8 z!^=Dx>lH=$Lmi{$MJAXoW47WJ(Bm@zGcW_3IVM1e3T{IEGQESdW4*eT{(wZ3TP6WS zI9lasspHrf5X3R(21d^M(QUjb(SC1z>rJ|D$Aa~VSjYv)!U8x-B49A?nue*%XARTP z@=#LrxJE%oDrPtiAO_Rv2rL1U!qq2WrE?L&{(IWxv3_q^+)Dw&Wx5|=x~2)FT_2;c zDIm(m(6kY=h!;LO*3;_H`8XaCAeLi73KTRI;PrBDD4ncuxP!3P^M+zZ`Te0@?T$AI z65S8g*b&VhL7FD+DhJqvDI`tlLN2}Nj)~q+ovRas)CK}+1=756O$oD*30xO4Wob?{ zJfZD@s}Vsgk&6u=sUmNE}@EI>0JyahURxE^aUAXlv?_1n`?={7;w{Y z0n|X+x=*G<=kLXO54#@-TGXWq>KO=8Z>#f`M1zHFB3!~<4Xby$M^dP$M|otBD5OkN z$E>6#&d{tnu8Dv$h=C~LR2mIq*x%D1$_6bO1u)`D2S@ZaurxyY8;SL$GAT5qAXIpP zKfEU6OvUN0UApZ)oJ4ot zTk2iL2Ta|xaop-k zw&(pHPp799hh?owncIHiv=g23Yd$GnRdst~{PD{(TQ$4T+rPDRiEmF5@e(&D#odU@ z?zKE}NXN>9E9TU+yjz=ctgPe6%$M)vU0ZzUvr#?n|2k%Wr_rw-E;u%H`L~ss=hM^c z)>l2>Tk%8gmRV(!x6Ye;V8o*2?iVgykJ>fhqVJ-2_d)5iuyZLOCaO`vsTo^J=vq+o z$H1t|177C~Dt?L2Ow1nt(FWCPX#Rv9E8N;9t?R(pNZ5z zz80%?3}1NV_HHzC#JO_-mLG0JB;H(j`Q>(1^6D@87@VK2PS%KgnmZc^ov%+CoA&Q|BA?R!7l zysx9+I#*Tl$;~0L$7g&vSAH(5X@R*|gN?VLT1vf`x=EJYKKmPUTwDYM@9q1ok^a0` zP|(tPzW46G_ioMK|Gy;v{_4BePhGs|p&eNw7MZS*w~<9*_45Ntj`NnDdGsVqp&?r5 z2kFuUgs_kG1SLI%y5t^T@8}Q!Q=n4$hcxu$|Fc_sDm4 zZb8vqY&zdFp4QK|f7a6`+jQ>2J=VW^7gKgQEO_-S(rand)1RxS+f;rNX-He`_t>@B zfByc6uF7ebR#Y-fV`>Ol6)N}6X3@=6o44=p2AaJhhk3*H{ilOG7}5%z<}KwGygr?c zaYr<(&3Ye`nL@I?G7SsNw{he!ZI9S=_3m1x-dXN-rDt{g3gksf19F@0MKsk-UtrEw zkf)Hb?UhW(w(w}LNq-L2?n$nFD!)?Ub-d+^a@{?DUd>uReLp9^^V9cFBDI?E15 z%B#&~U%Tv!iNpC`PVu+#|8LLEIlShM+lI`uk6JQ}_8LB7_|LeEPx|N7M*isxK;Y@> K=d#Wzp$P!iL`Bd5 diff --git a/src/main/resources/assets/cosmere/textures/item/metal_nugget.png b/src/main/resources/assets/cosmere/textures/item/metal_nugget.png index d911c04384c52678801fc96ccfe3246f109ae7f8..f6f11db85fd91d5bdae186e8d463471ac7a1cc43 100644 GIT binary patch literal 50594 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�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 QKOgQs(*8*OhyKL>1xQGDmjD0& delta 511 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 SZ-tx>V3wH3&gZW-oaFXwahcMDL7Q&oA| zcbs_Ib-Kb&x{}(JD0}40qCbe7m3yxwV}cEv+dKX z=h)=ldrGFm#41q*2{{?Dcxu=Ct}QeKUpE6`!bFItW~>)qToDNyLujIQOWc%iYX<7r zi|<<GHuVo_JZ=FLU!4i5%_7?Gej=Zjv~l-`3@b% zC;|Xxl}7GKaZgnE3{Ky8O<`YJ!m-TtGO-RSKESo_u83NAzg?lXo6Z_25&#kJiOK}V zgfT`k3q9JoAYDa!-V;p<`WPm#FG?$FgraJeRF*Ht!aPRSwjo~b^=%ra9AYkku7%55 z0-vj&oqWz+KKzhOqkKDHk`EjrCZYPk$Y>imqg_7p(Q&5}@-v%+o_R98(~OXq`RBdr zdxn+neqX+hp~8?dj2gI^^xll}DS4mRG0l4FnN0DEMByRjBk>4V5<3h`shDIoTj=rla3)c$vn&T9kCg!h}EFK+=hnbxz8fcv?`-B$VB#g)4;}FJnp!M&^=hG*;J5zCkr@wx+7?1nu;C1Kkbx>6YFMasv)_DBH z$;+-@+xh6nw;rGFJni9ccXzs*)9G~QDujEHx5pZ54zj8A3Yj6 zdF^YD-x}}hko=hbHX5KxbPwJks5|F^$)+Ui(wL3e~rvb4<^7uO zd;5QLzfWmzy$*9vq)bf5CQSnevLltnZv~hU%jECS{r|E_pYmnKX`Yw?+9&Cd@)_Jw z29{6!6^Dxd?OZ?R*(be>Uc5{85Qb*#p-wM#cyzYH;ueRy@tfD~b*Y=buQz7VilaF> zeQ=r&w>i(X2THCV&)m5<-^Dx0KfwWC_^3nM33J{N>ZV@F@eBzKST@mfP8dd~HT7N= zOMdP6&e4sdTiv7QLE_w{k854JINoI$>gi;-b97rg=lMT+ux{lqpFCtOaJe0S^QtFr zcf*^f(}U?2PUz0nSH1G!<-he$uUvV?Z@i{19`fJ%-S1S7JohVJ@Uw4!Sbyb5Uh>Xo z{opqrsF!@{*MIJB9sJGbyiuS2kFWa4=J0vX`P|dL^-Wdw(pSIiU;X0uebbvh@SX4a z^~ZkkH=g;z7eDm3f8+%pe&>gO?&rVaZ6Ck$jO^nt_@y8F!(aN5kG%iKKlbD&e)khU z@v*=5_U5nt{3i~cdHenE3%`Hozr642uYIL`@4MggWuNwY-}|HHk>7Lw?c+cD>Hq%4 zul?v7|Kz9c{F#@3@cV!1V_*EeU-vbi^>v^Bvgvyd4&HP9iTCvX?8?9SpTF>VfB!|l zS6};vU;n_zU;mJO@BMFk@C#r1tM7lsTYme)&z^65&y|<{gYW;EpLpwMyfOQ^51(8y zzi{}02mktqK6d0KzB_y9cam@U+He2hul&IO`sR21^Y8iTHy`|? z=iT_&FF*X?Z+*@O9(=|JKli(S{F!fh#jlQk5S~AO$5;LGPd@kh^XC`7|K@kS`I+ze z$VWf=LHCL;`GFrfec{Q!_}QPSU-b_4k^lb3-+1FMneY3R)7u})f9i{0{I37-gFo~~ z?;iUXeEA<<{rwj`>(gHUY5(@qzv0P0{yPsHKKC6T_5GDE`Q`8ahj06#pZm?1yz|>m z-~NJcx$(wK{@6GC$A_QuGoSJ6Z~M$w|IrtHBFAm`1yZ`_I delta 731 zcmey{!~9iof&~-b>5W#B%)F+$hUOuLW>yBqRz}8?6POjyM0%M6R7@;VjZ#cgEOZl- z3=MP*ElezQlah_obPW;{4NS}u6HSwiQztXBXiZ+Ksv=j8qUwv!j_(cgS>?=2P&Vysb8C@yg= zE3qoiNX@fVGBPkS(ltQwg0_LtWVu7yo5c=iFxK14xd|{ZFkbLM@lLu z9Q7`DHj6MTw%pmvQ$A0o^RVyvrSF&ie7xxX)4#v}?tA}x-~R8$OQ!tc4`Mi41b>ONoi zeDYbb&5mmK>cqFQk8TL>U*;pCw178d+NC*vKb&}09I{GHNk;#ZRD*X`kdEk!a&`_u zfqtQ1cNv|}AKw`JDDY6^dvzt5&09BnuD*C>Y5>cz<^1wn1D#lSZ0BomXinprBQtkW zq?d5N(BCVTtfxet?r{3;Jv%?g&OG#3w+G{#|9XqBW_a!3J#g)uTHo7Ge_wC^93XtW zZ21%YkOikoi%PtJrv7$fDLxr>P^WF4|N6^}21eo2UY1$~txZqnz1n;G_Ul hbo%;V3pdptl~41!yE#hdOcMhTc)I$ztaD0e0s!-3HlF|h diff --git a/src/main/resources/assets/cosmere/textures/item/metal_ring.png b/src/main/resources/assets/cosmere/textures/item/metal_ring.png index bb03c056bb8927f09788a3f11b1fee017af128c6..67b9b6f82c143b2294a236be483a6e3b80bb0d83 100644 GIT binary patch delta 1555 zcma)6Yit!o7`^Rn%R?%K0=E#PbX&DxC+s|Tr-Gpktx_9-Kq4YSXLe?wF;IC#Fgz{+ zV-SR5HySMlc^U=Uf)^sCDxu&5W5Gs@TE$?XJc3w7V<8&r-2024?vLG_%(rLG`Of+F zdSCkfSEAee^wX0MmyV7O#IsyjN?0kPVNJB~?&X%~^dcW&5-=%%g2VtN?9C_I1=yp$ z@eDJNh%hZ4G8Nooh zKDA2~U?ns|IxL%!8@6P{!jg=_uzbeQA%)tb5BV9mfk~kwCkVH|y4d*U&1*9l-OtO@4L=>_VB=vzZmXXi70?<>+ zbyZ-X8~$9LLQO0k(3I{FCOOttn&$z;i3_+d4KO4?)KwC>P=#fK#wErKT9#3W1I|4o zDDY?i0f&SG!6gO=`AT5dK5&>eF*oeHH|A*M3yK+FO4=%EOQrM(U`P-lAVHFb@Uh%* z{*YMMkW=kIh!M18xfBd|hG-y=L;!PUG-DhYnNn!WtwKrNz`8+E01zb#NTU&eTm%?m zE0m}DW=j)4<;>1>q&6H%2^i$oC}p9!R)M8MjI~H952v8>N2mfAaH|^N0ArxNq?^`j zz>G&+>>*BBit~xwSYrJMkzT;4#I6sFiwzLTasiD3LP;SJvGpQFB%YU-xRiISpTn$h zp8>;M+ZIFuAOa(S$GAZn>%bK{v1Dv^TA|YRYlZAK5%oN^iHa96?j zM7-dj^-rUKK%jlY0OuA|LYpKT7$pMc8yoOMT2X7%;hg(EwFi5)!B`Oj1cm`{p)Wiu zlG|MTz9=`WzdsfpfACF*`hjm;+XSVOur?N&+591osep+;F;L3KHLcSeq7qXw$U(NF;6B)G1}N{4M*!3DxN$@6&kx!d1U&5YBtU##E%Sy9vQs^;kA&W^}ee`U=&cg}GRSNIw2RZksgoW8bY zT~GZtD;qcL-oEQ*cJc9%bLPF>aASJ&`J3H@~B8(7*p&tH|6-DtenveS7Wc4egIMvi6OC-02KJ+sPYW zhfDLeKe=l0$HhZxyNViWhn^wr8>5F_zi{#5bMu$&ly9~6kLt54Ss~&eUbNW6y8?S76cg@iuJC;Q3 OHMQc2Db3|I>;D6WuLwf` delta 680 zcmZ40!~F6;(*z5qeJmTTWSF^(LJTdfjE$`fOeQBVD z`7QdHH@~vp+2%ov?Me#8C9Y*9R^=I~dA3SM21Z7@K=&CUyrpemG+FMD_GYoe8I1K; zO}wr$Ffev|x;Tbd^e&ye(fhE2#L;@eh0arzr}*dn)LjhPf+_d%Sw`?{7(7%k9)uGGoBLk=lN~6 z9s9l+vnHOJVj0zP@>;~+%Wut+n|vMihb_%`UvDszEpu(<{gBrx(XStzy31R)w(EIB zM-AWktsi2z8TP+pUeU|KX|Z$8yywLXFMs~Ly3}ov=ZBc?lO`S4BO9Jagyc!j;`e6S z%be)-^!h5GzKyfJyQkh}yQpNc$TdUdR{P$4*Icz0X1qTVYazB?KHfx{U#D@GO7J6@ zX#&fx*v_c;VOHCGlnuNjjTPky|nB}33iswa6-fG3~_smV}8_$1!)O;H-yZK_moJkzPkEWg8@ziKj0`rFQ4d-tjU3u+bRu52D z|MCs*F6WhU+_#^=8qK^dTK4SxuYqQ5d-p|kay{SRvN2-8-B(&0zIYp(e-`_3Hu`9` iPI~YXhGX^fKl4v=oW6aTvt$Yb5O})!xvXN@TGde3{#t-BwkZH7#<2@6E;dEavmBJ=|r z%A%MFjx8N`?S)z;)U1KHQOR2*;ac4bM#)C@=OAPfLItUjWU}^l?t{(ID&QH70TR+Dh}bc)OmSdU zGTgeVrz+!VBar6-hJ**Sq8bRTeBgQ1D5;fl$ui1JeKI`0wtYpKYV1=4G&c+gL9G&5 zr`C{?KI4W5FXYz*&5g;hxN#(r5khe8Fu+`CMaqUJ3Gx9%T)N8T!qP8f>w}pGlfjvsZ5aynpb=D2i@f8~J!N z>S)d_-MIe7@9W=rw0+i|M&+hed|EZxzi#T)nv-XWZ@*l9^bb}2Oy8zUg&SAp?FR

-uWD>g1KZWu!Vdd$X-{y<#kwShF`(e1E#3 zcxE!y@}4JIcrDQWMQ|Qw$7J zbyJc|(sV5h(h_woOj6C$k}ZtPEleh{XsZ~eq#9eACmZV~Ss0t>nx%o20X3wVo0?c8 zo23~gB_(b4XHjO|9LBYSeRGsh1ncI1;*NZqyVd%cC#Px6-0ZErpJj8HL1;fQR!%;* zUjoUcn?LNI##sNwx$6J}1EYzji(`mIZ}Ol2|LvJo8(3!^UNN&fyl~T6mY$#U8yg!F z&#lRF6JfsQ=W{Uoz&6up2_X1a-TK2oXa3#}pnPLvC(Css0|SFU^Nm+aEt@$}g?ZcB zo1gaYuxeH`*)k*X>#I1o85Z2Ll-6tmsaowsmGKGf(}(8z_N1|~Wth~}{O^1C>Ss64`S~`gD=aM- yuUc;?Iq>7--`)Q&yf~cw`G0zKz>l6OY3U3ih2@(xK5t`W00K`}KbLh*2~7b0kL5xD diff --git a/src/main/resources/assets/cosmere/textures/item/polestone_broam.png b/src/main/resources/assets/cosmere/textures/item/polestone_broam.png index 2ea6165c3c83a8975a7ccf9bb7a79c1ef77b2c61..34ebd9788e0b300e8935c2a334c8adcb6808a19b 100644 GIT binary patch delta 703 zcmZ47%zV3*d4dJgL641AGR$1YAqIw4#wJ#V29pz*m65r<%mFH9mc~Y@rpZRSMnNJQ$%zIA=BY-L8CkSc%#AD)%~LGQbd8f!&2&>uP0V#I4ULm@ zjSNiE43kX^QxXk~Hv6+Evnm-Ir6rn~Sm+w1n3#g3&2%lyEK+roEG<%ujZ7>pEK??b zEES&2&nd2CY+`7cmSmu7Vrr76n_>nuGsz^yRM#@i($c`tAkokiXm=V!sfneLNs5uF zZfcULg>FikiLtJQrDck)p?OM*fk8@g8qj-;9$=-Li#T6OE19Gk0bQk=YLRB9YiVhc ztea#AbP3SHl*D8+i!=+9)Xj#fUNeacfcg8xkpgb>fql~$>u;RZQ)FOZwDfdw46*24 z8ob~8u!BUcx*wM>pNoK!*xCmwetxpI|2xRu5zP!QEc?p;BFNo+`MF&pZhtz%$FHmtvV?v?oUE%i0$w)iS_9gBS1rt+u2OZN8Cu-)!!%lfUhdDmGi zT|C)4$dZ#?=yi=KL%=2rws{T;bpe|y%J@Tij_N2e9gvDYctH3k)26(sb6S_);b4$| zA7}FaAJ1miC1)$XO~1aqhFxh!hLX|m%ZDGwOuQnLvcOBO?DtAOA>S$2!c*@`&#qrz z{KQIPr=LyDKU2Qle?y#PqBz?UH|;*A+jU#4>|0sjy0CzCVT(SmKj6MFAEak-(Yti=ey_s;5=ZL=7dB5-x^i$uNkRFPoUf`iOo0b|k1XA+_vnh}k_+q~ zH0MOg=!WQsNZ(rG>~uSU>+F}EUyl9RELrt{@B4Yn?{nVo4i^@@b}+4^Xj3rbgD<3_>xi)1Wf}Xo{ue#jvw+X-WLo`= ng4EY#4!cr4jT*MSEC0uuY__T~K;A!@0SG)@{an^LB{Ts5cM;$` diff --git a/src/main/resources/assets/cosmere/textures/item/polestone_chip.png b/src/main/resources/assets/cosmere/textures/item/polestone_chip.png index 167b15ad95a37e4b336b489055e169468de12fb8..60e031bd27684ce59fb71553d77217f883628adc 100644 GIT binary patch delta 1088 zcma))Z%Ce17{=e%*Vbmv*>rowWNfb%<#xAo&U5}+uxSQul}7B7mA=pU^FYw5IYKIF zXe|~saz11cZ4xqyVVOQ|Agk5XSu1JGd;3ka_ewiRi-G|fp8t=bxg$hO!c+T{h0@9q{9)@R)Eq{fD0%Bg#-qJBqm4% zzAWN&VQr0xEHzOmz;eleNlHPINP%<+TWob8HA|WcCkk?*b4)r7jxYg;(*QK`UmUR} zu%Y9`#p$Rl9$J>oS%YQBEri-QponS+Idecl6)C11cfo(sWcBs=f?PnNkW&f7QU(N3 z4w6d;T1guas-&{eG&rAhqY8iNAg)j;+BTLqcQmP2G#3$5D zf{lD&sgwmQtVPJ02%|WC&ys7>zT&-t9OYUC4h$9oh*~5jbp#PLgdwYm=MmQz-I5K9gbM;thz20{~Q5L`vX1jY;CXlM*D>&K&= z^<5%ELx!yj%+e6sL^c^0V=w-{741Kfy=JwOPfqlu_lzFDFP%!IE4DS(?~wbadW_jyk_Ixi?_eKez4-w^H1;FcmJi@+;`i5`Eas(a(w*LubU3Q=*(075z* zHhrt&T|JHM4X1~Xc5ErCDaomHexh~a^2DhEQrZ6N4Rdq-pJl7+cAot5!kX0gcN{O@ z=w_z|PL=e&bnw_4-KndsuRk|5KfiqQsx!O09y@$2?{l0xbYL@=UU=k>%IRlz&b&I1 u9((JxmVuvse5f(qGP|ib|IfmiE7#3F+1`Be-nG3cf41G-)cAfwzWZMu>t`|m delta 526 zcmdng&HTTKd4dJg0f~)PGR#~?Ax1`4h6YwfmXi~hm65r<%mFF}Mu}#|#+H`4NyZlD zx&{U&#=4f4X@g2s%%#I?h`vp_E zl`}WBE>?8qicge2sr*AMs=Ja^Ir{s`KO?s+2Pkt zt@ohUZDx|Jg}VrGv*59c9?RHJ$GelxI^i?Uam_RBJ)tZp=td|A|*W2*Ih z8`l%QOHciKo^?749NWz*l*^H3cu>X3OMI!xHWTFO$w9 z%kGSSzd1H<{~om<=4rc%8?(G-tkqq!xbuf!SH9LxvzW^yvTozKMhV^;?vPK@5*a@J bx4&$@Y;|s&`#0s!3_#%N>gTe~DWM4f>5av& diff --git a/src/main/resources/assets/cosmere/textures/item/polestone_mark.png b/src/main/resources/assets/cosmere/textures/item/polestone_mark.png index 529e24eb4087c722a46201a8472fe7ece925a3c9..0ad4cfd16f9fc77767e9f613327cdfcb41f20509 100644 GIT binary patch delta 1100 zcma))ZAf2L9LN6;;&Ql5ZTt&l=$%^APMzm_juojm%SM`;^`Z=S&OPUbRK|*W5nI-r zvRV`A1`T3uI?5tT+kH{G=9~{0)F`1Om}VoAVv|kQ!=R#$gJ3Va?|$6x`SSaIzQ5kC z^!R~vpGZwte_U0R&LJ%jRZ+i+MQ!QQYo^!I&7~yNeh?T4sImx1LY2v4jXJ#9S=5#hR2#ObvD$Y9@dQ z-NHgj1CVbFgeC|PjFR_VmB!EHe3#uP%z5qP*DI`9YEZS9lW89S4z24*Qz2G3^(79t802PE9_*{nA5*t8eKp8SV+FKwyd}c~1Ob#GbHrT@(VSNi4|_u{rp1A4*@}<@DV?cC4!GlLRKP_j zsEtusDzAiM6;cB@M;I_i!Ragonh^n!HC#9vO@-0ZC=+Aam-eW!K4;P$To3?eTsztt zml6h4F=Q+Wu6EewXW~hJwCDd_=#lZvHHWRnZjV>S+moGNK3p@ANF+-e>S|iV!I|iu zZBx~Wna=!My33Qz`}PlPY+Wciu;aw1S4zgNTRi+{S!!T^*V5^&_jc!Q+;`i|ySlx0 zuIOa_$XnAhZ?qPi`TF!Hi$|7D{Ly+ma*C-?Xe7@(0fM%#VI{ z?w9lZ-xa_7)yj@U=l4Gi9-psjpIvumGq`)O<@3q6@7T4FnB8z`_bYqm%U>dX6-(KZ zGfzJC=!FX_+n@O6@x`RKTK|r|HE+wCKg^c){MBt$Vr8lGN1u6JFRY)8<`eE~*xFe4 JQSHvX{{kS}a3}x( delta 539 zcmdnj&D___Ji&tLfW$^C8D>tS5F;ZiLqjW*$??o8NW32AKot{H6XR5~G$Y-#6mtVz z%On#+-9)2AL)}zELlg5PLxW^9OOwfrELxKzg;X~Cvm9pHyox=6Y4ba-wM?6z^A@pe z{wQ>fZL_dc3fJVrDvvjRQU!{?*0{m9nct$HdGjmlooyb(SfQj)T;f_*VpX1znrEwI zWME{ZYhb2p2zR-ewt>-PxkK8U#SUjM)|Ur|RWdLz%6PgshFJ6-oviPF*n#0_y}O5+ z#7xO1rkM^43OaUGvea;}%sLQ$KtOEL%ZYW|Hccr^joA^KOiu5b{bK8qNI_-Ab`90N z+X4&^7Jq;K{oUTvb1y_~?z$GXsPXHc2VX8QK6vnCv4}R8NJGWG`Ug)xue_zuoWJfo zW5@ma>Bnw8J-XJ;%3AEFqR_tZKP;SF~Z`x+x05*^3z)uI4F)I_-%_ z+B$n_?S82g&PT3Mi?`l9@byqt^O|zGf8K45A{tA)f)?jToN9RZSYUVd^3VAb69azo z-3hGG%t+FRn$tm!}0#XP1|0)d7oJRcK$nt udl@VVHcM8qBwZ*snWDdjgSn&re{a0d=SGdnU)!V@fWXt$&t;ucLK6UBsM`zx From 55e0d28b7f7e9de79a80c105e91a873b5ec9bf3b Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 14:33:43 +1200 Subject: [PATCH 0262/1090] Update ore_block_deepslate.png --- .../textures/block/ore_block_deepslate.png | Bin 3829 -> 240 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block_deepslate.png b/src/main/resources/assets/cosmere/textures/block/ore_block_deepslate.png index 03fb4d7ba9d013e4d92051d9020e9cbcad21c4ab..b07b09d506ce3f399084b87a44347aeb020aaabe 100644 GIT binary patch delta 212 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 Date: Mon, 13 Jun 2022 18:07:18 +1200 Subject: [PATCH 0263/1090] spikes rotated in gui, but pointy away in hand --- src/main/generated/.cache/cache | 38 +++++++++--------- .../cosmere/models/item/aluminum_spike.json | 2 +- .../cosmere/models/item/atium_spike.json | 2 +- .../cosmere/models/item/bendalloy_spike.json | 2 +- .../cosmere/models/item/brass_spike.json | 2 +- .../cosmere/models/item/bronze_spike.json | 2 +- .../cosmere/models/item/cadmium_spike.json | 2 +- .../cosmere/models/item/chromium_spike.json | 2 +- .../cosmere/models/item/copper_spike.json | 2 +- .../cosmere/models/item/duralumin_spike.json | 2 +- .../cosmere/models/item/electrum_spike.json | 2 +- .../cosmere/models/item/gold_spike.json | 2 +- .../cosmere/models/item/iron_spike.json | 2 +- .../cosmere/models/item/lerasatium_spike.json | 2 +- .../cosmere/models/item/lerasium_spike.json | 2 +- .../cosmere/models/item/nicrosil_spike.json | 2 +- .../cosmere/models/item/pewter_spike.json | 2 +- .../cosmere/models/item/steel_spike.json | 2 +- .../assets/cosmere/models/item/tin_spike.json | 2 +- .../cosmere/models/item/zinc_spike.json | 2 +- .../cosmere/datagen/items/ItemModelsGen.java | 3 ++ .../assets/cosmere/models/item/spike.json | 8 ++++ .../cosmere/textures/item/metal_spike.png | Bin 49848 -> 3169 bytes 23 files changed, 49 insertions(+), 38 deletions(-) create mode 100644 src/main/resources/assets/cosmere/models/item/spike.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index efe3be441..6bedad89d 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -52,7 +52,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/aluminum_bra b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/aluminum_ore.json 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/aluminum_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/aluminum_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/aluminum_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/aluminum_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/amethyst_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/amethyst_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/amethyst_mark.json @@ -62,7 +62,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/atium_bracel 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/atium_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/atium_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/atium_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/atium_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/atium_spike.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bands_of_mourning.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bendalloy_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bendalloy_block.json @@ -71,7 +71,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bendalloy_br 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/bendalloy_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/bendalloy_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/bendalloy_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/bendalloy_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/bendalloy_spike.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/brass_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/brass_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/brass_bracelet_metalmind.json @@ -79,7 +79,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/brass_bracel 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/brass_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/brass_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/brass_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/brass_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/brass_spike.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bronze_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bronze_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bronze_bracelet_metalmind.json @@ -87,7 +87,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bronze_brace 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/bronze_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/bronze_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/bronze_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/bronze_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/bronze_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/cadmium_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/cadmium_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/cadmium_ingot.json @@ -96,7 +96,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/cadmium_brac b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/cadmium_ore.json 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/cadmium_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/cadmium_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/cadmium_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/cadmium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/chromium_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/chromium_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/chromium_ingot.json @@ -105,7 +105,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/chromium_bra b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/chromium_ore.json 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/chromium_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/chromium_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/chromium_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/chromium_spike.json 987615c6cf471aeb9c0c98cbe0bf0dc2dfdb8e32 assets/cosmere/models/item/coin_pouch.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/copper_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_bracelet_metalmind.json @@ -114,7 +114,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_brace 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/copper_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/copper_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/copper_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/copper_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/diamond_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/diamond_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/diamond_mark.json @@ -125,7 +125,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/duralumin_br 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/duralumin_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/duralumin_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/duralumin_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/duralumin_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/duralumin_spike.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/electrum_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/electrum_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bracelet_metalmind.json @@ -133,7 +133,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bra 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/electrum_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/electrum_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/electrum_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/electrum_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/emerald_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/emerald_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/emerald_mark.json @@ -145,7 +145,7 @@ e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/electrum_spi c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/gold_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/gold_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/gold_spike.json f9c2f8e60d6f55d0b91bf2558b3d7f6a84f3b9b5 assets/cosmere/models/item/guide.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/harmonium_ingot.json @@ -156,7 +156,7 @@ a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_bl c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/iron_bracelet_metalmind.json 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/iron_necklace_metalmind.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/iron_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/iron_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/iron_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lead_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lead_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lead_nugget.json @@ -165,11 +165,11 @@ b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/lead_ore.jso a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasatium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasatium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasatium_nugget.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/lerasatium_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/lerasatium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasium_nugget.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/lerasium_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/lerasium_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/malatium_block.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/malatium_ingot.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/malatium_nugget.json @@ -187,7 +187,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bra 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/nicrosil_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nicrosil_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/nicrosil_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/nicrosil_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/nicrosil_spike.json 564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/pewter_blend.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/pewter_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/pewter_bracelet_metalmind.json @@ -195,7 +195,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/pewter_brace 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/pewter_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/pewter_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/pewter_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/pewter_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/pewter_spike.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_aluminum_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_cadmium_ore.json e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_chromium_ore.json @@ -225,7 +225,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/steel_bracel 10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/steel_necklace_metalmind.json 9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/steel_nugget.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/steel_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/steel_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/steel_spike.json a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/tin_block.json c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/tin_bracelet_metalmind.json 695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/tin_ingot.json @@ -234,7 +234,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/tin_bracelet b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/tin_ore.json 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/tin_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/tin_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/tin_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/tin_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/topaz_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/topaz_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/topaz_mark.json @@ -246,7 +246,7 @@ c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracele b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/zinc_ore.json 0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/zinc_ore_deepslate.json b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/zinc_ring_metalmind.json -e34436395cae4a9d60a64e0c5c69d9dc45687c63 assets/cosmere/models/item/zinc_spike.json +da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/zinc_spike.json 320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/zircon_broam.json 8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/zircon_chip.json 2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/zircon_mark.json diff --git a/src/main/generated/assets/cosmere/models/item/aluminum_spike.json b/src/main/generated/assets/cosmere/models/item/aluminum_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/aluminum_spike.json +++ b/src/main/generated/assets/cosmere/models/item/aluminum_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/atium_spike.json b/src/main/generated/assets/cosmere/models/item/atium_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/atium_spike.json +++ b/src/main/generated/assets/cosmere/models/item/atium_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/bendalloy_spike.json b/src/main/generated/assets/cosmere/models/item/bendalloy_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/bendalloy_spike.json +++ b/src/main/generated/assets/cosmere/models/item/bendalloy_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/brass_spike.json b/src/main/generated/assets/cosmere/models/item/brass_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/brass_spike.json +++ b/src/main/generated/assets/cosmere/models/item/brass_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/bronze_spike.json b/src/main/generated/assets/cosmere/models/item/bronze_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/bronze_spike.json +++ b/src/main/generated/assets/cosmere/models/item/bronze_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/cadmium_spike.json b/src/main/generated/assets/cosmere/models/item/cadmium_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/cadmium_spike.json +++ b/src/main/generated/assets/cosmere/models/item/cadmium_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/chromium_spike.json b/src/main/generated/assets/cosmere/models/item/chromium_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/chromium_spike.json +++ b/src/main/generated/assets/cosmere/models/item/chromium_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/copper_spike.json b/src/main/generated/assets/cosmere/models/item/copper_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/copper_spike.json +++ b/src/main/generated/assets/cosmere/models/item/copper_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/duralumin_spike.json b/src/main/generated/assets/cosmere/models/item/duralumin_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/duralumin_spike.json +++ b/src/main/generated/assets/cosmere/models/item/duralumin_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/electrum_spike.json b/src/main/generated/assets/cosmere/models/item/electrum_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/electrum_spike.json +++ b/src/main/generated/assets/cosmere/models/item/electrum_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/gold_spike.json b/src/main/generated/assets/cosmere/models/item/gold_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/gold_spike.json +++ b/src/main/generated/assets/cosmere/models/item/gold_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/iron_spike.json b/src/main/generated/assets/cosmere/models/item/iron_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/iron_spike.json +++ b/src/main/generated/assets/cosmere/models/item/iron_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json b/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json +++ b/src/main/generated/assets/cosmere/models/item/lerasatium_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/lerasium_spike.json b/src/main/generated/assets/cosmere/models/item/lerasium_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/lerasium_spike.json +++ b/src/main/generated/assets/cosmere/models/item/lerasium_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/nicrosil_spike.json b/src/main/generated/assets/cosmere/models/item/nicrosil_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/nicrosil_spike.json +++ b/src/main/generated/assets/cosmere/models/item/nicrosil_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/pewter_spike.json b/src/main/generated/assets/cosmere/models/item/pewter_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/pewter_spike.json +++ b/src/main/generated/assets/cosmere/models/item/pewter_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/steel_spike.json b/src/main/generated/assets/cosmere/models/item/steel_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/steel_spike.json +++ b/src/main/generated/assets/cosmere/models/item/steel_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/tin_spike.json b/src/main/generated/assets/cosmere/models/item/tin_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/tin_spike.json +++ b/src/main/generated/assets/cosmere/models/item/tin_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/generated/assets/cosmere/models/item/zinc_spike.json b/src/main/generated/assets/cosmere/models/item/zinc_spike.json index 476db69e3..536fdef7e 100644 --- a/src/main/generated/assets/cosmere/models/item/zinc_spike.json +++ b/src/main/generated/assets/cosmere/models/item/zinc_spike.json @@ -1,5 +1,5 @@ { - "parent": "minecraft:item/generated", + "parent": "cosmere:item/spike", "textures": { "layer0": "cosmere:item/metal_spike" } diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 5ee22e211..0c6b95929 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -77,6 +77,9 @@ else if (item instanceof NecklaceMetalmindItem) else if (item instanceof HemalurgicSpikeItem) { simpleItem(path, "metal_spike"); + this.getBuilder(path) + .parent(new ModelFile.UncheckedModelFile("cosmere:item/spike")) + .texture("layer0", modLoc("item/" + "metal_spike")); continue; } else if (item instanceof ShardbladeItem) diff --git a/src/main/resources/assets/cosmere/models/item/spike.json b/src/main/resources/assets/cosmere/models/item/spike.json new file mode 100644 index 000000000..a421b3545 --- /dev/null +++ b/src/main/resources/assets/cosmere/models/item/spike.json @@ -0,0 +1,8 @@ +{ + "parent": "minecraft:item/generated", + "display": { + "gui": { + "rotation": [0, 0, 180] + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/cosmere/textures/item/metal_spike.png b/src/main/resources/assets/cosmere/textures/item/metal_spike.png index a474a4c1d0a91e7fa3eda8b5a46bd59757a81e98..7f110f2daec0dc6361641eb8ed9a8b00dc5c6d9b 100644 GIT binary patch delta 3154 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�mw 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 From b3b877a98d237139ac2c3d76c59dd052401f3100 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 18:44:18 +1200 Subject: [PATCH 0264/1090] stop chips and marks being usable for full gem recipes --- src/main/generated/.cache/cache | 20 +++++++++---------- .../data/forge/tags/items/gems/amethyst.json | 4 +--- .../data/forge/tags/items/gems/diamond.json | 4 +--- .../data/forge/tags/items/gems/emerald.json | 4 +--- .../data/forge/tags/items/gems/garnet.json | 4 +--- .../data/forge/tags/items/gems/heliodor.json | 4 +--- .../data/forge/tags/items/gems/ruby.json | 4 +--- .../data/forge/tags/items/gems/sapphire.json | 4 +--- .../forge/tags/items/gems/smokestone.json | 4 +--- .../data/forge/tags/items/gems/topaz.json | 4 +--- .../data/forge/tags/items/gems/zircon.json | 4 +--- .../cosmere/datagen/items/ItemTagsGen.java | 2 +- 12 files changed, 21 insertions(+), 41 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index 6bedad89d..40ab1db30 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -868,16 +868,16 @@ dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/blocks/storage_blocks/s 2186f095063727aa76a726cb4f4203e9c01f0d53 data/forge/tags/blocks/storage_blocks/tin.json ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/blocks/storage_blocks/zinc.json 519be0abe6d74794730327106eee397ce85a1f3f data/forge/tags/items/gems.json -fbe7b971352a8c7b774b0f60283e44682341d013 data/forge/tags/items/gems/amethyst.json -1e4fc7207d7240a184909b620f49c07458979b1c data/forge/tags/items/gems/diamond.json -89bc5e5ed8b87c7bae80e95548288730004f9c3e data/forge/tags/items/gems/emerald.json -5c98eead69c1e69d93bbf543a6347d45d7704479 data/forge/tags/items/gems/garnet.json -b72a38c5578ecaed94990359c28e2667bedb1b4d data/forge/tags/items/gems/heliodor.json -e5e5b55aa8694f98f8688cd2d2f2e6142bea1cf3 data/forge/tags/items/gems/ruby.json -3f40d895cf00a15049349bc9012dfc557c15e067 data/forge/tags/items/gems/sapphire.json -99043e2828836a2de58fcd82bc997836f8d748cd data/forge/tags/items/gems/smokestone.json -a71df79cb107e3e476a2347b7c3a97d48edca537 data/forge/tags/items/gems/topaz.json -071d6ebbe4248609cbd8a35e2d8de33cf5e4765e data/forge/tags/items/gems/zircon.json +45ccfabcb10301915017bc9d8695f793aeffc323 data/forge/tags/items/gems/amethyst.json +803890e40163bd394484bebe644749fc212bfb20 data/forge/tags/items/gems/diamond.json +11b922ea5aa85cdfd27eea32c7cd7cc43a9f2488 data/forge/tags/items/gems/emerald.json +c6f26a3b01aeff54ef9444220120ada3e578b51d data/forge/tags/items/gems/garnet.json +baa710aaccbbb721085615c8c0a84ab4435a0162 data/forge/tags/items/gems/heliodor.json +5ffa2226dd06d1f12c8690921f43ed1f6ccd178f data/forge/tags/items/gems/ruby.json +b0fa252e4fdf6e271c1619e25215be9df08bc1d9 data/forge/tags/items/gems/sapphire.json +1f933ade5a56949521e792a541934700eb5e3f35 data/forge/tags/items/gems/smokestone.json +ebecf5ffa0bdba4d423f804951158631740bf6f6 data/forge/tags/items/gems/topaz.json +8124d3e7323f748175090c8eca6dc05f68753add data/forge/tags/items/gems/zircon.json 923618653a5da1a3e7c61e5d4f870bb89e525d60 data/forge/tags/items/ingots.json e1e14cdbd80f6a0fed198cbf570e0f55647ba5bc data/forge/tags/items/ingots/aluminum.json 955c5a6dda0e6ef7a1125f926cbeddcf34b637c2 data/forge/tags/items/ingots/atium.json diff --git a/src/main/generated/data/forge/tags/items/gems/amethyst.json b/src/main/generated/data/forge/tags/items/gems/amethyst.json index 3acf9acfa..29128ded6 100644 --- a/src/main/generated/data/forge/tags/items/gems/amethyst.json +++ b/src/main/generated/data/forge/tags/items/gems/amethyst.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:amethyst_broam", - "cosmere:amethyst_mark", - "cosmere:amethyst_chip" + "cosmere:amethyst_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/diamond.json b/src/main/generated/data/forge/tags/items/gems/diamond.json index a7c6ec55c..5eaa0aa52 100644 --- a/src/main/generated/data/forge/tags/items/gems/diamond.json +++ b/src/main/generated/data/forge/tags/items/gems/diamond.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:diamond_broam", - "cosmere:diamond_mark", - "cosmere:diamond_chip" + "cosmere:diamond_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/emerald.json b/src/main/generated/data/forge/tags/items/gems/emerald.json index 30f4cbd46..5642d1502 100644 --- a/src/main/generated/data/forge/tags/items/gems/emerald.json +++ b/src/main/generated/data/forge/tags/items/gems/emerald.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:emerald_broam", - "cosmere:emerald_mark", - "cosmere:emerald_chip" + "cosmere:emerald_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/garnet.json b/src/main/generated/data/forge/tags/items/gems/garnet.json index e73052067..b3fd5abfa 100644 --- a/src/main/generated/data/forge/tags/items/gems/garnet.json +++ b/src/main/generated/data/forge/tags/items/gems/garnet.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:garnet_broam", - "cosmere:garnet_mark", - "cosmere:garnet_chip" + "cosmere:garnet_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/heliodor.json b/src/main/generated/data/forge/tags/items/gems/heliodor.json index 4900c014b..63da03842 100644 --- a/src/main/generated/data/forge/tags/items/gems/heliodor.json +++ b/src/main/generated/data/forge/tags/items/gems/heliodor.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:heliodor_broam", - "cosmere:heliodor_mark", - "cosmere:heliodor_chip" + "cosmere:heliodor_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/ruby.json b/src/main/generated/data/forge/tags/items/gems/ruby.json index 9b41a87aa..a037c1862 100644 --- a/src/main/generated/data/forge/tags/items/gems/ruby.json +++ b/src/main/generated/data/forge/tags/items/gems/ruby.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:ruby_broam", - "cosmere:ruby_mark", - "cosmere:ruby_chip" + "cosmere:ruby_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/sapphire.json b/src/main/generated/data/forge/tags/items/gems/sapphire.json index ef762ffb6..15feb68e4 100644 --- a/src/main/generated/data/forge/tags/items/gems/sapphire.json +++ b/src/main/generated/data/forge/tags/items/gems/sapphire.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:sapphire_broam", - "cosmere:sapphire_mark", - "cosmere:sapphire_chip" + "cosmere:sapphire_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/smokestone.json b/src/main/generated/data/forge/tags/items/gems/smokestone.json index a2452cc08..a171841bf 100644 --- a/src/main/generated/data/forge/tags/items/gems/smokestone.json +++ b/src/main/generated/data/forge/tags/items/gems/smokestone.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:smokestone_broam", - "cosmere:smokestone_mark", - "cosmere:smokestone_chip" + "cosmere:smokestone_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/topaz.json b/src/main/generated/data/forge/tags/items/gems/topaz.json index 136201337..7cd4e3e18 100644 --- a/src/main/generated/data/forge/tags/items/gems/topaz.json +++ b/src/main/generated/data/forge/tags/items/gems/topaz.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:topaz_broam", - "cosmere:topaz_mark", - "cosmere:topaz_chip" + "cosmere:topaz_broam" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/items/gems/zircon.json b/src/main/generated/data/forge/tags/items/gems/zircon.json index 7695c6060..dbae28fac 100644 --- a/src/main/generated/data/forge/tags/items/gems/zircon.json +++ b/src/main/generated/data/forge/tags/items/gems/zircon.json @@ -1,8 +1,6 @@ { "replace": false, "values": [ - "cosmere:zircon_broam", - "cosmere:zircon_mark", - "cosmere:zircon_chip" + "cosmere:zircon_broam" ] } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java index c7bd9e986..57111263f 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemTagsGen.java @@ -102,8 +102,8 @@ protected void addTags() { final Item polestoneItem = polestone.getPolestoneItem(size); add(Tags.Items.GEMS, polestoneItem); - add(TagsRegistry.Items.GEM_TAGS.get(polestone), polestoneItem); } + add(TagsRegistry.Items.GEM_TAGS.get(polestone), polestone.getPolestoneItem(Roshar.GemSize.BROAM)); } } From f2c3c788bc1bae13175c6d40852c5abb36b2a99a Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 18:59:42 +1200 Subject: [PATCH 0265/1090] double metalmind size --- .../java/leaf/cosmere/charge/IChargeable.java | 3 +- .../cosmere/datagen/items/ItemModelsGen.java | 5 +- .../items/curio/BraceletMetalmindItem.java | 66 ----------------- .../items/curio/HemalurgicSpikeItem.java | 74 ------------------- 4 files changed, 4 insertions(+), 144 deletions(-) diff --git a/src/main/java/leaf/cosmere/charge/IChargeable.java b/src/main/java/leaf/cosmere/charge/IChargeable.java index 2b2b40cb9..97d0dfde6 100644 --- a/src/main/java/leaf/cosmere/charge/IChargeable.java +++ b/src/main/java/leaf/cosmere/charge/IChargeable.java @@ -27,7 +27,8 @@ public interface IChargeable { default int getMaxCharge(ItemStack itemStack) { - return Mth.floor(9000 * getMaxChargeModifier()); + //todo config max value + return Mth.floor(18000 * getMaxChargeModifier()); } default float getMaxChargeModifier() diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 0c6b95929..7888c70b1 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -76,7 +76,6 @@ else if (item instanceof NecklaceMetalmindItem) } else if (item instanceof HemalurgicSpikeItem) { - simpleItem(path, "metal_spike"); this.getBuilder(path) .parent(new ModelFile.UncheckedModelFile("cosmere:item/spike")) .texture("layer0", modLoc("item/" + "metal_spike")); @@ -91,9 +90,9 @@ else if (item instanceof MetalRawOreItem rawItem) simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); continue; } - else if (item instanceof PolestoneItem) + else if (item instanceof PolestoneItem polestoneItem) { - switch (((PolestoneItem) item).getSize()) + switch (polestoneItem.getSize()) { case BROAM: simpleItem(path, "polestone_broam"); diff --git a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java index 65b6a03cd..ef830882d 100644 --- a/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BraceletMetalmindItem.java @@ -29,76 +29,10 @@ public BraceletMetalmindItem(Metals.MetalType metalType) super(metalType, CosmereItemGroups.METALMINDS); } - private static final ResourceLocation METAL_TEXTURE = new ResourceLocation("cosmere", "textures/block/metal_block.png"); - private Object model; - @Override public float getMaxChargeModifier() { return (5f / 9f); } -/* - @Override - public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) - { - return true; - } - - @Override - public void render(String identifier, int index, PoseStack matrixStack, - MultiBufferSource renderTypeBuffer, int light, LivingEntity livingEntity, - float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, - float netHeadYaw, float headPitch, ItemStack stack) - { - //todo check if needed - // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); - // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); - - if (!(this.model instanceof BraceletModel)) - { - //todo set bracelet position? - this.model = new BraceletModel<>(); - } - - BraceletModel bracelet = (BraceletModel) this.model; - - Optional slotTypePreset = SlotTypePreset.findPreset(identifier); - if (!slotTypePreset.isPresent()) - { - return; - } - - bracelet.renderMode = identifier; - bracelet.renderIndex = index; - - switch (slotTypePreset.get()) - { - case BODY: - case BACK: - case BRACELET: - case HANDS: - case RING: - case BELT: - case CHARM: - case CURIO: - //setup biped model stuff - bracelet.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); - bracelet.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); - //and have it follow body rotations - ICurio.RenderHelper.followBodyRotations(livingEntity, (HumanoidModel) bracelet); - break; - } - - VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, bracelet.renderType(METAL_TEXTURE), false, false); - Color col = getMetalType().getColor(); - bracelet.renderToBuffer(matrixStack, - vertexBuilder, - light, - OverlayTexture.NO_OVERLAY, - col.getRed() / 255f, - col.getGreen() / 255f, - col.getBlue() / 255f, - 1.0F); - }*/ } diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 48b5fdf95..60f8ca3f1 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -378,78 +378,4 @@ public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack sta entity.hurt(SPIKED, 4); } } - /*@Override - public boolean canRender(String identifier, int index, LivingEntity livingEntity, ItemStack stack) - { - return true; - } - - @Override - public void render(String identifier, int index, PoseStack matrixStack, - MultiBufferSource renderTypeBuffer, int light, LivingEntity livingEntity, - float limbSwing, float limbSwingAmount, float partialTicks, float ageInTicks, - float netHeadYaw, float headPitch, ItemStack stack) - { - //todo check if needed - // ICurio.RenderHelper.translateIfSneaking(matrixStack, livingEntity); - // ICurio.RenderHelper.rotateIfSneaking(matrixStack, livingEntity); - - if (!(this.model instanceof SpikeModel)) - { - //todo set spike position? - this.model = new SpikeModel<>(); - } - - SpikeModel spike = (SpikeModel) this.model; - - Optional slotTypePreset = SlotTypePreset.findPreset(identifier); - if (!slotTypePreset.isPresent()) - { - return; - } - - spike.renderMode = identifier; - spike.renderIndex = index; - - switch (slotTypePreset.get()) - { - - case HEAD: - //then set up the custom/non biped model stuff - //this could have been biped I guess, but was a good reference - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.leftEyeSpike); - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.rightEyeSpike); - break; - case NECKLACE: - ICurio.RenderHelper.followHeadRotations(livingEntity, spike.neckSpike); - break; - case BODY: - case BACK: - case BRACELET: - case HANDS: - case RING: - case BELT: - case CHARM: - case CURIO: - //setup biped model stuff - spike.prepareMobModel(livingEntity, limbSwing, limbSwingAmount, partialTicks); - spike.setupAnim(livingEntity, limbSwing, limbSwingAmount, ageInTicks, netHeadYaw, headPitch); - //and have it follow body rotations - ICurio.RenderHelper.followBodyRotations(livingEntity, (HumanoidModel) spike); - break; - } - - - VertexConsumer vertexBuilder = ItemRenderer.getFoilBuffer(renderTypeBuffer, spike.renderType(SPIKE_TEXTURE), false, false); - - Color col = getMetalType().getColor(); - spike.renderToBuffer(matrixStack, - vertexBuilder, - light, - OverlayTexture.NO_OVERLAY, - col.getRed() / 255f, - col.getGreen() / 255f, - col.getBlue() / 255f, - 1.0F); - }*/ } From cd186c39f618c01819203cb92b01046ac7b90b1b Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 20:37:35 +1200 Subject: [PATCH 0266/1090] Move patchouli data gen to compat folder --- src/main/java/leaf/cosmere/datagen/DataGen.java | 2 +- .../datagen/{ => compat}/patchouli/BookStuff.java | 4 ++-- .../{ => compat}/patchouli/PatchouliGen.java | 14 +++++++------- .../patchouli/PatchouliTextFormat.java | 4 ++-- .../patchouli/categories/PatchouliAllomancy.java | 8 ++++---- .../patchouli/categories/PatchouliBasics.java | 6 +++--- .../patchouli/categories/PatchouliFeruchemy.java | 6 +++--- .../patchouli/categories/PatchouliHemalurgy.java | 8 ++++---- 8 files changed, 26 insertions(+), 26 deletions(-) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/BookStuff.java (99%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/PatchouliGen.java (91%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/PatchouliTextFormat.java (93%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/categories/PatchouliAllomancy.java (97%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/categories/PatchouliBasics.java (71%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/categories/PatchouliFeruchemy.java (94%) rename src/main/java/leaf/cosmere/datagen/{ => compat}/patchouli/categories/PatchouliHemalurgy.java (98%) diff --git a/src/main/java/leaf/cosmere/datagen/DataGen.java b/src/main/java/leaf/cosmere/datagen/DataGen.java index d5a25e047..b85fea3c1 100644 --- a/src/main/java/leaf/cosmere/datagen/DataGen.java +++ b/src/main/java/leaf/cosmere/datagen/DataGen.java @@ -17,7 +17,7 @@ import leaf.cosmere.datagen.items.ItemTagsGen; import leaf.cosmere.datagen.language.EngLangGen; import leaf.cosmere.datagen.loottables.LootTableGen; -import leaf.cosmere.datagen.patchouli.PatchouliGen; +import leaf.cosmere.datagen.compat.patchouli.PatchouliGen; import net.minecraft.data.DataGenerator; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.eventbus.api.SubscribeEvent; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java similarity index 99% rename from src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java index 877e06c1c..6ecd72d9e 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java @@ -1,8 +1,8 @@ /* - * File created ~ 14 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli; +package leaf.cosmere.datagen.compat.patchouli; import com.google.gson.JsonArray; import com.google.gson.JsonElement; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java similarity index 91% rename from src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java index 2dcacf4b2..406f515a6 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java @@ -1,16 +1,16 @@ /* - * File created ~ 13 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli; +package leaf.cosmere.datagen.compat.patchouli; import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import leaf.cosmere.datagen.patchouli.categories.PatchouliAllomancy; -import leaf.cosmere.datagen.patchouli.categories.PatchouliBasics; -import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; -import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; +import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliAllomancy; +import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliFeruchemy; +import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliHemalurgy; +import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliBasics; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.data.DataGenerator; @@ -30,7 +30,7 @@ public class PatchouliGen implements DataProvider { private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - public static final String GUIDE_NAME = "guide"; + private static final String GUIDE_NAME = "guide"; private final DataGenerator generator; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java similarity index 93% rename from src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java index 620f37d95..93bc993bf 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java @@ -1,8 +1,8 @@ /* - * File created ~ 14 - 5 - 2022 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli; +package leaf.cosmere.datagen.compat.patchouli; import java.util.Locale; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java similarity index 97% rename from src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java index 28e0d5199..9875a19b1 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java @@ -1,12 +1,12 @@ /* - * File created ~ 14 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli.categories; +package leaf.cosmere.datagen.compat.patchouli.categories; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.patchouli.BookStuff; -import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; +import leaf.cosmere.datagen.compat.patchouli.PatchouliTextFormat; +import leaf.cosmere.datagen.compat.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.utils.helpers.StringHelper; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java similarity index 71% rename from src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java index a407de7cd..a80206419 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java @@ -1,10 +1,10 @@ /* - * File created ~ 14 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli.categories; +package leaf.cosmere.datagen.compat.patchouli.categories; -import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.compat.patchouli.BookStuff; import java.util.List; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java similarity index 94% rename from src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java index 66de9a317..642061d5a 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java @@ -1,12 +1,12 @@ /* - * File created ~ 14 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli.categories; +package leaf.cosmere.datagen.compat.patchouli.categories; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.compat.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import net.minecraftforge.registries.RegistryObject; diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java similarity index 98% rename from src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java rename to src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java index be02e3b5b..a142d42df 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java +++ b/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java @@ -1,12 +1,12 @@ /* - * File created ~ 14 - 7 - 2021 ~ Leaf + * File created ~ 13 - 6 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.patchouli.categories; +package leaf.cosmere.datagen.compat.patchouli.categories; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.patchouli.BookStuff; -import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; +import leaf.cosmere.datagen.compat.patchouli.BookStuff; +import leaf.cosmere.datagen.compat.patchouli.PatchouliTextFormat; import java.util.ArrayList; import java.util.List; From 385a750973af5b3ad1fe97333ee5f86437939cdd Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 20:48:54 +1200 Subject: [PATCH 0267/1090] copper, tin, chromium spikes in chests properly invested --- .../leaf/cosmere/loot/InvestSpikeLootFunction.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java index 8d98ba9df..866a238d0 100644 --- a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -73,6 +73,17 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) item.Invest(stack, spikeMetalType, strengthLevel, UUID.randomUUID()); break; + case TIN: + case COPPER: + { + item.Invest(stack,spikeMetalType, strengthLevel / 10,UUID.randomUUID() ); + } + break; + case CHROMIUM: + { + item.Invest(stack,spikeMetalType, strengthLevel * ( 1 + Math.random()),UUID.randomUUID() ); + } + break; //steals allomantic abilities case STEEL: case BRONZE: From a53642544fd91581e54d5329b9132e73281d91f0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 20:52:13 +1200 Subject: [PATCH 0268/1090] stop nicrosilminds from loot chests being filled --- .../java/leaf/cosmere/loot/InvestMetalmindLootFunction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java index 0985aba76..b07366a13 100644 --- a/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestMetalmindLootFunction.java @@ -44,7 +44,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) MetalmindItem item = (MetalmindItem) stack.getItem(); final Metals.MetalType metalType = item.getMetalType(); - if (!metalType.hasFeruchemicalEffect()) + if (!metalType.hasFeruchemicalEffect() || metalType == Metals.MetalType.NICROSIL) { return stack; } From 6b739d57e0264c14010354f0447e4c71c98e97a0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 13 Jun 2022 20:53:42 +1200 Subject: [PATCH 0269/1090] update changelog and bump version --- Changelog.md | 5 ++++- gradle.properties | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Changelog.md b/Changelog.md index 8764896c4..58d398eb7 100644 --- a/Changelog.md +++ b/Changelog.md @@ -2,7 +2,10 @@ The Cosmere Project - For 1.16 Minecraft B47 - +New textures! +Metalminds now able to be filled twice as much +Copper, tin and chromium spikes found in loot chests properly invested +stop nicrosilminds from loot chests being filled B46 diff --git a/gradle.properties b/gradle.properties index 81386e533..ccde9e65c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere -build_number=47 +build_number=48 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 7655cf90e1f70fc610e08016d4ef4be6f00c342f Mon Sep 17 00:00:00 2001 From: Luke13234 Date: Mon, 13 Jun 2022 23:30:15 -0400 Subject: [PATCH 0270/1090] Allomancy Patchouli Changes v1 Changes to all of the Allomancy entries in the current Ars Arcanum. Also a few mistakes in Hemalurgy that I fixed. --- src/main/generated/.cache/cache | 42 ++-- .../guide/en_us/categories/allomancy.json | 2 +- .../entries/allomancy/allomancy_basics.json | 7 +- .../allomancy/allomantic_aluminum.json | 6 +- .../entries/allomancy/allomantic_atium.json | 6 +- .../allomancy/allomantic_bendalloy.json | 6 +- .../entries/allomancy/allomantic_brass.json | 6 +- .../entries/allomancy/allomantic_bronze.json | 6 +- .../entries/allomancy/allomantic_cadmium.json | 6 +- .../allomancy/allomantic_chromium.json | 6 +- .../entries/allomancy/allomantic_copper.json | 6 +- .../allomancy/allomantic_duralumin.json | 6 +- .../allomancy/allomantic_electrum.json | 4 +- .../entries/allomancy/allomantic_gold.json | 6 +- .../entries/allomancy/allomantic_iron.json | 6 +- .../allomancy/allomantic_nicrosil.json | 6 +- .../entries/allomancy/allomantic_pewter.json | 6 +- .../entries/allomancy/allomantic_steel.json | 9 +- .../entries/allomancy/allomantic_tin.json | 6 +- .../entries/allomancy/allomantic_zinc.json | 6 +- .../entries/hemalurgy/hemalurgic_copper.json | 2 +- .../entries/hemalurgy/hemalurgic_gold.json | 2 +- .../categories/PatchouliAllomancy.java | 182 +++++++++--------- .../categories/PatchouliHemalurgy.java | 4 +- 24 files changed, 141 insertions(+), 203 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index efe3be441..a33237488 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -546,27 +546,27 @@ fce8cb6a729d5be9268ffb478049fdc70de504b2 data/cosmere/loot_tables/blocks/tin_ore 93d9441ed0218c63d7f39970762e664e3d39a754 data/cosmere/loot_tables/blocks/zinc_block.json cefe179cd977a02ea0509418148726158976a815 data/cosmere/loot_tables/blocks/zinc_ore.json 344624ccff5d30da8bb1a30c932f384f656ca7f4 data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json -3def7d8a2b222ddc6634b33787c2fe114d80d9e2 data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +15e05cdf693b30c864942813ad4385beeaff1468 data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json e860cb608a0be02ccdf76119bbe5043df64f14af data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json 4e70e0639abea89d041c957efb07ab7b2c443a47 data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json -2d7a5bbaef8038b0c677d166e8473684486443fe data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json -1d37aa4bceb0a1d8be3bb22e596da7af47c2f424 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json -0453e677dc19bca610c4b3856c5a55a1c207397f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json -db3f16ff2947f1e87fb6a938e9af541c1496547b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json -822fab5ce546238a87788f78499407f0da3b793d data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json -1ac3cb7e27d05253b803ca97abeaf82b9ae47a8f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json -e1a282c84b0eeb9dc752227d4cd0a27d4b02d88d data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json -26f7b61ec844f14bdfa6e989c6b135ecce99e6ea data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json -c28a035875aa1c75306521f7bf6c441059076839 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json -ec07f85c8982c5979e404624814da27e7d2850d7 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json -777cee6844c3ca2b6c45e9cd306bc38936abc392 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json -d319c72496c0c7e465d2450abed06b554f4c8953 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json -c1495e6848497f5fd56fcc9c1e6c8d02b21d0657 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json -4ac821950f3eeb9c8e74c00ab72da9e6512f4867 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json -35dd16c2080f710b0cbff57a103f17857f669dcb data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json -6f77dc952f6b775a9a89a8245211b6875fddd459 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json -133be6efafddec850e8a18d003220f307f012867 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json -81029e199312919cfbee0c1ad1950126a3daea25 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +95b74f93137dd1a5c30348f45492aa1e377a049b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +620929e82a8f8a05bec2f4fe50d8ac8d42befb5c data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +33a47a1b885f7775f674166c43ff83c8ded7d75b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +c6ccf54441d2867fefa95d0efcf147cf25592752 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +b10d5f393b964f8ac1a251f21ab3a178ff156c91 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +d4d5dfea5237f4c6cb0d49b699898624b1df1ef6 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +ce908ef3b0adb60e8c8a0f6e0ed28c2d953e7fe8 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +adda9c5f37889a807893b89ee684578808d93d01 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +473f26187e3b8fc136da03e516a3a3eebcd2b8bd data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +705105e2e1f26fcdc2e9a423c9d4fcd6c496ebbc data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +e12c5fdd03d8f225a6532122b3dba087d96f48fe data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +f4a518d999ddaabd1d4e983d450f097a4b95dbc8 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +d8f6d274475202875a56bb6fb4db99796dfdd9ad data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +48c102b0677572dbeb015cc847b23aa1f55efc29 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +3c5ad858fab63fe0905e87c867ad0d4fd5674818 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +45bd472f0bb1b97e693accaa13f8dd170b906881 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +33842cca3a971ea5a8cbda783e711a03f3c960d5 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +3bc3fc12664c4cb26478599f4de4a38f1d140389 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json 7876af9c7402b00e12279ff158beef06bc6cecb4 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json b2e1061255022d49a7584e489b3a081a1da3a504 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json 36b802651e32bca64d2f51c8fedb9e216754ea9a data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json @@ -592,10 +592,10 @@ ab5238b5279b880f98ba2d91f2d77c8196c01c1b data/cosmere/patchouli_books/guide/en_u cd531bf2257739b2a16e893137d806101cc89a5e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json a1ad5ed3aa2f1b6abb3c5efe187b2556e3554bac data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json 735ddcb92d879c43c6bb4cf4cfb551da2c5dab00 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json -a7408775f20d2a7f3781a818b74b7b4a6e6a634f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +746e11338acb46e4af1945ea5662a534f8f2db57 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json af160c124a36d64af58beb1d80ce09a79e705034 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json 72505f6620e804b02befadd05c5b9032c102d4af data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json -66286a529566be62dce5ba7e642ecf1aa7809f5f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +12e34f9a7c56ddc7434cdb62cc6a6c88859c32f2 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json 0d54f9e5f284724320dfc5a6e059ba2b86dc30ba data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json 4e1c3d6a8c885dfcf6ec06250ef2f510fcbeea8e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json 9d505c4ee5fe79408d52e9b577fb2d0b14ee7032 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json index a4778df61..39d29b900 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json @@ -1,6 +1,6 @@ { "name": "Allomancy", - "description": "This is the art of consuming a piece of metal related to your power, and then \"$(thing)burning$()\" it for an effect.", + "description": "Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in far greater detail than it\u0027s older counterparts. The art requires consuming a piece of metal, then burning it for an effect.", "icon": "cosmere:pewter_nugget", "sortnum": 1, "secret": false diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json index 78edb36bc..587c67fa7 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json @@ -1,16 +1,15 @@ { "name": "Allomancy Basics", "category": "cosmere:allomancy", - "icon": "cosmere:pewter_nugget", + "icon": "allomancy.icon", "pages": [ { "type": "text", - "text": "If you entered this world with an allomantic ability, you\u0027re called a $(6)misting$().", - "title": "cosmere:pewter_nugget" + "text": "Here is where I shall explain Allomancy, a system of Investiture native to Scadrial. Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in much greater detail than it\u0027s two older counterparts. The art requires consuming a piece of metal, upon which time you can \"$(thing)Burn$()\" it. Those who are genetically gifted with a singular allomantic ability are generally referred to as a \"$(thing)Misting$()\". For someone who has access to all sixteen abilities, they are referred to as a \"$(thing)Mistborn$()\".", + "title": "Allomancy (For Dummies)" }, { "type": "patchouli:crafting", - "text": "Metal vial", "recipe": "cosmere:metal_vial", "recipe2": "" } diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json index cb2c898d8..8738c0533 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who can only burn $(thing)aluminum$() is known as a \"$(thing)Aluminum Gnat$()\" as they gain no discernible effect from burning their metal." - }, - { - "type": "text", - "text": "Aluminum is an internal enhancement metal that, when burned, clears out all the metals inside the allomancer, including itself." + "text": "A misting who can only burn $(thing)aluminum$() is known as a \"$(thing)Aluminum Gnat$()\" as they gain no discernible effect from burning their metal. A mistborn burning aluminum will wipe all their metal reserves, including aluminum." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json index e7585d671..2b64e795d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)atium$() is known as a \"$(thing)Seer$()\"." - }, - { - "type": "text", - "text": "$(#f00)(NYI)$()" + "text": "A misting who burns $(thing)atium$() is known as a \"$(thing)Seer$()\". (The rest of the page is blank...)" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json index 846666ec2..ce74a5877 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)bendalloy$() is known as a \"$(thing)Slider$()\"." - }, - { - "type": "text", - "text": "Bendalloy allows the burner to push on time in a bubble around them, making time pass quickly within the bubble. Expect to see your furnaces finish more quickly or crops grow faster!" + "text": "A misting who burns $(thing)bendalloy$() is known as a \"$(thing)Slider$()\". A slider creates a bubble around them in which everyone moves slower around them." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json index 37b4d03db..97129e573 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)brass$() is known as a \"$(thing)Soother$()\"." - }, - { - "type": "text", - "text": "In allomancy, brass gives the ability to \"soothe\" the emotions of others." + "text": "A misting who burns $(thing)brass$() is known as a \"$(thing)Soother$()\". A creature being manipulated by a soother will act far more pacified, reducing their willingness to engage in combat." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json index 5d0a86afb..09488a9b1 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)bronze$() is known as a \"$(thing)Seeker$()\"." - }, - { - "type": "text", - "text": "When burning bronze, either Misting or Mistborn, the user can feel the uses of allomancy near them." + "text": "A misting who burns $(thing)bronze$() is known as a \"$(thing)Seeker$()\". A seeker burning bronze is able to detect the nearby use of allomancy or feruchemy. A skilled seeker is capable of detecting what specific abilities are being used. Keep in mind that a smoker can neutralise the ability for a seeker to track allomancy or feruchemy." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json index a2bee4c19..6924bc068 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)cadmium$() is known as a \"$(thing)Pulser$()\"." - }, - { - "type": "text", - "text": "Cadmium allows the burner to pull on time in a bubble around them, making time pass slowly within the bubble." + "text": "A misting who burns $(thing)cadmium$() is known as a \"$(thing)Pulser$()\". a pulser creates a bubble around them in which everyone moves faster around them." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json index 8032c4e66..f51d2e268 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)chromium$() is known as a \"$(thing)Leecher$()\"." - }, - { - "type": "text", - "text": "Chromium allows the burner to, with physical contact, deplete the metals in another with an effect similar to that of $(l:cosmere:allomancy/allomantic_aluminum)aluminum$()." + "text": "A misting who burns $(thing)chromium$() is known as a \"$(thing)Leecher$()\". A leecher gazing upon an allomancer can deplete their metal reserves, as if they were burning aluminum themselves." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json index 385ad25ab..d5a88a630 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)copper$() is known as a \"$(thing)Smoker$()\"." - }, - { - "type": "text", - "text": "Copper is an elemental Allomantic metal that allows one to hide Allomancy. A misting or mistborn burning copper generates a \u0027coppercloud\u0027 which hides Allomancy from being detected by Bronze. " + "text": "A misting who burns $(thing)copper$() is known as a \"$(thing)Smoker$()\". A smoker burning copper generates a \u0027coppercloud,\u0027 which hides Allomancy from being detected by Bronze. Although I\u0027ve never witnessed it, I\u0027ve heard that a seeker of considerable strength could pierce a coppercloud. More research is required." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json index 2d6a2c1aa..9bdd4ea01 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who can only burn $(thing)duralumin$() is known as a \"$(thing)Duralumin Gnat$()\" as they gain no discernible effect from burning their metal." - }, - { - "type": "text", - "text": "An allomancer that burns duralumin causes an amazing burst of power from all currently burning metals, draining all of them rapidly." + "text": "A misting who can only burn $(thing)duralumin$() is known as a \"$(thing)Duralumin Gnat$()\" as they gain no discernible effect from burning their metal. The metal reserves of a mistborn burning duralumin will deplete faster, but will have a much more prominent effect." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json index 70fa6691d..aa9e8b645 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json @@ -5,11 +5,11 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)electrum$() is known as a \"$(thing)Oracle$()\"." + "text": "A misting who burns $(thing)electrum$() is known as a \"$(thing)Oracle$()\". (The rest of the page is missing...)" }, { "type": "text", - "text": "$(#f00)(NYI)$()" + "text": "A misting who burns $(thing)electrum$() is known as a \"$(thing)Oracle$()\". (The rest of the page is blank...)" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json index 58fbf8769..539dbaed7 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)gold$() is known as a \"$(thing)Augur$()\"." - }, - { - "type": "text", - "text": "$(#f00)(NYI)$()" + "text": "A misting who burns $(thing)gold$() is known as a \"$(thing)Augur$()\". (The rest of the page is scratched out.)" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json index 1f27d6f18..692fb7f9b 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\"." - }, - { - "type": "text", - "text": "Iron is an Allomantic metal that, when burned, allows the user to Pull on various metal objects around them, pulling any of these objects towards them." + "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\". Ironpulling is affected by the normal laws of physics. If a lurcher were to pull on something that weighs more than them, they\u0027d be pulled towards it. If they pulled on something lighter, the object would move. If both were of similar weight, they\u0027d both move." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json index 3284dcd87..2d08f269e 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)nicrosil$() is known as a \"$(thing)Nicroburst$()\"." - }, - { - "type": "text", - "text": "It allows the burner to, with physical contact with another allomancer, have an effect on them as if they were burning $(l:cosmere:allomancy/allomantic_duralumin)duralumin$() themselves." + "text": "A misting who burns $(thing)nicrosil$() is known as a \"$(thing)Nicroburst$()\". A nicroburst can empower the allomancy of another with physical contact, as if they were burning duralumin themselves." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json index d92246a3c..9a8e0494a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)pewter$() is known as a \"$(thing)Thug$()\"." - }, - { - "type": "text", - "text": "Pewter is an allomantic metal that, when burnt, gives the user extreme strength, resistance and durability. Its uses include combat, moving quickly, surviving attacks and healing oneself." + "text": "A misting who burns $(thing)pewter$() is known as a \"$(thing)Thug$()\". While burning pewter, a pewterarm becomes faster, considerably stronger, and more resistant to punishment." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json index af7f8cb1c..e24b98c62 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json @@ -5,11 +5,16 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)steel$() is known as a \"$(thing)Coinshot$()\"." + "text": "A misting who burns $(thing)steel$() is known as a \"$(thing)Coinshot$()\". Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to push against nearby metal objects. Steelpushing is affected by the laws of physics. If a coinshot were to push on something that weighs more than them, they\u0027d be pushed away. " }, { "type": "text", - "text": "Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to telekinetically push against a metal object." + "text": "If they pushed on something lighter, the object would move. Clever use of Steelpushing can lead to a pseudo flight through use of small metal objects, such as coins or nuggets. Many coinshots generally carry around a pouch of coins, for ease of access." + }, + { + "type": "patchouli:crafting", + "recipe": "cosmere:coin_pouch", + "recipe2": "" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json index 60ef56dd6..e37051166 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)tin$() is known as a \"$(thing)Tineye$()\"." - }, - { - "type": "text", - "text": "In allomancy, tin heightens the senses to super human levels. In this world, burning tin allows the allomancer to see clearly in the dark and detect where sounds are coming from." + "text": "A misting who burns $(thing)tin$() is known as a \"$(thing)Tineye$()\". In allomancy, Tin heightens the senses to super human levels. It allows you to see clearly in the dark, and- (the page appears to be smudged, the letters indecipherable.)" } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json index 52e6f222f..dec1ff554 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json @@ -5,11 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)zinc$() is known as a \"$(thing)Rioter$()\"." - }, - { - "type": "text", - "text": "In allomancy, zinc gives the ability to intensify the emotions of others, an ability called \"rioting\"" + "text": "A misting who burns $(thing)zinc$() is known as a \"$(thing)Rioter$()\". A creature being manipulated by a rioter will act far more aggressive, turning even the most pacified of animals into bloodthirsty beasts." } ], "priority": false, diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json index 112a51723..7b62a28da 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "Copper spikes steal mental fortitude, memory, and intelligence. $(p)As a result, they can be used to increase base XP gain rate. $(p)I wonder what would happen if you were to spike the Ender Dragon... Surely the first kill of such a beast would give a marvelous reward" + "text": "Copper spikes steal mental fortitude, memory, and intelligence. $(p)As a result, they can be used to increase base XP gain rate. $(p)I wonder what would happen if you were to spike the Ender Dragon... Surely the first kill of such a beast would give a marvelous reward." }, { "type": "patchouli:crafting", diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json index 820b19f60..f4ac53c65 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "Gold spikes steal the hybrid feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_gold)Gold$(), $(l:cosmere:feruchemy/feruchemical_electrum)Electrum$(), $(l:cosmere:feruchemy/feruchemical_cadmium)Cadmium$() and $(l:cosmere:feruchemy/feruchemical_bendalloy)Bendalloy$(), the feruchemical attributes keyed to each of these are: $(p)Healing(take damage/regeneration), Determination(extra hearts), Breath(lose O2 outside water/reduce rate of O2 consumption), and Nutrition(Hunger/Saturation)" + "text": "Gold spikes steal the hybrid feruchemical powers: $(p)Feruchemically storing and tapping $(l:cosmere:feruchemy/feruchemical_gold)Gold$(), $(l:cosmere:feruchemy/feruchemical_electrum)Electrum$(), $(l:cosmere:feruchemy/feruchemical_cadmium)Cadmium$() and $(l:cosmere:feruchemy/feruchemical_bendalloy)Bendalloy$(), the feruchemical attributes keyed to each of these are: $(p)Healing(lose max health/regeneration), Determination(extra hearts), Breath(lose O2 outside water/reduce rate of O2 consumption), and Nutrition(Hunger/Saturation)" }, { "type": "patchouli:crafting", diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 28e0d5199..d3f9fe9a5 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -23,24 +23,36 @@ public static void collect(List categories, List pages = new ArrayList<>(); + // Allomancy Basics Entry + BookStuff.Entry allomancyBasics = new BookStuff.Entry("allomancy_basics", allomancy, "allomancy.icon"); + allomancy.sortnum=1; + + categories.add(allomancy); + + BookStuff.Page firstPage = new BookStuff.TextPage(); + firstPage.setTitle("Allomancy (For Dummies)"); + firstPage.setText( + "Here is where I shall explain Allomancy, a system of Investiture native to Scadrial. " + + "Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in much greater detail than it's two older counterparts. The art requires consuming a piece of metal, upon which time you can \"%s\" it. ".formatted(PatchouliTextFormat.Thing("Burn")) + + "Those who are genetically gifted with a singular allomantic ability are generally referred to as a \"%s\". ".formatted(PatchouliTextFormat.Thing("Misting")) + + "For someone who has access to all sixteen abilities, they are referred to as a \"%s\".".formatted(PatchouliTextFormat.Thing("Mistborn")) + ); + pages.add(firstPage); + + pages.add(new BookStuff.CraftingPage("", "cosmere:metal_vial", "")); + allomancyBasics.pages = pages.toArray(BookStuff.Page[]::new); + pages.clear(); entries.add(allomancyBasics); + allomancyBasics.priority = true; //allomancy for (RegistryObject manifestation : ALLOMANCY_POWERS.values()) @@ -70,98 +82,80 @@ public static void collect(List categories, List Date: Tue, 14 Jun 2022 15:45:45 +1200 Subject: [PATCH 0271/1090] Revert "Move patchouli data gen to compat folder" This reverts commit cd186c39f618c01819203cb92b01046ac7b90b1b. --- src/main/java/leaf/cosmere/datagen/DataGen.java | 2 +- .../datagen/{compat => }/patchouli/BookStuff.java | 4 ++-- .../{compat => }/patchouli/PatchouliGen.java | 14 +++++++------- .../patchouli/PatchouliTextFormat.java | 4 ++-- .../patchouli/categories/PatchouliAllomancy.java | 8 ++++---- .../patchouli/categories/PatchouliBasics.java | 6 +++--- .../patchouli/categories/PatchouliFeruchemy.java | 6 +++--- .../patchouli/categories/PatchouliHemalurgy.java | 8 ++++---- 8 files changed, 26 insertions(+), 26 deletions(-) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/BookStuff.java (99%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/PatchouliGen.java (91%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/PatchouliTextFormat.java (93%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/categories/PatchouliAllomancy.java (97%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/categories/PatchouliBasics.java (71%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/categories/PatchouliFeruchemy.java (94%) rename src/main/java/leaf/cosmere/datagen/{compat => }/patchouli/categories/PatchouliHemalurgy.java (98%) diff --git a/src/main/java/leaf/cosmere/datagen/DataGen.java b/src/main/java/leaf/cosmere/datagen/DataGen.java index b85fea3c1..d5a25e047 100644 --- a/src/main/java/leaf/cosmere/datagen/DataGen.java +++ b/src/main/java/leaf/cosmere/datagen/DataGen.java @@ -17,7 +17,7 @@ import leaf.cosmere.datagen.items.ItemTagsGen; import leaf.cosmere.datagen.language.EngLangGen; import leaf.cosmere.datagen.loottables.LootTableGen; -import leaf.cosmere.datagen.compat.patchouli.PatchouliGen; +import leaf.cosmere.datagen.patchouli.PatchouliGen; import net.minecraft.data.DataGenerator; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.eventbus.api.SubscribeEvent; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java similarity index 99% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java rename to src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java index 6ecd72d9e..877e06c1c 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/BookStuff.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/BookStuff.java @@ -1,8 +1,8 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli; +package leaf.cosmere.datagen.patchouli; import com.google.gson.JsonArray; import com.google.gson.JsonElement; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java similarity index 91% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java rename to src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java index 406f515a6..2dcacf4b2 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -1,16 +1,16 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 13 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli; +package leaf.cosmere.datagen.patchouli; import com.google.common.collect.Sets; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliAllomancy; -import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliFeruchemy; -import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliHemalurgy; -import leaf.cosmere.datagen.compat.patchouli.categories.PatchouliBasics; +import leaf.cosmere.datagen.patchouli.categories.PatchouliAllomancy; +import leaf.cosmere.datagen.patchouli.categories.PatchouliBasics; +import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; +import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.StringHelper; import net.minecraft.data.DataGenerator; @@ -30,7 +30,7 @@ public class PatchouliGen implements DataProvider { private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); - private static final String GUIDE_NAME = "guide"; + public static final String GUIDE_NAME = "guide"; private final DataGenerator generator; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java similarity index 93% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java rename to src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java index 93bc993bf..620f37d95 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/PatchouliTextFormat.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliTextFormat.java @@ -1,8 +1,8 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 5 - 2022 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli; +package leaf.cosmere.datagen.patchouli; import java.util.Locale; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java similarity index 97% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java rename to src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index 9875a19b1..28e0d5199 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -1,12 +1,12 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli.categories; +package leaf.cosmere.datagen.patchouli.categories; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.compat.patchouli.PatchouliTextFormat; -import leaf.cosmere.datagen.compat.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.utils.helpers.StringHelper; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java similarity index 71% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java rename to src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java index a80206419..a407de7cd 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliBasics.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliBasics.java @@ -1,10 +1,10 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli.categories; +package leaf.cosmere.datagen.patchouli.categories; -import leaf.cosmere.datagen.compat.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.BookStuff; import java.util.List; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java similarity index 94% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java rename to src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java index 642061d5a..66de9a317 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliFeruchemy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliFeruchemy.java @@ -1,12 +1,12 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli.categories; +package leaf.cosmere.datagen.patchouli.categories; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.compat.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.BookStuff; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import net.minecraftforge.registries.RegistryObject; diff --git a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java similarity index 98% rename from src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java rename to src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java index a142d42df..be02e3b5b 100644 --- a/src/main/java/leaf/cosmere/datagen/compat/patchouli/categories/PatchouliHemalurgy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliHemalurgy.java @@ -1,12 +1,12 @@ /* - * File created ~ 13 - 6 - 2022 ~ Leaf + * File created ~ 14 - 7 - 2021 ~ Leaf */ -package leaf.cosmere.datagen.compat.patchouli.categories; +package leaf.cosmere.datagen.patchouli.categories; import leaf.cosmere.constants.Metals; -import leaf.cosmere.datagen.compat.patchouli.BookStuff; -import leaf.cosmere.datagen.compat.patchouli.PatchouliTextFormat; +import leaf.cosmere.datagen.patchouli.BookStuff; +import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; import java.util.ArrayList; import java.util.List; From da3bc55bb85a95639f69c472f6874b2aaed24387 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 14 Jun 2022 18:39:24 +1200 Subject: [PATCH 0272/1090] fix chromium spikes from loot chests having borked strength value --- .../java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 9 +++++++-- .../java/leaf/cosmere/loot/InvestSpikeLootFunction.java | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 379835fcd..f24d59352 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -361,15 +361,20 @@ default double getHemalurgicStrength(ItemStack stack, String name) HemalurgicSpikeItem spikeItem = (HemalurgicSpikeItem) stack.getItem(); switch (spikeItem.getMetalType()) { + case IRON, TIN, COPPER, ZINC, NICROSIL -> + { + //nil + } case LERASATIUM -> { //lerasatium spikes can't give more than 5 //todo config max lerasatium spike strength amount strength = Math.min(5, strength); } - case IRON, TIN, COPPER, CHROMIUM, ZINC, NICROSIL -> + case CHROMIUM -> { - //nil + //todo config enforced max chromium spike luck amount + strength = Math.min(3, strength); } default -> { diff --git a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java index 866a238d0..2be87e298 100644 --- a/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/InvestSpikeLootFunction.java @@ -75,13 +75,9 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) break; case TIN: case COPPER: - { - item.Invest(stack,spikeMetalType, strengthLevel / 10,UUID.randomUUID() ); - } - break; case CHROMIUM: { - item.Invest(stack,spikeMetalType, strengthLevel * ( 1 + Math.random()),UUID.randomUUID() ); + item.Invest(stack,spikeMetalType, strengthLevel / 10,UUID.randomUUID() ); } break; //steals allomantic abilities From d0d78bf8c4d9177c89567e802bca06d40f07ca3f Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 16 Jun 2022 21:09:27 +1200 Subject: [PATCH 0273/1090] feruchemy effects are neutral --- .../cosmere/registry/EffectsRegistry.java | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index 1c9581691..9e17f4cdb 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -63,29 +63,29 @@ private static MobEffect makeStoringEffect(Metals.MetalType metalType) switch (metalType) { case IRON: - return new IronStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new IronStoreEffect(metalType, MobEffectCategory.NEUTRAL); case STEEL: - return (new SteelStoreEffect(metalType, MobEffectCategory.BENEFICIAL)); + return (new SteelStoreEffect(metalType, MobEffectCategory.NEUTRAL)); case PEWTER: - return new PewterStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new PewterStoreEffect(metalType, MobEffectCategory.NEUTRAL); case ZINC: - return new ZincStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new ZincStoreEffect(metalType, MobEffectCategory.NEUTRAL); case BRASS: - return new BrassStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new BrassStoreEffect(metalType, MobEffectCategory.NEUTRAL); case DURALUMIN: - return new DuraluminStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new DuraluminStoreEffect(metalType, MobEffectCategory.NEUTRAL); case CHROMIUM: - return new ChromiumStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new ChromiumStoreEffect(metalType, MobEffectCategory.NEUTRAL); case GOLD: - return new GoldStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new GoldStoreEffect(metalType, MobEffectCategory.NEUTRAL); case CADMIUM: - return new CadmiumStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new CadmiumStoreEffect(metalType, MobEffectCategory.NEUTRAL); case BENDALLOY: - return new BendalloyStoreEffect(metalType, MobEffectCategory.BENEFICIAL); + return new BendalloyStoreEffect(metalType, MobEffectCategory.NEUTRAL); //todo atium // handled as part of the manifestation or maybe a mixin default: - return new FeruchemyEffectBase(metalType, MobEffectCategory.BENEFICIAL); + return new FeruchemyEffectBase(metalType, MobEffectCategory.NEUTRAL); } } @@ -94,29 +94,29 @@ private static MobEffect makeTappingEffect(Metals.MetalType metalType) switch (metalType) { case IRON: - return new IronTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new IronTapEffect(metalType, MobEffectCategory.NEUTRAL); case STEEL: - return new SteelTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new SteelTapEffect(metalType, MobEffectCategory.NEUTRAL); case PEWTER: - return new PewterTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new PewterTapEffect(metalType, MobEffectCategory.NEUTRAL); case ZINC: - return new ZincTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new ZincTapEffect(metalType, MobEffectCategory.NEUTRAL); case BRASS: - return new BrassTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new BrassTapEffect(metalType, MobEffectCategory.NEUTRAL); case DURALUMIN: - return new DuraluminTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new DuraluminTapEffect(metalType, MobEffectCategory.NEUTRAL); case CHROMIUM: - return new ChromiumTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new ChromiumTapEffect(metalType, MobEffectCategory.NEUTRAL); case GOLD: - return new GoldTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new GoldTapEffect(metalType, MobEffectCategory.NEUTRAL); case CADMIUM: - return new CadmiumTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new CadmiumTapEffect(metalType, MobEffectCategory.NEUTRAL); case BENDALLOY: - return new BendalloyTapEffect(metalType, MobEffectCategory.BENEFICIAL); + return new BendalloyTapEffect(metalType, MobEffectCategory.NEUTRAL); //todo atium // handled as part of the manifestation or maybe a mixin default: - return new FeruchemyEffectBase(metalType, MobEffectCategory.BENEFICIAL); + return new FeruchemyEffectBase(metalType, MobEffectCategory.NEUTRAL); } } } From d953e332efe82e4778abd07e3d0a52d71c622d1f Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 17 Jun 2022 11:35:59 +1200 Subject: [PATCH 0274/1090] hide flashing icon in HUD --- src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java index ac942e50f..050ee16f0 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java @@ -17,7 +17,7 @@ public static MobEffectInstance getNewEffect(MobEffect effect, int amplifier) effect, 21, Math.max(0, amplifier), - false, //usually means came from outside player means, eg beacon? if true, hides icon in non-inv gui + true, //usually means came from outside player means, eg beacon? if true, hides icon in non-inv gui false, // definitely don't want particles. true); // show icon though From d0654f8b9af7dba9c08543b1211c311f166fe9c7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 11:51:28 +1200 Subject: [PATCH 0275/1090] fix incorrect plus sign showing up on negative charge spikes --- src/main/generated/.cache/cache | 2 +- src/main/generated/assets/cosmere/lang/en_us.json | 10 +++++----- .../java/leaf/cosmere/datagen/language/EngLangGen.java | 10 +++++----- .../java/leaf/cosmere/items/curio/IHemalurgicInfo.java | 7 ++++++- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache index f3983788f..3264fee18 100644 --- a/src/main/generated/.cache/cache +++ b/src/main/generated/.cache/cache @@ -38,7 +38,7 @@ c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deep edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -f5ecbf99b3f72a692be5004af71e2f47413a4f61 assets/cosmere/lang/en_us.json +ee64f7e00c09036f92ca20fa000a70f5d4451814 assets/cosmere/lang/en_us.json e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 72552964c..96b962c6e 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -671,13 +671,13 @@ "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", - "tooltip.cosmere.attribute.chromium": "+%s%% Luck", - "tooltip.cosmere.attribute.copper": "+%s%% XP", + "tooltip.cosmere.attribute.chromium": "%s%s%% Luck", + "tooltip.cosmere.attribute.copper": "%s%s%% XP", "tooltip.cosmere.attribute.duralumin": "", - "tooltip.cosmere.attribute.iron": "+%s Attack Damage", + "tooltip.cosmere.attribute.iron": "%s%s Attack Damage", "tooltip.cosmere.attribute.nicrosil": "", - "tooltip.cosmere.attribute.tin": "+%s%% Better Night Vision", - "tooltip.cosmere.attribute.zinc": "+%s%% Emotional Fortitude", + "tooltip.cosmere.attribute.tin": "%s%s%% Better Night Vision", + "tooltip.cosmere.attribute.zinc": "%s%s%% Emotional Fortitude", "tooltip.cosmere.metals.contained": "Contained Metals:", "tooltip.cosmere.patchouli.not_installed": "Patchouli is not installed. Documentation is not available.", "tooltip.cosmere.power.found": "Hemalurgic Charge:", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index a4306fc2a..e6cb1597f 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -203,12 +203,12 @@ else if (item instanceof MetalmindItem) } add("tooltip.cosmere.metals.contained", "Contained Metals:"); - add("tooltip.cosmere.attribute.iron", "+%s Attack Damage"); - add("tooltip.cosmere.attribute.tin", "+%s%% Better Night Vision"); - add("tooltip.cosmere.attribute.copper", "+%s%% XP"); - add("tooltip.cosmere.attribute.zinc", "+%s%% Emotional Fortitude"); + add("tooltip.cosmere.attribute.iron", "%s%s Attack Damage"); + add("tooltip.cosmere.attribute.tin", "%s%s%% Better Night Vision"); + add("tooltip.cosmere.attribute.copper", "%s%s%% XP"); + add("tooltip.cosmere.attribute.zinc", "%s%s%% Emotional Fortitude"); add("tooltip.cosmere.attribute.duralumin", "");//todo hemalurgic connection/identity - add("tooltip.cosmere.attribute.chromium", "+%s%% Luck"); + add("tooltip.cosmere.attribute.chromium", "%s%s%% Luck"); add("tooltip.cosmere.attribute.nicrosil", "");//todo hemalurgic investiture //ItemGroups/Tabs diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index f24d59352..e0b4b5d13 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -436,8 +436,13 @@ default void addInvestitureInformation(ItemStack stack, HemalurgicSpikeItem hema } double roundOff = (double) Math.round(hemalurgicStrength * 100) / 100; + String sign = roundOff > 0 ? "+" : ""; - tooltip.add(TextHelper.createTranslatedText("tooltip.cosmere.attribute." + metalType.getName(), roundOff)); + tooltip.add(TextHelper.createTranslatedText( + "tooltip.cosmere.attribute." + metalType.getName(), + sign, + roundOff + )); } break; } From 5f0ecbb7b84760e7229e4646249fafa1772ff74c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 17:07:45 +1200 Subject: [PATCH 0276/1090] change feruchemy tap cost --- .../leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index e8b389c52..b095d381c 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -107,7 +107,7 @@ public int getCost(ISpiritweb data) { //wanting to tap //get cost - return mode >= -3 ? mode : -(mode * mode); + return mode >= -modeMax(data) ? mode : -(Mth.absFloor(Math.pow(Mth.abs(mode), 1.5d))); } //if we are storing //check if there is space to store From 1ae0643ce7317820bffb385097c437689c0389f8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 17:25:45 +1200 Subject: [PATCH 0277/1090] don't attach spiritweb to creepers and other incorrect mobs --- .../cosmere/handlers/EntityEventHandler.java | 24 +++++++++++-------- .../leaf/cosmere/handlers/ModBusEvents.java | 8 +++---- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index d83f7da66..fec32472c 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -20,9 +20,8 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.animal.Animal; import net.minecraft.world.entity.animal.Cat; -import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.monster.Ravager; import net.minecraft.world.entity.monster.ZombieVillager; import net.minecraft.world.entity.monster.piglin.AbstractPiglin; @@ -85,10 +84,7 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) giveEntityStartingManifestation(livingEntity, spiritweb); } } - else if (eventEntity instanceof AbstractVillager - || eventEntity instanceof ZombieVillager - || (eventEntity instanceof Raider && !(eventEntity instanceof Ravager)) - || eventEntity instanceof AbstractPiglin) + else if (isValidSpiritWebEntity(eventEntity)) { //random 1/16 // only 1 in 16 will have the gene @@ -107,15 +103,23 @@ else if (eventEntity instanceof AbstractVillager } + public static boolean isValidSpiritWebEntity(Entity entity) + { + return entity instanceof Player + || entity instanceof AbstractVillager + || entity instanceof ZombieVillager + || (entity instanceof Raider && !(entity instanceof Ravager)) + || entity instanceof AbstractPiglin + || entity instanceof Llama + || entity instanceof Cat; + } + @SubscribeEvent public static void attachEntityCapabilities(AttachCapabilitiesEvent event) { Entity eventEntity = event.getObject(); - if (eventEntity instanceof Player - || eventEntity instanceof Animal - || eventEntity instanceof AbstractVillager - || eventEntity instanceof Monster) + if (isValidSpiritWebEntity(eventEntity)) { LivingEntity livingEntity = (LivingEntity) eventEntity; event.addCapability(Constants.Resources.SPIRITWEB_CAP, new ICapabilitySerializable() diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index d81bdd3a9..6ab903f57 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -23,17 +23,17 @@ public class ModBusEvents EntityType.PLAYER, EntityType.VILLAGER, - EntityType.WANDERING_TRADER, - EntityType.ZOMBIE_VILLAGER, - EntityType.WITCH, + EntityType.WANDERING_TRADER, - EntityType.PILLAGER, EntityType.EVOKER, EntityType.ILLUSIONER, + EntityType.PILLAGER, EntityType.VINDICATOR, + EntityType.WITCH, EntityType.PIGLIN, + EntityType.PIGLIN_BRUTE, EntityType.CAT, EntityType.LLAMA, From e0fd8003d71b564cc11d3c28e244ef11e04b57b4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 18:20:58 +1200 Subject: [PATCH 0278/1090] Update BrassStoreEffect.java --- .../feruchemy/store/BrassStoreEffect.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java index 73324c9ef..ea125a9ef 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/BrassStoreEffect.java @@ -9,6 +9,7 @@ import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.effect.MobEffectInstance; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; //warmth @@ -18,6 +19,7 @@ public BrassStoreEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); MinecraftForge.EVENT_BUS.addListener(this::onLivingHurtEvent); + MinecraftForge.EVENT_BUS.addListener(this::onLivingAttackEvent); } public void onLivingHurtEvent(LivingHurtEvent event) @@ -47,4 +49,33 @@ public void onLivingHurtEvent(LivingHurtEvent event) event.setAmount(amount); } } + + + public void onLivingAttackEvent(LivingAttackEvent event) + { + if (!event.getSource().isFire()) + { + return; + } + + MobEffectInstance effectInstance = event.getEntityLiving().getEffect(this); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + switch (effectInstance.getAmplifier()) + { + case 0: + case 1: + case 2: + break; + default: + case 3: + if (event.getEntityLiving().isOnFire()) + { + event.getEntityLiving().clearFire(); + } + event.setCanceled(true); + } + } + } + } From df45042143662bcecc5e45228cadae0ea67fcb68 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 18:30:32 +1200 Subject: [PATCH 0279/1090] Size is now an attribute, atium feruchemy can change it. --- .../java/leaf/cosmere/constants/Metals.java | 11 ++++ .../feruchemy/store/AtiumStoreEffect.java | 28 +++++++++ .../effects/feruchemy/tap/AtiumTapEffect.java | 26 ++++++++ .../feruchemy/FeruchemyAtium.java | 63 ++++++++----------- 4 files changed, 90 insertions(+), 38 deletions(-) create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 7af531a86..00a3273e8 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -928,6 +928,17 @@ public String getFeruchemyRegistryName() { return "feruchemical_" + this.getName(); } + + public boolean hasAttribute() + { + switch (this) + { + case TIN, COPPER, ATIUM -> { + return true; + } + } + return false; + } } private static class MetalColor diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java new file mode 100644 index 000000000..61e53d8b3 --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java @@ -0,0 +1,28 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.store; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; + +//health +public class AtiumStoreEffect extends FeruchemyEffectBase +{ + public AtiumStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), + "69225c21-d36f-4ca3-8071-6b15279ca4f9", + -0.15D, + AttributeModifier.Operation.ADDITION); + } + +} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java new file mode 100644 index 000000000..e95835f4a --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java @@ -0,0 +1,26 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.tap; + +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; + +//health +public class AtiumTapEffect extends FeruchemyEffectBase +{ + public AtiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + addAttributeModifier( + AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), + "2c0b90c8-a8f1-4d83-9072-d77eb7e4b689", + 0.15D, + AttributeModifier.Operation.ADDITION); + } + +} diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java index 1fb791d72..920a93b2d 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java @@ -7,12 +7,17 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.math.Easing; import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.registries.RegistryObject; public class FeruchemyAtium extends FeruchemyBase { @@ -30,51 +35,33 @@ public void onModeChange(ISpiritweb data) public float getScale(ISpiritweb data) { - if (isActive(data) && canAfford(data, true)) - { - final int mode = getMode(data); - float v;// = mode * 0.1f; - - if (isStoring(data)) - { - v = mode * 0.1f; - } - else// if (isTapping(data)) - { - final float inverseLerp = MathHelper.InverseLerp(0, 21, Math.abs(mode)); - final float v1 = Easing.easeOutQuad(inverseLerp); - - v = Mth.lerp(v1,0, -0.8f); - } - - - - float scale = 1 + v; - - - - return scale; - } - return 1; + return getScale(data.getLiving()); } - - public static float getScale(LivingEntity living) { - final LazyOptional iSpiritwebLazyOptional = SpiritwebCapability.get(living); + /*final int mode = getMode(data); + float v;// = mode * 0.1f; - if (iSpiritwebLazyOptional.isPresent()) + if (isStoring(data)) + { + v = mode * 0.1f; + } + else// if (isTapping(data)) { - var spiritwebOptional = iSpiritwebLazyOptional.resolve(); - if (spiritwebOptional.isPresent()) - { - final ISpiritweb iSpiritweb = spiritwebOptional.get(); - FeruchemyAtium atiumF = (FeruchemyAtium) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ATIUM).get(); - return atiumF.getScale(iSpiritweb); - } + final float inverseLerp = MathHelper.InverseLerp(0, 21, Math.abs(mode)); + final float v1 = Easing.easeOutQuad(inverseLerp); + + v = Mth.lerp(v1,0, -0.8f); } + float scale = 1 + v;*/ + + - return 1; + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()); + AttributeInstance attribute = living.getAttribute(attributeRegistryObject.get()); + //return modded val + final float v = attribute != null ? (float) attribute.getValue() : 1; + return v; } } From 9c14d6dc0a6dcd5a54cde4b0d939c354b16530f2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 18:51:31 +1200 Subject: [PATCH 0280/1090] tidying up shared functions --- .../cap/entity/SpiritwebCapability.java | 4 +- .../cosmere/manifestation/AManifestation.java | 2 + .../manifestation/ManifestationBase.java | 6 ++ .../allomancy/AllomancyAluminum.java | 2 +- .../allomancy/AllomancyBase.java | 10 +-- .../allomancy/AllomancyBendalloy.java | 2 +- .../allomancy/AllomancyBrass.java | 2 +- .../allomancy/AllomancyBronze.java | 2 +- .../allomancy/AllomancyCadmium.java | 2 +- .../allomancy/AllomancyChromium.java | 2 +- .../allomancy/AllomancyCopper.java | 14 +--- .../allomancy/AllomancyDuralumin.java | 2 +- .../allomancy/AllomancyElectrum.java | 2 +- .../allomancy/AllomancyGold.java | 2 +- .../allomancy/AllomancyIronSteel.java | 2 +- .../allomancy/AllomancyPewter.java | 2 +- .../allomancy/AllomancyZinc.java | 2 +- .../feruchemy/FeruchemyAluminum.java | 5 -- .../feruchemy/FeruchemyBase.java | 32 +++++++-- .../feruchemy/FeruchemyBronze.java | 22 +++--- .../feruchemy/FeruchemyGold.java | 71 ++++++------------- .../cosmere/registry/AttributesRegistry.java | 19 +++-- .../cosmere/registry/EffectsRegistry.java | 12 ++-- 23 files changed, 101 insertions(+), 120 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index e302f2fb3..e4a68c819 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -271,7 +271,7 @@ public void tick() if (ironActive) { - ((AllomancyIronSteel) iron).performEffect(this); + ((AllomancyIronSteel) iron).applyEffectTick(this); } AManifestation steel = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); @@ -279,7 +279,7 @@ public void tick() if (steelActive) { - ((AllomancyIronSteel) steel).performEffect(this); + ((AllomancyIronSteel) steel).applyEffectTick(this); } } } diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index 7068b7236..b0b96248d 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -34,6 +34,8 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract void tick(ISpiritweb data); + protected abstract void applyEffectTick(ISpiritweb data); + public abstract boolean isActive(ISpiritweb data); public abstract double getStrength(ISpiritweb data, boolean getBaseStrength); diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 6728f7bd1..806120e99 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -72,6 +72,12 @@ public void tick(ISpiritweb data) } + @Override + protected void applyEffectTick(ISpiritweb data) + { + + } + @Override public boolean isActive(ISpiritweb data) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java index 34183331f..1984b6ca0 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyAluminum.java @@ -15,7 +15,7 @@ public AllomancyAluminum(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { //passive active ability, if any { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index cf622cdbe..31a33da37 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -101,13 +101,13 @@ public boolean isMetalBurning(ISpiritweb data) @Override public void tick(ISpiritweb data) { - int mode = getMode(data); - if (!isActive(data)) { return; } + int mode = getMode(data); + //don't check every tick. LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; @@ -136,11 +136,7 @@ public void tick(ISpiritweb data) } } - performEffect(data); - } - - protected void performEffect(ISpiritweb data) - { + applyEffectTick(data); } protected KeyMapping getKeyBinding() diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java index 94f6f87cc..222ad4ac9 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBendalloy.java @@ -22,7 +22,7 @@ public AllomancyBendalloy(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java index 33fbad9ef..f6fff18cc 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBrass.java @@ -22,7 +22,7 @@ public AllomancyBrass(Metals.MetalType metalType) //Dampens Emotions @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { int mode = getMode(data); diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java index af979be6a..be6198e33 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBronze.java @@ -30,7 +30,7 @@ public AllomancyBronze(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java index 4097d2581..074891fd5 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCadmium.java @@ -25,7 +25,7 @@ public AllomancyCadmium(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { //Speeds Up Time for everything around the user, implying the user is slower { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java index 6c06d1f4c..08ff78f2e 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyChromium.java @@ -23,7 +23,7 @@ public AllomancyChromium(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { //Wipes Allomantic Reserves of Target { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java index b3179db17..2d486e62f 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyCopper.java @@ -10,19 +10,7 @@ import leaf.cosmere.utils.helpers.EffectsHelper; import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.storage.loot.LootPool; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.functions.LootingEnchantFunction; -import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; -import net.minecraft.world.level.storage.loot.predicates.LootItemKilledByPlayerCondition; -import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceWithLootingCondition; -import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; import java.util.List; @@ -36,7 +24,7 @@ public AllomancyCopper(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java index 09043ed1d..9fe01a068 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyDuralumin.java @@ -21,7 +21,7 @@ public AllomancyDuralumin(Metals.MetalType metalType) //Enhances Current Metals Burned @Override - public void performEffect(ISpiritweb data) + public void applyEffectTick(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java index 3c2f9d3aa..036315341 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyElectrum.java @@ -15,7 +15,7 @@ public AllomancyElectrum(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { //Reveals Your Future { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java index 830bea64d..8dee0e4c2 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyGold.java @@ -15,7 +15,7 @@ public AllomancyGold(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { //Reveals Your Past Self { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 7a97de143..8b949b7e7 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -55,7 +55,7 @@ public AllomancyIronSteel(Metals.MetalType metalType) } @Override - public void performEffect(ISpiritweb data) + public void applyEffectTick(ISpiritweb data) { if (data.getLiving().level.isClientSide) { diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java index e3d286efc..ba8daf513 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyPewter.java @@ -18,7 +18,7 @@ public AllomancyPewter(Metals.MetalType metalType) } @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = livingEntity.tickCount % 20 == 0; diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java index 53cfb4f91..cc50c63a5 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyZinc.java @@ -24,7 +24,7 @@ public AllomancyZinc(Metals.MetalType metalType) //Inflames Emotions //make hostiles target you but also make non-hostiles target hostiles? @Override - protected void performEffect(ISpiritweb data) + protected void applyEffectTick(ISpiritweb data) { int mode = getMode(data); int range = getRange(data); diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java index ffea1b2e9..11aa5e1b8 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAluminum.java @@ -14,11 +14,6 @@ public FeruchemyAluminum(Metals.MetalType metalType) super(metalType); } - @Override - public int modeMin(ISpiritweb data) - { - return -10; - } @Override public int modeMax(ISpiritweb data) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index b095d381c..23f28a1cc 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -11,6 +11,7 @@ import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.manifestation.ManifestationBase; import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.utils.helpers.EffectsHelper; import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffect; @@ -65,6 +66,16 @@ public int modeMin(ISpiritweb data) return -(Mth.fastFloor(strength)); } + @Override + public void onModeChange(ISpiritweb data) + { + super.onModeChange(data); + + //todo check if removing effects on mode change is wise. May be better to let them run out as they have already "paid" for them. + //data.getLiving().removeEffect(EffectsRegistry.STORING_EFFECTS.get(this.metalType).get()); + //data.getLiving().removeEffect(EffectsRegistry.TAPPING_EFFECTS.get(this.metalType).get()); + } + public boolean isStoring(ISpiritweb data) { return getMode(data) > 0; @@ -135,16 +146,23 @@ public void tick(ISpiritweb data) if (canAfford(data, false))//success { - MobEffect effect = getEffect(mode); - MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); + applyEffectTick(data); + } + } - if (effect == null) - { - return; - } + @Override + public void applyEffectTick(ISpiritweb data) + { + int mode = getMode(data); + MobEffect effect = getEffect(mode); + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - livingEntity.addEffect(currentEffect); + if (effect == null) + { + return; } + data.getLiving().removeEffect(effect); + data.getLiving().addEffect(currentEffect); } protected MobEffect getEffect(int mode) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java index 95dd1ca25..8cdd37d7f 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBronze.java @@ -6,6 +6,7 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Metals; import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.server.level.ServerLevel; @@ -17,6 +18,7 @@ import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.MinecraftForge; @@ -49,18 +51,12 @@ public int modeMax(ISpiritweb data) } @Override - public void tick(ISpiritweb data) + public void applyEffectTick(ISpiritweb data) { - super.tick(data); - int mode = getMode(data); - - if (mode == 0) - { - return; - } + super.applyEffectTick(data); //can't store or tap any more - switch (mode) + switch (getMode(data)) { case -1: resetSleepTimers(data); @@ -73,8 +69,6 @@ public void tick(ISpiritweb data) //let the current effect run out. break; } - - } private void resetSleepTimers(ISpiritweb data) @@ -137,9 +131,9 @@ private void trySleep(ISpiritweb data) } } - if (player.level instanceof ServerLevel) + if (player.level instanceof ServerLevel serverLevel) { - ((ServerLevel) player.level).updateSleepingPlayerList(); + serverLevel.updateSleepingPlayerList(); } @@ -203,7 +197,7 @@ public void sleepCheck(SleepingLocationCheckEvent event) { SpiritwebCapability.get(event.getEntityLiving()).ifPresent(iSpiritweb -> { - if (iSpiritweb.hasManifestation(this)) + if (isActive(iSpiritweb)) { event.setResult(Event.Result.ALLOW); } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java index 0af8be868..59121ce84 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyGold.java @@ -20,6 +20,14 @@ public FeruchemyGold(Metals.MetalType metalType) super(metalType); } + @Override + public int getCost(ISpiritweb data) + { + final int cost = super.getCost(data); + //todo config gold tap cost + return isTapping(data) ? cost * 10 : cost; + } + @Override public void tick(ISpiritweb data) { @@ -32,62 +40,25 @@ public void tick(ISpiritweb data) return; } - int mode = getMode(data); + if (isTapping(data) && livingEntity.getHealth() >= livingEntity.getMaxHealth()) + return; - int cost; + super.tick(data); + } + @Override + public void applyEffectTick(ISpiritweb data) + { + super.applyEffectTick(data); + final int mode = getMode(data); MobEffect effect = getEffect(mode); - final boolean tapping = mode < 0; - final boolean storing = mode > 0; - - // if we are tapping - //check if there is charges to tap - if (tapping) - { - //wanting to tap - //get cost - cost = mode <= -3 ? -(mode * mode) : mode; + MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - } - //if we are storing - //check if there is space to store - else + if (effect == null) { - if (storing) - { - cost = mode; - } - //can't store or tap any more - else - { - //remove active effects. - //let the current effect run out. - return; - } - } - - if (tapping && livingEntity.getHealth() >= livingEntity.getMaxHealth()) return; - - final ItemStack metalmind = MetalmindChargeHelper.adjustMetalmindChargeExact(data, metalType, -cost, true, true); - if (metalmind != null)//success - { - MobEffectInstance currentEffect = EffectsHelper.getNewEffect(effect, Math.abs(mode) - 1); - - if (effect == null) - { - return; - } - - livingEntity.addEffect(currentEffect); - } - else - { - if (tapping) - { - //move towards turning off feruchemy. - data.setMode(this, mode + 1); - } } + + data.getLiving().addEffect(currentEffect); } } diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 8ea7374f3..97a79c6a6 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -74,7 +74,7 @@ public static Map> makeAttributeMap() attributeModifiers.put(ferringNamePath, ferringAttribute); } - if (metalType != Metals.MetalType.COPPER && metalType != Metals.MetalType.TIN) + if (!metalType.hasAttribute())// != Metals.MetalType.COPPER && metalType != Metals.MetalType.TIN) { continue; } @@ -82,8 +82,8 @@ public static Map> makeAttributeMap() final String metalName = metalType.getName(); int defaultVal = 0; - int min = 0; - int max = 0; + double min = 0; + double max = 0; switch (metalType) @@ -102,12 +102,19 @@ public static Map> makeAttributeMap() max = 20; } break; + case ATIUM: + { + defaultVal = 1; + min = 0.1f; + max = 20; + } + break; } //requires effectively final values - int finalDefaultVal = defaultVal; - int finalMin = min; - int finalMax = max; + final int finalDefaultVal = defaultVal; + final double finalMin = min; + final double finalMax = max; attributeModifiers.put(metalName, ATTRIBUTES.register( metalName, () -> (new RangedAttribute( diff --git a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java index 9e17f4cdb..6c52c3bf1 100644 --- a/src/main/java/leaf/cosmere/registry/EffectsRegistry.java +++ b/src/main/java/leaf/cosmere/registry/EffectsRegistry.java @@ -76,14 +76,16 @@ private static MobEffect makeStoringEffect(Metals.MetalType metalType) return new DuraluminStoreEffect(metalType, MobEffectCategory.NEUTRAL); case CHROMIUM: return new ChromiumStoreEffect(metalType, MobEffectCategory.NEUTRAL); + case NICROSIL: + return new NicrosilStoreEffect(metalType, MobEffectCategory.NEUTRAL); case GOLD: return new GoldStoreEffect(metalType, MobEffectCategory.NEUTRAL); case CADMIUM: return new CadmiumStoreEffect(metalType, MobEffectCategory.NEUTRAL); case BENDALLOY: return new BendalloyStoreEffect(metalType, MobEffectCategory.NEUTRAL); - //todo atium - // handled as part of the manifestation or maybe a mixin + case ATIUM: + return new AtiumStoreEffect(metalType, MobEffectCategory.NEUTRAL); default: return new FeruchemyEffectBase(metalType, MobEffectCategory.NEUTRAL); } @@ -107,14 +109,16 @@ private static MobEffect makeTappingEffect(Metals.MetalType metalType) return new DuraluminTapEffect(metalType, MobEffectCategory.NEUTRAL); case CHROMIUM: return new ChromiumTapEffect(metalType, MobEffectCategory.NEUTRAL); + case NICROSIL: + return new NicrosilTapEffect(metalType, MobEffectCategory.NEUTRAL); case GOLD: return new GoldTapEffect(metalType, MobEffectCategory.NEUTRAL); case CADMIUM: return new CadmiumTapEffect(metalType, MobEffectCategory.NEUTRAL); case BENDALLOY: return new BendalloyTapEffect(metalType, MobEffectCategory.NEUTRAL); - //todo atium - // handled as part of the manifestation or maybe a mixin + case ATIUM: + return new AtiumTapEffect(metalType, MobEffectCategory.NEUTRAL); default: return new FeruchemyEffectBase(metalType, MobEffectCategory.NEUTRAL); } From 805bd6c5a4f8331e815465245bd2743aa6395351 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 18:57:22 +1200 Subject: [PATCH 0281/1090] Feru nicrosil maybe sorta working?? --- .../feruchemy/store/NicrosilStoreEffect.java | 47 +++++++++++++++++++ .../feruchemy/tap/NicrosilTapEffect.java | 36 ++++++++++++++ .../feruchemy/FeruchemyNicrosil.java | 2 +- 3 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java create mode 100644 src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java new file mode 100644 index 000000000..80ec93829 --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java @@ -0,0 +1,47 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.store; + +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Constants; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.feruchemy.FeruchemyNicrosil; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.CompoundNBTHelper; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraftforge.registries.RegistryObject; + + +public class NicrosilStoreEffect extends FeruchemyEffectBase +{ + public NicrosilStoreEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + String manifestationName = manifestation.getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + continue; + } + + addAttributeModifier( + AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + "00b3f9bc-9a43-46e7-98de-56dfa6e80618", + -1000.0D, + AttributeModifier.Operation.ADDITION); + } + + } +} diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java new file mode 100644 index 000000000..7545f622d --- /dev/null +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/NicrosilTapEffect.java @@ -0,0 +1,36 @@ +/* + * File created ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.effects.feruchemy.tap; + +import leaf.cosmere.cap.entity.SpiritwebCapability; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; +import leaf.cosmere.manifestation.feruchemy.FeruchemyNicrosil; +import leaf.cosmere.registry.AttributesRegistry; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; + + +public class NicrosilTapEffect extends FeruchemyEffectBase +{ + public NicrosilTapEffect(Metals.MetalType type, MobEffectCategory effectType) + { + super(type, effectType); + } + + @Override + public void removeAttributeModifiers(LivingEntity pLivingEntity, AttributeMap pAttributeMap, int pAmplifier) + { + super.removeAttributeModifiers(pLivingEntity, pAttributeMap, pAmplifier); + + SpiritwebCapability.get(pLivingEntity).ifPresent(data->{ + final FeruchemyNicrosil manifestation = (FeruchemyNicrosil) ManifestationRegistry.FERUCHEMY_POWERS.get(metalType).get(); + manifestation.clearNicrosilPowers(data); + }); + } +} diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 45984b7f3..7c35a0f04 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -126,7 +126,7 @@ public void onModeChange(ISpiritweb data) } } - private void clearNicrosilPowers(ISpiritweb data) + public void clearNicrosilPowers(ISpiritweb data) { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { From a5abbb663a41df50db63464165585244408a2ffe Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 18:57:53 +1200 Subject: [PATCH 0282/1090] Update Changelog.md --- Changelog.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Changelog.md b/Changelog.md index 58d398eb7..97c701d23 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,17 @@ The Cosmere Project - For 1.16 Minecraft +B48 + +Updated patchouli documentation for allomancy. +Fix chromium spikes having weird values from loot chests +hide flashing icons in hud. +Feruchemy effects are now 'neutral'. Should stop corail tombstone mod giving you "Storing Cadmium V" and making you suffocate. +Change feruchemy tap cost to be mode^1.5 instead of mode^2. Shouldn't be so devastating to tap high amounts now. +Stop spiritwebs being attached to creepers/skeletons and other such mobs. Things should run a little smoother now. +Storing enough brass will extinguish yourself if you're on fire. Requires mode 4, or Store Brass IV effect. +Feru nicrosil maybe sorta working? Though only if you actually have feru nicrosil, no medallions yet. + + B47 New textures! From b9e4ddf6669a99b87b8635f9ab3aa49e6279a43a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 20:45:59 +1200 Subject: [PATCH 0283/1090] f-atium, but the game actually loads this time --- .../cap/entity/SpiritwebCapability.java | 4 ++- .../cosmere/handlers/EntityEventHandler.java | 11 ++++++-- .../leaf/cosmere/handlers/ModBusEvents.java | 27 +++++++++--------- .../feruchemy/FeruchemyAtium.java | 25 ++++++++++------- .../java/leaf/cosmere/mixin/EntityMixin.java | 28 ++++++++----------- 5 files changed, 51 insertions(+), 44 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index e4a68c819..423ea713d 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -730,7 +730,9 @@ public String changeManifestation(int dir) @Override public void setMode(AManifestation aManifestation, int mode) { - mode = Mth.clamp(mode, aManifestation.modeMin(this), aManifestation.modeMax(this)); + final int pMax = aManifestation.modeMax(this); + final int pMin = aManifestation.modeMin(this); + mode = Mth.clamp(mode, pMin, pMax); MANIFESTATIONS_MODE.put(aManifestation, mode); aManifestation.onModeChange(this); } diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index fec32472c..621e1f641 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -291,12 +291,17 @@ else if (stack.getItem() instanceof HemalurgicSpikeItem spike) @SubscribeEvent public static void changeSize(EntityEvent.Size event) { - if (event.getEntity() instanceof LivingEntity livingEntity) + final Entity entity = event.getEntity(); + if (entity != null && entity instanceof LivingEntity livingEntity) { float scale = FeruchemyAtium.getScale(livingEntity); - event.setNewSize(event.getNewSize().scale(scale)); - event.setNewEyeHeight(event.getNewEyeHeight() * scale); + //only change if scale not 1, else we let the change size event do it's thing unimpeded + if (scale != 1) + { + event.setNewSize(event.getNewSize().scale(scale)); + event.setNewEyeHeight(event.getNewEyeHeight() * scale); + } } } } diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index 6ab903f57..6d1466dc7 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -44,11 +44,11 @@ public class ModBusEvents @SubscribeEvent(priority = EventPriority.HIGH) public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (EntityType entityType : entityTypes) { - if (metalType.hasAssociatedManifestation()) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - for (EntityType entityType : entityTypes) + if (metalType.hasAssociatedManifestation()) { RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); @@ -56,18 +56,19 @@ public static void onEntityAttributeModificationEvent(EntityAttributeModificatio event.add(entityType, mistingAttribute.get()); event.add(entityType, ferringAttribute.get()); } - } - - { - //check for others - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + if (metalType.hasAttribute()) { - //player only, because it doesn't make sense for mobs to have them. - //eg xp gain rate, - event.add(EntityType.PLAYER, metalRelatedAttribute.get()); + //check for others + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + //players get everything, all others get atium + if (entityType == EntityType.PLAYER || metalType == Metals.MetalType.ATIUM) + { + event.add(entityType, metalRelatedAttribute.get()); + } + } } - } } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java index 920a93b2d..ee6f6b91d 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java @@ -33,11 +33,6 @@ public void onModeChange(ISpiritweb data) data.getLiving().refreshDimensions(); } - public float getScale(ISpiritweb data) - { - return getScale(data.getLiving()); - } - public static float getScale(LivingEntity living) { /*final int mode = getMode(data); @@ -56,12 +51,22 @@ public static float getScale(LivingEntity living) } float scale = 1 + v;*/ + //player is in a weird uninitialized state when logging in, + //so if it errors, I don't care, just return 1 in those cases. + try + { + final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()); + if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) + { + AttributeInstance attribute = living.getAttribute(metalRelatedAttribute.get()); + //return modded val + final float v = attribute != null ? (float) attribute.getValue() : 1; + return v; + } + } + catch (Exception e) { } - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()); - AttributeInstance attribute = living.getAttribute(attributeRegistryObject.get()); - //return modded val - final float v = attribute != null ? (float) attribute.getValue() : 1; - return v; + return 1; } } diff --git a/src/main/java/leaf/cosmere/mixin/EntityMixin.java b/src/main/java/leaf/cosmere/mixin/EntityMixin.java index d60fddb6c..dcda512b3 100644 --- a/src/main/java/leaf/cosmere/mixin/EntityMixin.java +++ b/src/main/java/leaf/cosmere/mixin/EntityMixin.java @@ -112,24 +112,18 @@ public void handleCanEnterPose(Pose pose, CallbackInfoReturnable cir) if(entity instanceof LivingEntity livingEntity) { - SpiritwebCapability.get(livingEntity).ifPresent(data-> + float scale = FeruchemyAtium.getScale(livingEntity); + if (scale > 0.01 || scale < -0.01) { - FeruchemyAtium atiumF = (FeruchemyAtium) ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ATIUM).get(); - float scale = atiumF.getScale(data); - if (scale > 0.01 || scale < -0.01) - { - EntityDimensions entityDimensions = livingEntity.getDimensions(pose); - entityDimensions = entityDimensions.scale(scale); - double f = entityDimensions.width / 2.0F; - Vec3 vector3d = new Vec3(livingEntity.getX() - f, livingEntity.getY(), livingEntity.getZ() - f); - Vec3 vector3d1 = new Vec3(livingEntity.getX() + f, livingEntity.getY() + (double)entityDimensions.height, livingEntity.getZ() + f); - AABB box = new AABB(vector3d, vector3d1); - - - - cir.setReturnValue(livingEntity.level.noCollision(livingEntity, box.deflate(1.0E-7D))); - } - }); + EntityDimensions entityDimensions = livingEntity.getDimensions(pose); + entityDimensions = entityDimensions.scale(scale); + double f = entityDimensions.width / 2.0F; + Vec3 vector3d = new Vec3(livingEntity.getX() - f, livingEntity.getY(), livingEntity.getZ() - f); + Vec3 vector3d1 = new Vec3(livingEntity.getX() + f, livingEntity.getY() + (double)entityDimensions.height, livingEntity.getZ() + f); + AABB box = new AABB(vector3d, vector3d1); + + cir.setReturnValue(livingEntity.level.noCollision(livingEntity, box.deflate(1.0E-7D))); + } } } } From 347b0ff127c1fc6c3e944414d65866210c19c5cf Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 20:46:27 +1200 Subject: [PATCH 0284/1090] less effect stuttering from slow connections --- src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java index 050ee16f0..9f49738e2 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java @@ -15,7 +15,7 @@ public static MobEffectInstance getNewEffect(MobEffect effect, int amplifier) { MobEffectInstance effectInstance = new MobEffectInstance( effect, - 21, + 63, Math.max(0, amplifier), true, //usually means came from outside player means, eg beacon? if true, hides icon in non-inv gui false, // definitely don't want particles. From cecdb95fa2c0035a15f989b7065a1f3e921d73fe Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 20:47:28 +1200 Subject: [PATCH 0285/1090] remove feruchemy effects when mode is 0 --- .../cosmere/manifestation/feruchemy/FeruchemyBase.java | 10 +++++++--- .../java/leaf/cosmere/utils/helpers/EffectsHelper.java | 2 -- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 23f28a1cc..8deed6c80 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -71,15 +71,19 @@ public void onModeChange(ISpiritweb data) { super.onModeChange(data); - //todo check if removing effects on mode change is wise. May be better to let them run out as they have already "paid" for them. - //data.getLiving().removeEffect(EffectsRegistry.STORING_EFFECTS.get(this.metalType).get()); - //data.getLiving().removeEffect(EffectsRegistry.TAPPING_EFFECTS.get(this.metalType).get()); + if (getMode(data) == 0) + { + //todo check if removing effects on mode change is wise. May be better to let them run out as they have already "paid" for them. + data.getLiving().removeEffect(EffectsRegistry.STORING_EFFECTS.get(this.metalType).get()); + data.getLiving().removeEffect(EffectsRegistry.TAPPING_EFFECTS.get(this.metalType).get()); + } } public boolean isStoring(ISpiritweb data) { return getMode(data) > 0; } + public boolean isTapping(ISpiritweb data) { return getMode(data) < 0; diff --git a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java index 9f49738e2..eda3765cb 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EffectsHelper.java @@ -9,8 +9,6 @@ public class EffectsHelper { - - public static MobEffectInstance getNewEffect(MobEffect effect, int amplifier) { MobEffectInstance effectInstance = new MobEffectInstance( From 6ec8ffc1478f4556ec4b1fc8492662bf67b4dc56 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 19 Jun 2022 21:40:23 +1200 Subject: [PATCH 0286/1090] f-atium nameplate fixes --- .../java/leaf/cosmere/client/ClientSetup.java | 32 ++++++++++++++++++- .../feruchemy/store/DuraluminStoreEffect.java | 17 ---------- 2 files changed, 31 insertions(+), 18 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index bc21f625a..d51b02a48 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -13,6 +13,7 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.store.DuraluminStoreEffect; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; import leaf.cosmere.registry.ContainersRegistry; import leaf.cosmere.registry.EntityRegistry; import leaf.cosmere.registry.ManifestationRegistry; @@ -25,12 +26,16 @@ import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.resources.Resource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.EntityRenderersEvent; +import net.minecraftforge.client.event.RenderNameplateEvent; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -55,7 +60,7 @@ public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefini @SubscribeEvent public static void init(final FMLClientSetupEvent event) { - MinecraftForge.EVENT_BUS.addListener(DuraluminStoreEffect::onRenderNameplateEvent); + MinecraftForge.EVENT_BUS.addListener(ClientSetup::onRenderNameplateEvent); event.enqueueWork(() -> { ContainersRegistry.registerGUIFactories(); @@ -79,6 +84,31 @@ public static void init(final FMLClientSetupEvent event) LogHelper.info("Client setup complete!"); } + public static void onRenderNameplateEvent(RenderNameplateEvent event) + { + if (!(event.getEntity() instanceof LivingEntity livingEntity)) + { + return; + } + + MobEffectInstance effectInstance = livingEntity.getEffect(Metals.MetalType.DURALUMIN.getStoringEffect()); + if (effectInstance != null && effectInstance.getDuration() > 0) + { + if (effectInstance.getAmplifier() > 2) + { + event.setResult(Event.Result.DENY); + } + + } + + final float atiumScale = FeruchemyAtium.getScale(livingEntity); + if (atiumScale < 1) + { + double scale = atiumScale; + event.getPoseStack().translate(0.0D, scale, 0.0D); + } + } + @SubscribeEvent public static void RegisterRenderers(EntityRenderersEvent.RegisterRenderers event) { diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java index 381e7e82b..6a0b8597d 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/DuraluminStoreEffect.java @@ -35,21 +35,4 @@ public void onLivingVisibilityEvent(LivingEvent.LivingVisibilityEvent event) } } - public static void onRenderNameplateEvent(RenderNameplateEvent event) - { - if (!(event.getEntity() instanceof LivingEntity livingEntity)) - { - return; - } - - MobEffectInstance effectInstance = livingEntity.getEffect(Metals.MetalType.DURALUMIN.getStoringEffect()); - if (effectInstance != null && effectInstance.getDuration() > 0) - { - if (effectInstance.getAmplifier() > 2) - { - event.setResult(Event.Result.DENY); - } - - } - } } From 961ffb4f9ffc7184e7482f42e103586e5cee18b7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 20 Jun 2022 13:52:01 +1200 Subject: [PATCH 0287/1090] update build and changelog --- Changelog.md | 3 +++ gradle.properties | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 97c701d23..9ea92b963 100644 --- a/Changelog.md +++ b/Changelog.md @@ -10,6 +10,9 @@ Change feruchemy tap cost to be mode^1.5 instead of mode^2. Shouldn't be so deva Stop spiritwebs being attached to creepers/skeletons and other such mobs. Things should run a little smoother now. Storing enough brass will extinguish yourself if you're on fire. Requires mode 4, or Store Brass IV effect. Feru nicrosil maybe sorta working? Though only if you actually have feru nicrosil, no medallions yet. +Hopefully fixing various effects stuttering that happens on slower connections +Atium feruchemy inverted, so you store size, becoming smaller when storing, larger when tapping. +Fix other people not seeing size changes from atium B47 diff --git a/gradle.properties b/gradle.properties index ccde9e65c..caf45321c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.18.2-40.1.30 parchment_version=2022.05.22 jar_name=Cosmere -build_number=48 +build_number=49 jei_version=9.7.0.194 curios_version=1.18.2-5.0.7.0 From 07c4e7926f3dbe91b7ca50763abbba581b0203ba Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 20 Jun 2022 13:52:11 +1200 Subject: [PATCH 0288/1090] don't disable nicrosil when storing --- .../effects/feruchemy/store/NicrosilStoreEffect.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java index 80ec93829..cd4383e69 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java @@ -4,22 +4,13 @@ package leaf.cosmere.effects.feruchemy.store; -import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.manifestation.feruchemy.FeruchemyNicrosil; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; -import leaf.cosmere.utils.helpers.CompoundNBTHelper; import net.minecraft.world.effect.MobEffectCategory; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeMap; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraftforge.registries.RegistryObject; public class NicrosilStoreEffect extends FeruchemyEffectBase @@ -31,7 +22,8 @@ public NicrosilStoreEffect(Metals.MetalType type, MobEffectCategory effectType) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName) + || manifestation == ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.NICROSIL).get()) { continue; } From d62d5f251c7e1eef8b7429964a14542bf4ec9470 Mon Sep 17 00:00:00 2001 From: Leaf Date: Mon, 20 Jun 2022 13:53:31 +1200 Subject: [PATCH 0289/1090] stop cats and llamas from starting with powers --- .../cosmere/handlers/EntityEventHandler.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 621e1f641..37510eab9 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -84,7 +84,7 @@ public static void onEntityJoinWorldEvent(EntityJoinWorldEvent event) giveEntityStartingManifestation(livingEntity, spiritweb); } } - else if (isValidSpiritWebEntity(eventEntity)) + else if (canStartWithPowers(eventEntity)) { //random 1/16 // only 1 in 16 will have the gene @@ -106,12 +106,21 @@ else if (isValidSpiritWebEntity(eventEntity)) public static boolean isValidSpiritWebEntity(Entity entity) { return entity instanceof Player - || entity instanceof AbstractVillager - || entity instanceof ZombieVillager - || (entity instanceof Raider && !(entity instanceof Ravager)) - || entity instanceof AbstractPiglin - || entity instanceof Llama - || entity instanceof Cat; + || entity instanceof AbstractVillager + || entity instanceof ZombieVillager + || (entity instanceof Raider && !(entity instanceof Ravager)) + || entity instanceof AbstractPiglin + || entity instanceof Llama + || entity instanceof Cat; + } + + public static boolean canStartWithPowers(Entity entity) + { + return entity instanceof Player + || entity instanceof AbstractVillager + || entity instanceof ZombieVillager + || (entity instanceof Raider && !(entity instanceof Ravager)) + || entity instanceof AbstractPiglin; } @SubscribeEvent From d9f9e4396fae4571d66bfdee1e5419361df393c7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 12:01:14 +1200 Subject: [PATCH 0290/1090] 1.19 initial port, game boots --- build.gradle | 7 +- gradle.properties | 12 +-- src/main/java/leaf/cosmere/Cosmere.java | 6 +- .../leaf/cosmere/blocks/MetalOreBlock.java | 4 +- .../cap/entity/SpiritwebCapability.java | 8 +- .../leaf/cosmere/client/ClientEvents.java | 2 +- .../leaf/cosmere/client/ClientHelper.java | 41 ------- .../java/leaf/cosmere/client/ClientSetup.java | 102 ------------------ .../cosmere/client/gui/SpiritwebMenu.java | 28 ++--- .../client/gui/SpriteIconPositioning.java | 20 ---- .../leaf/cosmere/commands/CosmereCommand.java | 10 +- .../arguments/ManifestationsArgumentType.java | 6 +- .../subcommands/ManifestationCommand.java | 37 ++++--- .../commands/subcommands/TestCommand.java | 4 +- .../cosmere/compat/hwyla/HwylaCompat.java | 6 +- .../compat/hwyla/SpiritWebTooltip.java | 19 ++-- .../leaf/cosmere/compat/jei/JEICompat.java | 2 +- .../leaf/cosmere/constants/Constants.java | 31 +++--- .../java/leaf/cosmere/constants/Metals.java | 15 +-- .../coinpouch/CoinPouchContainer.java | 2 +- .../java/leaf/cosmere/datagen/DataGen.java | 24 ++--- .../java/leaf/cosmere/datagen/RecipeGen.java | 8 +- .../datagen/advancements/AdvancementGen.java | 14 ++- .../advancements/AllomancyAdvancements.java | 17 ++- .../advancements/CoreAdvancements.java | 61 ----------- .../advancements/FeruchemyAdvancements.java | 14 +-- .../advancements/HemalurgyAdvancements.java | 14 +-- .../datagen/biome/BiomeFeatureModifier.java | 59 ++++++++++ .../datagen/biome/BiomeModifierGen.java | 94 ++++++++++++++++ .../datagen/blocks/BlockModelsGen.java | 11 +- .../cosmere/datagen/blocks/BlockTagsGen.java | 6 +- .../cosmere/datagen/items/ItemModelsGen.java | 3 +- .../cosmere/datagen/language/EngLangGen.java | 44 ++------ .../datagen/patchouli/PatchouliGen.java | 16 ++- .../categories/PatchouliAllomancy.java | 7 +- .../categories/PatchouliFeruchemy.java | 2 +- .../effects/feruchemy/tap/SteelTapEffect.java | 2 +- .../leaf/cosmere/handlers/CommonEvents.java | 39 ------- .../cosmere/items/ChargeableItemBase.java | 2 +- .../leaf/cosmere/items/CoinPouchItem.java | 3 +- .../java/leaf/cosmere/items/GuideItem.java | 5 +- .../items/curio/BandsOfMourningItem.java | 2 +- .../items/curio/HemalurgicSpikeItem.java | 2 +- .../cosmere/items/curio/IHemalurgicInfo.java | 2 +- .../cosmere/loot/FortuneBonusModifier.java | 10 +- .../cosmere/manifestation/AManifestation.java | 39 +++++-- .../allomancy/AllomancyIronSteel.java | 33 +++--- .../ChangeManifestationModeMessage.java | 3 +- .../ChangeSelectedManifestationMessage.java | 9 +- .../DeactivateManifestationsMessage.java | 6 +- .../SetSelectedManifestationMessage.java | 2 +- .../leaf/cosmere/registry/BiomeRegistry.java | 17 +++ .../cosmere/registry/ContainersRegistry.java | 4 +- .../registry/ManifestationRegistry.java | 5 +- .../registry/PointOfInterestRegistry.java | 5 +- .../cosmere/registry/ResourceKeyRegistry.java | 2 - .../registry/VillagerProfessionRegistry.java | 19 +++- .../utils/helpers/ResourceLocationHelper.java | 28 +++++ .../cosmere/utils/helpers/TextHelper.java | 28 +++-- .../resources/META-INF/accesstransformer.cfg | 9 -- 60 files changed, 464 insertions(+), 568 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/client/ClientHelper.java delete mode 100644 src/main/java/leaf/cosmere/client/gui/SpriteIconPositioning.java delete mode 100644 src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java create mode 100644 src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java create mode 100644 src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java create mode 100644 src/main/java/leaf/cosmere/registry/BiomeRegistry.java diff --git a/build.gradle b/build.gradle index 9eb8b2997..3f94645db 100644 --- a/build.gradle +++ b/build.gradle @@ -25,7 +25,7 @@ version = "${forge_version}-b${build_number}" group = 'leaf.cosmere' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "${project.jar_name}" -java.toolchain.languageVersion = JavaLanguageVersion.of(17) // Mojang ships Java 8 to end users, so your mod should target Java 8. +java.toolchain.languageVersion = JavaLanguageVersion.of(17) // Include resources generated by data generators. sourceSets { @@ -33,7 +33,7 @@ sourceSets { } minecraft { - mappings channel: 'parchment', version: "${parchment_version}-${minecraft_version}" + mappings channel: 'official', version: "${minecraft_version}"//'parchment', version: '1.18.2-2022.03.13-1.19'//'parchment', version: "${parchment_version}-${minecraft_version}" accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') runs { @@ -123,8 +123,7 @@ dependencies { annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}:api") - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}:${jei_version}") + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") diff --git a/gradle.properties b/gradle.properties index caf45321c..392a8d944 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,14 +3,14 @@ org.gradle.jvmargs=-Xmx8G # #Tue Feb 01 08:46:10 NZDT 2022 -minecraft_version=1.18.2 -forge_version=1.18.2-40.1.30 +minecraft_version=1.19 +forge_version=1.19-41.0.45 parchment_version=2022.05.22 jar_name=Cosmere build_number=49 -jei_version=9.7.0.194 -curios_version=1.18.2-5.0.7.0 -patchouli_version=1.18.2-67 -jade_id=3761542 \ No newline at end of file +jei_version=11.0.0.206 +curios_version=1.19-5.1.0.2 +patchouli_version=1.19-72 +jade_id=3834998 \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index 4efe2065a..e33048a21 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -5,19 +5,17 @@ package leaf.cosmere; import leaf.cosmere.cap.entity.ISpiritweb; -import leaf.cosmere.client.ClientSetup; import leaf.cosmere.commands.CosmereCommand; import leaf.cosmere.compat.curios.CuriosCompat; import leaf.cosmere.compat.patchouli.PatchouliCompat; +import leaf.cosmere.datagen.biome.BiomeFeatureModifier; import leaf.cosmere.handlers.ColorHandler; import leaf.cosmere.network.Network; import leaf.cosmere.registry.*; import leaf.cosmere.utils.helpers.LogHelper; -import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.DistExecutor; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; @@ -56,6 +54,8 @@ public Cosmere() PointOfInterestRegistry.POINT_OF_INTERESTS.register(modBus); VillagerProfessionRegistry.VILLAGE_PROFESSIONS.register(modBus); ContainersRegistry.CONTAINERS.register(modBus); + BiomeRegistry.BIOME_MODIFIERS.register(modBus); + BiomeRegistry.BIOME_MODIFIERS.register(BiomeFeatureModifier.ADD_FEATURE.getPath(), BiomeFeatureModifier::makeCodec); FeatureRegistry.FEATURES.register(modBus); RecipeRegistry.SPECIAL_RECIPES.register(modBus); diff --git a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java index c5471f005..166316e0f 100644 --- a/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java +++ b/src/main/java/leaf/cosmere/blocks/MetalOreBlock.java @@ -8,9 +8,9 @@ import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.properties.PropTypes; import net.minecraft.util.valueproviders.UniformInt; -import net.minecraft.world.level.block.OreBlock; +import net.minecraft.world.level.block.DropExperienceBlock; -public class MetalOreBlock extends OreBlock implements IHasMetalType +public class MetalOreBlock extends DropExperienceBlock implements IHasMetalType { private final Metals.MetalType metalType; diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index 423ea713d..a1cbf36c2 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -123,7 +123,7 @@ public CompoundTag serializeNBT() CompoundTag nbt = new CompoundTag(); nbt.putBoolean("assigned_powers", hasBeenInitialized); - nbt.putString("selected_power", selectedManifestation.getRegistryName().toString()); + nbt.putString("selected_power", selectedManifestation.getResourceLocation().toString()); nbt.putInt("stored_breaths", biochromaticBreathStored); nbt.putInt("stored_stormlight", stormlightStored); nbt.putInt("eye_height", eyeHeight); @@ -133,7 +133,7 @@ public CompoundTag serializeNBT() { if (MANIFESTATIONS_MODE.containsKey(manifestation)) { - modeNBT.putInt(manifestation.getRegistryName().toString(), MANIFESTATIONS_MODE.get(manifestation)); + modeNBT.putInt(manifestation.getResourceLocation().toString(), MANIFESTATIONS_MODE.get(manifestation)); } } nbt.put("manifestation_modes", modeNBT); @@ -160,7 +160,7 @@ public void deserializeNBT(CompoundTag nbt) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - final String manifestationLoc = manifestation.getRegistryName().toString(); + final String manifestationLoc = manifestation.getResourceLocation().toString(); int oldManifestationMode = MANIFESTATIONS_MODE.getOrDefault(manifestation,0); int newManifestationMode = 0; @@ -724,7 +724,7 @@ public String changeManifestation(int dir) } } - return selectedManifestation.translation().getKey(); + return selectedManifestation.translationKey(); } @Override diff --git a/src/main/java/leaf/cosmere/client/ClientEvents.java b/src/main/java/leaf/cosmere/client/ClientEvents.java index 1cbb8d8e0..99a8d82d8 100644 --- a/src/main/java/leaf/cosmere/client/ClientEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientEvents.java @@ -169,7 +169,7 @@ public static void renderSpiritwebHUD(final RenderGameOverlayEvent.Post event) //if (!SpiritwebMenu.instance.isVisible()) { - spiritweb.renderSelectedHUD(event.getMatrixStack()); + spiritweb.renderSelectedHUD(event.getPoseStack()); } SpiritwebMenu.instance.postRender(event, spiritweb); diff --git a/src/main/java/leaf/cosmere/client/ClientHelper.java b/src/main/java/leaf/cosmere/client/ClientHelper.java deleted file mode 100644 index 274aaf919..000000000 --- a/src/main/java/leaf/cosmere/client/ClientHelper.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.client; - -import leaf.cosmere.client.gui.SpriteIconPositioning; -import leaf.cosmere.manifestation.AManifestation; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; - -import java.util.HashMap; - -public class ClientHelper -{ - public static ClientHelper instance = new ClientHelper(); - public static TextureAtlasSprite arrowUp; - public static TextureAtlasSprite arrowDown; - public static TextureAtlasSprite on; - public static TextureAtlasSprite off; - - public static TextureAtlasSprite allomancy; - public static TextureAtlasSprite feruchemy; - public static TextureAtlasSprite surgebinding; - private final HashMap manifestationSprites = new HashMap<>(); - public static TextureAtlasSprite blank; - public static SpriteIconPositioning blankSIP; - - public void setIconForManifestation(AManifestation manifestation, SpriteIconPositioning sip) - { - manifestationSprites.put(manifestation, sip); - } - - public SpriteIconPositioning getIconForManifestation(AManifestation manifestation) - { - if (!manifestationSprites.containsKey(manifestation)) - { - return blankSIP; - } - return manifestationSprites.get(manifestation); - } -} diff --git a/src/main/java/leaf/cosmere/client/ClientSetup.java b/src/main/java/leaf/cosmere/client/ClientSetup.java index d51b02a48..0fedd58d7 100644 --- a/src/main/java/leaf/cosmere/client/ClientSetup.java +++ b/src/main/java/leaf/cosmere/client/ClientSetup.java @@ -5,32 +5,24 @@ package leaf.cosmere.client; import leaf.cosmere.Cosmere; -import leaf.cosmere.client.gui.SpriteIconPositioning; import leaf.cosmere.client.render.curio.CurioRenderers; import leaf.cosmere.client.render.curio.CuriosLayerDefinitions; import leaf.cosmere.client.render.curio.model.BraceletModel; import leaf.cosmere.client.render.curio.model.SpikeModel; import leaf.cosmere.constants.Metals; -import leaf.cosmere.effects.feruchemy.store.DuraluminStoreEffect; -import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; import leaf.cosmere.registry.ContainersRegistry; import leaf.cosmere.registry.EntityRegistry; -import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.ResourceLocationHelper; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.ItemBlockRenderTypes; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.entity.ThrownItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.resources.Resource; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RenderNameplateEvent; import net.minecraftforge.client.event.TextureStitchEvent; @@ -40,8 +32,6 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import java.awt.image.BufferedImage; -import java.io.IOException; import java.util.Locale; @Mod.EventBusSubscriber(modid = Cosmere.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) @@ -148,96 +138,4 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) } } - //special thank you to the chisels and bits team who have an example of how to to register other sprites - @SubscribeEvent - public static void retrieveRegisteredIconSprites(final TextureStitchEvent.Post event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - ClientHelper.blank = map.getSprite(ResourceLocationHelper.prefix("icon/blank")); - ClientHelper.arrowUp = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_up")); - ClientHelper.arrowDown = map.getSprite(ResourceLocationHelper.prefix("icon/arrow_down")); - ClientHelper.on = map.getSprite(ResourceLocationHelper.prefix("icon/on")); - ClientHelper.off = map.getSprite(ResourceLocationHelper.prefix("icon/off")); - - ClientHelper.allomancy = map.getSprite(ResourceLocationHelper.prefix("icon/allomancy")); - ClientHelper.feruchemy = map.getSprite(ResourceLocationHelper.prefix("icon/feruchemy")); - ClientHelper.surgebinding = map.getSprite(ResourceLocationHelper.prefix("icon/surgebinding")); - - ClientHelper.blankSIP = getSIP(map, "blank"); - - for (final Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } - - //get allomantic version - AManifestation allo = ManifestationRegistry.ALLOMANCY_POWERS.get(metalType).get(); - AManifestation feru = ManifestationRegistry.FERUCHEMY_POWERS.get(metalType).get(); - - ClientHelper.instance.setIconForManifestation(allo, getSIP(map, "allomancy/" + metalType.toString())); - ClientHelper.instance.setIconForManifestation(feru, getSIP(map, "feruchemy/" + metalType.toString())); - } - } - - private static SpriteIconPositioning getSIP(final TextureAtlas map, final String path) - { - final SpriteIconPositioning sip = new SpriteIconPositioning(); - - final ResourceLocation sprite = ResourceLocationHelper.prefix("icon/" + path.toLowerCase(Locale.ROOT)); - final ResourceLocation png = ResourceLocationHelper.prefix("textures/icon/" + path.toLowerCase(Locale.ROOT) + ".png"); - - sip.sprite = map.getSprite(sprite); - - try - { - final Resource iresource = Minecraft.getInstance().getResourceManager().getResource(png); - final BufferedImage bi = TextureUtils.readBufferedImage(iresource.getInputStream()); - - int bottom = 0; - int right = 0; - sip.left = bi.getWidth(); - sip.top = bi.getHeight(); - - for (int x = 0; x < bi.getWidth(); x++) - { - for (int y = 0; y < bi.getHeight(); y++) - { - final int color = bi.getRGB(x, y); - final int a = color >> 24 & 0xff; - if (a > 0) - { - sip.left = Math.min(sip.left, x); - right = Math.max(right, x); - - sip.top = Math.min(sip.top, y); - bottom = Math.max(bottom, y); - } - } - } - - sip.height = bottom - sip.top + 1; - sip.width = right - sip.left + 1; - - sip.left /= bi.getWidth(); - sip.width /= bi.getWidth(); - sip.top /= bi.getHeight(); - sip.height /= bi.getHeight(); - } - catch (final IOException e) - { - sip.height = 1; - sip.width = 1; - sip.left = 0; - sip.top = 0; - } - - return sip; - } } diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index cec58ad33..170402edd 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -17,7 +17,6 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.client.ClientHelper; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; @@ -35,7 +34,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.Direction; -import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.client.event.RenderGameOverlayEvent; import org.jetbrains.annotations.NotNull; @@ -65,7 +64,7 @@ public class SpiritwebMenu extends Screen protected SpiritwebMenu() { - super(new TextComponent("Menu")); + super(Component.literal("Menu")); } @Override @@ -391,7 +390,7 @@ private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int mi y[0] = (int) middle_y / 2; int rightSideX = middle_x + 35; - font.drawShadow(matrixStack, I18n.get(selectedManifestation.translation().getKey()), rightSideX, y[0], 0xffffffff); + font.drawShadow(matrixStack, I18n.get(selectedManifestation.translationKey()), rightSideX, y[0], 0xffffffff); //todo mode translation font.drawShadow(matrixStack, "Mode: " + spiritweb.getMode(selectedManifestation), rightSideX, y[0] + 10, 0xffffffff); @@ -440,7 +439,7 @@ private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int final int fixed_y = (int) y;//(y + TEXT_DISTANCE); //todo localisation check - final String text = I18n.get(button.manifestation.translation().getKey()); + final String text = I18n.get(button.manifestation.translationKey()); fixed_x = (int) (x < 0 ? fixed_x - (font.width(text) + TEXT_DISTANCE) @@ -483,25 +482,10 @@ private void renderRadialButtonIcons(PoseStack matrixStack, double middleX, doub final double x = menuRegion.centerX; final double y = menuRegion.centerY; - final SpriteIconPositioning sip = ClientHelper.instance.getIconForManifestation(menuRegion.manifestation); - - final double scalex = 15 * sip.width * 0.5; - final double scaley = 15 * sip.height * 0.5; + final double scalex = 15 * 0.5; + final double scaley = 15 * 0.5; final double x1 = x - scalex; - final double x2 = x + scalex; final double y1 = y - scaley; - final double y2 = y + scaley; - - final TextureAtlasSprite sprite = sip.sprite; - - final float f = 1.0f; - final float a = 1.0f; - - final double u1 = sip.left * 16.0; - final double u2 = (sip.left + sip.width) * 16.0; - final double v1 = sip.top * 16.0; - final double v2 = (sip.top + sip.height) * 16.0; - AManifestation mani = menuRegion.manifestation; final Manifestations.ManifestationTypes manifestationType = mani.getManifestationType(); diff --git a/src/main/java/leaf/cosmere/client/gui/SpriteIconPositioning.java b/src/main/java/leaf/cosmere/client/gui/SpriteIconPositioning.java deleted file mode 100644 index 3a0682cf8..000000000 --- a/src/main/java/leaf/cosmere/client/gui/SpriteIconPositioning.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * File created ~ 24 - 4 - 2021 ~ Leaf - * - * Special thank you to the Chisels and Bits team for their example of rendering a dynamic menu based on given elements! - * https://github.com/ChiselsAndBits/Chisels-and-Bits - */ - -package leaf.cosmere.client.gui; - -import net.minecraft.client.renderer.texture.TextureAtlasSprite; - -public class SpriteIconPositioning -{ - public TextureAtlasSprite sprite; - - public double left; - public double top; - public double width; - public double height; -} diff --git a/src/main/java/leaf/cosmere/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/commands/CosmereCommand.java index bda10a197..7a479657a 100644 --- a/src/main/java/leaf/cosmere/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/commands/CosmereCommand.java @@ -13,11 +13,10 @@ import leaf.cosmere.commands.arguments.ManifestationsArgumentType; import leaf.cosmere.commands.subcommands.EyeCommand; import leaf.cosmere.commands.subcommands.ManifestationCommand; -import leaf.cosmere.commands.subcommands.TestCommand; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.commands.synchronization.ArgumentTypes; -import net.minecraft.commands.synchronization.EmptyArgumentSerializer; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; public class CosmereCommand @@ -26,12 +25,13 @@ public class CosmereCommand public static void register(CommandDispatcher dispatcher) { dispatcher.register(Commands.literal(Cosmere.MODID) - //.then(TestCommand.register(dispatcher)) .then(EyeCommand.register(dispatcher)) .then(ManifestationCommand.register(dispatcher)) ); } public static void registerCustomArgumentTypes() { - ArgumentTypes.register("cosmere:manifestations_argument", ManifestationsArgumentType.class, new EmptyArgumentSerializer<>(ManifestationsArgumentType::createArgument)); + ArgumentTypeInfos.registerByClass( + ManifestationsArgumentType.class, + SingletonArgumentInfo.contextFree(ManifestationsArgumentType::createArgument)); } } diff --git a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java index f877cf00a..22c2e0069 100644 --- a/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java +++ b/src/main/java/leaf/cosmere/commands/arguments/ManifestationsArgumentType.java @@ -17,7 +17,7 @@ import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.ChatFormatting; import net.minecraft.commands.SharedSuggestionProvider; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import java.util.Collection; @@ -41,7 +41,7 @@ public Collection getExamples() public static final DynamicCommandExceptionType INVALID_MANIFESTATION_EXCEPTION = new DynamicCommandExceptionType((manifestation) -> - new TranslatableComponent(Constants.Strings.POWER_INVALID, manifestation)); + Component.translatable(Constants.Strings.POWER_INVALID, manifestation)); public static ManifestationsArgumentType createArgument() { @@ -73,7 +73,7 @@ public static SuggestionsBuilder addManifestationNamesWithTooltip(SuggestionsBui Map map = ManifestationRegistry.getManifestations(); if (!map.isEmpty()) { - map.forEach((key, value) -> builder.suggest(key.toString(), new TranslatableComponent(value).withStyle((style) -> style.withColor(ChatFormatting.GREEN)))); + map.forEach((key, value) -> builder.suggest(key.toString(), Component.translatable(value).withStyle((style) -> style.withColor(ChatFormatting.GREEN)))); } builder.buildFuture(); return builder; diff --git a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java index c0c4bf0ed..ee332cc1f 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/ManifestationCommand.java @@ -19,9 +19,8 @@ import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.commands.arguments.EntityArgument; -import net.minecraft.network.chat.BaseComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.level.ServerPlayer; import java.util.Collection; @@ -45,11 +44,11 @@ private static int check(CommandContext context) throws Comm { CommandSourceStack source = context.getSource(); - TranslatableComponent powersFound = new TranslatableComponent(Constants.Strings.POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); + MutableComponent powersFound = Component.translatable(Constants.Strings.POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); - final BaseComponent leftBracketTextComponent = new TextComponent("["); - final BaseComponent rightBracketTextComponent = new TextComponent("]"); - final TextComponent space = new TextComponent(" "); + final MutableComponent leftBracketTextComponent = Component.literal("["); + final MutableComponent rightBracketTextComponent = Component.literal("]"); + final MutableComponent space = Component.literal(" "); //figure out which manifestations a player has for (AManifestation manifestation : spiritweb.getAvailableManifestations()) @@ -79,8 +78,8 @@ private static int clear(CommandContext context) throws Comm CommandSourceStack source = context.getSource(); iSpiritweb.clearManifestations(); iSpiritweb.syncToClients(null); - BaseComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + MutableComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); + source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); }); } @@ -101,8 +100,8 @@ private static int reroll(CommandContext context) throws Com //set to none so that it auto updates to the new available ones on sync iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); iSpiritweb.syncToClients(null); - BaseComponent playerTextObject = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + MutableComponent playerTextObject = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); + source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); }); } @@ -120,20 +119,20 @@ private static int give(CommandContext context) throws Comma CommandSourceStack source = context.getSource(); AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - BaseComponent playerText = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); + MutableComponent playerText = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); - BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + MutableComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); if (manifestation == null) { - source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + source.sendFailure(Component.translatable(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); return 0; } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { //todo config ability strength spiritweb.giveManifestation(manifestation, 10); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); spiritweb.syncToClients(null); }); } @@ -149,20 +148,20 @@ private static int remove(CommandContext context) throws Com CommandSourceStack source = context.getSource(); AManifestation manifestation = context.getArgument("manifestation", AManifestation.class); - BaseComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); + MutableComponent playerText = TextHelper.getPlayerTextObject(source.getLevel(), player.getUUID()); - BaseComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); + MutableComponent manifestationText = TextHelper.createTextWithTooltip(manifestation.translation(), manifestation.description()); if (manifestation == null) { - source.sendFailure(new TranslatableComponent(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); + source.sendFailure(Component.translatable(Constants.Strings.POWER_SET_FAIL, playerText, manifestationText)); return 0; } SpiritwebCapability.get(player).ifPresent((spiritweb) -> { spiritweb.removeManifestation(manifestation); spiritweb.syncToClients(null); - source.sendSuccess(new TranslatableComponent(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); }); } return Command.SINGLE_SUCCESS; diff --git a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java index 875d53b1a..5b2ce7798 100644 --- a/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java +++ b/src/main/java/leaf/cosmere/commands/subcommands/TestCommand.java @@ -10,7 +10,7 @@ import com.mojang.brigadier.exceptions.CommandSyntaxException; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; @@ -25,7 +25,7 @@ private static int testSub(CommandContext context, ServerPla private static int testSub(CommandContext context, ServerLevel world) { CommandSourceStack source = context.getSource(); - source.sendSuccess(new TranslatableComponent("command.cosmere.test.sub"), true); + source.sendSuccess(Component.translatable("command.cosmere.test.sub"), true); return SINGLE_SUCCESS; } diff --git a/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java b/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java index 69be583cd..ed240fc36 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/HwylaCompat.java @@ -4,8 +4,10 @@ package leaf.cosmere.compat.hwyla; -import mcp.mobius.waila.api.*; import net.minecraft.world.entity.LivingEntity; +import snownee.jade.api.IWailaClientRegistration; +import snownee.jade.api.IWailaPlugin; +import snownee.jade.api.WailaPlugin; @WailaPlugin public class HwylaCompat implements IWailaPlugin @@ -13,6 +15,6 @@ public class HwylaCompat implements IWailaPlugin @Override public void registerClient(IWailaClientRegistration registration) { - registration.registerComponentProvider(SpiritWebTooltip.INSTANCE, TooltipPosition.BODY, LivingEntity.class); + registration.registerEntityComponent(SpiritWebTooltip.INSTANCE, LivingEntity.class); } } diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 272e66819..83ce37375 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -5,26 +5,30 @@ package leaf.cosmere.compat.hwyla; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.manifestation.allomancy.AllomancyBronze; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; -import leaf.cosmere.utils.helpers.TextHelper; -import mcp.mobius.waila.api.EntityAccessor; -import mcp.mobius.waila.api.IEntityComponentProvider; -import mcp.mobius.waila.api.ITooltip; -import mcp.mobius.waila.api.config.IPluginConfig; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; +import snownee.jade.api.EntityAccessor; +import snownee.jade.api.IEntityComponentProvider; +import snownee.jade.api.ITooltip; +import snownee.jade.api.config.IPluginConfig; public class SpiritWebTooltip implements IEntityComponentProvider { static final SpiritWebTooltip INSTANCE = new SpiritWebTooltip(); + @Override + public ResourceLocation getUid() + { + return ResourceLocationHelper.prefix("spirit_web"); + } @Override public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConfig iPluginConfig) @@ -67,4 +71,5 @@ public void appendTooltip(ITooltip tooltip, EntityAccessor accessor, IPluginConf } }); } + } diff --git a/src/main/java/leaf/cosmere/compat/jei/JEICompat.java b/src/main/java/leaf/cosmere/compat/jei/JEICompat.java index ce7272fad..474414d55 100644 --- a/src/main/java/leaf/cosmere/compat/jei/JEICompat.java +++ b/src/main/java/leaf/cosmere/compat/jei/JEICompat.java @@ -65,7 +65,7 @@ private void addItemInfoPage(IRecipeRegistration reg, Item item) reg.addIngredientInfo( new ItemStack(item), VanillaTypes.ITEM_STACK, - TextHelper.createTranslatedText(String.format("item.cosmere.%s.tooltip", item.getRegistryName().getPath()) + TextHelper.createTranslatedText(String.format("item.cosmere.%s.tooltip", item.toString()) )); } diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index ac0ff7ccd..911c6b5a0 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -6,9 +6,8 @@ import leaf.cosmere.Cosmere; import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.TextComponent; -import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.resources.ResourceLocation; import java.util.UUID; @@ -28,8 +27,8 @@ public static class Resources public static class Suffix { - public static final MutableComponent INVESTITURE_UNITS = new TextComponent(" IU").withStyle(ChatFormatting.RESET); - public static final MutableComponent STORMLIGHT_UNITS = new TextComponent(" SU").withStyle(ChatFormatting.RESET); + public static final MutableComponent INVESTITURE_UNITS = Component.literal(" IU").withStyle(ChatFormatting.RESET); + public static final MutableComponent STORMLIGHT_UNITS = Component.literal(" SU").withStyle(ChatFormatting.RESET); } public static class NBT @@ -116,21 +115,21 @@ public static class Strings public static class Translations { - public static final TranslatableComponent TOOLTIP_HOLD_SHIFT = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "shift"); - public static final TranslatableComponent TOOLTIP_CONTROL = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "control"); - public static final TranslatableComponent TOOLTIP_SHIFT_AND_CONTROL = new TranslatableComponent(Strings.TOOLTIP_ITEM_INFO + "shift_control"); + public static final MutableComponent TOOLTIP_HOLD_SHIFT = Component.translatable(Strings.TOOLTIP_ITEM_INFO + "shift"); + public static final MutableComponent TOOLTIP_CONTROL = Component.translatable(Strings.TOOLTIP_ITEM_INFO + "control"); + public static final MutableComponent TOOLTIP_SHIFT_AND_CONTROL = Component.translatable(Strings.TOOLTIP_ITEM_INFO + "shift_control"); - public static final TranslatableComponent GUI_NEXT = new TranslatableComponent(Strings.GUI + "next"); - public static final TranslatableComponent GUI_PREV = new TranslatableComponent(Strings.GUI + "previous"); - public static final TranslatableComponent GUI_SELECT = new TranslatableComponent(Strings.GUI + "select"); - public static final TranslatableComponent GUI_CONFIRM = new TranslatableComponent(Strings.GUI + "confirm"); - public static final TranslatableComponent GUI_SAVE = new TranslatableComponent(Strings.GUI + "save"); - public static final TranslatableComponent GUI_CANCEL = new TranslatableComponent(Strings.GUI + "cancel"); + public static final MutableComponent GUI_NEXT = Component.translatable(Strings.GUI + "next"); + public static final MutableComponent GUI_PREV = Component.translatable(Strings.GUI + "previous"); + public static final MutableComponent GUI_SELECT = Component.translatable(Strings.GUI + "select"); + public static final MutableComponent GUI_CONFIRM = Component.translatable(Strings.GUI + "confirm"); + public static final MutableComponent GUI_SAVE = Component.translatable(Strings.GUI + "save"); + public static final MutableComponent GUI_CANCEL = Component.translatable(Strings.GUI + "cancel"); - public static final TranslatableComponent GUI_BACK = new TranslatableComponent(Strings.GUI + "button.back"); + public static final MutableComponent GUI_BACK = Component.translatable(Strings.GUI + "button.back"); - public static final TranslatableComponent POWER_ACTIVE = new TranslatableComponent(Strings.POWER_ACTIVE); - public static final TranslatableComponent POWER_INACTIVE = new TranslatableComponent(Strings.POWER_INACTIVE); + public static final MutableComponent POWER_ACTIVE = Component.translatable(Strings.POWER_ACTIVE); + public static final MutableComponent POWER_INACTIVE = Component.translatable(Strings.POWER_INACTIVE); } } diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 00a3273e8..6badf7515 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -18,6 +18,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Cat; +import net.minecraft.world.entity.animal.CatVariant; import net.minecraft.world.entity.animal.Pufferfish; import net.minecraft.world.entity.animal.Rabbit; import net.minecraft.world.entity.boss.enderdragon.EnderDragon; @@ -30,7 +31,7 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.block.OreBlock; +import net.minecraft.world.level.block.DropExperienceBlock; import java.awt.*; import java.util.*; @@ -304,12 +305,12 @@ public MetalBlock getBlock() return BlocksRegistry.METAL_BLOCKS.get(this).get(); } - public OreBlock getOreBlock() + public DropExperienceBlock getOreBlock() { return BlocksRegistry.METAL_ORE.get(this).get(); } - public OreBlock getDeepslateOreBlock() + public DropExperienceBlock getDeepslateOreBlock() { return BlocksRegistry.METAL_ORE_DEEPSLATE.get(this).get(); } @@ -702,7 +703,7 @@ else if (killedEntity instanceof Cat) case COPPER: //Steals mental fortitude, memory, and intelligence //increase base xp gain rate - final float potentialRewardRate = killedEntity.getExperienceReward(playerEntity) / 150f; + final float potentialRewardRate = killedEntity.getExperienceReward() / 150f; if (killedEntity instanceof Player) { @@ -765,12 +766,12 @@ else if (killedEntity instanceof Pufferfish) } else if (killedEntity instanceof Cat cat) { - final int catType = cat.getCatType(); - if (catType == 10)//all black + final CatVariant catType = cat.getCatVariant(); + if (catType == CatVariant.BLACK)//all black { strengthToAdd = -5; } - else if (catType == 8)//white + else if (catType == CatVariant.WHITE)//white { strengthToAdd = 1; } diff --git a/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java index e9d16fdac..4a034ff68 100644 --- a/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java +++ b/src/main/java/leaf/cosmere/containers/coinpouch/CoinPouchContainer.java @@ -22,7 +22,7 @@ public class CoinPouchContainer extends AbstractContainerMenu { - @ObjectHolder(Cosmere.MODID + ":coin_pouch") + @ObjectHolder(registryName = "coin_pouch_container", value = (Cosmere.MODID + ":coin_pouch")) public static MenuType TYPE; public static CoinPouchContainer fromNetwork(int windowId, Inventory inv, FriendlyByteBuf buf) diff --git a/src/main/java/leaf/cosmere/datagen/DataGen.java b/src/main/java/leaf/cosmere/datagen/DataGen.java index d5a25e047..f4f299ca9 100644 --- a/src/main/java/leaf/cosmere/datagen/DataGen.java +++ b/src/main/java/leaf/cosmere/datagen/DataGen.java @@ -11,6 +11,7 @@ import com.google.gson.GsonBuilder; import leaf.cosmere.Cosmere; import leaf.cosmere.datagen.advancements.AdvancementGen; +import leaf.cosmere.datagen.biome.BiomeModifierGen; import leaf.cosmere.datagen.blocks.BlockModelsGen; import leaf.cosmere.datagen.blocks.BlockTagsGen; import leaf.cosmere.datagen.items.ItemModelsGen; @@ -37,25 +38,22 @@ public static void onDataGen(GatherDataEvent event) DataGenerator generator = event.getGenerator(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(new EngLangGen(generator)); + generator.addProvider(true, new EngLangGen(generator)); BlockTagsGen blockTags = new BlockTagsGen(generator, existingFileHelper); - generator.addProvider(blockTags); - generator.addProvider(new ItemTagsGen(generator, blockTags, existingFileHelper)); + generator.addProvider(true, blockTags); + generator.addProvider(true, new ItemTagsGen(generator, blockTags, existingFileHelper)); - if (!event.includeClient()) - { - return; - } + generator.addProvider(true, new ItemModelsGen(generator, existingFileHelper)); + generator.addProvider(true, new BlockModelsGen(generator, existingFileHelper)); + generator.addProvider(true, new LootTableGen(generator)); + generator.addProvider(true, new RecipeGen(generator)); - generator.addProvider(new ItemModelsGen(generator, existingFileHelper)); - generator.addProvider(new BlockModelsGen(generator, existingFileHelper)); - generator.addProvider(new LootTableGen(generator)); - generator.addProvider(new RecipeGen(generator)); + generator.addProvider(true, new AdvancementGen(generator)); - generator.addProvider(new AdvancementGen(generator)); + generator.addProvider(true, new PatchouliGen(generator)); - generator.addProvider(new PatchouliGen(generator)); + generator.addProvider(true, new BiomeModifierGen(generator)); } diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index d7ea94c13..b03c16e8d 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -23,6 +23,7 @@ import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.registries.ForgeRegistries; import javax.annotation.Nullable; import java.util.Arrays; @@ -254,15 +255,16 @@ private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) { - String name = result.getRegistryName().getPath(); - String path = ore.asItem().getRegistryName().getPath(); + + String name = ResourceLocationHelper.get(result).getPath(); + String path = ResourceLocationHelper.get(ore.asItem()).getPath(); SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); } protected static void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) { - String name = result.getRegistryName().getPath(); + String name = ResourceLocationHelper.get(result).getPath(); SimpleCookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, RecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, RecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java index 230bcf315..31b34b383 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AdvancementGen.java @@ -6,14 +6,13 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import leaf.cosmere.utils.helpers.LogHelper; import net.minecraft.advancements.Advancement; +import net.minecraft.data.CachedOutput; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; -import net.minecraft.data.HashCache; import net.minecraft.resources.ResourceLocation; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Path; @@ -23,10 +22,8 @@ public class AdvancementGen implements DataProvider { - private static final Gson GSON = (new GsonBuilder()).setPrettyPrinting().create(); private final DataGenerator generator; private final List>> advancements = ImmutableList.of( - //new CoreAdvancements(), new AllomancyAdvancements(), new FeruchemyAdvancements(), new HemalurgyAdvancements() @@ -40,7 +37,8 @@ public AdvancementGen(DataGenerator generatorIn) /** * Performs this provider's action. */ - public void run(HashCache cache) throws IOException + @Override + public void run(@NotNull CachedOutput cache) throws IOException { Path path = this.generator.getOutputFolder(); Set set = Sets.newHashSet(); @@ -56,7 +54,7 @@ public void run(HashCache cache) throws IOException try { - DataProvider.save(GSON, cache, advancement.deconstruct().serializeToJson(), path1); + DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); } catch (IOException ioexception) { @@ -81,7 +79,7 @@ private static Path getPath(Path pathIn, Advancement advancementIn) /** * Gets a name for this provider, to use in logging. */ - public String getName() + public @NotNull String getName() { return "Cosmere Advancements"; } diff --git a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java index ccb8223c8..01097ef0d 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/AllomancyAdvancements.java @@ -5,7 +5,6 @@ package leaf.cosmere.datagen.advancements; import leaf.cosmere.constants.Metals; -import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.ManifestationRegistry; @@ -14,13 +13,9 @@ import net.minecraft.advancements.FrameType; import net.minecraft.advancements.critereon.*; import net.minecraft.commands.CommandFunction; -import net.minecraft.core.Registry; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceKey; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; import net.minecraftforge.registries.RegistryObject; import java.util.function.Consumer; @@ -41,14 +36,14 @@ public void accept(Consumer advancementConsumer) Advancement root = Advancement.Builder.advancement() .display(ItemsRegistry.METAL_VIAL.get(), - new TranslatableComponent(String.format(titleFormat, tabName)), - new TranslatableComponent(String.format(descriptionFormat, tabName)), + Component.translatable(String.format(titleFormat, tabName)), + Component.translatable(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, false,//showToast false,//announceChat false)//hidden - .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) + .addCriterion("tick", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.ANY)) .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); @@ -64,8 +59,8 @@ public void accept(Consumer advancementConsumer) .parent(root) .display( item, - new TranslatableComponent(String.format(titleFormat, (tabName+"."+metalName))), - new TranslatableComponent(String.format(descriptionFormat, tabName+"."+metalName)), + Component.translatable(String.format(titleFormat, (tabName+"."+metalName))), + Component.translatable(String.format(descriptionFormat, tabName+"."+metalName)), (ResourceLocation) null, FrameType.TASK, true, //showToast diff --git a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java deleted file mode 100644 index 120533898..000000000 --- a/src/main/java/leaf/cosmere/datagen/advancements/CoreAdvancements.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * File created ~ 13 - 7 - 2021 ~ Leaf - */ - -package leaf.cosmere.datagen.advancements; - -import leaf.cosmere.registry.ItemsRegistry; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.EntityPredicate; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.TickTrigger; -import net.minecraft.network.chat.TranslatableComponent; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.ItemTags; -import net.minecraft.world.item.Items; - -import java.util.function.Consumer; - -public class CoreAdvancements implements Consumer> -{ - public CoreAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - final String categoryName = "root"; - - Advancement root = Advancement.Builder.advancement() - .display(ItemsRegistry.GUIDE.get(), - new TranslatableComponent("advancements.cosmere." + categoryName + ".title"), - new TranslatableComponent("advancements.cosmere." + categoryName + ".description"), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false, - false, - false) - .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) - //.withRewards(new AdvancementRewards(0, new ResourceLocation[]{new ResourceLocation("cosmere:guide")}, new ResourceLocation[0], FunctionObject.CacheableFunction.EMPTY)) - .save(advancementConsumer, "core/" + categoryName); - - Advancement advancement1 = Advancement.Builder.advancement() - .parent(root) - .display( - Items.WOODEN_PICKAXE, - new TranslatableComponent("advancements.cosmere.mine_stone.title"), - new TranslatableComponent("advancements.cosmere.mine_stone.description"), - null, - FrameType.TASK, - true, - true, - false) - .addCriterion( - "get_stone", - InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ItemTags.STONE_TOOL_MATERIALS).build())) - .save(advancementConsumer, "core/mine_stone"); - - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java index bc0973847..8cec614c1 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/FeruchemyAdvancements.java @@ -16,9 +16,9 @@ import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.TickTrigger; import net.minecraft.commands.CommandFunction; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Item; @@ -43,14 +43,14 @@ public void accept(Consumer advancementConsumer) Advancement root = Advancement.Builder.advancement() .display(ItemsRegistry.METAL_RINGS.get(Metals.MetalType.IRON).get(), - new TranslatableComponent(String.format(titleFormat, tabName)), - new TranslatableComponent(String.format(descriptionFormat, tabName)), + Component.translatable(String.format(titleFormat, tabName)), + Component.translatable(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, false,//showToast false,//announceChat false)//hidden - .addCriterion("tick", new TickTrigger.TriggerInstance(EntityPredicate.Composite.ANY)) + .addCriterion("tick", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.ANY)) .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); @@ -67,8 +67,8 @@ public void accept(Consumer advancementConsumer) .parent(root) .display( item, - new TranslatableComponent(String.format(titleFormat, tabName+"."+metalName)), - new TranslatableComponent(String.format(descriptionFormat, tabName+"."+metalName)), + Component.translatable(String.format(titleFormat, tabName+"."+metalName)), + Component.translatable(String.format(descriptionFormat, tabName+"."+metalName)), (ResourceLocation) null, FrameType.TASK, true, //showToast diff --git a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java index 602c504cc..d19f4a58d 100644 --- a/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java +++ b/src/main/java/leaf/cosmere/datagen/advancements/HemalurgyAdvancements.java @@ -5,22 +5,14 @@ package leaf.cosmere.datagen.advancements; import leaf.cosmere.constants.Metals; -import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.registry.ItemsRegistry; -import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.registry.TagsRegistry; import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementRewards; import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.EntityPredicate; import net.minecraft.advancements.critereon.InventoryChangeTrigger; import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.advancements.critereon.TickTrigger; -import net.minecraft.commands.CommandFunction; -import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.registries.RegistryObject; import java.util.function.Consumer; @@ -40,8 +32,8 @@ public void accept(Consumer advancementConsumer) Advancement root = Advancement.Builder.advancement() .display(ItemsRegistry.METAL_SPIKE.get(Metals.MetalType.IRON).get(), - new TranslatableComponent(String.format(titleFormat, tabName)), - new TranslatableComponent(String.format(descriptionFormat, tabName)), + Component.translatable(String.format(titleFormat, tabName)), + Component.translatable(String.format(descriptionFormat, tabName)), new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), FrameType.TASK, false,//showToast diff --git a/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java b/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java new file mode 100644 index 000000000..7a8c410fd --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java @@ -0,0 +1,59 @@ +/* + * File created ~ 3 - 7 - 2022 ~ Leaf + */ + +package leaf.cosmere.datagen.biome; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.DataResult; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import leaf.cosmere.Cosmere; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; +import net.minecraftforge.common.world.BiomeModifier; +import net.minecraftforge.common.world.ModifiableBiomeInfo; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public record BiomeFeatureModifier(HolderSet biomes, GenerationStep.Decoration generationStage, + HolderSet features) implements BiomeModifier +{ + + public static final ResourceLocation ADD_FEATURE = new ResourceLocation(Cosmere.MODID, "feature_add"); + + private static final RegistryObject> SERIALIZER = RegistryObject.create(ADD_FEATURE, ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Cosmere.MODID); + + public static Codec makeCodec() { + return RecordCodecBuilder.create(builder -> builder.group( + Biome.LIST_CODEC.fieldOf("biomes").forGetter(BiomeFeatureModifier::biomes), + Codec.STRING.comapFlatMap(BiomeFeatureModifier::generationStageFromString, GenerationStep.Decoration::toString).fieldOf("generation_stage").forGetter(BiomeFeatureModifier::generationStage), + PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(BiomeFeatureModifier::features) + ).apply(builder, BiomeFeatureModifier::new)); + } + + private static DataResult generationStageFromString(String name) { + try { + return DataResult.success(GenerationStep.Decoration.valueOf(name)); + } catch (Exception e) { + return DataResult.error("Not a decoration stage: " + name); + } + } + + @Override + public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) { + if (phase == Phase.ADD && this.biomes.contains(biome)) { + BiomeGenerationSettingsBuilder generation = builder.getGenerationSettings(); + this.features.forEach(holder -> generation.addFeature(this.generationStage, holder)); + } + } + + @Override + public Codec codec() { + return SERIALIZER.get(); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java b/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java new file mode 100644 index 000000000..450d0fc8f --- /dev/null +++ b/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java @@ -0,0 +1,94 @@ +/* + * File created ~ 3 - 7 - 2022 ~ Leaf + */ + +package leaf.cosmere.datagen.biome; + + +import com.google.gson.JsonElement; +import com.mojang.serialization.JsonOps; +import leaf.cosmere.Cosmere; +import leaf.cosmere.constants.Constants; +import leaf.cosmere.constants.Metals; +import leaf.cosmere.registry.FeatureRegistry; +import leaf.cosmere.utils.helpers.LogHelper; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderSet; +import net.minecraft.core.Registry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.data.CachedOutput; +import net.minecraft.data.DataGenerator; +import net.minecraft.data.DataProvider; +import net.minecraft.resources.RegistryOps; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.tags.BiomeTags; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraftforge.common.world.BiomeModifier; +import net.minecraftforge.registries.ForgeRegistries; +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.nio.file.Path; + +public record BiomeModifierGen(DataGenerator dataGenerator) implements DataProvider +{ + public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) { + final String directory = PackType.SERVER_DATA.getDirectory(); + final ResourceLocation biomeModifiersRegistryID = ForgeRegistries.Keys.BIOME_MODIFIERS.location(); + + final String biomeModifierPathString = String.join("/", directory, Cosmere.MODID, biomeModifiersRegistryID.getNamespace(), biomeModifiersRegistryID.getPath(), saveName + ".json"); + + BiomeModifier.DIRECT_CODEC.encodeStart(ops, modifier).resultOrPartial(msg -> LogHelper.LOGGER.error("Failed to encode {}: {}", biomeModifierPathString, msg)).ifPresent(json -> + { + try { + final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); + DataProvider.saveStable(cache, json, biomeModifierPath); + } catch ( + IOException e) { + LogHelper.LOGGER.error("Failed to save " + biomeModifierPathString, e); + } + }); + } + + @Override + public void run(@NotNull CachedOutput cachedOutput) { + + RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.BUILTIN.get()); + final Path outputFolder = this.dataGenerator.getOutputFolder(); + + + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + + if (!metalType.hasOre()) + { + continue; + } + + // Biome Modifiers + BiomeFeatureModifier oreModifer = new BiomeFeatureModifier( + new HolderSet.Named<>( + ops.registry(Registry.BIOME_REGISTRY).get(), + BiomeTags.IS_OVERWORLD), + GenerationStep.Decoration.UNDERGROUND_ORES, + HolderSet.direct(Holder.direct(FeatureRegistry.PlacedFeatures.PLACED_ORE_FEATURES.get(metalType).get())) + ); + + + // Generate BiomeModiers + generate(ops, + oreModifer, + outputFolder, + metalType.getName() + Constants.RegNameStubs.ORE, + cachedOutput); + + } + } + + @Override + public @NotNull String getName() { + return Cosmere.MODID + " Biome Modifiers"; + } + +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java index 62c47f597..cc697799f 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockModelsGen.java @@ -6,13 +6,13 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.blocks.MetalBlock; +import leaf.cosmere.blocks.MetalOreBlock; import leaf.cosmere.blocks.MetalworkingTableBlock; import leaf.cosmere.registry.BlocksRegistry; import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.OreBlock; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.client.model.generators.ModelFile; import net.minecraftforge.common.data.ExistingFileHelper; @@ -57,11 +57,11 @@ else if (block instanceof MetalworkingTableBlock) simpleBlock(block, blockModel); continue; } - else if (block instanceof OreBlock) + else if (block instanceof MetalOreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. - final boolean deepslate = block.getRegistryName().getPath().contains("deepslate"); + final boolean deepslate = ResourceLocationHelper.get(block).getPath().contains("deepslate"); final String stoneType = deepslate ? "block/ore_block_deepslate" : "block/ore_block"; final String stoneFileName = deepslate ? "ore_block_deepslate" : "ore_block"; @@ -84,11 +84,6 @@ public void simpleBlock(Supplier blockSupplier) simpleBlock(blockSupplier.get()); } - public String getPath(Supplier blockSupplier) - { - ResourceLocation location = blockSupplier.get().getRegistryName(); - return location.getPath(); - } @Override public void simpleBlock(Block block, ModelFile model) diff --git a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java index 0b5e953f2..e0e264c70 100644 --- a/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java +++ b/src/main/java/leaf/cosmere/datagen/blocks/BlockTagsGen.java @@ -14,7 +14,7 @@ import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.OreBlock; +import net.minecraft.world.level.block.DropExperienceBlock; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; @@ -45,12 +45,12 @@ protected void addTags() if (metalType.hasOre()) { - final OreBlock oreBlock = metalType.getOreBlock(); + final DropExperienceBlock oreBlock = metalType.getOreBlock(); add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), oreBlock); add(BlockTags.MINEABLE_WITH_PICKAXE, oreBlock); add(BlockTags.NEEDS_STONE_TOOL, oreBlock); - final OreBlock oreDeepslateBlock = metalType.getDeepslateOreBlock(); + final DropExperienceBlock oreDeepslateBlock = metalType.getDeepslateOreBlock(); add(TagsRegistry.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType), oreDeepslateBlock); add(BlockTags.MINEABLE_WITH_PICKAXE, oreDeepslateBlock); add(BlockTags.NEEDS_IRON_TOOL, oreDeepslateBlock); diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 7888c70b1..309fd0add 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -15,6 +15,7 @@ import leaf.cosmere.items.curio.RingMetalmindItem; import leaf.cosmere.items.gems.PolestoneItem; import leaf.cosmere.registry.ItemsRegistry; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; @@ -115,7 +116,7 @@ else if (item instanceof PolestoneItem polestoneItem) public String getPath(Supplier itemSupplier) { - ResourceLocation location = itemSupplier.get().getRegistryName(); + ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index e6cb1597f..ccf931dc3 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -12,35 +12,27 @@ import leaf.cosmere.items.MetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.registry.AttributesRegistry; -import leaf.cosmere.registry.EffectsRegistry; -import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.registry.*; import leaf.cosmere.utils.helpers.StringHelper; -import net.minecraft.Util; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; -import net.minecraft.sounds.SoundEvent; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; -import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; -import java.nio.file.Path; import java.util.Locale; import static leaf.cosmere.constants.Constants.Strings.*; public class EngLangGen extends LanguageProvider { - private final DataGenerator generator; public EngLangGen(DataGenerator gen) { super(gen, Cosmere.MODID, "en_us"); - this.generator = gen; } @Override @@ -48,9 +40,10 @@ protected void addTranslations() { //Items and Blocks - for (Item item : ForgeRegistries.ITEMS.getValues()) + for (RegistryObject itemRegistryObject : ItemsRegistry.ITEMS.getEntries()) { - final ResourceLocation registryName = item.getRegistryName(); + final Item item = itemRegistryObject.get(); + final ResourceLocation registryName = itemRegistryObject.getId(); if (registryName.getNamespace().contentEquals(Cosmere.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); @@ -81,11 +74,12 @@ else if (item instanceof MetalmindItem) //Entities add("entity.minecraft.villager.cosmere.metal_trader", "Metal Trader"); - for (EntityType type : ForgeRegistries.ENTITIES) + for (RegistryObject> type : EntityRegistry.ENTITIES.getEntries()) { - if (type.getRegistryName().getNamespace().equals(Cosmere.MODID)) + final ResourceLocation id = type.getId(); + if (id.getNamespace().equals(Cosmere.MODID)) { - add(type.getDescriptionId(), StringHelper.fixCapitalisation(type.getRegistryName().getPath())); + add(type.get().getDescriptionId(), StringHelper.fixCapitalisation(id.getPath())); } } @@ -104,7 +98,7 @@ else if (item instanceof MetalmindItem) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { //power type - String key = manifestation.translation().getKey(); + String key = manifestation.translationKey(); String path = manifestation.getName(); @@ -143,7 +137,7 @@ else if (item instanceof MetalmindItem) //Name add(key, StringHelper.fixCapitalisation(name)); - add(manifestation.description().getKey(), description); + add(manifestation.descriptionKey(), description); } //Attributes @@ -226,7 +220,7 @@ else if (item instanceof MetalmindItem) //effects for (RegistryObject effect : EffectsRegistry.EFFECTS.getEntries()) { - add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.get().getRegistryName().getPath())); + add(effect.get().getDescriptionId(), StringHelper.fixCapitalisation(effect.getId().getPath())); } //curios @@ -295,20 +289,4 @@ else if (item instanceof MetalmindItem) } - public Path getSoundPath(Path path, String modid) - { - return path.resolve("data/" + modid + "/sounds/" + "sounds.json"); - } - - public String getTranslationKey(SoundEvent sound) - { - String subtitleTranslationKey = ""; - if (subtitleTranslationKey.isEmpty() || subtitleTranslationKey == null) - { - subtitleTranslationKey = Util.makeDescriptionId("subtitle", sound.getRegistryName()); - } - return subtitleTranslationKey; - } - - } diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java index 2dcacf4b2..0a404db73 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/PatchouliGen.java @@ -5,17 +5,16 @@ package leaf.cosmere.datagen.patchouli; import com.google.common.collect.Sets; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; import leaf.cosmere.datagen.patchouli.categories.PatchouliAllomancy; import leaf.cosmere.datagen.patchouli.categories.PatchouliBasics; import leaf.cosmere.datagen.patchouli.categories.PatchouliFeruchemy; import leaf.cosmere.datagen.patchouli.categories.PatchouliHemalurgy; import leaf.cosmere.utils.helpers.LogHelper; import leaf.cosmere.utils.helpers.StringHelper; +import net.minecraft.data.CachedOutput; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; -import net.minecraft.data.HashCache; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Path; @@ -29,7 +28,6 @@ // public class PatchouliGen implements DataProvider { - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); public static final String GUIDE_NAME = "guide"; private final DataGenerator generator; @@ -45,7 +43,7 @@ public PatchouliGen(DataGenerator generatorIn) /** * Performs this provider's action. */ - public void run(HashCache cache) throws IOException + public void run(@NotNull CachedOutput cache) throws IOException { Path path = this.generator.getOutputFolder(); Set entryIDs = Sets.newHashSet(); @@ -97,7 +95,7 @@ private void collectInfoForBook() } - private Consumer getCategoryConsumer(HashCache cache, Path path, Set categoryIDs) + private Consumer getCategoryConsumer(@NotNull CachedOutput cache, Path path, Set categoryIDs) { return category -> { @@ -111,7 +109,7 @@ private Consumer getCategoryConsumer(HashCache cache, Path p try { - DataProvider.save(GSON, cache, category.serialize(), path1); + DataProvider.saveStable(cache, category.serialize(), path1); } catch (IOException ioexception) { @@ -122,7 +120,7 @@ private Consumer getCategoryConsumer(HashCache cache, Path p }; } - private Consumer getEntryConsumer(HashCache cache, Path path, Set entryIDs) + private Consumer getEntryConsumer(@NotNull CachedOutput cache, Path path, Set entryIDs) { return entry -> { @@ -136,7 +134,7 @@ private Consumer getEntryConsumer(HashCache cache, Path path, S try { - DataProvider.save(GSON, cache, entry.serialize(), path1); + DataProvider.saveStable(cache, entry.serialize(), path1); } catch (IOException ioexception) { diff --git a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java index d3f9fe9a5..5bf7dfce1 100644 --- a/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java +++ b/src/main/java/leaf/cosmere/datagen/patchouli/categories/PatchouliAllomancy.java @@ -7,8 +7,8 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.datagen.patchouli.BookStuff; import leaf.cosmere.datagen.patchouli.PatchouliTextFormat; -import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; import leaf.cosmere.utils.helpers.StringHelper; import net.minecraftforge.registries.RegistryObject; @@ -57,8 +57,7 @@ public static void collect(List categories, List manifestation : ALLOMANCY_POWERS.values()) { - AManifestation aManifestation = manifestation.get(); - AllomancyBase allomancyManifestation = (AllomancyBase) aManifestation; + AllomancyBase allomancyManifestation = manifestation.get(); Metals.MetalType metalType = allomancyManifestation.getMetalType(); if (!metalType.hasFeruchemicalEffect()) @@ -68,7 +67,7 @@ public static void collect(List categories, List categories, List whitelist = - Arrays.stream(Biome.BiomeCategory.values()) - .filter(biomeType -> biomeType != Biome.BiomeCategory.NONE && biomeType != Biome.BiomeCategory.NETHER && biomeType != Biome.BiomeCategory.THEEND) - .collect(Collectors.toList()); - - - if (whitelist.contains(biomeCategory)) - { - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasOre()) - { - event.getGeneration().addFeature( - GenerationStep.Decoration.UNDERGROUND_ORES, - FeatureRegistry.PlacedFeatures.PLACED_ORE_FEATURES.get(metalType) - ); - - //LogHelper.debug(String.format("Added %s to: %s", metalType.getName(), event.getName())); - } - } - - } - } @SubscribeEvent public static void registerTrades(VillagerTradesEvent event) diff --git a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java index baeb5a6c7..3bd6ca6ec 100644 --- a/src/main/java/leaf/cosmere/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/items/ChargeableItemBase.java @@ -32,7 +32,7 @@ public ChargeableItemBase(Item.Properties prop) @Override public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { - if (allowdedIn(tab)) + if (allowedIn(tab)) { stacks.add(new ItemStack(this)); diff --git a/src/main/java/leaf/cosmere/items/CoinPouchItem.java b/src/main/java/leaf/cosmere/items/CoinPouchItem.java index 150b1ef58..31e9695b2 100644 --- a/src/main/java/leaf/cosmere/items/CoinPouchItem.java +++ b/src/main/java/leaf/cosmere/items/CoinPouchItem.java @@ -15,6 +15,7 @@ import leaf.cosmere.registry.ItemsRegistry; import leaf.cosmere.registry.KeybindingRegistry; import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -38,7 +39,7 @@ public class CoinPouchItem extends ProjectileWeaponItem { - public static final Predicate SUPPORTED_PROJECTILES = (itemStack) -> itemStack.is(Tags.Items.NUGGETS) && AllomancyIronSteel.containsMetal(itemStack.getItem().getRegistryName().getPath()); + public static final Predicate SUPPORTED_PROJECTILES = (itemStack) -> itemStack.is(Tags.Items.NUGGETS) && AllomancyIronSteel.containsMetal(ResourceLocationHelper.get(itemStack.getItem()).getPath()); public CoinPouchItem(Item.Properties p_40660_) { diff --git a/src/main/java/leaf/cosmere/items/GuideItem.java b/src/main/java/leaf/cosmere/items/GuideItem.java index d26f949d7..7eecc429d 100644 --- a/src/main/java/leaf/cosmere/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/items/GuideItem.java @@ -12,7 +12,6 @@ import net.minecraft.ChatFormatting; import net.minecraft.Util; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -91,7 +90,7 @@ public static Component getEdition() } catch (IllegalArgumentException e) { - return new TextComponent(""); + return Component.empty(); } } else @@ -108,7 +107,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In if (!PatchouliCompat.PatchouliIsPresent()) { - playerIn.sendMessage(TextHelper.createTranslatedText(Constants.Strings.PATCHOULI_NOT_INSTALLED), Util.NIL_UUID); + playerIn.sendSystemMessage(TextHelper.createTranslatedText(Constants.Strings.PATCHOULI_NOT_INSTALLED)); } else if (playerIn instanceof ServerPlayer player) { diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java index 928ddf08e..b2257cd64 100644 --- a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -34,7 +34,7 @@ public BandsOfMourningItem() @Override public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { - if (allowdedIn(tab)) + if (allowedIn(tab)) { ItemStack fullPower = new ItemStack(this); setCharge(fullPower, getMaxCharge(fullPower)); diff --git a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java index 60f8ca3f1..e83ec737f 100644 --- a/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java +++ b/src/main/java/leaf/cosmere/items/curio/HemalurgicSpikeItem.java @@ -99,7 +99,7 @@ public float getMaxChargeModifier() public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { super.fillItemCategory(tab, stacks); - if (allowdedIn(tab)) + if (allowedIn(tab)) { if (getMetalType().hasFeruchemicalEffect()) { diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index e0b4b5d13..3cc0f77fa 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -254,7 +254,7 @@ default Multimap getHemalurgicAttributes(Multimap< AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), new AttributeModifier( Constants.NBT.ALUMINUM_UUID, - manifestation.translation().getKey(), + manifestation.translationKey(), -100, AttributeModifier.Operation.ADDITION)); } diff --git a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java index 095b5ad72..846cace7d 100644 --- a/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/loot/FortuneBonusModifier.java @@ -5,6 +5,7 @@ package leaf.cosmere.loot; import com.google.gson.JsonObject; +import it.unimi.dsi.fastutil.objects.ObjectArrayList; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.utils.helpers.LogHelper; @@ -25,9 +26,8 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; import net.minecraftforge.common.loot.GlobalLootModifierSerializer; import net.minecraftforge.common.loot.LootModifier; +import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import java.util.List; import java.util.Map; @@ -41,8 +41,8 @@ protected FortuneBonusModifier(LootItemCondition[] conditions) super(conditions); } - @Nonnull - protected List doApply(List generatedLoot, LootContext context) + @Override + protected @NotNull ObjectArrayList doApply(ObjectArrayList generatedLoot, LootContext context) { final String hasCosmereFortuneBonus = "HasCosmereFortuneBonus"; @@ -80,7 +80,7 @@ protected List doApply(List generatedLoot, LootContext con fakeTool.getOrCreateTag().putBoolean(hasCosmereFortuneBonus, true); Map enchantments = EnchantmentHelper.getEnchantments(fakeTool); - enchantments.put(Enchantments.BLOCK_FORTUNE, EnchantmentHelper.getItemEnchantmentLevel(Enchantments.BLOCK_FORTUNE, fakeTool) + totalFortuneBonus); + enchantments.put(Enchantments.BLOCK_FORTUNE, EnchantmentHelper.getTagEnchantmentLevel(Enchantments.BLOCK_FORTUNE, fakeTool) + totalFortuneBonus); EnchantmentHelper.setEnchantments(enchantments, fakeTool); diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index b0b96248d..b9cd76fd4 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -6,16 +6,18 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Manifestations; -import net.minecraft.network.chat.TranslatableComponent; +import leaf.cosmere.registry.ManifestationRegistry; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderLevelLastEvent; -import net.minecraftforge.registries.ForgeRegistryEntry; +import org.jetbrains.annotations.Nullable; import java.util.Locale; -public abstract class AManifestation extends ForgeRegistryEntry +public abstract class AManifestation { public abstract Manifestations.ManifestationTypes getManifestationType(); @@ -40,16 +42,31 @@ public abstract class AManifestation extends ForgeRegistryEntry public abstract double getStrength(ISpiritweb data, boolean getBaseStrength); - public TranslatableComponent translation() + public ResourceLocation getResourceLocation() { - ResourceLocation regName = getRegistryName(); - return new TranslatableComponent("manifestation." + regName.getNamespace() + "." + regName.getPath()); + return ManifestationRegistry.MANIFESTATION_REGISTRY.get().getKey(this); } - public TranslatableComponent description() + public String translationKey() { - ResourceLocation regName = getRegistryName(); - return new TranslatableComponent("manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description"); + ResourceLocation regName = getResourceLocation(); + return "manifestation." + regName.getNamespace() + "." + regName.getPath(); + } + + public MutableComponent translation() + { + return Component.translatable(translationKey()); + } + + public String descriptionKey() + { + ResourceLocation regName = getResourceLocation(); + return "manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description"; + } + + public MutableComponent description() + { + return Component.translatable(descriptionKey()); } @OnlyIn(Dist.CLIENT) @@ -59,6 +76,8 @@ public void renderWorldEffects(RenderLevelLastEvent event, ISpiritweb cap) public String getName() { - return this.getRegistryName().getPath().toLowerCase(Locale.ROOT); + ResourceLocation regName = ManifestationRegistry.MANIFESTATION_REGISTRY.get().getKey(this); + + return regName.getPath().toLowerCase(Locale.ROOT); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java index 8b949b7e7..7f35b799b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyIronSteel.java @@ -11,10 +11,7 @@ import leaf.cosmere.items.IHasMetalType; import leaf.cosmere.network.Network; import leaf.cosmere.network.packets.SyncPushPullMessage; -import leaf.cosmere.utils.helpers.CodecHelper; -import leaf.cosmere.utils.helpers.LogHelper; -import leaf.cosmere.utils.helpers.PlayerHelper; -import leaf.cosmere.utils.helpers.VectorHelper; +import leaf.cosmere.utils.helpers.*; import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; @@ -105,7 +102,7 @@ private void performEffectClient(ISpiritweb cap) BlockPos pos = ((BlockHitResult) ray).getBlockPos(); //todo check block is of ihasmetal type BlockState state = mc.level.getBlockState(pos); - if (state.getBlock() instanceof IHasMetalType || containsMetal(state.getBlock().getRegistryName().getPath())) + if (state.getBlock() instanceof IHasMetalType || containsMetal(ResourceLocationHelper.get(state.getBlock()).getPath())) { blocks.add(pos.immutable()); @@ -342,7 +339,7 @@ public static List getDrawLines(int range) .filter(blockPos -> { Block block = playerEntity.level.getBlockState(blockPos).getBlock(); - return block instanceof IHasMetalType || AllomancyIronSteel.containsMetal(block.getRegistryName().getPath()); + return block instanceof IHasMetalType || AllomancyIronSteel.containsMetal(ResourceLocationHelper.get(block).getPath()); }) .forEach(blockPos -> found.add(new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5))); @@ -368,23 +365,23 @@ private static boolean entityContainsMetal(Entity entity) if (entity instanceof LivingEntity livingEntity) { //metal entities like iron golems - if (containsMetal(entity.getType().getRegistryName().getPath())) + if (containsMetal(ResourceLocationHelper.get(entity).getPath())) { return true; } - if (containsMetal(livingEntity.getMainHandItem().getItem().getRegistryName().getPath())) + if (containsMetal(ResourceLocationHelper.get(livingEntity.getMainHandItem().getItem()).getPath())) { return true; } - if (containsMetal(livingEntity.getOffhandItem().getItem().getRegistryName().getPath())) + if (containsMetal(ResourceLocationHelper.get(livingEntity.getOffhandItem().getItem()).getPath())) { return true; } for (ItemStack itemStack : livingEntity.getArmorSlots()) { - if (containsMetal(itemStack.getItem().getRegistryName().getPath())) + if (containsMetal(ResourceLocationHelper.get(itemStack.getItem()).getPath())) { return true; } @@ -409,11 +406,11 @@ else if (entity instanceof ItemEntity itemEntity) ItemStack stack = (itemEntity).getItem(); Item item = stack.getItem(); - if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) + if (item instanceof BlockItem blockItem && blockItem.getBlock() instanceof IHasMetalType || containsMetal(ResourceLocationHelper.get(item).getPath())) { return true; } - if (item instanceof IHasMetalType || containsMetal(item.getRegistryName().getPath())) + if (item instanceof IHasMetalType || containsMetal(ResourceLocationHelper.get(item).getPath())) { return true; } @@ -459,16 +456,16 @@ private static void createWhitelist() //requires testing. ForgeRegistries.ITEMS.getValues() .stream() - .filter(test -> testPath(test.getRegistryName(), metalNames)) - .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + .filter(test -> testPath(ResourceLocationHelper.get(test), metalNames)) + .forEach(match -> s_whiteList.add(ResourceLocationHelper.get(match).getPath())); ForgeRegistries.BLOCKS.getValues() .stream() - .filter(test -> testPath(test.getRegistryName(), metalNames)) - .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + .filter(test -> testPath(ResourceLocationHelper.get(test), metalNames)) + .forEach(match -> s_whiteList.add(ResourceLocationHelper.get(match).getPath())); ForgeRegistries.ENTITIES.getValues() .stream() - .filter(test -> testPath(test.getRegistryName(), metalNames)) - .forEach(match -> s_whiteList.add(match.getRegistryName().getPath())); + .filter(test -> testPath(ResourceLocationHelper.get(test), metalNames)) + .forEach(match -> s_whiteList.add(ResourceLocationHelper.get(match).getPath())); for (String s : s_whiteList) { diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java index 4953a304b..341914ba4 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeManifestationModeMessage.java @@ -5,7 +5,6 @@ package leaf.cosmere.network.packets; import leaf.cosmere.cap.entity.SpiritwebCapability; -import leaf.cosmere.constants.Manifestations; import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.network.FriendlyByteBuf; @@ -55,7 +54,7 @@ else if (message.dir != 0) public static void encode(ChangeManifestationModeMessage mes, FriendlyByteBuf buf) { - String namespace = mes.manifestation.getRegistryName().toString(); + String namespace = mes.manifestation.getResourceLocation().toString(); buf.writeUtf(namespace); buf.writeInt(mes.dir); } diff --git a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java index 886a940bd..7894eb63b 100644 --- a/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/ChangeSelectedManifestationMessage.java @@ -9,7 +9,7 @@ import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.Util; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.BaseComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; @@ -32,14 +32,15 @@ public static void handle(ChangeSelectedManifestationMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> { - BaseComponent manifestationText; + MutableComponent manifestationText; String manifestation; manifestation = cap.changeManifestation(message.dir); - manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_SET_SUCCESS, TextHelper.createTranslatedText(manifestation)); - sender.sendMessage(manifestationText, Util.NIL_UUID); + //todo config to tell person their mode has changed? + //manifestationText = TextHelper.createTranslatedText(Constants.Strings.POWER_SET_SUCCESS, TextHelper.createTranslatedText(manifestation)); + //sender.sendChatMessage(manifestationText, Util.NIL_UUID); cap.syncToClients(null); })); context.setPacketHandled(true); diff --git a/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java b/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java index 8c8ac8fd1..cce146e30 100644 --- a/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/DeactivateManifestationsMessage.java @@ -7,7 +7,7 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import net.minecraft.Util; import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.network.chat.BaseComponent; +import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; @@ -34,11 +34,11 @@ public static void handle(DeactivateManifestationsMessage message, Supplier SpiritwebCapability.get(sender).ifPresent((cap) -> { - BaseComponent manifestationText = POWER_INACTIVE; + MutableComponent manifestationText = POWER_INACTIVE; cap.deactivateManifestations(); - sender.sendMessage(manifestationText, Util.NIL_UUID); + sender.sendSystemMessage(manifestationText); cap.syncToClients(null); })); context.setPacketHandled(true); diff --git a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java index df0b44fc8..e6e93287a 100644 --- a/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java +++ b/src/main/java/leaf/cosmere/network/packets/SetSelectedManifestationMessage.java @@ -39,7 +39,7 @@ public static void handle(SetSelectedManifestationMessage message, Supplier> BIOME_MODIFIERS = DeferredRegister.create(ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Cosmere.MODID); + +} diff --git a/src/main/java/leaf/cosmere/registry/ContainersRegistry.java b/src/main/java/leaf/cosmere/registry/ContainersRegistry.java index 9d6d72ad9..e294adf09 100644 --- a/src/main/java/leaf/cosmere/registry/ContainersRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ContainersRegistry.java @@ -19,7 +19,9 @@ public class ContainersRegistry { public static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, Cosmere.MODID); - public static final RegistryObject> COIN_POUCH = CONTAINERS.register("coin_pouch", IForgeMenuType.create(CoinPouchContainer::fromNetwork).delegate); + public static final RegistryObject> COIN_POUCH = CONTAINERS.register( + "coin_pouch", + () -> IForgeMenuType.create(CoinPouchContainer::fromNetwork)); @OnlyIn(Dist.CLIENT) public static void registerGUIFactories() diff --git a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java index d04bc6bb9..039284883 100644 --- a/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ManifestationRegistry.java @@ -30,7 +30,8 @@ public class ManifestationRegistry { public static final DeferredRegister MANIFESTATIONS = DeferredRegister.create(ResourceKeyRegistry.MANIFESTATION_TYPES, Cosmere.MODID); - public static Supplier> MANIFESTATION_REGISTRY = MANIFESTATIONS.makeRegistry(AManifestation.class, () -> new RegistryBuilder().setMaxID(Integer.MAX_VALUE - 1)); + public static Supplier> MANIFESTATION_REGISTRY = MANIFESTATIONS.makeRegistry(() -> new RegistryBuilder().setMaxID(Integer.MAX_VALUE - 1)); + public static final RegistryObject NONE = MANIFESTATIONS.register("none", () -> new ManifestationBase(Manifestations.ManifestationTypes.NONE, Color.WHITE.getRGB())); @@ -200,7 +201,7 @@ public static Map getManifestations() for (AManifestation data : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - map.put(data.getRegistryName(), data.description().getKey()); + map.put(data.getResourceLocation(), data.descriptionKey()); } return map; } diff --git a/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java index 1553229a7..79fc7f821 100644 --- a/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java +++ b/src/main/java/leaf/cosmere/registry/PointOfInterestRegistry.java @@ -18,13 +18,12 @@ public class PointOfInterestRegistry { public static DeferredRegister POINT_OF_INTERESTS = DeferredRegister.create(ForgeRegistries.POI_TYPES, Cosmere.MODID); - public static RegistryObject METAL_TRADER_POI = POINT_OF_INTERESTS.register("metal_trader", () -> registerPOI("metal_trader", BlocksRegistry.METALWORKING_TABLE::get)); + public static RegistryObject METAL_TRADER_POI = POINT_OF_INTERESTS.register("metal_trader", () -> registerPOI(BlocksRegistry.METALWORKING_TABLE)); - private static PoiType registerPOI(String name, Supplier block) + private static PoiType registerPOI(Supplier block) { return new PoiType( - "cosmere:" + name,//name ImmutableSet.copyOf(block.get().getStateDefinition().getPossibleStates()),//states 1, //tickets(?) 1);//range diff --git a/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java b/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java index 065c42af9..02e216ac2 100644 --- a/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java +++ b/src/main/java/leaf/cosmere/registry/ResourceKeyRegistry.java @@ -8,8 +8,6 @@ import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.core.Registry; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.common.world.ForgeWorldPreset; public class ResourceKeyRegistry { diff --git a/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java index fa854dd1f..566dfd588 100644 --- a/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java +++ b/src/main/java/leaf/cosmere/registry/VillagerProfessionRegistry.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet; import leaf.cosmere.Cosmere; +import net.minecraft.core.Holder; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.entity.ai.village.poi.PoiType; @@ -14,6 +15,7 @@ import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import java.util.function.Predicate; import java.util.function.Supplier; public class VillagerProfessionRegistry @@ -24,14 +26,23 @@ public class VillagerProfessionRegistry "metal_trader", () -> registerProfession( "metal_trader", - () -> PointOfInterestRegistry.METAL_TRADER_POI.get(), + PointOfInterestRegistry.METAL_TRADER_POI, SoundEvents.VILLAGER_WORK_TOOLSMITH)); - public static VillagerProfession registerProfession(String name, Supplier poi, SoundEvent workSound) + public static VillagerProfession registerProfession(String name, RegistryObject poi, SoundEvent workSound) { + Predicate> heldJobSite = (poiType) -> { + return poiType == poi.getHolder().get(); + }; + Predicate> acquirableJobSite = (poiType) -> { + return poiType == poi.getHolder().get(); + }; + + return new VillagerProfession( - "cosmere:" + name, - poi.get(), + name, + heldJobSite, + acquirableJobSite, ImmutableSet.of(), ImmutableSet.of(), workSound); diff --git a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java index 350f760e5..d4a9a6612 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/ResourceLocationHelper.java @@ -6,6 +6,11 @@ import leaf.cosmere.Cosmere; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; import java.util.Locale; @@ -15,4 +20,27 @@ public static ResourceLocation prefix(String path) { return new ResourceLocation(Cosmere.MODID, path.toLowerCase(Locale.ROOT)); } + + + public static ResourceLocation get(Item item) + { + return ForgeRegistries.ITEMS.getKey(item); + } + + + public static ResourceLocation get(Entity entity) + { + return ForgeRegistries.ENTITIES.getKey(entity.getType()); + } + + + public static ResourceLocation get(Block block) + { + return ForgeRegistries.BLOCKS.getKey(block); + } + + public static ResourceLocation get(EntityType test) + { + return ForgeRegistries.ENTITIES.getKey(test); + } } diff --git a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java index ce0ce94ed..e564762e5 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/TextHelper.java @@ -13,47 +13,45 @@ public class TextHelper { - public static BaseComponent getPlayerTextObject(ServerLevel world, UUID id) + public static MutableComponent getPlayerTextObject(ServerLevel world, UUID id) { return getPlayerTextObject(world.getServer(), id); } - public static BaseComponent getPlayerTextObject(MinecraftServer server, UUID id) + public static MutableComponent getPlayerTextObject(MinecraftServer server, UUID id) { String playerName = PlayerHelper.getPlayerName(id, server); return createTextComponentWithTip(playerName, id.toString()); } - public static BaseComponent createTextComponentWithTip(String text, String tooltipText) + public static MutableComponent createTextComponentWithTip(String text, String tooltipText) { //Always surround tool tip items with brackets - BaseComponent textComponent = new TextComponent("[" + text + "]"); - textComponent.withStyle(style -> - { - return style.withColor(ChatFormatting.GREEN)//color tool tip items green - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new TextComponent(tooltipText))).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText)); - }); + MutableComponent textComponent = Component.literal("[" + text + "]"); + textComponent.withStyle(style -> style.applyFormat(ChatFormatting.GREEN)//color tool tip items green + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, Component.literal(tooltipText))) + .withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, tooltipText))); return textComponent; } - public static BaseComponent createTextWithTooltip(TranslatableComponent translation, TranslatableComponent description) + public static MutableComponent createTextWithTooltip(MutableComponent translation, MutableComponent description) { //Always surround tool tip items with brackets translation.withStyle(style -> { return style.withColor(ChatFormatting.GREEN)//color tool tip items green - .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)).withClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, translation.getKey())); + .withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, description)); }); return translation; } - public static BaseComponent createTranslatedText(String s, Object... a) + public static MutableComponent createTranslatedText(String s, Object... a) { - return new TranslatableComponent(s, a); + return Component.translatable(s, a); } - public static BaseComponent createText(Object s) + public static MutableComponent createText(Object s) { - return new TextComponent(s.toString()); + return Component.literal(s.toString()); } } diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index 5c10c9aae..e69de29bb 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -1,9 +0,0 @@ -public net.minecraft.world.entity.LivingEntity m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.Mob m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.player.Player m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.animal.Animal m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.animal.Chicken m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.animal.WaterAnimal m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.monster.Zombie m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.monster.hoglin.Hoglin m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward -public net.minecraft.world.entity.monster.piglin.Piglin m_6552_(Lnet/minecraft/world/entity/player/Player;)I # getExperienceReward \ No newline at end of file From ee8bd5262ebb0b20a8027cbd329c420976f10c80 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 22 Jun 2022 09:36:33 +1200 Subject: [PATCH 0291/1090] F-Atium - increase/decrease health, speed, damage, knockback etc based on size --- .../feruchemy/store/AtiumStoreEffect.java | 45 ++++++++++++++++++- .../effects/feruchemy/tap/AtiumTapEffect.java | 45 ++++++++++++++++++- 2 files changed, 88 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java index 61e53d8b3..8b75e870e 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java @@ -18,11 +18,54 @@ public class AtiumStoreEffect extends FeruchemyEffectBase public AtiumStoreEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); + final String atiumStoreAttributeUUID = "69225c21-d36f-4ca3-8071-6b15279ca4f9"; + + //atium attribute, size addAttributeModifier( AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), - "69225c21-d36f-4ca3-8071-6b15279ca4f9", + atiumStoreAttributeUUID, -0.15D, AttributeModifier.Operation.ADDITION); + + //reduce related attributes appropriately + addAttributeModifier( + Attributes.MOVEMENT_SPEED, + atiumStoreAttributeUUID, + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.MAX_HEALTH, + atiumStoreAttributeUUID, + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.KNOCKBACK_RESISTANCE, + atiumStoreAttributeUUID, + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.ATTACK_DAMAGE, + atiumStoreAttributeUUID, + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.ATTACK_KNOCKBACK, + atiumStoreAttributeUUID, + -0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + } + + + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + super.applyEffectTick(entityLivingBaseIn, amplifier); + + if (entityLivingBaseIn.getHealth() > entityLivingBaseIn.getMaxHealth()) + { + entityLivingBaseIn.setHealth(entityLivingBaseIn.getMaxHealth()); + } } } diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java index e95835f4a..99efdf7ce 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java @@ -8,7 +8,9 @@ import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.registry.AttributesRegistry; import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; //health public class AtiumTapEffect extends FeruchemyEffectBase @@ -16,11 +18,52 @@ public class AtiumTapEffect extends FeruchemyEffectBase public AtiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); + final String atiumStoreAttributeUUID = "69225c21-d36f-4ca3-8071-6b15279ca4f9"; + + //atium attribute, size addAttributeModifier( AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), - "2c0b90c8-a8f1-4d83-9072-d77eb7e4b689", + atiumStoreAttributeUUID, 0.15D, AttributeModifier.Operation.ADDITION); + + //reduce related attributes appropriately + addAttributeModifier( + Attributes.MOVEMENT_SPEED, + atiumStoreAttributeUUID, + 0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.MAX_HEALTH, + atiumStoreAttributeUUID, + 0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.KNOCKBACK_RESISTANCE, + atiumStoreAttributeUUID, + 0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.ATTACK_DAMAGE, + atiumStoreAttributeUUID, + 0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + Attributes.ATTACK_KNOCKBACK, + atiumStoreAttributeUUID, + 0.1D, + AttributeModifier.Operation.MULTIPLY_TOTAL); } + + @Override + public void applyEffectTick(LivingEntity entityLivingBaseIn, int amplifier) + { + super.applyEffectTick(entityLivingBaseIn, amplifier); + + if (entityLivingBaseIn.getHealth() > entityLivingBaseIn.getMaxHealth()) + { + entityLivingBaseIn.setHealth(entityLivingBaseIn.getMaxHealth()); + } + } } From 05135296e2baa63e3e1a34c162ec9a545c792e1a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 12:13:24 +1200 Subject: [PATCH 0292/1090] Pulling 1.18.2 changes to 1.19 --- .../cap/entity/SpiritwebCapability.java | 50 ++---- .../java/leaf/cosmere/constants/Metals.java | 2 +- .../java/leaf/cosmere/constants/Roshar.java | 11 +- .../allomancy/AllomancyBoostEffect.java | 39 +++-- .../feruchemy/store/AtiumStoreEffect.java | 2 +- .../feruchemy/store/NicrosilStoreEffect.java | 9 +- .../feruchemy/store/ZincStoreEffect.java | 2 +- .../effects/feruchemy/tap/AtiumTapEffect.java | 2 +- .../effects/feruchemy/tap/ZincTapEffect.java | 2 +- .../leaf/cosmere/handlers/ModBusEvents.java | 13 +- .../cosmere/handlers/PlayerEventHandler.java | 2 +- .../leaf/cosmere/items/HonorbladeItem.java | 4 +- .../items/curio/BandsOfMourningItem.java | 8 +- .../cosmere/items/curio/IHemalurgicInfo.java | 82 ++++----- .../cosmere/manifestation/AManifestation.java | 4 + .../manifestation/ManifestationBase.java | 15 ++ .../allomancy/AllomancyBase.java | 8 +- .../feruchemy/FeruchemyAtium.java | 17 +- .../feruchemy/FeruchemyBase.java | 8 +- .../feruchemy/FeruchemyNicrosil.java | 16 +- .../surgebinding/SurgebindingBase.java | 10 ++ .../leaf/cosmere/mixin/LightTextureMixin.java | 2 +- .../cosmere/registry/AttributesRegistry.java | 162 ++++++------------ 23 files changed, 227 insertions(+), 243 deletions(-) diff --git a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java index a1cbf36c2..1e3be68ef 100644 --- a/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/cap/entity/SpiritwebCapability.java @@ -506,14 +506,11 @@ public boolean hasAnyPowers() { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + final RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { continue; } - - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); Attribute attribute = attributeRegistryObject.get(); AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); @@ -542,26 +539,21 @@ public boolean hasManifestation(AManifestation aManifestation) @Override public boolean hasManifestation(AManifestation manifestation, boolean ignoreTemporaryPower) { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + final RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { return false; } - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); - - if (attributeRegistryObject.isPresent()) + AttributeMap attributeManager = livingEntity.getAttributes(); + Attribute attribute = attributeRegistryObject.get(); + if (attributeManager.hasAttribute(attribute)) { - AttributeMap attributeManager = livingEntity.getAttributes(); - Attribute attribute = attributeRegistryObject.get(); - if (attributeManager.hasAttribute(attribute)) - { - double manifestationStrength = - ignoreTemporaryPower - ? attributeManager.getBaseValue(attribute) - : attributeManager.getValue(attribute); - return manifestationStrength > 3; - } + double manifestationStrength = + ignoreTemporaryPower + ? attributeManager.getBaseValue(attribute) + : attributeManager.getValue(attribute); + return manifestationStrength > 3; } return false; @@ -571,24 +563,17 @@ public boolean hasManifestation(AManifestation manifestation, boolean ignoreTemp @Override public void giveManifestation(AManifestation manifestation, int i) { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + final RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { return; } - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); - Attribute attribute = attributeRegistryObject.get(); AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); if (manifestationAttribute != null) { manifestationAttribute.setBaseValue(10); - - /*AttributeModifier attributeModifier = AttributeHelper.makeAttribute(manifestationName, "inherent ", 10, AttributeModifier.Operation.ADDITION); - manifestationAttribute.removeModifier(attributeModifier); - manifestationAttribute.applyNonPersistentModifier(attributeModifier);*/ - } hasBeenInitialized = true; @@ -597,15 +582,12 @@ public void giveManifestation(AManifestation manifestation, int i) @Override public void removeManifestation(AManifestation manifestation) { - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + final RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { return; } - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(path); - Attribute attribute = attributeRegistryObject.get(); AttributeInstance manifestationAttribute = livingEntity.getAttribute(attribute); if (manifestationAttribute != null) diff --git a/src/main/java/leaf/cosmere/constants/Metals.java b/src/main/java/leaf/cosmere/constants/Metals.java index 6badf7515..1726533c7 100644 --- a/src/main/java/leaf/cosmere/constants/Metals.java +++ b/src/main/java/leaf/cosmere/constants/Metals.java @@ -707,7 +707,7 @@ else if (killedEntity instanceof Cat) if (killedEntity instanceof Player) { - final AttributeInstance attribute = killedEntity.getAttribute(AttributesRegistry.COSMERE_ATTRIBUTES.get(MetalType.COPPER.getName()).get()); + final AttributeInstance attribute = killedEntity.getAttribute(AttributesRegistry.XP_RATE_ATTRIBUTE.get()); if (attribute != null) { //70% strength to spike diff --git a/src/main/java/leaf/cosmere/constants/Roshar.java b/src/main/java/leaf/cosmere/constants/Roshar.java index 9054b7e3e..e7c88de74 100644 --- a/src/main/java/leaf/cosmere/constants/Roshar.java +++ b/src/main/java/leaf/cosmere/constants/Roshar.java @@ -89,11 +89,10 @@ public int getColor() return 0; } - public Attribute getAttribute() + public RegistryObject getAttribute() { - final String registryName = getRegistryName(); - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(registryName); - return attributeRegistryObject.get(); + final RegistryObject attributeRegistryObject = AttributesRegistry.SURGEBINDING_ATTRIBUTES.get(this); + return attributeRegistryObject; } public String getRegistryName() @@ -255,7 +254,7 @@ public Ingredient getRepairIngredient() return null; } - public Attribute getFirstSurgeAttribute() + public RegistryObject getFirstSurgeAttribute() { switch (this) { @@ -283,7 +282,7 @@ public Attribute getFirstSurgeAttribute() } } - public Attribute getSecondSurgeAttribute() + public RegistryObject getSecondSurgeAttribute() { switch (this) { diff --git a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java index 06cd16f61..1faf66725 100644 --- a/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java +++ b/src/main/java/leaf/cosmere/effects/allomancy/AllomancyBoostEffect.java @@ -7,9 +7,9 @@ import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.effects.MobEffectBase; import leaf.cosmere.registry.AttributesRegistry; -import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeModifier; @@ -20,18 +20,33 @@ public AllomancyBoostEffect(Metals.MetalType type, MobEffectCategory effectType) { super(effectType, type.getColorValue()); - AttributesRegistry.COSMERE_ATTRIBUTES.entrySet() - .forEach(attributeRegistered -> - { - //todo powers to NOT increase? - //skip duralumin and nicrosil? + for (Metals.MetalType metalType : Metals.MetalType.values()) + { + if (metalType.hasAssociatedManifestation()) + { + addAttributeModifier( + AttributesRegistry.ALLOMANCY_ATTRIBUTES.get(metalType).get(), + "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", + 0.334D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier( + AttributesRegistry.FERUCHEMY_ATTRIBUTES.get(metalType).get(), + "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", + 0.334D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + + } + } + + for (Roshar.Surges surges : Roshar.Surges.values()) + { + addAttributeModifier( + AttributesRegistry.SURGEBINDING_ATTRIBUTES.get(surges).get(), + "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", + 0.334D, + AttributeModifier.Operation.MULTIPLY_TOTAL); + } - addAttributeModifier( - attributeRegistered.getValue().get(), - "ad9ba05c-d9e5-4f74-8f25-fa65139d178c", - 1.334D, - AttributeModifier.Operation.MULTIPLY_TOTAL); - }); } @Override diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java index 8b75e870e..5d85a42ac 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/AtiumStoreEffect.java @@ -22,7 +22,7 @@ public AtiumStoreEffect(Metals.MetalType type, MobEffectCategory effectType) //atium attribute, size addAttributeModifier( - AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), + AttributesRegistry.SIZE_ATTRIBUTE.get(), atiumStoreAttributeUUID, -0.15D, AttributeModifier.Operation.ADDITION); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java index cd4383e69..a6fb31e30 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java @@ -10,7 +10,9 @@ import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.world.effect.MobEffectCategory; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraftforge.registries.RegistryObject; public class NicrosilStoreEffect extends FeruchemyEffectBase @@ -21,15 +23,16 @@ public NicrosilStoreEffect(Metals.MetalType type, MobEffectCategory effectType) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName) + final RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null + || !attributeRegistryObject.isPresent() || manifestation == ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.NICROSIL).get()) { continue; } addAttributeModifier( - AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + attributeRegistryObject.get(), "00b3f9bc-9a43-46e7-98de-56dfa6e80618", -1000.0D, AttributeModifier.Operation.ADDITION); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java index 72fda1d12..aa5b62ec5 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/ZincStoreEffect.java @@ -17,7 +17,7 @@ public ZincStoreEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); addAttributeModifier( - AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()).get(), + AttributesRegistry.XP_RATE_ATTRIBUTE.get(), "9d50ed05-06f4-4bc2-83bc-d870f93696bf", -0.1D, AttributeModifier.Operation.ADDITION); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java index 99efdf7ce..e63999862 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/AtiumTapEffect.java @@ -22,7 +22,7 @@ public AtiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) //atium attribute, size addAttributeModifier( - AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()).get(), + AttributesRegistry.SIZE_ATTRIBUTE.get(), atiumStoreAttributeUUID, 0.15D, AttributeModifier.Operation.ADDITION); diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java index ebcc8fc14..a6c2979bc 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/ZincTapEffect.java @@ -19,7 +19,7 @@ public ZincTapEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); addAttributeModifier( - AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()).get(), + AttributesRegistry.XP_RATE_ATTRIBUTE.get(), "1a7c0d6e-d206-4939-ae07-b47783656f2d", 0.1D, AttributeModifier.Operation.ADDITION); diff --git a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java index 6d1466dc7..6d97694cc 100644 --- a/src/main/java/leaf/cosmere/handlers/ModBusEvents.java +++ b/src/main/java/leaf/cosmere/handlers/ModBusEvents.java @@ -6,6 +6,7 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; +import leaf.cosmere.constants.Roshar; import leaf.cosmere.registry.AttributesRegistry; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -44,17 +45,19 @@ public class ModBusEvents @SubscribeEvent(priority = EventPriority.HIGH) public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) { + for (Roshar.Surges surge : Roshar.Surges.values()) + { + event.add(EntityType.PLAYER, surge.getAttribute().get()); + } + for (EntityType entityType : entityTypes) { for (Metals.MetalType metalType : Metals.MetalType.values()) { if (metalType.hasAssociatedManifestation()) { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); - RegistryObject ferringAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); - - event.add(entityType, mistingAttribute.get()); - event.add(entityType, ferringAttribute.get()); + event.add(entityType, AttributesRegistry.ALLOMANCY_ATTRIBUTES.get(metalType).get()); + event.add(entityType, AttributesRegistry.FERUCHEMY_ATTRIBUTES.get(metalType).get()); } if (metalType.hasAttribute()) { diff --git a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java index 2c359b8d3..af9b5ce2e 100644 --- a/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/PlayerEventHandler.java @@ -87,7 +87,7 @@ public void onXPChange(PlayerXpEvent.XpChange event) return; } - RegistryObject xpGainRateAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.COPPER.getName()); + RegistryObject xpGainRateAttribute = AttributesRegistry.XP_RATE_ATTRIBUTE; if (xpGainRateAttribute != null && xpGainRateAttribute.isPresent()) { AttributeInstance attribute = event.getPlayer().getAttribute(xpGainRateAttribute.get()); diff --git a/src/main/java/leaf/cosmere/items/HonorbladeItem.java b/src/main/java/leaf/cosmere/items/HonorbladeItem.java index d80910e7c..c930eaca6 100644 --- a/src/main/java/leaf/cosmere/items/HonorbladeItem.java +++ b/src/main/java/leaf/cosmere/items/HonorbladeItem.java @@ -52,8 +52,8 @@ public Multimap getAttributeModifiers(EquipmentSlo ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamageIn, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", attackSpeedIn, AttributeModifier.Operation.ADDITION)); - builder.put(polestone.getFirstSurgeAttribute(),new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); - builder.put(polestone.getSecondSurgeAttribute(),new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + builder.put(polestone.getFirstSurgeAttribute().get(),new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + builder.put(polestone.getSecondSurgeAttribute().get(),new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); this.attributeModifiers = builder.build(); } diff --git a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java index b2257cd64..f9117b32a 100644 --- a/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java +++ b/src/main/java/leaf/cosmere/items/curio/BandsOfMourningItem.java @@ -4,12 +4,10 @@ package leaf.cosmere.items.curio; -import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; import net.minecraft.core.NonNullList; @@ -18,6 +16,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.RegistryObject; import top.theillusivec4.curios.api.SlotContext; import javax.annotation.Nonnull; @@ -81,13 +80,14 @@ public Multimap getAttributeModifiers(SlotContext for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { String manifestationName = manifestation.getName(); - if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || !AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || attributeRegistryObject == null) { continue; } attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + attributeRegistryObject.get(), new AttributeModifier( Constants.NBT.UNKEYED_UUID, manifestationName, diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index 3cc0f77fa..d826a43a4 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -243,15 +243,14 @@ default Multimap getHemalurgicAttributes(Multimap< { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String path = manifestation.getName(); - - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + final RegistryObject attribute = manifestation.getAttribute(); + if (attribute == null || !attribute.isPresent()) { continue; } attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), + attribute.get(), new AttributeModifier( Constants.NBT.ALUMINUM_UUID, manifestation.translationKey(), @@ -267,31 +266,32 @@ else if (hemalurgicIdentity == null) final double strength = getHemalurgicStrength(stack, metalType); - Attribute attribute = null; - AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; - - switch (metalType) { - case IRON: - attribute = Attributes.ATTACK_DAMAGE; - break; - case CHROMIUM: - attribute = Attributes.LUCK; - break; - default: - //TIN: - //Steals senses - //a type of night vision - - //Copper: - //Steals mental fortitude, memory, and intelligence - - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); - if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) - { - attribute = attributeRegistryObject.get(); - } - break; + Attribute attribute = null; + AttributeModifier.Operation attributeModifier = AttributeModifier.Operation.ADDITION; + + switch (metalType) + { + case IRON: + attribute = Attributes.ATTACK_DAMAGE; + break; + case CHROMIUM: + attribute = Attributes.LUCK; + break; + default: + //TIN: + //Steals senses + //a type of night vision + + //Copper: + //Steals mental fortitude, memory, and intelligence + + final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getName()); + if (attributeRegistryObject != null && attributeRegistryObject.isPresent()) + { + attribute = attributeRegistryObject.get(); + } + break; /* case ZINC: //Steals emotional fortitude @@ -301,17 +301,18 @@ else if (hemalurgicIdentity == null) //Steals Investiture //todo figure out what that means break;*/ - } + } - if (attribute != null) - { - attributeModifiers.put( - attribute, - new AttributeModifier( - hemalurgicIdentity, - "Hemalurgic " + metalType.getName(), - strength, - attributeModifier)); + if (attribute != null) + { + attributeModifiers.put( + attribute, + new AttributeModifier( + hemalurgicIdentity, + "Hemalurgic " + metalType.getName(), + strength, + attributeModifier)); + } } @@ -322,13 +323,14 @@ else if (hemalurgicIdentity == null) final double hemalurgicStrength = getHemalurgicStrength(stack, manifestation); if (hemalurgicStrength > 0) { - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(path)) + final RegistryObject regAttribute = manifestation.getAttribute(); + if (regAttribute == null || !regAttribute.isPresent()) { continue; } attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(path).get(), + regAttribute.get(), new AttributeModifier( hemalurgicIdentity, String.format("Hemalurgic-%s: %s", path, hemalurgicIdentity.toString()), diff --git a/src/main/java/leaf/cosmere/manifestation/AManifestation.java b/src/main/java/leaf/cosmere/manifestation/AManifestation.java index b9cd76fd4..4396b4fe9 100644 --- a/src/main/java/leaf/cosmere/manifestation/AManifestation.java +++ b/src/main/java/leaf/cosmere/manifestation/AManifestation.java @@ -10,10 +10,12 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderLevelLastEvent; import org.jetbrains.annotations.Nullable; +import net.minecraftforge.registries.RegistryObject; import java.util.Locale; @@ -80,4 +82,6 @@ public String getName() return regName.getPath().toLowerCase(Locale.ROOT); } + + public abstract RegistryObject getAttribute(); } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java index 806120e99..8566e478e 100644 --- a/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java +++ b/src/main/java/leaf/cosmere/manifestation/ManifestationBase.java @@ -11,6 +11,9 @@ import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.constants.Manifestations; +import leaf.cosmere.registry.AttributesRegistry; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraftforge.registries.RegistryObject; //Manifestation of investiture public class ManifestationBase extends AManifestation @@ -89,4 +92,16 @@ public double getStrength(ISpiritweb data, boolean getBaseStrength) { return 0; } + + @Override + public RegistryObject getAttribute() + { + final String manifestationName = getName(); + if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + { + return null; + } + + return AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName); + } } diff --git a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java index 31a33da37..8275e238b 100644 --- a/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/allomancy/AllomancyBase.java @@ -155,7 +155,7 @@ else if (getMetalType().isPushMetal()) public double getStrength(ISpiritweb data, boolean getBaseStrength) { - RegistryObject mistingAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getAllomancyRegistryName()); + RegistryObject mistingAttribute = AttributesRegistry.ALLOMANCY_ATTRIBUTES.get(metalType); AttributeInstance attribute = data.getLiving().getAttribute(mistingAttribute.get()); if (attribute != null) { @@ -177,4 +177,10 @@ public int getRange(ISpiritweb data) return Mth.floor(allomanticStrength * getMode(data)); } + + @Override + public RegistryObject getAttribute() + { + return AttributesRegistry.ALLOMANCY_ATTRIBUTES.get(metalType); + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java index ee6f6b91d..f57041b7d 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyAtium.java @@ -5,18 +5,11 @@ package leaf.cosmere.manifestation.feruchemy; import leaf.cosmere.cap.entity.ISpiritweb; -import leaf.cosmere.cap.entity.SpiritwebCapability; import leaf.cosmere.constants.Metals; import leaf.cosmere.registry.AttributesRegistry; -import leaf.cosmere.registry.EffectsRegistry; -import leaf.cosmere.registry.ManifestationRegistry; -import leaf.cosmere.utils.helpers.MathHelper; -import leaf.cosmere.utils.math.Easing; -import net.minecraft.util.Mth; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.registries.RegistryObject; public class FeruchemyAtium extends FeruchemyBase @@ -51,12 +44,10 @@ public static float getScale(LivingEntity living) } float scale = 1 + v;*/ - //player is in a weird uninitialized state when logging in, - //so if it errors, I don't care, just return 1 in those cases. try { - final RegistryObject metalRelatedAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.ATIUM.getName()); + final RegistryObject metalRelatedAttribute = AttributesRegistry.SIZE_ATTRIBUTE; if (metalRelatedAttribute != null && metalRelatedAttribute.isPresent()) { AttributeInstance attribute = living.getAttribute(metalRelatedAttribute.get()); @@ -65,7 +56,11 @@ public static float getScale(LivingEntity living) return v; } } - catch (Exception e) { } + catch (Exception e) + { + //player is in a weird uninitialized state when logging in, + //so if it errors, I don't care, just return 1 in those cases. + } return 1; } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java index 8deed6c80..2c35cec87 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyBase.java @@ -188,7 +188,7 @@ else if (mode < 0) public double getStrength(ISpiritweb cap, boolean getBaseStrength) { - RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(metalType.getFeruchemyRegistryName()); + RegistryObject attributeRegistryObject = AttributesRegistry.FERUCHEMY_ATTRIBUTES.get(metalType); AttributeInstance attribute = cap.getLiving().getAttribute(attributeRegistryObject.get()); if (attribute != null) { @@ -196,4 +196,10 @@ public double getStrength(ISpiritweb cap, boolean getBaseStrength) } return 0; } + + @Override + public RegistryObject getAttribute() + { + return AttributesRegistry.FERUCHEMY_ATTRIBUTES.get(metalType); + } } diff --git a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java index 7c35a0f04..c45a94f49 100644 --- a/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java +++ b/src/main/java/leaf/cosmere/manifestation/feruchemy/FeruchemyNicrosil.java @@ -6,13 +6,11 @@ import com.google.common.collect.LinkedHashMultimap; import com.google.common.collect.Multimap; -import com.mojang.blaze3d.shaders.Effect; import leaf.cosmere.cap.entity.ISpiritweb; import leaf.cosmere.charge.MetalmindChargeHelper; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.EffectsRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; @@ -20,13 +18,12 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; -import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.RegistryObject; //storing all the available powers on the user individually @@ -130,13 +127,13 @@ public void clearNicrosilPowers(ISpiritweb data) { for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { - String manifestationName = manifestation.getName(); - if (!AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { continue; } - final Attribute pAttribute = AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(); + final Attribute pAttribute = manifestation.getAttribute().get(); final AttributeInstance attribute = data.getLiving().getAttribute(pAttribute); if (attribute != null) { @@ -198,13 +195,14 @@ private static void checkTapNicrosil(ISpiritweb data, ItemStack metalmind) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { String manifestationName = manifestation.getName(); - if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || !AttributesRegistry.COSMERE_ATTRIBUTES.containsKey(manifestationName)) + RegistryObject attributeRegistryObject = manifestation.getAttribute(); + if (!CompoundNBTHelper.verifyExistance(nbt, manifestationName) || attributeRegistryObject == null || !attributeRegistryObject.isPresent()) { continue; } attributeModifiers.put( - AttributesRegistry.COSMERE_ATTRIBUTES.get(manifestationName).get(), + attributeRegistryObject.get(), new AttributeModifier( nbt.hasUUID("identity") ? nbt.getUUID("identity") : Constants.NBT.UNKEYED_UUID, manifestationName, diff --git a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java index ce367cb50..b90269832 100644 --- a/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java +++ b/src/main/java/leaf/cosmere/manifestation/surgebinding/SurgebindingBase.java @@ -7,11 +7,21 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Roshar; import leaf.cosmere.manifestation.ManifestationBase; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraftforge.registries.RegistryObject; public class SurgebindingBase extends ManifestationBase { + protected final Roshar.Surges surge; public SurgebindingBase(Roshar.Surges surge) { super(Manifestations.ManifestationTypes.SURGEBINDING, surge.getColor()); + this.surge = surge; + } + + @Override + public RegistryObject getAttribute() + { + return surge.getAttribute(); } } diff --git a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java index e09bc4290..1b99e6a19 100644 --- a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java +++ b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java @@ -49,7 +49,7 @@ private float updateLightTextureConstant(float prev) } } - final RegistryObject attributeRegistryObject = AttributesRegistry.COSMERE_ATTRIBUTES.get(Metals.MetalType.TIN.getName()); + final RegistryObject attributeRegistryObject = AttributesRegistry.NIGHT_VISION_ATTRIBUTE; AttributeInstance attribute = clientPlayer.getAttribute(attributeRegistryObject.get()); //return modded val final float v = attribute != null ? (float) attribute.getValue() : prev; diff --git a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java index 97a79c6a6..b80c51d7d 100644 --- a/src/main/java/leaf/cosmere/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/registry/AttributesRegistry.java @@ -7,128 +7,74 @@ import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Metals; import leaf.cosmere.constants.Roshar; -import net.minecraft.world.entity.MobType; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; public class AttributesRegistry { public static final DeferredRegister ATTRIBUTES = DeferredRegister.create(ForgeRegistries.ATTRIBUTES, Cosmere.MODID); - public static final Map> COSMERE_ATTRIBUTES = makeAttributeMap(); - - - public static final MobType SPREN = new MobType(); - - public static Map> makeAttributeMap() + public static final Map> COSMERE_ATTRIBUTES = new HashMap<>(); + + public static final Map> ALLOMANCY_ATTRIBUTES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasAssociatedManifestation) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + { + final String attributeName = metalType.getAllomancyRegistryName(); + return createAttribute(attributeName, 0, 0, 20); + })); + + public static final Map> FERUCHEMY_ATTRIBUTES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasAssociatedManifestation) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + { + String attributeName = metalType.getFeruchemyRegistryName(); + return createAttribute(attributeName, 0, 0, 20); + })); + + public static final Map> SURGEBINDING_ATTRIBUTES = + Arrays.stream(Roshar.Surges.values()) + .collect(Collectors.toMap( + Function.identity(), + surge -> + { + String attributeName = surge.getRegistryName(); + return createAttribute(attributeName, 0, 0, 10); + })); + + public static final RegistryObject NIGHT_VISION_ATTRIBUTE = createAttribute(Metals.MetalType.TIN.getName(), 0, 0, 1); + public static final RegistryObject XP_RATE_ATTRIBUTE = createAttribute(Metals.MetalType.COPPER.getName(), 1, 0, 20); + public static final RegistryObject SIZE_ATTRIBUTE = createAttribute(Metals.MetalType.ATIUM.getName(), 1, 0.1f, 20); + + private static RegistryObject createAttribute(String attributeName, double defaultVal, double min, double max) { - Map> attributeModifiers = new HashMap<>(); - - for (Roshar.Surges surge : Roshar.Surges.values()) - { - String attributeName = surge.getRegistryName(); - RegistryObject attribute = ATTRIBUTES.register( - attributeName, - () -> (new RangedAttribute( - "manifestation." + Cosmere.MODID + "." + attributeName, - 0, - 0, - 10)).setSyncable(true) - ); - - attributeModifiers.put(attributeName, attribute); - } - - for (Metals.MetalType metalType : Metals.MetalType.values()) - { - if (metalType.hasAssociatedManifestation()) - { - String mistingNamePath = metalType.getAllomancyRegistryName(); - String ferringNamePath = metalType.getFeruchemyRegistryName(); - - RegistryObject mistingAttribute = ATTRIBUTES.register( - mistingNamePath, - () -> (new RangedAttribute( - "manifestation." + Cosmere.MODID + "." + mistingNamePath, - 0, - 0, - 20)).setSyncable(true) - ); - - RegistryObject ferringAttribute = ATTRIBUTES.register( - ferringNamePath, - () -> (new RangedAttribute( - "manifestation." + Cosmere.MODID + "." + ferringNamePath, - 0, - 0, - 20)).setSyncable(true) - ); - - attributeModifiers.put(mistingNamePath, mistingAttribute); - attributeModifiers.put(ferringNamePath, ferringAttribute); - } - - if (!metalType.hasAttribute())// != Metals.MetalType.COPPER && metalType != Metals.MetalType.TIN) - { - continue; - } - - final String metalName = metalType.getName(); - - int defaultVal = 0; - double min = 0; - double max = 0; - - - switch (metalType) - { - case TIN: - { - defaultVal = 0; - min = 0; - max = 1; - } - break; - case COPPER: - { - defaultVal = 1; - min = 0; - max = 20; - } - break; - case ATIUM: - { - defaultVal = 1; - min = 0.1f; - max = 20; - } - break; - } - - //requires effectively final values - final int finalDefaultVal = defaultVal; - final double finalMin = min; - final double finalMax = max; - attributeModifiers.put(metalName, ATTRIBUTES.register( - metalName, - () -> (new RangedAttribute( - Cosmere.MODID + "." + metalName, - finalDefaultVal, - finalMin, - finalMax)) - .setSyncable(true) - )); - } - - - return attributeModifiers; + final RegistryObject attribute = ATTRIBUTES.register( + attributeName, + () -> (new RangedAttribute( + "manifestation." + Cosmere.MODID + "." + attributeName, + defaultVal, + min, + max)).setSyncable(true) + ); + + COSMERE_ATTRIBUTES.put(attributeName, attribute); + + return attribute; } - } From 8fc2d9589b07bdd798b4d890e65016997765c896 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 17:23:34 +1200 Subject: [PATCH 0293/1090] Ore generating again --- src/main/java/leaf/cosmere/Cosmere.java | 6 +- .../datagen/biome/BiomeFeatureModifier.java | 31 ++-- .../datagen/biome/BiomeModifierGen.java | 53 ++++--- .../leaf/cosmere/registry/BlocksRegistry.java | 2 +- .../cosmere/registry/FeatureRegistry.java | 146 +++++++----------- 5 files changed, 106 insertions(+), 132 deletions(-) diff --git a/src/main/java/leaf/cosmere/Cosmere.java b/src/main/java/leaf/cosmere/Cosmere.java index e33048a21..a5daaf953 100644 --- a/src/main/java/leaf/cosmere/Cosmere.java +++ b/src/main/java/leaf/cosmere/Cosmere.java @@ -57,7 +57,9 @@ public Cosmere() BiomeRegistry.BIOME_MODIFIERS.register(modBus); BiomeRegistry.BIOME_MODIFIERS.register(BiomeFeatureModifier.ADD_FEATURE.getPath(), BiomeFeatureModifier::makeCodec); - FeatureRegistry.FEATURES.register(modBus); + FeatureRegistry.CONFIGURED_FEATURES.register(modBus); + FeatureRegistry.PLACED_FEATURES.register(modBus); + RecipeRegistry.SPECIAL_RECIPES.register(modBus); AdvancementTriggerRegistry.init(); @@ -74,8 +76,6 @@ private void commonSetup(FMLCommonSetupEvent event) event.enqueueWork(() -> { CosmereCommand.registerCustomArgumentTypes(); - FeatureRegistry.ConfiguredFeatures.registerConfiguredFeatures(); - FeatureRegistry.PlacedFeatures.registerPlacedFeatures(); EntityRegistry.PrepareEntityAttributes(); LootFunctionRegistry.Register(); }); diff --git a/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java b/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java index 7a8c410fd..3b076efb2 100644 --- a/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java +++ b/src/main/java/leaf/cosmere/datagen/biome/BiomeFeatureModifier.java @@ -28,7 +28,15 @@ public record BiomeFeatureModifier(HolderSet biomes, GenerationStep.Decor private static final RegistryObject> SERIALIZER = RegistryObject.create(ADD_FEATURE, ForgeRegistries.Keys.BIOME_MODIFIER_SERIALIZERS, Cosmere.MODID); - public static Codec makeCodec() { + + @Override + public Codec codec() + { + return SERIALIZER.get(); + } + + public static Codec makeCodec() + { return RecordCodecBuilder.create(builder -> builder.group( Biome.LIST_CODEC.fieldOf("biomes").forGetter(BiomeFeatureModifier::biomes), Codec.STRING.comapFlatMap(BiomeFeatureModifier::generationStageFromString, GenerationStep.Decoration::toString).fieldOf("generation_stage").forGetter(BiomeFeatureModifier::generationStage), @@ -36,24 +44,25 @@ public static Codec makeCodec() { ).apply(builder, BiomeFeatureModifier::new)); } - private static DataResult generationStageFromString(String name) { - try { + private static DataResult generationStageFromString(String name) + { + try + { return DataResult.success(GenerationStep.Decoration.valueOf(name)); - } catch (Exception e) { + } + catch (Exception e) + { return DataResult.error("Not a decoration stage: " + name); } } @Override - public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) { - if (phase == Phase.ADD && this.biomes.contains(biome)) { + public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) + { + if (phase == Phase.ADD && this.biomes.contains(biome)) + { BiomeGenerationSettingsBuilder generation = builder.getGenerationSettings(); this.features.forEach(holder -> generation.addFeature(this.generationStage, holder)); } } - - @Override - public Codec codec() { - return SERIALIZER.get(); - } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java b/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java index 450d0fc8f..f9a9afd4d 100644 --- a/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java +++ b/src/main/java/leaf/cosmere/datagen/biome/BiomeModifierGen.java @@ -33,26 +33,15 @@ public record BiomeModifierGen(DataGenerator dataGenerator) implements DataProvider { - public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) { - final String directory = PackType.SERVER_DATA.getDirectory(); - final ResourceLocation biomeModifiersRegistryID = ForgeRegistries.Keys.BIOME_MODIFIERS.location(); - - final String biomeModifierPathString = String.join("/", directory, Cosmere.MODID, biomeModifiersRegistryID.getNamespace(), biomeModifiersRegistryID.getPath(), saveName + ".json"); - - BiomeModifier.DIRECT_CODEC.encodeStart(ops, modifier).resultOrPartial(msg -> LogHelper.LOGGER.error("Failed to encode {}: {}", biomeModifierPathString, msg)).ifPresent(json -> - { - try { - final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); - DataProvider.saveStable(cache, json, biomeModifierPath); - } catch ( - IOException e) { - LogHelper.LOGGER.error("Failed to save " + biomeModifierPathString, e); - } - }); + @Override + public @NotNull String getName() + { + return Cosmere.MODID + " Biome Modifiers"; } @Override - public void run(@NotNull CachedOutput cachedOutput) { + public void run(@NotNull CachedOutput cachedOutput) + { RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.BUILTIN.get()); final Path outputFolder = this.dataGenerator.getOutputFolder(); @@ -67,18 +56,18 @@ public void run(@NotNull CachedOutput cachedOutput) { } // Biome Modifiers - BiomeFeatureModifier oreModifer = new BiomeFeatureModifier( + BiomeFeatureModifier oreModifier = new BiomeFeatureModifier( new HolderSet.Named<>( ops.registry(Registry.BIOME_REGISTRY).get(), BiomeTags.IS_OVERWORLD), GenerationStep.Decoration.UNDERGROUND_ORES, - HolderSet.direct(Holder.direct(FeatureRegistry.PlacedFeatures.PLACED_ORE_FEATURES.get(metalType).get())) + HolderSet.direct(Holder.direct(FeatureRegistry.PLACED_ORE_FEATURES.get(metalType).get())) ); // Generate BiomeModiers generate(ops, - oreModifer, + oreModifier, outputFolder, metalType.getName() + Constants.RegNameStubs.ORE, cachedOutput); @@ -86,9 +75,27 @@ public void run(@NotNull CachedOutput cachedOutput) { } } - @Override - public @NotNull String getName() { - return Cosmere.MODID + " Biome Modifiers"; + public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) + { + final String directory = PackType.SERVER_DATA.getDirectory(); + final ResourceLocation biomeModifiersRegistryID = ForgeRegistries.Keys.BIOME_MODIFIERS.location(); + + final String biomeModifierPathString = String.join("/", directory, Cosmere.MODID, biomeModifiersRegistryID.getNamespace(), biomeModifiersRegistryID.getPath(), saveName + ".json"); + + BiomeModifier.DIRECT_CODEC.encodeStart(ops, modifier) + .resultOrPartial(msg -> LogHelper.LOGGER.error("Failed to encode {}: {}", biomeModifierPathString, msg)) + .ifPresent(json -> + { + try + { + final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); + DataProvider.saveStable(cache, json, biomeModifierPath); + } + catch (IOException e) + { + LogHelper.LOGGER.error("Failed to save " + biomeModifierPathString, e); + } + }); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java index ed33b3d51..a7a32b4f1 100644 --- a/src/main/java/leaf/cosmere/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/registry/BlocksRegistry.java @@ -62,7 +62,7 @@ public class BlocksRegistry .collect(Collectors.toMap( Function.identity(), metalType -> register( - metalType.getName() + Constants.RegNameStubs.ORE + Constants.RegNameStubs.DEEPSLATE_ORE, + Constants.RegNameStubs.DEEPSLATE + metalType.getName() + Constants.RegNameStubs.ORE, () -> new MetalOreBlock(metalType), metalType.getRarity()))); diff --git a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java index 9a434afc7..981f3f7ad 100644 --- a/src/main/java/leaf/cosmere/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/registry/FeatureRegistry.java @@ -4,23 +4,19 @@ package leaf.cosmere.registry; +import com.google.common.collect.ImmutableList; import leaf.cosmere.Cosmere; import leaf.cosmere.constants.Constants; import leaf.cosmere.constants.Metals; -import leaf.cosmere.utils.helpers.ResourceLocationHelper; import net.minecraft.core.Holder; import net.minecraft.core.Registry; -import net.minecraft.data.BuiltinRegistries; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.OreFeature; -import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.placement.*; import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; @@ -31,111 +27,73 @@ public class FeatureRegistry { - public static final DeferredRegister> FEATURES = DeferredRegister.create(ForgeRegistries.FEATURES, Cosmere.MODID); + public static final DeferredRegister> CONFIGURED_FEATURES = DeferredRegister.create(Registry.CONFIGURED_FEATURE_REGISTRY, Cosmere.MODID); + public static final DeferredRegister PLACED_FEATURES = DeferredRegister.create(Registry.PLACED_FEATURE_REGISTRY, Cosmere.MODID); - public static final Map>> ORE_FEATURES = + public static final Map>> CONFIGURED_ORE_FEATURES = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( Function.identity(), - type -> FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new OreFeature(OreConfiguration.CODEC)))); - + metalType -> CONFIGURED_FEATURES.register( + metalType.getName() + Constants.RegNameStubs.ORE, + () -> new ConfiguredFeature<>( + Feature.ORE, + new OreConfiguration( + makeTarget(metalType), + 9))) + )); + + public static final Map> PLACED_ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + metalType -> + PLACED_FEATURES.register( + metalType.getName() + Constants.RegNameStubs.ORE, + () -> new PlacedFeature(Holder.direct(CONFIGURED_ORE_FEATURES.get(metalType).get()), + commonOrePlacement( + 10,//width? + HeightRangePlacement.triangle( + VerticalAnchor.absolute(-32), + VerticalAnchor.absolute(150) + ) + ) + ) + ) + )); + + private static List makeTarget(Metals.MetalType metalType) + { + return ImmutableList.of( + OreConfiguration.target( + OreFeatures.STONE_ORE_REPLACEABLES, + BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState()), + OreConfiguration.target( + OreFeatures.DEEPSLATE_ORE_REPLACEABLES, + BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).get().defaultBlockState()) + ); + } // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - public static class ConfiguredFeatures - { - //todo have ore specific changes, rather than all using the same settings - //reference Features.java - public static final Map>> ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - metalType -> registerConfiguredFeature( - metalType.getName() + Constants.RegNameStubs.ORE, - new ConfiguredFeature<>( - FeatureRegistry.ORE_FEATURES.get(metalType).get(), - new OreConfiguration(makeTarget(metalType), 7) - ) - ))); - - private static List makeTarget(Metals.MetalType metalType) - { - return - List.of( - OreConfiguration.target( - OreFeatures.STONE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE.get(metalType).get().defaultBlockState()), - OreConfiguration.target( - OreFeatures.DEEPSLATE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).get().defaultBlockState()) - ); - } - - public static void registerConfiguredFeatures() - { - //call to static will trigger static finals to be created - } - } - - public static class PlacedFeatures + //copied from OrePlacements.java, since they're private methods that should really be public + private static List commonOrePlacement(int p_195344_, PlacementModifier p_195345_) { - public static final Map> PLACED_ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - metalType -> - registerPlacedFeature( - metalType.getName() + Constants.RegNameStubs.ORE, - ConfiguredFeatures.ORE_FEATURES.get(metalType), - commonOrePlacement( - 10,//width? - HeightRangePlacement.triangle( - VerticalAnchor.absolute(-32), - VerticalAnchor.absolute(150)) - ) - ) - ) - ); - - - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int p_195344_, PlacementModifier p_195345_) - { - return orePlacement(CountPlacement.of(p_195344_), p_195345_); - } - - private static List rareOrePlacement(int p_195350_, PlacementModifier p_195351_) - { - return orePlacement(RarityFilter.onAverageOnceEvery(p_195350_), p_195351_); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - - public static void registerPlacedFeatures() - { - //call to static will trigger static finals to be created - } + return orePlacement(CountPlacement.of(p_195344_), p_195345_); } - - private static Holder registerPlacedFeature(String registryName, Holder> configuredFeature, List placementModifiers) + private static List rareOrePlacement(int p_195350_, PlacementModifier p_195351_) { - return BuiltinRegistries.register(BuiltinRegistries.PLACED_FEATURE, ResourceLocationHelper.prefix(registryName), new PlacedFeature(Holder.hackyErase(configuredFeature), List.copyOf(placementModifiers))); + return orePlacement(RarityFilter.onAverageOnceEvery(p_195350_), p_195351_); } - private static > Holder> registerConfiguredFeature(String registryName, ConfiguredFeature configuredFeature) + private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) { - Registry> registry = BuiltinRegistries.CONFIGURED_FEATURE; - return BuiltinRegistries.register(registry, ResourceLocationHelper.prefix(registryName), configuredFeature); + return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); } + } From 488b9d6e6331c4c1c9c452e237752cf7231b76f6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 17:24:17 +1200 Subject: [PATCH 0294/1090] Update Constants.java --- src/main/java/leaf/cosmere/constants/Constants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/constants/Constants.java b/src/main/java/leaf/cosmere/constants/Constants.java index 911c6b5a0..7f5a62b7b 100644 --- a/src/main/java/leaf/cosmere/constants/Constants.java +++ b/src/main/java/leaf/cosmere/constants/Constants.java @@ -22,7 +22,7 @@ public static class Resources public static final ResourceLocation ALL = new ResourceLocation(Cosmere.MODID, "all"); public static final ResourceLocation JEI = new ResourceLocation(Cosmere.MODID, "jei"); - public static final ResourceLocation SPIRITWEB_CAP = new ResourceLocation(Cosmere.MODID, "innate_investiture"); + public static final ResourceLocation SPIRITWEB_CAP = new ResourceLocation(Cosmere.MODID, "spiritweb"); } public static class Suffix @@ -50,7 +50,7 @@ public static class RegNameStubs public static final String BLOCK = "_block"; public static final String RAW = "raw_"; public static final String ORE = "_ore"; - public static final String DEEPSLATE_ORE = "_deepslate"; + public static final String DEEPSLATE = "deepslate_"; public static final String BLEND = "_blend"; public static final String METALMIND = "_metalmind"; From ce139039eaef7cf300fccbec13f7337c304690ba Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 17:24:37 +1200 Subject: [PATCH 0295/1090] Re-Generated data --- .../03e4de26f1265135874f8cdcaebc09d9c08eb42b | 108 ++ .../0da09c3765e69584f28b8eb99ea0d5489f661122 | 38 + .../3b2a435655541c92d690318b57013336949ed348 | 60 ++ .../44623903f0365d3c95d129c2cab3e32a7eda1dc7 | 86 ++ .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 41 + .../75bcd4dba6ca7d365462b0ec45e291d1056349c4 | 39 + .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 167 +++ .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 440 ++++++++ .../a2c6b3dcb5eefab370df8fe38d91af50718936d2 | 9 + .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 + src/main/generated/.cache/cache | 972 ------------------ ...slate.json => deepslate_aluminum_ore.json} | 0 ...pslate.json => deepslate_cadmium_ore.json} | 0 ...slate.json => deepslate_chromium_ore.json} | 0 ...deepslate.json => deepslate_lead_ore.json} | 0 ...epslate.json => deepslate_nickel_ore.json} | 0 ...epslate.json => deepslate_silver_ore.json} | 0 ..._deepslate.json => deepslate_tin_ore.json} | 0 ...deepslate.json => deepslate_zinc_ore.json} | 0 .../generated/assets/cosmere/lang/en_us.json | 24 +- .../models/block/metalworking_table.json | 8 +- ...slate.json => deepslate_aluminum_ore.json} | 0 ...pslate.json => deepslate_cadmium_ore.json} | 0 ...slate.json => deepslate_chromium_ore.json} | 0 ...deepslate.json => deepslate_lead_ore.json} | 0 ...epslate.json => deepslate_nickel_ore.json} | 0 ...epslate.json => deepslate_silver_ore.json} | 0 ..._deepslate.json => deepslate_tin_ore.json} | 0 ...deepslate.json => deepslate_zinc_ore.json} | 0 .../advancements/allomancy/aluminum.json | 42 +- .../cosmere/advancements/allomancy/atium.json | 42 +- .../advancements/allomancy/bendalloy.json | 42 +- .../cosmere/advancements/allomancy/brass.json | 42 +- .../advancements/allomancy/bronze.json | 42 +- .../advancements/allomancy/cadmium.json | 42 +- .../advancements/allomancy/chromium.json | 42 +- .../advancements/allomancy/copper.json | 42 +- .../advancements/allomancy/duralumin.json | 42 +- .../advancements/allomancy/electrum.json | 42 +- .../cosmere/advancements/allomancy/gold.json | 42 +- .../cosmere/advancements/allomancy/iron.json | 42 +- .../advancements/allomancy/nicrosil.json | 42 +- .../advancements/allomancy/pewter.json | 42 +- .../cosmere/advancements/allomancy/root.json | 32 +- .../cosmere/advancements/allomancy/steel.json | 42 +- .../cosmere/advancements/allomancy/tin.json | 42 +- .../cosmere/advancements/allomancy/zinc.json | 42 +- .../advancements/feruchemy/aluminum.json | 42 +- .../cosmere/advancements/feruchemy/atium.json | 42 +- .../advancements/feruchemy/bendalloy.json | 42 +- .../cosmere/advancements/feruchemy/brass.json | 42 +- .../advancements/feruchemy/bronze.json | 42 +- .../advancements/feruchemy/cadmium.json | 42 +- .../advancements/feruchemy/chromium.json | 42 +- .../advancements/feruchemy/copper.json | 42 +- .../advancements/feruchemy/duralumin.json | 42 +- .../advancements/feruchemy/electrum.json | 42 +- .../cosmere/advancements/feruchemy/gold.json | 42 +- .../cosmere/advancements/feruchemy/iron.json | 42 +- .../advancements/feruchemy/nicrosil.json | 42 +- .../advancements/feruchemy/pewter.json | 42 +- .../cosmere/advancements/feruchemy/root.json | 32 +- .../cosmere/advancements/feruchemy/steel.json | 42 +- .../cosmere/advancements/feruchemy/tin.json | 42 +- .../cosmere/advancements/feruchemy/zinc.json | 42 +- .../cosmere/advancements/hemalurgy/root.json | 36 +- .../cosmere.blocks/aluminum_block.json | 20 +- .../recipes/cosmere.blocks/atium_block.json | 20 +- .../cosmere.blocks/bendalloy_block.json | 20 +- .../recipes/cosmere.blocks/brass_block.json | 20 +- .../recipes/cosmere.blocks/bronze_block.json | 20 +- .../recipes/cosmere.blocks/cadmium_block.json | 20 +- .../cosmere.blocks/chromium_block.json | 20 +- .../recipes/cosmere.blocks/copper_block.json | 20 +- .../cosmere.blocks/duralumin_block.json | 20 +- .../cosmere.blocks/electrum_block.json | 20 +- .../cosmere.blocks/harmonium_block.json | 20 +- .../recipes/cosmere.blocks/lead_block.json | 20 +- .../cosmere.blocks/lerasatium_block.json | 20 +- .../cosmere.blocks/lerasium_block.json | 20 +- .../cosmere.blocks/malatium_block.json | 20 +- .../cosmere.blocks/metalworking_table.json | 20 +- .../recipes/cosmere.blocks/nickel_block.json | 20 +- .../cosmere.blocks/nicrosil_block.json | 20 +- .../recipes/cosmere.blocks/pewter_block.json | 20 +- .../recipes/cosmere.blocks/silver_block.json | 20 +- .../recipes/cosmere.blocks/steel_block.json | 20 +- .../recipes/cosmere.blocks/tin_block.json | 20 +- .../recipes/cosmere.blocks/zinc_block.json | 20 +- .../alloying/blend/bendalloy.json | 20 +- .../cosmere.items/alloying/blend/brass.json | 20 +- .../cosmere.items/alloying/blend/bronze.json | 20 +- .../alloying/blend/duralumin.json | 20 +- .../alloying/blend/electrum.json | 20 +- .../alloying/blend/nicrosil.json | 20 +- .../cosmere.items/alloying/blend/pewter.json | 20 +- .../cosmere.items/alloying/blend/steel.json | 20 +- .../recipes/cosmere.items/aluminum_ingot.json | 20 +- ...inum_ingot_from_blasting_aluminum_ore.json | 20 +- ..._ingot_from_blasting_raw_aluminum_ore.json | 20 +- ...inum_ingot_from_smelting_aluminum_ore.json | 20 +- ..._ingot_from_smelting_raw_aluminum_ore.json | 20 +- .../recipes/cosmere.items/atium_ingot.json | 20 +- .../cosmere.items/bendalloy_ingot.json | 20 +- ...y_ingot_from_blasting_bendalloy_blend.json | 20 +- ...y_ingot_from_smelting_bendalloy_blend.json | 20 +- .../recipes/cosmere.items/brass_ingot.json | 20 +- ...brass_ingot_from_blasting_brass_blend.json | 20 +- ...brass_ingot_from_smelting_brass_blend.json | 20 +- .../recipes/cosmere.items/bronze_ingot.json | 20 +- ...onze_ingot_from_blasting_bronze_blend.json | 20 +- ...onze_ingot_from_smelting_bronze_blend.json | 20 +- .../recipes/cosmere.items/cadmium_ingot.json | 20 +- ...dmium_ingot_from_blasting_cadmium_ore.json | 20 +- ...m_ingot_from_blasting_raw_cadmium_ore.json | 20 +- ...dmium_ingot_from_smelting_cadmium_ore.json | 20 +- ...m_ingot_from_smelting_raw_cadmium_ore.json | 20 +- .../recipes/cosmere.items/chromium_ingot.json | 20 +- ...mium_ingot_from_blasting_chromium_ore.json | 20 +- ..._ingot_from_blasting_raw_chromium_ore.json | 20 +- ...mium_ingot_from_smelting_chromium_ore.json | 20 +- ..._ingot_from_smelting_raw_chromium_ore.json | 20 +- .../recipes/cosmere.items/coin_pouch.json | 20 +- .../aluminum_block_deconstruct.json | 20 +- .../aluminum_item_deconstruct.json | 20 +- .../conversions/atium_block_deconstruct.json | 20 +- .../conversions/atium_item_deconstruct.json | 20 +- .../bendalloy_block_deconstruct.json | 20 +- .../bendalloy_item_deconstruct.json | 20 +- .../conversions/brass_block_deconstruct.json | 20 +- .../conversions/brass_item_deconstruct.json | 20 +- .../conversions/bronze_block_deconstruct.json | 20 +- .../conversions/bronze_item_deconstruct.json | 20 +- .../cadmium_block_deconstruct.json | 20 +- .../conversions/cadmium_item_deconstruct.json | 20 +- .../chromium_block_deconstruct.json | 20 +- .../chromium_item_deconstruct.json | 20 +- .../conversions/copper_block_deconstruct.json | 20 +- .../conversions/copper_item_deconstruct.json | 20 +- .../duralumin_block_deconstruct.json | 20 +- .../duralumin_item_deconstruct.json | 20 +- .../electrum_block_deconstruct.json | 20 +- .../electrum_item_deconstruct.json | 20 +- .../harmonium_block_deconstruct.json | 20 +- .../harmonium_item_deconstruct.json | 20 +- .../conversions/lead_block_deconstruct.json | 20 +- .../conversions/lead_item_deconstruct.json | 20 +- .../lerasatium_block_deconstruct.json | 20 +- .../lerasatium_item_deconstruct.json | 20 +- .../lerasium_block_deconstruct.json | 20 +- .../lerasium_item_deconstruct.json | 20 +- .../malatium_block_deconstruct.json | 20 +- .../malatium_item_deconstruct.json | 20 +- .../conversions/nickel_block_deconstruct.json | 20 +- .../conversions/nickel_item_deconstruct.json | 20 +- .../nicrosil_block_deconstruct.json | 20 +- .../nicrosil_item_deconstruct.json | 20 +- .../conversions/pewter_block_deconstruct.json | 20 +- .../conversions/pewter_item_deconstruct.json | 20 +- .../conversions/silver_block_deconstruct.json | 20 +- .../conversions/silver_item_deconstruct.json | 20 +- .../conversions/steel_block_deconstruct.json | 20 +- .../conversions/steel_item_deconstruct.json | 20 +- .../conversions/tin_block_deconstruct.json | 20 +- .../conversions/tin_item_deconstruct.json | 20 +- .../conversions/zinc_block_deconstruct.json | 20 +- .../conversions/zinc_item_deconstruct.json | 20 +- .../recipes/cosmere.items/copper_ingot.json | 20 +- .../cosmere.items/duralumin_ingot.json | 20 +- ...n_ingot_from_blasting_duralumin_blend.json | 20 +- ...n_ingot_from_smelting_duralumin_blend.json | 20 +- .../recipes/cosmere.items/electrum_ingot.json | 20 +- ...um_ingot_from_blasting_electrum_blend.json | 20 +- ...um_ingot_from_smelting_electrum_blend.json | 20 +- .../guide_from_blasting_iron_spike.json | 20 +- .../guide_from_smelting_iron_spike.json | 20 +- .../cosmere.items/harmonium_ingot.json | 20 +- .../recipes/cosmere.items/lead_ingot.json | 20 +- .../lead_ingot_from_blasting_lead_ore.json | 20 +- ...lead_ingot_from_blasting_raw_lead_ore.json | 20 +- .../lead_ingot_from_smelting_lead_ore.json | 20 +- ...lead_ingot_from_smelting_raw_lead_ore.json | 20 +- .../cosmere.items/lerasatium_ingot.json | 20 +- .../recipes/cosmere.items/lerasium_ingot.json | 20 +- .../recipes/cosmere.items/malatium_ingot.json | 20 +- .../recipes/cosmere.items/metal_vial.json | 20 +- .../recipes/cosmere.items/nickel_ingot.json | 20 +- ...nickel_ingot_from_blasting_nickel_ore.json | 20 +- ...el_ingot_from_blasting_raw_nickel_ore.json | 20 +- ...nickel_ingot_from_smelting_nickel_ore.json | 20 +- ...el_ingot_from_smelting_raw_nickel_ore.json | 20 +- .../recipes/cosmere.items/nicrosil_ingot.json | 20 +- ...il_ingot_from_blasting_nicrosil_blend.json | 20 +- ...il_ingot_from_smelting_nicrosil_blend.json | 20 +- .../recipes/cosmere.items/pewter_ingot.json | 20 +- ...wter_ingot_from_blasting_pewter_blend.json | 20 +- ...wter_ingot_from_smelting_pewter_blend.json | 20 +- .../recipes/cosmere.items/silver_ingot.json | 20 +- ...er_ingot_from_blasting_raw_silver_ore.json | 20 +- ...silver_ingot_from_blasting_silver_ore.json | 20 +- ...er_ingot_from_smelting_raw_silver_ore.json | 20 +- ...silver_ingot_from_smelting_silver_ore.json | 20 +- .../recipes/cosmere.items/steel_ingot.json | 20 +- ...steel_ingot_from_blasting_steel_blend.json | 20 +- ...steel_ingot_from_smelting_steel_blend.json | 20 +- .../recipes/cosmere.items/tin_ingot.json | 20 +- .../tin_ingot_from_blasting_raw_tin_ore.json | 20 +- .../tin_ingot_from_blasting_tin_ore.json | 20 +- .../tin_ingot_from_smelting_raw_tin_ore.json | 20 +- .../tin_ingot_from_smelting_tin_ore.json | 20 +- .../recipes/cosmere.items/zinc_ingot.json | 20 +- ...zinc_ingot_from_blasting_raw_zinc_ore.json | 20 +- .../zinc_ingot_from_blasting_zinc_ore.json | 20 +- ...zinc_ingot_from_smelting_raw_zinc_ore.json | 20 +- .../zinc_ingot_from_smelting_zinc_ore.json | 20 +- .../aluminum_bracelet_metalmind.json | 20 +- .../aluminum_necklace_metalmind.json | 20 +- .../aluminum_ring_metalmind.json | 20 +- .../atium_bracelet_metalmind.json | 20 +- .../atium_necklace_metalmind.json | 20 +- .../atium_ring_metalmind.json | 20 +- .../bendalloy_bracelet_metalmind.json | 20 +- .../bendalloy_necklace_metalmind.json | 20 +- .../bendalloy_ring_metalmind.json | 20 +- .../brass_bracelet_metalmind.json | 20 +- .../brass_necklace_metalmind.json | 20 +- .../brass_ring_metalmind.json | 20 +- .../bronze_bracelet_metalmind.json | 20 +- .../bronze_necklace_metalmind.json | 20 +- .../bronze_ring_metalmind.json | 20 +- .../cadmium_bracelet_metalmind.json | 20 +- .../cadmium_necklace_metalmind.json | 20 +- .../cadmium_ring_metalmind.json | 20 +- .../chromium_bracelet_metalmind.json | 20 +- .../chromium_necklace_metalmind.json | 20 +- .../chromium_ring_metalmind.json | 20 +- .../copper_bracelet_metalmind.json | 20 +- .../copper_necklace_metalmind.json | 20 +- .../copper_ring_metalmind.json | 20 +- .../duralumin_bracelet_metalmind.json | 20 +- .../duralumin_necklace_metalmind.json | 20 +- .../duralumin_ring_metalmind.json | 20 +- .../electrum_bracelet_metalmind.json | 20 +- .../electrum_necklace_metalmind.json | 20 +- .../electrum_ring_metalmind.json | 20 +- .../gold_bracelet_metalmind.json | 20 +- .../gold_necklace_metalmind.json | 20 +- .../gold_ring_metalmind.json | 20 +- .../iron_bracelet_metalmind.json | 20 +- .../iron_necklace_metalmind.json | 20 +- .../iron_ring_metalmind.json | 20 +- .../nicrosil_bracelet_metalmind.json | 20 +- .../nicrosil_necklace_metalmind.json | 20 +- .../nicrosil_ring_metalmind.json | 20 +- .../pewter_bracelet_metalmind.json | 20 +- .../pewter_necklace_metalmind.json | 20 +- .../pewter_ring_metalmind.json | 20 +- .../steel_bracelet_metalmind.json | 20 +- .../steel_necklace_metalmind.json | 20 +- .../steel_ring_metalmind.json | 20 +- .../tin_bracelet_metalmind.json | 20 +- .../tin_necklace_metalmind.json | 20 +- .../tin_ring_metalmind.json | 20 +- .../zinc_bracelet_metalmind.json | 20 +- .../zinc_necklace_metalmind.json | 20 +- .../zinc_ring_metalmind.json | 20 +- .../cosmere.spikes/aluminum_spike.json | 20 +- .../recipes/cosmere.spikes/atium_spike.json | 20 +- .../cosmere.spikes/bendalloy_spike.json | 20 +- .../recipes/cosmere.spikes/brass_spike.json | 20 +- .../recipes/cosmere.spikes/bronze_spike.json | 20 +- .../recipes/cosmere.spikes/cadmium_spike.json | 20 +- .../cosmere.spikes/chromium_spike.json | 20 +- .../recipes/cosmere.spikes/copper_spike.json | 20 +- .../cosmere.spikes/duralumin_spike.json | 20 +- .../cosmere.spikes/electrum_spike.json | 20 +- .../recipes/cosmere.spikes/gold_spike.json | 20 +- .../recipes/cosmere.spikes/iron_spike.json | 20 +- .../cosmere.spikes/lerasatium_spike.json | 20 +- .../cosmere.spikes/lerasium_spike.json | 20 +- .../cosmere.spikes/nicrosil_spike.json | 20 +- .../recipes/cosmere.spikes/pewter_spike.json | 20 +- .../recipes/cosmere.spikes/steel_spike.json | 20 +- .../recipes/cosmere.spikes/tin_spike.json | 20 +- .../recipes/cosmere.spikes/zinc_spike.json | 20 +- .../forge/biome_modifier/aluminum_ore.json | 58 ++ .../forge/biome_modifier/cadmium_ore.json | 58 ++ .../forge/biome_modifier/chromium_ore.json | 58 ++ .../forge/biome_modifier/lead_ore.json | 58 ++ .../forge/biome_modifier/nickel_ore.json | 58 ++ .../forge/biome_modifier/silver_ore.json | 58 ++ .../cosmere/forge/biome_modifier/tin_ore.json | 58 ++ .../forge/biome_modifier/zinc_ore.json | 58 ++ .../loot_tables/blocks/aluminum_block.json | 12 +- .../loot_tables/blocks/aluminum_ore.json | 8 +- .../loot_tables/blocks/atium_block.json | 12 +- .../loot_tables/blocks/bendalloy_block.json | 12 +- .../loot_tables/blocks/brass_block.json | 12 +- .../loot_tables/blocks/bronze_block.json | 12 +- .../loot_tables/blocks/cadmium_block.json | 12 +- .../loot_tables/blocks/cadmium_ore.json | 8 +- .../loot_tables/blocks/chromium_block.json | 12 +- .../loot_tables/blocks/chromium_ore.json | 8 +- .../loot_tables/blocks/copper_block.json | 12 +- ...slate.json => deepslate_aluminum_ore.json} | 10 +- ...pslate.json => deepslate_cadmium_ore.json} | 10 +- ...slate.json => deepslate_chromium_ore.json} | 10 +- ...deepslate.json => deepslate_lead_ore.json} | 10 +- ...epslate.json => deepslate_nickel_ore.json} | 10 +- ...epslate.json => deepslate_silver_ore.json} | 10 +- ..._deepslate.json => deepslate_tin_ore.json} | 10 +- ...deepslate.json => deepslate_zinc_ore.json} | 10 +- .../loot_tables/blocks/duralumin_block.json | 12 +- .../loot_tables/blocks/electrum_block.json | 12 +- .../cosmere/loot_tables/blocks/gem_block.json | 12 +- .../loot_tables/blocks/harmonium_block.json | 12 +- .../loot_tables/blocks/lead_block.json | 12 +- .../cosmere/loot_tables/blocks/lead_ore.json | 8 +- .../loot_tables/blocks/lerasatium_block.json | 12 +- .../loot_tables/blocks/lerasium_block.json | 12 +- .../loot_tables/blocks/malatium_block.json | 12 +- .../blocks/metalworking_table.json | 12 +- .../loot_tables/blocks/nickel_block.json | 12 +- .../loot_tables/blocks/nickel_ore.json | 8 +- .../loot_tables/blocks/nicrosil_block.json | 12 +- .../loot_tables/blocks/pewter_block.json | 12 +- .../loot_tables/blocks/silver_block.json | 12 +- .../loot_tables/blocks/silver_ore.json | 8 +- .../loot_tables/blocks/steel_block.json | 12 +- .../cosmere/loot_tables/blocks/tin_block.json | 12 +- .../cosmere/loot_tables/blocks/tin_ore.json | 8 +- .../loot_tables/blocks/zinc_block.json | 12 +- .../cosmere/loot_tables/blocks/zinc_ore.json | 8 +- .../guide/en_us/categories/allomancy.json | 8 +- .../guide/en_us/categories/feruchemy.json | 6 +- .../guide/en_us/categories/hemalurgy.json | 6 +- .../entries/allomancy/allomancy_basics.json | 6 +- .../allomancy/allomantic_aluminum.json | 4 +- .../entries/allomancy/allomantic_atium.json | 4 +- .../allomancy/allomantic_bendalloy.json | 4 +- .../entries/allomancy/allomantic_brass.json | 4 +- .../entries/allomancy/allomantic_bronze.json | 4 +- .../entries/allomancy/allomantic_cadmium.json | 4 +- .../allomancy/allomantic_chromium.json | 4 +- .../entries/allomancy/allomantic_copper.json | 6 +- .../allomancy/allomantic_duralumin.json | 4 +- .../allomancy/allomantic_electrum.json | 4 +- .../entries/allomancy/allomantic_gold.json | 4 +- .../entries/allomancy/allomantic_iron.json | 6 +- .../allomancy/allomantic_nicrosil.json | 4 +- .../entries/allomancy/allomantic_pewter.json | 4 +- .../entries/allomancy/allomantic_steel.json | 6 +- .../entries/allomancy/allomantic_tin.json | 4 +- .../entries/allomancy/allomantic_zinc.json | 4 +- .../feruchemy/feruchemical_aluminum.json | 4 +- .../entries/feruchemy/feruchemical_atium.json | 4 +- .../feruchemy/feruchemical_bendalloy.json | 4 +- .../entries/feruchemy/feruchemical_brass.json | 4 +- .../feruchemy/feruchemical_bronze.json | 4 +- .../feruchemy/feruchemical_cadmium.json | 4 +- .../feruchemy/feruchemical_chromium.json | 4 +- .../feruchemy/feruchemical_copper.json | 4 +- .../feruchemy/feruchemical_duralumin.json | 4 +- .../feruchemy/feruchemical_electrum.json | 4 +- .../entries/feruchemy/feruchemical_gold.json | 4 +- .../entries/feruchemy/feruchemical_iron.json | 4 +- .../feruchemy/feruchemical_nicrosil.json | 4 +- .../feruchemy/feruchemical_pewter.json | 4 +- .../entries/feruchemy/feruchemical_steel.json | 4 +- .../entries/feruchemy/feruchemical_tin.json | 4 +- .../entries/feruchemy/feruchemical_zinc.json | 4 +- .../entries/feruchemy/feruchemy_basics.json | 10 +- .../hemalurgy/hemalurgic_aluminum.json | 4 +- .../entries/hemalurgy/hemalurgic_atium.json | 4 +- .../hemalurgy/hemalurgic_bendalloy.json | 4 +- .../entries/hemalurgy/hemalurgic_brass.json | 4 +- .../entries/hemalurgy/hemalurgic_bronze.json | 4 +- .../entries/hemalurgy/hemalurgic_cadmium.json | 4 +- .../hemalurgy/hemalurgic_chromium.json | 6 +- .../entries/hemalurgy/hemalurgic_copper.json | 4 +- .../hemalurgy/hemalurgic_duralumin.json | 6 +- .../hemalurgy/hemalurgic_electrum.json | 4 +- .../entries/hemalurgy/hemalurgic_gold.json | 4 +- .../entries/hemalurgy/hemalurgic_iron.json | 6 +- .../hemalurgy/hemalurgic_lerasatium.json | 4 +- .../hemalurgy/hemalurgic_lerasium.json | 4 +- .../hemalurgy/hemalurgic_nicrosil.json | 4 +- .../entries/hemalurgy/hemalurgic_pewter.json | 4 +- .../entries/hemalurgy/hemalurgic_steel.json | 4 +- .../entries/hemalurgy/hemalurgic_tin.json | 4 +- .../entries/hemalurgy/hemalurgic_zinc.json | 4 +- .../entries/hemalurgy/hemalurgy_basics.json | 12 +- .../recipes/alloying/blend/bendalloy.json | 4 +- .../cosmere/recipes/alloying/blend/brass.json | 4 +- .../recipes/alloying/blend/bronze.json | 4 +- .../recipes/alloying/blend/duralumin.json | 4 +- .../recipes/alloying/blend/electrum.json | 4 +- .../recipes/alloying/blend/nicrosil.json | 4 +- .../recipes/alloying/blend/pewter.json | 4 +- .../cosmere/recipes/alloying/blend/steel.json | 4 +- .../data/cosmere/recipes/aluminum_block.json | 10 +- .../recipes/aluminum_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/aluminum_ingot.json | 10 +- ...inum_ingot_from_blasting_aluminum_ore.json | 6 +- ..._ingot_from_blasting_raw_aluminum_ore.json | 6 +- ...inum_ingot_from_smelting_aluminum_ore.json | 6 +- ..._ingot_from_smelting_raw_aluminum_ore.json | 6 +- .../recipes/aluminum_necklace_metalmind.json | 10 +- .../recipes/aluminum_ring_metalmind.json | 10 +- .../data/cosmere/recipes/aluminum_spike.json | 8 +- .../data/cosmere/recipes/atium_block.json | 10 +- .../recipes/atium_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/atium_ingot.json | 10 +- .../recipes/atium_necklace_metalmind.json | 10 +- .../cosmere/recipes/atium_ring_metalmind.json | 10 +- .../data/cosmere/recipes/atium_spike.json | 8 +- .../data/cosmere/recipes/bendalloy_block.json | 10 +- .../recipes/bendalloy_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/bendalloy_ingot.json | 10 +- ...y_ingot_from_blasting_bendalloy_blend.json | 6 +- ...y_ingot_from_smelting_bendalloy_blend.json | 6 +- .../recipes/bendalloy_necklace_metalmind.json | 10 +- .../recipes/bendalloy_ring_metalmind.json | 10 +- .../data/cosmere/recipes/bendalloy_spike.json | 8 +- .../data/cosmere/recipes/brass_block.json | 10 +- .../recipes/brass_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/brass_ingot.json | 10 +- ...brass_ingot_from_blasting_brass_blend.json | 6 +- ...brass_ingot_from_smelting_brass_blend.json | 6 +- .../recipes/brass_necklace_metalmind.json | 10 +- .../cosmere/recipes/brass_ring_metalmind.json | 10 +- .../data/cosmere/recipes/brass_spike.json | 8 +- .../data/cosmere/recipes/bronze_block.json | 10 +- .../recipes/bronze_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/bronze_ingot.json | 10 +- ...onze_ingot_from_blasting_bronze_blend.json | 6 +- ...onze_ingot_from_smelting_bronze_blend.json | 6 +- .../recipes/bronze_necklace_metalmind.json | 10 +- .../recipes/bronze_ring_metalmind.json | 10 +- .../data/cosmere/recipes/bronze_spike.json | 8 +- .../data/cosmere/recipes/cadmium_block.json | 10 +- .../recipes/cadmium_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/cadmium_ingot.json | 10 +- ...dmium_ingot_from_blasting_cadmium_ore.json | 6 +- ...m_ingot_from_blasting_raw_cadmium_ore.json | 6 +- ...dmium_ingot_from_smelting_cadmium_ore.json | 6 +- ...m_ingot_from_smelting_raw_cadmium_ore.json | 6 +- .../recipes/cadmium_necklace_metalmind.json | 10 +- .../recipes/cadmium_ring_metalmind.json | 10 +- .../data/cosmere/recipes/cadmium_spike.json | 8 +- .../data/cosmere/recipes/chromium_block.json | 10 +- .../recipes/chromium_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/chromium_ingot.json | 10 +- ...mium_ingot_from_blasting_chromium_ore.json | 6 +- ..._ingot_from_blasting_raw_chromium_ore.json | 6 +- ...mium_ingot_from_smelting_chromium_ore.json | 6 +- ..._ingot_from_smelting_raw_chromium_ore.json | 6 +- .../recipes/chromium_necklace_metalmind.json | 10 +- .../recipes/chromium_ring_metalmind.json | 10 +- .../data/cosmere/recipes/chromium_spike.json | 8 +- .../aluminum_block_deconstruct.json | 4 +- .../aluminum_item_deconstruct.json | 4 +- .../conversions/atium_block_deconstruct.json | 4 +- .../conversions/atium_item_deconstruct.json | 4 +- .../bendalloy_block_deconstruct.json | 4 +- .../bendalloy_item_deconstruct.json | 4 +- .../conversions/brass_block_deconstruct.json | 4 +- .../conversions/brass_item_deconstruct.json | 4 +- .../conversions/bronze_block_deconstruct.json | 4 +- .../conversions/bronze_item_deconstruct.json | 4 +- .../cadmium_block_deconstruct.json | 4 +- .../conversions/cadmium_item_deconstruct.json | 4 +- .../chromium_block_deconstruct.json | 4 +- .../chromium_item_deconstruct.json | 4 +- .../conversions/copper_block_deconstruct.json | 4 +- .../conversions/copper_item_deconstruct.json | 4 +- .../duralumin_block_deconstruct.json | 4 +- .../duralumin_item_deconstruct.json | 4 +- .../electrum_block_deconstruct.json | 4 +- .../electrum_item_deconstruct.json | 4 +- .../harmonium_block_deconstruct.json | 4 +- .../harmonium_item_deconstruct.json | 4 +- .../conversions/lead_block_deconstruct.json | 4 +- .../conversions/lead_item_deconstruct.json | 4 +- .../lerasatium_block_deconstruct.json | 4 +- .../lerasatium_item_deconstruct.json | 4 +- .../lerasium_block_deconstruct.json | 4 +- .../lerasium_item_deconstruct.json | 4 +- .../malatium_block_deconstruct.json | 4 +- .../malatium_item_deconstruct.json | 4 +- .../conversions/nickel_block_deconstruct.json | 4 +- .../conversions/nickel_item_deconstruct.json | 4 +- .../nicrosil_block_deconstruct.json | 4 +- .../nicrosil_item_deconstruct.json | 4 +- .../conversions/pewter_block_deconstruct.json | 4 +- .../conversions/pewter_item_deconstruct.json | 4 +- .../conversions/silver_block_deconstruct.json | 4 +- .../conversions/silver_item_deconstruct.json | 4 +- .../conversions/steel_block_deconstruct.json | 4 +- .../conversions/steel_item_deconstruct.json | 4 +- .../conversions/tin_block_deconstruct.json | 4 +- .../conversions/tin_item_deconstruct.json | 4 +- .../conversions/zinc_block_deconstruct.json | 4 +- .../conversions/zinc_item_deconstruct.json | 4 +- .../data/cosmere/recipes/copper_block.json | 10 +- .../recipes/copper_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/copper_ingot.json | 10 +- .../recipes/copper_necklace_metalmind.json | 10 +- .../recipes/copper_ring_metalmind.json | 10 +- .../data/cosmere/recipes/copper_spike.json | 8 +- .../data/cosmere/recipes/duralumin_block.json | 10 +- .../recipes/duralumin_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/duralumin_ingot.json | 10 +- ...n_ingot_from_blasting_duralumin_blend.json | 6 +- ...n_ingot_from_smelting_duralumin_blend.json | 6 +- .../recipes/duralumin_necklace_metalmind.json | 10 +- .../recipes/duralumin_ring_metalmind.json | 10 +- .../data/cosmere/recipes/duralumin_spike.json | 8 +- .../data/cosmere/recipes/electrum_block.json | 10 +- .../recipes/electrum_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/electrum_ingot.json | 10 +- ...um_ingot_from_blasting_electrum_blend.json | 6 +- ...um_ingot_from_smelting_electrum_blend.json | 6 +- .../recipes/electrum_necklace_metalmind.json | 10 +- .../recipes/electrum_ring_metalmind.json | 10 +- .../data/cosmere/recipes/electrum_spike.json | 8 +- .../recipes/gold_bracelet_metalmind.json | 10 +- .../recipes/gold_necklace_metalmind.json | 10 +- .../cosmere/recipes/gold_ring_metalmind.json | 10 +- .../data/cosmere/recipes/gold_spike.json | 8 +- .../guide_from_blasting_iron_spike.json | 6 +- .../guide_from_smelting_iron_spike.json | 6 +- .../data/cosmere/recipes/harmonium_block.json | 10 +- .../data/cosmere/recipes/harmonium_ingot.json | 10 +- .../recipes/iron_bracelet_metalmind.json | 10 +- .../recipes/iron_necklace_metalmind.json | 10 +- .../cosmere/recipes/iron_ring_metalmind.json | 10 +- .../data/cosmere/recipes/iron_spike.json | 8 +- .../data/cosmere/recipes/lead_block.json | 10 +- .../data/cosmere/recipes/lead_ingot.json | 10 +- .../lead_ingot_from_blasting_lead_ore.json | 6 +- ...lead_ingot_from_blasting_raw_lead_ore.json | 6 +- .../lead_ingot_from_smelting_lead_ore.json | 6 +- ...lead_ingot_from_smelting_raw_lead_ore.json | 6 +- .../cosmere/recipes/lerasatium_block.json | 10 +- .../cosmere/recipes/lerasatium_ingot.json | 10 +- .../cosmere/recipes/lerasatium_spike.json | 8 +- .../data/cosmere/recipes/lerasium_block.json | 10 +- .../data/cosmere/recipes/lerasium_ingot.json | 10 +- .../data/cosmere/recipes/lerasium_spike.json | 8 +- .../data/cosmere/recipes/malatium_block.json | 10 +- .../data/cosmere/recipes/malatium_ingot.json | 10 +- .../data/cosmere/recipes/metal_vial.json | 8 +- .../cosmere/recipes/metalworking_table.json | 10 +- .../data/cosmere/recipes/nickel_block.json | 10 +- .../data/cosmere/recipes/nickel_ingot.json | 10 +- ...nickel_ingot_from_blasting_nickel_ore.json | 6 +- ...el_ingot_from_blasting_raw_nickel_ore.json | 6 +- ...nickel_ingot_from_smelting_nickel_ore.json | 6 +- ...el_ingot_from_smelting_raw_nickel_ore.json | 6 +- .../data/cosmere/recipes/nicrosil_block.json | 10 +- .../recipes/nicrosil_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/nicrosil_ingot.json | 10 +- ...il_ingot_from_blasting_nicrosil_blend.json | 6 +- ...il_ingot_from_smelting_nicrosil_blend.json | 6 +- .../recipes/nicrosil_necklace_metalmind.json | 10 +- .../recipes/nicrosil_ring_metalmind.json | 10 +- .../data/cosmere/recipes/nicrosil_spike.json | 8 +- .../data/cosmere/recipes/pewter_block.json | 10 +- .../recipes/pewter_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/pewter_ingot.json | 10 +- ...wter_ingot_from_blasting_pewter_blend.json | 6 +- ...wter_ingot_from_smelting_pewter_blend.json | 6 +- .../recipes/pewter_necklace_metalmind.json | 10 +- .../recipes/pewter_ring_metalmind.json | 10 +- .../data/cosmere/recipes/pewter_spike.json | 8 +- .../data/cosmere/recipes/silver_block.json | 10 +- .../data/cosmere/recipes/silver_ingot.json | 10 +- ...er_ingot_from_blasting_raw_silver_ore.json | 6 +- ...silver_ingot_from_blasting_silver_ore.json | 6 +- ...er_ingot_from_smelting_raw_silver_ore.json | 6 +- ...silver_ingot_from_smelting_silver_ore.json | 6 +- .../data/cosmere/recipes/steel_block.json | 10 +- .../recipes/steel_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/steel_ingot.json | 10 +- ...steel_ingot_from_blasting_steel_blend.json | 6 +- ...steel_ingot_from_smelting_steel_blend.json | 6 +- .../recipes/steel_necklace_metalmind.json | 10 +- .../cosmere/recipes/steel_ring_metalmind.json | 10 +- .../data/cosmere/recipes/steel_spike.json | 8 +- .../data/cosmere/recipes/tin_block.json | 10 +- .../recipes/tin_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/tin_ingot.json | 10 +- .../tin_ingot_from_blasting_raw_tin_ore.json | 6 +- .../tin_ingot_from_blasting_tin_ore.json | 6 +- .../tin_ingot_from_smelting_raw_tin_ore.json | 6 +- .../tin_ingot_from_smelting_tin_ore.json | 6 +- .../recipes/tin_necklace_metalmind.json | 10 +- .../cosmere/recipes/tin_ring_metalmind.json | 10 +- .../data/cosmere/recipes/tin_spike.json | 8 +- .../data/cosmere/recipes/zinc_block.json | 10 +- .../recipes/zinc_bracelet_metalmind.json | 10 +- .../data/cosmere/recipes/zinc_ingot.json | 10 +- ...zinc_ingot_from_blasting_raw_zinc_ore.json | 6 +- .../zinc_ingot_from_blasting_zinc_ore.json | 6 +- ...zinc_ingot_from_smelting_raw_zinc_ore.json | 6 +- .../zinc_ingot_from_smelting_zinc_ore.json | 6 +- .../recipes/zinc_necklace_metalmind.json | 10 +- .../cosmere/recipes/zinc_ring_metalmind.json | 10 +- .../data/cosmere/recipes/zinc_spike.json | 8 +- .../data/cosmere/tags/items/spike.json | 1 - .../data/curios/tags/items/back.json | 1 - .../data/curios/tags/items/body.json | 1 - .../data/curios/tags/items/bracelet.json | 1 - .../data/curios/tags/items/feet.json | 1 - .../data/curios/tags/items/hands.json | 1 - .../data/curios/tags/items/head.json | 1 - .../data/curios/tags/items/legs.json | 1 - .../data/curios/tags/items/linchpin.json | 1 - .../data/curios/tags/items/necklace.json | 1 - .../data/curios/tags/items/ring.json | 1 - .../data/forge/tags/blocks/ores/aluminum.json | 3 +- .../data/forge/tags/blocks/ores/cadmium.json | 3 +- .../data/forge/tags/blocks/ores/chromium.json | 3 +- .../data/forge/tags/blocks/ores/lead.json | 3 +- .../data/forge/tags/blocks/ores/nickel.json | 3 +- .../data/forge/tags/blocks/ores/silver.json | 3 +- .../data/forge/tags/blocks/ores/tin.json | 3 +- .../data/forge/tags/blocks/ores/zinc.json | 3 +- .../forge/tags/blocks/storage_blocks.json | 1 - .../tags/blocks/storage_blocks/aluminum.json | 1 - .../tags/blocks/storage_blocks/atium.json | 1 - .../tags/blocks/storage_blocks/bendalloy.json | 1 - .../tags/blocks/storage_blocks/brass.json | 1 - .../tags/blocks/storage_blocks/bronze.json | 1 - .../tags/blocks/storage_blocks/cadmium.json | 1 - .../tags/blocks/storage_blocks/chromium.json | 1 - .../tags/blocks/storage_blocks/copper.json | 1 - .../tags/blocks/storage_blocks/duralumin.json | 1 - .../tags/blocks/storage_blocks/electrum.json | 1 - .../tags/blocks/storage_blocks/harmonium.json | 1 - .../tags/blocks/storage_blocks/lead.json | 1 - .../blocks/storage_blocks/lerasatium.json | 1 - .../tags/blocks/storage_blocks/lerasium.json | 1 - .../tags/blocks/storage_blocks/malatium.json | 1 - .../tags/blocks/storage_blocks/nickel.json | 1 - .../tags/blocks/storage_blocks/nicrosil.json | 1 - .../tags/blocks/storage_blocks/pewter.json | 1 - .../tags/blocks/storage_blocks/silver.json | 1 - .../tags/blocks/storage_blocks/steel.json | 1 - .../forge/tags/blocks/storage_blocks/tin.json | 1 - .../tags/blocks/storage_blocks/zinc.json | 1 - .../generated/data/forge/tags/items/gems.json | 1 - .../data/forge/tags/items/gems/amethyst.json | 1 - .../data/forge/tags/items/gems/diamond.json | 1 - .../data/forge/tags/items/gems/emerald.json | 1 - .../data/forge/tags/items/gems/garnet.json | 1 - .../data/forge/tags/items/gems/heliodor.json | 1 - .../data/forge/tags/items/gems/ruby.json | 1 - .../data/forge/tags/items/gems/sapphire.json | 1 - .../forge/tags/items/gems/smokestone.json | 1 - .../data/forge/tags/items/gems/topaz.json | 1 - .../data/forge/tags/items/gems/zircon.json | 1 - .../data/forge/tags/items/ingots.json | 1 - .../forge/tags/items/ingots/aluminum.json | 1 - .../data/forge/tags/items/ingots/atium.json | 1 - .../forge/tags/items/ingots/bendalloy.json | 1 - .../data/forge/tags/items/ingots/brass.json | 1 - .../data/forge/tags/items/ingots/bronze.json | 1 - .../data/forge/tags/items/ingots/cadmium.json | 1 - .../forge/tags/items/ingots/chromium.json | 1 - .../data/forge/tags/items/ingots/copper.json | 1 - .../forge/tags/items/ingots/duralumin.json | 1 - .../forge/tags/items/ingots/electrum.json | 1 - .../forge/tags/items/ingots/harmonium.json | 1 - .../data/forge/tags/items/ingots/lead.json | 1 - .../forge/tags/items/ingots/lerasatium.json | 1 - .../forge/tags/items/ingots/lerasium.json | 1 - .../forge/tags/items/ingots/malatium.json | 1 - .../data/forge/tags/items/ingots/nickel.json | 1 - .../forge/tags/items/ingots/nicrosil.json | 1 - .../data/forge/tags/items/ingots/pewter.json | 1 - .../data/forge/tags/items/ingots/silver.json | 1 - .../data/forge/tags/items/ingots/steel.json | 1 - .../data/forge/tags/items/ingots/tin.json | 1 - .../data/forge/tags/items/ingots/zinc.json | 1 - .../data/forge/tags/items/nuggets.json | 1 - .../forge/tags/items/nuggets/aluminum.json | 1 - .../data/forge/tags/items/nuggets/atium.json | 1 - .../forge/tags/items/nuggets/bendalloy.json | 1 - .../data/forge/tags/items/nuggets/brass.json | 1 - .../data/forge/tags/items/nuggets/bronze.json | 1 - .../forge/tags/items/nuggets/cadmium.json | 1 - .../forge/tags/items/nuggets/chromium.json | 1 - .../data/forge/tags/items/nuggets/copper.json | 1 - .../forge/tags/items/nuggets/duralumin.json | 1 - .../forge/tags/items/nuggets/electrum.json | 1 - .../forge/tags/items/nuggets/harmonium.json | 1 - .../data/forge/tags/items/nuggets/lead.json | 1 - .../forge/tags/items/nuggets/lerasatium.json | 1 - .../forge/tags/items/nuggets/lerasium.json | 1 - .../forge/tags/items/nuggets/malatium.json | 1 - .../data/forge/tags/items/nuggets/nickel.json | 1 - .../forge/tags/items/nuggets/nicrosil.json | 1 - .../data/forge/tags/items/nuggets/pewter.json | 1 - .../data/forge/tags/items/nuggets/silver.json | 1 - .../data/forge/tags/items/nuggets/steel.json | 1 - .../data/forge/tags/items/nuggets/tin.json | 1 - .../data/forge/tags/items/nuggets/zinc.json | 1 - .../tags/items/raw_materials/aluminum.json | 1 - .../tags/items/raw_materials/bendalloy.json | 1 - .../forge/tags/items/raw_materials/brass.json | 1 - .../tags/items/raw_materials/bronze.json | 1 - .../tags/items/raw_materials/cadmium.json | 1 - .../tags/items/raw_materials/chromium.json | 1 - .../tags/items/raw_materials/duralumin.json | 1 - .../tags/items/raw_materials/electrum.json | 1 - .../forge/tags/items/raw_materials/lead.json | 1 - .../tags/items/raw_materials/nickel.json | 1 - .../tags/items/raw_materials/nicrosil.json | 1 - .../tags/items/raw_materials/pewter.json | 1 - .../tags/items/raw_materials/silver.json | 1 - .../forge/tags/items/raw_materials/steel.json | 1 - .../forge/tags/items/raw_materials/tin.json | 1 - .../forge/tags/items/raw_materials/zinc.json | 1 - .../data/forge/tags/items/storage_blocks.json | 1 - .../tags/items/storage_blocks/aluminum.json | 1 - .../tags/items/storage_blocks/atium.json | 1 - .../tags/items/storage_blocks/bendalloy.json | 1 - .../tags/items/storage_blocks/brass.json | 1 - .../tags/items/storage_blocks/bronze.json | 1 - .../tags/items/storage_blocks/cadmium.json | 1 - .../tags/items/storage_blocks/chromium.json | 1 - .../tags/items/storage_blocks/copper.json | 1 - .../tags/items/storage_blocks/duralumin.json | 1 - .../tags/items/storage_blocks/electrum.json | 1 - .../tags/items/storage_blocks/harmonium.json | 1 - .../forge/tags/items/storage_blocks/lead.json | 1 - .../tags/items/storage_blocks/lerasatium.json | 1 - .../tags/items/storage_blocks/lerasium.json | 1 - .../tags/items/storage_blocks/malatium.json | 1 - .../tags/items/storage_blocks/nickel.json | 1 - .../tags/items/storage_blocks/nicrosil.json | 1 - .../tags/items/storage_blocks/pewter.json | 1 - .../tags/items/storage_blocks/silver.json | 1 - .../tags/items/storage_blocks/steel.json | 1 - .../forge/tags/items/storage_blocks/tin.json | 1 - .../forge/tags/items/storage_blocks/zinc.json | 1 - .../tags/blocks/beacon_base_blocks.json | 1 - .../minecraft/tags/blocks/dragon_immune.json | 1 - .../minecraft/tags/blocks/mineable/axe.json | 1 - .../tags/blocks/mineable/pickaxe.json | 17 +- .../tags/blocks/needs_iron_tool.json | 17 +- .../tags/blocks/needs_stone_tool.json | 1 - .../minecraft/tags/blocks/wither_immune.json | 1 - 755 files changed, 5617 insertions(+), 5274 deletions(-) create mode 100644 src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b create mode 100644 src/main/generated/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 create mode 100644 src/main/generated/.cache/3b2a435655541c92d690318b57013336949ed348 create mode 100644 src/main/generated/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 create mode 100644 src/main/generated/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 create mode 100644 src/main/generated/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 create mode 100644 src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b create mode 100644 src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e create mode 100644 src/main/generated/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 create mode 100644 src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 delete mode 100644 src/main/generated/.cache/cache rename src/main/generated/assets/cosmere/blockstates/{aluminum_ore_deepslate.json => deepslate_aluminum_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{cadmium_ore_deepslate.json => deepslate_cadmium_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{chromium_ore_deepslate.json => deepslate_chromium_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{lead_ore_deepslate.json => deepslate_lead_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{nickel_ore_deepslate.json => deepslate_nickel_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{silver_ore_deepslate.json => deepslate_silver_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{tin_ore_deepslate.json => deepslate_tin_ore.json} (100%) rename src/main/generated/assets/cosmere/blockstates/{zinc_ore_deepslate.json => deepslate_zinc_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{aluminum_ore_deepslate.json => deepslate_aluminum_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{cadmium_ore_deepslate.json => deepslate_cadmium_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{chromium_ore_deepslate.json => deepslate_chromium_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{lead_ore_deepslate.json => deepslate_lead_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{nickel_ore_deepslate.json => deepslate_nickel_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{silver_ore_deepslate.json => deepslate_silver_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{tin_ore_deepslate.json => deepslate_tin_ore.json} (100%) rename src/main/generated/assets/cosmere/models/item/{zinc_ore_deepslate.json => deepslate_zinc_ore.json} (100%) create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/aluminum_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/cadmium_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/chromium_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/lead_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/nickel_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/silver_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/tin_ore.json create mode 100644 src/main/generated/data/cosmere/forge/biome_modifier/zinc_ore.json rename src/main/generated/data/cosmere/loot_tables/blocks/{aluminum_ore_deepslate.json => deepslate_aluminum_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{cadmium_ore_deepslate.json => deepslate_cadmium_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{chromium_ore_deepslate.json => deepslate_chromium_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{lead_ore_deepslate.json => deepslate_lead_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{nickel_ore_deepslate.json => deepslate_nickel_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{silver_ore_deepslate.json => deepslate_silver_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{tin_ore_deepslate.json => deepslate_tin_ore.json} (85%) rename src/main/generated/data/cosmere/loot_tables/blocks/{zinc_ore_deepslate.json => deepslate_zinc_ore.json} (85%) diff --git a/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b b/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b new file mode 100644 index 000000000..5352ce502 --- /dev/null +++ b/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b @@ -0,0 +1,108 @@ +// 1.19 2022-07-03T12:15:14.4383208 Tags for minecraft:item +aab782eb150f809e3d7c178d04d9f070fee6cafe data/cosmere/tags/items/spike.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/back.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/body.json +4556ff95cda0e7cb796a552a1e45e85e2911f2b4 data/curios/tags/items/bracelet.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/feet.json +4556ff95cda0e7cb796a552a1e45e85e2911f2b4 data/curios/tags/items/hands.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/head.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/legs.json +aab782eb150f809e3d7c178d04d9f070fee6cafe data/curios/tags/items/linchpin.json +f5ba904d5d0b618a250d4adcf353cac405d392db data/curios/tags/items/necklace.json +7ab8d01c7b677826d5dbe53534351803e62665e4 data/curios/tags/items/ring.json +99883d717de9dffc16e88bd87bcd96d5bc8ee263 data/forge/tags/items/gems.json +b38d2fd34d206f355df2daa176384caec3aa0f25 data/forge/tags/items/gems/amethyst.json +e3a189bb89ff0f41170f99e13dcfc1f875b69818 data/forge/tags/items/gems/diamond.json +53666ce8b6af485bb04de58ad6be7b06b93872fd data/forge/tags/items/gems/emerald.json +7bbbc874d0865540973dc72de2f930a8909b3d2f data/forge/tags/items/gems/garnet.json +edcda776638329ba7bdf0e97020cd9189eae85fa data/forge/tags/items/gems/heliodor.json +2b9e28ff639f166592740049dbc0064ffc11381f data/forge/tags/items/gems/ruby.json +18c5e27346552025f7e73d871e835bed619799d8 data/forge/tags/items/gems/sapphire.json +81b199d49e97a24dec35c552a259e5c42a48dcf5 data/forge/tags/items/gems/smokestone.json +d39a9e48193069c3dadb567c2806690ae9dcb996 data/forge/tags/items/gems/topaz.json +f246f2070562b9c25d8ebcac54a716e61fce2100 data/forge/tags/items/gems/zircon.json +95e5fd8541b98e00f97cf412ec8e30c3525f0ce9 data/forge/tags/items/ingots.json +45b26fa18eddb33ca9cb55959717696bbf61f818 data/forge/tags/items/ingots/aluminum.json +a722ca59d260a3b0affcd7aff582c8d562bb6962 data/forge/tags/items/ingots/atium.json +59cebf4da98b0a57a01d91e3180cee289595f0e0 data/forge/tags/items/ingots/bendalloy.json +642b76bb5132de5f9b91db6f91837b07ef208179 data/forge/tags/items/ingots/brass.json +5e69bdc82871946f266ec4f246ea11337cd053b3 data/forge/tags/items/ingots/bronze.json +c162b7f94f6ea2fc1a880e6c493424d1245ed683 data/forge/tags/items/ingots/cadmium.json +0ba50a99c9244dfd4ef980a4ba60a07438625846 data/forge/tags/items/ingots/chromium.json +4fc40de2f71167f6511fbe5d285a2feca298a76b data/forge/tags/items/ingots/copper.json +071137605127d406546f7980f4b7796d83774313 data/forge/tags/items/ingots/duralumin.json +cb3df3e788ecfdbc6114f2ab380972c995b803ba data/forge/tags/items/ingots/electrum.json +a117d096b41c112406043a446078d0916d7da6b3 data/forge/tags/items/ingots/harmonium.json +9f308a31c8a98e1f40c5c9d4cdc8ea54742c5918 data/forge/tags/items/ingots/lead.json +b7222fa2fab8500695b2389a0c06a5253fcc34c0 data/forge/tags/items/ingots/lerasatium.json +4054c61b1e5663de6cc3cd5ba2a0bb12580e50ab data/forge/tags/items/ingots/lerasium.json +ae1ece7391a72db7dd03c1841c4d3bfde0f2a5a2 data/forge/tags/items/ingots/malatium.json +94a826ba5cc20e098799fdd54db705412d9a7e71 data/forge/tags/items/ingots/nickel.json +232d4c297f863d3405953b85c62787820ae59b75 data/forge/tags/items/ingots/nicrosil.json +d305c90930e0b511d0970213ec3c9f7eee1f7ac3 data/forge/tags/items/ingots/pewter.json +fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.json +a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json +fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json +f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json +1da1861bec680874d8eb6f8df7ffbc05e62c586d data/forge/tags/items/nuggets.json +a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json +55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json +ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json +22febcc73d25eb9144c40bcea5a7d897117eef9e data/forge/tags/items/nuggets/brass.json +e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.json +3e1a1d7780a6cd1178e33fb2fbb7c4e74b4eb8ca data/forge/tags/items/nuggets/cadmium.json +79d854ac8d362b6ae31987744feca55d48361011 data/forge/tags/items/nuggets/chromium.json +56b70b9f34d9048ca4097c2e77debc2e7ad28c6b data/forge/tags/items/nuggets/copper.json +88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json +dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json +ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json +6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json +28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json +8208cc064a68c06d411c6a9bea026d2d78c38368 data/forge/tags/items/nuggets/lerasium.json +53af8c89a4a8e6fb7e90668c967801dee236d614 data/forge/tags/items/nuggets/malatium.json +ce8ca3009391a6012a898a5622718c1c49c33d87 data/forge/tags/items/nuggets/nickel.json +ee2235eeec793fc18a173cfab9939ba12b2beee3 data/forge/tags/items/nuggets/nicrosil.json +d68145cb4757711bffba7b8c91c0f5ac8bd960e7 data/forge/tags/items/nuggets/pewter.json +af060feb22312dcda38b7cbecdb1962fd9247915 data/forge/tags/items/nuggets/silver.json +c15094d7e3e570f2c91c1fd7855cfd222ef93948 data/forge/tags/items/nuggets/steel.json +843ececd48dc1bf5c52997149322ee3b609aca3d data/forge/tags/items/nuggets/tin.json +f06272c81e8690c36cb430a8b75f5b4a54387b39 data/forge/tags/items/nuggets/zinc.json +991fd88a2fe6baeffa933f082e7fd3c83086880d data/forge/tags/items/raw_materials/aluminum.json +73d96673b057d3867d78254525fe373c35a7a7eb data/forge/tags/items/raw_materials/bendalloy.json +e2db9a135aa2f8e061284a8f09a8f894e2e2737e data/forge/tags/items/raw_materials/brass.json +45f8b35029dba0a85ea6f78a9f4aa47a89c67dc2 data/forge/tags/items/raw_materials/bronze.json +0aa82c966fc67192843375762d78f91a1a9ffe6b data/forge/tags/items/raw_materials/cadmium.json +f8b2c9765f0ec6a7b0f861487f22e07e069fcc59 data/forge/tags/items/raw_materials/chromium.json +9b84efd4c1d37cb6bdab3be671739b350b6b3c57 data/forge/tags/items/raw_materials/duralumin.json +d3c6aea87270e6a14a81d073165dc4e68acc9368 data/forge/tags/items/raw_materials/electrum.json +8c4a84dca50dd53100cfb3c85c4e206fe875d86a data/forge/tags/items/raw_materials/lead.json +a8ecda7d56fa1b838d47ed4d0c0423b85e8e81ce data/forge/tags/items/raw_materials/nickel.json +6b3f41494cbfbe11ad847477d7b719f25b767d99 data/forge/tags/items/raw_materials/nicrosil.json +37fd2d6f6d310b25099a5e905249c0d008e4fbf4 data/forge/tags/items/raw_materials/pewter.json +8f973b03988ae06d72f224704e6c69c28b68861e data/forge/tags/items/raw_materials/silver.json +f225195803f1415a4b6ba68ff770bb67fa1e53d0 data/forge/tags/items/raw_materials/steel.json +5399d4dc7d03dadbc0ff52718d2d1a53fcb27d0a data/forge/tags/items/raw_materials/tin.json +ed48136c06f3a6a200f954e99ccef4dcece821b0 data/forge/tags/items/raw_materials/zinc.json +1b31fd34bbe16f0c93d028e70bf4fe399d7619ef data/forge/tags/items/storage_blocks.json +9079d45393bba22e2b2061d1f6eb588c46ee7346 data/forge/tags/items/storage_blocks/aluminum.json +8fe1f17a4eb16ada9285bedf30fb598edf113e5f data/forge/tags/items/storage_blocks/atium.json +1eccb19f0c1fe5f19a6bdeaa14037aa8e7eeb959 data/forge/tags/items/storage_blocks/bendalloy.json +8279f41e3a3a239b29294a45ca32abc13cce2f7e data/forge/tags/items/storage_blocks/brass.json +cb95af58ea489974ff1d66f2786c5ddfda52c789 data/forge/tags/items/storage_blocks/bronze.json +3d56499024b4a14434474e46d8f2b69192d46ee2 data/forge/tags/items/storage_blocks/cadmium.json +255ac6518c4487670978a4328e9863a36fee50d6 data/forge/tags/items/storage_blocks/chromium.json +224bfdd99d8cf23d363de895c7ff1a97583bb023 data/forge/tags/items/storage_blocks/copper.json +b41a04c1f7f5a9ee2c8de45c3ebdc092c1b5b274 data/forge/tags/items/storage_blocks/duralumin.json +48a29eed7bc75b67c2c7545457c0e00f47268c5d data/forge/tags/items/storage_blocks/electrum.json +90317483f1fa9a4fcb4e76bef622ea503b7f44f8 data/forge/tags/items/storage_blocks/harmonium.json +2aed30257eb22830f5a0aefcb3662b0b4a4c5ebb data/forge/tags/items/storage_blocks/lead.json +9cb594fa53db1efedb5667a4961aee563bb5a46f data/forge/tags/items/storage_blocks/lerasatium.json +3a1b70a51ca5c553f6c8f400ba7c29839ed61ecc data/forge/tags/items/storage_blocks/lerasium.json +9c6de276765b8ec142b3aca7a9a1c3b2908fc9d7 data/forge/tags/items/storage_blocks/malatium.json +67109e1607e11719e61e6628191be6c351be9063 data/forge/tags/items/storage_blocks/nickel.json +265083103b6181f907ea4d603f4591ba21eac931 data/forge/tags/items/storage_blocks/nicrosil.json +219a5c7253f56e016e2ad32a7b9cbe5618741097 data/forge/tags/items/storage_blocks/pewter.json +9415a49c5035ec584af817162314db15bc16530c data/forge/tags/items/storage_blocks/silver.json +111cd9089f8b7afe88830102207124d8648b7039 data/forge/tags/items/storage_blocks/steel.json +ba66a11a92fb155d8de179f3a24e01ea3a763255 data/forge/tags/items/storage_blocks/tin.json +15f37fc42e91a2576f74d58e17e68ec24def1505 data/forge/tags/items/storage_blocks/zinc.json diff --git a/src/main/generated/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 b/src/main/generated/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 new file mode 100644 index 000000000..d4544d922 --- /dev/null +++ b/src/main/generated/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 @@ -0,0 +1,38 @@ +// 1.19 2022-07-03T12:15:14.4383208 Cosmere Advancements +23e4f2791f02f0ef0abfc4cd78268ac444d24493 data/cosmere/advancements/allomancy/aluminum.json +7a4e1120fa08f027a943f55d89323da349e7c410 data/cosmere/advancements/allomancy/atium.json +c733b5a4cda4e49097d0f4d1d663700a6686c443 data/cosmere/advancements/allomancy/bendalloy.json +f0e31b778261190fe62b46814fd96d24f75bdd5b data/cosmere/advancements/allomancy/brass.json +69b800eeebbaec7fcf3d2f022320e2faa1794860 data/cosmere/advancements/allomancy/bronze.json +19e88434a184a3293e927152a9c9421e79324b35 data/cosmere/advancements/allomancy/cadmium.json +15457e70bce0babf5ba6c980128d080669f24804 data/cosmere/advancements/allomancy/chromium.json +1c9327fb2b88edf8f3b1504443a5a9b3354156a0 data/cosmere/advancements/allomancy/copper.json +9037bc187de5da498528b1c40cd9169ea667a7bf data/cosmere/advancements/allomancy/duralumin.json +1ee4a53a8a37c7dc55040cb65cce0f644da468b6 data/cosmere/advancements/allomancy/electrum.json +e15a7d0daa58b3fb29e11f368b47553ec0ae8386 data/cosmere/advancements/allomancy/gold.json +3e3ac8ef5d5b8c39af9337ca8902ffed3b2e5d9c data/cosmere/advancements/allomancy/iron.json +24ed3eadcb3b07ad7d73fc42f296008b35591894 data/cosmere/advancements/allomancy/nicrosil.json +5c7bbf9ef6fea0544b59f305c685276b306a0ffa data/cosmere/advancements/allomancy/pewter.json +206b8559c482391dbfebc0412ad5606dbd4b9e19 data/cosmere/advancements/allomancy/root.json +3cb5e31d478b39c2f93adea2bf1fe548b9d1f15b data/cosmere/advancements/allomancy/steel.json +ac3dca821435d3a44b4efb48012c91d0ecd69621 data/cosmere/advancements/allomancy/tin.json +bb3589b3a0ad5db3705f7195301e3094d7e91604 data/cosmere/advancements/allomancy/zinc.json +779e428cd06b9b92b6379981474c8144e43e2861 data/cosmere/advancements/feruchemy/aluminum.json +1f469b9c9de70e383b992ab42ca258ce544ce0e8 data/cosmere/advancements/feruchemy/atium.json +49c68004e928a182abc98242f44cf6ef73e57d1b data/cosmere/advancements/feruchemy/bendalloy.json +919cd9b9515075c48ecbec7d2f7d995a9372d446 data/cosmere/advancements/feruchemy/brass.json +21e81dd791066b7bcad75ff1c1d9100d637fe3c2 data/cosmere/advancements/feruchemy/bronze.json +1086c91cc60708c0ba1abc142dc8040273074aa3 data/cosmere/advancements/feruchemy/cadmium.json +184a032234dac34b6e6d764464ff92f1e14a0c10 data/cosmere/advancements/feruchemy/chromium.json +0d023e7b96241f6ae49a5384346b8c9c35f8226e data/cosmere/advancements/feruchemy/copper.json +6cc2aa1114433000b9210508be6e1ece6e27abb1 data/cosmere/advancements/feruchemy/duralumin.json +ec7951978b43c3f849a9bf8ecb04c4c3930c72c7 data/cosmere/advancements/feruchemy/electrum.json +174b14ad5762820ca2088cbc9281d573a94c7d2c data/cosmere/advancements/feruchemy/gold.json +a38725e09c1df9561b6351aca863023905944559 data/cosmere/advancements/feruchemy/iron.json +222f6fc4bdd2ccd6c61beafc2d557e3186d9660b data/cosmere/advancements/feruchemy/nicrosil.json +fd8e6030a9a5a1443e20b054fff13379e24b53b5 data/cosmere/advancements/feruchemy/pewter.json +3033e779b75b0ef76798f931ae7e4293bc366d3b data/cosmere/advancements/feruchemy/root.json +8233606f9409d6477dd60feb949ce904132eca7f data/cosmere/advancements/feruchemy/steel.json +432f79a52c6a9a905a7f6927dae3ace8e11cb262 data/cosmere/advancements/feruchemy/tin.json +50f08252479c114b171940e4e38a2d1df6307d4a data/cosmere/advancements/feruchemy/zinc.json +34e9b07e2d255ab7c23addbb703ed590a7fe36e8 data/cosmere/advancements/hemalurgy/root.json diff --git a/src/main/generated/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/main/generated/.cache/3b2a435655541c92d690318b57013336949ed348 new file mode 100644 index 000000000..7061b3242 --- /dev/null +++ b/src/main/generated/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -0,0 +1,60 @@ +// 1.19 2022-07-03T12:15:14.4303135 PatchouliGeneration +9a35dabf30aea20c86f3776639599f4c047a8992 data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +87594d3a8c110a9f8fd62a62ffe9a29de3905552 data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json +0f612f5a82ba732092c637d6379cf843feae12b4 data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json +af71e5112664830c910905b5458ed9c5cb8a81d2 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +4885d8a56ab5a6af330a23111608a3b352011238 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +84e6d01daf02425642fa966bf0ce24062425c57f data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +b9e068446b6238d4f57f1a9c6394f6eb5f4a6935 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +c26ccd71daa135b613272242f50ebf25405ac369 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +653b3ce161e9eead1e9059466c206fd7951fa31b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +7966fa7f82839994c69923f4d5c58bdda59dde41 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +6fbfd862f6097fb53f3c7812d5f014d1c834b42c data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +affbd1c48d65622941561ca0a5019434443132cf data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +45f351d50b6a8cf30ef32157ec0a38b5b9edb641 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +35d935804983fdc9fc2a23085517f1361d857309 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +0463c35a22e07b7e4768cdc19de6f395669751fc data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +b349b9c152c350edfec069aad2d48bc9456ffc86 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +5aea6af1df822ca82cc607ec4d38cd8fbc701e50 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +b7350e3af868a362ec2f3ad9eaddb134d3710899 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +93807ea72970c777b2c1eefe170add3dcded38a9 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +cce2cd177c4f8fc8d2343a836c974dfa6f93e8f7 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +960f2fa74a413650af0782545930762a535a87e6 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +33b94f6f98d0a6cc714f029dd7fa9e14cf98a4ba data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +89c059823316ca6339748239acc456b3849e06ab data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json +728521f27406b77ad391065b0209d066ce16959e data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json +02bbd0fecba12fea4ba4c38f8c12cec127ed2991 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json +2ed48d8f3188734b90dda4ec39f6d5297d53f9a7 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json +0d7c370617f107678e64eec7beed4cc5dab3bc6f data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +c7edae083b0dcd98343606fbcf8053db01e4c270 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json +6696fb8a406a9a4c0f44e8d9e208061006af4f51 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json +a8a5db5ac6eb4a589a0042c2f88d6d3d82bbed36 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json +62a6b4fbcaecd3516088ff7df973577938925afc data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json +1284c10acc2bf83155931cf61fb34656db598c13 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json +a7b2041c3edaf76303503cae8bb59bd5c89512ac data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json +f8c4bdcea47fd348ca4b358e01f5638c1a5a7a27 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json +9d86278bac624ab248acdd376bc428d0f8556e3c data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json +f269e4cb055a4dc66ebaf69f43cc54f7a410a31b data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json +b4fe4274f425036d1fcdfb5f5e96cc146af9ea26 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json +8addefa9f5c680f10cda964934fb167fdc8fb181 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json +c24c127851ffaea6ac870c683f68c1c591763ecf data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +30ee44c7d4ba54545334c200f743aa5c19df76f9 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json +4e0d02b5207934d44ed34220470f2233014d99eb data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json +07deee9476ebc37bd056a7784382e6a8d90e9ba2 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json +c639565da05edab7473f506466c739d76b4716ac data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json +fcaf53a6f227b7d3d8bbb671c615b679baabcc67 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json +3b0184690d1f6dcc6fbe0cf92f3d9496bee822a1 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json +27df0692da760bd3616ad1f7135b80e188c90a1c data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json +982dd3b1781b307c31f3011c03e374e3d5e18a1d data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +61bc46087ba13231c49ac2a0584c3d7f6b9c5cce data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json +6b1fdf6eedbb9e71e067ba143e5f2e7d49fbbb20 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json +40a8c465e143e78cfa89982c3b1047ba2c4efcf7 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +466e3976b56a6481e98f7313ac102e4fb27dcc6a data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +05cd256d2b43fc78b4159e0599f8248a1966c024 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json +d5d9f0635cb70dc174b7900394f08416701d126a data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json +31a9710acd4a5c0dee2607823064471d60ceef52 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json +12ce56d6e666df9b1685feef69bbe4aa085f656c data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json +8e9bf7d28858d848b47eec74dfe13b13ba6810e4 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json +399498ae7a5635ee80e9e4ab08b79466c1236efb data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json +40bcaaecd55c285f5fac1f3cd969eb2426c88232 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json +94d96a00cbdb0f7c94995604e7f571a964d95fc8 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json diff --git a/src/main/generated/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 b/src/main/generated/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 new file mode 100644 index 000000000..6274de49f --- /dev/null +++ b/src/main/generated/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 @@ -0,0 +1,86 @@ +// 1.19 2022-07-03T17:21:10.2464171 Block States: cosmere +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/aluminum_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/aluminum_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/atium_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/bendalloy_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/brass_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/bronze_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/cadmium_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/cadmium_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/chromium_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/chromium_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/copper_block.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_aluminum_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_cadmium_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_chromium_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_lead_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_nickel_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_silver_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_tin_ore.json +022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_zinc_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/duralumin_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/electrum_block.json +86fc2654cf385d7dbe43add0d4ac1d761ce0e6da assets/cosmere/blockstates/gem_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/harmonium_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lead_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/lead_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lerasatium_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lerasium_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/malatium_block.json +eddacfb44c07e162b13925bdc0306bda846f23e6 assets/cosmere/blockstates/metalworking_table.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/nickel_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/nickel_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/nicrosil_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/pewter_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/silver_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/silver_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/steel_block.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/tin_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/tin_ore.json +83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/zinc_block.json +9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/zinc_ore.json +a40868120613e3432c20ed1eda93f7b226cb7639 assets/cosmere/models/block/gem_block.json +e5882538f177993390dd6954b4d7053ba34e3f3b assets/cosmere/models/block/metalworking_table.json +85cc5fc92400eba60ec69a2405ec3fb3f1b6aeb3 assets/cosmere/models/block/metal_block.json +4b866743258b40303fc73d932a19f4a8695e4cf2 assets/cosmere/models/block/ore_block.json +c6dec7ce45a06ab80228f4a67740966d8c2de4bf assets/cosmere/models/block/ore_block_deepslate.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/aluminum_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/aluminum_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/atium_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/bendalloy_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/brass_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/bronze_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/cadmium_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/cadmium_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/chromium_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/chromium_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/copper_block.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_aluminum_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_cadmium_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_chromium_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_lead_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_nickel_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_silver_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_tin_ore.json +a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_zinc_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/duralumin_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/electrum_block.json +de373102d2bc0a220fb8423fb6d3670e273359c0 assets/cosmere/models/item/gem_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/harmonium_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lead_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/lead_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lerasatium_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lerasium_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/malatium_block.json +0b4d4afa5bb6f8721e3f59ac8ffecf7fa88e03c7 assets/cosmere/models/item/metalworking_table.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/nickel_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/nickel_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/nicrosil_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/pewter_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/silver_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/silver_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/steel_block.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/tin_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/tin_ore.json +c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/zinc_block.json +bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/zinc_ore.json diff --git a/src/main/generated/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/main/generated/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 new file mode 100644 index 000000000..b6ee98a32 --- /dev/null +++ b/src/main/generated/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 @@ -0,0 +1,41 @@ +// 1.19 2022-07-03T17:21:10.2404131 LootTables +6ed7835d6cb5a97885f41da18457f55920a7ac6d data/cosmere/loot_tables/blocks/aluminum_block.json +6ee2360d2be71b724e8dde61f1beb1d4b24bdb49 data/cosmere/loot_tables/blocks/aluminum_ore.json +cb50963ebeb96e8e20c0319e0a16c609a2c65cf0 data/cosmere/loot_tables/blocks/atium_block.json +4054c2fc637fc91259e966b229a5b2983d553063 data/cosmere/loot_tables/blocks/bendalloy_block.json +e7582d26c1dd571e9093d95fea597abbef09c0d9 data/cosmere/loot_tables/blocks/brass_block.json +e9e350de1dbb699d00b1c133c794799abb08ca72 data/cosmere/loot_tables/blocks/bronze_block.json +954889497519c25882f0178f2abcaaaaa309b9a4 data/cosmere/loot_tables/blocks/cadmium_block.json +f9a336b6e1aadbd416bf423815abf26acfbbabbc data/cosmere/loot_tables/blocks/cadmium_ore.json +44874b08630d181c6e49277d6416f992a3a1ae52 data/cosmere/loot_tables/blocks/chromium_block.json +99959269989d6c8e0fdb637afc2e4cfe4a2c3739 data/cosmere/loot_tables/blocks/chromium_ore.json +f88bffb110d17f4c96532f1532b99e1694b295b0 data/cosmere/loot_tables/blocks/copper_block.json +50ca8646cb8abf2ebfebb54537a9b166e03cb422 data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json +beb0a747a966c0b18799d45c8914453b2146d6c6 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json +34fe697f3c98e34abab9add3ff8a580bbbf57eb0 data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json +9eafb6adb4f32336d0c758c55b61e8018f71087a data/cosmere/loot_tables/blocks/deepslate_lead_ore.json +40d2595776cf0a4d0744921c59cb914d24d2173e data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json +44c53207f9e55e2bb32f8ca74bf9ffd57efdb232 data/cosmere/loot_tables/blocks/deepslate_silver_ore.json +027a16015808f1841f91d8b388d1674eb19d7475 data/cosmere/loot_tables/blocks/deepslate_tin_ore.json +2d00c0a16b9a43d57a5b6fd12ddfa9f96a7e78d9 data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json +dac9bdfe573960ce3cf6aaa62d89b5f8326f1347 data/cosmere/loot_tables/blocks/duralumin_block.json +647d918ce74aa13835f8f2961c12b66ceaa92180 data/cosmere/loot_tables/blocks/electrum_block.json +3fd006ac7ab088a50d85d29586b774779e2ce820 data/cosmere/loot_tables/blocks/gem_block.json +f3323f56a202b8d327b20c8350a04e4969230e78 data/cosmere/loot_tables/blocks/harmonium_block.json +df05fae07ae240a6e86fe7624094fe6c3f6cbaa8 data/cosmere/loot_tables/blocks/lead_block.json +0bd6b310416b21bea5bacbd945a4b1d3d809a7cd data/cosmere/loot_tables/blocks/lead_ore.json +59509ea6208e832d1087c6922b0d8e8b33bb08c2 data/cosmere/loot_tables/blocks/lerasatium_block.json +5bfb65d5b4b4583d60e8defaf9054407ad698c42 data/cosmere/loot_tables/blocks/lerasium_block.json +56a00423094bd35c225a8b00c0d8bdf0adb0624a data/cosmere/loot_tables/blocks/malatium_block.json +5526e4e12c815425eeb8aee44b4eb770ea3b76ab data/cosmere/loot_tables/blocks/metalworking_table.json +06edad7edab3def833dd611592c489301394f8b6 data/cosmere/loot_tables/blocks/nickel_block.json +d9aa91c9dcc9f2ca89b25b6b592c16cf6acfac28 data/cosmere/loot_tables/blocks/nickel_ore.json +fa42bed3e699b0edea9d9bfd99c1532726cfb50a data/cosmere/loot_tables/blocks/nicrosil_block.json +2bb663fda80fcd7a79897b667f7d7c6efc6ce634 data/cosmere/loot_tables/blocks/pewter_block.json +f222c1007fca6002208018d44b1f9de000335737 data/cosmere/loot_tables/blocks/silver_block.json +4c5ebdd2323b848ea8a2d4793543029415046b17 data/cosmere/loot_tables/blocks/silver_ore.json +004fa95449272f386bb498f90b1a6bb79aba49e8 data/cosmere/loot_tables/blocks/steel_block.json +dcfa62c715ce077c483d3397f47724b1baff05ce data/cosmere/loot_tables/blocks/tin_block.json +e629c9c078fb768f35d277c011c7a9d75ce99dad data/cosmere/loot_tables/blocks/tin_ore.json +e2f76636bb7f2bc5432d423637a9115151159178 data/cosmere/loot_tables/blocks/zinc_block.json +8647862ef47d72f2361bf5159ca8ababb3eff002 data/cosmere/loot_tables/blocks/zinc_ore.json diff --git a/src/main/generated/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 b/src/main/generated/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 new file mode 100644 index 000000000..2d7be70a5 --- /dev/null +++ b/src/main/generated/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 @@ -0,0 +1,39 @@ +// 1.19 2022-07-03T17:21:10.2444157 Tags for minecraft:block +2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json +8a55b8e8e7325d8a829173ccfc5afe9c8962ffcc data/forge/tags/blocks/ores/cadmium.json +9404f97aea7bc2f029fab25dda2ef4f9d750d890 data/forge/tags/blocks/ores/chromium.json +89a75d3616397422cc68cbfc3d30714afed546ec data/forge/tags/blocks/ores/lead.json +7ec4d04de09d3b30dd11f0471c61de58a7d4f0d5 data/forge/tags/blocks/ores/nickel.json +bf15df3859cfb24abdf9c50475ea436bb9527b90 data/forge/tags/blocks/ores/silver.json +f6158edb21c3a84db0cab4708e1f0b053b84611c data/forge/tags/blocks/ores/tin.json +a27c0172d736de07c8d51c7c2a4908565de80834 data/forge/tags/blocks/ores/zinc.json +954039afc6b707ffc69aee5d5fc29568420ed56a data/forge/tags/blocks/storage_blocks.json +9079d45393bba22e2b2061d1f6eb588c46ee7346 data/forge/tags/blocks/storage_blocks/aluminum.json +8fe1f17a4eb16ada9285bedf30fb598edf113e5f data/forge/tags/blocks/storage_blocks/atium.json +1eccb19f0c1fe5f19a6bdeaa14037aa8e7eeb959 data/forge/tags/blocks/storage_blocks/bendalloy.json +8279f41e3a3a239b29294a45ca32abc13cce2f7e data/forge/tags/blocks/storage_blocks/brass.json +cb95af58ea489974ff1d66f2786c5ddfda52c789 data/forge/tags/blocks/storage_blocks/bronze.json +3d56499024b4a14434474e46d8f2b69192d46ee2 data/forge/tags/blocks/storage_blocks/cadmium.json +255ac6518c4487670978a4328e9863a36fee50d6 data/forge/tags/blocks/storage_blocks/chromium.json +224bfdd99d8cf23d363de895c7ff1a97583bb023 data/forge/tags/blocks/storage_blocks/copper.json +b41a04c1f7f5a9ee2c8de45c3ebdc092c1b5b274 data/forge/tags/blocks/storage_blocks/duralumin.json +48a29eed7bc75b67c2c7545457c0e00f47268c5d data/forge/tags/blocks/storage_blocks/electrum.json +90317483f1fa9a4fcb4e76bef622ea503b7f44f8 data/forge/tags/blocks/storage_blocks/harmonium.json +2aed30257eb22830f5a0aefcb3662b0b4a4c5ebb data/forge/tags/blocks/storage_blocks/lead.json +9cb594fa53db1efedb5667a4961aee563bb5a46f data/forge/tags/blocks/storage_blocks/lerasatium.json +3a1b70a51ca5c553f6c8f400ba7c29839ed61ecc data/forge/tags/blocks/storage_blocks/lerasium.json +9c6de276765b8ec142b3aca7a9a1c3b2908fc9d7 data/forge/tags/blocks/storage_blocks/malatium.json +67109e1607e11719e61e6628191be6c351be9063 data/forge/tags/blocks/storage_blocks/nickel.json +265083103b6181f907ea4d603f4591ba21eac931 data/forge/tags/blocks/storage_blocks/nicrosil.json +219a5c7253f56e016e2ad32a7b9cbe5618741097 data/forge/tags/blocks/storage_blocks/pewter.json +9415a49c5035ec584af817162314db15bc16530c data/forge/tags/blocks/storage_blocks/silver.json +111cd9089f8b7afe88830102207124d8648b7039 data/forge/tags/blocks/storage_blocks/steel.json +ba66a11a92fb155d8de179f3a24e01ea3a763255 data/forge/tags/blocks/storage_blocks/tin.json +15f37fc42e91a2576f74d58e17e68ec24def1505 data/forge/tags/blocks/storage_blocks/zinc.json +60875ccde35fc61f697d94c433135042738c2f63 data/minecraft/tags/blocks/beacon_base_blocks.json +6ce960a7447a78f82bbe73033d725a8a08dfe99b data/minecraft/tags/blocks/dragon_immune.json +d3a86f2ebc65cb1002d7b7bf25b64d7716ca748c data/minecraft/tags/blocks/mineable/axe.json +b1a303c42d404ef8fcce687b447a375205c62729 data/minecraft/tags/blocks/mineable/pickaxe.json +856989bd55316d86fc143d02386ba36eaa744d26 data/minecraft/tags/blocks/needs_iron_tool.json +a392c38fde2e886f438ad7289b3cdec3ad7875f6 data/minecraft/tags/blocks/needs_stone_tool.json +6ce960a7447a78f82bbe73033d725a8a08dfe99b data/minecraft/tags/blocks/wither_immune.json diff --git a/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b new file mode 100644 index 000000000..1c911f306 --- /dev/null +++ b/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -0,0 +1,167 @@ +// 1.19 2022-07-03T12:15:14.4363187 Item Models: cosmere +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/aluminum_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/aluminum_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/aluminum_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/aluminum_spike.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/amethyst_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/amethyst_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/amethyst_mark.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/atium_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/atium_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/atium_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/atium_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/atium_spike.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/bands_of_mourning.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/bendalloy_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/bendalloy_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/bendalloy_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/bendalloy_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/bendalloy_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/bendalloy_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/bendalloy_spike.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/brass_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/brass_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/brass_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/brass_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/brass_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/brass_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/brass_spike.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/bronze_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/bronze_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/bronze_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/bronze_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/bronze_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/bronze_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/bronze_spike.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/cadmium_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/cadmium_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/cadmium_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/cadmium_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/cadmium_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/cadmium_spike.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/chromium_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/chromium_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/chromium_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/chromium_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/chromium_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/chromium_spike.json +1c115ab4012c6b8817a8df4aabe3be49722ef44c assets/cosmere/models/item/coin_pouch.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/copper_bracelet_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/copper_clip.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/copper_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/copper_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/copper_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/copper_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/copper_spike.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/diamond_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/diamond_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/diamond_mark.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/duralumin_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/duralumin_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/duralumin_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/duralumin_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/duralumin_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/duralumin_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/duralumin_spike.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/electrum_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/electrum_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/electrum_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/electrum_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/electrum_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/electrum_spike.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/emerald_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/emerald_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/emerald_mark.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/garnet_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/garnet_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/garnet_mark.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/gold_boxing.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/gold_bracelet_metalmind.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/gold_necklace_metalmind.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/gold_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/gold_spike.json +31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/harmonium_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/harmonium_nugget.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/heliodor_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/heliodor_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/heliodor_mark.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/iron_bracelet_metalmind.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/iron_necklace_metalmind.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/iron_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/iron_spike.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lead_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lead_nugget.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasatium_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lerasatium_nugget.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/lerasatium_spike.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasium_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lerasium_nugget.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/lerasium_spike.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/malatium_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/malatium_nugget.json +274bfcccdefd25e6fd4df40bc70fc857db2daf06 assets/cosmere/models/item/metal_vial.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/nickel_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/nickel_nugget.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/nicrosil_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/nicrosil_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/nicrosil_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/nicrosil_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/nicrosil_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/nicrosil_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/nicrosil_spike.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/pewter_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/pewter_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/pewter_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/pewter_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/pewter_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/pewter_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/pewter_spike.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_aluminum_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_cadmium_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_chromium_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_lead_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_nickel_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_silver_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_tin_ore.json +d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_zinc_ore.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/ruby_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/ruby_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/ruby_mark.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/sapphire_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/sapphire_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/sapphire_mark.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/silver_ingot.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/silver_nugget.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/smokestone_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/smokestone_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/smokestone_mark.json +8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/steel_blend.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/steel_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/steel_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/steel_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/steel_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/steel_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/steel_spike.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/tin_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/tin_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/tin_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/tin_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/tin_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/tin_spike.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/topaz_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/topaz_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/topaz_mark.json +78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/zinc_bracelet_metalmind.json +c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/zinc_ingot.json +83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/zinc_necklace_metalmind.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/zinc_nugget.json +166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/zinc_ring_metalmind.json +71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/zinc_spike.json +0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/zircon_broam.json +156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/zircon_chip.json +2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/zircon_mark.json diff --git a/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e new file mode 100644 index 000000000..2b8296bac --- /dev/null +++ b/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -0,0 +1,440 @@ +// 1.19 2022-07-03T12:15:14.4403224 Recipes +77a0eac808078676e15eb82c1b3b7d89dbd6304e data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json +bcde6240066289f4e54c7ec9944611bd118a7530 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json +0774becab0613f8e15e06d5af31b8d51b8e0f111 data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json +d8f54d54b0403e0cc4a4754fdd68627db5c6520d data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json +0a5f160165ccbd746e1077d3907b362ee68ba766 data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json +f2ab41ed22e5242fda20a6989e3d07a4e20a2186 data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json +6dcbbdbf870937282093028da4af40b2b40f7ace data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json +02b4337e22a80a59041719d4a8a3b75fb33659be data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json +f982fdf4c790471993c2f12e1e966d421817cd50 data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json +761bceee3994e46d21e98dc5dd8ae7308af22007 data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json +3a6b57ebacf0dcc8b56817f1dbe57b775abab3dd data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json +287dc10a9efca10b5804401c0b2e722a5b285fc7 data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json +397b59e9774435e0f4260b3de5485d2eb69fa6b1 data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json +a968bd84d8a4cd36159c49de6c2285722185185b data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json +69d3b21e84d16947cefbdf0f51d054136868777d data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json +d4eb5f6847e25eeb223497787c72eb5329fc6df4 data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json +344060f4aafb27d1468b61164c512d258fb0690f data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json +85846b5b59fb50be0ab6b9db101da05a9d9c0fb5 data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json +0f4c85bd8dfcdb7440c6c5e33ec5e50a19db5f42 data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json +bb57f5cd9b274df64b2e138e1dd0ae8c42846753 data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json +01c5937ee191f4b0e5db8c83b8a625ff089b9bd7 data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json +498e5a9e1b9096660f357b36bed3f9f6146644f5 data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json +aee74dcf863bc5ad4bfb8282d290a152d723edb6 data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json +64fb59c3a13db64d7aa16c5915163d9f9789badf data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json +5801defdf5013c92b2a701a42787e96238e3e998 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json +bbc51d4e51fef1d499a64d945f132508b1ccc95b data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json +0f0597afd416c4ca9b0065dacbd9c4976fd1abb5 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json +74eba70a2d03812db487e3f8ae528593f1257789 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json +2f24eea48d35de35d281126e84052fcf83c66f90 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json +c8aebf9b16bc9b558b4507aba06d672319c9dbf8 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json +d01d7e53fa4b202a9355662107283d037344a2d4 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json +ada3aa09c7f70387c3a1e845d1441dbbabe72f18 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json +a1af2c509826e4395dc19d84ce446e60f39dbac5 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json +ac3bd9cdf292605d78360b9a8045849f7002ff5d data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json +d374161d962c129001cc2f99afe6bf2fd978c66f data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json +3f3c59f6f3d239f1f8d9a9346af271e1471b9dac data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json +3019e762b965c29fd7c5f07f9ee8b12b31c7f18f data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json +e103c64254c9ee847f708733c75870e5e9461c31 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json +1735f9b00b0a5290d58dd2c1ed1e2a85575434fb data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json +97a6a743dd7af29148fe4f382127d901fdc047c2 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json +7f7feb59c3c3c581fd57ba83309c2661991ef5b0 data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json +7a51a4f8562fd7a19ca0a52e5a9a43690dc2c5e5 data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json +c322c1bb3c232841c636244582eef53642f8360f data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json +05d20963faf8e9f035b9f12c6599384332a640c5 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json +16e0b477ac998b0a0e1832ff133fde5f4d5cf125 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json +302c72583515e2ab2ddac3120f043996cc26de99 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json +df1271022c3c95438296ccd20b53c258c1a3b59b data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json +7621b0ef2efeec5a31a9ddc4f7c12985cef4285c data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json +cf291e698b4afdc0f1f665cbf9e4f954c82405f1 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json +1b461a94be643f6395aec15382da4655b8374585 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json +ef941cc48c33abe0dd4741013c5aeb914dabf91b data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json +f5e073a217d0882b33b42654d0abd91d646817e5 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json +35a2395e5e5dca3d698612c0c498b100f0be5d07 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json +89eeb5ea86561d6416d00745f981e1a860aa091a data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json +26332c3d11ffa48d68ae50f876edf32ee07f4f65 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json +1e9ec68e3b688877bee77d2b20472d3aa0ff543f data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +3fe8e0e2eacf3ab201ea177c1a7c13468dde1b77 data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json +775837261f34d7d7732645d3931eed544d7a6ec1 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json +21877cc38751a2244c6ef98933e122dda4bd656b data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json +0f411f2a418e96a6011e42646be865f205df52e5 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json +c52a82c057033b6e5a3f2d7c33b1d8bdd660df2b data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json +ed212e5ec74d5f1306b548e84f329f541ac0d177 data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json +886103ff55ce65aedc62550b1f9e06174976d73d data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json +41925ed52494be6e35797ecab3cc6f2420debe82 data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json +d17c0c42300c9a0c0f5585ceb091fd194bafb27f data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json +322f402acb200ca6cac6fdab6dc3d8504a86283c data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json +352c72454025f1ebb3e1ff641d80e957b51ccd4e data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json +ad0b45232fc5cdfe23be8184751e100f8016f5ee data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json +d0ee9719c8b95a2801810644caabcf15be2a09cc data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json +ef3ac3cd29e8b5a817c0fc4748d61f5c983c7705 data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json +7c53ead81f99ee5eb95e26e00464ebd1996ed1ce data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json +ddc41f45271ba5fddcce32ab6c3ee4e33a5199ee data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json +f7368eaec2909010838c6cc30608a9fd397f6c0d data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json +88e3d6356322109b7dd39690488902af695e12ff data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json +229c0569114ebab197fca68893354fd538a6490b data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json +d286ca9d98202b382979501ec9a3e6a2a43b8829 data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json +49b2629131b1a0892c1197ae7dee5be99d432466 data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json +893ea8ff062734f2442889a3265a565b73b74d29 data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json +ce8826c98e095dae9e611061639656bdced63b58 data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json +af71915dbd3a14431f4a1fc5dc719e6fa61c80f6 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json +470b9696c6c8283320828e3f9bf8915c55d7810d data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json +f1358ac7fb5adb0fcc87816f7118069d04863cc8 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json +243bd9c38721b533b15afdacd199c30cf8d2f9d1 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json +9fb9c00776614f703c62ba187161e855c623ba49 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json +4280fea62b7283501e331e76cb5c709de50dadb6 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json +ea4705d1c203ab88123c005235691a94b3513bcd data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json +e0877e45930455c00d5a822d67346c7a8c576d90 data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json +4125fefc75523307377337da68963512e42b44e7 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json +be9564ed8b316ff0660f8988f3fc7e66c4460bf5 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json +186e1399f81785ccd0cb0176541d196717aeaf55 data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json +26c5e79bd291308648afe4b2f8ce2fffdf761a8b data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json +f4539325c0d12d257c1549b63f75b3be25fbbfd1 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json +d937beca2dfe0b0b7f717da4e2e166a74ed57e1f data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json +eb4fe9ee9fa8b6ebe33d19a4caf96bd1ea32a6ff data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json +285a734389fdafe1ca85791e6296048f18137f0a data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json +0530257475bca00c31789ba05da7077c65a47367 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json +8076a86a496d61cfb9f009ff0892b5620bdb5148 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json +d04e74822782728f4006593f74de449cdccf05e3 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json +e2138211ad44446474ddfdf414d1ca67685eacfa data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json +e727dbcf2d3ecaaf437e3c8935fec3d9e25763c2 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json +962f4084afdf33801038be1b38e5f19150893301 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json +db799b6b2caee3da64b48798546c30784edbec0e data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json +dce0dc1cbee3d68ead59d90ace4f37302ad6846a data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json +60cc42973fc9a9051a0e64c1f66b1477634eaa08 data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json +f837b45450e10567f2e248f7dd424a14ec4183ac data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json +044496a2294e8c6fc94cd7b4f627d859fbff0be5 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json +3326953464e00620b9e8f048ff52df7e62745299 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json +c6ef3b49361703a06cf8505dab73164bd4b5c4f5 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json +4d43b82b519137d6d858141cdaff23ad4d54ad23 data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json +4026c519971e05f5a75acd407a4d9db5ded7818f data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json +9141cecb840aa3047f6304b7f3b1371568383f78 data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json +1e34603bf2657e9d100730a11becc72dc67580ff data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json +4244a72aaeda77b3829e178c6abedf1327abf635 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json +b67565ac75c5206a2d6f4aa0e4a5eff2c57668b2 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json +15632d791e209d27331b39a59cd621c06f80872a data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json +f605b9ac6da4c8891b38cb4fb5903b02e81935c1 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json +f47103868069611a5a2de8c98144608d8de4b865 data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json +60eeb0ca668ecad5d847368646833dce52f2b29b data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json +68f004e16dfa473ed52a92804d3592c72a6834ce data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json +5d8ae1fea662e6aea56c37244d39da8f12e2e7bf data/cosmere/advancements/recipes/cosmere.items/metal_vial.json +d915d5f1e1f74aee8190769ca4fcce6e23a6c5a9 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json +a48b1151b4b40fe0c78b196158e9aaac8fe9382d data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json +31de945d6008af8264673335e58e7b1d0147d204 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json +3f8a9fe6e90f13aa172849e764ae411f60b16150 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json +a0147c9e89ecb8248cf3be0414d35523b1805dd4 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json +b178796425970dd0ffbd488fca74946d56041f41 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json +d4df5c48c67bb1d1c614cf4a7e862030218eaba7 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json +f37cb4bbcfbdb32a1150418e0729103e51c81476 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json +d19c3685b0d5a098aa0ad079d3a24fdb7d7e9d1c data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json +eaf54ad3b192da75c0c835a2b0e6ef600ca038b2 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json +229f28eb40f1146554b908145023c0590c1c2336 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json +1f7b15d9973993d3f1e0506bbc8357e86d003357 data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json +4d1140b1906eb97fbfafdb2df884fd97a1ace02b data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json +faea4edd3d904c79a909dc0e2a657d1598720120 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json +de8709aa9edf7505146dd8172e61d625dc3a0743 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json +e9b0427e0ed729effcb7b9bb84d4ebdbd07149a6 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json +de5b730098a1126bfaa0db01bbf15c3d0c597cbf data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json +664329a2328e531012c2b8810a5fce7c60b0948b data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json +55b6d9c645954cda3123a8d499bd114edfaed95b data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json +a0157cf569911cf98bd026e5a22b03bf45ea51f5 data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json +3592ffc29d4c17277b32210b17789dc47034c76a data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json +272d8dee1697554d6aa539232e1eacf3750b228d data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json +41d4f846034d7e1dcdb84fa2991d2d6658c2e392 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json +954c78a17a0f76056e7c1b9dc5d688082dfa823d data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json +350c9cbd73f50f2a5bd85750b0542952ebeadf6b data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json +d9be3c10fe4b46b8da381b7e13ea362b894b363c data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json +d00177bc7a17808a283c60d455ca4de905d61356 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json +7e72be25f9f5a813dd0603d408427d8b84595bdc data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json +e44f4dd77c116a47a730f4c900444170b0d7786b data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json +ad5e6b61b0c77bb898ba7b75738c85d49c5ee485 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json +14d48ff8745ec9b69b6609dd83ddd62827104b84 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json +092aa59de84f36d8f0057619898334eafa11c4d6 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json +f9e8146c1a34cdbd5ffbb3be171ccfe4a99cc307 data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json +e4e6f4ab6587b6013bf200576e1bb048e51e1c95 data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json +9f97bc425f2df78436b8971f4483696728d9659b data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json +0b7f755b1311014ebdb4bc0308b8b6b2d558dc9c data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json +d29f3a7350d4894501927fbd6f8e86b2873b091e data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json +9567ca6048798c0867a458665a265459cbcc8f5f data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json +c26f3382066c7682f92822e4e7996cceafb5ad40 data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json +2273e3ac7e15519449ff4516ea15d7b8b9cdd251 data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json +529ed6242e49a71f9489c4a76daf17378858746d data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json +96b6166b9191a6bece19ae738fa4a31fe8ed41ec data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json +c65993a4ff826520a0357e844a9fbf679e31727c data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json +c0a304303e41bdf1db4fca2d8bd941f939eb39b3 data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json +9e701034a0e569eaefd5ea40065c55f04dd327dc data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json +43c450f85b36b612ef38396f24754cee0669aaad data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json +451f31e7a56ecdd7141001eff5337b26f8e1b0ff data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json +072e2ec778d704c872e0b671705b9bd029263e52 data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json +8c3685f094b32a17ca46eb71551474fd8e900253 data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json +219105ccc1504d2487e22035803c0ffdaa57b763 data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json +8f534c79887c16f4c9a56471a2e9749d1adbd56c data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json +f52b344961ea5cabd2f9f0cfdfc5bdbbbf00387d data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json +aa33d3e7a11f39f7a4b37e18a0f6d9607cbabd21 data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json +ba868f5c00ccc87555597d08d0ed69828926f35d data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json +78373c573a64321caf685be1d866a13eb8f0d0a0 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json +ee98557d0b35c08d2f8b7e9556ea5390606f11b7 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json +c7bb26053310afbc0cb6b1f886f4708fa73227da data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json +aae450202fe557985992abe44152b7dd85658094 data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json +6596014fbeb2d0598efed70db1a6801192c779cc data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json +0be5601aebe181030b096f338fd42d1b886df642 data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json +052552a5f1b6acc9a4d89ca26243a4cff390d44c data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json +4f5025d06880b3fe0727b70e0b20ac1a20a1388f data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json +c67f883bd4f28230cb603c4b1c645ff9b54f712a data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json +0779e6cddfa630d971769529724894f446635721 data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json +504ad33263e6d24fd259b3073b1e05f0b8daf45b data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json +2e49f47893e8dfb71df42f1acd9c84c92f0c2e9a data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json +9fcca9946262d849a713d73ee79df0b674943aad data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json +951d43a0f9bcedb0cd6a59e7fcfa4890f4a8fcbf data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json +2c052386b67df6517a50d3f522a1a6c174d13b24 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json +fe5c4086b7011287743ee760bef770f0080a6878 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json +86124e827a49fada07cc42708b83e7b3ad8865fa data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json +31520e549e6cbb2972ef753946ae2cb193279041 data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json +d5c0fd79f2aec46f0c646da1aa9b6de3d86b7fdb data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json +a61ea857a16ed6d06b694ccc21a883580ae0a20d data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json +b4fcacaa3c2e74b5088c0d5e3b3c309793379999 data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json +6341c3bd82a22aba17d1bfa2ef21d8426f2f9036 data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json +6cd6a95bfa953ff2a73900a19af7a422f3d2a4b6 data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json +766f6ac868b5b563313ae60f377b3f893c1413c6 data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json +bb917431ba4cd93781d89b3bb183eb0d12f8174b data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json +42e298aecc3524a00756745bd086e4ad18eaae91 data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json +3b30ad7cc541d11669346a97f1a2dde7b431fcec data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json +341738b33c18dd46c356b973e1ac340e8bb0216d data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json +7c82008c167905d4e2164729677e7c986d8e6c72 data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json +2a82095575e62ee7801ac3bd9e8348f4fb74fad1 data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json +c436ebc8ab8bc0889c951b3a9cdfe6aac5fcdc93 data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json +92c3a191e342eb55afde1fd1f682a9c5e762b087 data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json +da61b358efc42f45ee22024610be4506b9d34c76 data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json +93897610c968f91635ebcf90d3372c31d0da29cf data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json +8acbe0a53f3b159da4650eb17036e700dda6b186 data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json +3280565dab06d5312ece67ac8d91e3954f4dae3a data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json +ae5812837461b5ee9278ac9094e00c285d950125 data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json +90a8b4b5eac1347542e9ef2cb8fedde074e463a9 data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json +2a64abb6f8a3b4a647c18e10eda5eedb6bc593e4 data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json +8bfa924aa674eb5a1cfd9ba67cf5a9eb61a25bdb data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json +bc063cda6e5c5b1e209c27924da93b33374b709a data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json +9304ec7e7541b2e743e3b0cf8f208191c84210e0 data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json +34321712e4aec5f1202260d391cafc3ad895eb68 data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json +5c4aec6df9b3a19aef8149b16049e36a97472065 data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json +355e8dcdc88c10e8c203e60654b7b6c1232ed204 data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json +f37ea3bf5560018fa302c8b1502fd0a740a71b92 data/cosmere/recipes/alloying/blend/bendalloy.json +f39ac5face05e4b7c08152679649d9be99c3392e data/cosmere/recipes/alloying/blend/brass.json +54eb611e1e1d97be672ee5f24d61d298251f788f data/cosmere/recipes/alloying/blend/bronze.json +d682ab056acaa8c3dbf6fa57952b5568f4df9353 data/cosmere/recipes/alloying/blend/duralumin.json +852566052c04be2043bf25f645fa169497d67ba3 data/cosmere/recipes/alloying/blend/electrum.json +01ae7863a9c516393be723df33bfabf9064a11a8 data/cosmere/recipes/alloying/blend/nicrosil.json +1dd6b54fb34bf54c719bd2f6ac8f8b4b034abd98 data/cosmere/recipes/alloying/blend/pewter.json +ff4cfaaaa083dda3067e17b829048d368810dd6d data/cosmere/recipes/alloying/blend/steel.json +5e736cf1457a88c41af96291727263126e4506b1 data/cosmere/recipes/aluminum_block.json +7af0623a6787b843e870d78cdc7d055c8afc0272 data/cosmere/recipes/aluminum_bracelet_metalmind.json +7101c7e501691436a8361c553dae49f60c6283cf data/cosmere/recipes/aluminum_ingot.json +fdca44bf36ac66557e3f1a7448555a8e9d6387f0 data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json +a6c51e2e1f7980c6364c75c85bcc4ebf9fdcbbb3 data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json +c2aa043337238a6e1c5b7f8c5548526f101be471 data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json +d8fc3a0b6842ad4b788b87d3962e4cb2b2ef0c7c data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json +cf2b18161efc8c23b5aa180f5a93a0890cf57081 data/cosmere/recipes/aluminum_necklace_metalmind.json +93fd7fdeff8863c56fd972534aca43b815df8f4e data/cosmere/recipes/aluminum_ring_metalmind.json +d2859e00990776bb0b1855744d463d2ec838392b data/cosmere/recipes/aluminum_spike.json +e59b1db49c5709b188cff82265d976acc4659703 data/cosmere/recipes/atium_block.json +929897f56ac08e3d42af624b44e8daa92f25e36f data/cosmere/recipes/atium_bracelet_metalmind.json +0ea7ed855297eae1abde474326dc8c9b12579cb4 data/cosmere/recipes/atium_ingot.json +09d4ea2cb76b3adabe2d91a77a99af1f1bf2fbe1 data/cosmere/recipes/atium_necklace_metalmind.json +aec63c6b0f03056df574ccca247f3acac5ebfede data/cosmere/recipes/atium_ring_metalmind.json +0dbca816fcdb087e290cdd4ddef33091d7befab5 data/cosmere/recipes/atium_spike.json +151437f8b122fe9310dd4190dc966b3b705a771f data/cosmere/recipes/bendalloy_block.json +ea41a3dcc05f242091ace614148813eed95e4340 data/cosmere/recipes/bendalloy_bracelet_metalmind.json +8b60b6822653581ac783284029be52f88e227af3 data/cosmere/recipes/bendalloy_ingot.json +a1f33f7d1423bad549c48902871e779f81ff4a02 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json +37517a60a8db760ed41879c10b6d590250fce697 data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json +1323ce16797be61a4fa492a44e515c99caac4e24 data/cosmere/recipes/bendalloy_necklace_metalmind.json +3f543a2e85a18da5f0e4c4275c4011f959310fd3 data/cosmere/recipes/bendalloy_ring_metalmind.json +240718ee8d381dfcf4178a2b5152eacec2bcb526 data/cosmere/recipes/bendalloy_spike.json +0ef22b1755a99ade448f5c66eef0518c020b5c4a data/cosmere/recipes/brass_block.json +08dcbf49406f20e7c3cab77a307f8f550a8a915f data/cosmere/recipes/brass_bracelet_metalmind.json +7c7134122f2169e20c63043f31562421f88c3f00 data/cosmere/recipes/brass_ingot.json +6604443fec3153b6faeb722b0c1ed2114d99b63e data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json +e86de01427058f3822b659e0d857bfcbbe12afab data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json +0349e4eb5a446ef1704450acd8efc7f8aaa75921 data/cosmere/recipes/brass_necklace_metalmind.json +473b23cabe35d69915c08a6c97973dc652675e79 data/cosmere/recipes/brass_ring_metalmind.json +d6635cffc606f774cbe14d02e44ea2a78e1296cc data/cosmere/recipes/brass_spike.json +74ed14fa2e85736d670a52a6685b382a54dc14a0 data/cosmere/recipes/bronze_block.json +1f5e62c84c513d9ed4623826700741bf9d5572d7 data/cosmere/recipes/bronze_bracelet_metalmind.json +a8e2b7699c7f3c5e2a773cdb42a87c5e41c7070d data/cosmere/recipes/bronze_ingot.json +9fcefe7ae6c732d400754eb69588623fa47b87d8 data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json +913c456587fb1fd3b9606d08fef529b47c239fbe data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json +d08881867937d019a1677a8e6c3b9af09bf1a6bd data/cosmere/recipes/bronze_necklace_metalmind.json +733be41b232af7fc8844592053c3c49393d01283 data/cosmere/recipes/bronze_ring_metalmind.json +9b6e2f9a9c5ff92ecee8287755517df7f1f589a9 data/cosmere/recipes/bronze_spike.json +ac6188bedf9252ecf6b842f05f31f0b92f37b284 data/cosmere/recipes/cadmium_block.json +89862d7d07ae6e8de679664c3955edcd499b469d data/cosmere/recipes/cadmium_bracelet_metalmind.json +8ca43d158a092d69a008987c8dff1b1db9b3cca8 data/cosmere/recipes/cadmium_ingot.json +d6e8f0452b031b146b3b332faeef8ce87a2fdaab data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json +4da177c50d09bec0a67c8c588d2c356cc5aa35e0 data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json +089bafdfa4766a6fc615fc5de6d33d1c82c9d72b data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json +e81b1bec9ba0371e77ff287ca4dc50382200139b data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json +377ba5955505c96e8465af87dfa1df8cb76f1ccf data/cosmere/recipes/cadmium_necklace_metalmind.json +b4acfe0945c87951692ec0bb895ad5a20b9eaa58 data/cosmere/recipes/cadmium_ring_metalmind.json +ca9f349060e9ff0969212fd11c5a19f45204997a data/cosmere/recipes/cadmium_spike.json +078aa4e5a587a90a2eb8ea5475ba377b25688dde data/cosmere/recipes/chromium_block.json +eee358e3882299955d279754293307d37ad95dd9 data/cosmere/recipes/chromium_bracelet_metalmind.json +0125ff8c28e1ac2821b07a3a1c2d5849692b88a7 data/cosmere/recipes/chromium_ingot.json +5141c5f3a9d25ca363419831278cab93bc3ba7d6 data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json +1fdf39cd27da8122724802b3b2c67135469fe78f data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json +1067ee6178920ecf24105de6f776ada594fcceb7 data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json +d108b6a243f9f59b5e09422bf2d15d53193a654c data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json +042ff37bfcd38e62242482e7f6474c79bbc7e811 data/cosmere/recipes/chromium_necklace_metalmind.json +562b60d22be09e7de62137110b5bbec2819617d8 data/cosmere/recipes/chromium_ring_metalmind.json +c67c1359dd59da8419b7aa990a7f26057a9e34b1 data/cosmere/recipes/chromium_spike.json +e60365e7ec1da901cfa04ddb84c0ec5fa6cffb9d data/cosmere/recipes/coin_pouch.json +2d6ee033e9347578b4faa6425fb1cc6bf7bb9c26 data/cosmere/recipes/conversions/aluminum_block_deconstruct.json +841c2f1c536cfee700216b8178908ca81396d394 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json +226f29a24693fb7244753ebc84e1868b3ecac364 data/cosmere/recipes/conversions/atium_block_deconstruct.json +9f42fc8350c416d93895babf8959564b4817f6a4 data/cosmere/recipes/conversions/atium_item_deconstruct.json +a8259c2ad8c26aa465cf78421a7cf31188c86231 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json +32b4117e9e7f66aaf0f5348da031a1c85d1417f1 data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json +d1c3882229bf5aaf8c2e3dd0bf0eae148a2455c0 data/cosmere/recipes/conversions/brass_block_deconstruct.json +020c9b08d35103d76dee01d1d23822d6bff0553b data/cosmere/recipes/conversions/brass_item_deconstruct.json +d6987ec3c2859458897784c078726e6e55481769 data/cosmere/recipes/conversions/bronze_block_deconstruct.json +397f2cb11c1056caf665afd3e402c45e5bc5e792 data/cosmere/recipes/conversions/bronze_item_deconstruct.json +3a9fce8235603e0d7b952e1d39616b6f430752df data/cosmere/recipes/conversions/cadmium_block_deconstruct.json +0696b61b950962fb7eb4d171d8497e7d40c441ff data/cosmere/recipes/conversions/cadmium_item_deconstruct.json +70986fdb3dd5f895ac50891ce857088d29599022 data/cosmere/recipes/conversions/chromium_block_deconstruct.json +7a92ca8b38fff1c0000e5ad0779ee27c3065ae1a data/cosmere/recipes/conversions/chromium_item_deconstruct.json +bfe44e57092e4304deb566d46d126bde46eeb962 data/cosmere/recipes/conversions/copper_block_deconstruct.json +ea6409f7345644d400624b05b1be08303364c532 data/cosmere/recipes/conversions/copper_item_deconstruct.json +9a9ae713e01f9cf580ca0658703a3571404ff13c data/cosmere/recipes/conversions/duralumin_block_deconstruct.json +397cd77f4eaf8e148d05feee5fd8b98e594636fe data/cosmere/recipes/conversions/duralumin_item_deconstruct.json +5f42d4c5f595815da92998086ccc6536822e34ca data/cosmere/recipes/conversions/electrum_block_deconstruct.json +5d37400c2a0f030e7c57c652b7209ae82f643d5b data/cosmere/recipes/conversions/electrum_item_deconstruct.json +612b18e1eaef3cf3db49fe88d23675ffc45f1fe0 data/cosmere/recipes/conversions/harmonium_block_deconstruct.json +8e47f0df812bae3c546dbea65abd3dfb856f5559 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +2d758928f4b0a2386b3ff599211bca0583f03669 data/cosmere/recipes/conversions/lead_block_deconstruct.json +2909c6d932ae4ff78b12e948e99258ed0bf62aae data/cosmere/recipes/conversions/lead_item_deconstruct.json +42a85418d217fae819ff2d6aadc61496d166e102 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json +4b1f9a8f65c5eab03123a319e72c7878e21cec6d data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +6c4ac321521d963410b1e473b9a4c0f634136ef9 data/cosmere/recipes/conversions/lerasium_block_deconstruct.json +39d2538b9dcf72d145e8d95703dc312a524cf88f data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +d08dae8b5524eba81445da1444a3c6040cd5c113 data/cosmere/recipes/conversions/malatium_block_deconstruct.json +e3f3a0e869e45baeb60b772ec2610a065b93f1e2 data/cosmere/recipes/conversions/malatium_item_deconstruct.json +1e0ad7fc554e4512141da5d3e5cfb9fb174e5e25 data/cosmere/recipes/conversions/nickel_block_deconstruct.json +bdf72c5bae0767be57b7fac002a1c2a9cd0509bb data/cosmere/recipes/conversions/nickel_item_deconstruct.json +03521da496383e6879523b01701a4a8ecea600b5 data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json +5fe1ee5e857cdf85eeee13d66ce1b626bf660397 data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json +7fe06cf879ac95afa5ed826c16ec8f6a8d04688c data/cosmere/recipes/conversions/pewter_block_deconstruct.json +97400b3b619ae014143020a7c16535751cec24d0 data/cosmere/recipes/conversions/pewter_item_deconstruct.json +bb1554472e2cb7ffb9e3324dc37f7de11b059b42 data/cosmere/recipes/conversions/silver_block_deconstruct.json +e14f877988596bc902e2e598c5b00005d3c35103 data/cosmere/recipes/conversions/silver_item_deconstruct.json +c0971f960568c18ccdd64f3f479af00dea1d7cb1 data/cosmere/recipes/conversions/steel_block_deconstruct.json +8fd6237621e8f8c498f37ec8457f6f55042e8621 data/cosmere/recipes/conversions/steel_item_deconstruct.json +95614d6c762fc8c20a7595698b7f8bdd21e2e9de data/cosmere/recipes/conversions/tin_block_deconstruct.json +b44122ab771b4a4b939a5d6fbd98f95e589ad95f data/cosmere/recipes/conversions/tin_item_deconstruct.json +6d3483ef3bcdfdf07328e03e8bdc7eaa26a369ac data/cosmere/recipes/conversions/zinc_block_deconstruct.json +14bb78dae79e147bdae3bba066d68e8e1bd98a18 data/cosmere/recipes/conversions/zinc_item_deconstruct.json +ede861203c6252ac69b1d5d78147a95a30bb7479 data/cosmere/recipes/copper_block.json +a1713f3c0b56e25192732b01eb6ae781be4595f2 data/cosmere/recipes/copper_bracelet_metalmind.json +b40b05eec1917227dfacfb625f068aecee1eaa65 data/cosmere/recipes/copper_ingot.json +3258a625792292e8b393cd7fb863f92e7a486fab data/cosmere/recipes/copper_necklace_metalmind.json +fb129304bad4bff711273179ccb6c8ca9fd99446 data/cosmere/recipes/copper_ring_metalmind.json +eee000cf00b7325375e2648ebdcd595dc3b4336e data/cosmere/recipes/copper_spike.json +f1c042e6dde7d7199509e0a4dd392841acd8e9fe data/cosmere/recipes/duralumin_block.json +7afd5f2eb76a0cfa14c63a949d55195eb707be30 data/cosmere/recipes/duralumin_bracelet_metalmind.json +8ada2c88c0f6de606cc87942902865fab433868c data/cosmere/recipes/duralumin_ingot.json +0f40b47be4dd7d22b5fcb6b7ccd89c81a72e8113 data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json +571ae06691c0db0214f11f3c2e99cfe146cbdccc data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json +611a0d54593cd54ceb3ae7eced12192dada45c37 data/cosmere/recipes/duralumin_necklace_metalmind.json +f4ae6ef24549d0759b231269b2c7846ecabf84ea data/cosmere/recipes/duralumin_ring_metalmind.json +9c39e772b4f8f128229cd2b4284a3506d9b11b4e data/cosmere/recipes/duralumin_spike.json +aa5a1996e9c6367a86d62bd9187ea62d7915bca5 data/cosmere/recipes/electrum_block.json +3cbe49eda39c02f9bda841dcf3c7be1642b68dc4 data/cosmere/recipes/electrum_bracelet_metalmind.json +e5521d101476299f88d49904babde8871b12aa1e data/cosmere/recipes/electrum_ingot.json +8b49057875dc37f4225e39e056c04d80fb7c579a data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json +9abc72776ecfb97b828643793b3198a492de715a data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json +ef71a2007bcd66ec5b8875ad23c0801af5ab0a6c data/cosmere/recipes/electrum_necklace_metalmind.json +20299bac77f2c3ec0f429af2a8a406b6a63b5285 data/cosmere/recipes/electrum_ring_metalmind.json +89e3b248559a7fab3b55753c313d38557e9c7597 data/cosmere/recipes/electrum_spike.json +1f0398214b31cdb69022d9cae6684498050676a7 data/cosmere/recipes/gold_bracelet_metalmind.json +56e73a386ec08602d3511a9818985bec058c3bc2 data/cosmere/recipes/gold_necklace_metalmind.json +cd5b9ee21c7b6d25172816a9b67d96cc274d9eb0 data/cosmere/recipes/gold_ring_metalmind.json +95bd67199d4e4b38f51c8ce40815b39de8a4e2e5 data/cosmere/recipes/gold_spike.json +497637e0d8987353f975f4d71f079e6c9099fa9c data/cosmere/recipes/guide_from_blasting_iron_spike.json +94735c2bd2921dff23be2d327720213d040c63a3 data/cosmere/recipes/guide_from_smelting_iron_spike.json +c0b841d85e687856339ba5b5e8295daf8f0038d1 data/cosmere/recipes/harmonium_block.json +a812b1899b77ca6533fdc5531467f4f20b999310 data/cosmere/recipes/harmonium_ingot.json +3b508e5ae28679c77b40c2eb3b27cbd1d6b7466a data/cosmere/recipes/iron_bracelet_metalmind.json +dbcdf3c3997b85238b509bacd810c644763b237e data/cosmere/recipes/iron_necklace_metalmind.json +fd7a3028559ab9d73593fe804d02278bc65ff666 data/cosmere/recipes/iron_ring_metalmind.json +630783bb0aa98ca56a21eab08466ffca3122dd84 data/cosmere/recipes/iron_spike.json +61eb0f9e7693525c934b63831bac3fee384e6c86 data/cosmere/recipes/lead_block.json +60a82fbcd278b7f5dcbd050338a3ea60d77cc22a data/cosmere/recipes/lead_ingot.json +b8332e20a2b2b597e7234b5a48a8c994161cec04 data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json +6defc6c18e7b5f18b9add123982a963a176a5a98 data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json +ec803b98cd5c19eacb8a1ee2791cef9af9b356c3 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json +867e69993bc7b6ac9c87edbb222a51a9a3fbe84f data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +571140565d8223c505108ec0787d57fe80cec7c1 data/cosmere/recipes/lerasatium_block.json +325febc3a9a5d5066759160739f5cc832efb52c6 data/cosmere/recipes/lerasatium_ingot.json +9c97be08bdd59ca33f91e4a0863d9588348e926b data/cosmere/recipes/lerasatium_spike.json +965fa9c6017722bc925298e2e9a27740fcd5a857 data/cosmere/recipes/lerasium_block.json +9a5f9a6752bfbe9b5f59fca2673c4b44d208f417 data/cosmere/recipes/lerasium_ingot.json +6db3c5827dfbcc13d54fa81a36f40a49e386ec75 data/cosmere/recipes/lerasium_spike.json +aad5df9628a13cec7f4be434aff8c1897e816a3b data/cosmere/recipes/malatium_block.json +fd621781343e61820d818871400a29ee5463ad65 data/cosmere/recipes/malatium_ingot.json +0adf5fa95baad7c57c79c483a7a8f51db7d2b02c data/cosmere/recipes/metalworking_table.json +dc97641f9c8a075547be022e92580868137e35a3 data/cosmere/recipes/metal_vial.json +4422b5965f68c946151444deafa189a22abb7b90 data/cosmere/recipes/nickel_block.json +60fff3885084e48201b713c67c27289f399bbf3d data/cosmere/recipes/nickel_ingot.json +780925423b643104740257fe7a4e58db38348c03 data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json +6d64e9ffdb9b904ba4110b6c066a2eb2a7f119d8 data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json +a0fb0ca06fc502c2d69ceb30d966909e50451eb8 data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json +e18cf12577110ac9c33d057254f230f89f6d3d2f data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json +be8608235de546aec58a58c2019c7a95a447ba7c data/cosmere/recipes/nicrosil_block.json +dc1034822bb9ca83352eba71f45017fcb69697e8 data/cosmere/recipes/nicrosil_bracelet_metalmind.json +b2550c90f1cc867dd02447009338dfebec6cf1db data/cosmere/recipes/nicrosil_ingot.json +189117321d4c5cdd4214d26ec74b28f326618372 data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json +172f22b9d76e6cd8eab08086deb5f29f5e6085f7 data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json +e65cc05e4ea2bd3eedb856d5adf87b3b7636a38f data/cosmere/recipes/nicrosil_necklace_metalmind.json +90475a02d750b941ed0bf0d9868934a741106307 data/cosmere/recipes/nicrosil_ring_metalmind.json +c98dfcfba9d2ee0ea48edee8bebed63c32ec9154 data/cosmere/recipes/nicrosil_spike.json +7fba19a85bfae9a8d6887b31fcd47f7e449e0e73 data/cosmere/recipes/pewter_block.json +58d8148c3eadfdf48db40894c618fec074b5999b data/cosmere/recipes/pewter_bracelet_metalmind.json +01480660592110d3e93acb4a62311b622ea2f195 data/cosmere/recipes/pewter_ingot.json +08f93f560375c79eb4aba91c03c1b4e8154887a6 data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json +20293ee0e26c2c437d798221e872d505da9a52cd data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json +8714682f38d5f3e812bf03be57b48843921a77e2 data/cosmere/recipes/pewter_necklace_metalmind.json +1096ae2d527af1e44ad679f285c3b50af141b146 data/cosmere/recipes/pewter_ring_metalmind.json +a0f1a192dfcffb1b58182f5c6c9ed630a163c9a8 data/cosmere/recipes/pewter_spike.json +fdc8f197c9466a259d739ef25a573fbfc65f457c data/cosmere/recipes/silver_block.json +f391b19bec40800f007e070cc5966aae2569de32 data/cosmere/recipes/silver_ingot.json +e51f28bd280d21a104cfba7d9356faf35898612b data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json +732bee6a915483ab62cf10c4286edb81943e7d12 data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json +4f17244935eaf84c884c9d66d5d1b3200d481fc9 data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json +aac346221ba16d9a5db9ac4a72c9208fdef529a3 data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json +ce8778c035a37d656d51e3d2fe475eb9b58132f0 data/cosmere/recipes/steel_block.json +5d465a5325597189a12b54c04211c144097512ee data/cosmere/recipes/steel_bracelet_metalmind.json +42b5bd4189ad5153d8b376663785f84532cc3844 data/cosmere/recipes/steel_ingot.json +db2e490daf5baddccfa2dfdb099d776288bc1c62 data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json +3846858ee33dc0c5b1bd103ce4671717bf0e40a0 data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json +acb48b1b986b09e58d6a56fa2bebd975ac94e017 data/cosmere/recipes/steel_necklace_metalmind.json +05056dcd85579156c35ac46721abebe5117f149a data/cosmere/recipes/steel_ring_metalmind.json +31bf963200dbbbbcde0582440ab96bdf6c916ac4 data/cosmere/recipes/steel_spike.json +b136fff96351e4c66bc4725e1db5402e72e2bafd data/cosmere/recipes/tin_block.json +010fdbcfdf005a5bdee389f521954e86453692e8 data/cosmere/recipes/tin_bracelet_metalmind.json +f04ebef8a3d74ee47cb59b52f3787ec397acf608 data/cosmere/recipes/tin_ingot.json +433b8abe56cdb6f082af5dc651fd64c355f992c5 data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json +82f14fe906ff639200fb14ff8dc2e536e8405385 data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json +e3aab6a55fe258454ba575853d61bcf3de7665dc data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json +98e904c602f397fcd5baad9badb0088e2780fcdc data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json +39ccd06f4d1d55396b8ad49c2d58738b6f9b59d7 data/cosmere/recipes/tin_necklace_metalmind.json +bcc6481eb21f06c43888aad89314610e88dc7587 data/cosmere/recipes/tin_ring_metalmind.json +6ea59fd75819dbbf200f3ce676cbc8078248202e data/cosmere/recipes/tin_spike.json +057761a717a8101dbd5950c87ec387d07b58f793 data/cosmere/recipes/vial_mixing.json +3d9ad3e21f83082429d67c5443018545fe605e1a data/cosmere/recipes/zinc_block.json +001f9d64b039cfda5df4ff6c534921639bad1eee data/cosmere/recipes/zinc_bracelet_metalmind.json +db6843c7a0088b61402d539b7421d75a5a070447 data/cosmere/recipes/zinc_ingot.json +0179e10f178092ffe15a9823f1f3392fbb17c588 data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json +3ef2372addbe4e4fe8ec13e1eaa75cf700f26d73 data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json +82ee7227ac6fa2ef712f04419c46f1e75fcc8fe7 data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json +d2b7ef82d4457bbf10ee0a3bbb774b3d4c5b6cb0 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json +a7bf01afae5fb174454b7c652afe8bc2fa1edfe3 data/cosmere/recipes/zinc_necklace_metalmind.json +59187825f0827ce786d3a62f0567f6ec63cf7384 data/cosmere/recipes/zinc_ring_metalmind.json +500eeb2787d567ada78abedc1e8356c8b18b679c data/cosmere/recipes/zinc_spike.json diff --git a/src/main/generated/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 b/src/main/generated/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 new file mode 100644 index 000000000..3eb8cbfd4 --- /dev/null +++ b/src/main/generated/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 @@ -0,0 +1,9 @@ +// 1.19 2022-07-03T17:21:10.2424138 cosmere Biome Modifiers +87145500e934a45da2900dcc8d0492e5e84f12d3 data/cosmere/forge/biome_modifier/aluminum_ore.json +3c671d754a91917c1b6a9fee240a522b31f8ccca data/cosmere/forge/biome_modifier/cadmium_ore.json +01f17cc2c4aa69151966178792568f149f6dccb5 data/cosmere/forge/biome_modifier/chromium_ore.json +341aa7a76520ea8555fd0c831e450089dcda4d17 data/cosmere/forge/biome_modifier/lead_ore.json +32b59827a7cc9fef3d514cfa8e18567f92610c38 data/cosmere/forge/biome_modifier/nickel_ore.json +cc04b625a6c3b3a90754af90cebafc255179184e data/cosmere/forge/biome_modifier/silver_ore.json +aa81ef9e8ad563103f09a41de0f9920d3b2d7769 data/cosmere/forge/biome_modifier/tin_ore.json +d36de3d9dfe153e8f364ff1516284e475a178a11 data/cosmere/forge/biome_modifier/zinc_ore.json diff --git a/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 new file mode 100644 index 000000000..867d95feb --- /dev/null +++ b/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -0,0 +1,2 @@ +// 1.19 2022-07-03T17:21:10.2454167 Languages: en_us +490b1c6c4fdb030e4ccd46ab6f8cd4de156f1ffe assets/cosmere/lang/en_us.json diff --git a/src/main/generated/.cache/cache b/src/main/generated/.cache/cache deleted file mode 100644 index 3264fee18..000000000 --- a/src/main/generated/.cache/cache +++ /dev/null @@ -1,972 +0,0 @@ -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/aluminum_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/aluminum_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/aluminum_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/atium_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/bendalloy_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/brass_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/bronze_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/cadmium_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/cadmium_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/cadmium_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/chromium_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/chromium_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/chromium_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/copper_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/duralumin_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/electrum_block.json -7dfa2fadeaa6bc2b99a30823035a6c970054afb4 assets/cosmere/blockstates/gem_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/harmonium_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lead_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/lead_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/lead_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasatium_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/lerasium_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/malatium_block.json -b7fea0968724d1ad3bb8d3eaa893667b4899d744 assets/cosmere/blockstates/metalworking_table.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nickel_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/nickel_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/nickel_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/nicrosil_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/pewter_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/silver_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/silver_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/silver_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/steel_block.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/tin_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/tin_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/tin_ore_deepslate.json -edaa7877000a497242bfd5901b6773cfa26fc309 assets/cosmere/blockstates/zinc_block.json -b118f65ac1078511bdff353013a20ebe62732b22 assets/cosmere/blockstates/zinc_ore.json -c55b5e41d9ac684bde94b4ba4365df1c1a22c46e assets/cosmere/blockstates/zinc_ore_deepslate.json -ee64f7e00c09036f92ca20fa000a70f5d4451814 assets/cosmere/lang/en_us.json -e9fe228cb639a8823d11fe37d1d1b079e9bd4cb7 assets/cosmere/models/block/gem_block.json -b66394816822b5feda05810c580e11ddb986f4a0 assets/cosmere/models/block/metal_block.json -ef03d3d59fa316a7934994ddaf011a61955cdb21 assets/cosmere/models/block/metalworking_table.json -645553d67807b60210c1bfae147ccd31ec88eaf0 assets/cosmere/models/block/ore_block.json -6ebe4a19ff7253152f2af5ef24e9c0c26bd6a10e assets/cosmere/models/block/ore_block_deepslate.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/aluminum_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/aluminum_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/aluminum_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/aluminum_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/aluminum_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/aluminum_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/aluminum_ore_deepslate.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/aluminum_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/aluminum_spike.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/amethyst_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/amethyst_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/amethyst_mark.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/atium_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/atium_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/atium_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/atium_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/atium_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/atium_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/atium_spike.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bands_of_mourning.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bendalloy_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bendalloy_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bendalloy_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/bendalloy_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/bendalloy_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/bendalloy_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/bendalloy_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/bendalloy_spike.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/brass_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/brass_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/brass_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/brass_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/brass_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/brass_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/brass_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/brass_spike.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/bronze_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/bronze_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/bronze_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/bronze_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/bronze_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/bronze_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/bronze_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/bronze_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/cadmium_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/cadmium_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/cadmium_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/cadmium_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/cadmium_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/cadmium_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/cadmium_ore_deepslate.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/cadmium_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/cadmium_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/chromium_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/chromium_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/chromium_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/chromium_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/chromium_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/chromium_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/chromium_ore_deepslate.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/chromium_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/chromium_spike.json -987615c6cf471aeb9c0c98cbe0bf0dc2dfdb8e32 assets/cosmere/models/item/coin_pouch.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/copper_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/copper_bracelet_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_clip.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/copper_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/copper_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/copper_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/copper_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/copper_spike.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/diamond_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/diamond_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/diamond_mark.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/duralumin_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/duralumin_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/duralumin_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/duralumin_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/duralumin_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/duralumin_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/duralumin_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/duralumin_spike.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/electrum_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/electrum_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/electrum_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/electrum_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/electrum_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/electrum_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/electrum_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/electrum_spike.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/emerald_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/emerald_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/emerald_mark.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/garnet_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/garnet_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/garnet_mark.json -093a7aadc79fe47013d29ba53bb9df540b27dba5 assets/cosmere/models/item/gem_block.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/gold_boxing.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/gold_bracelet_metalmind.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/gold_necklace_metalmind.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/gold_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/gold_spike.json -f9c2f8e60d6f55d0b91bf2558b3d7f6a84f3b9b5 assets/cosmere/models/item/guide.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/harmonium_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/harmonium_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/harmonium_nugget.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/heliodor_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/heliodor_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/heliodor_mark.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/iron_bracelet_metalmind.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/iron_necklace_metalmind.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/iron_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/iron_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lead_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lead_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lead_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/lead_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/lead_ore_deepslate.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasatium_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasatium_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasatium_nugget.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/lerasatium_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/lerasium_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/lerasium_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/lerasium_nugget.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/lerasium_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/malatium_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/malatium_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/malatium_nugget.json -9d01417efc6918521ae556205bb9211690ff7815 assets/cosmere/models/item/metal_vial.json -c7e621c8d9d94abc4540db803136d438f3065054 assets/cosmere/models/item/metalworking_table.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nickel_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nickel_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nickel_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/nickel_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/nickel_ore_deepslate.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/nicrosil_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/nicrosil_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/nicrosil_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/nicrosil_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/nicrosil_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/nicrosil_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/nicrosil_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/nicrosil_spike.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/pewter_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/pewter_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/pewter_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/pewter_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/pewter_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/pewter_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/pewter_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/pewter_spike.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_aluminum_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_cadmium_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_chromium_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_lead_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_nickel_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_silver_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_tin_ore.json -e64d67fe3876939a73c3c5776979d204cabbda20 assets/cosmere/models/item/raw_zinc_ore.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/ruby_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/ruby_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/ruby_mark.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/sapphire_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/sapphire_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/sapphire_mark.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/silver_block.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/silver_ingot.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/silver_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/silver_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/silver_ore_deepslate.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/smokestone_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/smokestone_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/smokestone_mark.json -564c5ac39e115821d073a4cf58b0937f673ff0c0 assets/cosmere/models/item/steel_blend.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/steel_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/steel_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/steel_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/steel_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/steel_nugget.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/steel_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/steel_spike.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/tin_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/tin_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/tin_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/tin_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/tin_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/tin_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/tin_ore_deepslate.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/tin_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/tin_spike.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/topaz_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/topaz_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/topaz_mark.json -a503e66f7bf5e2931eab954d102be9f32aa7191b assets/cosmere/models/item/zinc_block.json -c47bd16e2bcdc40ae090cc10098ea3ce36528e8c assets/cosmere/models/item/zinc_bracelet_metalmind.json -695cefddc4a8e95a59550e4c02160fc8cadf75ca assets/cosmere/models/item/zinc_ingot.json -10f9380cf2778b89c363a92139e9af0b91012529 assets/cosmere/models/item/zinc_necklace_metalmind.json -9380f4ba003c9edcd932e027c4abe4900ac23b20 assets/cosmere/models/item/zinc_nugget.json -b0505539f57c33b8c0275af4c13cebc88e1c80b1 assets/cosmere/models/item/zinc_ore.json -0a251aa318d595520ba150a1bb260ded881f6090 assets/cosmere/models/item/zinc_ore_deepslate.json -b4b59a71160a8130d6ed2b18ebb204cbf0eb4ef1 assets/cosmere/models/item/zinc_ring_metalmind.json -da494bda0bc3f4f79cb37789398ba09eafbb97a0 assets/cosmere/models/item/zinc_spike.json -320ae3200326d9f93bd75c78a87e006f5a512848 assets/cosmere/models/item/zircon_broam.json -8f16adf33bb50cc4f8134838e7ed2da73e0f632a assets/cosmere/models/item/zircon_chip.json -2fb7df21511e70098980d048b166b981a17fcbad assets/cosmere/models/item/zircon_mark.json -96c40fa6beeac6aa79a7f28854f4bbce81815df9 data/cosmere/advancements/allomancy/aluminum.json -bbff50103b8a060ea98c487514ed97a3a5273817 data/cosmere/advancements/allomancy/atium.json -f5317fefdf760645db525fcc47ce8fe1d8c8ca31 data/cosmere/advancements/allomancy/bendalloy.json -0d5a25d3f85fcadd1e130c4df78b001a5ef22543 data/cosmere/advancements/allomancy/brass.json -e1c39b8b9f910a627f6b4d576081822a4fa08a02 data/cosmere/advancements/allomancy/bronze.json -a1f195230e96396f0c9d22b063f6b10dde4f09cd data/cosmere/advancements/allomancy/cadmium.json -42ce229ba4663d96ec57655c9d646af6a03d3afe data/cosmere/advancements/allomancy/chromium.json -d1849f16b8304d2f5646273377c4bb1383882684 data/cosmere/advancements/allomancy/copper.json -3f9cbd894996f9132aca1cabdfd9db950cbe182f data/cosmere/advancements/allomancy/duralumin.json -4984b45057f8c5ecd9dd14692f749ad95c946675 data/cosmere/advancements/allomancy/electrum.json -0a1d3c920e4fcee881086af5d769a2c6649bba43 data/cosmere/advancements/allomancy/gold.json -2c1da72ce22823962ab5479a06e9058c00c969c4 data/cosmere/advancements/allomancy/iron.json -9cc2c4003e1b76c210cd655e8a204af2cd9e8a95 data/cosmere/advancements/allomancy/nicrosil.json -896f992b79f6c49be28ce181f927c3aa441cc9f3 data/cosmere/advancements/allomancy/pewter.json -8d4a40bce79e93646aa1423bddea220a1eadd0d8 data/cosmere/advancements/allomancy/root.json -d7d71d5dcf86b9cab0fe3a2d7fcbabb839d4c3bc data/cosmere/advancements/allomancy/steel.json -a00bc9ec54a115174500033b84109a8f57cc2843 data/cosmere/advancements/allomancy/tin.json -f4ec216c8f36a5f4a0996c2d0e0b92d04641d4c4 data/cosmere/advancements/allomancy/zinc.json -8f190aaec5a94b9e41ec27c475a8ddce1a56a641 data/cosmere/advancements/feruchemy/aluminum.json -514cea5dbf9e0749d1ad4eeb7e335914990e7f64 data/cosmere/advancements/feruchemy/atium.json -43423c8432012d4fa5b0c334335569b0dde64aab data/cosmere/advancements/feruchemy/bendalloy.json -7d65c352d68349183e449120ed4f0c3dab7e4c83 data/cosmere/advancements/feruchemy/brass.json -9e4a82c403d39b64081a3d207d4ec6484176ad73 data/cosmere/advancements/feruchemy/bronze.json -88d687cbfb6b2424f3a23a2d5ceed591536723cb data/cosmere/advancements/feruchemy/cadmium.json -ff9acb92472823e21436e501e7454f320e31e366 data/cosmere/advancements/feruchemy/chromium.json -a7daef83754ab27ec29c8dba451657715dabfd68 data/cosmere/advancements/feruchemy/copper.json -28528b13db9507ac9a23ffebc3a16aae2039ea54 data/cosmere/advancements/feruchemy/duralumin.json -865365b1dea6479ac4f0d98dd250739caf3cabc4 data/cosmere/advancements/feruchemy/electrum.json -e142e67778430e2ab15067fde73752e2d0787aa2 data/cosmere/advancements/feruchemy/gold.json -251ee557f0f19d0f0f5c6e38f466fbb17baf0196 data/cosmere/advancements/feruchemy/iron.json -d4544388bd07f793fbcf44462d28ad14af135ead data/cosmere/advancements/feruchemy/nicrosil.json -f9373501c72f4537326937ac026b28e4e33a690d data/cosmere/advancements/feruchemy/pewter.json -1d3369fef55ca2d61922ec753f616c490a7dc917 data/cosmere/advancements/feruchemy/root.json -a1464736fabec43b1738e739b3aaea3f923559b7 data/cosmere/advancements/feruchemy/steel.json -0a2228cd27ec01bdfd4f6de6baee50b8ed6a4ea8 data/cosmere/advancements/feruchemy/tin.json -71a61aad8bca1d1385bcbd26d65e1246dcdf8801 data/cosmere/advancements/feruchemy/zinc.json -adb9ca0a881ba9f6a60c1c3c185d71f44544cdb4 data/cosmere/advancements/hemalurgy/root.json -ab512e49bf64eb8c2e3b799eec207ae80ca0e223 data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json -8caa4c55f7de56c8f4a0c9552aa1976a1f9ef3c8 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json -6b9f11fdeeeadbcc31481a4d52a5c19a8ec1188c data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json -6352fcf6a885ee79a3f64a9a743b49456689c8a4 data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json -57e21ab697c01abe757a5cb0943cf3f4ad63f06b data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json -b8dcebeb0b2de266a6efd8f8867699f2751fec9d data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json -3131682fc1a35afef55c2e9343720ec06e5c7f4b data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json -0ab7df826b0479341e643de4014dafbee2171f7c data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json -9432344c517a7ea41afca47ac12ad8072dc6ea17 data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json -8fe40f53e25824ef3491ba0eab2df79871ca7edc data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json -5773123fea8352fa03eec9bc1430a0443fc6f224 data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json -1a0aa676dc9b26a236a037628157288dde8373fe data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json -db116e042eae254e0a83ada568028d438ade2b32 data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json -898f7d1be97861d04bc588cd35ecd8023f399884 data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json -aa49970716ee55b78755e54fcbb50531e592d216 data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json -f07012e606e5267f6cb4427414e6471a24b0a597 data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json -dfbb963058f7cfb1dd706d82fafa427a860cf37b data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json -e79e32108693c93dff53caff1be412bff7a268f9 data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json -fc0c5cebe021fb12da68f8069578aa64bb21e1b2 data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json -5a29cb4a4fa545bc42f1dc5a69723639760c1b2a data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json -5e5b67da702e9f3e45c4b7f58673a1f3720abb3e data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json -ff3ca6578bf8fabb04e73867e9c07099a4dbf244 data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json -e3d9cc0a78b746e7276828ce421cc42e513cf86a data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json -a308ab91def7c3c97e4b49a1afc660ecb0906a5e data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json -5ae5c58383d7818bdeaae21e08718e2ad1e65618 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json -a53c2e5a3f22554699d7ee2c4820415fec4db002 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json -92e6fc9be429352f8b6d9d3d3824502bb593eff1 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json -37082fa653105b32fdc2502abb83771593107087 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json -55fb27a3187b787442055164ed96792bbfbf95f1 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json -ce58e870afa308b87b13964ebad111bb540b46dd data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json -10f184e88e0a43c9a1fc691136727328767ea175 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json -498460970397bf9ad35d0f37b0d85bdb7d420a80 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json -57313f38a4cc5235f2e10f348e1e8c32f7f12e9c data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json -57d57086ae96ebab414fb3da3a6118a1770f8927 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json -bc16329497e31f3f9a8d418ef6cd496adce79fd8 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json -b07ecd64d27bfa7d98dea19e32a6771759f9411b data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json -278acf388fbb8defcc88abb3e456865342d2427a data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json -4b3c7c7c54c0e335edccf441fc878d1df35f4747 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json -746d1fcb063456f94cb97a2a28cb6a67b4d6258d data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json -d865e7347222c8973bf3b0cd2cdc1647090c678a data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json -7d9fd8365626564b292c175aab892a4622fc1e87 data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json -f4de88a5b5ce26f24a499e38491a21accb47e4ce data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json -42ece9108a5d9c8818f73f8860d51dcdfc8e7ea1 data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json -e677c51a78bcd3f261a6618e4b5db95c6a38e9c5 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json -294a9dcad65968491c6f7d638e8cdeae078ecd1d data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json -252cc9499a59787bf4d7b42bc4b766552aa5c556 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json -a62aec2e815bd82968c928a02dfff6dc1197a8e8 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json -2d98569a2174874ecf10353c427f7f3a1aff7b63 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json -a4ababb855c21c0c5142ed943db26e00fd8a6fc9 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json -5ffd646c468f3f4e2d7af9c1193f55fc1db2ab5f data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json -76345cd858b49b77ce39cf4c8fd2720748673cee data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json -15e0a16a95f2e8d98c05d5aeb3d0ab41182a0788 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json -b6407cc8f077f9805e30b706d36212fa44c3348f data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json -fe03508120fd0cb13ba59e083704f9f079ac03fe data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json -ad10da56e6e374063b332c2510eb19562ae7b784 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json -d90a2482e1cb99de9f37e33eaec1a30a4c54eecd data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json -5f3468b876ca944419b129c83c5a99b58954e726 data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json -1906fee419465631792847e292d6e6b4436cbe14 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json -c7dd1003af20b261dd7f64218501c009ab7f891f data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json -4e8e416484e6c30bbe310ce2cf98a3ace0f6e5b1 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json -825af8c776de957e0aebfdca699203da736bfdab data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json -3d90e136728d602c2f802557fceed7e31e41d292 data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json -00b075d82d4a7cedc6272c6c7e7e11e92d08c5dc data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json -f1ce5f01c530e399f4732117e1310624cede0cf0 data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json -828c8ae4a604418600ac1131bb3ccd5a20f4ec2b data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json -99a1921ca914e452ce1449688e5c5f1e9cc3c594 data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json -a6584554a4a66cd9029ae6fb3ebdc609a9f6ce4f data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json -0c02985419a57659948e7efee559cbadeebe9a7f data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json -4818e4fb6409e596e1176b5cd67e9ad11b541012 data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json -18e84e79750ec34ec476612b0b11af742292ccec data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json -583de5444bf10be0641371369a934bf02940a299 data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json -1112acd9bf0352a10861737e37e73cefae7ae5e6 data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json -4fc0e3b4491126308b77f5b9f7df99fcbc165b55 data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json -aeb38a1343d6d9d959e8990992b0ee80919f52e6 data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json -10657cb1ccdccbcbc4453eeecdbf80b067c455b7 data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json -773c490f401831c502e5bc8aec326cf53e8e881b data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json -fb30b27cdb96910be54c24f68afe8b05bde770ae data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json -c169dcbd6d99b4f799d9f4fe4e85d3e0932bf59b data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json -1b5cf3c5dc21160f07e18a053ef352ca5f08626e data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json -8f7f5d2a226da7d5685d9e01dd8e66b3811ad2b1 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json -d356f257dcae900845528db93c701e15b2396623 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json -dff4a8bc7727df0ee55ecedb3c24f6518fc6b93d data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json -30ba351bcd852bb65f2fc26417c0d9a33fcb66fc data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json -52e1a03a0e3e094762114feb8eddfbec6199b385 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json -3f7c516be68a14d57170dd8a11cce2ecd6143c7b data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json -47a9209ba0a6b9c7a4c17f2a41c081eb0748bfdb data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json -55ed3c56dc2d2bacd8c1fb1f0cab32247cc870dc data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json -7a844bd723ecd471e5d743af0cc2fc7db33849dc data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json -0b34a6dee5c22bfa10adfd2f76d00f02ff01efac data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json -90edf1da64ce400fe0948b93702d70e70baa0d7e data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json -7245ce5fac5d635c5ba4da954489a084de63536a data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json -1b67a1196be1a6687a68b20fefbfb203fe41c228 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json -00791acc91e0fb97b4df56c9df0f10a44bbd14ff data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json -5c7bde9d220013df692d9071b5685658df8ad914 data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json -14dc0b2989d1c4e57e472c49e3090c38cd39bd43 data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json -a258ff849a5a382739fd46d22d9b978cdfa73527 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json -d9c2f7bd8819a11f7fd0cf1b564267fcd2d6733a data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json -8b96aee092492f9e286a0ca874ee77de32da2268 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json -bfcebca9d6abdf86b7d02d806510ec40ff4973e2 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json -68d28634f8d3bbe0807c093978b75d2db8125852 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json -f0ff7f621ceba520bc0f8e688e1fb32a5e2997b5 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json -85110a1990240eaee9a25eed3ca3163a371e5d07 data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json -13558b45b7550fa4ee9ecbc154e948ff1908f78b data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json -213768b6cbf2ee13c492d138e04ac9f89ca6352d data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json -37ad0711e3a852ef51cdbf3b21ba2d522b22f66d data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json -a751764013ba0b2cb0af715b63d9429d7be3c2de data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json -006a6906a57b82450ff17bdf275bed4a7d4a8faf data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json -84390c1d9f4b79bc50b1bc766f544fe73e9ad6b2 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json -abcd5dfd970b8c7c0692bdd94c8ba597731c9a7e data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json -6be53fb641540189a6c5200a0390e37d057fa52b data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json -0d759206ad2c38f61db73d450fec0914ff7103e4 data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json -64ffdc60d4b74f42ca92fa5145969212bf4e8161 data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json -a7f1f7d1229d55c86ccdb3e699c8d24739a9620c data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json -a3e7b99b30aa6cb1742e7803c9b9d042b518e4d9 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json -5e9c660bec16103ec3b73dc67294636e7d55c8a3 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json -cf54743b85bfa183bb7a2a2c0a566fcfdc213905 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json -448a1cd1844a118af8aecb02f9ebb9d3dd1cb0e9 data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json -61aa5a2b15b2ccfae34987801d1c8e9bdb832198 data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json -288bbcbd1a7b91dacd8add31ee3929840944c638 data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json -3768414e838a9356dbcb5909df3864a52e8c17b9 data/cosmere/advancements/recipes/cosmere.items/metal_vial.json -833cda8cfc15ad61c66246c8775b0caa85219f92 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json -59f6265209536873dcb6b193464de61cc2ce8b70 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json -6d4341e3c5dd3cb6578d030bb2422de122be602b data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json -9ed0e437e79c595594b66c02ea3086c60b1c2a0c data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json -362865676310698d053cb8c5ef736ae69d020cc0 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json -35e2626c555ad498d40a7dab90131f1c4dd4592c data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json -e446a147cd629e7126a21ea2dcf746a2dfbe4fad data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json -5f35f0cf3e3391387f39036acc7e65c7ca017f9b data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json -c4f1702ab8d8735505a4469041b209404f563d51 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json -5ec56096adb1cda5fc9bd3c660051678d9990f86 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json -d28732fce43a94366350099f031f149b2506e3b6 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json -96f532e960f3c275398f416bab0c44ba3e6ad56d data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json -86cd0fb74ec78649bca436b42edbfeac01ecd5ad data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json -7049e0b81c2df2c3d33f3d33025f35651a28de72 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json -f8cd6679175b36c4d23c600171b6f40270593268 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json -099f2099bb692781efbf68ccfbd0cd150355dac8 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json -4e5c2b829f0c867234e2b97c6e2f25387f959f2f data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json -397d18457a6bd3616b09b1262e6c156d2d5922eb data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json -3ecb41cd86f63c0efe70277e7af035e06f275cba data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json -87b445c4d65319cf91c4fb1acb181afa9a13563a data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json -5e3c7f63f37adcb3c0edf4cf7aa6b8de38054489 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json -0d8b2361b83da1814ff255bc398691b1976b1a01 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json -b8a3509750e3f6df7e9b0e967dcee9151176b597 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json -1eee923a87189b33419ed27277f48796b178614f data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json -5bbcab5036b3c9533b48577da2f0837ca5c3cb03 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json -1075c96ddebfbfb03d1f8ecb857a519c3afe71fc data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json -47c292abad1f1e29444d9daf356147826f3aa7ff data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json -22e1af6e439e29e0e6d5c3012acfc9873ca775e2 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json -1bedb70af46cd4881e7229ed383bd3770e73c9a6 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json -3ef6828e5cdf771f02ebe36ce09368b4a5926eba data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json -7e668fac713e52759565d9f58f205963e9ee4d00 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json -0fc9bffd253d78d8d142ab0d3ade16e5c5a65a88 data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json -6197e9da9950e6ffded52a6699312bbba1999fb9 data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json -5d373abd71a4af578998e969304271654e63fd5f data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json -3a8f341fae3b491af2575b734970826d040adda1 data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json -1c4777a76cb2b403403428f09b9ab131931b6e99 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json -c31ea9b580319c13dbca7f2a2bb247e989811988 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json -68b76ca9ceac2fa84f9af67b55f0ea2a825b2463 data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json -a853338d650837102b5e9b4711f7e6e0234cabc1 data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json -b65c00eef685c935f0fdd464c59a185606b98dfd data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json -3c8661c6740e4cb19c21c05be2ff5b703cd94e40 data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json -27970b63d11ece52b87324d7d00b22c65e7e9091 data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json -2bf27bfaebb3ebad820f459c5c14d5dc91a93c41 data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json -fa2e45bfb6a3d231daf9af8c26fcb58d9e1768db data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json -114866c534009ef1d8109051d7b44683683f35d9 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json -3f81543c919f9f4bcb79e9042cbb4944921cf118 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json -1370796473bdd65c6469de67a3b275d0ca056f75 data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json -36b9ee417e8d5dda868843d419d47f6f4056cb67 data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json -291c43cbb941f2373870f2bd07f2c529d9fa181d data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json -0799691a5d0f6bf6414c121c710dc96f3dc659af data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json -28658fdf053e00bb6f3c5727eac1d5c3c5a358d9 data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json -6e0e33026a3166583fb5080693ee6d7e5dce968b data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json -8e32df416937a5bf18720f0df24b8532e79ccb22 data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json -a5dcd9798437107f95859ed65cfceec2477d2de6 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json -2ee8fc8ca90b3fc378fc40391aaef5b7bb82c4f3 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json -0920afc5991dd97ed5c1ad319dadce0bd83658b9 data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json -c4ec0f829a590dbec3d7c7716f40ca63da47d547 data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json -67e4cb9c7fd88c9b7592c44013dbbc1df609b735 data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json -597d3820e7f64a7d0722b9d2a4854602dfb9a52d data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json -47bffebd78fb17fd498571034cdaf55e77129b6b data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json -579855928114627c82bedc2067c5745af57b10e1 data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json -551651f36bd0940a6957da51bacb127475206e38 data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json -b0f7ec07dd0f6ac1fe88900a7e9bf1d22821c7a0 data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json -dadfabc13d0da9f2b157e5817de5c47db4801f48 data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json -0faf1189819f14bec5486e2e8d77ef3b0da9754c data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json -9d5b1b56b15e57e4693581e4ddd279d9d883c4f0 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json -0ed687db2b438df20c50559d2df12cf35cb56538 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json -13b96732a8225a434e24f3b4c3caae784ad5b5d8 data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json -1a6df026ae3f0f3149d20165a32817c6134a91d1 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json -928d50b788377a764a44f663de505bbbc7cd85d6 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json -a9bdc25368215de4a0c3f71df60acf71da586957 data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json -b9886a60fb57881ce084bc31b540b0bf9874ab12 data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json -cd600fb4c60196ce111de31b63e7ac295f27f66c data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json -37cf08f686cb92266552760cb39ef607976db303 data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json -e0a820e1c6cd7c805f69a73fa77cb6641337c3c1 data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json -545663fce48d3397a9f0505b1151b5b0585fe6fc data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json -e864e2b083c60228de9dd5525aae7dd352107de6 data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json -f8b8a7bac4c11ce8845467a10f9b66ffb7a7f80c data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json -3b81f440de9c04802297bb01202eb6012db17a78 data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json -36c4dc3ce4cccb0d2031d3f21c29e8dcb9792d7b data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json -4b9a6db3441505eb84d41f8da93ecbba779fe64a data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json -b614860a2bd3576a35c21a56309fc841498296af data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json -a94d7ff094de6e305a10c8446254522bea96313d data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json -a5f44030b58b3755ea1ab956dd60a61f52ee454b data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json -933b0bfedb7447a5e0a7c47235a8559fa3783dac data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json -0e07fb4b783527a1ed9a6a44a87e43f85f87aec9 data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json -f277c37e16a5c2f1db7a6cdf18b8a562bbab72ef data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json -422f7cbb5469f53ee0799ac07b5ab11b433725df data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json -0bebc1b414de68f0c2b476e74316b87a2dc22c5c data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json -43dfac1c5d23810e7094c5f1041bf1958677d90d data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json -935bbeb4de6a6be7b718b10c90de82109c20fc83 data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json -ba0d062556a308dbe7bf698114290cbf6f036d5a data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json -13611ba76ad7fba4cee53c2b9df559b418532e16 data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json -947031e54eea0f2bb6b852a88b7244cede795f78 data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json -281c69a3ab5f639a336b5ea987933cb3305113e1 data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json -a8921f36242a162e5d0e94bff0c632e20b531991 data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json -a60d00a7b0f01514f83986fdc66d2d0d58cd5e55 data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json -7af20519358128afc953b8aa41501c80030d0def data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json -bc6447b7fcdeea5ed8fae4d9873a6a2e68b445a6 data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json -eb8a729e9515cb8dbae80c9bfa2304d5a399432f data/cosmere/loot_tables/blocks/aluminum_block.json -0c71c46fe0955e21dfa431956ae2a8f048c7973a data/cosmere/loot_tables/blocks/aluminum_ore.json -3b5a0a9bb5e5979198c4a3594e1223d349b9926d data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json -6209f9ab87aacaea97d3f9949f59acc2aef8e9e4 data/cosmere/loot_tables/blocks/atium_block.json -eee9fafd4517c3682dae995db160656ddf8d86a1 data/cosmere/loot_tables/blocks/bendalloy_block.json -f8b7da30bf2b818f9239e5872d8ff52dce37fb63 data/cosmere/loot_tables/blocks/brass_block.json -739649c3b63fb2b87891f981332bc4787d6359ea data/cosmere/loot_tables/blocks/bronze_block.json -8ae6ac62a03b0693552c518cf14b2d5bf11e5477 data/cosmere/loot_tables/blocks/cadmium_block.json -4a88036e83b31a42ef4e82875be0f769f9c79b35 data/cosmere/loot_tables/blocks/cadmium_ore.json -76c8c0ba5f0ce09a5b8f1cad070add2d036b61cb data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json -61241232f52ab956738fa7d4037089ee11a58d31 data/cosmere/loot_tables/blocks/chromium_block.json -8225b07d89e76c16a903dea458454481036b0612 data/cosmere/loot_tables/blocks/chromium_ore.json -a44fc894459df12c4807e01576d53c9e8f6ffb29 data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json -396762d031f624c93cc270a768712b0c24e93abf data/cosmere/loot_tables/blocks/copper_block.json -30f4a97064050c40578170d17311417aba225918 data/cosmere/loot_tables/blocks/duralumin_block.json -0fe6b6b865cc6ab7e4727b5a6209060b8b8ef49b data/cosmere/loot_tables/blocks/electrum_block.json -74a65dc0c66774dc60574a65da14c3c8658da660 data/cosmere/loot_tables/blocks/gem_block.json -046e9038d040c0b5af44ce790587164126fcc8bb data/cosmere/loot_tables/blocks/harmonium_block.json -2f55face4a0a3b1f04d91c8595dbdc76ac6345eb data/cosmere/loot_tables/blocks/lead_block.json -ed1864315fa976eb4bc7964eeafb5824629a631d data/cosmere/loot_tables/blocks/lead_ore.json -f9d4c97fd4c939024843d4bbab0159dfad9495a2 data/cosmere/loot_tables/blocks/lead_ore_deepslate.json -d7f6690c052f57b14dafe09c11ccdbb30ae3d80c data/cosmere/loot_tables/blocks/lerasatium_block.json -a22907dde8c634e49d2da81931260230b844f2a1 data/cosmere/loot_tables/blocks/lerasium_block.json -93f3833d2717536bbb70ddd44d94dc0654fbb6d6 data/cosmere/loot_tables/blocks/malatium_block.json -f9b47d04b33935ec832030bbcf067e5d82325f3f data/cosmere/loot_tables/blocks/metalworking_table.json -216226af7378b43fca520ebd5fe2e36c6f354fec data/cosmere/loot_tables/blocks/nickel_block.json -b6134bc4f17e5486db0b97b68a51bfac6f4d49e6 data/cosmere/loot_tables/blocks/nickel_ore.json -d1342b9d90134eefa5b6ce0237527164561316b7 data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json -778ddb7f8b6cff957782e912b4a415631a82fbe1 data/cosmere/loot_tables/blocks/nicrosil_block.json -05b89d403b50ca7fc06999ca815d2b3380772a6a data/cosmere/loot_tables/blocks/pewter_block.json -10d3a0698ce2fad0c45c98b087826c46f3a953ed data/cosmere/loot_tables/blocks/silver_block.json -490a1faace581aab3d8a599146b1f216fc4f6d04 data/cosmere/loot_tables/blocks/silver_ore.json -190379f50e30f62141ca7c335897dcbcf23be1f1 data/cosmere/loot_tables/blocks/silver_ore_deepslate.json -690436ad2c3d626c970cc2d2d37385c41397ac77 data/cosmere/loot_tables/blocks/steel_block.json -a5ec22b45da91060e7e0e552d853b21c85b64759 data/cosmere/loot_tables/blocks/tin_block.json -fce8cb6a729d5be9268ffb478049fdc70de504b2 data/cosmere/loot_tables/blocks/tin_ore.json -72d47ec4ef7a560e75012121225ecee614284fe3 data/cosmere/loot_tables/blocks/tin_ore_deepslate.json -93d9441ed0218c63d7f39970762e664e3d39a754 data/cosmere/loot_tables/blocks/zinc_block.json -cefe179cd977a02ea0509418148726158976a815 data/cosmere/loot_tables/blocks/zinc_ore.json -344624ccff5d30da8bb1a30c932f384f656ca7f4 data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json -15e05cdf693b30c864942813ad4385beeaff1468 data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json -e860cb608a0be02ccdf76119bbe5043df64f14af data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json -4e70e0639abea89d041c957efb07ab7b2c443a47 data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json -95b74f93137dd1a5c30348f45492aa1e377a049b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json -620929e82a8f8a05bec2f4fe50d8ac8d42befb5c data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json -33a47a1b885f7775f674166c43ff83c8ded7d75b data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json -c6ccf54441d2867fefa95d0efcf147cf25592752 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json -b10d5f393b964f8ac1a251f21ab3a178ff156c91 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json -d4d5dfea5237f4c6cb0d49b699898624b1df1ef6 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json -ce908ef3b0adb60e8c8a0f6e0ed28c2d953e7fe8 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json -adda9c5f37889a807893b89ee684578808d93d01 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json -473f26187e3b8fc136da03e516a3a3eebcd2b8bd data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json -705105e2e1f26fcdc2e9a423c9d4fcd6c496ebbc data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json -e12c5fdd03d8f225a6532122b3dba087d96f48fe data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json -f4a518d999ddaabd1d4e983d450f097a4b95dbc8 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json -d8f6d274475202875a56bb6fb4db99796dfdd9ad data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json -48c102b0677572dbeb015cc847b23aa1f55efc29 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json -3c5ad858fab63fe0905e87c867ad0d4fd5674818 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json -45bd472f0bb1b97e693accaa13f8dd170b906881 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json -33842cca3a971ea5a8cbda783e711a03f3c960d5 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json -3bc3fc12664c4cb26478599f4de4a38f1d140389 data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json -7876af9c7402b00e12279ff158beef06bc6cecb4 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json -b2e1061255022d49a7584e489b3a081a1da3a504 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json -36b802651e32bca64d2f51c8fedb9e216754ea9a data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json -7bf8121e708c9e63831bbc0b070aa14952d987db data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json -272216802dfb12a93242f17c792642e55a7a8875 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json -9de66d2a5ba4b67869ab925f7f5a7a41db0eb285 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json -150b5ea5595e1e9382fe47b0659a1d42a4137864 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json -a1897e1b3f4a5a8dcd069289b215c0adb0b6400e data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json -0cbaffb065edf175cec575763986d46887954176 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json -697d4e7048e450f2d9231ab74cea57e6a0f4258b data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json -1f35a8de393754f59e6ad67281e6a190ec139ff0 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json -d23ea38b44c6277c44ed3a5e8cf3509e8c289a4f data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json -958bf71aba60245d8da862a3171b80fbe91e4a2e data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json -84f9d275d42f5dea43b7c1194e96bcd7a733fcdd data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json -47c1da32bac5ad148242e4fa98d469f7c4906431 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json -d628ebcf2b9f44ca3d6675d901d0874db1ff3258 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json -45444ceccd52bca9e3daf6ae324af3288d10ca40 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json -c0d2dcf65ed29fa6d6883e3075c81b80cad8b648 data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json -0dfeccf0b0cc13853440de939ced4dc0a47d9b98 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json -db5dc60249a6a00668221f5f6c2f2135e1195046 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json -d4017a1d11fef9b1faac1158ee3413530a54f863 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json -ab5238b5279b880f98ba2d91f2d77c8196c01c1b data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json -cd531bf2257739b2a16e893137d806101cc89a5e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json -a1ad5ed3aa2f1b6abb3c5efe187b2556e3554bac data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json -735ddcb92d879c43c6bb4cf4cfb551da2c5dab00 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json -746e11338acb46e4af1945ea5662a534f8f2db57 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json -af160c124a36d64af58beb1d80ce09a79e705034 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json -72505f6620e804b02befadd05c5b9032c102d4af data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json -12e34f9a7c56ddc7434cdb62cc6a6c88859c32f2 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json -0d54f9e5f284724320dfc5a6e059ba2b86dc30ba data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json -4e1c3d6a8c885dfcf6ec06250ef2f510fcbeea8e data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json -9d505c4ee5fe79408d52e9b577fb2d0b14ee7032 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json -34c6b0eb6f8d9faa45e035d70777f4d88b8cb652 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json -a0003efb41b96c2d46ae9faf5b181589504df137 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json -7a6f5c61dddb8ee2338f341800506a6c0d194220 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json -8b3d7e7a338c9639d342794e1e4096c369a3108b data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json -53906a627ab93ae9bb3796844a9fca5b7a7f795f data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json -4b438d40309cdfc4ea83b903f38719e9322519e2 data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json -dc61a3e81ab1124cab2a9b211ba2cc97593c44a8 data/cosmere/recipes/alloying/blend/bendalloy.json -a431820155ce3767ebcadbb8ebbb39d3e2f78ef5 data/cosmere/recipes/alloying/blend/brass.json -de3927c12acfd3a0d4e6ad0cd0c5d192d41d889c data/cosmere/recipes/alloying/blend/bronze.json -c389cca8ae03978be0ff6304aad32c78385380d5 data/cosmere/recipes/alloying/blend/duralumin.json -d2fb8aec14129cf38f0fdc65da96b39da2141d8e data/cosmere/recipes/alloying/blend/electrum.json -83f2ac06d4c87ba938d173814cdc0ddbdd5a8154 data/cosmere/recipes/alloying/blend/nicrosil.json -d1572e113e37ea7c70ca95a4c46a58d69fc48965 data/cosmere/recipes/alloying/blend/pewter.json -89d949e41d124d28b55485de4dba3aa17f3f8c7a data/cosmere/recipes/alloying/blend/steel.json -0ef450c28fae11c06e23607e74106975c6a7b9a0 data/cosmere/recipes/aluminum_block.json -506ed252c05dfb3f5a8abf4097c561bb59bba36f data/cosmere/recipes/aluminum_bracelet_metalmind.json -6121ad14fcba5701f2a7c333f226960e84520e6d data/cosmere/recipes/aluminum_ingot.json -f3bfe73753b9f5d6998799369c49d65e9acd5be4 data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json -be00eb698167172a2e742178b13070b1004f9aec data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json -2132a921ba638483e17843346337ff809134523e data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json -754efaff7b6f6cd1841142152843c975f7710056 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json -3a86d74e8510fcea791e5569e77dd60684d664cc data/cosmere/recipes/aluminum_necklace_metalmind.json -138b215cec5b9290c80c4383e0b0da73b3269d17 data/cosmere/recipes/aluminum_ring_metalmind.json -51115e3d9dd0b28b7f39d042512731113e316033 data/cosmere/recipes/aluminum_spike.json -49dd97cddbc1619421e12a2cab9a8d98f9303390 data/cosmere/recipes/atium_block.json -aa47f518bed610096ca6e1dc89610435dbc3c650 data/cosmere/recipes/atium_bracelet_metalmind.json -11185be68cc8a7f32de6dd505386437b6de4022f data/cosmere/recipes/atium_ingot.json -dbcc26423850b986ff3d5b45c6e61b3f00bc09f8 data/cosmere/recipes/atium_necklace_metalmind.json -4b1afa09eb20cb25c011df205b78a36aa55a6ff1 data/cosmere/recipes/atium_ring_metalmind.json -4df3b639ddef2d9457ecae3e79cccf1b08430804 data/cosmere/recipes/atium_spike.json -0f5a891010d2e0d2ad941a55594aa0773fc04308 data/cosmere/recipes/bendalloy_block.json -22be0cccb52ac7d9cb65c1b2f1971d73a4780e58 data/cosmere/recipes/bendalloy_bracelet_metalmind.json -c617841f10dc75eff565b48d112f3a5345b59f7f data/cosmere/recipes/bendalloy_ingot.json -1b3e05290b63dbaf90d8705b1d35a407aeee9c43 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json -2fd345d0cb812e85762199bd5b2330dab6d0aa79 data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json -7f57ca98369b896f27a458d035c0b9ae2d5b80aa data/cosmere/recipes/bendalloy_necklace_metalmind.json -ba2403077f121357f06b467b4f5784a853973e84 data/cosmere/recipes/bendalloy_ring_metalmind.json -c6542411b96f527f3b3054a7bf5afa58c07a5a4f data/cosmere/recipes/bendalloy_spike.json -9bf8af83995c10458e0f0e727818fd92117fbbe3 data/cosmere/recipes/brass_block.json -90c184ec1325c8cf4eab21475c7d6326970996b2 data/cosmere/recipes/brass_bracelet_metalmind.json -82699b618032a685647fa590e95b862ce3a042b8 data/cosmere/recipes/brass_ingot.json -b0ec3895cfa2acafb042f7f12766a86cda6feec7 data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json -de8a0756d6b37d912ed661665d00e5f679b9d205 data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json -8346231ea537b83e6db57c2861cfdc5328457451 data/cosmere/recipes/brass_necklace_metalmind.json -18f70cd8a6acdf865b7a854bd3b5a181a6cb3980 data/cosmere/recipes/brass_ring_metalmind.json -56fb6837f9635e2df46b355f6fac881fa566a36c data/cosmere/recipes/brass_spike.json -60e029f07a6f84ddb7412ebad965ba0a5d93ad82 data/cosmere/recipes/bronze_block.json -e67153a6b09b51b49596049e065904d0ada68cdf data/cosmere/recipes/bronze_bracelet_metalmind.json -88aeeace1efc145a24dc929aced92e0cfeefa425 data/cosmere/recipes/bronze_ingot.json -6c9af39e46f51635ba244b0533070425e303d8b7 data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json -b26a432587d5ca8c1eadd05ac7f76b2664cd0dd7 data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json -3d8279f909ca1fec7f95b642acdeba6a93b4fe60 data/cosmere/recipes/bronze_necklace_metalmind.json -78f73c622247c0189a5ce48de715ae300ccac2dc data/cosmere/recipes/bronze_ring_metalmind.json -efc59133c836b8d6e8275fdcbbdac42ae041fa4c data/cosmere/recipes/bronze_spike.json -ef46a7076937d0918dc583ea272305154acbed64 data/cosmere/recipes/cadmium_block.json -93fc12b05ce1cd649c49ef006d56bc42b87e1f5f data/cosmere/recipes/cadmium_bracelet_metalmind.json -67f749a1056518de5fcf635fc9a1fcea6e457b36 data/cosmere/recipes/cadmium_ingot.json -8cd625b36205e09f865fe41aca1a7e535374a5a6 data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json -e810ac3f78cabf49031645e43ae5231e7ca2020c data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json -6ef73f1a7ee6ca4f511c3392d848d0274e95979b data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json -82ebd79b178e9fbc05ad7df20c2163e6ffa7f2ea data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json -c6b927d3ee8193f27e2b34a095e0d58aaad27cdb data/cosmere/recipes/cadmium_necklace_metalmind.json -1f49da0ddcba9feedaf0ef8519f45b397aa1165f data/cosmere/recipes/cadmium_ring_metalmind.json -7350b0adc4e3c504fc982519ea130e15e5991a71 data/cosmere/recipes/cadmium_spike.json -92f1920a4776a16b9fcd37a014b25471c048c3e7 data/cosmere/recipes/chromium_block.json -084aec2261c6609879e48fb8f26f92be2a8a9ee9 data/cosmere/recipes/chromium_bracelet_metalmind.json -4d1657dec440ba525cf5a36ea39d446378770ad6 data/cosmere/recipes/chromium_ingot.json -252aa0dac63c71da2504432129a3d6dad8a51f82 data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json -9675e1a6108d0faf6f4611066d394df4f5472b8c data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json -b4a34dd8e63e4abf15832ef75979b196c35c3a8f data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json -3403bc47f964005763bd3487f05c1a1dd41f6b4e data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json -0c986fe8027aff177f4bfb0ac4536963407aebb2 data/cosmere/recipes/chromium_necklace_metalmind.json -b0ebcfa3257d09d0fb98eb1fea7d314cb5e6dedb data/cosmere/recipes/chromium_ring_metalmind.json -c839be2e9e58afcf5efe917f46203fc021f5066b data/cosmere/recipes/chromium_spike.json -694bf613ed645355c588a10377c6e828567bdc85 data/cosmere/recipes/coin_pouch.json -4ef66d6416a73b836aec8febc167a7e2cc26fcf0 data/cosmere/recipes/conversions/aluminum_block_deconstruct.json -6985224580e7e397afe4f27ef235ae4ff8cee8e1 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json -b0de1869585c65cf8f93d1219142f8ddd1d78200 data/cosmere/recipes/conversions/atium_block_deconstruct.json -6ed0b289040e37722745187a8a299c8e5012d108 data/cosmere/recipes/conversions/atium_item_deconstruct.json -484e09e8623544e3cd883bf6556bfba910939952 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json -d602d7edac59e9ec2690ce1893c7c3c5338e9c36 data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json -d4086b819842a0730bb19d4627ceabce3aa5be39 data/cosmere/recipes/conversions/brass_block_deconstruct.json -fbce5ad475886e3b4d47c27ae032c228d4ac1c33 data/cosmere/recipes/conversions/brass_item_deconstruct.json -545e583ac636d9f2655caa16cc89d0da9f44f2b9 data/cosmere/recipes/conversions/bronze_block_deconstruct.json -99e04bcaf24b2e568fc47d9cb0583e31801d47e4 data/cosmere/recipes/conversions/bronze_item_deconstruct.json -4e4943745137aa98b59cc8531c4300d3ce51a3c0 data/cosmere/recipes/conversions/cadmium_block_deconstruct.json -67d6f697c5f2be80da3481ae8bda462ed24d1db3 data/cosmere/recipes/conversions/cadmium_item_deconstruct.json -92a9b29b35e7c4130cb38acaf152fbb210899d93 data/cosmere/recipes/conversions/chromium_block_deconstruct.json -f0d8f89389f8f6c643940b9679eeeb146a582de6 data/cosmere/recipes/conversions/chromium_item_deconstruct.json -0ea6379f720fbb20b1a973cc0affcf1b655feb27 data/cosmere/recipes/conversions/copper_block_deconstruct.json -9455595ae40eb04847eafaf73b7753cc4eea5c13 data/cosmere/recipes/conversions/copper_item_deconstruct.json -cdfeadfcc04a58e3aa76ff0c2be64da27eb04908 data/cosmere/recipes/conversions/duralumin_block_deconstruct.json -97c4bec12d653b40846856b1da2379db783be573 data/cosmere/recipes/conversions/duralumin_item_deconstruct.json -1b4f6f3500410bfad3038438ff70027ea1e6be62 data/cosmere/recipes/conversions/electrum_block_deconstruct.json -fb054e3492e8697b307cafbeda4231a7d5eca268 data/cosmere/recipes/conversions/electrum_item_deconstruct.json -849a430b0aa4d920b0e64666086e48af14e409ca data/cosmere/recipes/conversions/harmonium_block_deconstruct.json -1714a552b2f9f9efa6a1713d93dcd8ed0ea197bb data/cosmere/recipes/conversions/harmonium_item_deconstruct.json -8497010f6a42b4deaddb50519c8f0b412a773d96 data/cosmere/recipes/conversions/lead_block_deconstruct.json -cee84dd79033a2df90c091b5dbe534e3f1b053d9 data/cosmere/recipes/conversions/lead_item_deconstruct.json -aac90b6e151aba349742aa1d78b8c67178268a0f data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json -533539ca935e8e94c3d0ad8a503ab2f6d9b794c7 data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json -1bd7e0cb007a46551753e935dfa29a330c27e9ab data/cosmere/recipes/conversions/lerasium_block_deconstruct.json -cea5df01d889d0d9b0325717571af98a141fae39 data/cosmere/recipes/conversions/lerasium_item_deconstruct.json -5cfad0a7ce4e70692c29af20b8bf94480e399a78 data/cosmere/recipes/conversions/malatium_block_deconstruct.json -f270665cff41d2ac060ba30e5b30923f4c65ed92 data/cosmere/recipes/conversions/malatium_item_deconstruct.json -0db22ae186cff013b3fcff62cb1dbf3b707a2de4 data/cosmere/recipes/conversions/nickel_block_deconstruct.json -e0f79c8bdd67556b050060578144fef6e63cc356 data/cosmere/recipes/conversions/nickel_item_deconstruct.json -4557a7f641c9fd2d5c9cd075c306f4658cc315b1 data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json -bbbe1c4d64334e6d487d2e9c53bd59a1fd4e8ae3 data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json -320738bfa6ed301685509ff4d38c61881f0eac8a data/cosmere/recipes/conversions/pewter_block_deconstruct.json -87d8ebee028955f284a653d89de24e4868c4b600 data/cosmere/recipes/conversions/pewter_item_deconstruct.json -8eb8dee546f6e94bef902ea7632f54bfac6a4fca data/cosmere/recipes/conversions/silver_block_deconstruct.json -989b540c3816cfc47916d470009558d35fc84eaf data/cosmere/recipes/conversions/silver_item_deconstruct.json -3058ffbc1c9505997161fa593401c721ed327f12 data/cosmere/recipes/conversions/steel_block_deconstruct.json -c340a6967b06c13c39591e00f66fcf6fc83f22cd data/cosmere/recipes/conversions/steel_item_deconstruct.json -7d6c123cf0f7cc5e1b3fc9e0feeee5c0b9c61cfc data/cosmere/recipes/conversions/tin_block_deconstruct.json -76424cf07a60be5566c22b6d4a53e935686591e1 data/cosmere/recipes/conversions/tin_item_deconstruct.json -8c949d6d6463ed3089075530a6f880db2d0de30d data/cosmere/recipes/conversions/zinc_block_deconstruct.json -2d35c8f4e4cb3339744bdc53d02ecee172c54571 data/cosmere/recipes/conversions/zinc_item_deconstruct.json -db44dca11fa6ca65769adc50e14e6225b38cdb8e data/cosmere/recipes/copper_block.json -099a8ede1affebe67611cd5861d5728edc6ed467 data/cosmere/recipes/copper_bracelet_metalmind.json -f784fbb6a27286794b40b975a1a4fcb10c5885c9 data/cosmere/recipes/copper_ingot.json -2148db355285f3c5c75c412cdfbbf3aa49045986 data/cosmere/recipes/copper_necklace_metalmind.json -471ddafd08611bd63733294974c863273b1ff2b1 data/cosmere/recipes/copper_ring_metalmind.json -78ac5ff0d84062b8f26ec6da3a6a37e7392f9ec0 data/cosmere/recipes/copper_spike.json -dbd24fe40cf4dc7d85613cbaa8798e18184d74e0 data/cosmere/recipes/duralumin_block.json -65364f5f43fa6376eccda09df807c8a7e91fc14c data/cosmere/recipes/duralumin_bracelet_metalmind.json -1d281fa63a9250aa9ec4cd9178aa3c2d7a46a28a data/cosmere/recipes/duralumin_ingot.json -410cb109b0ca8225f2f63a9540c23bef2c9a1177 data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json -467f79f6c6bfc39b128a875040f5695e32bdd435 data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json -8cb274a1fe8844c5a05c81c551b4c232817af9ec data/cosmere/recipes/duralumin_necklace_metalmind.json -6f47a13e61da17937480bf516eeab6158fe3786f data/cosmere/recipes/duralumin_ring_metalmind.json -627e8ae286d9e7eacffdb477467069f28325c031 data/cosmere/recipes/duralumin_spike.json -06ccc61ca954781d90f1732d2efae411a42891ad data/cosmere/recipes/electrum_block.json -65f7c27630360ee9fbb1293fb25a6c8abddeb5b1 data/cosmere/recipes/electrum_bracelet_metalmind.json -1d225134e99f1ba1d55307274a2698730d5aa0bb data/cosmere/recipes/electrum_ingot.json -e8101b64538c95fa4570bfa614b0820ee60287e3 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json -4d302d78c042225e48013698fc031e32e91cbb25 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json -07256e66c53e3c57c223787462f76e0cb62c6e1a data/cosmere/recipes/electrum_necklace_metalmind.json -8b6ad6a4e34e53c8f00fc0ac082ecd0f2ad6266a data/cosmere/recipes/electrum_ring_metalmind.json -7e71c2de67db8c8e7911a1e64bb2f37f25e7c16a data/cosmere/recipes/electrum_spike.json -10ab2858592858a0bf8de5980795efad78860fca data/cosmere/recipes/gold_bracelet_metalmind.json -24c82e30b8e63e4298784a03802a6a4b3df44a77 data/cosmere/recipes/gold_necklace_metalmind.json -ccee24004af723466af30fba536ba4c5a39a465c data/cosmere/recipes/gold_ring_metalmind.json -5be8017a8ee301cab6b4d89bc27baee59d295416 data/cosmere/recipes/gold_spike.json -94c9a6e0f165ae28950d5b14f8a071efee6bd037 data/cosmere/recipes/guide_from_blasting_iron_spike.json -d299ec1f281d95d1d52aba0e788bbbf811f03191 data/cosmere/recipes/guide_from_smelting_iron_spike.json -25c90d0707fbd67eee203168189dd21952a1c5cf data/cosmere/recipes/harmonium_block.json -d6a1ffa255ea739cb958e1842127a51dba6819bd data/cosmere/recipes/harmonium_ingot.json -b1911459e088b811408604ab74c1ffa7fe491063 data/cosmere/recipes/iron_bracelet_metalmind.json -9792d4c3696337dfac6d006b0b32d50ec42b444a data/cosmere/recipes/iron_necklace_metalmind.json -5c9fccf34be586bbdcdff265da73da391ab55cf4 data/cosmere/recipes/iron_ring_metalmind.json -d6380c305bdac68e928acd91332802029db605f8 data/cosmere/recipes/iron_spike.json -0b366993c33a24e8be3037ef2f3808e21cab3726 data/cosmere/recipes/lead_block.json -8b776d63c3f466a9f159f5557144b7df76ee4332 data/cosmere/recipes/lead_ingot.json -f21e354195a4fe37e474e574db709be9079d45b4 data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json -e7bc46e414ebcf943fbd37e00960e5f4a0bdcf16 data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json -561455826f64c8463a70f9797f0b991eaa75e761 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json -c2445f24c5925d732921171fbfa66864c59a7f14 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -b8f3198b4be02f2e8f527a889b8fb8400f7bde94 data/cosmere/recipes/lerasatium_block.json -9c4f793d8b11d5325374c1b49c3d2faa6c956c70 data/cosmere/recipes/lerasatium_ingot.json -ffcc13204e3e2477da71551734c67663b198cbbb data/cosmere/recipes/lerasatium_spike.json -dd2ff61f372ff445523089553ac376a09c44b740 data/cosmere/recipes/lerasium_block.json -7410b8a0ad886ff31a5642e3be908a6b1deb1261 data/cosmere/recipes/lerasium_ingot.json -582a7216f09b94d088418c81af04a2e4aa72db7f data/cosmere/recipes/lerasium_spike.json -cb123ca5fd8f39e2c3fd8a2662244b8bcc330bb4 data/cosmere/recipes/malatium_block.json -c6c8c4d290b8624c11982ad2431c8bba7627afa3 data/cosmere/recipes/malatium_ingot.json -ae541ba7e9fffcaae3aa546904c0fad97360561a data/cosmere/recipes/metal_vial.json -1f0678d827315265f8bec6875f579784cc8f100d data/cosmere/recipes/metalworking_table.json -495d57488ff18f32c787b50726938b6138cb580a data/cosmere/recipes/nickel_block.json -cfafd2d5b45667269d2af355179e698438d688dd data/cosmere/recipes/nickel_ingot.json -2ac13b480bfa8d19745a6110e7dfbc517f6e2962 data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json -dde582b1906a8c3ff0d6aa1c45e92ced5be4aaba data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json -610fdb3aac9172a213ff415e99e01b5844541ba1 data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json -7a417a22399913313abc38cf709a5b81d9a5c4cb data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json -cb20ecd2c571a963d75950b760b9ca9c4acd173c data/cosmere/recipes/nicrosil_block.json -51f888a526c6fa99fe8d6ed9f9b5b9f99df26ea4 data/cosmere/recipes/nicrosil_bracelet_metalmind.json -3cbd76d125cac5293b91420fa132bd8544211df4 data/cosmere/recipes/nicrosil_ingot.json -bcabe7bea031ee5cc4744e175d79c849265b7b9b data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json -47c19d8e1f4ebf988f7f2a184f817a35301b8c7e data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json -9c4647ec78b2d46fe9f440f7171c16b051037435 data/cosmere/recipes/nicrosil_necklace_metalmind.json -3479dae0b2364b83ae1a16f1e47a2e58936e0f05 data/cosmere/recipes/nicrosil_ring_metalmind.json -8b799adcb55311c2766b1c52012f4abed71a64ea data/cosmere/recipes/nicrosil_spike.json -3d9fb73591ba87ccac3522dfb30ba42de9c11a04 data/cosmere/recipes/pewter_block.json -38bdbe71c999794d1ae6c0388130717e4c29fac3 data/cosmere/recipes/pewter_bracelet_metalmind.json -a98892969a36beb354d39f4f8ed2e18064b3f760 data/cosmere/recipes/pewter_ingot.json -003c5c7d10453d74487757ff0ea5a74122762c12 data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json -601e7e18de15913499f4e45bbc514b70e5069906 data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json -1993500cbbfe0e49752f4cef638975e3f3798ce9 data/cosmere/recipes/pewter_necklace_metalmind.json -ab8cfecb3d649c4427ce1c5921c3155d24c4433d data/cosmere/recipes/pewter_ring_metalmind.json -41ffc402339ba5fef17c297453848c85392dfc74 data/cosmere/recipes/pewter_spike.json -86656b59aeb6fbb5729743d2a2300dc211ecb860 data/cosmere/recipes/silver_block.json -670ae65731ea07ab24220bb5d79a1be19aa8d896 data/cosmere/recipes/silver_ingot.json -051a1226407d70d54e7a2c83fad87666cecb8726 data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json -f749d7dda0df96c16738a9bab32756dd68506333 data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json -6c32db3ca62d33e94110cf3f738771cbddba9861 data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json -e969c9b6fe1375859ca7bb8450edd411e5b1e660 data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json -f5d343e746297147639ed667959a3d4428412048 data/cosmere/recipes/steel_block.json -8b3b68a4fa277e937997ce0ec36596d867e9ff64 data/cosmere/recipes/steel_bracelet_metalmind.json -8b98d8f1805140713da9f15215c9aa847f492c07 data/cosmere/recipes/steel_ingot.json -9662fe13ef031b81bb06fd4747340d322914134e data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json -02c25f66f14de317103868a0a2f3b881e4dcf503 data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json -45c0073f967149912e440ec815ae8b3c2d82fe1a data/cosmere/recipes/steel_necklace_metalmind.json -3b397185e9387a50ea31c53465cb4d5b071a4dd3 data/cosmere/recipes/steel_ring_metalmind.json -cbaa502f91945e3a16c8e083ac31ea5edbad7046 data/cosmere/recipes/steel_spike.json -9a668edb8db14dff8d23bef24452242f27464f76 data/cosmere/recipes/tin_block.json -0a76cdd7416eeb092fa2f08549bd4b75073faffb data/cosmere/recipes/tin_bracelet_metalmind.json -e6d59c5dabb22fd25104e9ed1b592be10c08aff7 data/cosmere/recipes/tin_ingot.json -93cbe84fc62bf7f86c48184a088b3cf06a678cbb data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json -89eb682989fe47e9b945240c61e05241c05180ba data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json -0b165fcb472b68f317ad0ed5846486181b5e0b50 data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json -46b9bfd86b15331ef94692663983b06dfb6e6979 data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json -da9b1cecef9d64e1d3701e674f64a0a1fea43fbe data/cosmere/recipes/tin_necklace_metalmind.json -01293513d056c29b5fbcd268a8c2a34a661355fe data/cosmere/recipes/tin_ring_metalmind.json -cbc0ecec7c3bf3fac8cc3ea76e1555cf09021968 data/cosmere/recipes/tin_spike.json -f91e61a028810c908110cc319394e705c636ff91 data/cosmere/recipes/vial_mixing.json -140d4d017421de2be8a820d145f2176917fcf66d data/cosmere/recipes/zinc_block.json -05b03661d452571811faeb5fe734bfd5f645a9b5 data/cosmere/recipes/zinc_bracelet_metalmind.json -d453bb75c019f01dce3e5edcba3e63ddee3d3aef data/cosmere/recipes/zinc_ingot.json -48bce7a0a8032ae4f0cb293a1d83d9bc23c56f74 data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json -be0661d2dd2fb5b6bede37848e9461b6c1806a1d data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json -878c2ce641234bb37c2f5178f6f81416a336712c data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json -5f596bd1ec74174b4fca9ddd0149fa824fe24708 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json -ed6a87feb899ae5b200917e672ff0b2c6288a3a2 data/cosmere/recipes/zinc_necklace_metalmind.json -d352310114b79384c7e7a85db73f583994e21a39 data/cosmere/recipes/zinc_ring_metalmind.json -6fe02255d6c35f42bd3f9234b1c239022e995d8a data/cosmere/recipes/zinc_spike.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/cosmere/tags/items/spike.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/back.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/body.json -fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/bracelet.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/feet.json -fe9d36575476da541785b33d90bf7a6a58846fc6 data/curios/tags/items/hands.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/head.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/legs.json -71fba22e4872d99a897821df1e2fc5fef14794ec data/curios/tags/items/linchpin.json -a56651e1a439ed3471a2f66d479ce5d01335bfa0 data/curios/tags/items/necklace.json -a22fbd2ddafbaca357c69bc23bc044525ea05fc1 data/curios/tags/items/ring.json -64f864afd9ad5d67a1dd542a22bff6755f9ac0cf data/forge/tags/blocks/ores/aluminum.json -0149f3504fe4cc3ec5f3b0b0209e89902b63fd00 data/forge/tags/blocks/ores/cadmium.json -6a518a08ce802299308c4e9d41914ce661c4d47e data/forge/tags/blocks/ores/chromium.json -d6f3389650a44da204ccb3a178c501f5c6fc3596 data/forge/tags/blocks/ores/lead.json -df3d0142ac7337477d92c9d401bd9ebdad7c24c8 data/forge/tags/blocks/ores/nickel.json -c028339f8e117532e147f64089eb7137dab7ca06 data/forge/tags/blocks/ores/silver.json -2ce0dc95f999e969b6c97e5843beb5c949bf76f0 data/forge/tags/blocks/ores/tin.json -6be3a7a64d16704e882a648a18e6b99d0d304da7 data/forge/tags/blocks/ores/zinc.json -f963f2d004e93e755b9b88c212159e1999e442a9 data/forge/tags/blocks/storage_blocks.json -3d5ad66889ba2954ba4b68386cc07115f0bf68d1 data/forge/tags/blocks/storage_blocks/aluminum.json -96e63f4f07ad6d42e660685736c6a5c2b0ab10ad data/forge/tags/blocks/storage_blocks/atium.json -8089c719ff8e3087b61312aa93353796afc57bb7 data/forge/tags/blocks/storage_blocks/bendalloy.json -ef813b6a50eaf58d9139dd0c06301e3476c23d63 data/forge/tags/blocks/storage_blocks/brass.json -9133d3705a7fbe29c6601191bbe11c1add59842c data/forge/tags/blocks/storage_blocks/bronze.json -3f87488dac7510ec39f65c260c78fcf2ec829244 data/forge/tags/blocks/storage_blocks/cadmium.json -a79e8672364e8603c7c086d57a6025321af95734 data/forge/tags/blocks/storage_blocks/chromium.json -8dbc9fb6e36a500fd92fc81002da7d0ab0bbc127 data/forge/tags/blocks/storage_blocks/copper.json -3d325af60096937fef50c0015376621807ae256f data/forge/tags/blocks/storage_blocks/duralumin.json -57c051b1164b95f290922016bb0a5e52084b8021 data/forge/tags/blocks/storage_blocks/electrum.json -f4a2b5fe28dfe455d85dcb3eb723008d09e7b33e data/forge/tags/blocks/storage_blocks/harmonium.json -9d497f32f468ea3b88ff6ac465e37c97bbacb3c1 data/forge/tags/blocks/storage_blocks/lead.json -47a87fed041123f2c24e35e3a1e490afcb7b8b85 data/forge/tags/blocks/storage_blocks/lerasatium.json -cb26b1d53c744f1be5e94d4bbffb57eaa5d44055 data/forge/tags/blocks/storage_blocks/lerasium.json -db1aceb49a4b13da9f50c0d4a249c3577e53b633 data/forge/tags/blocks/storage_blocks/malatium.json -07213e9beeadc7a1d0b7bb2b46c976172d0d3ce6 data/forge/tags/blocks/storage_blocks/nickel.json -02b73e102f4c87ad6c5fdf424ef52b89185897c2 data/forge/tags/blocks/storage_blocks/nicrosil.json -c263527b3a980fa055242e5a14f9abb8d7b3669f data/forge/tags/blocks/storage_blocks/pewter.json -3fbf6e7c64e36bf8905dfbb2c6d2214e92892025 data/forge/tags/blocks/storage_blocks/silver.json -dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/blocks/storage_blocks/steel.json -2186f095063727aa76a726cb4f4203e9c01f0d53 data/forge/tags/blocks/storage_blocks/tin.json -ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/blocks/storage_blocks/zinc.json -519be0abe6d74794730327106eee397ce85a1f3f data/forge/tags/items/gems.json -45ccfabcb10301915017bc9d8695f793aeffc323 data/forge/tags/items/gems/amethyst.json -803890e40163bd394484bebe644749fc212bfb20 data/forge/tags/items/gems/diamond.json -11b922ea5aa85cdfd27eea32c7cd7cc43a9f2488 data/forge/tags/items/gems/emerald.json -c6f26a3b01aeff54ef9444220120ada3e578b51d data/forge/tags/items/gems/garnet.json -baa710aaccbbb721085615c8c0a84ab4435a0162 data/forge/tags/items/gems/heliodor.json -5ffa2226dd06d1f12c8690921f43ed1f6ccd178f data/forge/tags/items/gems/ruby.json -b0fa252e4fdf6e271c1619e25215be9df08bc1d9 data/forge/tags/items/gems/sapphire.json -1f933ade5a56949521e792a541934700eb5e3f35 data/forge/tags/items/gems/smokestone.json -ebecf5ffa0bdba4d423f804951158631740bf6f6 data/forge/tags/items/gems/topaz.json -8124d3e7323f748175090c8eca6dc05f68753add data/forge/tags/items/gems/zircon.json -923618653a5da1a3e7c61e5d4f870bb89e525d60 data/forge/tags/items/ingots.json -e1e14cdbd80f6a0fed198cbf570e0f55647ba5bc data/forge/tags/items/ingots/aluminum.json -955c5a6dda0e6ef7a1125f926cbeddcf34b637c2 data/forge/tags/items/ingots/atium.json -a9c2d028922915591dcf4e6af6833ef21f827a89 data/forge/tags/items/ingots/bendalloy.json -85d1b680920c204793035324dba108a0f22ec1a2 data/forge/tags/items/ingots/brass.json -bd61e0117a847dca76d0cddf0cf0fe644218bab6 data/forge/tags/items/ingots/bronze.json -ee39a52d8438b685c014ac5a418d3af02e8362cc data/forge/tags/items/ingots/cadmium.json -c58ed8aedd348ebc7b8735b4e240ba1ca7878ec1 data/forge/tags/items/ingots/chromium.json -83b3139347e9d031681ee95b86bc812d6d130022 data/forge/tags/items/ingots/copper.json -bf7c707dd0c1657784f2c0ca98df356a14a45a91 data/forge/tags/items/ingots/duralumin.json -7e922977520acdeb4bfa6bde73bbdcaa7f8a0d24 data/forge/tags/items/ingots/electrum.json -0c2cafa86b3722e2ee6b2799df25c9e7f4280c80 data/forge/tags/items/ingots/harmonium.json -cf4e47c6475a04d3ff32dde96a36bf01abb8c188 data/forge/tags/items/ingots/lead.json -00e9fd62be97a82e0bacf52367cbef968eb83db8 data/forge/tags/items/ingots/lerasatium.json -4f4b4b33171735a51711fd5de84185b8db0beaff data/forge/tags/items/ingots/lerasium.json -8c223b44738b4843d181618938ef3cf6ad95aae3 data/forge/tags/items/ingots/malatium.json -6d3c183f3d7e64f37548cd73e59748189806cfef data/forge/tags/items/ingots/nickel.json -42141799f6cd617cbd28c5d3c0b97636cc89cceb data/forge/tags/items/ingots/nicrosil.json -cdc20152426446c115e43c30f4cde8058da87508 data/forge/tags/items/ingots/pewter.json -2baccffebad52799de85dc9e11edb69fb2efcbb2 data/forge/tags/items/ingots/silver.json -fdae27ccb542afd72fc55eac4afd85aa7877ee05 data/forge/tags/items/ingots/steel.json -91ad6514a79c168d199f4ef881d1aa850a4f190d data/forge/tags/items/ingots/tin.json -c29268230199db02071e46f93ade8069f537b2f5 data/forge/tags/items/ingots/zinc.json -bfe9b6d421835d83e8d8ded2f7af8ff6611540b5 data/forge/tags/items/nuggets.json -9781d8396c057817bf1ca60de1c1d9379943f4c4 data/forge/tags/items/nuggets/aluminum.json -bbc1d3c0089641635715bc311e778a537f527d13 data/forge/tags/items/nuggets/atium.json -0eb4e884ef0c47b8946ee3bf119c5d0dcfa016ae data/forge/tags/items/nuggets/bendalloy.json -6426f283d83ef2545a5c1a5d1fba0ef18842f5dd data/forge/tags/items/nuggets/brass.json -7660cfdb0146ec57000c66cd83d51811de8f08c5 data/forge/tags/items/nuggets/bronze.json -082c70dc187c6f75d2b95f70be05d9e685d215e1 data/forge/tags/items/nuggets/cadmium.json -b313765b38b68ccdd0df8f152638146f259c1f5e data/forge/tags/items/nuggets/chromium.json -0daf0c138e9d2fafbf306e4ca66245b20b113468 data/forge/tags/items/nuggets/copper.json -837efb57da9f1c0f8216d7ac33540d66ec4db7be data/forge/tags/items/nuggets/duralumin.json -5bf05cbcb51412e55324a07484dd3867c2f4c292 data/forge/tags/items/nuggets/electrum.json -11218d2fde2fcb50e313d329cb1a2df84d21bb2b data/forge/tags/items/nuggets/harmonium.json -45169689ed5667abac00da9950cd20c8740a4335 data/forge/tags/items/nuggets/lead.json -8fcfbd9323c8cad44f7f8350340f2449c86ff6d5 data/forge/tags/items/nuggets/lerasatium.json -2b9d7605369b7d330ba280f45d5ab4c12ad6bdee data/forge/tags/items/nuggets/lerasium.json -f5120621a79bd56bec07c61d5ded67eea9997a76 data/forge/tags/items/nuggets/malatium.json -e3dd21fc4a2ef56289e102fa6a08e82e46027f3c data/forge/tags/items/nuggets/nickel.json -f59dee005861689e2d5335f475d39ca587725f28 data/forge/tags/items/nuggets/nicrosil.json -07920c7bdc1d09436ab27270613e6f580d1c744c data/forge/tags/items/nuggets/pewter.json -45423d42c45718866d512e7dbc57f15f2f125617 data/forge/tags/items/nuggets/silver.json -31726e301b6d1798698825f390dc46e2b2824947 data/forge/tags/items/nuggets/steel.json -26d4e2dded22cf2dec9f5d26c4e8851cc9d5a2a7 data/forge/tags/items/nuggets/tin.json -57ad2b990da7ef8ebcdf45451bcf3564f60bb2fa data/forge/tags/items/nuggets/zinc.json -979a79dbdb8a490e550ce19045335f2b87d97d54 data/forge/tags/items/raw_materials/aluminum.json -218a8f126d873e0271641b652331d08f6c707388 data/forge/tags/items/raw_materials/bendalloy.json -cee76efe589672fd718ee3c09342ce3b84c6cbbd data/forge/tags/items/raw_materials/brass.json -c4765f0747da1146d378568813a6022750baeab4 data/forge/tags/items/raw_materials/bronze.json -ff2b08cdd1bef52a34eeaf70906b923a75a1ba37 data/forge/tags/items/raw_materials/cadmium.json -fad25922761338ee51148b75c1f9b4a0f55c832b data/forge/tags/items/raw_materials/chromium.json -723ac5ad1792eea5a6c7d46b2c803b098302a8eb data/forge/tags/items/raw_materials/duralumin.json -050c4e42f992c2e14c6aa47574fe23ac39a37f8c data/forge/tags/items/raw_materials/electrum.json -5de0cc5f0733376a7fef274a2e60e391ea2aec1b data/forge/tags/items/raw_materials/lead.json -6034c0399eadf3bdc5f92ee5b27beee09796ab77 data/forge/tags/items/raw_materials/nickel.json -8adb3ddefba131dccc4a420b1659c40e77bca793 data/forge/tags/items/raw_materials/nicrosil.json -52d40975a6da5e22f502bc9fc002c10d576833cc data/forge/tags/items/raw_materials/pewter.json -5dd70e57464ffcad901d6084335b21b16b98458b data/forge/tags/items/raw_materials/silver.json -417762db9433c7a4340557013b440f6c01342f78 data/forge/tags/items/raw_materials/steel.json -bae99e6f06e5dec13233d0fc0a1116dd5b166c63 data/forge/tags/items/raw_materials/tin.json -d413d0dad40fc884762eda82b9f39a50cc0a3010 data/forge/tags/items/raw_materials/zinc.json -367e2363fc55412303425572a910c5b7e30e849d data/forge/tags/items/storage_blocks.json -3d5ad66889ba2954ba4b68386cc07115f0bf68d1 data/forge/tags/items/storage_blocks/aluminum.json -96e63f4f07ad6d42e660685736c6a5c2b0ab10ad data/forge/tags/items/storage_blocks/atium.json -8089c719ff8e3087b61312aa93353796afc57bb7 data/forge/tags/items/storage_blocks/bendalloy.json -ef813b6a50eaf58d9139dd0c06301e3476c23d63 data/forge/tags/items/storage_blocks/brass.json -9133d3705a7fbe29c6601191bbe11c1add59842c data/forge/tags/items/storage_blocks/bronze.json -3f87488dac7510ec39f65c260c78fcf2ec829244 data/forge/tags/items/storage_blocks/cadmium.json -a79e8672364e8603c7c086d57a6025321af95734 data/forge/tags/items/storage_blocks/chromium.json -8dbc9fb6e36a500fd92fc81002da7d0ab0bbc127 data/forge/tags/items/storage_blocks/copper.json -3d325af60096937fef50c0015376621807ae256f data/forge/tags/items/storage_blocks/duralumin.json -57c051b1164b95f290922016bb0a5e52084b8021 data/forge/tags/items/storage_blocks/electrum.json -f4a2b5fe28dfe455d85dcb3eb723008d09e7b33e data/forge/tags/items/storage_blocks/harmonium.json -9d497f32f468ea3b88ff6ac465e37c97bbacb3c1 data/forge/tags/items/storage_blocks/lead.json -47a87fed041123f2c24e35e3a1e490afcb7b8b85 data/forge/tags/items/storage_blocks/lerasatium.json -cb26b1d53c744f1be5e94d4bbffb57eaa5d44055 data/forge/tags/items/storage_blocks/lerasium.json -db1aceb49a4b13da9f50c0d4a249c3577e53b633 data/forge/tags/items/storage_blocks/malatium.json -07213e9beeadc7a1d0b7bb2b46c976172d0d3ce6 data/forge/tags/items/storage_blocks/nickel.json -02b73e102f4c87ad6c5fdf424ef52b89185897c2 data/forge/tags/items/storage_blocks/nicrosil.json -c263527b3a980fa055242e5a14f9abb8d7b3669f data/forge/tags/items/storage_blocks/pewter.json -3fbf6e7c64e36bf8905dfbb2c6d2214e92892025 data/forge/tags/items/storage_blocks/silver.json -dcbe0dd7a0ee71d3369df355128a650b44d03fd1 data/forge/tags/items/storage_blocks/steel.json -2186f095063727aa76a726cb4f4203e9c01f0d53 data/forge/tags/items/storage_blocks/tin.json -ae07d8a5dc1b927d44e31a4b974a18a1ff70b79b data/forge/tags/items/storage_blocks/zinc.json -e41ca9272ddd7549f0065c670b382c34c92d81bb data/minecraft/tags/blocks/beacon_base_blocks.json -8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/dragon_immune.json -4618f8470f32ec0298a79e361cf984bda2cf6b26 data/minecraft/tags/blocks/mineable/axe.json -e0833578e138951e4cdc57c013a4fa95b8d6c39c data/minecraft/tags/blocks/mineable/pickaxe.json -b8ae9405b2ede5a77424b927d0fc24a3f53be8fa data/minecraft/tags/blocks/needs_iron_tool.json -10d0b6dac23908b61ab208e5e0c1e001172efbb4 data/minecraft/tags/blocks/needs_stone_tool.json -8e54c7bc31ce3b75e637dee823f964ad5abc5596 data/minecraft/tags/blocks/wither_immune.json diff --git a/src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_aluminum_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/aluminum_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_aluminum_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_cadmium_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/cadmium_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_cadmium_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_chromium_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/chromium_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_chromium_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_lead_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/lead_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_lead_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_nickel_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/nickel_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_nickel_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_silver_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/silver_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_silver_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_tin_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/tin_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_tin_ore.json diff --git a/src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json b/src/main/generated/assets/cosmere/blockstates/deepslate_zinc_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/blockstates/zinc_ore_deepslate.json rename to src/main/generated/assets/cosmere/blockstates/deepslate_zinc_ore.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 96b962c6e..3d4724d0a 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -104,44 +104,44 @@ "argument.cosmere.power.invalid": "Invalid power", "block.cosmere.aluminum_block": "Aluminum Block", "block.cosmere.aluminum_ore": "Aluminum Ore", - "block.cosmere.aluminum_ore_deepslate": "Aluminum Ore Deepslate", "block.cosmere.atium_block": "Atium Block", "block.cosmere.bendalloy_block": "Bendalloy Block", "block.cosmere.brass_block": "Brass Block", "block.cosmere.bronze_block": "Bronze Block", "block.cosmere.cadmium_block": "Cadmium Block", "block.cosmere.cadmium_ore": "Cadmium Ore", - "block.cosmere.cadmium_ore_deepslate": "Cadmium Ore Deepslate", "block.cosmere.chromium_block": "Chromium Block", "block.cosmere.chromium_ore": "Chromium Ore", - "block.cosmere.chromium_ore_deepslate": "Chromium Ore Deepslate", "block.cosmere.copper_block": "Copper Block", + "block.cosmere.deepslate_aluminum_ore": "Deepslate Aluminum Ore", + "block.cosmere.deepslate_cadmium_ore": "Deepslate Cadmium Ore", + "block.cosmere.deepslate_chromium_ore": "Deepslate Chromium Ore", + "block.cosmere.deepslate_lead_ore": "Deepslate Lead Ore", + "block.cosmere.deepslate_nickel_ore": "Deepslate Nickel Ore", + "block.cosmere.deepslate_silver_ore": "Deepslate Silver Ore", + "block.cosmere.deepslate_tin_ore": "Deepslate Tin Ore", + "block.cosmere.deepslate_zinc_ore": "Deepslate Zinc Ore", "block.cosmere.duralumin_block": "Duralumin Block", "block.cosmere.electrum_block": "Electrum Block", "block.cosmere.gem_block": "Gem Block", "block.cosmere.harmonium_block": "Harmonium Block", "block.cosmere.lead_block": "Lead Block", "block.cosmere.lead_ore": "Lead Ore", - "block.cosmere.lead_ore_deepslate": "Lead Ore Deepslate", "block.cosmere.lerasatium_block": "Lerasatium Block", "block.cosmere.lerasium_block": "Lerasium Block", "block.cosmere.malatium_block": "Malatium Block", "block.cosmere.metalworking_table": "Metalworking Table", "block.cosmere.nickel_block": "Nickel Block", "block.cosmere.nickel_ore": "Nickel Ore", - "block.cosmere.nickel_ore_deepslate": "Nickel Ore Deepslate", "block.cosmere.nicrosil_block": "Nicrosil Block", "block.cosmere.pewter_block": "Pewter Block", "block.cosmere.silver_block": "Silver Block", "block.cosmere.silver_ore": "Silver Ore", - "block.cosmere.silver_ore_deepslate": "Silver Ore Deepslate", "block.cosmere.steel_block": "Steel Block", "block.cosmere.tin_block": "Tin Block", "block.cosmere.tin_ore": "Tin Ore", - "block.cosmere.tin_ore_deepslate": "Tin Ore Deepslate", "block.cosmere.zinc_block": "Zinc Block", "block.cosmere.zinc_ore": "Zinc Ore", - "block.cosmere.zinc_ore_deepslate": "Zinc Ore Deepslate", "command.cosmere.eyeheight.set.success": "Set eye height to %s", "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", @@ -153,7 +153,6 @@ "cosmere.brute": "Brute", "cosmere.coinshot": "Coinshot", "cosmere.connector": "Connector", - "cosmere.copper": "Copper", "cosmere.duralumin_gnat": "Duralumin Gnat", "cosmere.elderling": "Elderling", "cosmere.firesoul": "Firesoul", @@ -179,7 +178,6 @@ "cosmere.steelrunner": "Steelrunner", "cosmere.subsumer": "Subsumer", "cosmere.thug": "Thug", - "cosmere.tin": "Tin", "cosmere.tineye": "Tineye", "cosmere.trueself": "Trueself", "cosmere.windwhisperer": "Windwhisperer", @@ -681,7 +679,7 @@ "tooltip.cosmere.metals.contained": "Contained Metals:", "tooltip.cosmere.patchouli.not_installed": "Patchouli is not installed. Documentation is not available.", "tooltip.cosmere.power.found": "Hemalurgic Charge:", - "tooltip.item.info.control": "\u00A77Hold \u00A78[\u00A7eControl\u00A78]", - "tooltip.item.info.shift": "\u00A77Hold \u00A78[\u00A7eShift\u00A78]", - "tooltip.item.info.shift_control": "\u00A77Hold \u00A78[\u00A7eShift\u00A78] \u00A77and \u00A78[\u00A7eControl\u00A78]" + "tooltip.item.info.control": "§7Hold §8[§eControl§8]", + "tooltip.item.info.shift": "§7Hold §8[§eShift§8]", + "tooltip.item.info.shift_control": "§7Hold §8[§eShift§8] §7and §8[§eControl§8]" } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/block/metalworking_table.json b/src/main/generated/assets/cosmere/models/block/metalworking_table.json index 175592851..df0bd529b 100644 --- a/src/main/generated/assets/cosmere/models/block/metalworking_table.json +++ b/src/main/generated/assets/cosmere/models/block/metalworking_table.json @@ -1,12 +1,12 @@ { "parent": "minecraft:block/cube", "textures": { - "particle": "cosmere:block/metalworking_table_front", + "down": "cosmere:block/metalworking_table_bottom", + "east": "cosmere:block/metalworking_table_side", "north": "cosmere:block/metalworking_table_front", + "particle": "cosmere:block/metalworking_table_front", "south": "cosmere:block/metalworking_table_front", - "east": "cosmere:block/metalworking_table_side", - "west": "cosmere:block/metalworking_table_side", "up": "cosmere:block/metalworking_table_top", - "down": "cosmere:block/metalworking_table_bottom" + "west": "cosmere:block/metalworking_table_side" } } \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_aluminum_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/aluminum_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_aluminum_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_cadmium_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/cadmium_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_cadmium_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_chromium_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/chromium_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_chromium_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_lead_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/lead_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_lead_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_nickel_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/nickel_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_nickel_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_silver_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/silver_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_silver_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_tin_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/tin_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_tin_ore.json diff --git a/src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json b/src/main/generated/assets/cosmere/models/item/deepslate_zinc_ore.json similarity index 100% rename from src/main/generated/assets/cosmere/models/item/zinc_ore_deepslate.json rename to src/main/generated/assets/cosmere/models/item/deepslate_zinc_ore.json diff --git a/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json index 0a0230ae2..16ca604ad 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/aluminum.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:aluminum_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.aluminum.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.aluminum.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.aluminum.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:aluminum_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.aluminum.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/atium.json b/src/main/generated/data/cosmere/advancements/allomancy/atium.json index 4e7637994..6825cf601 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/atium.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/atium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:atium_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.atium.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.atium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.atium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:atium_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.atium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json index 1b2212f29..96d6c6476 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/bendalloy.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:bendalloy_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.bendalloy.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.bendalloy.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.bendalloy.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:bendalloy_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.bendalloy.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/brass.json b/src/main/generated/data/cosmere/advancements/allomancy/brass.json index b6c0b2c02..47ca55cda 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/brass.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/brass.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:brass_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.brass.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.brass.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.brass.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:brass_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.brass.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/bronze.json b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json index dbf7a4a9b..a8b18465f 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/bronze.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/bronze.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:bronze_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.bronze.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.bronze.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.bronze.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:bronze_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.bronze.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json index d8d962050..f30b992a8 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/cadmium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:cadmium_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.cadmium.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.cadmium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.cadmium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:cadmium_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.cadmium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/chromium.json b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json index bc7e5f409..5acde35e0 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/chromium.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/chromium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:chromium_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.chromium.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.chromium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.chromium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:chromium_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.chromium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/copper.json b/src/main/generated/data/cosmere/advancements/allomancy/copper.json index 6758775c8..2b1646b55 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/copper.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/copper.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:copper_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.copper.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.copper.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.copper.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:copper_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.copper.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json index 1f5d85376..e9e031634 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/duralumin.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:duralumin_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.duralumin.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.duralumin.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.duralumin.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:duralumin_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.duralumin.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/electrum.json b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json index ae8bf70fc..9e9c15984 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/electrum.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/electrum.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:electrum_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.electrum.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.electrum.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.electrum.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:electrum_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.electrum.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/gold.json b/src/main/generated/data/cosmere/advancements/allomancy/gold.json index 78b14cc57..30da3254c 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/gold.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/gold.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "minecraft:gold_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.gold.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.gold.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.gold.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "minecraft:gold_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.gold.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/iron.json b/src/main/generated/data/cosmere/advancements/allomancy/iron.json index 02860ff68..1c6843b5c 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/iron.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/iron.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "minecraft:iron_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.iron.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.iron.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.iron.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "minecraft:iron_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.iron.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json index e5b5fbaeb..903f956ec 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/nicrosil.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:nicrosil_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.nicrosil.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.nicrosil.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.nicrosil.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:nicrosil_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.nicrosil.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/pewter.json b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json index 8dd840de9..577680372 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/pewter.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/pewter.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:pewter_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.pewter.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.pewter.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.pewter.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:pewter_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.pewter.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/root.json b/src/main/generated/data/cosmere/advancements/allomancy/root.json index 285d5cf93..0818e126c 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/root.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/root.json @@ -1,24 +1,28 @@ { + "criteria": { + "tick": { + "conditions": { + "items": [ + null + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, "display": { - "icon": { - "item": "cosmere:metal_vial" - }, - "title": { - "translate": "advancements.cosmere.allomancy.title" - }, + "announce_to_chat": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", "description": { "translate": "advancements.cosmere.allomancy.description" }, "frame": "task", - "show_toast": false, - "announce_to_chat": false, "hidden": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" - }, - "criteria": { - "tick": { - "trigger": "minecraft:tick", - "conditions": {} + "icon": { + "item": "cosmere:metal_vial" + }, + "show_toast": false, + "title": { + "translate": "advancements.cosmere.allomancy.title" } }, "requirements": [ diff --git a/src/main/generated/data/cosmere/advancements/allomancy/steel.json b/src/main/generated/data/cosmere/advancements/allomancy/steel.json index 5fefb8e6f..9eb66b6c8 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/steel.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/steel.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:steel_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.steel.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.steel.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.steel.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:steel_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.steel.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/tin.json b/src/main/generated/data/cosmere/advancements/allomancy/tin.json index f5be30f29..7aea37b9b 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/tin.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/tin.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:tin_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.tin.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.tin.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.tin.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:tin_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.tin.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/allomancy/zinc.json b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json index 221f3aca2..0fed7e7b8 100644 --- a/src/main/generated/data/cosmere/advancements/allomancy/zinc.json +++ b/src/main/generated/data/cosmere/advancements/allomancy/zinc.json @@ -1,26 +1,7 @@ { "parent": "cosmere:allomancy/root", - "display": { - "icon": { - "item": "cosmere:zinc_nugget" - }, - "title": { - "translate": "advancements.cosmere.allomancy.zinc.title" - }, - "description": { - "translate": "advancements.cosmere.allomancy.zinc.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.allomancy.zinc.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:zinc_nugget" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.allomancy.zinc.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json index 1466bb4a8..02516f2e3 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/aluminum.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:aluminum_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.aluminum.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.aluminum.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.aluminum.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:aluminum_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.aluminum.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json index b0db9fa04..ed15e46fc 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/atium.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/atium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:atium_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.atium.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.atium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.atium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:atium_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.atium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json index f9724d131..47ab5be00 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bendalloy.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:bendalloy_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.bendalloy.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.bendalloy.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.bendalloy.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:bendalloy_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.bendalloy.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/brass.json b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json index e0377827b..17c278d0e 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/brass.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/brass.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:brass_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.brass.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.brass.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.brass.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:brass_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.brass.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json index 0ba06f688..67227edea 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/bronze.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:bronze_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.bronze.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.bronze.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.bronze.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:bronze_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.bronze.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json index d8b042515..06f468d5a 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/cadmium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:cadmium_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.cadmium.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.cadmium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.cadmium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:cadmium_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.cadmium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json index e6bba1336..f9026f4f7 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/chromium.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:chromium_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.chromium.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.chromium.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.chromium.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:chromium_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.chromium.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/copper.json b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json index 96eaf2c72..487d76045 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/copper.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/copper.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:copper_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.copper.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.copper.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.copper.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:copper_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.copper.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json index 761968ca6..d353a88e9 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/duralumin.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:duralumin_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.duralumin.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.duralumin.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.duralumin.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:duralumin_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.duralumin.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json index 143fb05f5..2679aa466 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/electrum.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:electrum_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.electrum.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.electrum.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.electrum.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:electrum_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.electrum.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/gold.json b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json index 64cb184ec..29c0a2d69 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/gold.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/gold.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:gold_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.gold.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.gold.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.gold.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:gold_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.gold.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/iron.json b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json index ee8a1e24d..3c5e44461 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/iron.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/iron.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:iron_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.iron.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.iron.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.iron.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:iron_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.iron.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json index a0563efb7..2b3ce6a21 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/nicrosil.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:nicrosil_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.nicrosil.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.nicrosil.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.nicrosil.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:nicrosil_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.nicrosil.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json index 7461fd420..d177916b9 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/pewter.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:pewter_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.pewter.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.pewter.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.pewter.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:pewter_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.pewter.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/root.json b/src/main/generated/data/cosmere/advancements/feruchemy/root.json index f0a4cdcf1..feff58c6a 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/root.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/root.json @@ -1,24 +1,28 @@ { + "criteria": { + "tick": { + "conditions": { + "items": [ + null + ] + }, + "trigger": "minecraft:inventory_changed" + } + }, "display": { - "icon": { - "item": "cosmere:iron_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.title" - }, + "announce_to_chat": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", "description": { "translate": "advancements.cosmere.feruchemy.description" }, "frame": "task", - "show_toast": false, - "announce_to_chat": false, "hidden": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" - }, - "criteria": { - "tick": { - "trigger": "minecraft:tick", - "conditions": {} + "icon": { + "item": "cosmere:iron_ring_metalmind" + }, + "show_toast": false, + "title": { + "translate": "advancements.cosmere.feruchemy.title" } }, "requirements": [ diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/steel.json b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json index 019963b93..a395539c7 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/steel.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/steel.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:steel_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.steel.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.steel.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.steel.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:steel_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.steel.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/tin.json b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json index 5b8c612b4..6ef1ea3c5 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/tin.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/tin.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:tin_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.tin.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.tin.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.tin.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:tin_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.tin.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json index fc6c2c476..41622629c 100644 --- a/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json +++ b/src/main/generated/data/cosmere/advancements/feruchemy/zinc.json @@ -1,26 +1,7 @@ { "parent": "cosmere:feruchemy/root", - "display": { - "icon": { - "item": "cosmere:zinc_ring_metalmind" - }, - "title": { - "translate": "advancements.cosmere.feruchemy.zinc.title" - }, - "description": { - "translate": "advancements.cosmere.feruchemy.zinc.description" - }, - "frame": "task", - "show_toast": true, - "announce_to_chat": true, - "hidden": false - }, - "rewards": { - "experience": 50 - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -29,12 +10,31 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": true, + "description": { + "translate": "advancements.cosmere.feruchemy.zinc.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:zinc_ring_metalmind" + }, + "show_toast": true, + "title": { + "translate": "advancements.cosmere.feruchemy.zinc.title" } }, "requirements": [ [ "has_item" ] - ] + ], + "rewards": { + "experience": 50 + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/hemalurgy/root.json b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json index 08233f4af..c2d628eec 100644 --- a/src/main/generated/data/cosmere/advancements/hemalurgy/root.json +++ b/src/main/generated/data/cosmere/advancements/hemalurgy/root.json @@ -1,30 +1,30 @@ { - "display": { - "icon": { - "item": "cosmere:iron_spike" - }, - "title": { - "translate": "advancements.cosmere.hemalurgy.title" - }, - "description": { - "translate": "advancements.cosmere.hemalurgy.description" - }, - "frame": "task", - "show_toast": false, - "announce_to_chat": false, - "hidden": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png" - }, "criteria": { "spike": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "cosmere:spike" } ] - } + }, + "trigger": "minecraft:inventory_changed" + } + }, + "display": { + "announce_to_chat": false, + "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", + "description": { + "translate": "advancements.cosmere.hemalurgy.description" + }, + "frame": "task", + "hidden": false, + "icon": { + "item": "cosmere:iron_spike" + }, + "show_toast": false, + "title": { + "translate": "advancements.cosmere.hemalurgy.title" } }, "requirements": [ diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json index b53a2d08c..f84ac807b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json index da05d347c..6cb6652db 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json index f30baac6a..897f4e62f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json index 13b83b63d..3db004e57 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json index 0f8384f38..21ec4f5a0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json index c348249c9..f6f090d11 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json index 07a2541f6..35811e598 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json index 5bb75d627..188316bda 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json index da5f421c2..ac274ec92 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json index b2f4b8807..a706e2051 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json index daec986af..18d1baee9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:harmonium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/harmonium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:harmonium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:harmonium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json index 7721f3dd5..075656c12 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/lead" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json index 1d16f7a13..d1d0c8015 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasatium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/lerasatium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasatium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json index a46989abf..e7bad7c6c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/lerasium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json index 9cf6776bd..1cf7df96c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:malatium_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/malatium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:malatium_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:malatium_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json index c077bd871..1d5562919 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:metalworking_table" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:metalworking_table" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:metalworking_table" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json index 7bcb759b8..c03def551 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nickel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json index e99279cd5..d207dabfa 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json index 34df36535..938592a20 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json index 2516d83c4..23fbf6df9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/silver" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json index e87540983..051668110 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json index 5359f6c24..9f525e885 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json index b80ae0e9e..c30c30cc2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_block" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_block" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_block" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json index ff76533e5..cc5a870e9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/bendalloy" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/bendalloy" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/bendalloy" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json index e0e066abb..417aae3e7 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/brass" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/brass" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/brass" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json index 4306637d4..cbbbad6e2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/bronze" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/bronze" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/bronze" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json index f2dc3c262..b47aae5ae 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/duralumin" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/duralumin" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/duralumin" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json index 93d830b7a..1e739ddd9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/electrum" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/electrum" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/electrum" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json index 16fb33061..27e780864 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/nicrosil" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/nicrosil" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/nicrosil" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json index 2f9bebc1e..8e86ecb50 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/pewter" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/pewter" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/pewter" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json index 5b926bfd8..688929fa0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/blend/steel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/blend/steel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/blend/steel" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json index 9527bf65e..32b8bd554 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json index b3336c064..6bd0d9885 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ingot_from_blasting_aluminum_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ingot_from_blasting_aluminum_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ingot_from_blasting_aluminum_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json index d5ebfcc0e..173c8dfae 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ingot_from_blasting_raw_aluminum_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ingot_from_blasting_raw_aluminum_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ingot_from_blasting_raw_aluminum_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json index b7bb0a38b..b80cb8654 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ingot_from_smelting_aluminum_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ingot_from_smelting_aluminum_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ingot_from_smelting_aluminum_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json index 555a96506..844a3e70a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ingot_from_smelting_raw_aluminum_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ingot_from_smelting_raw_aluminum_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ingot_from_smelting_raw_aluminum_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json index 20126fd64..c4ccf4f21 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json index 14f10845a..43bf40bbb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json index 55d5cb842..27a6ef5d8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_ingot_from_blasting_bendalloy_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_ingot_from_blasting_bendalloy_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_ingot_from_blasting_bendalloy_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json index 403b44e03..6355fea0f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_ingot_from_smelting_bendalloy_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_ingot_from_smelting_bendalloy_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_ingot_from_smelting_bendalloy_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json index 4152cdb66..aa8efa052 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json index f51346cf8..90fbf0505 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_ingot_from_blasting_brass_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_ingot_from_blasting_brass_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_ingot_from_blasting_brass_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json index 1df67da4f..81382874f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_ingot_from_smelting_brass_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_ingot_from_smelting_brass_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_ingot_from_smelting_brass_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json index e6f543c6b..62306bb04 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json index 8074c8902..15239b8d0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_ingot_from_blasting_bronze_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_ingot_from_blasting_bronze_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_ingot_from_blasting_bronze_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json index f13f9e27f..e3f4be4b2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_ingot_from_smelting_bronze_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_ingot_from_smelting_bronze_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_ingot_from_smelting_bronze_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json index ce7bebddd..36b6dc33a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json index 8d6b0cced..26a3111d5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ingot_from_blasting_cadmium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ingot_from_blasting_cadmium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ingot_from_blasting_cadmium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json index 1ee52c7ad..036fd9996 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ingot_from_blasting_raw_cadmium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ingot_from_blasting_raw_cadmium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ingot_from_blasting_raw_cadmium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json index 232f5d4d9..d35356468 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ingot_from_smelting_cadmium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ingot_from_smelting_cadmium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ingot_from_smelting_cadmium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json index eaa7e8b75..07a020e92 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ingot_from_smelting_raw_cadmium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ingot_from_smelting_raw_cadmium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ingot_from_smelting_raw_cadmium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json index f6b4c7f8b..0fae6635f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json index 53ef45a38..88b1ab595 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ingot_from_blasting_chromium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ingot_from_blasting_chromium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ingot_from_blasting_chromium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json index f46db3da9..c0d091a7f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ingot_from_blasting_raw_chromium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ingot_from_blasting_raw_chromium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ingot_from_blasting_raw_chromium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json index cc684f60b..014c7569a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ingot_from_smelting_chromium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ingot_from_smelting_chromium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ingot_from_smelting_chromium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json index 3c7f428d5..e78061492 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ingot_from_smelting_raw_chromium_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ingot_from_smelting_raw_chromium_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ingot_from_smelting_raw_chromium_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json index abfc93279..0cb9169cd 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/coin_pouch.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:coin_pouch" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:leather" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:coin_pouch" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:coin_pouch" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json index bbec9281a..467ff5759 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/aluminum_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/aluminum_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/aluminum_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json index 92d8d95ab..245da390d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/aluminum_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/aluminum_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/aluminum_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json index edb80c530..f3f4679b0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/atium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/atium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/atium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json index e75629966..e3cb28dfa 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/atium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/atium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/atium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json index 739124753..964f22ad5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/bendalloy_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/bendalloy_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/bendalloy_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json index 84a9ffc72..e5b7e04e5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/bendalloy_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/bendalloy_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/bendalloy_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json index 27783d46c..184dd9ca7 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/brass_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/brass_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/brass_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json index d2560822f..6fdfcda0f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/brass_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/brass_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/brass_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json index a7bf1669f..f5363c970 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/bronze_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/bronze_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/bronze_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json index ed5f81bbf..139ddd2ea 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/bronze_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/bronze_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/bronze_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json index c3e78bd41..9e27db19a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/cadmium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/cadmium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/cadmium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json index 40fb6bdb0..e55d4922f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/cadmium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/cadmium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/cadmium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json index ba2a145b7..171a9c41b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/chromium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/chromium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/chromium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json index 31cc6a261..c2b3a02bf 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/chromium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/chromium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/chromium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json index 94219a55b..b83d041e6 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/copper_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/copper_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/copper_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json index ca04c4f1f..8a003f73d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/copper_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/copper_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/copper_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json index b12f3ceb9..eb617944c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/duralumin_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/duralumin_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/duralumin_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json index 80d7b6977..02d78b25c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/duralumin_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/duralumin_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/duralumin_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json index de5eb241a..f15faeddb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/electrum_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/electrum_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/electrum_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json index f00e9c5b3..cebf9fdac 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/electrum_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/electrum_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/electrum_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json index e6095f7ec..ba774af7c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/harmonium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/harmonium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/harmonium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json index 8b436e0c1..2ad433dc6 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/harmonium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/harmonium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/harmonium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json index 2c6314386..7f44bbf9d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lead_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lead_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lead_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json index a5b4ea08c..1015ad617 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lead_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lead_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lead_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json index a0e85b7d3..21e8ab449 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lerasatium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lerasatium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasatium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json index c82aff179..741d88e54 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lerasatium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lerasatium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasatium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json index e31432d39..3cb0f0dde 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lerasium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lerasium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json index bc1c55ea5..97b649854 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/lerasium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/lerasium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json index 7d4a5ae18..a3de85564 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/malatium_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/malatium_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/malatium_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json index 31fa436d9..8e6b3b9b8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/malatium_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/malatium_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/malatium_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json index 593d41153..9eaab4df1 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/nickel_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/nickel_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/nickel_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json index a94082044..a0356e9a7 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/nickel_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/nickel_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/nickel_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json index 48e98ba1f..98e0c0dbd 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/nicrosil_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/nicrosil_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/nicrosil_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json index 7308f855d..4b2ed9c82 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/nicrosil_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/nicrosil_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/nicrosil_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json index ecbae4f19..5a972e7e4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/pewter_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/pewter_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/pewter_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json index 5712f0a30..481b22c66 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/pewter_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/pewter_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/pewter_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json index b6fb7cdce..01eb22ab4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/silver_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/silver_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/silver_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json index fba1f41de..7644fcaea 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/silver_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/silver_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/silver_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json index c03379b37..b03838512 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/steel_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/steel_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/steel_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json index bb93f55dc..336e736ea 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/steel_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/steel_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/steel_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json index c5a00b992..0345917ab 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/tin_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/tin_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/tin_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json index 6bc439506..aa5f56875 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/tin_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/tin_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/tin_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json index 34dd55031..e752fb4e2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/zinc_block_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/zinc_block_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/zinc_block_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json index 9c4ac12c3..57cd6a416 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:conversions/zinc_item_deconstruct" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:conversions/zinc_item_deconstruct" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/zinc_item_deconstruct" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json index aab2bbddc..100ae8a6f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json index 7190db198..277b6337b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json index 66cc67233..164f779b0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_ingot_from_blasting_duralumin_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_ingot_from_blasting_duralumin_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_ingot_from_blasting_duralumin_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json index a4fe58b44..56e320798 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_ingot_from_smelting_duralumin_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_ingot_from_smelting_duralumin_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_ingot_from_smelting_duralumin_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json index d5bf03e80..4b77249be 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json index 025091b2a..427af19cf 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_ingot_from_blasting_electrum_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_ingot_from_blasting_electrum_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_ingot_from_blasting_electrum_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json index dea84164c..e9699635e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_ingot_from_smelting_electrum_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_ingot_from_smelting_electrum_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_ingot_from_smelting_electrum_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json index 95225de9e..5c4844074 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:guide_from_blasting_iron_spike" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:guide_from_blasting_iron_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:guide_from_blasting_iron_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json index d526f70a9..444673d83 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:guide_from_smelting_iron_spike" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:guide_from_smelting_iron_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:guide_from_smelting_iron_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json index 7ab641a82..60c3a90e0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:harmonium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/harmonium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:harmonium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:harmonium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json index cbb488f72..21fb71aa9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/lead" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json index 5ed95a0f9..788138c28 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_ingot_from_blasting_lead_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_ingot_from_blasting_lead_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_ingot_from_blasting_lead_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json index 9de1beb28..d3b91b63a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_ingot_from_blasting_raw_lead_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_ingot_from_blasting_raw_lead_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_ingot_from_blasting_raw_lead_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json index cd56ac42b..efa5a5e9e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_ingot_from_smelting_lead_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_ingot_from_smelting_lead_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_ingot_from_smelting_lead_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json index 8fe36848a..215463dcd 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lead_ingot_from_smelting_raw_lead_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lead_ingot_from_smelting_raw_lead_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lead_ingot_from_smelting_raw_lead_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json index e56e1a39f..1db20c8ae 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasatium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/lerasatium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasatium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json index e674aef3d..2485cd2b6 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/lerasium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json index 288f7f1e2..f71e0e7ad 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:malatium_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/malatium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:malatium_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:malatium_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json index ebbd06841..e19f18a44 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/metal_vial.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:metal_vial" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:metal_vial" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:metal_vial" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json index 609c25ad2..01a0cf45a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/nickel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json index a199f3eec..c8990a75b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_ingot_from_blasting_nickel_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_ingot_from_blasting_nickel_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_ingot_from_blasting_nickel_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json index e15104852..aabf58ad0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_ingot_from_blasting_raw_nickel_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_ingot_from_blasting_raw_nickel_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_ingot_from_blasting_raw_nickel_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json index f70df73e5..392d88362 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_ingot_from_smelting_nickel_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_ingot_from_smelting_nickel_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_ingot_from_smelting_nickel_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json index 84bec0ba5..0443da92c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nickel_ingot_from_smelting_raw_nickel_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nickel_ingot_from_smelting_raw_nickel_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nickel_ingot_from_smelting_raw_nickel_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json index 9a400de2d..8c4c3d232 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json index 8139b4b5e..3ca1e94f2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_ingot_from_blasting_nicrosil_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_ingot_from_blasting_nicrosil_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_ingot_from_blasting_nicrosil_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json index 79ea5e02c..618cabba5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_ingot_from_smelting_nicrosil_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_ingot_from_smelting_nicrosil_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_ingot_from_smelting_nicrosil_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json index 7a1fc201d..c3ae01389 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json index 6f5627570..00d2abad4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_ingot_from_blasting_pewter_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_ingot_from_blasting_pewter_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_ingot_from_blasting_pewter_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json index 2fec21cad..bdcd13e19 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_ingot_from_smelting_pewter_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_ingot_from_smelting_pewter_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_ingot_from_smelting_pewter_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json index 2a6b63d09..b0727ce43 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/silver" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json index cd281acb9..d2f31eaa3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_ingot_from_blasting_raw_silver_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_ingot_from_blasting_raw_silver_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_ingot_from_blasting_raw_silver_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json index 4a6e8c862..0edfde715 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_ingot_from_blasting_silver_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_ingot_from_blasting_silver_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_ingot_from_blasting_silver_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json index 66563162b..c084f0456 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_ingot_from_smelting_raw_silver_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_ingot_from_smelting_raw_silver_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_ingot_from_smelting_raw_silver_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json index a33520a20..94fc57cf7 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:silver_ingot_from_smelting_silver_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:silver_ingot_from_smelting_silver_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:silver_ingot_from_smelting_silver_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json index 2b546cc22..a88487881 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json index 52225cdc2..e68c9352e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_ingot_from_blasting_steel_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_ingot_from_blasting_steel_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_ingot_from_blasting_steel_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json index fb650a05c..367471a1f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_ingot_from_smelting_steel_blend" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_ingot_from_smelting_steel_blend" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_ingot_from_smelting_steel_blend" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json index 46a33beaa..aebc68ff9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json index c8ae1ac66..bdb1f55da 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ingot_from_blasting_raw_tin_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ingot_from_blasting_raw_tin_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ingot_from_blasting_raw_tin_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json index 66a34f53c..54c346c2f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ingot_from_blasting_tin_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ingot_from_blasting_tin_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ingot_from_blasting_tin_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json index ec4ea126a..1eadcd6f5 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ingot_from_smelting_raw_tin_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ingot_from_smelting_raw_tin_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ingot_from_smelting_raw_tin_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json index 11d4cda61..e8b97d033 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ingot_from_smelting_tin_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ingot_from_smelting_tin_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ingot_from_smelting_tin_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json index 492348483..93e81172a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ingot" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:nuggets/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ingot" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ingot" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json index 2b578797c..a5216054b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ingot_from_blasting_raw_zinc_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ingot_from_blasting_raw_zinc_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ingot_from_blasting_raw_zinc_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json index 9770b7b9b..711d3801f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ingot_from_blasting_zinc_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ingot_from_blasting_zinc_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ingot_from_blasting_zinc_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json index 1ceb5d968..e006f02bd 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ingot_from_smelting_raw_zinc_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ingot_from_smelting_raw_zinc_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ingot_from_smelting_raw_zinc_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json index 60e326291..f17c2fb84 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ingot_from_smelting_zinc_ore" - ] - }, "criteria": { "has_ore": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ingot_from_smelting_zinc_ore" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_ore", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ingot_from_smelting_zinc_ore" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json index 511d036ab..1bef0cb6c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json index a7545c084..bb8e97343 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json index 09a1326f6..53eabd25d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/aluminum_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json index 861f44787..a5d324138 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json index ae5e84b42..b150676e3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json index a8b001f49..f1ca17078 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/atium_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json index 2bf99476d..e597c0e8a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json index 5b82e7aa3..0aef46beb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json index 3f7e4be1a..e92108165 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bendalloy_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json index de51ad138..b7241881f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json index acd69c630..3298d715b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json index e3007328c..ed2fafa55 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/brass_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json index 21c9c98d1..8fd5f8e1e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json index 084af9d4d..f6f845460 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json index 9c3b45f1a..c834286ac 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/bronze_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json index 0f37ac83f..4789bad60 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json index bcec5a59f..1d7b0fdc3 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json index b21c59988..58a151a3b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/cadmium_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json index 218a64fe5..e7b476d2c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json index 2aec2b69d..27fb24442 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json index 308fa495a..9b744949b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/chromium_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json index be6530f46..8cdab0dff 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json index 979e21480..8b5ef5b2f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json index 884910076..3e189812e 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/copper_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json index 0b67c28a3..e2f492ec9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json index d03533045..1065e1cd9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json index 325618880..7dece51fe 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/duralumin_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json index b81fff869..82c920981 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json index fadb04193..85218e104 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json index 7c159f9b4..59d52f237 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/electrum_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json index b76093b7c..2f718ba40 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:gold_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/gold" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:gold_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:gold_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json index e7786b93b..f3eb823fa 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:gold_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/gold" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:gold_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:gold_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json index 9fe9eb165..456ec5bdb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/gold_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:gold_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/gold" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:gold_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:gold_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json index 1f6bc152e..f592894c8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:iron_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/iron" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:iron_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:iron_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json index 99e21f31d..a13b94da0 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:iron_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/iron" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:iron_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:iron_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json index 0bb5c9af8..a75fcfcea 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/iron_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:iron_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/iron" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:iron_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:iron_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json index 2b3ecf30b..e7d18f698 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json index 020c6324e..f0839f128 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json index e0e1c3f49..aff7d8517 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/nicrosil_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json index cf5b5413b..060232410 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json index 1d7dd764c..d265e3940 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json index b829a7894..28924fea1 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/pewter_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json index 4bc828687..82a37672b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json index 3c49e7013..e39fc05aa 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json index fefef055c..e1c84db47 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/steel_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json index 7d95cc245..4a44c646a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json index 5672e9614..08feef665 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json index 8d854e7dd..92da6241b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/tin_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json index 029637c8a..9c52a2d05 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_bracelet_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_bracelet_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_bracelet_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_bracelet_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json index 30cc252fc..fb1f5539b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_necklace_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_necklace_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_necklace_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_necklace_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json index 9ce7e746a..16004fec6 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.metalminds/zinc_ring_metalmind.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_ring_metalmind" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_ring_metalmind" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_ring_metalmind" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json index 375b94feb..a08310e38 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/aluminum_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:aluminum_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/aluminum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:aluminum_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:aluminum_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json index 0775cfa5f..c3c5d980c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/atium_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:atium_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/atium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:atium_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json index ad21167c1..aa6bdc500 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bendalloy_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bendalloy_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bendalloy" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bendalloy_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bendalloy_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json index d3490ad46..f5a3a1ae8 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/brass_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:brass_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/brass" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:brass_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:brass_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json index 6ce0b0d39..9f4a6e3d1 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/bronze_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:bronze_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/bronze" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:bronze_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:bronze_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json index 154cb24a9..6a3e1f57b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/cadmium_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:cadmium_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/cadmium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:cadmium_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:cadmium_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json index c6b6a4095..b2afa5807 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/chromium_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:chromium_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/chromium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:chromium_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:chromium_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json index 187c4a7db..06bb5a488 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/copper_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:copper_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/copper" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:copper_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:copper_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json index 86dabce7b..7c3731643 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/duralumin_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:duralumin_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/duralumin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:duralumin_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:duralumin_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json index 8aae60fae..cf485b6b4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/electrum_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:electrum_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/electrum" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:electrum_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:electrum_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json index f2c004487..8e790fa50 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/gold_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:gold_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/gold" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:gold_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:gold_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json index 8391bcf0c..ccdd7026f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/iron_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:iron_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/iron" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:iron_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:iron_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json index 9be4d0f93..c87359469 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasatium_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasatium_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/lerasatium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasatium_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json index 8f6334484..85fa20eab 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/lerasium_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:lerasium_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/lerasium" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:lerasium_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json index 0d2857796..4bbef6609 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/nicrosil_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:nicrosil_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/nicrosil" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:nicrosil_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:nicrosil_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json index 82546c6e3..eb4a780e6 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/pewter_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:pewter_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/pewter" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:pewter_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:pewter_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json index 0c0e3c494..4b521921f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:steel_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/steel" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:steel_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:steel_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json index 74b7292c9..97ef65399 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:tin_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/tin" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:tin_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:tin_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json index a3b6a496d..b73b2c83c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json @@ -1,26 +1,21 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:zinc_spike" - ] - }, "criteria": { "has_material": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { "tag": "forge:ingots/zinc" } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:zinc_spike" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -28,5 +23,10 @@ "has_material", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:zinc_spike" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/aluminum_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/aluminum_ore.json new file mode 100644 index 000000000..0db8be331 --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/aluminum_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/cadmium_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/cadmium_ore.json new file mode 100644 index 000000000..fee609d6f --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/cadmium_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/chromium_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/chromium_ore.json new file mode 100644 index 000000000..d13ddd764 --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/chromium_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/lead_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/lead_ore.json new file mode 100644 index 000000000..e7c5f28d0 --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/lead_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/nickel_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/nickel_ore.json new file mode 100644 index 000000000..5dcc2d87a --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/nickel_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/silver_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/silver_ore.json new file mode 100644 index 000000000..f28db1903 --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/silver_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/tin_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/tin_ore.json new file mode 100644 index 000000000..3c42225aa --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/tin_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/forge/biome_modifier/zinc_ore.json b/src/main/generated/data/cosmere/forge/biome_modifier/zinc_ore.json new file mode 100644 index 000000000..5bd47d4c8 --- /dev/null +++ b/src/main/generated/data/cosmere/forge/biome_modifier/zinc_ore.json @@ -0,0 +1,58 @@ +{ + "type": "cosmere:feature_add", + "biomes": "#minecraft:is_overworld", + "features": { + "feature": { + "type": "minecraft:ore", + "config": { + "discard_chance_on_air_exposure": 0.0, + "size": 9, + "targets": [ + { + "state": { + "Name": "cosmere:zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } + }, + "placement": [ + { + "type": "minecraft:count", + "count": 10 + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "minecraft:trapezoid", + "max_inclusive": { + "absolute": 150 + }, + "min_inclusive": { + "absolute": -32 + } + } + }, + { + "type": "minecraft:biome" + } + ] + }, + "generation_stage": "UNDERGROUND_ORES" +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json index 6a1b4cbf1..dbea6e4a6 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:aluminum_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json index 57cbc7342..5616b1ed0 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json index cd8d8dc73..c9d20d4d3 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/atium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:atium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json index 673f37621..50f50ec67 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/bendalloy_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:bendalloy_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json index f62e976b4..7c2c059ed 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/brass_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:brass_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json index a9995dc32..40b269d72 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/bronze_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:bronze_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json index 51dbacae9..0ff3e7333 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:cadmium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json index 6f7d5d55f..aac739510 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json index 023a9e2cd..53a98118a 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:chromium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json index bad94d86c..64a908219 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json index 05675ca17..4ce483ed1 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/copper_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:copper_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json index 6aecc65db..4a8b0f919 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/aluminum_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:aluminum_ore_deepslate" + "name": "cosmere:deepslate_aluminum_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json index 7dc4aa019..d9401cee0 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/cadmium_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:cadmium_ore_deepslate" + "name": "cosmere:deepslate_cadmium_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json index 9433465dd..76515e61a 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/chromium_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:chromium_ore_deepslate" + "name": "cosmere:deepslate_chromium_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json index 90dbb8ba4..09e51f6dd 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:lead_ore_deepslate" + "name": "cosmere:deepslate_lead_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json index cbcc62a98..6716a0a4a 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:nickel_ore_deepslate" + "name": "cosmere:deepslate_nickel_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json index f5cf3ad60..b3400d8eb 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:silver_ore_deepslate" + "name": "cosmere:deepslate_silver_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json index 83dd1e3a4..6679851e6 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:tin_ore_deepslate" + "name": "cosmere:deepslate_tin_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json similarity index 85% rename from src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json rename to src/main/generated/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json index e8c09726a..fb9ed3dc4 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore_deepslate.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -25,15 +24,15 @@ } } ], - "name": "cosmere:zinc_ore_deepslate" + "name": "cosmere:deepslate_zinc_ore" }, { "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json index c575fb24b..0e9eff9bf 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/duralumin_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:duralumin_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json index 710f9796b..95c97837a 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/electrum_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:electrum_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json index 552278da6..873de5afc 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/gem_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:gem_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json index 2177bfdcd..cf051b3fe 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/harmonium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:harmonium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json index fce2fce5f..349fd1d09 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lead_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:lead_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json index 3d230f4b0..1158b9e64 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lead_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json index d0c20ff0b..e2b1aa51a 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lerasatium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:lerasatium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json index b26a693cd..b21257ef4 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/lerasium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:lerasium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json index c2fb49327..3851d8c4c 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/malatium_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:malatium_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json index 02c5d2701..8ec6a2e32 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/metalworking_table.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:metalworking_table" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json index 57ee4db2b..c49688eab 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:nickel_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json index 5d73e8e7b..be3b30b84 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nickel_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json index 4c386edc0..16d2f32b6 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/nicrosil_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:nicrosil_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json index 32fc5a012..0849f95da 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/pewter_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:pewter_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json index 73c819865..5323aa5c7 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/silver_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:silver_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json index ecbe84cee..e0c9d22d8 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/silver_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json index effddb129..8a2c2975e 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/steel_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:steel_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json index 8e5aec777..d433bad81 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/tin_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:tin_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json index b68536134..fa60dfaea 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/tin_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json index 72f24f1e7..8c5c2fcdb 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_block.json @@ -2,19 +2,19 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], "entries": [ { "type": "minecraft:item", "name": "cosmere:zinc_block" } ], - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ] + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json index f6d0daf78..0876de7ac 100644 --- a/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json +++ b/src/main/generated/data/cosmere/loot_tables/blocks/zinc_ore.json @@ -2,7 +2,6 @@ "type": "minecraft:block", "pools": [ { - "rolls": 1.0, "bonus_rolls": 0.0, "entries": [ { @@ -31,9 +30,9 @@ "type": "minecraft:item", "functions": [ { - "function": "minecraft:apply_bonus", "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops" + "formula": "minecraft:ore_drops", + "function": "minecraft:apply_bonus" }, { "function": "minecraft:explosion_decay" @@ -43,7 +42,8 @@ } ] } - ] + ], + "rolls": 1.0 } ] } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json index 39d29b900..06a61b201 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/allomancy.json @@ -1,7 +1,7 @@ { - "name": "Allomancy", - "description": "Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in far greater detail than it\u0027s older counterparts. The art requires consuming a piece of metal, then burning it for an effect.", + "description": "Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in far greater detail than it's older counterparts. The art requires consuming a piece of metal, then burning it for an effect.", "icon": "cosmere:pewter_nugget", - "sortnum": 1, - "secret": false + "name": "Allomancy", + "secret": false, + "sortnum": 1 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json index 881e40f3a..f80798792 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json @@ -1,7 +1,7 @@ { - "name": "Feruchemy", "description": "The art of equivalent exchange when it comes to the body. ", "icon": "cosmere:copper_bracelet_metalmind", - "sortnum": 2, - "secret": false + "name": "Feruchemy", + "secret": false, + "sortnum": 2 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json index 4deeeaab9..edbdfcff5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgy", "description": "The forbidden field of magic that takes from others so that you may get stronger.", "icon": "cosmere:atium_spike", - "sortnum": 3, - "secret": true + "name": "Hemalurgy", + "secret": true, + "sortnum": 3 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json index 587c67fa7..026d8b785 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json @@ -1,11 +1,11 @@ { - "name": "Allomancy Basics", "category": "cosmere:allomancy", "icon": "allomancy.icon", + "name": "Allomancy Basics", "pages": [ { "type": "text", - "text": "Here is where I shall explain Allomancy, a system of Investiture native to Scadrial. Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in much greater detail than it\u0027s two older counterparts. The art requires consuming a piece of metal, upon which time you can \"$(thing)Burn$()\" it. Those who are genetically gifted with a singular allomantic ability are generally referred to as a \"$(thing)Misting$()\". For someone who has access to all sixteen abilities, they are referred to as a \"$(thing)Mistborn$()\".", + "text": "Here is where I shall explain Allomancy, a system of Investiture native to Scadrial. Despite first documentation only occurring approximately one thousand years before the Catacendre, Allomancy has been explored in much greater detail than it's two older counterparts. The art requires consuming a piece of metal, upon which time you can \"$(thing)Burn$()\" it. Those who are genetically gifted with a singular allomantic ability are generally referred to as a \"$(thing)Misting$()\". For someone who has access to all sixteen abilities, they are referred to as a \"$(thing)Mistborn$()\".", "title": "Allomancy (For Dummies)" }, { @@ -15,7 +15,7 @@ } ], "priority": true, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json index 8738c0533..248d17f82 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Aluminum", "category": "cosmere:allomancy", "icon": "cosmere:aluminum_nugget", + "name": "Allomantic Aluminum", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 8 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json index 2b64e795d..b354201a5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Atium", "category": "cosmere:allomancy", "icon": "cosmere:atium_nugget", + "name": "Allomantic Atium", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 16 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json index ce74a5877..256bb29b8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Bendalloy", "category": "cosmere:allomancy", "icon": "cosmere:bendalloy_nugget", + "name": "Allomantic Bendalloy", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 13 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json index 97129e573..d4f241658 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Brass", "category": "cosmere:allomancy", "icon": "cosmere:brass_nugget", + "name": "Allomantic Brass", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 5 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json index 09488a9b1..5de69d7ff 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Bronze", "category": "cosmere:allomancy", "icon": "cosmere:bronze_nugget", + "name": "Allomantic Bronze", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 7 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json index 6924bc068..f9ee75ca0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Cadmium", "category": "cosmere:allomancy", "icon": "cosmere:cadmium_nugget", + "name": "Allomantic Cadmium", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 12 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json index f51d2e268..04004b2be 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Chromium", "category": "cosmere:allomancy", "icon": "cosmere:chromium_nugget", + "name": "Allomantic Chromium", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 10 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json index d5a88a630..0ad12cf8d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json @@ -1,15 +1,15 @@ { - "name": "Allomantic Copper", "category": "cosmere:allomancy", "icon": "cosmere:copper_nugget", + "name": "Allomantic Copper", "pages": [ { "type": "text", - "text": "A misting who burns $(thing)copper$() is known as a \"$(thing)Smoker$()\". A smoker burning copper generates a \u0027coppercloud,\u0027 which hides Allomancy from being detected by Bronze. Although I\u0027ve never witnessed it, I\u0027ve heard that a seeker of considerable strength could pierce a coppercloud. More research is required." + "text": "A misting who burns $(thing)copper$() is known as a \"$(thing)Smoker$()\". A smoker burning copper generates a 'coppercloud,' which hides Allomancy from being detected by Bronze. Although I've never witnessed it, I've heard that a seeker of considerable strength could pierce a coppercloud. More research is required." } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 6 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json index 9bdd4ea01..7d5b67c3f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Duralumin", "category": "cosmere:allomancy", "icon": "cosmere:duralumin_nugget", + "name": "Allomantic Duralumin", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 9 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json index aa9e8b645..1348229dc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Electrum", "category": "cosmere:allomancy", "icon": "cosmere:electrum_nugget", + "name": "Allomantic Electrum", "pages": [ { "type": "text", @@ -13,7 +13,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 15 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json index 539dbaed7..9a3130dc0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Gold", "category": "cosmere:allomancy", "icon": "minecraft:gold_nugget", + "name": "Allomantic Gold", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 14 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json index 692fb7f9b..c848205e5 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json @@ -1,15 +1,15 @@ { - "name": "Allomantic Iron", "category": "cosmere:allomancy", "icon": "minecraft:iron_nugget", + "name": "Allomantic Iron", "pages": [ { "type": "text", - "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\". Ironpulling is affected by the normal laws of physics. If a lurcher were to pull on something that weighs more than them, they\u0027d be pulled towards it. If they pulled on something lighter, the object would move. If both were of similar weight, they\u0027d both move." + "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\". Ironpulling is affected by the normal laws of physics. If a lurcher were to pull on something that weighs more than them, they'd be pulled towards it. If they pulled on something lighter, the object would move. If both were of similar weight, they'd both move." } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json index 2d08f269e..502a43357 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Nicrosil", "category": "cosmere:allomancy", "icon": "cosmere:nicrosil_nugget", + "name": "Allomantic Nicrosil", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 11 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json index 9a8e0494a..99ea4419a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Pewter", "category": "cosmere:allomancy", "icon": "cosmere:pewter_nugget", + "name": "Allomantic Pewter", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 3 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json index e24b98c62..698bf71a6 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json @@ -1,11 +1,11 @@ { - "name": "Allomantic Steel", "category": "cosmere:allomancy", "icon": "cosmere:steel_nugget", + "name": "Allomantic Steel", "pages": [ { "type": "text", - "text": "A misting who burns $(thing)steel$() is known as a \"$(thing)Coinshot$()\". Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to push against nearby metal objects. Steelpushing is affected by the laws of physics. If a coinshot were to push on something that weighs more than them, they\u0027d be pushed away. " + "text": "A misting who burns $(thing)steel$() is known as a \"$(thing)Coinshot$()\". Steel is an Allomantic metal and an alloy of Iron. When burnt, Steel allows the user to push against nearby metal objects. Steelpushing is affected by the laws of physics. If a coinshot were to push on something that weighs more than them, they'd be pushed away. " }, { "type": "text", @@ -18,7 +18,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 1 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json index e37051166..700066273 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Tin", "category": "cosmere:allomancy", "icon": "cosmere:tin_nugget", + "name": "Allomantic Tin", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 2 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json index dec1ff554..8de846341 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json @@ -1,7 +1,7 @@ { - "name": "Allomantic Zinc", "category": "cosmere:allomancy", "icon": "cosmere:zinc_nugget", + "name": "Allomantic Zinc", "pages": [ { "type": "text", @@ -9,7 +9,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 4 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json index b108d32d0..8939a6ee0 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Aluminum", "category": "cosmere:feruchemy", "icon": "cosmere:aluminum_bracelet_metalmind", + "name": "Feruchemical Aluminum", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 8 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json index b983ba5ce..682d41e5a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Atium", "category": "cosmere:feruchemy", "icon": "cosmere:atium_bracelet_metalmind", + "name": "Feruchemical Atium", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 16 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json index 64fafa096..22157e9a4 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Bendalloy", "category": "cosmere:feruchemy", "icon": "cosmere:bendalloy_bracelet_metalmind", + "name": "Feruchemical Bendalloy", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 13 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json index 7a207e5cb..83e734adf 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Brass", "category": "cosmere:feruchemy", "icon": "cosmere:brass_bracelet_metalmind", + "name": "Feruchemical Brass", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 5 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json index e559e0b5d..0721f8cb8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Bronze", "category": "cosmere:feruchemy", "icon": "cosmere:bronze_bracelet_metalmind", + "name": "Feruchemical Bronze", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 7 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json index 10f7c5407..d5e55a069 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Cadmium", "category": "cosmere:feruchemy", "icon": "cosmere:cadmium_bracelet_metalmind", + "name": "Feruchemical Cadmium", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 12 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json index a0023517d..52c32405b 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Chromium", "category": "cosmere:feruchemy", "icon": "cosmere:chromium_bracelet_metalmind", + "name": "Feruchemical Chromium", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 10 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json index 10108fddd..7561c3319 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Copper", "category": "cosmere:feruchemy", "icon": "cosmere:copper_bracelet_metalmind", + "name": "Feruchemical Copper", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 6 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json index dae5c4d5b..5a2712050 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Duralumin", "category": "cosmere:feruchemy", "icon": "cosmere:duralumin_bracelet_metalmind", + "name": "Feruchemical Duralumin", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 9 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json index 58e99d9fa..a907b3dfc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Electrum", "category": "cosmere:feruchemy", "icon": "cosmere:electrum_bracelet_metalmind", + "name": "Feruchemical Electrum", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 15 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json index d3db82829..61d17404a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Gold", "category": "cosmere:feruchemy", "icon": "cosmere:gold_bracelet_metalmind", + "name": "Feruchemical Gold", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 14 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json index 044c6eb08..82ed95138 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Iron", "category": "cosmere:feruchemy", "icon": "cosmere:iron_bracelet_metalmind", + "name": "Feruchemical Iron", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json index 24474c473..6110d1598 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Nicrosil", "category": "cosmere:feruchemy", "icon": "cosmere:nicrosil_bracelet_metalmind", + "name": "Feruchemical Nicrosil", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 11 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json index 0f3e6eaec..c6d94441d 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Pewter", "category": "cosmere:feruchemy", "icon": "cosmere:pewter_bracelet_metalmind", + "name": "Feruchemical Pewter", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 3 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json index 0a92fd3bf..d94fd1f8f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Steel", "category": "cosmere:feruchemy", "icon": "cosmere:steel_bracelet_metalmind", + "name": "Feruchemical Steel", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 1 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json index c3e4e023c..31081e6a3 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Tin", "category": "cosmere:feruchemy", "icon": "cosmere:tin_bracelet_metalmind", + "name": "Feruchemical Tin", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 2 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json index 2cc9ef8a7..21d4f9a2f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json @@ -1,7 +1,7 @@ { - "name": "Feruchemical Zinc", "category": "cosmere:feruchemy", "icon": "cosmere:zinc_bracelet_metalmind", + "name": "Feruchemical Zinc", "pages": [ { "type": "text", @@ -24,7 +24,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 4 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json index 2aa0382e6..4536aa219 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json @@ -1,22 +1,22 @@ { - "name": "Feruchemy Basics", "category": "cosmere:feruchemy", "icon": "cosmere:copper_bracelet_metalmind", + "name": "Feruchemy Basics", "pages": [ { "type": "text", - "text": "If you entered this world with an feruchemical ability, you\u0027re called a $(6)ferring$().", + "text": "If you entered this world with an feruchemical ability, you're called a $(6)ferring$().", "title": "cosmere:copper_bracelet_metalmind" }, { "type": "patchouli:crafting", - "text": "Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap attributes.", "recipe": "cosmere:atium_bracelet_metalmind", - "recipe2": "" + "recipe2": "", + "text": "Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap attributes." } ], "priority": true, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json index 69762d9f2..e44815ff3 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Aluminum", "category": "cosmere:hemalurgy", "icon": "cosmere:aluminum_spike", + "name": "Hemalurgic Aluminum", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 8 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json index cb4cec276..b50c53dd4 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Atium", "category": "cosmere:hemalurgy", "icon": "cosmere:atium_spike", + "name": "Hemalurgic Atium", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 16 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json index b53706185..719ec15c2 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Bendalloy", "category": "cosmere:hemalurgy", "icon": "cosmere:bendalloy_spike", + "name": "Hemalurgic Bendalloy", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 13 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json index b6dcf8d74..9990d3acc 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Brass", "category": "cosmere:hemalurgy", "icon": "cosmere:brass_spike", + "name": "Hemalurgic Brass", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 5 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json index 9fc77abaf..bbab7ac38 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Bronze", "category": "cosmere:hemalurgy", "icon": "cosmere:bronze_spike", + "name": "Hemalurgic Bronze", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 7 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json index 11c56a2d4..cdb2cad63 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Cadmium", "category": "cosmere:hemalurgy", "icon": "cosmere:cadmium_spike", + "name": "Hemalurgic Cadmium", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 12 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json index dda4ad0fb..4addcd5f8 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json @@ -1,11 +1,11 @@ { - "name": "Hemalurgic Chromium", "category": "cosmere:hemalurgy", "icon": "cosmere:chromium_spike", + "name": "Hemalurgic Chromium", "pages": [ { "type": "text", - "text": "I have heard it said that Chromium spikes \u0027might steal destiny...\u0027, in my experience, they seem to affect one\u0027s luck. $(p)Like all hemalurgic spikes, the effect of a chromium spike depends on the donor, though in a different way to iron, for example: $(p)If the donor is a Rabbit, or completely White cat, the recipient would become 75%%, or 35%% luckier, respectively. $(p)In contrast, if the donor is a black cat, wither skeleton, or pufferfish, the recipient\u0027s luck would decrease, by 100%%, 55%%, or 5%%, respectively" + "text": "I have heard it said that Chromium spikes 'might steal destiny...', in my experience, they seem to affect one's luck. $(p)Like all hemalurgic spikes, the effect of a chromium spike depends on the donor, though in a different way to iron, for example: $(p)If the donor is a Rabbit, or completely White cat, the recipient would become 75%%, or 35%% luckier, respectively. $(p)In contrast, if the donor is a black cat, wither skeleton, or pufferfish, the recipient's luck would decrease, by 100%%, 55%%, or 5%%, respectively" }, { "type": "patchouli:crafting", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 10 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json index 7b62a28da..75461ff94 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Copper", "category": "cosmere:hemalurgy", "icon": "cosmere:copper_spike", + "name": "Hemalurgic Copper", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 6 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json index c55430f75..3bd073402 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json @@ -1,11 +1,11 @@ { - "name": "Hemalurgic Duralumin", "category": "cosmere:hemalurgy", "icon": "cosmere:duralumin_spike", + "name": "Hemalurgic Duralumin", "pages": [ { "type": "text", - "text": "In the past, hemalurgic scholars have theorised that duralumin spikes may transfer the donor\u0027s spiritual connection or identity. However, due to the rarity of duralumin during the eras they all worked in, all were unable to obtain enough duralumin to prove their theories. $(p)(The rest of the page appears to have been ripped out)" + "text": "In the past, hemalurgic scholars have theorised that duralumin spikes may transfer the donor's spiritual connection or identity. However, due to the rarity of duralumin during the eras they all worked in, all were unable to obtain enough duralumin to prove their theories. $(p)(The rest of the page appears to have been ripped out)" }, { "type": "patchouli:crafting", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 9 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json index 37661ea06..3c15ac089 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Electrum", "category": "cosmere:hemalurgy", "icon": "cosmere:electrum_spike", + "name": "Hemalurgic Electrum", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 15 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json index f4ac53c65..210dc3fb6 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Gold", "category": "cosmere:hemalurgy", "icon": "cosmere:gold_spike", + "name": "Hemalurgic Gold", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 14 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json index 8341ce85f..bcb06994f 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json @@ -1,11 +1,11 @@ { - "name": "Hemalurgic Iron", "category": "cosmere:hemalurgy", "icon": "cosmere:iron_spike", + "name": "Hemalurgic Iron", "pages": [ { "type": "text", - "text": "Iron spikes steal physical strength: $(p)My research suggests that iron spikes transfer around 70%% of the donor\u0027s attack strength." + "text": "Iron spikes steal physical strength: $(p)My research suggests that iron spikes transfer around 70%% of the donor's attack strength." }, { "type": "patchouli:crafting", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json index 06503d597..cf3895851 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Lerasatium", "category": "cosmere:hemalurgy", "icon": "cosmere:lerasatium_spike", + "name": "Hemalurgic Lerasatium", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 20 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json index c2360f499..3de5ab289 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Lerasium", "category": "cosmere:hemalurgy", "icon": "cosmere:lerasium_spike", + "name": "Hemalurgic Lerasium", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 17 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json index 25ac15748..26e709cdd 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Nicrosil", "category": "cosmere:hemalurgy", "icon": "cosmere:nicrosil_spike", + "name": "Hemalurgic Nicrosil", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 11 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json index 357f1870e..0ef7b039c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Pewter", "category": "cosmere:hemalurgy", "icon": "cosmere:pewter_spike", + "name": "Hemalurgic Pewter", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 3 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json index 7fde96ef3..5f1ecda7c 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Steel", "category": "cosmere:hemalurgy", "icon": "cosmere:steel_spike", + "name": "Hemalurgic Steel", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 1 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json index 67f2d6fef..a53ac814a 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Tin", "category": "cosmere:hemalurgy", "icon": "cosmere:tin_spike", + "name": "Hemalurgic Tin", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 2 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json index 877153d22..62e823715 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgic Zinc", "category": "cosmere:hemalurgy", "icon": "cosmere:zinc_spike", + "name": "Hemalurgic Zinc", "pages": [ { "type": "text", @@ -14,7 +14,7 @@ } ], "priority": false, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 4 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json index 0d086de45..f983f3cad 100644 --- a/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json +++ b/src/main/generated/data/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json @@ -1,7 +1,7 @@ { - "name": "Hemalurgy (For Dummies)", "category": "cosmere:hemalurgy", "icon": "cosmere:atium_spike", + "name": "Hemalurgy (For Dummies)", "pages": [ { "type": "text", @@ -11,22 +11,22 @@ { "type": "text", "text": "During my research, I have been able to outline some general rules of Hemalurgy, and some general observations, which I have written below.$(li) The metal the spike is made out of determines the attribute or power taken from the donor.$(li) A single spike can only hold a single hemalurgic charge.$(li) Spiking a misting/ferring has a predictable effect, if the right metal is used for the spike, it steals their allomantic/feruchemical power, with which the hemalurgic spike is now charged.$()$(br) Cont. Next Page$(br)", - "title": "Rules \u0026 Observations" + "title": "Rules & Observations" }, { "type": "text", "text": "$(li) Spiking full mistborn and feruchemists, in my experience, has inconsistent results. The power taken is always one from the relevant quadrant of the respective table, steel spikes taking physical allomantic powers, gold spikes taking hybrid feruchemical powers, and so on. The inconsistency lies in that the specific power stolen seems to be random, although there may be pattern to the apparent randomness - further research is necessary.$(br)", - "title": "Rules \u0026 Observations" + "title": "Rules & Observations" }, { "type": "patchouli:crafting", - "text": "Spike Recipe", "recipe": "cosmere:steel_spike", - "recipe2": "cosmere:pewter_spike" + "recipe2": "cosmere:pewter_spike", + "text": "Spike Recipe" } ], "priority": true, - "secret": false, "read_by_default": false, + "secret": false, "sortnum": 0 } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json index 5335272e6..d51bd6ed6 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json @@ -30,7 +30,7 @@ } ], "result": { - "item": "cosmere:bendalloy_blend", - "count": 9 + "count": 9, + "item": "cosmere:bendalloy_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json index 92b56229b..6fd3c93f2 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:brass_blend", - "count": 2 + "count": 2, + "item": "cosmere:brass_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json index 988694f2c..77c45b39d 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:bronze_blend", - "count": 4 + "count": 4, + "item": "cosmere:bronze_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json index 324b18385..dbed4a7bb 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:duralumin_blend", - "count": 5 + "count": 5, + "item": "cosmere:duralumin_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json index 246b2b9ca..85579124a 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:electrum_blend", - "count": 2 + "count": 2, + "item": "cosmere:electrum_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json index c76eed408..bae32a28f 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:nicrosil_blend", - "count": 4 + "count": 4, + "item": "cosmere:nicrosil_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json index 6a2221e96..229254998 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:pewter_blend", - "count": 5 + "count": 5, + "item": "cosmere:pewter_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/blend/steel.json index 62ecb0b4d..0f238c184 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/steel.json +++ b/src/main/generated/data/cosmere/recipes/alloying/blend/steel.json @@ -20,7 +20,7 @@ ] ], "result": { - "item": "cosmere:steel_blend", - "count": 4 + "count": 4, + "item": "cosmere:steel_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/aluminum_block.json b/src/main/generated/data/cosmere/recipes/aluminum_block.json index f346c5228..984726d60 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_block.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/aluminum" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:aluminum_block" } diff --git a/src/main/generated/data/cosmere/recipes/aluminum_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/aluminum_bracelet_metalmind.json index b1fd3b18c..7cc89abbc 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/aluminum" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:aluminum_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ingot.json b/src/main/generated/data/cosmere/recipes/aluminum_ingot.json index 9f4f70250..14fabf3bd 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ingot.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/aluminum" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:aluminum_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json index ef7c50b13..fddd2dd81 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:aluminum_ore" }, - "result": "cosmere:aluminum_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:aluminum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json index 51e675390..a422f572c 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_aluminum_ore" }, - "result": "cosmere:aluminum_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:aluminum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json index 19fa8cbf3..5b05b4852 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:aluminum_ore" }, - "result": "cosmere:aluminum_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:aluminum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json index c81bcc726..161e3f538 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_aluminum_ore" }, - "result": "cosmere:aluminum_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:aluminum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/aluminum_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/aluminum_necklace_metalmind.json index a6dc15911..dee9a9b5b 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/aluminum" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:aluminum_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/aluminum_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/aluminum_ring_metalmind.json index 5fe9de936..87634791b 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/aluminum" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:aluminum_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/aluminum_spike.json b/src/main/generated/data/cosmere/recipes/aluminum_spike.json index 13d469212..ec308c107 100644 --- a/src/main/generated/data/cosmere/recipes/aluminum_spike.json +++ b/src/main/generated/data/cosmere/recipes/aluminum_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/aluminum" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:aluminum_spike" } diff --git a/src/main/generated/data/cosmere/recipes/atium_block.json b/src/main/generated/data/cosmere/recipes/atium_block.json index 4c0df787e..c258d013c 100644 --- a/src/main/generated/data/cosmere/recipes/atium_block.json +++ b/src/main/generated/data/cosmere/recipes/atium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/atium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:atium_block" } diff --git a/src/main/generated/data/cosmere/recipes/atium_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/atium_bracelet_metalmind.json index 93cb29c26..26473696b 100644 --- a/src/main/generated/data/cosmere/recipes/atium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/atium_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/atium" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:atium_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/atium_ingot.json b/src/main/generated/data/cosmere/recipes/atium_ingot.json index 93faa5711..c1adad23e 100644 --- a/src/main/generated/data/cosmere/recipes/atium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/atium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/atium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:atium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/atium_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/atium_necklace_metalmind.json index 251f08505..741fdc707 100644 --- a/src/main/generated/data/cosmere/recipes/atium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/atium_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/atium" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:atium_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/atium_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/atium_ring_metalmind.json index 0c9861603..aeb31950a 100644 --- a/src/main/generated/data/cosmere/recipes/atium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/atium_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/atium" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:atium_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/atium_spike.json b/src/main/generated/data/cosmere/recipes/atium_spike.json index fec60a3d7..c5ab0d872 100644 --- a/src/main/generated/data/cosmere/recipes/atium_spike.json +++ b/src/main/generated/data/cosmere/recipes/atium_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/atium" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:atium_spike" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_block.json b/src/main/generated/data/cosmere/recipes/bendalloy_block.json index 3ac55fa7f..993910701 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_block.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/bendalloy" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:bendalloy_block" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/bendalloy_bracelet_metalmind.json index 72aeb107b..947faed1b 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/bendalloy" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:bendalloy_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_ingot.json b/src/main/generated/data/cosmere/recipes/bendalloy_ingot.json index 0b685a48a..9b036cdbe 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_ingot.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/bendalloy" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:bendalloy_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json b/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json index 39bfcd17b..4d10ddc2c 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:bendalloy_blend" }, - "result": "cosmere:bendalloy_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:bendalloy_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json b/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json index 45b2af122..589e72daa 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:bendalloy_blend" }, - "result": "cosmere:bendalloy_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:bendalloy_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/bendalloy_necklace_metalmind.json index f6589e3eb..96939dd2a 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/bendalloy" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:bendalloy_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/bendalloy_ring_metalmind.json index 5fce04d1c..40364e011 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/bendalloy" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:bendalloy_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bendalloy_spike.json b/src/main/generated/data/cosmere/recipes/bendalloy_spike.json index fda7f7ea2..07e3c142b 100644 --- a/src/main/generated/data/cosmere/recipes/bendalloy_spike.json +++ b/src/main/generated/data/cosmere/recipes/bendalloy_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/bendalloy" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:bendalloy_spike" } diff --git a/src/main/generated/data/cosmere/recipes/brass_block.json b/src/main/generated/data/cosmere/recipes/brass_block.json index 45e917e5c..b169fdb62 100644 --- a/src/main/generated/data/cosmere/recipes/brass_block.json +++ b/src/main/generated/data/cosmere/recipes/brass_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/brass" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:brass_block" } diff --git a/src/main/generated/data/cosmere/recipes/brass_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/brass_bracelet_metalmind.json index e9d18b6f7..a27a9b9a0 100644 --- a/src/main/generated/data/cosmere/recipes/brass_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/brass_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/brass" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:brass_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/brass_ingot.json b/src/main/generated/data/cosmere/recipes/brass_ingot.json index 6af03ef77..92608627a 100644 --- a/src/main/generated/data/cosmere/recipes/brass_ingot.json +++ b/src/main/generated/data/cosmere/recipes/brass_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/brass" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:brass_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json b/src/main/generated/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json index 89982ca4b..bf6530f93 100644 --- a/src/main/generated/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json +++ b/src/main/generated/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:brass_blend" }, - "result": "cosmere:brass_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:brass_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json b/src/main/generated/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json index a641cfdf3..34cd7d22e 100644 --- a/src/main/generated/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json +++ b/src/main/generated/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:brass_blend" }, - "result": "cosmere:brass_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:brass_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/brass_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/brass_necklace_metalmind.json index c3dfcf424..34e080247 100644 --- a/src/main/generated/data/cosmere/recipes/brass_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/brass_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/brass" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:brass_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/brass_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/brass_ring_metalmind.json index 87a8a4f2c..8a4a02871 100644 --- a/src/main/generated/data/cosmere/recipes/brass_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/brass_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/brass" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:brass_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/brass_spike.json b/src/main/generated/data/cosmere/recipes/brass_spike.json index e5eda38f4..24a71c74b 100644 --- a/src/main/generated/data/cosmere/recipes/brass_spike.json +++ b/src/main/generated/data/cosmere/recipes/brass_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/brass" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:brass_spike" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_block.json b/src/main/generated/data/cosmere/recipes/bronze_block.json index d2fb1ffca..06dc4ad97 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_block.json +++ b/src/main/generated/data/cosmere/recipes/bronze_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/bronze" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:bronze_block" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/bronze_bracelet_metalmind.json index d4eccf923..8ff55a6b8 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bronze_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/bronze" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:bronze_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_ingot.json b/src/main/generated/data/cosmere/recipes/bronze_ingot.json index 3b3e266f2..65d1a58de 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_ingot.json +++ b/src/main/generated/data/cosmere/recipes/bronze_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/bronze" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:bronze_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json b/src/main/generated/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json index 7c11d27cd..758d8d3b6 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json +++ b/src/main/generated/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:bronze_blend" }, - "result": "cosmere:bronze_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:bronze_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json b/src/main/generated/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json index 1c0e297c1..f609d4611 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json +++ b/src/main/generated/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:bronze_blend" }, - "result": "cosmere:bronze_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:bronze_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/bronze_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/bronze_necklace_metalmind.json index dfdd38731..01b6979fa 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bronze_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/bronze" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:bronze_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/bronze_ring_metalmind.json index e298d169c..4aa3ba365 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/bronze_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/bronze" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:bronze_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/bronze_spike.json b/src/main/generated/data/cosmere/recipes/bronze_spike.json index 6e301bc64..d8162a647 100644 --- a/src/main/generated/data/cosmere/recipes/bronze_spike.json +++ b/src/main/generated/data/cosmere/recipes/bronze_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/bronze" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:bronze_spike" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_block.json b/src/main/generated/data/cosmere/recipes/cadmium_block.json index 6ed020bf6..4cf4aca04 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_block.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/cadmium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:cadmium_block" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/cadmium_bracelet_metalmind.json index 1020062e4..d4c63c845 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/cadmium" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:cadmium_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ingot.json b/src/main/generated/data/cosmere/recipes/cadmium_ingot.json index 2e389625d..7ba18edb7 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/cadmium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:cadmium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json index 3e437e1a8..70e8bbcc3 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:cadmium_ore" }, - "result": "cosmere:cadmium_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:cadmium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json index b830cda3b..bfe953e5d 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_cadmium_ore" }, - "result": "cosmere:cadmium_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:cadmium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json index a2545d976..920db2c64 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:cadmium_ore" }, - "result": "cosmere:cadmium_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:cadmium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json index f15a7cb17..5e687d56d 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_cadmium_ore" }, - "result": "cosmere:cadmium_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:cadmium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/cadmium_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/cadmium_necklace_metalmind.json index 1a1401033..961f09c52 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/cadmium" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:cadmium_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/cadmium_ring_metalmind.json index b24bf088f..f6b99b9b9 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/cadmium" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:cadmium_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/cadmium_spike.json b/src/main/generated/data/cosmere/recipes/cadmium_spike.json index 64974df80..a6fb43530 100644 --- a/src/main/generated/data/cosmere/recipes/cadmium_spike.json +++ b/src/main/generated/data/cosmere/recipes/cadmium_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/cadmium" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:cadmium_spike" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_block.json b/src/main/generated/data/cosmere/recipes/chromium_block.json index 6ce97b2c6..afa904dd9 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_block.json +++ b/src/main/generated/data/cosmere/recipes/chromium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/chromium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:chromium_block" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/chromium_bracelet_metalmind.json index bde759b74..6430b6112 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/chromium_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/chromium" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:chromium_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_ingot.json b/src/main/generated/data/cosmere/recipes/chromium_ingot.json index 2bc145c48..480fd0eeb 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/chromium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:chromium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json index a5b16a799..52fc1dac6 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:chromium_ore" }, - "result": "cosmere:chromium_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:chromium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json index ed9211d26..a46248e36 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_chromium_ore" }, - "result": "cosmere:chromium_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:chromium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json index 789df3f9d..935a06441 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:chromium_ore" }, - "result": "cosmere:chromium_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:chromium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json index 2ec60fec1..2aef6cc20 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_chromium_ore" }, - "result": "cosmere:chromium_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:chromium_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/chromium_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/chromium_necklace_metalmind.json index a31bc7daa..22f7160d1 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/chromium_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/chromium" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:chromium_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/chromium_ring_metalmind.json index 9a1cd58b6..fd97c7475 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/chromium_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/chromium" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:chromium_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/chromium_spike.json b/src/main/generated/data/cosmere/recipes/chromium_spike.json index e05a58fcc..dfacd48c3 100644 --- a/src/main/generated/data/cosmere/recipes/chromium_spike.json +++ b/src/main/generated/data/cosmere/recipes/chromium_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/chromium" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:chromium_spike" } diff --git a/src/main/generated/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json index 470ef1d9a..ca7848530 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:aluminum_ingot", - "count": 9 + "count": 9, + "item": "cosmere:aluminum_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json index 086dd03aa..e6debeba2 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:aluminum_nugget", - "count": 9 + "count": 9, + "item": "cosmere:aluminum_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/atium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/atium_block_deconstruct.json index c02ea1680..83973069d 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/atium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/atium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:atium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:atium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/atium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/atium_item_deconstruct.json index 2901e66e3..591bc154b 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/atium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/atium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:atium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:atium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json index 70df2f417..66ab59f34 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:bendalloy_ingot", - "count": 9 + "count": 9, + "item": "cosmere:bendalloy_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json index e06aad518..dae7a41f3 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:bendalloy_nugget", - "count": 9 + "count": 9, + "item": "cosmere:bendalloy_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/brass_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/brass_block_deconstruct.json index 2139d3422..8a9377662 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/brass_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/brass_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:brass_ingot", - "count": 9 + "count": 9, + "item": "cosmere:brass_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/brass_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/brass_item_deconstruct.json index 79cd8ded0..05528cc81 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/brass_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/brass_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:brass_nugget", - "count": 9 + "count": 9, + "item": "cosmere:brass_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/bronze_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/bronze_block_deconstruct.json index 190cf5669..c1f5cc919 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/bronze_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/bronze_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:bronze_ingot", - "count": 9 + "count": 9, + "item": "cosmere:bronze_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/bronze_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/bronze_item_deconstruct.json index 382d81bd1..9d898a872 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/bronze_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/bronze_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:bronze_nugget", - "count": 9 + "count": 9, + "item": "cosmere:bronze_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json index 0c0446935..d891a710b 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:cadmium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:cadmium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json index 13ca06c9b..085d1d3d3 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:cadmium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:cadmium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/chromium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/chromium_block_deconstruct.json index 356afbe91..893a8ea46 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/chromium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/chromium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:chromium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:chromium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/chromium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/chromium_item_deconstruct.json index ca681bc54..ee4f2e41c 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/chromium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/chromium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:chromium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:chromium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/copper_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/copper_block_deconstruct.json index a5fa41c40..60e93cde8 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/copper_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/copper_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:copper_ingot", - "count": 9 + "count": 9, + "item": "cosmere:copper_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/copper_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/copper_item_deconstruct.json index 858525da0..505b7cd9f 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/copper_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/copper_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:copper_nugget", - "count": 9 + "count": 9, + "item": "cosmere:copper_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json index 853189535..8f70c96f6 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:duralumin_ingot", - "count": 9 + "count": 9, + "item": "cosmere:duralumin_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json index d3f8b5b5d..651bf92f0 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:duralumin_nugget", - "count": 9 + "count": 9, + "item": "cosmere:duralumin_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/electrum_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/electrum_block_deconstruct.json index a5080bc44..8b43cf428 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/electrum_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/electrum_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:electrum_ingot", - "count": 9 + "count": 9, + "item": "cosmere:electrum_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/electrum_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/electrum_item_deconstruct.json index 1b19d13f1..64d7eedc7 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/electrum_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/electrum_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:electrum_nugget", - "count": 9 + "count": 9, + "item": "cosmere:electrum_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json index 79b1c06d8..bad636141 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:harmonium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:harmonium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json index b3269d89a..f1d1e9534 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:harmonium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:harmonium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lead_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lead_block_deconstruct.json index 5df409a97..5b3ecef39 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lead_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lead_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lead_ingot", - "count": 9 + "count": 9, + "item": "cosmere:lead_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lead_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lead_item_deconstruct.json index 726972f90..60593e78a 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lead_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lead_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lead_nugget", - "count": 9 + "count": 9, + "item": "cosmere:lead_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json index d3437b756..8da18a9f2 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lerasatium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:lerasatium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json index df3bee5cc..38a39431d 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lerasatium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:lerasatium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json index 0c4c6c8ee..faeb8c7b1 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lerasium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:lerasium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json index e00ae84b7..f0fc299ee 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:lerasium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:lerasium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/malatium_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/malatium_block_deconstruct.json index 834f0fdf3..d42318a2d 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/malatium_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/malatium_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:malatium_ingot", - "count": 9 + "count": 9, + "item": "cosmere:malatium_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/malatium_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/malatium_item_deconstruct.json index df0965145..3d3d52992 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/malatium_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/malatium_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:malatium_nugget", - "count": 9 + "count": 9, + "item": "cosmere:malatium_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/nickel_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/nickel_block_deconstruct.json index 872f4282a..bd5cc2d18 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/nickel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/nickel_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:nickel_ingot", - "count": 9 + "count": 9, + "item": "cosmere:nickel_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/nickel_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/nickel_item_deconstruct.json index b74c58419..abf2e1c73 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/nickel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/nickel_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:nickel_nugget", - "count": 9 + "count": 9, + "item": "cosmere:nickel_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json index 6623e59b1..1e4e2a605 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:nicrosil_ingot", - "count": 9 + "count": 9, + "item": "cosmere:nicrosil_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json index bb0ed5021..9f76c1895 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:nicrosil_nugget", - "count": 9 + "count": 9, + "item": "cosmere:nicrosil_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/pewter_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/pewter_block_deconstruct.json index c148533f2..37c4a2508 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/pewter_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/pewter_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:pewter_ingot", - "count": 9 + "count": 9, + "item": "cosmere:pewter_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/pewter_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/pewter_item_deconstruct.json index eb8c9e5db..438667843 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/pewter_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/pewter_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:pewter_nugget", - "count": 9 + "count": 9, + "item": "cosmere:pewter_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/silver_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/silver_block_deconstruct.json index 59fb0f3de..803fe93e3 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/silver_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/silver_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:silver_ingot", - "count": 9 + "count": 9, + "item": "cosmere:silver_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/silver_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/silver_item_deconstruct.json index 55b2151a6..bec462d7e 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/silver_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/silver_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:silver_nugget", - "count": 9 + "count": 9, + "item": "cosmere:silver_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/steel_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/steel_block_deconstruct.json index 342cd3528..ef2979a5e 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/steel_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/steel_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:steel_ingot", - "count": 9 + "count": 9, + "item": "cosmere:steel_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/steel_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/steel_item_deconstruct.json index 228dccdd5..3b84f69e3 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/steel_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/steel_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:steel_nugget", - "count": 9 + "count": 9, + "item": "cosmere:steel_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/tin_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/tin_block_deconstruct.json index 4862ba6b7..600dbbf87 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/tin_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/tin_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:tin_ingot", - "count": 9 + "count": 9, + "item": "cosmere:tin_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/tin_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/tin_item_deconstruct.json index d5e0201e9..68af059dd 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/tin_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/tin_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:tin_nugget", - "count": 9 + "count": 9, + "item": "cosmere:tin_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/zinc_block_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/zinc_block_deconstruct.json index 74268649b..cc0bd7a96 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/zinc_block_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/zinc_block_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:zinc_ingot", - "count": 9 + "count": 9, + "item": "cosmere:zinc_ingot" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/conversions/zinc_item_deconstruct.json b/src/main/generated/data/cosmere/recipes/conversions/zinc_item_deconstruct.json index b34c8a0b6..aa72878a6 100644 --- a/src/main/generated/data/cosmere/recipes/conversions/zinc_item_deconstruct.json +++ b/src/main/generated/data/cosmere/recipes/conversions/zinc_item_deconstruct.json @@ -6,7 +6,7 @@ } ], "result": { - "item": "cosmere:zinc_nugget", - "count": 9 + "count": 9, + "item": "cosmere:zinc_nugget" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/copper_block.json b/src/main/generated/data/cosmere/recipes/copper_block.json index d355ac473..3a24fda4b 100644 --- a/src/main/generated/data/cosmere/recipes/copper_block.json +++ b/src/main/generated/data/cosmere/recipes/copper_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/copper" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:copper_block" } diff --git a/src/main/generated/data/cosmere/recipes/copper_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/copper_bracelet_metalmind.json index be3c4ff05..5637686f7 100644 --- a/src/main/generated/data/cosmere/recipes/copper_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/copper_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/copper" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:copper_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/copper_ingot.json b/src/main/generated/data/cosmere/recipes/copper_ingot.json index fdf7ea7dd..acc2bca17 100644 --- a/src/main/generated/data/cosmere/recipes/copper_ingot.json +++ b/src/main/generated/data/cosmere/recipes/copper_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/copper" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:copper_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/copper_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/copper_necklace_metalmind.json index 2bed7c92b..d55772d81 100644 --- a/src/main/generated/data/cosmere/recipes/copper_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/copper_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/copper" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:copper_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/copper_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/copper_ring_metalmind.json index a87ad8c77..aa0af9fcf 100644 --- a/src/main/generated/data/cosmere/recipes/copper_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/copper_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/copper" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:copper_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/copper_spike.json b/src/main/generated/data/cosmere/recipes/copper_spike.json index 3fc872031..0f68d7cdf 100644 --- a/src/main/generated/data/cosmere/recipes/copper_spike.json +++ b/src/main/generated/data/cosmere/recipes/copper_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/copper" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:copper_spike" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_block.json b/src/main/generated/data/cosmere/recipes/duralumin_block.json index b97d4f801..954f3df58 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_block.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/duralumin" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:duralumin_block" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/duralumin_bracelet_metalmind.json index f1cacb941..d07afe555 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/duralumin" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:duralumin_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_ingot.json b/src/main/generated/data/cosmere/recipes/duralumin_ingot.json index b8d1f3db8..fb86c617b 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_ingot.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/duralumin" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:duralumin_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json b/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json index 1391f4cd9..80d343ce1 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:duralumin_blend" }, - "result": "cosmere:duralumin_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:duralumin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json b/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json index fa1d48827..de916af14 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:duralumin_blend" }, - "result": "cosmere:duralumin_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:duralumin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/duralumin_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/duralumin_necklace_metalmind.json index 02345f688..0d6940930 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/duralumin" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:duralumin_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/duralumin_ring_metalmind.json index ae5105a0f..31fd583cf 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/duralumin" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:duralumin_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/duralumin_spike.json b/src/main/generated/data/cosmere/recipes/duralumin_spike.json index 3668f7db5..12c772a7d 100644 --- a/src/main/generated/data/cosmere/recipes/duralumin_spike.json +++ b/src/main/generated/data/cosmere/recipes/duralumin_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/duralumin" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:duralumin_spike" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_block.json b/src/main/generated/data/cosmere/recipes/electrum_block.json index c2631e0b2..566f94651 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_block.json +++ b/src/main/generated/data/cosmere/recipes/electrum_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/electrum" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:electrum_block" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/electrum_bracelet_metalmind.json index 4130e1944..92d43b11d 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/electrum_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/electrum" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:electrum_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_ingot.json b/src/main/generated/data/cosmere/recipes/electrum_ingot.json index c82185449..eced88545 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_ingot.json +++ b/src/main/generated/data/cosmere/recipes/electrum_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/electrum" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:electrum_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json b/src/main/generated/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json index 117aed4b3..4a88ebcbe 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json +++ b/src/main/generated/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:electrum_blend" }, - "result": "cosmere:electrum_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:electrum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json b/src/main/generated/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json index d3dc3315d..72ff1a978 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json +++ b/src/main/generated/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:electrum_blend" }, - "result": "cosmere:electrum_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:electrum_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/electrum_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/electrum_necklace_metalmind.json index 19980ca6c..eac17887b 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/electrum_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/electrum" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:electrum_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/electrum_ring_metalmind.json index 55e328e26..d49ce3a28 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/electrum_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/electrum" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:electrum_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/electrum_spike.json b/src/main/generated/data/cosmere/recipes/electrum_spike.json index 71235437e..675f982c7 100644 --- a/src/main/generated/data/cosmere/recipes/electrum_spike.json +++ b/src/main/generated/data/cosmere/recipes/electrum_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/electrum" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:electrum_spike" } diff --git a/src/main/generated/data/cosmere/recipes/gold_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/gold_bracelet_metalmind.json index 32448a47b..c33e8e252 100644 --- a/src/main/generated/data/cosmere/recipes/gold_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/gold_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/gold" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:gold_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/gold_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/gold_necklace_metalmind.json index 8390da860..202108a6f 100644 --- a/src/main/generated/data/cosmere/recipes/gold_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/gold_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/gold" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:gold_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/gold_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/gold_ring_metalmind.json index 3a57a05c4..ae76cf2fe 100644 --- a/src/main/generated/data/cosmere/recipes/gold_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/gold_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/gold" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:gold_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/gold_spike.json b/src/main/generated/data/cosmere/recipes/gold_spike.json index 5b02fa574..facf2aa9c 100644 --- a/src/main/generated/data/cosmere/recipes/gold_spike.json +++ b/src/main/generated/data/cosmere/recipes/gold_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/gold" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:gold_spike" } diff --git a/src/main/generated/data/cosmere/recipes/guide_from_blasting_iron_spike.json b/src/main/generated/data/cosmere/recipes/guide_from_blasting_iron_spike.json index 53375d22c..6cb88099e 100644 --- a/src/main/generated/data/cosmere/recipes/guide_from_blasting_iron_spike.json +++ b/src/main/generated/data/cosmere/recipes/guide_from_blasting_iron_spike.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:iron_spike" }, - "result": "cosmere:guide", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:guide" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/guide_from_smelting_iron_spike.json b/src/main/generated/data/cosmere/recipes/guide_from_smelting_iron_spike.json index 6d5bb8406..8d56a7e9b 100644 --- a/src/main/generated/data/cosmere/recipes/guide_from_smelting_iron_spike.json +++ b/src/main/generated/data/cosmere/recipes/guide_from_smelting_iron_spike.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:iron_spike" }, - "result": "cosmere:guide", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:guide" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/harmonium_block.json b/src/main/generated/data/cosmere/recipes/harmonium_block.json index 03b6a7484..2cdda1e19 100644 --- a/src/main/generated/data/cosmere/recipes/harmonium_block.json +++ b/src/main/generated/data/cosmere/recipes/harmonium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/harmonium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:harmonium_block" } diff --git a/src/main/generated/data/cosmere/recipes/harmonium_ingot.json b/src/main/generated/data/cosmere/recipes/harmonium_ingot.json index cf3879f3b..800c1df49 100644 --- a/src/main/generated/data/cosmere/recipes/harmonium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/harmonium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/harmonium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:harmonium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/iron_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/iron_bracelet_metalmind.json index 152fa6bd8..c90d57683 100644 --- a/src/main/generated/data/cosmere/recipes/iron_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/iron_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/iron" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:iron_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/iron_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/iron_necklace_metalmind.json index d37945343..14d45b997 100644 --- a/src/main/generated/data/cosmere/recipes/iron_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/iron_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/iron" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:iron_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/iron_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/iron_ring_metalmind.json index ec834a8bc..f0b11b541 100644 --- a/src/main/generated/data/cosmere/recipes/iron_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/iron_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/iron" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:iron_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/iron_spike.json b/src/main/generated/data/cosmere/recipes/iron_spike.json index bb7fccd3c..e2ae78872 100644 --- a/src/main/generated/data/cosmere/recipes/iron_spike.json +++ b/src/main/generated/data/cosmere/recipes/iron_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/iron" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:iron_spike" } diff --git a/src/main/generated/data/cosmere/recipes/lead_block.json b/src/main/generated/data/cosmere/recipes/lead_block.json index 9c81acd80..b9e1cef56 100644 --- a/src/main/generated/data/cosmere/recipes/lead_block.json +++ b/src/main/generated/data/cosmere/recipes/lead_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/lead" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lead_block" } diff --git a/src/main/generated/data/cosmere/recipes/lead_ingot.json b/src/main/generated/data/cosmere/recipes/lead_ingot.json index 535b5eb62..5d275607b 100644 --- a/src/main/generated/data/cosmere/recipes/lead_ingot.json +++ b/src/main/generated/data/cosmere/recipes/lead_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/lead" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lead_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json b/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json index 887b6707d..90f4f3639 100644 --- a/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json +++ b/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:lead_ore" }, - "result": "cosmere:lead_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:lead_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json b/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json index 8fefc052b..1342505ca 100644 --- a/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_lead_ore" }, - "result": "cosmere:lead_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:lead_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json b/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json index 02ffca2de..e6a96ba4e 100644 --- a/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json +++ b/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:lead_ore" }, - "result": "cosmere:lead_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:lead_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json b/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json index d637afff0..e2cf5f7b1 100644 --- a/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +++ b/src/main/generated/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_lead_ore" }, - "result": "cosmere:lead_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:lead_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/lerasatium_block.json b/src/main/generated/data/cosmere/recipes/lerasatium_block.json index d55002800..1f5b27521 100644 --- a/src/main/generated/data/cosmere/recipes/lerasatium_block.json +++ b/src/main/generated/data/cosmere/recipes/lerasatium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/lerasatium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lerasatium_block" } diff --git a/src/main/generated/data/cosmere/recipes/lerasatium_ingot.json b/src/main/generated/data/cosmere/recipes/lerasatium_ingot.json index 4827d3f7c..873df3877 100644 --- a/src/main/generated/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/lerasatium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/lerasatium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lerasatium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/lerasatium_spike.json b/src/main/generated/data/cosmere/recipes/lerasatium_spike.json index 8a7064998..0f94868c9 100644 --- a/src/main/generated/data/cosmere/recipes/lerasatium_spike.json +++ b/src/main/generated/data/cosmere/recipes/lerasatium_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/lerasatium" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:lerasatium_spike" } diff --git a/src/main/generated/data/cosmere/recipes/lerasium_block.json b/src/main/generated/data/cosmere/recipes/lerasium_block.json index 696f4245e..c2dad86ea 100644 --- a/src/main/generated/data/cosmere/recipes/lerasium_block.json +++ b/src/main/generated/data/cosmere/recipes/lerasium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/lerasium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lerasium_block" } diff --git a/src/main/generated/data/cosmere/recipes/lerasium_ingot.json b/src/main/generated/data/cosmere/recipes/lerasium_ingot.json index beadd85e0..6e2350e13 100644 --- a/src/main/generated/data/cosmere/recipes/lerasium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/lerasium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/lerasium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:lerasium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/lerasium_spike.json b/src/main/generated/data/cosmere/recipes/lerasium_spike.json index 678f44b5d..16639515c 100644 --- a/src/main/generated/data/cosmere/recipes/lerasium_spike.json +++ b/src/main/generated/data/cosmere/recipes/lerasium_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/lerasium" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:lerasium_spike" } diff --git a/src/main/generated/data/cosmere/recipes/malatium_block.json b/src/main/generated/data/cosmere/recipes/malatium_block.json index 95cfd8e75..556bb4b2d 100644 --- a/src/main/generated/data/cosmere/recipes/malatium_block.json +++ b/src/main/generated/data/cosmere/recipes/malatium_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/malatium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:malatium_block" } diff --git a/src/main/generated/data/cosmere/recipes/malatium_ingot.json b/src/main/generated/data/cosmere/recipes/malatium_ingot.json index 84b179dd0..a1d962560 100644 --- a/src/main/generated/data/cosmere/recipes/malatium_ingot.json +++ b/src/main/generated/data/cosmere/recipes/malatium_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/malatium" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:malatium_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/metal_vial.json b/src/main/generated/data/cosmere/recipes/metal_vial.json index 89581e8b4..c02588ac8 100644 --- a/src/main/generated/data/cosmere/recipes/metal_vial.json +++ b/src/main/generated/data/cosmere/recipes/metal_vial.json @@ -1,9 +1,5 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "X", - "Y" - ], "key": { "X": { "item": "minecraft:iron_nugget" @@ -12,6 +8,10 @@ "item": "minecraft:glass" } }, + "pattern": [ + "X", + "Y" + ], "result": { "item": "cosmere:metal_vial" } diff --git a/src/main/generated/data/cosmere/recipes/metalworking_table.json b/src/main/generated/data/cosmere/recipes/metalworking_table.json index dcaa2cc76..504f24d09 100644 --- a/src/main/generated/data/cosmere/recipes/metalworking_table.json +++ b/src/main/generated/data/cosmere/recipes/metalworking_table.json @@ -1,10 +1,5 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "XX", - "YY", - "YY" - ], "key": { "X": { "tag": "forge:ingots" @@ -13,6 +8,11 @@ "tag": "minecraft:planks" } }, + "pattern": [ + "XX", + "YY", + "YY" + ], "result": { "item": "cosmere:metalworking_table" } diff --git a/src/main/generated/data/cosmere/recipes/nickel_block.json b/src/main/generated/data/cosmere/recipes/nickel_block.json index cf4470dcc..6b463f9ae 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_block.json +++ b/src/main/generated/data/cosmere/recipes/nickel_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/nickel" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:nickel_block" } diff --git a/src/main/generated/data/cosmere/recipes/nickel_ingot.json b/src/main/generated/data/cosmere/recipes/nickel_ingot.json index 2aa6ba58b..44db0be8e 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_ingot.json +++ b/src/main/generated/data/cosmere/recipes/nickel_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/nickel" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:nickel_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json index b10744453..256b6710d 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json +++ b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:nickel_ore" }, - "result": "cosmere:nickel_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:nickel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json index 07a04a9b0..503b4d41d 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_nickel_ore" }, - "result": "cosmere:nickel_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:nickel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json index d964cec4d..7d1c7f2a1 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json +++ b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:nickel_ore" }, - "result": "cosmere:nickel_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:nickel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json index 0acc69a8c..831a38906 100644 --- a/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json +++ b/src/main/generated/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_nickel_ore" }, - "result": "cosmere:nickel_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:nickel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_block.json b/src/main/generated/data/cosmere/recipes/nicrosil_block.json index 52a549d27..3dbb5db79 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_block.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/nicrosil" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:nicrosil_block" } diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/nicrosil_bracelet_metalmind.json index d054b45b5..a62c4f799 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/nicrosil" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:nicrosil_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_ingot.json b/src/main/generated/data/cosmere/recipes/nicrosil_ingot.json index 108f6a039..01f87f983 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_ingot.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/nicrosil" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:nicrosil_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json b/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json index 1fe7a0a5e..02fde670c 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:nicrosil_blend" }, - "result": "cosmere:nicrosil_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:nicrosil_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json b/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json index cdbc2822a..1175256a4 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:nicrosil_blend" }, - "result": "cosmere:nicrosil_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:nicrosil_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/nicrosil_necklace_metalmind.json index 38f015ce6..850264e52 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/nicrosil" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:nicrosil_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/nicrosil_ring_metalmind.json index 9808fcd6c..e673c552f 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/nicrosil" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:nicrosil_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/nicrosil_spike.json b/src/main/generated/data/cosmere/recipes/nicrosil_spike.json index 01c2055be..c8222f7e4 100644 --- a/src/main/generated/data/cosmere/recipes/nicrosil_spike.json +++ b/src/main/generated/data/cosmere/recipes/nicrosil_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/nicrosil" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:nicrosil_spike" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_block.json b/src/main/generated/data/cosmere/recipes/pewter_block.json index 4d51e46e5..d21efe39a 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_block.json +++ b/src/main/generated/data/cosmere/recipes/pewter_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/pewter" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:pewter_block" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/pewter_bracelet_metalmind.json index 8468cd911..2c16b9de0 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/pewter_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/pewter" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:pewter_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_ingot.json b/src/main/generated/data/cosmere/recipes/pewter_ingot.json index 1838d0ef2..9f47620d6 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_ingot.json +++ b/src/main/generated/data/cosmere/recipes/pewter_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/pewter" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:pewter_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json b/src/main/generated/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json index edb0f4dd8..baa43ea08 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json +++ b/src/main/generated/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:pewter_blend" }, - "result": "cosmere:pewter_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:pewter_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json b/src/main/generated/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json index 7822a95a1..88e939ab3 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json +++ b/src/main/generated/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:pewter_blend" }, - "result": "cosmere:pewter_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:pewter_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/pewter_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/pewter_necklace_metalmind.json index 825b37942..a48d4d63a 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/pewter_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/pewter" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:pewter_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/pewter_ring_metalmind.json index 3a273fe4c..d3cfa6f62 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/pewter_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/pewter" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:pewter_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/pewter_spike.json b/src/main/generated/data/cosmere/recipes/pewter_spike.json index 164e2f97a..b2854ba27 100644 --- a/src/main/generated/data/cosmere/recipes/pewter_spike.json +++ b/src/main/generated/data/cosmere/recipes/pewter_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/pewter" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:pewter_spike" } diff --git a/src/main/generated/data/cosmere/recipes/silver_block.json b/src/main/generated/data/cosmere/recipes/silver_block.json index e52c4e588..edda32ec0 100644 --- a/src/main/generated/data/cosmere/recipes/silver_block.json +++ b/src/main/generated/data/cosmere/recipes/silver_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/silver" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:silver_block" } diff --git a/src/main/generated/data/cosmere/recipes/silver_ingot.json b/src/main/generated/data/cosmere/recipes/silver_ingot.json index 1509eb0f9..66a8f5a38 100644 --- a/src/main/generated/data/cosmere/recipes/silver_ingot.json +++ b/src/main/generated/data/cosmere/recipes/silver_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/silver" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:silver_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json b/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json index a9a32803d..05fcb5a23 100644 --- a/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_silver_ore" }, - "result": "cosmere:silver_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:silver_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json b/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json index 8edf81fa9..062bab858 100644 --- a/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json +++ b/src/main/generated/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:silver_ore" }, - "result": "cosmere:silver_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:silver_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json b/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json index 828941b6d..46abae8f2 100644 --- a/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json +++ b/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_silver_ore" }, - "result": "cosmere:silver_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:silver_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json b/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json index 6b193e3eb..b5c9daf6f 100644 --- a/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json +++ b/src/main/generated/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:silver_ore" }, - "result": "cosmere:silver_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:silver_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/steel_block.json b/src/main/generated/data/cosmere/recipes/steel_block.json index f3f12d159..2134b5d75 100644 --- a/src/main/generated/data/cosmere/recipes/steel_block.json +++ b/src/main/generated/data/cosmere/recipes/steel_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/steel" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:steel_block" } diff --git a/src/main/generated/data/cosmere/recipes/steel_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/steel_bracelet_metalmind.json index 6b6625220..1b1d75e52 100644 --- a/src/main/generated/data/cosmere/recipes/steel_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/steel_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/steel" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:steel_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/steel_ingot.json b/src/main/generated/data/cosmere/recipes/steel_ingot.json index ac1b1370a..77db4cedd 100644 --- a/src/main/generated/data/cosmere/recipes/steel_ingot.json +++ b/src/main/generated/data/cosmere/recipes/steel_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/steel" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:steel_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json b/src/main/generated/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json index b00205db9..0dfe23798 100644 --- a/src/main/generated/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json +++ b/src/main/generated/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:steel_blend" }, - "result": "cosmere:steel_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:steel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json b/src/main/generated/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json index 71facd737..c4b54ff46 100644 --- a/src/main/generated/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json +++ b/src/main/generated/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:steel_blend" }, - "result": "cosmere:steel_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:steel_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/steel_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/steel_necklace_metalmind.json index f75ec6a39..c6051c3e9 100644 --- a/src/main/generated/data/cosmere/recipes/steel_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/steel_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/steel" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:steel_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/steel_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/steel_ring_metalmind.json index 98c079a1d..05b5bc3b1 100644 --- a/src/main/generated/data/cosmere/recipes/steel_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/steel_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/steel" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:steel_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/steel_spike.json b/src/main/generated/data/cosmere/recipes/steel_spike.json index 373b75f25..a7d226564 100644 --- a/src/main/generated/data/cosmere/recipes/steel_spike.json +++ b/src/main/generated/data/cosmere/recipes/steel_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/steel" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:steel_spike" } diff --git a/src/main/generated/data/cosmere/recipes/tin_block.json b/src/main/generated/data/cosmere/recipes/tin_block.json index 9e8772957..32f19bda1 100644 --- a/src/main/generated/data/cosmere/recipes/tin_block.json +++ b/src/main/generated/data/cosmere/recipes/tin_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/tin" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:tin_block" } diff --git a/src/main/generated/data/cosmere/recipes/tin_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/tin_bracelet_metalmind.json index 9f8c2d561..5b9040994 100644 --- a/src/main/generated/data/cosmere/recipes/tin_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/tin_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/tin" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:tin_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/tin_ingot.json b/src/main/generated/data/cosmere/recipes/tin_ingot.json index 60be94fd5..bd308c2b7 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ingot.json +++ b/src/main/generated/data/cosmere/recipes/tin_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/tin" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:tin_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json b/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json index 7363fa0b8..fe69fdf5d 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_tin_ore" }, - "result": "cosmere:tin_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:tin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json b/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json index 017323881..9e7d1dfe1 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json +++ b/src/main/generated/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:tin_ore" }, - "result": "cosmere:tin_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:tin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json b/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json index ffdcc352e..ab3c4402b 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json +++ b/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_tin_ore" }, - "result": "cosmere:tin_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:tin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json b/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json index e77311dc9..991383657 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json +++ b/src/main/generated/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:tin_ore" }, - "result": "cosmere:tin_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:tin_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/tin_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/tin_necklace_metalmind.json index aedafcf43..21a58815d 100644 --- a/src/main/generated/data/cosmere/recipes/tin_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/tin_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/tin" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:tin_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/tin_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/tin_ring_metalmind.json index 5ccf65ae5..ed4bbb1f3 100644 --- a/src/main/generated/data/cosmere/recipes/tin_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/tin_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/tin" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:tin_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/tin_spike.json b/src/main/generated/data/cosmere/recipes/tin_spike.json index a15796eb1..528e2cbad 100644 --- a/src/main/generated/data/cosmere/recipes/tin_spike.json +++ b/src/main/generated/data/cosmere/recipes/tin_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/tin" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:tin_spike" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_block.json b/src/main/generated/data/cosmere/recipes/zinc_block.json index 95d8eef46..b5c28a5cf 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_block.json +++ b/src/main/generated/data/cosmere/recipes/zinc_block.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:ingots/zinc" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:zinc_block" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_bracelet_metalmind.json b/src/main/generated/data/cosmere/recipes/zinc_bracelet_metalmind.json index 660c4cb53..77383f9dc 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_bracelet_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/zinc_bracelet_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "bracelet", - "pattern": [ - " X ", - "X X", - "X X" - ], "key": { "X": { "tag": "forge:ingots/zinc" } }, + "pattern": [ + " X ", + "X X", + "X X" + ], "result": { "item": "cosmere:zinc_bracelet_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_ingot.json b/src/main/generated/data/cosmere/recipes/zinc_ingot.json index 17c7183de..6cd6b32ec 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ingot.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ingot.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", - "pattern": [ - "III", - "III", - "III" - ], "key": { "I": { "tag": "forge:nuggets/zinc" } }, + "pattern": [ + "III", + "III", + "III" + ], "result": { "item": "cosmere:zinc_ingot" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json index 869845e20..0794cb5e0 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_zinc_ore" }, - "result": "cosmere:zinc_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:zinc_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json index 3e58dffcd..5ba24027a 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:blasting", + "cookingtime": 100, + "experience": 1.0, "ingredient": { "item": "cosmere:zinc_ore" }, - "result": "cosmere:zinc_ingot", - "experience": 1.0, - "cookingtime": 100 + "result": "cosmere:zinc_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json index 6fb174e6a..0bf719677 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:raw_zinc_ore" }, - "result": "cosmere:zinc_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:zinc_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json index c4688c16e..ef19ff045 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json @@ -1,9 +1,9 @@ { "type": "minecraft:smelting", + "cookingtime": 200, + "experience": 1.0, "ingredient": { "item": "cosmere:zinc_ore" }, - "result": "cosmere:zinc_ingot", - "experience": 1.0, - "cookingtime": 200 + "result": "cosmere:zinc_ingot" } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/zinc_necklace_metalmind.json b/src/main/generated/data/cosmere/recipes/zinc_necklace_metalmind.json index cc89844fe..edd8454f6 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_necklace_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/zinc_necklace_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "necklace", - "pattern": [ - "XXX", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/zinc" } }, + "pattern": [ + "XXX", + "X X", + " X " + ], "result": { "item": "cosmere:zinc_necklace_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_ring_metalmind.json b/src/main/generated/data/cosmere/recipes/zinc_ring_metalmind.json index c0209f034..283aea0a6 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_ring_metalmind.json +++ b/src/main/generated/data/cosmere/recipes/zinc_ring_metalmind.json @@ -1,16 +1,16 @@ { "type": "minecraft:crafting_shaped", "group": "ring", - "pattern": [ - " X ", - "X X", - " X " - ], "key": { "X": { "tag": "forge:ingots/zinc" } }, + "pattern": [ + " X ", + "X X", + " X " + ], "result": { "item": "cosmere:zinc_ring_metalmind" } diff --git a/src/main/generated/data/cosmere/recipes/zinc_spike.json b/src/main/generated/data/cosmere/recipes/zinc_spike.json index 62574a604..03b313c3e 100644 --- a/src/main/generated/data/cosmere/recipes/zinc_spike.json +++ b/src/main/generated/data/cosmere/recipes/zinc_spike.json @@ -1,15 +1,15 @@ { "type": "minecraft:crafting_shaped", "group": "spike", - "pattern": [ - "X", - "X" - ], "key": { "X": { "tag": "forge:ingots/zinc" } }, + "pattern": [ + "X", + "X" + ], "result": { "item": "cosmere:zinc_spike" } diff --git a/src/main/generated/data/cosmere/tags/items/spike.json b/src/main/generated/data/cosmere/tags/items/spike.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/cosmere/tags/items/spike.json +++ b/src/main/generated/data/cosmere/tags/items/spike.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/back.json b/src/main/generated/data/curios/tags/items/back.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/back.json +++ b/src/main/generated/data/curios/tags/items/back.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/body.json b/src/main/generated/data/curios/tags/items/body.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/body.json +++ b/src/main/generated/data/curios/tags/items/body.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/bracelet.json b/src/main/generated/data/curios/tags/items/bracelet.json index 7cdc7b0c1..9d1bea9bc 100644 --- a/src/main/generated/data/curios/tags/items/bracelet.json +++ b/src/main/generated/data/curios/tags/items/bracelet.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bands_of_mourning", "cosmere:iron_bracelet_metalmind", diff --git a/src/main/generated/data/curios/tags/items/feet.json b/src/main/generated/data/curios/tags/items/feet.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/feet.json +++ b/src/main/generated/data/curios/tags/items/feet.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/hands.json b/src/main/generated/data/curios/tags/items/hands.json index 7cdc7b0c1..9d1bea9bc 100644 --- a/src/main/generated/data/curios/tags/items/hands.json +++ b/src/main/generated/data/curios/tags/items/hands.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bands_of_mourning", "cosmere:iron_bracelet_metalmind", diff --git a/src/main/generated/data/curios/tags/items/head.json b/src/main/generated/data/curios/tags/items/head.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/head.json +++ b/src/main/generated/data/curios/tags/items/head.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/legs.json b/src/main/generated/data/curios/tags/items/legs.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/legs.json +++ b/src/main/generated/data/curios/tags/items/legs.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/linchpin.json b/src/main/generated/data/curios/tags/items/linchpin.json index 25f6cb518..04b4e1347 100644 --- a/src/main/generated/data/curios/tags/items/linchpin.json +++ b/src/main/generated/data/curios/tags/items/linchpin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_spike", "cosmere:steel_spike", diff --git a/src/main/generated/data/curios/tags/items/necklace.json b/src/main/generated/data/curios/tags/items/necklace.json index cecc4abe9..729fb26ec 100644 --- a/src/main/generated/data/curios/tags/items/necklace.json +++ b/src/main/generated/data/curios/tags/items/necklace.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_necklace_metalmind", "cosmere:steel_necklace_metalmind", diff --git a/src/main/generated/data/curios/tags/items/ring.json b/src/main/generated/data/curios/tags/items/ring.json index d164fc590..cbd1102ad 100644 --- a/src/main/generated/data/curios/tags/items/ring.json +++ b/src/main/generated/data/curios/tags/items/ring.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:iron_ring_metalmind", "cosmere:steel_ring_metalmind", diff --git a/src/main/generated/data/forge/tags/blocks/ores/aluminum.json b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json index d294b8955..4bbad286e 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/aluminum.json +++ b/src/main/generated/data/forge/tags/blocks/ores/aluminum.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:aluminum_ore", - "cosmere:aluminum_ore_deepslate" + "cosmere:deepslate_aluminum_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/cadmium.json b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json index b18c13b6c..dd89f5fa6 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/cadmium.json +++ b/src/main/generated/data/forge/tags/blocks/ores/cadmium.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:cadmium_ore", - "cosmere:cadmium_ore_deepslate" + "cosmere:deepslate_cadmium_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/chromium.json b/src/main/generated/data/forge/tags/blocks/ores/chromium.json index bc202aead..1dd452376 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/chromium.json +++ b/src/main/generated/data/forge/tags/blocks/ores/chromium.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:chromium_ore", - "cosmere:chromium_ore_deepslate" + "cosmere:deepslate_chromium_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/lead.json b/src/main/generated/data/forge/tags/blocks/ores/lead.json index b8785b2bf..6bcad2805 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/lead.json +++ b/src/main/generated/data/forge/tags/blocks/ores/lead.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:lead_ore", - "cosmere:lead_ore_deepslate" + "cosmere:deepslate_lead_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/nickel.json b/src/main/generated/data/forge/tags/blocks/ores/nickel.json index 81e7f31b0..b7b9da98b 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/nickel.json +++ b/src/main/generated/data/forge/tags/blocks/ores/nickel.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:nickel_ore", - "cosmere:nickel_ore_deepslate" + "cosmere:deepslate_nickel_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/silver.json b/src/main/generated/data/forge/tags/blocks/ores/silver.json index f6b71eed9..b9f698639 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/silver.json +++ b/src/main/generated/data/forge/tags/blocks/ores/silver.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:silver_ore", - "cosmere:silver_ore_deepslate" + "cosmere:deepslate_silver_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/tin.json b/src/main/generated/data/forge/tags/blocks/ores/tin.json index 968c41721..948498dc6 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/tin.json +++ b/src/main/generated/data/forge/tags/blocks/ores/tin.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:tin_ore", - "cosmere:tin_ore_deepslate" + "cosmere:deepslate_tin_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/ores/zinc.json b/src/main/generated/data/forge/tags/blocks/ores/zinc.json index 23a17ba76..8ed61c0e0 100644 --- a/src/main/generated/data/forge/tags/blocks/ores/zinc.json +++ b/src/main/generated/data/forge/tags/blocks/ores/zinc.json @@ -1,7 +1,6 @@ { - "replace": false, "values": [ "cosmere:zinc_ore", - "cosmere:zinc_ore_deepslate" + "cosmere:deepslate_zinc_ore" ] } \ No newline at end of file diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks.json b/src/main/generated/data/forge/tags/blocks/storage_blocks.json index d0aa6331c..84c17c2ca 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_block", "cosmere:tin_block", diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/aluminum.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/aluminum.json index 075d2b79b..e08272e80 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/aluminum.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/aluminum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:aluminum_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/atium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/atium.json index 5a0e54535..f525617d3 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/atium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/atium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:atium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/bendalloy.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/bendalloy.json index 09506f83d..6c49113e2 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/bendalloy.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/bendalloy.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bendalloy_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/brass.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/brass.json index 38f45d2be..d48e299d0 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/brass.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/brass.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:brass_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/bronze.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/bronze.json index a89b319be..bcd8876cf 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/bronze.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/bronze.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bronze_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/cadmium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/cadmium.json index 4d5251782..242b863bc 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/cadmium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/cadmium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:cadmium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/chromium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/chromium.json index eba0a7fff..28db3b475 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/chromium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/chromium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:chromium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/copper.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/copper.json index 4681753c0..665550ca3 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/copper.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/copper.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:copper_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/duralumin.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/duralumin.json index f2826771e..be3173b6c 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/duralumin.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/duralumin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:duralumin_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/electrum.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/electrum.json index 39e610547..795d16464 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/electrum.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/electrum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:electrum_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/harmonium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/harmonium.json index b89793121..fca3625ec 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/harmonium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/harmonium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:harmonium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/lead.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/lead.json index 13e069c6d..c3e9dda66 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/lead.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/lead.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lead_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasatium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasatium.json index 17d6e6815..7493b185f 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasatium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasatium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasium.json index f8cc0f443..caea1a897 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/lerasium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/malatium.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/malatium.json index 5e3b83f6c..e4996678d 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/malatium.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/malatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:malatium_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/nickel.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/nickel.json index 122546115..3880946ea 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/nickel.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/nickel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nickel_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/nicrosil.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/nicrosil.json index 720144bee..b5c01a260 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/nicrosil.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/nicrosil.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nicrosil_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/pewter.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/pewter.json index 19745cae3..15b5d1b99 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/pewter.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/pewter.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:pewter_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/silver.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/silver.json index ee31583b0..f8798aebc 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/silver.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/silver.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:silver_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/steel.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/steel.json index 530d517a4..2b4b59155 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/steel.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/steel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json index b1f3fac82..7ce21e893 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:tin_block" ] diff --git a/src/main/generated/data/forge/tags/blocks/storage_blocks/zinc.json b/src/main/generated/data/forge/tags/blocks/storage_blocks/zinc.json index 2be9bfb3b..287b64a07 100644 --- a/src/main/generated/data/forge/tags/blocks/storage_blocks/zinc.json +++ b/src/main/generated/data/forge/tags/blocks/storage_blocks/zinc.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:zinc_block" ] diff --git a/src/main/generated/data/forge/tags/items/gems.json b/src/main/generated/data/forge/tags/items/gems.json index 20a4ac4c5..ce36759cf 100644 --- a/src/main/generated/data/forge/tags/items/gems.json +++ b/src/main/generated/data/forge/tags/items/gems.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:sapphire_broam", "cosmere:sapphire_mark", diff --git a/src/main/generated/data/forge/tags/items/gems/amethyst.json b/src/main/generated/data/forge/tags/items/gems/amethyst.json index 29128ded6..bc47c36dc 100644 --- a/src/main/generated/data/forge/tags/items/gems/amethyst.json +++ b/src/main/generated/data/forge/tags/items/gems/amethyst.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:amethyst_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/diamond.json b/src/main/generated/data/forge/tags/items/gems/diamond.json index 5eaa0aa52..35f62f3f8 100644 --- a/src/main/generated/data/forge/tags/items/gems/diamond.json +++ b/src/main/generated/data/forge/tags/items/gems/diamond.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:diamond_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/emerald.json b/src/main/generated/data/forge/tags/items/gems/emerald.json index 5642d1502..255bebf6b 100644 --- a/src/main/generated/data/forge/tags/items/gems/emerald.json +++ b/src/main/generated/data/forge/tags/items/gems/emerald.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:emerald_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/garnet.json b/src/main/generated/data/forge/tags/items/gems/garnet.json index b3fd5abfa..f6fb67499 100644 --- a/src/main/generated/data/forge/tags/items/gems/garnet.json +++ b/src/main/generated/data/forge/tags/items/gems/garnet.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:garnet_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/heliodor.json b/src/main/generated/data/forge/tags/items/gems/heliodor.json index 63da03842..b8d070bb2 100644 --- a/src/main/generated/data/forge/tags/items/gems/heliodor.json +++ b/src/main/generated/data/forge/tags/items/gems/heliodor.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:heliodor_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/ruby.json b/src/main/generated/data/forge/tags/items/gems/ruby.json index a037c1862..52d306c54 100644 --- a/src/main/generated/data/forge/tags/items/gems/ruby.json +++ b/src/main/generated/data/forge/tags/items/gems/ruby.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:ruby_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/sapphire.json b/src/main/generated/data/forge/tags/items/gems/sapphire.json index 15feb68e4..337c41a27 100644 --- a/src/main/generated/data/forge/tags/items/gems/sapphire.json +++ b/src/main/generated/data/forge/tags/items/gems/sapphire.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:sapphire_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/smokestone.json b/src/main/generated/data/forge/tags/items/gems/smokestone.json index a171841bf..dec4ad28e 100644 --- a/src/main/generated/data/forge/tags/items/gems/smokestone.json +++ b/src/main/generated/data/forge/tags/items/gems/smokestone.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:smokestone_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/topaz.json b/src/main/generated/data/forge/tags/items/gems/topaz.json index 7cd4e3e18..b7031a55e 100644 --- a/src/main/generated/data/forge/tags/items/gems/topaz.json +++ b/src/main/generated/data/forge/tags/items/gems/topaz.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:topaz_broam" ] diff --git a/src/main/generated/data/forge/tags/items/gems/zircon.json b/src/main/generated/data/forge/tags/items/gems/zircon.json index dbae28fac..a5af8592c 100644 --- a/src/main/generated/data/forge/tags/items/gems/zircon.json +++ b/src/main/generated/data/forge/tags/items/gems/zircon.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:zircon_broam" ] diff --git a/src/main/generated/data/forge/tags/items/ingots.json b/src/main/generated/data/forge/tags/items/ingots.json index 3fc833e27..d6b7712d4 100644 --- a/src/main/generated/data/forge/tags/items/ingots.json +++ b/src/main/generated/data/forge/tags/items/ingots.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_ingot", "#forge:ingots/steel", diff --git a/src/main/generated/data/forge/tags/items/ingots/aluminum.json b/src/main/generated/data/forge/tags/items/ingots/aluminum.json index 3a7fea2a3..9aaf168ea 100644 --- a/src/main/generated/data/forge/tags/items/ingots/aluminum.json +++ b/src/main/generated/data/forge/tags/items/ingots/aluminum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:aluminum_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/atium.json b/src/main/generated/data/forge/tags/items/ingots/atium.json index 91a5c2513..6ea29605a 100644 --- a/src/main/generated/data/forge/tags/items/ingots/atium.json +++ b/src/main/generated/data/forge/tags/items/ingots/atium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:atium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/bendalloy.json b/src/main/generated/data/forge/tags/items/ingots/bendalloy.json index 0523f0d8d..c12ad1b80 100644 --- a/src/main/generated/data/forge/tags/items/ingots/bendalloy.json +++ b/src/main/generated/data/forge/tags/items/ingots/bendalloy.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bendalloy_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/brass.json b/src/main/generated/data/forge/tags/items/ingots/brass.json index a4ccfe503..de276f9b3 100644 --- a/src/main/generated/data/forge/tags/items/ingots/brass.json +++ b/src/main/generated/data/forge/tags/items/ingots/brass.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:brass_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/bronze.json b/src/main/generated/data/forge/tags/items/ingots/bronze.json index e0659f152..1f36ce176 100644 --- a/src/main/generated/data/forge/tags/items/ingots/bronze.json +++ b/src/main/generated/data/forge/tags/items/ingots/bronze.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bronze_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/cadmium.json b/src/main/generated/data/forge/tags/items/ingots/cadmium.json index 9be09dcab..398ba9fe4 100644 --- a/src/main/generated/data/forge/tags/items/ingots/cadmium.json +++ b/src/main/generated/data/forge/tags/items/ingots/cadmium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:cadmium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/chromium.json b/src/main/generated/data/forge/tags/items/ingots/chromium.json index 4fcd9b314..d0133a8b7 100644 --- a/src/main/generated/data/forge/tags/items/ingots/chromium.json +++ b/src/main/generated/data/forge/tags/items/ingots/chromium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:chromium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/copper.json b/src/main/generated/data/forge/tags/items/ingots/copper.json index ffb2a84e9..a12449945 100644 --- a/src/main/generated/data/forge/tags/items/ingots/copper.json +++ b/src/main/generated/data/forge/tags/items/ingots/copper.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:copper_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/duralumin.json b/src/main/generated/data/forge/tags/items/ingots/duralumin.json index 1f4dc01cb..d170b9965 100644 --- a/src/main/generated/data/forge/tags/items/ingots/duralumin.json +++ b/src/main/generated/data/forge/tags/items/ingots/duralumin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:duralumin_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/electrum.json b/src/main/generated/data/forge/tags/items/ingots/electrum.json index 5064601c5..fafdd4e1b 100644 --- a/src/main/generated/data/forge/tags/items/ingots/electrum.json +++ b/src/main/generated/data/forge/tags/items/ingots/electrum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:electrum_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/harmonium.json b/src/main/generated/data/forge/tags/items/ingots/harmonium.json index c46d46f4b..6f5f0ff01 100644 --- a/src/main/generated/data/forge/tags/items/ingots/harmonium.json +++ b/src/main/generated/data/forge/tags/items/ingots/harmonium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:harmonium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/lead.json b/src/main/generated/data/forge/tags/items/ingots/lead.json index 75138a350..db1fb4781 100644 --- a/src/main/generated/data/forge/tags/items/ingots/lead.json +++ b/src/main/generated/data/forge/tags/items/ingots/lead.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lead_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/lerasatium.json b/src/main/generated/data/forge/tags/items/ingots/lerasatium.json index 0814c5887..a03b9f4e7 100644 --- a/src/main/generated/data/forge/tags/items/ingots/lerasatium.json +++ b/src/main/generated/data/forge/tags/items/ingots/lerasatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasatium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/lerasium.json b/src/main/generated/data/forge/tags/items/ingots/lerasium.json index f47f037a3..12c9ed50d 100644 --- a/src/main/generated/data/forge/tags/items/ingots/lerasium.json +++ b/src/main/generated/data/forge/tags/items/ingots/lerasium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/malatium.json b/src/main/generated/data/forge/tags/items/ingots/malatium.json index 4f519bc83..10cadb1e9 100644 --- a/src/main/generated/data/forge/tags/items/ingots/malatium.json +++ b/src/main/generated/data/forge/tags/items/ingots/malatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:malatium_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/nickel.json b/src/main/generated/data/forge/tags/items/ingots/nickel.json index abe58167d..f386b95f8 100644 --- a/src/main/generated/data/forge/tags/items/ingots/nickel.json +++ b/src/main/generated/data/forge/tags/items/ingots/nickel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nickel_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/nicrosil.json b/src/main/generated/data/forge/tags/items/ingots/nicrosil.json index a1d0732ee..a40592662 100644 --- a/src/main/generated/data/forge/tags/items/ingots/nicrosil.json +++ b/src/main/generated/data/forge/tags/items/ingots/nicrosil.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nicrosil_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/pewter.json b/src/main/generated/data/forge/tags/items/ingots/pewter.json index 81e78d471..017166bfe 100644 --- a/src/main/generated/data/forge/tags/items/ingots/pewter.json +++ b/src/main/generated/data/forge/tags/items/ingots/pewter.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:pewter_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/silver.json b/src/main/generated/data/forge/tags/items/ingots/silver.json index 1b25f1fe5..846fce325 100644 --- a/src/main/generated/data/forge/tags/items/ingots/silver.json +++ b/src/main/generated/data/forge/tags/items/ingots/silver.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:silver_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/steel.json b/src/main/generated/data/forge/tags/items/ingots/steel.json index 7226f5b4b..0adef1e81 100644 --- a/src/main/generated/data/forge/tags/items/ingots/steel.json +++ b/src/main/generated/data/forge/tags/items/ingots/steel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/tin.json b/src/main/generated/data/forge/tags/items/ingots/tin.json index 30751d95c..954f53b81 100644 --- a/src/main/generated/data/forge/tags/items/ingots/tin.json +++ b/src/main/generated/data/forge/tags/items/ingots/tin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:tin_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/ingots/zinc.json b/src/main/generated/data/forge/tags/items/ingots/zinc.json index eda4a4c22..5e7119523 100644 --- a/src/main/generated/data/forge/tags/items/ingots/zinc.json +++ b/src/main/generated/data/forge/tags/items/ingots/zinc.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:zinc_ingot" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets.json b/src/main/generated/data/forge/tags/items/nuggets.json index db6a78342..4688c61de 100644 --- a/src/main/generated/data/forge/tags/items/nuggets.json +++ b/src/main/generated/data/forge/tags/items/nuggets.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "#forge:nuggets/steel", "cosmere:steel_nugget", diff --git a/src/main/generated/data/forge/tags/items/nuggets/aluminum.json b/src/main/generated/data/forge/tags/items/nuggets/aluminum.json index 9a7275b5d..19e649e51 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/aluminum.json +++ b/src/main/generated/data/forge/tags/items/nuggets/aluminum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:aluminum_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/atium.json b/src/main/generated/data/forge/tags/items/nuggets/atium.json index 7ae8a21c4..17b2464f1 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/atium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/atium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:atium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/bendalloy.json b/src/main/generated/data/forge/tags/items/nuggets/bendalloy.json index 676e2c485..de7d7a478 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/bendalloy.json +++ b/src/main/generated/data/forge/tags/items/nuggets/bendalloy.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bendalloy_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/brass.json b/src/main/generated/data/forge/tags/items/nuggets/brass.json index 16e8559ae..4a1e4ffbf 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/brass.json +++ b/src/main/generated/data/forge/tags/items/nuggets/brass.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:brass_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/bronze.json b/src/main/generated/data/forge/tags/items/nuggets/bronze.json index 3f9b74b1c..ceed53474 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/bronze.json +++ b/src/main/generated/data/forge/tags/items/nuggets/bronze.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bronze_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/cadmium.json b/src/main/generated/data/forge/tags/items/nuggets/cadmium.json index f04bd7135..6c67a1c8a 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/cadmium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/cadmium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:cadmium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/chromium.json b/src/main/generated/data/forge/tags/items/nuggets/chromium.json index a29698b67..35612c6a5 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/chromium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/chromium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:chromium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/copper.json b/src/main/generated/data/forge/tags/items/nuggets/copper.json index b4d60d3ca..608f3c035 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/copper.json +++ b/src/main/generated/data/forge/tags/items/nuggets/copper.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:copper_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/duralumin.json b/src/main/generated/data/forge/tags/items/nuggets/duralumin.json index 2e03b3881..2876da5b1 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/duralumin.json +++ b/src/main/generated/data/forge/tags/items/nuggets/duralumin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:duralumin_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/electrum.json b/src/main/generated/data/forge/tags/items/nuggets/electrum.json index 341eb2bb1..206ae5cac 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/electrum.json +++ b/src/main/generated/data/forge/tags/items/nuggets/electrum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:electrum_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/harmonium.json b/src/main/generated/data/forge/tags/items/nuggets/harmonium.json index 1a98e0442..a1960cb2b 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/harmonium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/harmonium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:harmonium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/lead.json b/src/main/generated/data/forge/tags/items/nuggets/lead.json index 3f6956c70..d333bf6b9 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/lead.json +++ b/src/main/generated/data/forge/tags/items/nuggets/lead.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lead_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/lerasatium.json b/src/main/generated/data/forge/tags/items/nuggets/lerasatium.json index 6f03291b7..e838d9868 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/lerasatium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/lerasatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasatium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/lerasium.json b/src/main/generated/data/forge/tags/items/nuggets/lerasium.json index 19341c4b0..a911c0d54 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/lerasium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/lerasium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/malatium.json b/src/main/generated/data/forge/tags/items/nuggets/malatium.json index 78be22d44..5df13b170 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/malatium.json +++ b/src/main/generated/data/forge/tags/items/nuggets/malatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:malatium_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/nickel.json b/src/main/generated/data/forge/tags/items/nuggets/nickel.json index c18d7a897..c155f4024 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/nickel.json +++ b/src/main/generated/data/forge/tags/items/nuggets/nickel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nickel_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/nicrosil.json b/src/main/generated/data/forge/tags/items/nuggets/nicrosil.json index b8194993c..31bf183ea 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/nicrosil.json +++ b/src/main/generated/data/forge/tags/items/nuggets/nicrosil.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nicrosil_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/pewter.json b/src/main/generated/data/forge/tags/items/nuggets/pewter.json index 2309c6853..8d49becc2 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/pewter.json +++ b/src/main/generated/data/forge/tags/items/nuggets/pewter.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:pewter_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/silver.json b/src/main/generated/data/forge/tags/items/nuggets/silver.json index 32a94e52d..13dbe1c49 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/silver.json +++ b/src/main/generated/data/forge/tags/items/nuggets/silver.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:silver_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/steel.json b/src/main/generated/data/forge/tags/items/nuggets/steel.json index 9ca9d07a4..78c34587b 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/steel.json +++ b/src/main/generated/data/forge/tags/items/nuggets/steel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/tin.json b/src/main/generated/data/forge/tags/items/nuggets/tin.json index f3d3bf1f8..b1c5a743c 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/tin.json +++ b/src/main/generated/data/forge/tags/items/nuggets/tin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:tin_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/nuggets/zinc.json b/src/main/generated/data/forge/tags/items/nuggets/zinc.json index 70a8583c8..0d48ce159 100644 --- a/src/main/generated/data/forge/tags/items/nuggets/zinc.json +++ b/src/main/generated/data/forge/tags/items/nuggets/zinc.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:zinc_nugget" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/aluminum.json b/src/main/generated/data/forge/tags/items/raw_materials/aluminum.json index a87b5a4ca..ce5a1eb4e 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/aluminum.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/aluminum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_aluminum_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json b/src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json index 40e2545b5..987f35d40 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/bendalloy.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bendalloy_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/brass.json b/src/main/generated/data/forge/tags/items/raw_materials/brass.json index d76219fb7..e87181989 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/brass.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/brass.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:brass_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/bronze.json b/src/main/generated/data/forge/tags/items/raw_materials/bronze.json index 5158333a0..baf1de772 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/bronze.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/bronze.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bronze_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/cadmium.json b/src/main/generated/data/forge/tags/items/raw_materials/cadmium.json index 53d57eb7a..0aa3f993a 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/cadmium.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/cadmium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_cadmium_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/chromium.json b/src/main/generated/data/forge/tags/items/raw_materials/chromium.json index 2877515fc..19a9072e5 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/chromium.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/chromium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_chromium_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/duralumin.json b/src/main/generated/data/forge/tags/items/raw_materials/duralumin.json index de6d6335f..5a6b2dc25 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/duralumin.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/duralumin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:duralumin_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/electrum.json b/src/main/generated/data/forge/tags/items/raw_materials/electrum.json index 20bc9c72b..ff01e273d 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/electrum.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/electrum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:electrum_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/lead.json b/src/main/generated/data/forge/tags/items/raw_materials/lead.json index e390f0f12..750895d5f 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/lead.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/lead.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_lead_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/nickel.json b/src/main/generated/data/forge/tags/items/raw_materials/nickel.json index 8dd9db323..7c39acf6a 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/nickel.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/nickel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_nickel_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json b/src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json index 356e3efff..4b4e94637 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/nicrosil.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nicrosil_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/pewter.json b/src/main/generated/data/forge/tags/items/raw_materials/pewter.json index ef717c868..95a45d59e 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/pewter.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/pewter.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:pewter_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/silver.json b/src/main/generated/data/forge/tags/items/raw_materials/silver.json index f3b7fffbd..727473f69 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/silver.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/silver.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_silver_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/steel.json b/src/main/generated/data/forge/tags/items/raw_materials/steel.json index ffad46b38..c0248135e 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/steel.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/steel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_blend" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/tin.json b/src/main/generated/data/forge/tags/items/raw_materials/tin.json index 43c405f04..0a4bab04d 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/tin.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/tin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_tin_ore" ] diff --git a/src/main/generated/data/forge/tags/items/raw_materials/zinc.json b/src/main/generated/data/forge/tags/items/raw_materials/zinc.json index c4ffa62ea..31b488eaa 100644 --- a/src/main/generated/data/forge/tags/items/raw_materials/zinc.json +++ b/src/main/generated/data/forge/tags/items/raw_materials/zinc.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:raw_zinc_ore" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks.json b/src/main/generated/data/forge/tags/items/storage_blocks.json index e6f0e9762..8fbbc982e 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_block", "cosmere:tin_block", diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/aluminum.json b/src/main/generated/data/forge/tags/items/storage_blocks/aluminum.json index 075d2b79b..e08272e80 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/aluminum.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/aluminum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:aluminum_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/atium.json b/src/main/generated/data/forge/tags/items/storage_blocks/atium.json index 5a0e54535..f525617d3 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/atium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/atium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:atium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/bendalloy.json b/src/main/generated/data/forge/tags/items/storage_blocks/bendalloy.json index 09506f83d..6c49113e2 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/bendalloy.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/bendalloy.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bendalloy_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/brass.json b/src/main/generated/data/forge/tags/items/storage_blocks/brass.json index 38f45d2be..d48e299d0 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/brass.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/brass.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:brass_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/bronze.json b/src/main/generated/data/forge/tags/items/storage_blocks/bronze.json index a89b319be..bcd8876cf 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/bronze.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/bronze.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:bronze_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/cadmium.json b/src/main/generated/data/forge/tags/items/storage_blocks/cadmium.json index 4d5251782..242b863bc 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/cadmium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/cadmium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:cadmium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/chromium.json b/src/main/generated/data/forge/tags/items/storage_blocks/chromium.json index eba0a7fff..28db3b475 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/chromium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/chromium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:chromium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/copper.json b/src/main/generated/data/forge/tags/items/storage_blocks/copper.json index 4681753c0..665550ca3 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/copper.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/copper.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:copper_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/duralumin.json b/src/main/generated/data/forge/tags/items/storage_blocks/duralumin.json index f2826771e..be3173b6c 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/duralumin.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/duralumin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:duralumin_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/electrum.json b/src/main/generated/data/forge/tags/items/storage_blocks/electrum.json index 39e610547..795d16464 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/electrum.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/electrum.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:electrum_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/harmonium.json b/src/main/generated/data/forge/tags/items/storage_blocks/harmonium.json index b89793121..fca3625ec 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/harmonium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/harmonium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:harmonium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/lead.json b/src/main/generated/data/forge/tags/items/storage_blocks/lead.json index 13e069c6d..c3e9dda66 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/lead.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/lead.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lead_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/lerasatium.json b/src/main/generated/data/forge/tags/items/storage_blocks/lerasatium.json index 17d6e6815..7493b185f 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/lerasatium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/lerasatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasatium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/lerasium.json b/src/main/generated/data/forge/tags/items/storage_blocks/lerasium.json index f8cc0f443..caea1a897 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/lerasium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/lerasium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:lerasium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/malatium.json b/src/main/generated/data/forge/tags/items/storage_blocks/malatium.json index 5e3b83f6c..e4996678d 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/malatium.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/malatium.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:malatium_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/nickel.json b/src/main/generated/data/forge/tags/items/storage_blocks/nickel.json index 122546115..3880946ea 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/nickel.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/nickel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nickel_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/nicrosil.json b/src/main/generated/data/forge/tags/items/storage_blocks/nicrosil.json index 720144bee..b5c01a260 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/nicrosil.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/nicrosil.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:nicrosil_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/pewter.json b/src/main/generated/data/forge/tags/items/storage_blocks/pewter.json index 19745cae3..15b5d1b99 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/pewter.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/pewter.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:pewter_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/silver.json b/src/main/generated/data/forge/tags/items/storage_blocks/silver.json index ee31583b0..f8798aebc 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/silver.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/silver.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:silver_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/steel.json b/src/main/generated/data/forge/tags/items/storage_blocks/steel.json index 530d517a4..2b4b59155 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/steel.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/steel.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:steel_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/tin.json b/src/main/generated/data/forge/tags/items/storage_blocks/tin.json index b1f3fac82..7ce21e893 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/tin.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/tin.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:tin_block" ] diff --git a/src/main/generated/data/forge/tags/items/storage_blocks/zinc.json b/src/main/generated/data/forge/tags/items/storage_blocks/zinc.json index 2be9bfb3b..287b64a07 100644 --- a/src/main/generated/data/forge/tags/items/storage_blocks/zinc.json +++ b/src/main/generated/data/forge/tags/items/storage_blocks/zinc.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:zinc_block" ] diff --git a/src/main/generated/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/main/generated/data/minecraft/tags/blocks/beacon_base_blocks.json index e672dfa4c..fe8eeda9a 100644 --- a/src/main/generated/data/minecraft/tags/blocks/beacon_base_blocks.json +++ b/src/main/generated/data/minecraft/tags/blocks/beacon_base_blocks.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:gem_block", "cosmere:steel_block", diff --git a/src/main/generated/data/minecraft/tags/blocks/dragon_immune.json b/src/main/generated/data/minecraft/tags/blocks/dragon_immune.json index 2a3fb3d7e..30fcde33a 100644 --- a/src/main/generated/data/minecraft/tags/blocks/dragon_immune.json +++ b/src/main/generated/data/minecraft/tags/blocks/dragon_immune.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:gem_block" ] diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json index b9b746eb0..8b659889c 100644 --- a/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/axe.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:metalworking_table" ] diff --git a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json index 8bffb7780..056d99355 100644 --- a/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -1,27 +1,26 @@ { - "replace": false, "values": [ "cosmere:steel_block", "cosmere:tin_ore", - "cosmere:tin_ore_deepslate", + "cosmere:deepslate_tin_ore", "cosmere:tin_block", "cosmere:pewter_block", "cosmere:zinc_ore", - "cosmere:zinc_ore_deepslate", + "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:copper_block", "cosmere:bronze_block", "cosmere:aluminum_ore", - "cosmere:aluminum_ore_deepslate", + "cosmere:deepslate_aluminum_ore", "cosmere:aluminum_block", "cosmere:duralumin_block", "cosmere:chromium_ore", - "cosmere:chromium_ore_deepslate", + "cosmere:deepslate_chromium_ore", "cosmere:chromium_block", "cosmere:nicrosil_block", "cosmere:cadmium_ore", - "cosmere:cadmium_ore_deepslate", + "cosmere:deepslate_cadmium_ore", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -31,13 +30,13 @@ "cosmere:malatium_block", "cosmere:lerasatium_block", "cosmere:nickel_ore", - "cosmere:nickel_ore_deepslate", + "cosmere:deepslate_nickel_ore", "cosmere:nickel_block", "cosmere:lead_ore", - "cosmere:lead_ore_deepslate", + "cosmere:deepslate_lead_ore", "cosmere:lead_block", "cosmere:silver_ore", - "cosmere:silver_ore_deepslate", + "cosmere:deepslate_silver_ore", "cosmere:silver_block" ] } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json index a2ff7fda5..4ac62a4a5 100644 --- a/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json @@ -1,22 +1,21 @@ { - "replace": false, "values": [ "cosmere:steel_block", - "cosmere:tin_ore_deepslate", + "cosmere:deepslate_tin_ore", "cosmere:tin_block", "cosmere:pewter_block", - "cosmere:zinc_ore_deepslate", + "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:copper_block", "cosmere:bronze_block", - "cosmere:aluminum_ore_deepslate", + "cosmere:deepslate_aluminum_ore", "cosmere:aluminum_block", "cosmere:duralumin_block", - "cosmere:chromium_ore_deepslate", + "cosmere:deepslate_chromium_ore", "cosmere:chromium_block", "cosmere:nicrosil_block", - "cosmere:cadmium_ore_deepslate", + "cosmere:deepslate_cadmium_ore", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -25,11 +24,11 @@ "cosmere:harmonium_block", "cosmere:malatium_block", "cosmere:lerasatium_block", - "cosmere:nickel_ore_deepslate", + "cosmere:deepslate_nickel_ore", "cosmere:nickel_block", - "cosmere:lead_ore_deepslate", + "cosmere:deepslate_lead_ore", "cosmere:lead_block", - "cosmere:silver_ore_deepslate", + "cosmere:deepslate_silver_ore", "cosmere:silver_block" ] } \ No newline at end of file diff --git a/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json index 85713b520..f0bcc3135 100644 --- a/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json +++ b/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:metalworking_table", "cosmere:tin_ore", diff --git a/src/main/generated/data/minecraft/tags/blocks/wither_immune.json b/src/main/generated/data/minecraft/tags/blocks/wither_immune.json index 2a3fb3d7e..30fcde33a 100644 --- a/src/main/generated/data/minecraft/tags/blocks/wither_immune.json +++ b/src/main/generated/data/minecraft/tags/blocks/wither_immune.json @@ -1,5 +1,4 @@ { - "replace": false, "values": [ "cosmere:gem_block" ] From 29723996c14524b1429e7ed3ab5e742592c7a201 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 1 Jul 2022 15:08:44 +1200 Subject: [PATCH 0296/1090] allow bonus roll on loot again --- src/main/java/leaf/cosmere/loot/LootHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/loot/LootHandler.java b/src/main/java/leaf/cosmere/loot/LootHandler.java index 2bbcbd774..a3b9e0e25 100644 --- a/src/main/java/leaf/cosmere/loot/LootHandler.java +++ b/src/main/java/leaf/cosmere/loot/LootHandler.java @@ -58,7 +58,7 @@ public static LootPool getInjectPool(String entryName) { return LootPool.lootPool() .add(getInjectEntry(entryName, 1)) - .setBonusRolls(ConstantValue.exactly(0)) + .setBonusRolls(UniformGenerator.between(0,1)) .name("cosmere_inject") .build(); } From 111100f678ecf8e2fb3d833a152a5b2a13d36b5d Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 1 Jul 2022 19:32:57 +1200 Subject: [PATCH 0297/1090] don't rename mobs based on starting powers. Make bronze allomancy more valuable --- .../java/leaf/cosmere/utils/helpers/EntityHelper.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java index f5e8402c9..81420b82d 100644 --- a/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java +++ b/src/main/java/leaf/cosmere/utils/helpers/EntityHelper.java @@ -82,6 +82,8 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe if (!isPlayerEntity) { + /*//todo decide if we even want named entities + //todo translations //todo grant random name entity.setCustomName( @@ -89,7 +91,7 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe isAllomancy ? "Mistborn" : "Feruchemist") - ); + );*/ } } else @@ -103,9 +105,11 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe if (!isPlayerEntity) { +/*//todo decide if we even want named entities //todo translations //todo grant random name entity.setCustomName(TextHelper.createTranslatedText("Twinborn")); +*/ } } else @@ -122,13 +126,14 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe if (!isPlayerEntity) { +/*//todo decide if we even want named entities //todo translations //todo grant random name final String s = StringHelper.fixCapitalisation(isAllomancy ? allomancyMetal.getMistingName() : feruchemyMetal.getFerringName()); entity.setCustomName(TextHelper.createTranslatedText( - s)); + s));*/ } } } From 0cae3cabe5bbfdc1642420691aee11dd5833edbd Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 17:40:17 +1200 Subject: [PATCH 0298/1090] make honorblades use the test model for now --- .../cosmere/models/item/bondsmith_honorblade.json | 3 +++ .../cosmere/models/item/dustbringer_honorblade.json | 3 +++ .../cosmere/models/item/edgedancer_honorblade.json | 3 +++ .../cosmere/models/item/elsecaller_honorblade.json | 3 +++ .../cosmere/models/item/lightweaver_honorblade.json | 3 +++ .../cosmere/models/item/skybreaker_honorblade.json | 3 +++ .../cosmere/models/item/stoneward_honorblade.json | 3 +++ .../cosmere/models/item/truthwatcher_honorblade.json | 3 +++ .../cosmere/models/item/willshaper_honorblade.json | 3 +++ .../cosmere/models/item/windrunner_honorblade.json | 3 +++ .../leaf/cosmere/datagen/items/ItemModelsGen.java | 11 +++++++---- 11 files changed, 37 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/assets/cosmere/models/item/bondsmith_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/dustbringer_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/edgedancer_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/elsecaller_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/lightweaver_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/skybreaker_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/stoneward_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/truthwatcher_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/willshaper_honorblade.json create mode 100644 src/main/generated/assets/cosmere/models/item/windrunner_honorblade.json diff --git a/src/main/generated/assets/cosmere/models/item/bondsmith_honorblade.json b/src/main/generated/assets/cosmere/models/item/bondsmith_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/bondsmith_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/dustbringer_honorblade.json b/src/main/generated/assets/cosmere/models/item/dustbringer_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/dustbringer_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/edgedancer_honorblade.json b/src/main/generated/assets/cosmere/models/item/edgedancer_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/edgedancer_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/elsecaller_honorblade.json b/src/main/generated/assets/cosmere/models/item/elsecaller_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/elsecaller_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/lightweaver_honorblade.json b/src/main/generated/assets/cosmere/models/item/lightweaver_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/lightweaver_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/skybreaker_honorblade.json b/src/main/generated/assets/cosmere/models/item/skybreaker_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/skybreaker_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/stoneward_honorblade.json b/src/main/generated/assets/cosmere/models/item/stoneward_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/stoneward_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/truthwatcher_honorblade.json b/src/main/generated/assets/cosmere/models/item/truthwatcher_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/truthwatcher_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/willshaper_honorblade.json b/src/main/generated/assets/cosmere/models/item/willshaper_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/willshaper_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/generated/assets/cosmere/models/item/windrunner_honorblade.json b/src/main/generated/assets/cosmere/models/item/windrunner_honorblade.json new file mode 100644 index 000000000..91469d64b --- /dev/null +++ b/src/main/generated/assets/cosmere/models/item/windrunner_honorblade.json @@ -0,0 +1,3 @@ +{ + "parent": "cosmere:item/test_blade" +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java index 309fd0add..0cf31366e 100644 --- a/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java +++ b/src/main/java/leaf/cosmere/datagen/items/ItemModelsGen.java @@ -5,10 +5,7 @@ package leaf.cosmere.datagen.items; import leaf.cosmere.Cosmere; -import leaf.cosmere.items.MetalIngotItem; -import leaf.cosmere.items.MetalNuggetItem; -import leaf.cosmere.items.MetalRawOreItem; -import leaf.cosmere.items.ShardbladeItem; +import leaf.cosmere.items.*; import leaf.cosmere.items.curio.BraceletMetalmindItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; import leaf.cosmere.items.curio.NecklaceMetalmindItem; @@ -84,6 +81,12 @@ else if (item instanceof HemalurgicSpikeItem) } else if (item instanceof ShardbladeItem) { + if (item instanceof HonorbladeItem honorbladeItem) + { + this.getBuilder(path) + .parent(new ModelFile.UncheckedModelFile("cosmere:item/test_blade")); + } + continue; } else if (item instanceof MetalRawOreItem rawItem) From 348c8e3ecdf9ce0e1e4c9a940d97ccfe2a28d6b0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 18:00:29 +1200 Subject: [PATCH 0299/1090] make blend from raw, dust or ingots --- .../alloying/dust_blend/bendalloy.json | 34 ++++++++++++++++++ .../alloying/dust_blend/brass.json | 34 ++++++++++++++++++ .../alloying/dust_blend/bronze.json | 34 ++++++++++++++++++ .../alloying/dust_blend/duralumin.json | 34 ++++++++++++++++++ .../alloying/dust_blend/electrum.json | 34 ++++++++++++++++++ .../alloying/dust_blend/nicrosil.json | 34 ++++++++++++++++++ .../alloying/dust_blend/pewter.json | 34 ++++++++++++++++++ .../alloying/dust_blend/steel.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/bendalloy.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/brass.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/bronze.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/duralumin.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/electrum.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/nicrosil.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/pewter.json | 34 ++++++++++++++++++ .../alloying/ingot_blend/steel.json | 34 ++++++++++++++++++ .../{blend => raw_blend}/bendalloy.json | 0 .../alloying/{blend => raw_blend}/brass.json | 0 .../alloying/{blend => raw_blend}/bronze.json | 0 .../{blend => raw_blend}/duralumin.json | 0 .../{blend => raw_blend}/electrum.json | 0 .../{blend => raw_blend}/nicrosil.json | 0 .../alloying/{blend => raw_blend}/pewter.json | 0 .../alloying/{blend => raw_blend}/steel.json | 0 .../alloying/dust_blend/bendalloy.json | 36 +++++++++++++++++++ .../recipes/alloying/dust_blend/brass.json | 15 ++++++++ .../recipes/alloying/dust_blend/bronze.json | 21 +++++++++++ .../alloying/dust_blend/duralumin.json | 24 +++++++++++++ .../recipes/alloying/dust_blend/electrum.json | 15 ++++++++ .../recipes/alloying/dust_blend/nicrosil.json | 21 +++++++++++ .../recipes/alloying/dust_blend/pewter.json | 24 +++++++++++++ .../recipes/alloying/dust_blend/steel.json | 26 ++++++++++++++ .../alloying/ingot_blend/bendalloy.json | 36 +++++++++++++++++++ .../recipes/alloying/ingot_blend/brass.json | 15 ++++++++ .../recipes/alloying/ingot_blend/bronze.json | 21 +++++++++++ .../alloying/ingot_blend/duralumin.json | 24 +++++++++++++ .../alloying/ingot_blend/electrum.json | 15 ++++++++ .../alloying/ingot_blend/nicrosil.json | 21 +++++++++++ .../recipes/alloying/ingot_blend/pewter.json | 24 +++++++++++++ .../{blend => ingot_blend}/steel.json | 0 .../{blend => raw_blend}/bendalloy.json | 0 .../alloying/{blend => raw_blend}/brass.json | 0 .../alloying/{blend => raw_blend}/bronze.json | 0 .../{blend => raw_blend}/duralumin.json | 0 .../{blend => raw_blend}/electrum.json | 2 +- .../{blend => raw_blend}/nicrosil.json | 0 .../alloying/{blend => raw_blend}/pewter.json | 0 .../recipes/alloying/raw_blend/steel.json | 26 ++++++++++++++ .../java/leaf/cosmere/datagen/RecipeGen.java | 13 ++++--- 49 files changed, 917 insertions(+), 6 deletions(-) create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json create mode 100644 src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/bendalloy.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/brass.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/bronze.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/duralumin.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/electrum.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/nicrosil.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/pewter.json (100%) rename src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/{blend => raw_blend}/steel.json (100%) create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json create mode 100644 src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json rename src/main/generated/data/cosmere/recipes/alloying/{blend => ingot_blend}/steel.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/bendalloy.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/brass.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/bronze.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/duralumin.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/electrum.json (83%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/nicrosil.json (100%) rename src/main/generated/data/cosmere/recipes/alloying/{blend => raw_blend}/pewter.json (100%) create mode 100644 src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json new file mode 100644 index 000000000..615f3d3a7 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/bendalloy" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/bendalloy" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json new file mode 100644 index 000000000..f8fd21506 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/brass" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/brass" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json new file mode 100644 index 000000000..5507d7422 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/bronze" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/bronze" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json new file mode 100644 index 000000000..1c0919db5 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/duralumin" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/duralumin" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json new file mode 100644 index 000000000..f06da7fa9 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/electrum" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/electrum" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json new file mode 100644 index 000000000..98dc59974 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/nicrosil" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/nicrosil" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json new file mode 100644 index 000000000..cda283ba0 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/pewter" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/pewter" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json new file mode 100644 index 000000000..8b93c525f --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/steel" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/dust_blend/steel" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json new file mode 100644 index 000000000..0fcbe8618 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/bendalloy" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/bendalloy" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json new file mode 100644 index 000000000..5a105afb0 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/brass" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/brass" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json new file mode 100644 index 000000000..40b9d09c0 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/bronze" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/bronze" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json new file mode 100644 index 000000000..eede06a2d --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/duralumin" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/duralumin" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json new file mode 100644 index 000000000..c6fce8658 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/electrum" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/electrum" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json new file mode 100644 index 000000000..f20b7527c --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/nicrosil" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/nicrosil" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json new file mode 100644 index 000000000..080902a55 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/pewter" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/pewter" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json new file mode 100644 index 000000000..ebe263748 --- /dev/null +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json @@ -0,0 +1,34 @@ +{ + "parent": "minecraft:recipes/root", + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/steel" + ] + }, + "criteria": { + "has_item": { + "trigger": "minecraft:inventory_changed", + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_blend" + ] + } + ] + } + }, + "has_the_recipe": { + "trigger": "minecraft:recipe_unlocked", + "conditions": { + "recipe": "cosmere:alloying/ingot_blend/steel" + } + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ] +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json similarity index 100% rename from src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json rename to src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json new file mode 100644 index 000000000..37ba0807b --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/cadmium" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/lead" + }, + { + "tag": "forge:dust/tin" + }, + { + "tag": "forge:dust/tin" + } + ], + "result": { + "item": "cosmere:bendalloy_blend", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json new file mode 100644 index 000000000..00d55f698 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/zinc" + }, + { + "tag": "forge:dust/copper" + } + ], + "result": { + "item": "cosmere:brass_blend", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json new file mode 100644 index 000000000..7d82a7766 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/copper" + }, + { + "tag": "forge:dust/copper" + }, + { + "tag": "forge:dust/copper" + }, + { + "tag": "forge:dust/tin" + } + ], + "result": { + "item": "cosmere:bronze_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json new file mode 100644 index 000000000..0d33ac209 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/aluminum" + }, + { + "tag": "forge:dust/aluminum" + }, + { + "tag": "forge:dust/aluminum" + }, + { + "tag": "forge:dust/aluminum" + }, + { + "tag": "forge:dust/copper" + } + ], + "result": { + "item": "cosmere:duralumin_blend", + "count": 5 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json new file mode 100644 index 000000000..49e39a64c --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/gold" + }, + { + "tag": "forge:dust/silver" + } + ], + "result": { + "item": "cosmere:electrum_blend", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json new file mode 100644 index 000000000..da28bac0d --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/chromium" + }, + { + "tag": "forge:dust/nickel" + }, + { + "tag": "forge:dust/nickel" + }, + { + "tag": "forge:dust/nickel" + } + ], + "result": { + "item": "cosmere:nicrosil_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json new file mode 100644 index 000000000..95856a5c9 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/tin" + }, + { + "tag": "forge:dust/tin" + }, + { + "tag": "forge:dust/tin" + }, + { + "tag": "forge:dust/tin" + }, + { + "tag": "forge:dust/lead" + } + ], + "result": { + "item": "cosmere:pewter_blend", + "count": 5 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json new file mode 100644 index 000000000..ee7f90545 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:dust/iron" + }, + { + "tag": "forge:dust/iron" + }, + { + "tag": "forge:dust/iron" + }, + [ + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:charcoal" + } + ] + ], + "result": { + "item": "cosmere:steel_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json new file mode 100644 index 000000000..fd5803db5 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json @@ -0,0 +1,36 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/cadmium" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/lead" + }, + { + "tag": "forge:ingots/tin" + }, + { + "tag": "forge:ingots/tin" + } + ], + "result": { + "item": "cosmere:bendalloy_blend", + "count": 9 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json new file mode 100644 index 000000000..1774e7fee --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/zinc" + }, + { + "tag": "forge:ingots/copper" + } + ], + "result": { + "item": "cosmere:brass_blend", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json new file mode 100644 index 000000000..2eed2999d --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/copper" + }, + { + "tag": "forge:ingots/copper" + }, + { + "tag": "forge:ingots/copper" + }, + { + "tag": "forge:ingots/tin" + } + ], + "result": { + "item": "cosmere:bronze_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json new file mode 100644 index 000000000..5691604bf --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/aluminum" + }, + { + "tag": "forge:ingots/aluminum" + }, + { + "tag": "forge:ingots/aluminum" + }, + { + "tag": "forge:ingots/aluminum" + }, + { + "tag": "forge:ingots/copper" + } + ], + "result": { + "item": "cosmere:duralumin_blend", + "count": 5 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json new file mode 100644 index 000000000..5df58461f --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json @@ -0,0 +1,15 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/gold" + }, + { + "tag": "forge:ingots/silver" + } + ], + "result": { + "item": "cosmere:electrum_blend", + "count": 2 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json new file mode 100644 index 000000000..5fcb3f3ee --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/chromium" + }, + { + "tag": "forge:ingots/nickel" + }, + { + "tag": "forge:ingots/nickel" + }, + { + "tag": "forge:ingots/nickel" + } + ], + "result": { + "item": "cosmere:nicrosil_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json new file mode 100644 index 000000000..0d26c169e --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:ingots/tin" + }, + { + "tag": "forge:ingots/tin" + }, + { + "tag": "forge:ingots/tin" + }, + { + "tag": "forge:ingots/tin" + }, + { + "tag": "forge:ingots/lead" + } + ], + "result": { + "item": "cosmere:pewter_blend", + "count": 5 + } +} \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/steel.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/steel.json rename to src/main/generated/data/cosmere/recipes/alloying/ingot_blend/steel.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/bendalloy.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/bendalloy.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/bendalloy.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/brass.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/brass.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/brass.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/bronze.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/bronze.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/bronze.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/duralumin.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/duralumin.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/duralumin.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/electrum.json similarity index 83% rename from src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/electrum.json index 85579124a..084dfb083 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/blend/electrum.json +++ b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/electrum.json @@ -2,7 +2,7 @@ "type": "minecraft:crafting_shapeless", "ingredients": [ { - "tag": "forge:ingots/gold" + "tag": "forge:raw_materials/gold" }, { "tag": "forge:raw_materials/silver" diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/nicrosil.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/nicrosil.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/nicrosil.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/pewter.json similarity index 100% rename from src/main/generated/data/cosmere/recipes/alloying/blend/pewter.json rename to src/main/generated/data/cosmere/recipes/alloying/raw_blend/pewter.json diff --git a/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json new file mode 100644 index 000000000..041d77946 --- /dev/null +++ b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json @@ -0,0 +1,26 @@ +{ + "type": "minecraft:crafting_shapeless", + "ingredients": [ + { + "tag": "forge:raw_materials/iron" + }, + { + "tag": "forge:raw_materials/iron" + }, + { + "tag": "forge:raw_materials/iron" + }, + [ + { + "item": "minecraft:coal" + }, + { + "item": "minecraft:charcoal" + } + ] + ], + "result": { + "item": "cosmere:steel_blend", + "count": 4 + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/datagen/RecipeGen.java b/src/main/java/leaf/cosmere/datagen/RecipeGen.java index b03c16e8d..f6f44eca4 100644 --- a/src/main/java/leaf/cosmere/datagen/RecipeGen.java +++ b/src/main/java/leaf/cosmere/datagen/RecipeGen.java @@ -105,7 +105,9 @@ protected void buildCraftingRecipes(Consumer consumer) addAlloyRecipes(consumer, metalType, outputBlock, TagsRegistry.Items.METAL_BLOCK_ITEM_TAGS,"block");*/ Item outputBlend = metalType.getRawMetalItem(); - addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_RAW_TAGS, "blend"); + addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_RAW_TAGS, "raw_blend"); + addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_DUST_TAGS, "dust_blend"); + addAlloyRecipes(consumer, metalType, outputBlend, TagsRegistry.Items.METAL_INGOT_TAGS, "ingot_blend"); addOreSmeltingRecipes(consumer, outputBlend, metalType.getIngotItem(), 1.0f, 200); } @@ -118,14 +120,15 @@ protected void buildCraftingRecipes(Consumer consumer) private void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) { String s = String.format("alloying/%s/", recipe); + switch (metalType) { case STEEL: ShapelessRecipeBuilder.shapeless(output, 4) .unlockedBy("has_item", has(output)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) - .requires(Ingredient.of(Tags.Items.INGOTS_IRON)) + .requires(materialTag.get(Metals.MetalType.IRON)) + .requires(materialTag.get(Metals.MetalType.IRON)) + .requires(materialTag.get(Metals.MetalType.IRON)) .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; @@ -191,7 +194,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType case ELECTRUM: ShapelessRecipeBuilder.shapeless(output, 2) .unlockedBy("has_item", has(output)) - .requires(Ingredient.of(Tags.Items.INGOTS_GOLD)) + .requires(materialTag.get(Metals.MetalType.GOLD)) .requires(materialTag.get(Metals.MetalType.SILVER)) .save(consumer, ResourceLocationHelper.prefix(s + metalType.getName())); break; From 48a594507d777733895aacd4e5052060a3e2859e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 18:09:49 +1200 Subject: [PATCH 0300/1090] Electrum ingots can be used for piglin bartering (needs testing) --- src/main/java/leaf/cosmere/items/MetalIngotItem.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/leaf/cosmere/items/MetalIngotItem.java b/src/main/java/leaf/cosmere/items/MetalIngotItem.java index 8b6a0959a..4968a40ed 100644 --- a/src/main/java/leaf/cosmere/items/MetalIngotItem.java +++ b/src/main/java/leaf/cosmere/items/MetalIngotItem.java @@ -5,6 +5,7 @@ package leaf.cosmere.items; import leaf.cosmere.constants.Metals; +import net.minecraft.world.item.ItemStack; public class MetalIngotItem extends MetalItem { @@ -15,4 +16,10 @@ public MetalIngotItem(Metals.MetalType metalType) } + @Override + public boolean isPiglinCurrency(ItemStack stack) + { + final Metals.MetalType metalType = this.getMetalType(); + return metalType == Metals.MetalType.GOLD || metalType == Metals.MetalType.ELECTRUM; + } } From 0539540f48a0cd61845f7510dc71aae2c10e1692 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 18:13:09 +1200 Subject: [PATCH 0301/1090] feru cadmium gets minor speed buff for highly oxygenated blood --- .../effects/feruchemy/tap/CadmiumTapEffect.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java index 069226f84..058ef6bda 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/tap/CadmiumTapEffect.java @@ -9,6 +9,8 @@ import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; public class CadmiumTapEffect extends FeruchemyEffectBase @@ -16,6 +18,18 @@ public class CadmiumTapEffect extends FeruchemyEffectBase public CadmiumTapEffect(Metals.MetalType type, MobEffectCategory effectType) { super(type, effectType); + + this.addAttributeModifier( + Attributes.ATTACK_SPEED, + "019c1754-d7a2-4c78-9e14-896ecc7ed0e2", + 0.01F, + AttributeModifier.Operation.MULTIPLY_TOTAL); + + this.addAttributeModifier( + Attributes.MOVEMENT_SPEED, + "019c1754-d7a2-4c78-9e14-896ecc7ed0e2", + 0.02F, + AttributeModifier.Operation.MULTIPLY_TOTAL); } @Override From 592c3ee21e2f05fd997fe1b98aa1331f89c45dd7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 18:48:16 +1200 Subject: [PATCH 0302/1090] Fix menu not drawing single powers correctly (eg having all allomancy but only one feruchemical power) --- .../cosmere/client/gui/SpiritwebMenu.java | 64 +++++++++++++++---- 1 file changed, 50 insertions(+), 14 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 170402edd..3e42df89f 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -575,7 +575,7 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double Vector2 innerEdge; Vector2 outerEdge; - boolean smallMode = radialMenuButtons.size() == 2; + int drawMode = radialMenuButtons.size(); innerEdge = new Vector2(0, ring_inner_edge); outerEdge = new Vector2(0, ring_outer_edge); @@ -599,7 +599,25 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double double x2m2; double y2m2; - if (smallMode) + if (drawMode == 1) + { + //1 + x1m1 = outerEdge.x; + y1m1 = outerEdge.y; + outerEdge.Rotate(90); + + //2 + x2m1 = outerEdge.x; + y2m1 = outerEdge.y; + outerEdge.Rotate(90); + + //3 + x1m2 = outerEdge.x; + y1m2 = outerEdge.y; + outerEdge.Rotate(90); + + } + else if (drawMode == 2) { //1 x1m1 = outerEdge.x; @@ -650,17 +668,35 @@ private void renderRadialButtons(BufferBuilder buffer, double mouseVecX, double final float a = 0.5f; float f = 0f; - final boolean showHighlight = - MathHelper.inTriangle( - x1m1, y1m1, - x2m2, y2m2, - x2m1, y2m1, - mouseVecX, mouseVecY) - || MathHelper.inTriangle( - x1m1, y1m1, - x1m2, y1m2, - x2m2, y2m2, - mouseVecX, mouseVecY); + final boolean showHighlight; + if (drawMode <= 2) + { + showHighlight = + MathHelper.inTriangle( + x1m1, y1m1, + x2m1, y2m1, + x1m2, y1m2, + mouseVecX, mouseVecY) + || MathHelper.inTriangle( + x1m2, y1m2, + x2m2, y2m2, + x1m1, y1m1, + mouseVecX, mouseVecY); + } + else + { + showHighlight = + MathHelper.inTriangle( + x1m1, y1m1, + x2m2, y2m2, + x2m1, y2m1, + mouseVecX, mouseVecY) + || MathHelper.inTriangle( + x1m1, y1m1, + x1m2, y1m2, + x2m2, y2m2, + mouseVecX, mouseVecY); + } //if mouse is within the region, as defined by the two triangles //if (begin_rad <= mouseAngle && mouseAngle <= end_rad && showHighlight) @@ -698,7 +734,7 @@ else if (mode < 0) float g = f; float b = lerpNegative + f; - if (smallMode) + if (drawMode <= 2) { buffer.vertex(middle_x + x2m1, middle_y + y2m1, 0).color(r, g, b, a).endVertex(); buffer.vertex(middle_x + x1m1, middle_y + y1m1, 0).color(r, g, b, a).endVertex(); From f187c4bbced38659fc1296d8c9cb7c54672d1cd4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 18:51:23 +1200 Subject: [PATCH 0303/1090] stop god metal spikes from generating as loot in loot chests --- .../java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java index 37c544a25..91160bac7 100644 --- a/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java +++ b/src/main/java/leaf/cosmere/loot/RandomiseMetalTypeLootFunction.java @@ -57,6 +57,7 @@ protected ItemStack run(ItemStack stack, LootContext lootContext) List metalTypes = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasHemalurgicEffect) + .filter(godMetalCheck -> godMetalCheck != Metals.MetalType.LERASIUM && godMetalCheck != Metals.MetalType.LERASATIUM)//todo decide about allowing god metal spikes to generate as loot .collect(Collectors.toList()); Collections.shuffle(metalTypes); Optional metalType = metalTypes.stream().findFirst(); From c02f2adec6f1fd2fc87b8e36114ffc2cd06f1d7d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 19:01:57 +1200 Subject: [PATCH 0304/1090] catquisitors --- .../cosmere/handlers/EntityEventHandler.java | 65 +++++++++++-------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index 37510eab9..c5f587fcc 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -12,7 +12,9 @@ import leaf.cosmere.items.CoinPouchItem; import leaf.cosmere.items.MetalNuggetItem; import leaf.cosmere.items.curio.HemalurgicSpikeItem; +import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; +import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.core.Direction; @@ -20,6 +22,10 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.animal.Cat; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.monster.Ravager; @@ -42,6 +48,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.registries.RegistryObject; import javax.annotation.Nonnull; import java.util.Arrays; @@ -242,7 +249,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) else if (stack.getItem() instanceof HemalurgicSpikeItem spike) { //https://www.theoryland.com/intvmain.php?i=977#43 - if (!(event.getTarget() instanceof Cat)) + if (!(event.getTarget() instanceof Cat cat)) { return; } @@ -256,36 +263,38 @@ else if (stack.getItem() instanceof HemalurgicSpikeItem spike) //todo random list of catquisitor names - target.setCustomName(TextHelper.createTranslatedText("Catquisitor ")); + target.setCustomName(TextHelper.createTranslatedText("Catquisitor")); boolean spikeApplied = false; - //todo catquisitor - /* - switch (spike.getMetalType()) - { - case STEEL: - case BRONZE: - case CADMIUM: - case ELECTRUM: - cap.giveManifestation(Manifestations.ManifestationTypes.ALLOMANCY, spike.getMetalType().getID()); - spikeApplied = true; - break; - case PEWTER: - case BRASS: - case BENDALLOY: - case GOLD: - cap.giveManifestation(Manifestations.ManifestationTypes.FERUCHEMY, spike.getMetalType().getID()); - spikeApplied = true; - break; - case ATIUM: - //Steals any power - //todo decide if we just pick a random power - break; - case LERASIUM: - //Steals all powers - break; - }*/ + try + { + for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) + { + final double hemalurgicStrength = spike.getHemalurgicStrength(stack, manifestation); + if (hemalurgicStrength > 0) + { + final RegistryObject regAttribute = manifestation.getAttribute(); + if (regAttribute == null || !regAttribute.isPresent()) + { + continue; + } + spikeApplied = true; + + final AttributeMap catAttributes = cat.getAttributes(); + final AttributeInstance instance = catAttributes.getInstance(regAttribute.get()); + + if (instance != null) + { + instance.setBaseValue(hemalurgicStrength); + } + } + } + } + catch (Exception e) + { + + } if (spikeApplied && !event.getPlayer().isCreative()) { From 2390c6f4809c9ec7399ce258c383ff87580b985a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 19:15:58 +1200 Subject: [PATCH 0305/1090] updated changelog and bumped version --- Changelog.md | 20 ++++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Changelog.md b/Changelog.md index 9ea92b963..3e0ca1c36 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,25 @@ The Cosmere Project - For 1.16 Minecraft +B49 + +F-Atium - increase/decrease health, speed, damage, knockback etc based on tap amount. (needs testing) +Zinc feruchemy multiplies current xp gain rate, rather than adds to it. +Cleaned up attribute system, fixes bug where allomancy boost affect was changing size attribute directly +Stop nicrosil disabling itself during feruchemical storage. +Stop cats and llamas generating with powers (catquisitors and mistborn llamas are made, not born) +Updated patchouli documentation (Thanks Luke! 🎉) +Allow bonus rolls on cosmere loot tables again +Don't rename mobs based on starting powers (because bronze allomancy should be valuable) +Temporarily make honorblades use the test shardblade model (no more huge pink and black cube from missing model). +Ability to make blend from raw, dust or ingots. No more having to keep raw materials around just in case. Temporary till we have fabrial machines. +Electrum ingots can be used for piglin bartering (needs testing) +Feru cadmium gets minor speed buff for highly oxygenated blood +Fix menu not drawing single powers correctly (eg having all allomancy but only one feruchemical power) +Stop god metal spikes from generating as loot in loot chests +Catquisitors will reign supreme +The mistborn llamas may be our only hope + + B48 Updated patchouli documentation for allomancy. diff --git a/gradle.properties b/gradle.properties index 392a8d944..31cfbc451 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ forge_version=1.19-41.0.45 parchment_version=2022.05.22 jar_name=Cosmere -build_number=49 +build_number=50 jei_version=11.0.0.206 curios_version=1.19-5.1.0.2 From 8ea922664c3d81c398fe6ad94f2332aef5114134 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 19:21:47 +1200 Subject: [PATCH 0306/1090] re-generated data --- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 12 +++- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 66 ++++++++++++++----- .../alloying/dust_blend/bendalloy.json | 20 +++--- .../alloying/dust_blend/brass.json | 20 +++--- .../alloying/dust_blend/bronze.json | 20 +++--- .../alloying/dust_blend/duralumin.json | 20 +++--- .../alloying/dust_blend/electrum.json | 20 +++--- .../alloying/dust_blend/nicrosil.json | 20 +++--- .../alloying/dust_blend/pewter.json | 20 +++--- .../alloying/dust_blend/steel.json | 20 +++--- .../alloying/ingot_blend/bendalloy.json | 20 +++--- .../alloying/ingot_blend/brass.json | 20 +++--- .../alloying/ingot_blend/bronze.json | 20 +++--- .../alloying/ingot_blend/duralumin.json | 20 +++--- .../alloying/ingot_blend/electrum.json | 20 +++--- .../alloying/ingot_blend/nicrosil.json | 20 +++--- .../alloying/ingot_blend/pewter.json | 20 +++--- .../alloying/ingot_blend/steel.json | 20 +++--- .../alloying/raw_blend/bendalloy.json | 4 +- .../alloying/raw_blend/brass.json | 4 +- .../alloying/raw_blend/bronze.json | 4 +- .../alloying/raw_blend/duralumin.json | 4 +- .../alloying/raw_blend/electrum.json | 4 +- .../alloying/raw_blend/nicrosil.json | 4 +- .../alloying/raw_blend/pewter.json | 4 +- .../alloying/raw_blend/steel.json | 4 +- .../alloying/dust_blend/bendalloy.json | 4 +- .../recipes/alloying/dust_blend/brass.json | 4 +- .../recipes/alloying/dust_blend/bronze.json | 4 +- .../alloying/dust_blend/duralumin.json | 4 +- .../recipes/alloying/dust_blend/electrum.json | 4 +- .../recipes/alloying/dust_blend/nicrosil.json | 4 +- .../recipes/alloying/dust_blend/pewter.json | 4 +- .../recipes/alloying/dust_blend/steel.json | 4 +- .../alloying/ingot_blend/bendalloy.json | 4 +- .../recipes/alloying/ingot_blend/brass.json | 4 +- .../recipes/alloying/ingot_blend/bronze.json | 4 +- .../alloying/ingot_blend/duralumin.json | 4 +- .../alloying/ingot_blend/electrum.json | 4 +- .../alloying/ingot_blend/nicrosil.json | 4 +- .../recipes/alloying/ingot_blend/pewter.json | 4 +- .../recipes/alloying/raw_blend/steel.json | 4 +- 42 files changed, 268 insertions(+), 226 deletions(-) diff --git a/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 1c911f306..4e14fa028 100644 --- a/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/main/generated/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.19 2022-07-03T12:15:14.4363187 Item Models: cosmere +// 1.19 2022-07-03T19:21:06.4434629 Item Models: cosmere 78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/aluminum_bracelet_metalmind.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json 83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/aluminum_necklace_metalmind.json @@ -22,6 +22,7 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/bendalloy_in 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/bendalloy_nugget.json 166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/bendalloy_ring_metalmind.json 71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/bendalloy_spike.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/bondsmith_honorblade.json 8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/brass_blend.json 78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/brass_bracelet_metalmind.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/brass_ingot.json @@ -66,6 +67,8 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/duralumin_in 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/duralumin_nugget.json 166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/duralumin_ring_metalmind.json 71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/duralumin_spike.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/dustbringer_honorblade.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/edgedancer_honorblade.json 8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/electrum_blend.json 78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/electrum_bracelet_metalmind.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ingot.json @@ -73,6 +76,7 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ing 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/electrum_nugget.json 166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/electrum_ring_metalmind.json 71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/electrum_spike.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/elsecaller_honorblade.json 0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/emerald_broam.json 156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/emerald_chip.json 2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/emerald_mark.json @@ -102,6 +106,7 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasatium_i c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasium_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lerasium_nugget.json 71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/lerasium_spike.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/lightweaver_honorblade.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/malatium_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/malatium_nugget.json 274bfcccdefd25e6fd4df40bc70fc857db2daf06 assets/cosmere/models/item/metal_vial.json @@ -137,6 +142,7 @@ d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_zinc_ore 2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/sapphire_mark.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/silver_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/silver_nugget.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/skybreaker_honorblade.json 0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/smokestone_broam.json 156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/smokestone_chip.json 2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/smokestone_mark.json @@ -147,6 +153,7 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/steel_ingot. 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/steel_nugget.json 166a5f8478c0dda4ab870ff748d59eaa4a40c38d assets/cosmere/models/item/steel_ring_metalmind.json 71cf3c195b57072415aa2da22e08b045bf12acf5 assets/cosmere/models/item/steel_spike.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/stoneward_honorblade.json 78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/tin_bracelet_metalmind.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/tin_ingot.json 83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/tin_necklace_metalmind.json @@ -156,6 +163,9 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/tin_ingot.js 0b26507ab0dab9c6e9bf9e1e709ccebee5f3008d assets/cosmere/models/item/topaz_broam.json 156810ac39b62c86d465571811af3ded7a44d0ae assets/cosmere/models/item/topaz_chip.json 2c6a26910542fa65d43711d443654486f542c8bd assets/cosmere/models/item/topaz_mark.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/truthwatcher_honorblade.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/willshaper_honorblade.json +6a27bff2fccf92ff02a86316d099ea73dc29da58 assets/cosmere/models/item/windrunner_honorblade.json 78846538426f22e67a52877172b5da616e2dfd40 assets/cosmere/models/item/zinc_bracelet_metalmind.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/zinc_ingot.json 83e307f08c00074dbdfbdafdad4542ddff47096a assets/cosmere/models/item/zinc_necklace_metalmind.json diff --git a/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 2b8296bac..ac9b354c1 100644 --- a/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/main/generated/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.19 2022-07-03T12:15:14.4403224 Recipes +// 1.19 2022-07-03T19:21:06.4364502 Recipes 77a0eac808078676e15eb82c1b3b7d89dbd6304e data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json bcde6240066289f4e54c7ec9944611bd118a7530 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json 0774becab0613f8e15e06d5af31b8d51b8e0f111 data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json @@ -22,14 +22,30 @@ bb57f5cd9b274df64b2e138e1dd0ae8c42846753 data/cosmere/advancements/recipes/cosme 01c5937ee191f4b0e5db8c83b8a625ff089b9bd7 data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json 498e5a9e1b9096660f357b36bed3f9f6146644f5 data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json aee74dcf863bc5ad4bfb8282d290a152d723edb6 data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json -64fb59c3a13db64d7aa16c5915163d9f9789badf data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bendalloy.json -5801defdf5013c92b2a701a42787e96238e3e998 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/brass.json -bbc51d4e51fef1d499a64d945f132508b1ccc95b data/cosmere/advancements/recipes/cosmere.items/alloying/blend/bronze.json -0f0597afd416c4ca9b0065dacbd9c4976fd1abb5 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/duralumin.json -74eba70a2d03812db487e3f8ae528593f1257789 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/electrum.json -2f24eea48d35de35d281126e84052fcf83c66f90 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/nicrosil.json -c8aebf9b16bc9b558b4507aba06d672319c9dbf8 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/pewter.json -d01d7e53fa4b202a9355662107283d037344a2d4 data/cosmere/advancements/recipes/cosmere.items/alloying/blend/steel.json +acfff920abcaf8b7c1b022b9256f9d34d0317560 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json +ea252e3126472783685104aad59b950c7041d699 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json +000176a24b2ab6384e26c873c3b2cf698b682dbc data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json +f29b8029947f50cbe7004d21b3b51784ba441d88 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json +7db0b76d9700fd3b08ab27d7e8e47aa5d5a4decb data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json +b30cb564031825a4b94645c8b8d3944eafe33152 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json +a8338d16207a6b1591d4f106cee174794f9881ca data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json +777505d379fe54b6566f59a422078d800d81735c data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json +a48e5de95f700d7a91005f9371feb0641831e0f2 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json +f2fedf07961cc9fbe9e08da0a3387b803291927e data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json +a1a0dacfaf26b681f89552680d51bb78dd1e9fb1 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json +df3999ddc5094af598d7c2a1f3b57bf9f0ed7c8a data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json +64a75e86367494e822f7ea41a9635ff3f56187b8 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json +798e2bfa6febd7514be931ae070c2b554920056e data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json +88f3ad06cbb6b298c1c49543168d12ff75c7db39 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json +0c49da27e05a39b6fc7a16caf2c4db03c2649690 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json +17683d756f7753d16e8ce62c3aad010b4168721e data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json +1bc79f356d4b1bebc48cd86ab68710a96dde2183 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json +5b729cc3b827a9f3da2d5bee612ee783567620c6 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json +f1ea4c9fe9827bf3248b6e89bb73aad307bd2343 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json +aaa89b232a8167030cc20f264fdd23510af3b834 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json +bfc557b5c80f7847b04a8a251b95cdd92069a1a6 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json +5caa2d0902bc235f3270c107796c6e21af030f9a data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json +784c6f85ebddcf9dbdfec7c66355bb9142797e2a data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json ada3aa09c7f70387c3a1e845d1441dbbabe72f18 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json a1af2c509826e4395dc19d84ce446e60f39dbac5 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json ac3bd9cdf292605d78360b9a8045849f7002ff5d data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -218,14 +234,30 @@ bc063cda6e5c5b1e209c27924da93b33374b709a data/cosmere/advancements/recipes/cosme 34321712e4aec5f1202260d391cafc3ad895eb68 data/cosmere/advancements/recipes/cosmere.spikes/steel_spike.json 5c4aec6df9b3a19aef8149b16049e36a97472065 data/cosmere/advancements/recipes/cosmere.spikes/tin_spike.json 355e8dcdc88c10e8c203e60654b7b6c1232ed204 data/cosmere/advancements/recipes/cosmere.spikes/zinc_spike.json -f37ea3bf5560018fa302c8b1502fd0a740a71b92 data/cosmere/recipes/alloying/blend/bendalloy.json -f39ac5face05e4b7c08152679649d9be99c3392e data/cosmere/recipes/alloying/blend/brass.json -54eb611e1e1d97be672ee5f24d61d298251f788f data/cosmere/recipes/alloying/blend/bronze.json -d682ab056acaa8c3dbf6fa57952b5568f4df9353 data/cosmere/recipes/alloying/blend/duralumin.json -852566052c04be2043bf25f645fa169497d67ba3 data/cosmere/recipes/alloying/blend/electrum.json -01ae7863a9c516393be723df33bfabf9064a11a8 data/cosmere/recipes/alloying/blend/nicrosil.json -1dd6b54fb34bf54c719bd2f6ac8f8b4b034abd98 data/cosmere/recipes/alloying/blend/pewter.json -ff4cfaaaa083dda3067e17b829048d368810dd6d data/cosmere/recipes/alloying/blend/steel.json +f416b9f336046498d4d696b3b8633be1c3252a13 data/cosmere/recipes/alloying/dust_blend/bendalloy.json +e08cc32f629c719df097c9d1da29c9db16eba943 data/cosmere/recipes/alloying/dust_blend/brass.json +8d3d79b56da70171a07b659cdb212233cb6f6abd data/cosmere/recipes/alloying/dust_blend/bronze.json +b350bae0dc1c5d0a3e87d30235f3829420c1391c data/cosmere/recipes/alloying/dust_blend/duralumin.json +0bf466df197d4316c71f80708e952fa66803c191 data/cosmere/recipes/alloying/dust_blend/electrum.json +737200b65524e75897da93b39a50483b3b9d893e data/cosmere/recipes/alloying/dust_blend/nicrosil.json +eccd0c8a1638434f221a690cc0606dd960bb95f0 data/cosmere/recipes/alloying/dust_blend/pewter.json +5ab20e5a758d20fa9a2304456b6630f64ea683cc data/cosmere/recipes/alloying/dust_blend/steel.json +35e69bb132bc565b63a9fbff6f1bcf6049eae916 data/cosmere/recipes/alloying/ingot_blend/bendalloy.json +1c6cf7cdd0abdea612ab2013444f7a026cda8c82 data/cosmere/recipes/alloying/ingot_blend/brass.json +cbf644117a540a81242cfe95b679932277c3ec59 data/cosmere/recipes/alloying/ingot_blend/bronze.json +381b3f599c9135aa5d407d1fbae13a25358f6865 data/cosmere/recipes/alloying/ingot_blend/duralumin.json +792ea14925ca99ae4fda665182aff60342bf24a1 data/cosmere/recipes/alloying/ingot_blend/electrum.json +f605908a5d9135b95c03ac2ef992efc8c763723f data/cosmere/recipes/alloying/ingot_blend/nicrosil.json +5281031929535da68f726b29cb99576f555ef24d data/cosmere/recipes/alloying/ingot_blend/pewter.json +ff4cfaaaa083dda3067e17b829048d368810dd6d data/cosmere/recipes/alloying/ingot_blend/steel.json +f37ea3bf5560018fa302c8b1502fd0a740a71b92 data/cosmere/recipes/alloying/raw_blend/bendalloy.json +f39ac5face05e4b7c08152679649d9be99c3392e data/cosmere/recipes/alloying/raw_blend/brass.json +54eb611e1e1d97be672ee5f24d61d298251f788f data/cosmere/recipes/alloying/raw_blend/bronze.json +d682ab056acaa8c3dbf6fa57952b5568f4df9353 data/cosmere/recipes/alloying/raw_blend/duralumin.json +8a96b24650a0e22db06e4b6258f0bbf79cf350ec data/cosmere/recipes/alloying/raw_blend/electrum.json +01ae7863a9c516393be723df33bfabf9064a11a8 data/cosmere/recipes/alloying/raw_blend/nicrosil.json +1dd6b54fb34bf54c719bd2f6ac8f8b4b034abd98 data/cosmere/recipes/alloying/raw_blend/pewter.json +095fec2c1e844b7ba9c7d8a026fdc3d5744e8a1a data/cosmere/recipes/alloying/raw_blend/steel.json 5e736cf1457a88c41af96291727263126e4506b1 data/cosmere/recipes/aluminum_block.json 7af0623a6787b843e870d78cdc7d055c8afc0272 data/cosmere/recipes/aluminum_bracelet_metalmind.json 7101c7e501691436a8361c553dae49f60c6283cf data/cosmere/recipes/aluminum_ingot.json diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json index 615f3d3a7..8611ace73 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/bendalloy" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/bendalloy" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/bendalloy" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json index f8fd21506..4aada781c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/brass" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/brass" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/brass" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json index 5507d7422..28c8b5cfd 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/bronze" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/bronze" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/bronze" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json index 1c0919db5..c64b793ec 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/duralumin" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/duralumin" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/duralumin" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json index f06da7fa9..e186fd91c 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/electrum" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/electrum" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/electrum" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json index 98dc59974..16b844afb 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/nicrosil" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/nicrosil" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/nicrosil" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json index cda283ba0..7602f8080 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/pewter" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/pewter" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/pewter" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json index 8b93c525f..24f503837 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/dust_blend/steel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/dust_blend/steel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/dust_blend/steel" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json index 0fcbe8618..9fed0516d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/bendalloy" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/bendalloy" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/bendalloy" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json index 5a105afb0..5476484f4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/brass" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/brass" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/brass" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json index 40b9d09c0..dd7b3fc7b 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/bronze" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/bronze" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/bronze" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json index eede06a2d..fe4959725 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/duralumin" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/duralumin" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/duralumin" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json index c6fce8658..1b822f88d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/electrum" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/electrum" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/electrum" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json index f20b7527c..ea5fdf996 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/nicrosil" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/nicrosil" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/nicrosil" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json index 080902a55..51aac04e2 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/pewter" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/pewter" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/pewter" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json index ebe263748..cfe40303f 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json @@ -1,13 +1,7 @@ { "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "cosmere:alloying/ingot_blend/steel" - ] - }, "criteria": { "has_item": { - "trigger": "minecraft:inventory_changed", "conditions": { "items": [ { @@ -16,13 +10,14 @@ ] } ] - } + }, + "trigger": "minecraft:inventory_changed" }, "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", "conditions": { "recipe": "cosmere:alloying/ingot_blend/steel" - } + }, + "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ @@ -30,5 +25,10 @@ "has_item", "has_the_recipe" ] - ] + ], + "rewards": { + "recipes": [ + "cosmere:alloying/ingot_blend/steel" + ] + } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json index cc5a870e9..b261356b4 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/bendalloy" + "recipe": "cosmere:alloying/raw_blend/bendalloy" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/bendalloy" + "cosmere:alloying/raw_blend/bendalloy" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json index 417aae3e7..737c83929 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/brass" + "recipe": "cosmere:alloying/raw_blend/brass" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/brass" + "cosmere:alloying/raw_blend/brass" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json index cbbbad6e2..1435af19d 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/bronze" + "recipe": "cosmere:alloying/raw_blend/bronze" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/bronze" + "cosmere:alloying/raw_blend/bronze" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json index b47aae5ae..314fc4f6a 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/duralumin" + "recipe": "cosmere:alloying/raw_blend/duralumin" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/duralumin" + "cosmere:alloying/raw_blend/duralumin" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json index 1e739ddd9..bcd498db9 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/electrum" + "recipe": "cosmere:alloying/raw_blend/electrum" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/electrum" + "cosmere:alloying/raw_blend/electrum" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json index 27e780864..6769c0cbf 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/nicrosil" + "recipe": "cosmere:alloying/raw_blend/nicrosil" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/nicrosil" + "cosmere:alloying/raw_blend/nicrosil" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json index 8e86ecb50..86ec97b15 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/pewter" + "recipe": "cosmere:alloying/raw_blend/pewter" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/pewter" + "cosmere:alloying/raw_blend/pewter" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json index 688929fa0..b0675e515 100644 --- a/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json +++ b/src/main/generated/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:alloying/blend/steel" + "recipe": "cosmere:alloying/raw_blend/steel" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:alloying/blend/steel" + "cosmere:alloying/raw_blend/steel" ] } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json index 37ba0807b..a29dd2d18 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bendalloy.json @@ -30,7 +30,7 @@ } ], "result": { - "item": "cosmere:bendalloy_blend", - "count": 9 + "count": 9, + "item": "cosmere:bendalloy_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json index 00d55f698..bdfce6f08 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/brass.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:brass_blend", - "count": 2 + "count": 2, + "item": "cosmere:brass_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json index 7d82a7766..d6bea3b21 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/bronze.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:bronze_blend", - "count": 4 + "count": 4, + "item": "cosmere:bronze_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json index 0d33ac209..4662ef93d 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/duralumin.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:duralumin_blend", - "count": 5 + "count": 5, + "item": "cosmere:duralumin_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json index 49e39a64c..943b8323e 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/electrum.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:electrum_blend", - "count": 2 + "count": 2, + "item": "cosmere:electrum_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json index da28bac0d..a0e078bf5 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/nicrosil.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:nicrosil_blend", - "count": 4 + "count": 4, + "item": "cosmere:nicrosil_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json index 95856a5c9..dfdf6bbea 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/pewter.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:pewter_blend", - "count": 5 + "count": 5, + "item": "cosmere:pewter_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json index ee7f90545..a78aea2d0 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json +++ b/src/main/generated/data/cosmere/recipes/alloying/dust_blend/steel.json @@ -20,7 +20,7 @@ ] ], "result": { - "item": "cosmere:steel_blend", - "count": 4 + "count": 4, + "item": "cosmere:steel_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json index fd5803db5..56a36af66 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json @@ -30,7 +30,7 @@ } ], "result": { - "item": "cosmere:bendalloy_blend", - "count": 9 + "count": 9, + "item": "cosmere:bendalloy_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json index 1774e7fee..21a687be1 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/brass.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:brass_blend", - "count": 2 + "count": 2, + "item": "cosmere:brass_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json index 2eed2999d..4a8546c4d 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/bronze.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:bronze_blend", - "count": 4 + "count": 4, + "item": "cosmere:bronze_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json index 5691604bf..e6214c5d3 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/duralumin.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:duralumin_blend", - "count": 5 + "count": 5, + "item": "cosmere:duralumin_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json index 5df58461f..d1b00b4cc 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/electrum.json @@ -9,7 +9,7 @@ } ], "result": { - "item": "cosmere:electrum_blend", - "count": 2 + "count": 2, + "item": "cosmere:electrum_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json index 5fcb3f3ee..f13945fb9 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json @@ -15,7 +15,7 @@ } ], "result": { - "item": "cosmere:nicrosil_blend", - "count": 4 + "count": 4, + "item": "cosmere:nicrosil_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json index 0d26c169e..27ddbac4d 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json +++ b/src/main/generated/data/cosmere/recipes/alloying/ingot_blend/pewter.json @@ -18,7 +18,7 @@ } ], "result": { - "item": "cosmere:pewter_blend", - "count": 5 + "count": 5, + "item": "cosmere:pewter_blend" } } \ No newline at end of file diff --git a/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json index 041d77946..40307b780 100644 --- a/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json +++ b/src/main/generated/data/cosmere/recipes/alloying/raw_blend/steel.json @@ -20,7 +20,7 @@ ] ], "result": { - "item": "cosmere:steel_blend", - "count": 4 + "count": 4, + "item": "cosmere:steel_blend" } } \ No newline at end of file From 592a94858d26644f07c4d7d6d06f05a5ca92be0b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 20:01:51 +1200 Subject: [PATCH 0307/1090] Fix crash with Jade being unable to find the cosmere entity tooltip translation --- build.gradle | 4 +++- gradle.properties | 3 ++- .../generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- src/main/generated/assets/cosmere/lang/en_us.json | 1 + src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java | 2 +- src/main/java/leaf/cosmere/datagen/language/EngLangGen.java | 2 ++ 6 files changed, 11 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 3f94645db..181bef91b 100644 --- a/build.gradle +++ b/build.gradle @@ -123,6 +123,7 @@ dependencies { annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' + runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") @@ -131,7 +132,8 @@ dependencies { compileOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}:api") runtimeOnly fg.deobf("vazkii.patchouli:Patchouli:${patchouli_version}") - implementation fg.deobf("curse.maven:jade-324717:${jade_id}") + implementation fg.deobf("curse.maven:jade-324717:${jade_id_mod}") + //compileOnly fg.deobf("curse.maven:jade-324717:${jade_id_api}") //modname-modid:fileid? diff --git a/gradle.properties b/gradle.properties index 31cfbc451..a63ccc9a1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,4 +13,5 @@ build_number=50 jei_version=11.0.0.206 curios_version=1.19-5.1.0.2 patchouli_version=1.19-72 -jade_id=3834998 \ No newline at end of file +jade_id_mod=3834997 +jade_id_api=3834998 \ No newline at end of file diff --git a/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 867d95feb..6e28e7a57 100644 --- a/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/main/generated/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19 2022-07-03T17:21:10.2454167 Languages: en_us -490b1c6c4fdb030e4ccd46ab6f8cd4de156f1ffe assets/cosmere/lang/en_us.json +// 1.19 2022-07-03T19:54:15.1415392 Languages: en_us +3da12c74b4fead3290cfc00ad55d164c8ee7081b assets/cosmere/lang/en_us.json diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 3d4724d0a..342bb5028 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -146,6 +146,7 @@ "command.cosmere.power.found": "Powers found for: %s \n", "command.cosmere.power.set.fail": "Failed to update power", "command.cosmere.power.set.success": "Successfully set power to: %s", + "config.jade.plugin_cosmere.spiritweb": "Spiritweb", "cosmere.aluminum_gnat": "Aluminum Gnat", "cosmere.archivist": "Archivist", "cosmere.augur": "Augur", diff --git a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java index 83ce37375..38318e069 100644 --- a/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java +++ b/src/main/java/leaf/cosmere/compat/hwyla/SpiritWebTooltip.java @@ -27,7 +27,7 @@ public class SpiritWebTooltip implements IEntityComponentProvider @Override public ResourceLocation getUid() { - return ResourceLocationHelper.prefix("spirit_web"); + return ResourceLocationHelper.prefix("spiritweb"); } @Override diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index ccf931dc3..a031011fd 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -232,6 +232,8 @@ else if (item instanceof MetalmindItem) //Sound Schemes //Configs + add("config.jade.plugin_cosmere.spiritweb", "Spiritweb"); + //Commands add(POWER_INVALID, "Invalid power"); From d6c342e4fc193dab190df2081811775775ed98be Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 20:04:32 +1200 Subject: [PATCH 0308/1090] add jei to the test environment --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 181bef91b..b1e1844c0 100644 --- a/build.gradle +++ b/build.gradle @@ -123,8 +123,8 @@ dependencies { annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common:${jei_version}") - compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") + runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") From 79e70333d597ade69850ec1c09a7bdab1cf7f49c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 3 Jul 2022 20:15:18 +1200 Subject: [PATCH 0309/1090] get jei working in dev environment --- build.gradle | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b1e1844c0..671ec9ac0 100644 --- a/build.gradle +++ b/build.gradle @@ -123,8 +123,11 @@ dependencies { annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' - runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") + // compile against the JEI API but do not include it at runtime + compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-common-api:${jei_version}") compileOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge-api:${jei_version}") + // at runtime, use the full JEI jar for Forge + runtimeOnly fg.deobf("mezz.jei:jei-${minecraft_version}-forge:${jei_version}") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}:api") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:${curios_version}") From 54fb9808ddb8b55420803e34a10f0e78b028d38f Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 10:10:08 +1200 Subject: [PATCH 0310/1090] atium spikes prefer stealing atium powers --- .../cosmere/items/curio/IHemalurgicInfo.java | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java index d826a43a4..52db7ffd0 100644 --- a/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java +++ b/src/main/java/leaf/cosmere/items/curio/IHemalurgicInfo.java @@ -10,6 +10,8 @@ import leaf.cosmere.constants.Manifestations; import leaf.cosmere.constants.Metals; import leaf.cosmere.manifestation.AManifestation; +import leaf.cosmere.manifestation.allomancy.AllomancyBase; +import leaf.cosmere.manifestation.feruchemy.FeruchemyBase; import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import leaf.cosmere.utils.helpers.CompoundNBTHelper; @@ -134,14 +136,31 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType case ATIUM: { //Steals any one power - //todo decide if we just pick a random power - AManifestation manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); - if (manifestation == null) + AManifestation manifestation; + + AManifestation atiumAllomancy = ManifestationRegistry.ALLOMANCY_POWERS.get(Metals.MetalType.ATIUM).get(); + AManifestation atiumFeruchemy = ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ATIUM).get(); + + if (manifestationsFound.contains(atiumFeruchemy)) + { + manifestation = atiumFeruchemy; + } + else if (manifestationsFound.contains(atiumAllomancy)) + { + manifestation = atiumAllomancy; + } + else { - //todo decide if prefer allomancy over feruchemy? - manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + //todo decide if we just pick a random power + manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.ALLOMANCY); + if (manifestation == null) + { + //todo decide if prefer allomancy over feruchemy? the only source of both would be a player though, so who cares + manifestation = getRandomMetalPowerFromList(manifestationsFound, whiteList, Manifestations.ManifestationTypes.FERUCHEMY); + } } + //then try steal it if (manifestation != null) { From a40aa8a36e5d09bc1111bc5e528ae5be8849f4b1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 10:28:40 +1200 Subject: [PATCH 0311/1090] Fix consuming lerasium/lerasatium via vial not granting powers. --- .../leaf/cosmere/items/MetalNuggetItem.java | 4 ++- .../leaf/cosmere/items/MetalVialItem.java | 28 +++++-------------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 1076136e2..e5dd31e0f 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -95,7 +95,9 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met spiritweb.METALS_INGESTED.put(metalType, metalIngested + metalType.getAllomancyBurnTimeSeconds()); } - if (livingEntity instanceof Player && !((Player) livingEntity).isCreative()) + spiritweb.syncToClients(null); + + if (itemstack != null && livingEntity instanceof Player && !((Player) livingEntity).isCreative()) { itemstack.shrink(1); } diff --git a/src/main/java/leaf/cosmere/items/MetalVialItem.java b/src/main/java/leaf/cosmere/items/MetalVialItem.java index 647195e7e..09634de66 100644 --- a/src/main/java/leaf/cosmere/items/MetalVialItem.java +++ b/src/main/java/leaf/cosmere/items/MetalVialItem.java @@ -90,32 +90,18 @@ public InteractionResultHolder use(Level world, Player player, @Nonnu @Override public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity entityLiving) { - Player playerentity = entityLiving instanceof Player ? (Player) entityLiving : null; if (!worldIn.isClientSide) { - SpiritwebCapability.get(entityLiving).ifPresent(iSpiritweb -> - { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - - //for each metal in the vial + //for each metal in the vial + Map metalsInVial = getStoredMetalsMap(getContainedMetalsTag(stack)); - Map metalsInVial = getStoredMetalsMap(getContainedMetalsTag(stack)); - - metalsInVial.entrySet().stream().forEach(metalInfo -> - { - // MetalName x Value - Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); - - //reference ConsumeNugget from metalNuggetItem - int secondsPerNugget = metalInfo.getValue() * metalType.getAllomancyBurnTimeSeconds(); - - //add to metal stored - spiritweb.METALS_INGESTED.put(metalType, spiritweb.METALS_INGESTED.get(metalType) + secondsPerNugget); - }); - - iSpiritweb.syncToClients(null); + metalsInVial.entrySet().forEach(metalInfo -> + { + // MetalName x Value + Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); + MetalNuggetItem.consumeNugget(entityLiving, metalType, null); }); } From 00c89267fe33957211598068f2a63bfd5ecdfdb4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 10:34:35 +1200 Subject: [PATCH 0312/1090] Fix storing nicrosil not letting player store identity --- .../effects/feruchemy/store/NicrosilStoreEffect.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java index a6fb31e30..022ac4e2e 100644 --- a/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java +++ b/src/main/java/leaf/cosmere/effects/feruchemy/store/NicrosilStoreEffect.java @@ -7,7 +7,6 @@ import leaf.cosmere.constants.Metals; import leaf.cosmere.effects.feruchemy.FeruchemyEffectBase; import leaf.cosmere.manifestation.AManifestation; -import leaf.cosmere.registry.AttributesRegistry; import leaf.cosmere.registry.ManifestationRegistry; import net.minecraft.world.effect.MobEffectCategory; import net.minecraft.world.entity.ai.attributes.Attribute; @@ -24,9 +23,12 @@ public NicrosilStoreEffect(Metals.MetalType type, MobEffectCategory effectType) for (AManifestation manifestation : ManifestationRegistry.MANIFESTATION_REGISTRY.get()) { final RegistryObject attributeRegistryObject = manifestation.getAttribute(); - if (attributeRegistryObject == null - || !attributeRegistryObject.isPresent() - || manifestation == ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.NICROSIL).get()) + + final boolean invalidMetalToDisable = + manifestation == ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.NICROSIL).get() + || manifestation == ManifestationRegistry.FERUCHEMY_POWERS.get(Metals.MetalType.ALUMINUM).get(); + + if (attributeRegistryObject == null || !attributeRegistryObject.isPresent() || invalidMetalToDisable) { continue; } From 4d7ea76779445b43c94ea687ae59ab1cbffd84d9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 11:27:27 +1200 Subject: [PATCH 0313/1090] Fixed crash related to consuming nuggets directly --- src/main/java/leaf/cosmere/items/MetalNuggetItem.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index e5dd31e0f..32e99fe89 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -46,7 +46,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) { - if (metalType == null) + if (metalType == null || livingEntity.level.isClientSide) { return; } From a05b22472a2092558f7b583b4701d0d1d326ab80 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 12:19:25 +1200 Subject: [PATCH 0314/1090] Fix spamming right click to fast eat nuggets --- .../generated/assets/cosmere/lang/en_us.json | 2 ++ .../cosmere/datagen/language/EngLangGen.java | 2 ++ .../cosmere/handlers/EntityEventHandler.java | 27 ++++++----------- .../leaf/cosmere/items/MetalNuggetItem.java | 30 +++++++++++++------ 4 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/main/generated/assets/cosmere/lang/en_us.json b/src/main/generated/assets/cosmere/lang/en_us.json index 342bb5028..e91116908 100644 --- a/src/main/generated/assets/cosmere/lang/en_us.json +++ b/src/main/generated/assets/cosmere/lang/en_us.json @@ -185,6 +185,8 @@ "curios.identifier.feet": "Feet", "curios.identifier.legs": "Legs", "curios.identifier.linchpin": "Linch pin", + "death.attack.eat_metal": "%1$s shredded their throat while eating metal", + "death.attack.eat_metal.player": "%1$s tried to eat metal directly while fighting %2$s", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "effect.cosmere.allomancy_boost": "Allomancy Boost", diff --git a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java index a031011fd..97d2106e2 100644 --- a/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java +++ b/src/main/java/leaf/cosmere/datagen/language/EngLangGen.java @@ -214,6 +214,8 @@ else if (item instanceof MetalmindItem) //Damage Sources add("death.attack.spiked", "%1$s was not careful with their hemalurgic spike"); add("death.attack.spiked.player", "%1$s was not careful with their hemalurgic spike while fighting %2$s"); + add("death.attack.eat_metal", "%1$s shredded their throat while eating metal"); + add("death.attack.eat_metal.player", "%1$s tried to eat metal directly while fighting %2$s"); //Containers diff --git a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java index c5f587fcc..950f2edbe 100644 --- a/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/handlers/EntityEventHandler.java @@ -15,6 +15,7 @@ import leaf.cosmere.manifestation.AManifestation; import leaf.cosmere.manifestation.feruchemy.FeruchemyAtium; import leaf.cosmere.registry.ManifestationRegistry; +import leaf.cosmere.registry.TagsRegistry; import leaf.cosmere.utils.helpers.MathHelper; import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.core.Direction; @@ -25,7 +26,6 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeMap; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.animal.Cat; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.monster.Ravager; @@ -195,31 +195,22 @@ public static void onRightClickItem(PlayerInteractEvent.RightClickItem event) final Player player = event.getPlayer(); ItemStack itemInHand = player.getItemInHand(event.getHand()); - final Item[] allowedItems = {Items.IRON_NUGGET, Items.GOLD_NUGGET/*,Items.COPPER_NUGGET*/}; + final Item[] allowedItems = {Items.IRON_NUGGET, Items.GOLD_NUGGET}; final Item handItem = itemInHand.getItem(); if (!itemInHand.isEmpty() && Arrays.asList(allowedItems).contains(handItem)) { - Metals.MetalType metalType = null; - - if (handItem == Items.IRON_NUGGET) - { - metalType = Metals.MetalType.IRON; - } - else if (handItem == Items.GOLD_NUGGET) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - metalType = Metals.MetalType.GOLD; + if (itemInHand.is(TagsRegistry.Items.METAL_NUGGET_TAGS.get(metalType))) + { + player.startUsingItem(event.getHand()); + MetalNuggetItem.consumeNugget(player, metalType, itemInHand); + break; + } } - /*else if (handItem == Items.COPPER_NUGGET)//todo if copper ever has nuggets - { - metalType = Metals.MetalType.COPPER; - }*/ - player.startUsingItem(event.getHand()); - - MetalNuggetItem.consumeNugget(player, metalType, itemInHand); } - } diff --git a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java index 32e99fe89..886a10631 100644 --- a/src/main/java/leaf/cosmere/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/items/MetalNuggetItem.java @@ -12,36 +12,48 @@ import leaf.cosmere.utils.helpers.TextHelper; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.ItemUtils; import net.minecraft.world.level.Level; public class MetalNuggetItem extends MetalItem { + public static final DamageSource EAT_METAL = (new DamageSource("eat_metal")).bypassArmor().bypassMagic(); + + public MetalNuggetItem(Metals.MetalType metalType) { super(metalType); } @Override - public int getUseDuration(ItemStack stack) + public boolean isEdible() { - //be annoying enough that people prefer metal vials - return 64; + return true; } public InteractionResultHolder use(Level worldIn, Player playerIn, InteractionHand handIn) { - ItemStack itemstack = playerIn.getItemInHand(handIn); - playerIn.startUsingItem(handIn); - - //todo convert to shavings + return ItemUtils.startUsingInstantly(worldIn, playerIn, handIn); + } - consumeNugget(playerIn, getMetalType(), itemstack); + @Override + public int getUseDuration(ItemStack stack) + { + //be annoying enough that people prefer metal vials + return 16; + } - return InteractionResultHolder.consume(itemstack); + @Override + public ItemStack finishUsingItem(ItemStack pStack, Level pLevel, LivingEntity pLivingEntity) + { + consumeNugget(pLivingEntity, this.getMetalType(), pStack); + pLivingEntity.hurt(EAT_METAL,1); + return pStack; } public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, ItemStack itemstack) From 0e92a9c2d4f56b8de6797e987ab7713f1ba57240 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 6 Jul 2022 12:19:42 +1200 Subject: [PATCH 0315/1090] textures --- .../cosmere/textures/block/ore_block.png | Bin 49944 -> 3044 bytes .../textures/block/ore_block_deepslate.png | Bin 240 -> 3126 bytes .../textures/block/ore_block_tint_overlay.png | Bin 49919 -> 3157 bytes .../textures/mob_effect/copper_cloud.png | Bin 0 -> 3100 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/cosmere/textures/mob_effect/copper_cloud.png diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block.png b/src/main/resources/assets/cosmere/textures/block/ore_block.png index 3133a5c7a06cbe3de750460ba6049985feada9cb..0fdb7a1a1bf3bc051eb837a0ad9885381fb8f28e 100644 GIT binary patch delta 3031 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 diff --git a/src/main/resources/assets/cosmere/textures/block/ore_block_deepslate.png b/src/main/resources/assets/cosmere/textures/block/ore_block_deepslate.png index b07b09d506ce3f399084b87a44347aeb020aaabe..54f05097e762652f17b1f66896e6f919c72049d9 100644 GIT binary patch delta 3121 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 Date: Mon, 13 May 2024 13:52:35 +1200 Subject: [PATCH 0851/1090] [Port] Cleaning errors in various scripts --- src/api/java/leaf/cosmere/api/Metals.java | 31 ++++++----- .../cosmere/api/helpers/EntityHelper.java | 6 +-- .../cosmere/api/helpers/PlayerHelper.java | 2 +- .../leaf/cosmere/aviar/mixin/EntityMixin.java | 4 +- .../surgebinding/common/entity/Cryptic.java | 52 +++++++++++-------- 5 files changed, 52 insertions(+), 43 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 8f777a8d9..21691c0d0 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -1,5 +1,5 @@ /* - * File updated ~ 3 - 4 - 2024 ~ Leaf + * File updated ~ 1 - 5 - 2024 ~ Leaf */ package leaf.cosmere.api; @@ -10,7 +10,6 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -755,12 +754,12 @@ else if (killedEntity instanceof Pufferfish) } else if (killedEntity instanceof Cat cat) { - final CatVariant catType = cat.getCatVariant(); - if (catType == CatVariant.BLACK)//all black + final CatVariant catType = cat.getVariant(); + if (catType.texture().getPath().contains("black"))//all black { strengthToAdd = -5; } - else if (catType == CatVariant.WHITE)//white + else if (catType.texture().getPath().contains("white"))//white { strengthToAdd = 1; } @@ -925,29 +924,29 @@ public float getKnockbackResistance() } @Override - public int getDurabilityForSlot(EquipmentSlot pSlot) + public int getDurabilityForType(ArmorItem.Type pType) { - float multiplier = switch (pSlot) + float multiplier = switch (pType) { default -> 0.0F; - case HEAD -> 0.3F; - case CHEST -> 0.5F; - case LEGS -> 0.4F; - case FEET -> 0.25F; + case HELMET -> 0.3F; + case CHESTPLATE -> 0.5F; + case LEGGINGS -> 0.4F; + case BOOTS -> 0.25F; }; return Mth.floor(getUses() * multiplier); } @Override - public int getDefenseForSlot(EquipmentSlot pSlot) + public int getDefenseForType(ArmorItem.Type pType) { - return getLevel() + switch (pSlot) + return getLevel() + switch (pType) { default -> 0; - case HEAD, FEET -> 0; - case LEGS -> 3; - case CHEST -> 4; + case HELMET, BOOTS -> 0; + case LEGGINGS -> 3; + case CHESTPLATE -> 4; }; } diff --git a/src/api/java/leaf/cosmere/api/helpers/EntityHelper.java b/src/api/java/leaf/cosmere/api/helpers/EntityHelper.java index d3847d5ae..035ac246d 100644 --- a/src/api/java/leaf/cosmere/api/helpers/EntityHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/EntityHelper.java @@ -1,5 +1,5 @@ /* - * File updated ~ 26 - 10 - 2023 ~ Leaf + * File updated ~ 1 - 5 - 2024 ~ Leaf */ package leaf.cosmere.api.helpers; @@ -17,13 +17,13 @@ public class EntityHelper public static List getLivingEntitiesInRange(LivingEntity livingEntity, int range, boolean includeSelf) { AABB areaOfEffect = new AABB(livingEntity.blockPosition()).inflate(range, range, range); - return livingEntity.level.getEntitiesOfClass(LivingEntity.class, areaOfEffect, e -> includeSelf || e != livingEntity); + return livingEntity.level().getEntitiesOfClass(LivingEntity.class, areaOfEffect, e -> includeSelf || e != livingEntity); } public static List getEntitiesInRange(Entity entity, int range, boolean includeSelf) { AABB areaOfEffect = new AABB(entity.blockPosition()).inflate(range, range, range); - return entity.level.getEntitiesOfClass(Entity.class, areaOfEffect, e -> includeSelf || e != entity); + return entity.level().getEntitiesOfClass(Entity.class, areaOfEffect, e -> includeSelf || e != entity); } public static double getAttributeValue(LivingEntity entity, Attribute attribute) diff --git a/src/api/java/leaf/cosmere/api/helpers/PlayerHelper.java b/src/api/java/leaf/cosmere/api/helpers/PlayerHelper.java index 424a20d40..59d7956b1 100644 --- a/src/api/java/leaf/cosmere/api/helpers/PlayerHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/PlayerHelper.java @@ -70,7 +70,7 @@ public static HitResult pickWithRange(LivingEntity player, int range) public static void addItem(Player player, ItemStack stack) { - if (!player.addItem(stack) && !player.level.isClientSide) + if (!player.addItem(stack) && !player.level().isClientSide) { ItemEntity entity = new ItemEntity(player.getCommandSenderWorld(), player.position().x(), player.position().y(), player.position().z(), stack); player.getCommandSenderWorld().addFreshEntity(entity); diff --git a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java index 012be64c8..d65577a3d 100644 --- a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java +++ b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 21 - 11 - 2023 ~ Leaf + * File updated ~ 1 - 5 - 2024 ~ Leaf */ package leaf.cosmere.aviar.mixin; @@ -26,7 +26,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) { Entity e = (Entity) (Object) this; - final boolean isServerSide = !(e.level.isClientSide); + final boolean isServerSide = !(e.level().isClientSide); final boolean isInanimateEntity = !(e instanceof LivingEntity); Player clientPlayer = (Player) Minecraft.getInstance().player; if (isServerSide || isInanimateEntity || cir.getReturnValue() || clientPlayer == null) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java index a7b5c9f23..7c0b2f233 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java @@ -81,33 +81,43 @@ public InteractionResult mobInteract(Player pPlayer, InteractionHand pHand) { itemstack.shrink(1); } - if (!this.isSilent()) { - this.level.playSound((Player)null, this.getX(), this.getY(), this.getZ(), SoundEvents.PARROT_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); - } - - if (!this.level.isClientSide) { - if (this.random.nextInt(10) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, pPlayer)) { + if (!this.isSilent()) + { + this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PARROT_EAT, this.getSoundSource(), 1.0F, 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F); + } + + if (!this.level().isClientSide) + { + if (this.random.nextInt(10) == 0 && !net.minecraftforge.event.ForgeEventFactory.onAnimalTame(this, pPlayer)) + { // System.out.println("Cryptic#mobInteract isClient, setOwner:" + pPlayer); - this.tame(pPlayer); - this.level.broadcastEntityEvent(this, (byte)7); - } else { + this.tame(pPlayer); + this.level().broadcastEntityEvent(this, (byte) 7); + } + else + { // System.out.println("Cryptic#mobInteract isClient, tame FAIL"); - this.level.broadcastEntityEvent(this, (byte)6); - } - } - - return InteractionResult.sidedSuccess(this.level.isClientSide); - } else if (this.isTame() && this.isOwnedBy(pPlayer)) { - if (!this.level.isClientSide) { + this.level().broadcastEntityEvent(this, (byte) 6); + } + } + + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + else if (this.isTame() && this.isOwnedBy(pPlayer)) + { + if (!this.level().isClientSide) + { // System.out.println("Cryptic#mobInteract setOrderedToSit"); this.setOrderedToSit(!this.isOrderedToSit()); } - return InteractionResult.sidedSuccess(this.level.isClientSide); - } else { - return super.mobInteract(pPlayer, pHand); - } - } + return InteractionResult.sidedSuccess(this.level().isClientSide); + } + else + { + return super.mobInteract(pPlayer, pHand); + } + } @Override public boolean isFood(ItemStack pStack) { From 1272a540ea07190cd76c88144bb90b285e710580 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Thu, 16 May 2024 18:55:36 +0200 Subject: [PATCH 0852/1090] [Port] Ported most core Cosmere mod features. Only Biomes remain --- .../java/leaf/cosmere/api/CosmereTags.java | 5 +- .../leaf/cosmere/api/helpers/DrawHelper.java | 15 ++-- .../leaf/cosmere/api/math/VectorHelper.java | 12 +-- .../leaf/cosmere/client/ClientModEvents.java | 38 +++++----- .../cosmere/client/gui/SpiritwebMenu.java | 75 ++++++++++--------- .../java/leaf/cosmere/common/Cosmere.java | 1 + .../cap/entity/SpiritwebCapability.java | 25 ++++--- .../ChooseMetalbornPowersCommand.java | 8 +- .../subcommands/CosmereEffectCommand.java | 6 +- .../commands/subcommands/EyeCommand.java | 2 +- .../subcommands/ManifestationCommand.java | 16 ++-- .../commands/subcommands/SummonCommand.java | 2 +- .../commands/subcommands/TestCommand.java | 4 +- .../eventHandlers/EntityEventHandler.java | 4 +- .../eventHandlers/PlayerEventHandler.java | 4 +- .../common/itemgroups/CosmereItemGroups.java | 38 +++++----- .../leaf/cosmere/common/items/BaseItem.java | 2 +- .../common/items/ChargeableItemBase.java | 25 ++++--- .../items/ChargeableMetalCurioItem.java | 2 +- .../leaf/cosmere/common/items/MetalItem.java | 2 +- .../cosmere/common/items/MetalNuggetItem.java | 8 +- .../cosmere/common/properties/PropTypes.java | 23 +++--- .../impl/BlockDeferredRegister.java | 2 +- .../ConfiguredFeatureDeferredRegister.java | 3 +- .../impl/GameEventDeferredRegister.java | 3 +- .../impl/ItemDeferredRegister.java | 2 +- .../impl/LootFunctionDeferredRegister.java | 3 +- .../impl/POITypeDeferredRegister.java | 3 +- .../impl/PlacedFeatureDeferredRegister.java | 3 +- .../impl/StatDeferredRegister.java | 3 +- .../VillagerProfessionDeferredRegister.java | 3 +- .../registry/CosmereDamageTypesRegistry.java | 25 +++++++ .../common/registry/DimensionRegistry.java | 6 +- .../world/MetalOreBiomeFeatureModifier.java | 2 +- 34 files changed, 211 insertions(+), 164 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index 57a791b7e..d09ab3d7e 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -13,6 +13,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; +import net.minecraftforge.registries.ForgeRegistries; import top.theillusivec4.curios.api.CuriosApi; import java.util.Arrays; @@ -171,7 +172,7 @@ public static class Biomes private static TagKey create(ResourceLocation resourceLocation) { - return TagKey.create(Registry.BIOME_REGISTRY, resourceLocation); + return TagKey.create(ForgeRegistries.BIOMES.getRegistryKey(), resourceLocation); } } @@ -186,7 +187,7 @@ private static TagKey> create(String namespace, String path) private static TagKey> create(ResourceLocation resourceLocation) { - return TagKey.create(Registry.ENTITY_TYPE_REGISTRY, resourceLocation); + return TagKey.create(ForgeRegistries.ENTITY_TYPES.getRegistryKey(), resourceLocation); } } } diff --git a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java index 768b1e4ea..d6d05359d 100644 --- a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java @@ -9,10 +9,11 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexFormat; -import com.mojang.math.Matrix3f; -import com.mojang.math.Matrix4f; -import com.mojang.math.Quaternion; -import com.mojang.math.Vector3f; +import com.mojang.math.Axis; +import org.joml.Matrix3f; +import org.joml.Matrix4f; +import org.joml.Quaternionf; +import org.joml.Vector3f; import leaf.cosmere.api.CosmereAPI; import net.minecraft.Util; import net.minecraft.client.Minecraft; @@ -115,8 +116,8 @@ public static void drawSquareAtPoint(PoseStack pStack, Color color, List s double pitch = Math.asin(-directionalVec.y); double yaw = Math.atan2(directionalVec.x, directionalVec.z); - Quaternion rotQuat = Vector3f.YP.rotationDegrees((float) Math.toDegrees(yaw)); - rotQuat.mul(Vector3f.XP.rotationDegrees((float) Math.toDegrees(pitch) + 90)); + Quaternionf rotQuat = Axis.YP.rotationDegrees((float) Math.toDegrees(yaw)); + rotQuat.mul(Axis.XP.rotationDegrees((float) Math.toDegrees(pitch) + 90)); float[] vertices = { -size, 0, -size, @@ -139,7 +140,7 @@ public static void drawSquareAtPoint(PoseStack pStack, Color color, List s float vertexZ = vertices[i + 2]; Vector3f rotQuatVec = new Vector3f(vertexX, vertexY, vertexZ); - rotQuatVec.transform(rotQuat); + rotQuatVec.rotate(rotQuat); float finalX = (float) (rotQuatVec.x() + pos.x()); float finalY = (float) (rotQuatVec.y() + pos.y()); diff --git a/src/api/java/leaf/cosmere/api/math/VectorHelper.java b/src/api/java/leaf/cosmere/api/math/VectorHelper.java index d3dfc6589..84b56089c 100644 --- a/src/api/java/leaf/cosmere/api/math/VectorHelper.java +++ b/src/api/java/leaf/cosmere/api/math/VectorHelper.java @@ -15,7 +15,7 @@ public class VectorHelper public static final float kEpsilon = 0.00001F; // Makes this vector have a magnitude of 1. - public static Vec3i Normalize(Vec3i vec) + public static Vec3 Normalize(Vec3 vec) { float mag = Magnitude(vec); if (mag > kEpsilon) @@ -24,22 +24,22 @@ public static Vec3i Normalize(Vec3i vec) } else { - vec = Vec3i.ZERO; + vec = Vec3.ZERO; } return vec; } // - public static float Magnitude(Vec3i vector) + public static float Magnitude(Vec3 vector) { - return Mth.sqrt(vector.getX() * vector.getX() + vector.getY() * vector.getY() + vector.getZ() * vector.getZ()); + return Mth.sqrt((float) (vector.x() * vector.x() + vector.y() * vector.y() + vector.z() * vector.z())); } - public static Vec3i divide(Vec3i a, float d) + public static Vec3 divide(Vec3 a, float d) { - return new Vec3i(a.getX() / d, a.getY() / d, a.getZ() / d); + return new Vec3(a.x() / d, a.y() / d, a.x() / d); } diff --git a/src/main/java/leaf/cosmere/client/ClientModEvents.java b/src/main/java/leaf/cosmere/client/ClientModEvents.java index 7f51aafc7..092378426 100644 --- a/src/main/java/leaf/cosmere/client/ClientModEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientModEvents.java @@ -11,6 +11,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; @@ -42,22 +43,21 @@ public static void init(final FMLClientSetupEvent event) //special thank you to the chisels and bits team who have an example of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(Cosmere.rl("icon/blank")); - event.addSprite(Cosmere.rl("icon/arrow_up")); - event.addSprite(Cosmere.rl("icon/arrow_down")); - event.addSprite(Cosmere.rl("icon/on")); - event.addSprite(Cosmere.rl("icon/off")); - - } +// @SubscribeEvent +// public static void registerIconTextures(TextureStitchEvent event) +// { +// final TextureAtlas map = event.getAtlas(); +// if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) +// { +// return; +// } +// +// event.addSprite(Cosmere.rl("icon/blank")); +// event.addSprite(Cosmere.rl("icon/arrow_up")); +// event.addSprite(Cosmere.rl("icon/arrow_down")); +// event.addSprite(Cosmere.rl("icon/on")); +// event.addSprite(Cosmere.rl("icon/off")); +// } @SubscribeEvent @@ -66,11 +66,11 @@ public static void registerGuiOverlays(RegisterGuiOverlaysEvent event) event.registerBelow( VanillaGuiOverlay.DEBUG_TEXT.id(), "hud", - (gui, poseStack, partialTick, width, height) -> renderSpiritwebHUD(poseStack) + (gui, guiGraphics, partialTick, width, height) -> renderSpiritwebHUD(guiGraphics) ); } - public static void renderSpiritwebHUD(final PoseStack poseStack) + public static void renderSpiritwebHUD(final GuiGraphics guiGraphics) { final Minecraft mc = Minecraft.getInstance(); SpiritwebCapability.get(mc.player).ifPresent(cap -> @@ -80,7 +80,7 @@ public static void renderSpiritwebHUD(final PoseStack poseStack) //normal hud stuff if (mc.screen != SpiritwebMenu.instance) { - spiritweb.renderSelectedHUD(poseStack); + spiritweb.renderSelectedHUD(guiGraphics); } //actual menu stuff diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 4f9ff9acd..0403230f3 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -19,6 +19,8 @@ import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.common.network.packets.SetSelectedManifestationMessage; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.resources.language.I18n; @@ -390,8 +392,9 @@ protected void SetupButtons() } @Override - public void render(final @NotNull PoseStack matrixStack, final int mouseX, final int mouseY, final float partialTicks) + public void render(final GuiGraphics guiGraphics, final int mouseX, final int mouseY, final float partialTicks) { + PoseStack matrixStack = guiGraphics.pose(); if (spiritweb == null) { return; @@ -402,9 +405,9 @@ public void render(final @NotNull PoseStack matrixStack, final int mouseX, final final int start = (int) (visibility * 98) << 24; final int end = (int) (visibility * 128) << 24; - fillGradient(matrixStack, 0, 0, width, height, start, end); + guiGraphics.fillGradient(0, 0, width, height, start, end); - RenderSystem.disableTexture(); + //RenderSystem.disableTexture(); RenderSystem.enableBlend(); RenderSystem.blendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0); final Tesselator tessellator = Tesselator.getInstance(); @@ -431,25 +434,26 @@ public void render(final @NotNull PoseStack matrixStack, final int mouseX, final //draw out what we've asked for tessellator.end(); - drawIcons(matrixStack, buffer, middle_x, middle_y); + drawIcons(guiGraphics, buffer, middle_x, middle_y); // draw radial button strings - renderRadialButtonStrings(matrixStack, (int) middle_x, (int) middle_y); + renderRadialButtonStrings(guiGraphics, (int) middle_x, (int) middle_y); //draw sided button strings - renderSidedButtonStrings(matrixStack, middle_x, middle_y); + renderSidedButtonStrings(guiGraphics, middle_x, middle_y); //draw quadrant strings - renderMetalQuadrantsStrings(matrixStack); + renderMetalQuadrantsStrings(guiGraphics); //do extra text info stuff - renderAnyExtraInfoTexts(matrixStack, (int) middle_x, (int) middle_y); + renderAnyExtraInfoTexts(guiGraphics, (int) middle_x, (int) middle_y); matrixStack.popPose(); } - private void drawIcons(@NotNull PoseStack matrixStack, BufferBuilder buffer, double middle_x, double middle_y) + private void drawIcons(@NotNull GuiGraphics guiGraphics, BufferBuilder buffer, double middle_x, double middle_y) { + PoseStack matrixStack = guiGraphics.pose(); matrixStack.pushPose(); - RenderSystem.enableTexture(); + //RenderSystem.enableTexture(); RenderSystem.enableBlend(); //then we switch to icons @@ -459,14 +463,14 @@ private void drawIcons(@NotNull PoseStack matrixStack, BufferBuilder buffer, dou //buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX_COLOR); //put the icons on the region buttons - renderRadialButtonIcons(matrixStack, middle_x, middle_y); + renderRadialButtonIcons(guiGraphics, middle_x, middle_y); //put the icons on the sided buttons - renderSidedButtonIcons(matrixStack, middle_x, middle_y); + renderSidedButtonIcons(guiGraphics, middle_x, middle_y); matrixStack.popPose(); } - private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int middle_y) + private void renderAnyExtraInfoTexts(GuiGraphics guiGraphics, int middle_x, int middle_y) { int leftSideX = 10; final int[] y = {(int) middle_y / 2}; @@ -484,7 +488,7 @@ private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int mi { if (s.toLowerCase().contains("hydration")) { - font.drawShadow(matrixStack, s, leftSideX, y[0], 0xffffffff); + guiGraphics.drawString(font, s, leftSideX, y[0], 0xffffffff); y[0] += 10; } } @@ -498,14 +502,15 @@ private void renderAnyExtraInfoTexts(PoseStack matrixStack, int middle_x, int mi y[0] = (int) middle_y / 2; int rightSideX = middle_x + 35; - font.drawShadow(matrixStack, I18n.get(selectedManifestation.getTranslationKey()), rightSideX, y[0], 0xffffffff); + guiGraphics.drawString(font, I18n.get(selectedManifestation.getTranslationKey()), rightSideX, y[0], 0xffffffff); //todo mode translation - font.drawShadow(matrixStack, "Mode: " + spiritweb.getMode(selectedManifestation), rightSideX, y[0] + 10, 0xffffffff); + guiGraphics.drawString(font, "Mode: " + spiritweb.getMode(selectedManifestation), rightSideX, y[0] + 10, 0xffffffff); } - private void renderMetalQuadrantsStrings(PoseStack matrixStack) + private void renderMetalQuadrantsStrings(GuiGraphics guiGraphics) { + PoseStack matrixStack = guiGraphics.pose(); m_infoText.clear(); List maniList = spiritweb.getAvailableManifestations(); @@ -535,10 +540,10 @@ private void renderMetalQuadrantsStrings(PoseStack matrixStack) if (((inMetalSubmenu && selectedAllomancyType) || shouldShowAllomancy) && s.toLowerCase().contains("a. " + quad.metalType.getName()) && maniList.contains(Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(quad.metalType.getID()))) { String displayString = s.split(":")[1].stripLeading(); - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY + font.lineHeight, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) quad.centerY + font.lineHeight, 0xffffffff); displayString = quad.metalType.getName().substring(0,1).toUpperCase() + quad.metalType.getName().substring(1); - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY - font.lineHeight*1.5F, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) (quad.centerY - font.lineHeight*1.5F), 0xffffffff); foundNumber = true; break; @@ -546,10 +551,10 @@ private void renderMetalQuadrantsStrings(PoseStack matrixStack) else if (((inMetalSubmenu && selectedFeruchemyType) || shouldShowFeruchemy) && s.toLowerCase().contains("f. " + quad.metalType.getName()) && maniList.contains(Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(quad.metalType.getID()))) { String displayString = s.split(":")[1].stripLeading(); - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY + font.lineHeight, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) quad.centerY + font.lineHeight, 0xffffffff); displayString = quad.metalType.getName().substring(0,1).toUpperCase() + quad.metalType.getName().substring(1); - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY - font.lineHeight*1.5F, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) (quad.centerY - font.lineHeight*1.5F), 0xffffffff); foundNumber = true; break; @@ -566,15 +571,15 @@ else if (((inMetalSubmenu && selectedFeruchemyType) || shouldShowFeruchemy) && s { String displayString; displayString = "0"; - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY + font.lineHeight, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) (quad.centerY + font.lineHeight), 0xffffffff); displayString = quad.metalType.getName().substring(0,1).toUpperCase() + quad.metalType.getName().substring(1); - font.drawShadow(matrixStack, displayString, (int) quad.centerX - font.width(displayString)/2F, (int) quad.centerY - font.lineHeight*1.5F, 0xffffffff); + guiGraphics.drawString(font, displayString, (int) (quad.centerX - font.width(displayString)/2F), (int) (quad.centerY - font.lineHeight*1.5F), 0xffffffff); } } } - private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, double middle_y) + private void renderSidedButtonStrings(GuiGraphics guiGraphics, double middle_x, double middle_y) { for (final SidedMenuButton sideButton : sidedMenuButtons) { @@ -586,16 +591,16 @@ private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, do switch (sideButton.textSide) { case WEST: - font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x1 - 8) - font.width(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + guiGraphics.drawString(font, text, (int) (middle_x + sideButton.x1 - 8) - font.width(text), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); break; case EAST: - font.drawShadow(matrixStack, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); + guiGraphics.drawString(font, text, (int) (middle_x + sideButton.x2 + 8), (int) (middle_y + sideButton.y1 + 6), 0xffffffff); break; case UP: - font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); + guiGraphics.drawString(font, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 - 14), 0xffffffff); break; case DOWN: - font.drawShadow(matrixStack, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); + guiGraphics.drawString(font, text, (int) (middle_x + (sideButton.x1 + sideButton.x2) * 0.5 - font.width(text) * 0.5), (int) (middle_y + sideButton.y1 + 24), 0xffffffff); break; } @@ -603,7 +608,7 @@ private void renderSidedButtonStrings(PoseStack matrixStack, double middle_x, do } } - private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int middle_y) + private void renderRadialButtonStrings(GuiGraphics guiGraphics, int middle_x, int middle_y) { for (final RadialMenuButton button : radialMenuButtons) { @@ -623,7 +628,7 @@ private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int ? fixed_x - (font.width(text) + TEXT_DISTANCE) : fixed_x + TEXT_DISTANCE); - font.drawShadow(matrixStack, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); + guiGraphics.drawString(font, text, middle_x + fixed_x, middle_y + fixed_y, 0xffffffff); //no need to keep searching, we only keep one highlighted at a time. break; @@ -631,7 +636,7 @@ private void renderRadialButtonStrings(PoseStack matrixStack, int middle_x, int } } - private void renderSidedButtonIcons(PoseStack matrixStack, double middleX, double middleY) + private void renderSidedButtonIcons(GuiGraphics guiGraphics, double middleX, double middleY) { final StringBuilder stringBuilder = new StringBuilder(); for (final SidedMenuButton button : sidedMenuButtons) @@ -645,13 +650,13 @@ private void renderSidedButtonIcons(PoseStack matrixStack, double middleX, doubl .append(button.name) .append(".png"); - RenderSystem.setShaderTexture(0, new ResourceLocation(button.name, stringBuilder.toString())); - blit(matrixStack, (int) (middleX + x - 8), (int) (middleY + y - 8), 16, 16, 0, 0, 18, 18, 18, 18); + //RenderSystem.setShaderTexture(0, new ResourceLocation(button.name, stringBuilder.toString())); + guiGraphics.blit(new ResourceLocation(button.name, stringBuilder.toString()), (int) (middleX + x - 8), (int) (middleY + y - 8), 16, 16, 0, 0, 18, 18, 18, 18); } } - private void renderRadialButtonIcons(PoseStack matrixStack, double middleX, double middleY) + private void renderRadialButtonIcons(GuiGraphics guiGraphics, double middleX, double middleY) { final StringBuilder stringBuilder = new StringBuilder(); for (final RadialMenuButton menuRegion : radialMenuButtons) @@ -694,7 +699,7 @@ private void renderRadialButtonIcons(PoseStack matrixStack, double middleX, doub stringBuilder.append(".png"); final ResourceLocation textureLocation = new ResourceLocation(mani.getRegistryName().getNamespace(), stringBuilder.toString()); RenderSystem.setShaderTexture(0, textureLocation); - blit(matrixStack, + guiGraphics.blit(textureLocation, (int) (middleX + x1), (int) (middleY + y1), 16, diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index 480055550..f604aa0e0 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -13,6 +13,7 @@ import leaf.cosmere.common.eventHandlers.ColorHandler; import leaf.cosmere.common.network.NetworkPacketHandler; import leaf.cosmere.common.registry.*; +import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.eventbus.api.IEventBus; diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 4a07bb127..5a0665012 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -21,6 +21,7 @@ import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -167,7 +168,7 @@ public void deserializeNBT(CompoundTag compoundTag) MANIFESTATIONS_MODE.remove(manifestation); } - if (getLiving().level.isClientSide && oldManifestationMode != newManifestationMode) + if (getLiving().level().isClientSide && oldManifestationMode != newManifestationMode) { manifestation.onModeChange(this, oldManifestationMode); } @@ -226,7 +227,7 @@ public void tickEffects() CosmereEffectInstance cosmereEffectInstance = this.activeEffects.get(uuidOfEffedInstance); if (!cosmereEffectInstance.tick(this)) { - if (!this.getLiving().level.isClientSide) + if (!this.getLiving().level().isClientSide) { iterator.remove(); this.onEffectRemoved(cosmereEffectInstance); @@ -272,7 +273,7 @@ public void addEffect(CosmereEffectInstance newEffect, @Nullable Entity sourceEn @Override public void onEffectAdded(CosmereEffectInstance effectInstance, Entity sourceEntity) { - if (!this.getLiving().level.isClientSide) + if (!this.getLiving().level().isClientSide) { effectInstance.applyAttributeModifiers(this.getLiving(), this.getLiving().getAttributes()); } @@ -284,7 +285,7 @@ public void onEffectAdded(CosmereEffectInstance effectInstance, Entity sourceEnt public void onEffectUpdated(CosmereEffectInstance cosmereEffectInstance, boolean forced, Entity entity) { final LivingEntity livingEntity = this.getLiving(); - if (forced && !livingEntity.level.isClientSide) + if (forced && !livingEntity.level().isClientSide) { cosmereEffectInstance.removeAttributeModifiers(livingEntity.getAttributes()); cosmereEffectInstance.applyAttributeModifiers(livingEntity, livingEntity.getAttributes()); @@ -294,7 +295,7 @@ public void onEffectUpdated(CosmereEffectInstance cosmereEffectInstance, boolean @Override public void removeEffect(UUID uuid) { - if (!this.getLiving().level.isClientSide) + if (!this.getLiving().level().isClientSide) { final CosmereEffectInstance effectInstance = this.activeEffects.remove(uuid); onEffectRemoved(effectInstance); @@ -304,7 +305,7 @@ public void removeEffect(UUID uuid) @Override public void onEffectRemoved(CosmereEffectInstance cosmereEffectInstance) { - if (!this.getLiving().level.isClientSide && cosmereEffectInstance != null) + if (!this.getLiving().level().isClientSide && cosmereEffectInstance != null) { cosmereEffectInstance.removeAttributeModifiers(this.getLiving().getAttributes()); } @@ -341,7 +342,7 @@ public int totalStrengthOfEffect(CosmereEffect cosmereEffect) public void tick() { //if server - if (!livingEntity.level.isClientSide) + if (!livingEntity.level().isClientSide) { //Login sync if (!didSetup) @@ -490,7 +491,7 @@ public void renderWorldEffects(RenderLevelStageEvent event) } - public void renderSelectedHUD(PoseStack ms) + public void renderSelectedHUD(GuiGraphics gg) { Minecraft mc = Minecraft.getInstance(); Window mainWindow = mc.getWindow(); @@ -498,7 +499,7 @@ public void renderSelectedHUD(PoseStack ms) int y = mainWindow.getGuiScaledHeight() / 5; String stringToDraw = I18n.get(selectedManifestation.getTextComponent().getString()); - mc.font.drawShadow(ms, stringToDraw, x + 18, y, 0xFF4444); + gg.drawString(mc.font, stringToDraw, x + 18, y, 0xFF4444); int mode = getMode(selectedManifestation); @@ -541,7 +542,7 @@ else if (selectedManifestation.getManifestationType() == Manifestations.Manifest //todo translations if (!stringToDraw2.isEmpty()) { - mc.font.drawShadow(ms, stringToDraw2, x + 18, y + 10, 0xFF4444); + gg.drawString(mc.font, stringToDraw2, x + 18, y + 10, 0xFF4444); } } @@ -817,7 +818,7 @@ public int previousMode(Manifestation aim) @Override public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) { - if (livingEntity != null && livingEntity.level.isClientSide) + if (livingEntity != null && livingEntity.level().isClientSide) { throw new IllegalStateException("Don't sync client -> server"); } @@ -833,7 +834,7 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) if (serverPlayerEntity == null) { - Cosmere.packetHandler().sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), (ServerLevel) livingEntity.level); + Cosmere.packetHandler().sendToAllInWorld(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), (ServerLevel) livingEntity.level()); } else { diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java index d19c0b72b..b533bcf76 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java @@ -147,7 +147,7 @@ private static int confirmMetalbornPowers(CommandContext con if (!queueItem.allomanticPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { spiritweb.giveManifestation(queueItem.allomanticPower, 9); - source.sendSuccess(Component.literal("Successfully added allomantic " + queueItem.allomanticPower.getName() + " to " + player.getName().getString()), false); // todo localisation string + source.sendSuccess(() -> Component.literal("Successfully added allomantic " + queueItem.allomanticPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose spiritwebCap.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY).GiveStartingItem(player, queueItem.allomanticPower); @@ -155,7 +155,7 @@ private static int confirmMetalbornPowers(CommandContext con if (!queueItem.feruchemicalPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { spiritweb.giveManifestation(queueItem.feruchemicalPower, 9); - source.sendSuccess(Component.literal("Successfully added feruchemical " + queueItem.feruchemicalPower.getName() + " to " + player.getName().getString()), false); // todo localisation string + source.sendSuccess(() -> Component.literal("Successfully added feruchemical " + queueItem.feruchemicalPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose spiritwebCap.getSubmodule(Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, queueItem.feruchemicalPower); @@ -229,7 +229,7 @@ private static int resetPowers(CommandContext context) throw ((SpiritwebCapability) spiritweb).setHasNotBeenInitialized(); spiritweb.syncToClients(null); - context.getSource().sendSuccess(Component.literal("Successfully reset player " + player.getName().getString()), false); + context.getSource().sendSuccess(() -> Component.literal("Successfully reset player " + player.getName().getString()), false); }); } @@ -246,7 +246,7 @@ private static void sendConfirmationMessage(CommandSourceStack source) Component.literal("Confirm"))); confirmComponent.append(Component.literal("§6to confirm power choice")); - source.sendSuccess(confirmComponent, false); + source.sendSuccess(() -> confirmComponent, false); } @Override diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/CosmereEffectCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/CosmereEffectCommand.java index 1957c7d90..9c2a76473 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/CosmereEffectCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/CosmereEffectCommand.java @@ -64,7 +64,7 @@ private static void reportEffectsFoundOnPlayer(CommandContext found, true); }); } @@ -140,7 +140,7 @@ private static int clear(CommandContext context) throws Comm iSpiritweb.syncToClients(null); MutableComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(Component.translatable(Constants.Strings.EFFECTS_CLEAR, playerTextObject), false); + source.sendSuccess(() -> Component.translatable(Constants.Strings.EFFECTS_CLEAR, playerTextObject), false); }); } diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/EyeCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/EyeCommand.java index 3305fedfd..80f423540 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/EyeCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/EyeCommand.java @@ -48,7 +48,7 @@ private static int setEyeHeight(CommandContext context) thro }); } - context.getSource().sendSuccess(TextHelper.createTranslatedText(Constants.Strings.SET_EYE_HEIGHT_SUCCESS, value), true); + context.getSource().sendSuccess(() -> TextHelper.createTranslatedText(Constants.Strings.SET_EYE_HEIGHT_SUCCESS, value), true); return SINGLE_SUCCESS; } diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java index 9fd2ec5f7..6e6a07d3b 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java @@ -51,7 +51,7 @@ public static void ReportPowersFoundOnPlayer(CommandContext { CommandSourceStack source = context.getSource(); - MutableComponent powersFound = Component.translatable(Constants.Strings.POWERS_FOUND, TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID())); + MutableComponent powersFound = Component.translatable(Constants.Strings.POWERS_FOUND, TextHelper.getPlayerTextObject(player.serverLevel(), player.getUUID())); final MutableComponent leftBracketTextComponent = Component.literal("["); final MutableComponent rightBracketTextComponent = Component.literal("]"); @@ -69,7 +69,7 @@ public static void ReportPowersFoundOnPlayer(CommandContext powersFound.append(rightBracketTextComponent); powersFound.append(space); } - source.sendSuccess(powersFound, true); + source.sendSuccess(() -> powersFound, true); }); } @@ -85,7 +85,7 @@ private static int clear(CommandContext context) throws Comm iSpiritweb.clearManifestations(); iSpiritweb.syncToClients(null); MutableComponent playerTextObject = TextHelper.getPlayerTextObject(context.getSource().getLevel(), player.getUUID()); - source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); }); } @@ -106,8 +106,8 @@ private static int reroll(CommandContext context) throws Com //set to none so that it auto updates to the new available ones on sync iSpiritweb.setSelectedManifestation(ManifestationRegistry.NONE.get()); iSpiritweb.syncToClients(null); - MutableComponent playerTextObject = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); - source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); + MutableComponent playerTextObject = TextHelper.getPlayerTextObject(player.serverLevel(), player.getUUID()); + source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerTextObject), false); ReportPowersFoundOnPlayer(context, player); }); } @@ -126,7 +126,7 @@ private static int give(CommandContext context) throws Comma CommandSourceStack source = context.getSource(); Manifestation manifestation = context.getArgument("manifestation", Manifestation.class); - MutableComponent playerText = TextHelper.getPlayerTextObject(player.getLevel(), player.getUUID()); + MutableComponent playerText = TextHelper.getPlayerTextObject(player.serverLevel(), player.getUUID()); MutableComponent manifestationText = (MutableComponent) manifestation.getTextComponent(); @@ -134,7 +134,7 @@ private static int give(CommandContext context) throws Comma { //todo change this so that the user sets the strength in the command spiritweb.giveManifestation(manifestation, 9); - source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); ReportPowersFoundOnPlayer(context, player); spiritweb.syncToClients(null); }); @@ -159,7 +159,7 @@ private static int remove(CommandContext context) throws Com { spiritweb.removeManifestation(manifestation); spiritweb.syncToClients(null); - source.sendSuccess(Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); + source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); ReportPowersFoundOnPlayer(context, player); }); } diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/SummonCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/SummonCommand.java index e093b69fd..aa9c7a39f 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/SummonCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/SummonCommand.java @@ -57,7 +57,7 @@ private static int spawnEntity(CommandContext context) throw : FeruchemyManifestations.FERUCHEMY_POWERS.get(metalType).get(); }*/ ServerPlayer serverPlayer = context.getSource().getPlayerOrException(); - Villager entity = new Villager(EntityType.VILLAGER, serverPlayer.level); + Villager entity = new Villager(EntityType.VILLAGER, serverPlayer.serverLevel()); entity.moveTo(serverPlayer.position()); context.getSource().getLevel().addFreshEntity(entity); diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/TestCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/TestCommand.java index a841fbcf1..059d68e45 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/TestCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/TestCommand.java @@ -19,13 +19,13 @@ public class TestCommand extends ModCommand private static int testSub(CommandContext context, ServerPlayer player) { - return testSub(context, player.getLevel()); + return testSub(context, player.serverLevel()); } private static int testSub(CommandContext context, ServerLevel world) { CommandSourceStack source = context.getSource(); - source.sendSuccess(Component.translatable("command.cosmere.test.sub"), true); + source.sendSuccess(() -> Component.translatable("command.cosmere.test.sub"), true); return SINGLE_SUCCESS; } diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index ed7eb97f9..9dab9da97 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -49,7 +49,7 @@ public static void onEntityJoinWorldEvent(EntityJoinLevelEvent event) { Entity eventEntity = event.getEntity(); - if (eventEntity.level.isClientSide || !(eventEntity instanceof LivingEntity livingEntity)) + if (eventEntity.level().isClientSide || !(eventEntity instanceof LivingEntity livingEntity)) { return; } @@ -265,7 +265,7 @@ public static void onLootingLevelEvent(LootingLevelEvent event) { return; } - if (!event.getEntity().level.isClientSide && event.getDamageSource().getEntity() instanceof LivingEntity sourceLiving) + if (!event.getEntity().level().isClientSide && event.getDamageSource().getEntity() instanceof LivingEntity sourceLiving) { int total = (int) EntityHelper.getAttributeValue(sourceLiving, AttributesRegistry.COSMERE_FORTUNE.getAttribute()); if (total != 0) diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/PlayerEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/PlayerEventHandler.java index 645324bab..f877eab27 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/PlayerEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/PlayerEventHandler.java @@ -47,7 +47,7 @@ public static void onTrackPlayer(PlayerEvent.StartTracking startTracking) @SubscribeEvent public void onItemTossEvent(ItemTossEvent event) { - if (!event.getPlayer().level.isClientSide) + if (!event.getPlayer().level().isClientSide) { //if (event.getEntityItem().getItem().getItem() instanceof ItemShardBlade) { @@ -74,7 +74,7 @@ public void onItemTossEvent(ItemTossEvent event) @SubscribeEvent public void onXPChange(PlayerXpEvent.XpChange event) { - boolean isRemote = event.getEntity().level.isClientSide; + boolean isRemote = event.getEntity().level().isClientSide; if (isRemote) { return; diff --git a/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java b/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java index 6e9987fd0..808a1003b 100644 --- a/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java +++ b/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java @@ -7,29 +7,33 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.CreativeModeTabRegistry; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; public class CosmereItemGroups { + public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(new ResourceLocation(Cosmere.MODID + ".creative_tabs"), Cosmere.MODID); - public static CreativeModeTab ITEMS = new CreativeModeTab(Cosmere.MODID + ".items") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(ItemsRegistry.GUIDE.get()); - } - }; + public static RegistryObject ITEMS = CREATIVE_TABS.register("items", () -> CreativeModeTab.builder() + .title(Component.translatable("itemGroups." + Cosmere.MODID + ".items")) + .icon(() -> new ItemStack(ItemsRegistry.GUIDE.asItem())) + .displayItems((params, output) -> { + // todo: cosmere items here + }) + .build()); - - public static CreativeModeTab BLOCKS = new CreativeModeTab(Cosmere.MODID + ".blocks") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue().getBlock()); - } - }; + public static RegistryObject BLOCKS = CREATIVE_TABS.register("blocks", () -> CreativeModeTab.builder() + .title(Component.translatable("itemGroups." + Cosmere.MODID + ".blocks")) + .icon(() -> new ItemStack(BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue().getBlock())) + .displayItems((params, output) -> { + // todo: cosmere blocks here + }) + .build()); } diff --git a/src/main/java/leaf/cosmere/common/items/BaseItem.java b/src/main/java/leaf/cosmere/common/items/BaseItem.java index 2c49749fb..2b1798ae8 100644 --- a/src/main/java/leaf/cosmere/common/items/BaseItem.java +++ b/src/main/java/leaf/cosmere/common/items/BaseItem.java @@ -13,7 +13,7 @@ public class BaseItem extends Item { public BaseItem() { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS)); + super(PropTypes.Items.SIXTY_FOUR.get()); } public BaseItem(Properties prop) diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java index 0cc8465ba..79ea2db14 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java @@ -28,18 +28,19 @@ public ChargeableItemBase(Properties prop) super(prop); } - @Override - public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) - { - if (allowedIn(tab)) - { - stacks.add(new ItemStack(this)); - - ItemStack fullPower = new ItemStack(this); - setCharge(fullPower, getMaxCharge(fullPower)); - stacks.add(fullPower); - } - } + // todo: move somewhere more appropriate +// @Override +// public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) +// { +// if (allowedIn(tab)) +// { +// stacks.add(new ItemStack(this)); +// +// ItemStack fullPower = new ItemStack(this); +// setCharge(fullPower, getMaxCharge(fullPower)); +// stacks.add(fullPower); +// } +// } @Override public int getEntityLifespan(ItemStack itemStack, Level world) diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index 6e6d8d8ce..66266434c 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -25,7 +25,7 @@ public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHas public ChargeableMetalCurioItem(Metals.MetalType metalType, CreativeModeTab group) { - super(PropTypes.Items.ONE.get().rarity(metalType.getRarity()).tab(group)); + super(PropTypes.Items.ONE.get().rarity(metalType.getRarity())); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/common/items/MetalItem.java b/src/main/java/leaf/cosmere/common/items/MetalItem.java index c60215d73..c9c355378 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalItem.java @@ -20,7 +20,7 @@ public class MetalItem extends BaseItem implements IHasMetalType public MetalItem(Metals.MetalType metalType) { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(metalType.getRarity())); + super(PropTypes.Items.SIXTY_FOUR.get().rarity(metalType.getRarity())); this.metalType = metalType; } diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index e32672f3d..e29a95743 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -5,9 +5,13 @@ package leaf.cosmere.common.items; import leaf.cosmere.api.Metals; +import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; +import net.minecraft.core.Holder; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -18,8 +22,6 @@ public class MetalNuggetItem extends MetalItem { - public static final DamageSource EAT_METAL = (new DamageSource("eat_metal")).bypassArmor().bypassMagic(); - public MetalNuggetItem(Metals.MetalType metalType) { super(metalType); @@ -67,7 +69,7 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity itemstack.shrink(1); } - pLivingEntity.hurt(EAT_METAL, 1); + pLivingEntity.hurt(CosmereDamageTypesRegistry.damageSource(pLevel, CosmereDamageTypesRegistry.EAT_METAL), 1); return itemstack; } diff --git a/src/main/java/leaf/cosmere/common/properties/PropTypes.java b/src/main/java/leaf/cosmere/common/properties/PropTypes.java index dca223cc2..9d33676e6 100644 --- a/src/main/java/leaf/cosmere/common/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/common/properties/PropTypes.java @@ -5,14 +5,12 @@ package leaf.cosmere.common.properties; import leaf.cosmere.common.itemgroups.CosmereItemGroups; +import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.SandBlock; -import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; import java.util.function.Supplier; @@ -20,34 +18,35 @@ public class PropTypes { public static class Blocks { - public static final Supplier EXAMPLE = () -> Block.Properties.of(Material.GLASS).strength(2.0F, 6.0F); + public static final Supplier EXAMPLE = () -> Block.Properties.copy(net.minecraft.world.level.block.Blocks.GLASS).strength(2.0F, 6.0F); public static final Supplier ORE = () -> Block.Properties - .of(Material.STONE) + .copy(net.minecraft.world.level.block.Blocks.STONE) .strength(2.0F, 6.0F) .requiresCorrectToolForDrops(); public static final Supplier METAL = () -> Block.Properties - .of(Material.METAL) + .copy(net.minecraft.world.level.block.Blocks.IRON_BLOCK) .strength(2.0F, 6.0F) .requiresCorrectToolForDrops(); public static final Supplier SAND = () -> BlockBehaviour.Properties - .of(Material.SAND) + .copy(net.minecraft.world.level.block.Blocks.SAND) .strength(0.5f); } public static class Items { + // todo: remove commented out tabs public static final Supplier SHARDBLADE = () -> new Item.Properties() - .tab(CosmereItemGroups.ITEMS) + //.tab(CosmereItemGroups.ITEMS) .stacksTo(1) .fireResistant() .rarity(Rarity.EPIC); - public static final Supplier ONE = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(1); - public static final Supplier SIXTEEN = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(16); - public static final Supplier SIXTY_FOUR = () -> new Item.Properties().tab(CosmereItemGroups.ITEMS).stacksTo(64); + public static final Supplier ONE = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(1); + public static final Supplier SIXTEEN = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(16); + public static final Supplier SIXTY_FOUR = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(64); } } diff --git a/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java index 32588a124..8f7d23519 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java @@ -42,7 +42,7 @@ public BlockRegistryObject registerWithR public BlockRegistryObject registerDefaultProperties(String name, Supplier blockSupplier, BiFunction itemCreator, Rarity rarity) { - return register(name, blockSupplier, block -> itemCreator.apply(block, new Item.Properties().tab(CosmereItemGroups.BLOCKS).rarity(rarity))); + return register(name, blockSupplier, block -> itemCreator.apply(block, new Item.Properties().rarity(rarity))); } public BlockRegistryObject register(String name, Supplier blockSupplier, diff --git a/src/main/java/leaf/cosmere/common/registration/impl/ConfiguredFeatureDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/ConfiguredFeatureDeferredRegister.java index e7b86daa0..df86d9814 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/ConfiguredFeatureDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/ConfiguredFeatureDeferredRegister.java @@ -2,6 +2,7 @@ import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import java.util.function.Supplier; @@ -11,7 +12,7 @@ public class ConfiguredFeatureDeferredRegister extends WrappedDeferredRegister> ConfiguredFeatureRegistryObject register(String name, Supplier sup) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/GameEventDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/GameEventDeferredRegister.java index c1164dede..1f8abe439 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/GameEventDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/GameEventDeferredRegister.java @@ -2,6 +2,7 @@ import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.gameevent.GameEvent; import java.util.function.Supplier; @@ -11,7 +12,7 @@ public class GameEventDeferredRegister extends WrappedDeferredRegister register(String name) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java index 0fb6bf3f0..e314fc48c 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java @@ -28,7 +28,7 @@ public ItemDeferredRegister(String modid) public static Item.Properties getCosmereDefaultProperties() { - return new Item.Properties().tab(CosmereItemGroups.ITEMS); + return new Item.Properties(); } public ItemRegistryObject register(String name) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/LootFunctionDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/LootFunctionDeferredRegister.java index a679d1991..838cb0aa3 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/LootFunctionDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/LootFunctionDeferredRegister.java @@ -2,6 +2,7 @@ import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.storage.loot.functions.LootItemConditionalFunction; import net.minecraft.world.level.storage.loot.functions.LootItemFunctionType; @@ -12,7 +13,7 @@ public class LootFunctionDeferredRegister extends WrappedDeferredRegister registerType(String name, Supplier> sup) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/POITypeDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/POITypeDeferredRegister.java index 9ebb47871..c41947953 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/POITypeDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/POITypeDeferredRegister.java @@ -3,6 +3,7 @@ import com.google.common.collect.ImmutableSet; import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.entity.ai.village.poi.PoiType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; @@ -13,7 +14,7 @@ public class POITypeDeferredRegister extends WrappedDeferredRegister { public POITypeDeferredRegister(String modid) { - super(modid, Registry.POINT_OF_INTEREST_TYPE_REGISTRY); + super(modid, Registries.POINT_OF_INTEREST_TYPE); } private PoiType registerPOIType(Block block) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/PlacedFeatureDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/PlacedFeatureDeferredRegister.java index 4f1d9ae58..d727c348b 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/PlacedFeatureDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/PlacedFeatureDeferredRegister.java @@ -2,6 +2,7 @@ import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import java.util.function.Supplier; @@ -11,7 +12,7 @@ public class PlacedFeatureDeferredRegister extends WrappedDeferredRegister PlacedFeatureRegistryObject register(String name, Supplier sup) diff --git a/src/main/java/leaf/cosmere/common/registration/impl/StatDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/StatDeferredRegister.java index 00d68dfcc..272ed7ce3 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/StatDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/StatDeferredRegister.java @@ -6,6 +6,7 @@ import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceLocation; import java.util.ArrayList; @@ -20,7 +21,7 @@ public class StatDeferredRegister extends WrappedDeferredRegister poi, SoundEvent workSound) diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java new file mode 100644 index 000000000..258870e4b --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java @@ -0,0 +1,25 @@ +package leaf.cosmere.common.registry; + +import leaf.cosmere.common.Cosmere; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.level.Level; + +public class CosmereDamageTypesRegistry +{ + public static final ResourceKey EAT_METAL = createKey("eat_metal"); + + // special thanks to the aether mod team for inspiration + private static ResourceKey createKey(String name) + { + return ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(Cosmere.MODID, name)); + } + + public static DamageSource damageSource(Level level, ResourceKey key) + { + return new DamageSource(level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key)); + } +} diff --git a/src/main/java/leaf/cosmere/common/registry/DimensionRegistry.java b/src/main/java/leaf/cosmere/common/registry/DimensionRegistry.java index 881059670..66e3d070d 100644 --- a/src/main/java/leaf/cosmere/common/registry/DimensionRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/DimensionRegistry.java @@ -6,7 +6,7 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.common.Cosmere; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.dimension.DimensionType; @@ -15,13 +15,13 @@ public class DimensionRegistry { public static final ResourceKey SHADESMAR_DIM_KEY = ResourceKey.create( - Registry.DIMENSION_REGISTRY, + Registries.DIMENSION, Cosmere.rl("shadesmar") ); public static final ResourceKey SHADESMAR_DIM_TYPE = ResourceKey.create( - Registry.DIMENSION_TYPE_REGISTRY, + Registries.DIMENSION_TYPE, SHADESMAR_DIM_KEY.registry() ); diff --git a/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java b/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java index be1a93705..d2de4d1c1 100644 --- a/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java +++ b/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java @@ -54,7 +54,7 @@ private static DataResult generationStageFromString(S } catch (Exception e) { - return DataResult.error("Not a decoration stage: " + name); + return DataResult.error(() -> "Not a decoration stage: " + name); } } } \ No newline at end of file From 616c4f045f828cf27f15de11d968f3206272c791 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 5 Jun 2024 09:15:59 +1200 Subject: [PATCH 0853/1090] [Port] Language generators --- .../cosmere/allomancy/AllomancyEngLangGen.java | 8 ++++---- .../leaf/cosmere/aondor/AonDorEngLangGen.java | 8 ++++---- .../leaf/cosmere/aviar/AviarEngLangGen.java | 8 ++++---- .../awakening/AwakeningDataGenerator.java | 8 +++++--- .../cosmere/awakening/AwakeningEngLangGen.java | 8 ++++---- .../leaf/cosmere/tools/ToolsEngLangGen.java | 16 ++++------------ .../leaf/cosmere/example/ExampleEngLangGen.java | 8 ++++---- .../cosmere/feruchemy/FeruchemyEngLangGen.java | 16 ++++------------ .../cosmere/hemalurgy/HemalurgyEngLangGen.java | 16 ++++------------ .../main/java/leaf/cosmere/EngLangGen.java | 17 ++++------------- .../sandmastery/SandmasteryEngLangGen.java | 8 ++++---- .../soulforgery/SoulforgeryEngLangGen.java | 8 ++++---- .../surgebinding/SurgebindingEngLangGen.java | 14 ++++---------- 13 files changed, 53 insertions(+), 90 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index 4fdd60177..7611267c8 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 16 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -19,7 +19,7 @@ import leaf.cosmere.api.providers.IMobEffectProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -35,9 +35,9 @@ public class AllomancyEngLangGen extends LanguageProvider final String advancementTitleFormat = "advancements.allomancy.%s.title"; final String advancementDescriptionFormat = "advancements.allomancy.%s.description"; - public AllomancyEngLangGen(DataGenerator gen) + public AllomancyEngLangGen(PackOutput output) { - super(gen, Allomancy.MODID, "en_us"); + super(output, Allomancy.MODID, "en_us"); } @Override diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java index bda9e4a76..da384ed1b 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -9,7 +9,7 @@ import leaf.cosmere.api.helpers.ResourceLocationHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -17,9 +17,9 @@ public class AonDorEngLangGen extends LanguageProvider { - public AonDorEngLangGen(DataGenerator gen) + public AonDorEngLangGen(PackOutput output) { - super(gen, AonDor.MODID, "en_us"); + super(output, AonDor.MODID, "en_us"); } @Override diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java index 200b26159..829488170 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aviar; @@ -9,7 +9,7 @@ import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.aviar.common.registries.AviarEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -17,9 +17,9 @@ public class AviarEngLangGen extends LanguageProvider { - public AviarEngLangGen(DataGenerator gen) + public AviarEngLangGen(PackOutput output) { - super(gen, Aviar.MODID, "en_us"); + super(output, Aviar.MODID, "en_us"); } @Override diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java index 94080246d..2552ca423 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -9,6 +9,7 @@ import leaf.cosmere.awakening.loottables.AwakeningLootTableGen; import leaf.cosmere.awakening.patchouli.AwakeningPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,13 +23,14 @@ public class AwakeningDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AwakeningEngLangGen(generator)); + generator.addProvider(true, new AwakeningEngLangGen(output)); generator.addProvider(true, new AwakeningTagProvider(generator, existingFileHelper)); generator.addProvider(true, new AwakeningLootTableGen(generator)); generator.addProvider(true, new AwakeningItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AwakeningRecipeGen(generator)); + generator.addProvider(true, new AwakeningRecipeGen(output)); generator.addProvider(true, new AwakeningPatchouliGen(generator)); generator.addProvider(true, new AwakeningAdvancementGen(generator)); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java index bf32fbd32..7b9790324 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -9,7 +9,7 @@ import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.awakening.common.registries.AwakeningEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -17,9 +17,9 @@ public class AwakeningEngLangGen extends LanguageProvider { - public AwakeningEngLangGen(DataGenerator gen) + public AwakeningEngLangGen(PackOutput output) { - super(gen, Awakening.MODID, "en_us"); + super(output, Awakening.MODID, "en_us"); } @Override diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java index 7062bb713..9d77e91d8 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 3 - 4 - 2024 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -8,9 +8,8 @@ import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.tools.common.CosmereTools; -import leaf.cosmere.tools.common.items.ToolsItemGroups; import leaf.cosmere.tools.common.registries.ToolsEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -18,9 +17,9 @@ public class ToolsEngLangGen extends LanguageProvider { - public ToolsEngLangGen(DataGenerator gen) + public ToolsEngLangGen(PackOutput output) { - super(gen, CosmereTools.MODID, "en_us"); + super(output, CosmereTools.MODID, "en_us"); } @Override @@ -33,7 +32,6 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -92,12 +90,6 @@ private void addTooltips() } - private void addItemGroups() - { - //ItemGroups/Tabs - add("itemGroup." + ToolsItemGroups.TOOLS_TAB.getRecipeFolderName(), "Cosmere tools"); - } - private void addDamageSources() { } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java index 42406b30f..02cfda683 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -9,7 +9,7 @@ import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.example.common.Example; import leaf.cosmere.example.common.registries.ExampleEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -17,9 +17,9 @@ public class ExampleEngLangGen extends LanguageProvider { - public ExampleEngLangGen(DataGenerator gen) + public ExampleEngLangGen(PackOutput output) { - super(gen, Example.MODID, "en_us"); + super(output, Example.MODID, "en_us"); } @Override diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index ec4cd58a9..cc4765949 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -14,10 +14,9 @@ import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.common.items.ChargeableMetalCurioItem; import leaf.cosmere.feruchemy.common.Feruchemy; -import leaf.cosmere.feruchemy.common.itemgroups.FeruchemyItemGroups; import leaf.cosmere.feruchemy.common.registries.FeruchemyAttributes; import leaf.cosmere.feruchemy.common.registries.FeruchemyEffects; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EntityType; @@ -33,9 +32,9 @@ public class FeruchemyEngLangGen extends LanguageProvider final String advancementTitleFormat = "advancements.feruchemy.%s.title"; final String advancementDescriptionFormat = "advancements.feruchemy.%s.description"; - public FeruchemyEngLangGen(DataGenerator gen) + public FeruchemyEngLangGen(PackOutput output) { - super(gen, Feruchemy.MODID, "en_us"); + super(output, Feruchemy.MODID, "en_us"); } @Override @@ -48,7 +47,6 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -194,12 +192,6 @@ private void addTooltips() add("tooltip.cosmere.attribute.nicrosil", "");//todo hemalurgic investiture } - private void addItemGroups() - { - //ItemGroups/Tabs - add("itemGroup." + FeruchemyItemGroups.METALMINDS.getRecipeFolderName(), "Feruchemical Metalminds"); - } - private void addDamageSources() { } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index c18c397b3..c26dc65c5 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -10,10 +10,9 @@ import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.hemalurgy.common.Hemalurgy; -import leaf.cosmere.hemalurgy.common.itemgroups.HemalurgyItemGroups; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import leaf.cosmere.hemalurgy.common.registries.HemalurgyEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -23,9 +22,9 @@ public class HemalurgyEngLangGen extends LanguageProvider { - public HemalurgyEngLangGen(DataGenerator gen) + public HemalurgyEngLangGen(PackOutput output) { - super(gen, Hemalurgy.MODID, "en_us"); + super(output, Hemalurgy.MODID, "en_us"); } @Override @@ -38,7 +37,6 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -119,12 +117,6 @@ private void addTooltips() add(CONTAINED_POWERS_FOUND, "Hemalurgic Charge:"); } - private void addItemGroups() - { - //ItemGroups/Tabs - add("itemGroup." + HemalurgyItemGroups.HEMALURGIC_SPIKES.getRecipeFolderName(), "Hemalurgic Spikes"); - } - private void addDamageSources() { //Damage Sources diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 2df2768e5..39439863e 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere; @@ -11,9 +11,8 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.registry.*; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -25,9 +24,9 @@ public class EngLangGen extends LanguageProvider final String advancementTitleFormat = "advancements.cosmere.%s.title"; final String advancementDescriptionFormat = "advancements.cosmere.%s.description"; - public EngLangGen(DataGenerator gen) + public EngLangGen(PackOutput output) { - super(gen, Cosmere.MODID, "en_us"); + super(output, Cosmere.MODID, "en_us"); } @Override @@ -40,7 +39,6 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -155,13 +153,6 @@ private void addTooltips() add(PATCHOULI_NOT_INSTALLED, "Patchouli is not installed. Documentation is not available."); } - private void addItemGroups() - { - //ItemGroups/Tabs - add("itemGroup." + CosmereItemGroups.ITEMS.getRecipeFolderName(), "Cosmere Items"); - add("itemGroup." + CosmereItemGroups.BLOCKS.getRecipeFolderName(), "Cosmere Blocks"); - } - private void addDamageSources() { //Damage Sources diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java index 59bae503f..9df7f36e5 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; @@ -14,7 +14,7 @@ import leaf.cosmere.sandmastery.common.manifestation.SandmasteryManifestation; import leaf.cosmere.sandmastery.common.registries.SandmasteryAttributes; import leaf.cosmere.sandmastery.common.registries.SandmasteryManifestations; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -30,9 +30,9 @@ public class SandmasteryEngLangGen extends LanguageProvider final String advancementTitleFormat = "advancements.sandmastery.%s.title"; final String advancementDescriptionFormat = "advancements.sandmastery.%s.description"; - public SandmasteryEngLangGen(DataGenerator gen) + public SandmasteryEngLangGen(PackOutput output) { - super(gen, Sandmastery.MODID, "en_us"); + super(output, Sandmastery.MODID, "en_us"); } @Override diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java index df54579d7..02036f234 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -9,7 +9,7 @@ import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.soulforgery.common.Soulforgery; import leaf.cosmere.soulforgery.common.registries.SoulforgeryEntityTypes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -17,9 +17,9 @@ public class SoulforgeryEngLangGen extends LanguageProvider { - public SoulforgeryEngLangGen(DataGenerator gen) + public SoulforgeryEngLangGen(PackOutput output) { - super(gen, Soulforgery.MODID, "en_us"); + super(output, Soulforgery.MODID, "en_us"); } @Override diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java index 14f697e8d..613a01aab 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -15,7 +15,7 @@ import leaf.cosmere.surgebinding.common.registries.SurgebindingAttributes; import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; import leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.common.data.LanguageProvider; @@ -28,9 +28,9 @@ public class SurgebindingEngLangGen extends LanguageProvider final String advancementTitleFormat = "advancements.surgebinding.%s.title"; final String advancementDescriptionFormat = "advancements.surgebinding.%s.description"; - public SurgebindingEngLangGen(DataGenerator gen) + public SurgebindingEngLangGen(PackOutput output) { - super(gen, Surgebinding.MODID, "en_us"); + super(output, Surgebinding.MODID, "en_us"); } @Override @@ -43,7 +43,6 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -142,11 +141,6 @@ private void addTooltips() } - private void addItemGroups() - { - - } - private void addDamageSources() { } From c79bfa3ba9fb6a808545d65d0f2b16a6d94c8d1a Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 5 Jun 2024 09:16:28 +1200 Subject: [PATCH 0854/1090] [Port] Cryptic and patji fruit item --- .../aviar/common/items/PatjisFruitItem.java | 12 +- .../surgebinding/common/entity/Cryptic.java | 157 ++++++++++-------- 2 files changed, 93 insertions(+), 76 deletions(-) diff --git a/src/aviar/java/leaf/cosmere/aviar/common/items/PatjisFruitItem.java b/src/aviar/java/leaf/cosmere/aviar/common/items/PatjisFruitItem.java index 0bc0a9f64..05d2fe2c3 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/items/PatjisFruitItem.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/items/PatjisFruitItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aviar.common.items; @@ -34,10 +34,10 @@ public InteractionResult interactLivingEntity(ItemStack itemStack, Player player { if (!(parrot instanceof AviarBird)) { - if (!player.level.isClientSide) + if (!player.level().isClientSide) { //convert parrot to aviar - AviarBird birb = AviarEntityTypes.AVIAR_ENTITY.get().create(target.level); + AviarBird birb = AviarEntityTypes.AVIAR_ENTITY.get().create(target.level()); if (birb == null) { @@ -51,7 +51,7 @@ public InteractionResult interactLivingEntity(ItemStack itemStack, Player player birb.setDeltaMovement(parrot.getDeltaMovement()); parrot.remove(Entity.RemovalReason.DISCARDED); - birb.level.addFreshEntity(birb); + birb.level().addFreshEntity(birb); //todo replace sound birb.playSound(SoundEvents.PARROT_IMITATE_ENDER_DRAGON, 1.0F, 1.0F); @@ -61,11 +61,11 @@ public InteractionResult interactLivingEntity(ItemStack itemStack, Player player double d0 = birb.getRandom().nextGaussian() * 0.02D; double d1 = birb.getRandom().nextGaussian() * 0.02D; double d2 = birb.getRandom().nextGaussian() * 0.02D; - birb.level.addParticle(ParticleTypes.HEART, birb.getRandomX(1.0D), birb.getRandomY() + 0.5D, birb.getRandomZ(1.0D), d0, d1, d2); + birb.level().addParticle(ParticleTypes.HEART, birb.getRandomX(1.0D), birb.getRandomY() + 0.5D, birb.getRandomZ(1.0D), d0, d1, d2); } itemStack.shrink(1); } - return InteractionResult.sidedSuccess(player.level.isClientSide); + return InteractionResult.sidedSuccess(player.level().isClientSide); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java index 7c0b2f233..93a23f53e 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 13 - 5 - 2024 ~ Leaf + */ + package leaf.cosmere.surgebinding.common.entity; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; @@ -27,59 +31,68 @@ import java.util.Set; import java.util.stream.Collectors; -public class Cryptic extends TamableAnimal { - private static final Set TAMING_INGREDIENTS; - private SitWhenOrderedToGoal sitGoal; - - public Cryptic(EntityType pEntityType, Level pLevel) { - super(pEntityType, pLevel); - this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); - this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, -1.0F); - } - - public static AttributeSupplier.Builder createAttributes() - { - return Monster.createMonsterAttributes() - .add(Attributes.MOVEMENT_SPEED, (double) 0.20000000298023224D) - .add(Attributes.FOLLOW_RANGE, 12.0D) - .add(Attributes.MAX_HEALTH, 24.0D) - .add(Attributes.JUMP_STRENGTH, 0.1D) - .add(Attributes.ATTACK_DAMAGE, 5.0D); - } - - @Override - public SpawnGroupData finalizeSpawn(ServerLevelAccessor pLevel, DifficultyInstance pDifficulty, MobSpawnType pReason, @Nullable SpawnGroupData pSpawnData, @Nullable CompoundTag pDataTag) { - if (pSpawnData == null) { - pSpawnData = new AgeableMob.AgeableMobGroupData(false); - } - return super.finalizeSpawn(pLevel, pDifficulty, pReason, pSpawnData, pDataTag); - } - - @Override - protected void registerGoals() { - this.sitGoal = new SitWhenOrderedToGoal(this); - this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); - this.goalSelector.addGoal(0, new FloatGoal(this)); - this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); - this.goalSelector.addGoal(2, this.sitGoal); - this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); +public class Cryptic extends TamableAnimal +{ + private static final Set TAMING_INGREDIENTS; + private SitWhenOrderedToGoal sitGoal; + + public Cryptic(EntityType pEntityType, Level pLevel) + { + super(pEntityType, pLevel); + this.setPathfindingMalus(BlockPathTypes.DANGER_FIRE, -1.0F); + this.setPathfindingMalus(BlockPathTypes.DAMAGE_FIRE, -1.0F); + } + + public static AttributeSupplier.Builder createAttributes() + { + return Monster.createMonsterAttributes() + .add(Attributes.MOVEMENT_SPEED, (double) 0.20000000298023224D) + .add(Attributes.FOLLOW_RANGE, 12.0D) + .add(Attributes.MAX_HEALTH, 24.0D) + .add(Attributes.JUMP_STRENGTH, 0.1D) + .add(Attributes.ATTACK_DAMAGE, 5.0D); + } + + @Override + public SpawnGroupData finalizeSpawn(ServerLevelAccessor pLevel, DifficultyInstance pDifficulty, MobSpawnType pReason, @Nullable SpawnGroupData pSpawnData, @Nullable CompoundTag pDataTag) + { + if (pSpawnData == null) + { + pSpawnData = new AgeableMob.AgeableMobGroupData(false); + } + return super.finalizeSpawn(pLevel, pDifficulty, pReason, pSpawnData, pDataTag); + } + + @Override + protected void registerGoals() + { + this.sitGoal = new SitWhenOrderedToGoal(this); + this.goalSelector.addGoal(0, new PanicGoal(this, 1.25D)); + this.goalSelector.addGoal(0, new FloatGoal(this)); + this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(2, this.sitGoal); + this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0D, 5.0F, 1.0F, true)); // this.goalSelector.addGoal(2, new FlyOntoTreeGoal(this, 1.0D)); // This goal seems to be missing from 1.19 // this.goalSelector.addGoal(3, new LandOnOwnersShoulderGoal(this)); - this.goalSelector.addGoal(3, new FollowMobGoal(this, 1.0D, 3.0F, 7.0F)); - } + this.goalSelector.addGoal(3, new FollowMobGoal(this, 1.0D, 3.0F, 7.0F)); + } - @Override - protected PathNavigation createNavigation(Level pLevel) { - return new WallClimberNavigation(this, pLevel); - } + @Override + protected PathNavigation createNavigation(Level pLevel) + { + return new WallClimberNavigation(this, pLevel); + } - public InteractionResult mobInteract(Player pPlayer, InteractionHand pHand) { - ItemStack itemstack = pPlayer.getItemInHand(pHand); + public InteractionResult mobInteract(Player pPlayer, InteractionHand pHand) + { + ItemStack itemstack = pPlayer.getItemInHand(pHand); // System.out.println("Cryptic#mobInteract start itemStack:" + itemstack + " isTamed:" + this.isTame()); - if (!this.isTame() && TAMING_INGREDIENTS.contains(itemstack.getItem())) { - if (!pPlayer.getAbilities().instabuild) { - itemstack.shrink(1); - } + if (!this.isTame() && TAMING_INGREDIENTS.contains(itemstack.getItem())) + { + if (!pPlayer.getAbilities().instabuild) + { + itemstack.shrink(1); + } if (!this.isSilent()) { @@ -108,8 +121,8 @@ else if (this.isTame() && this.isOwnedBy(pPlayer)) if (!this.level().isClientSide) { // System.out.println("Cryptic#mobInteract setOrderedToSit"); - this.setOrderedToSit(!this.isOrderedToSit()); - } + this.setOrderedToSit(!this.isOrderedToSit()); + } return InteractionResult.sidedSuccess(this.level().isClientSide); } @@ -119,24 +132,28 @@ else if (this.isTame() && this.isOwnedBy(pPlayer)) } } - @Override - public boolean isFood(ItemStack pStack) { - return false; - } - - @Nullable - @Override - public AgeableMob getBreedOffspring(@NotNull ServerLevel pLevel, @NotNull AgeableMob pOtherParent) { - return null; - } - - @Override - public boolean canMate(@NotNull Animal pOtherAnimal) { - return false; - } - - static { - TAMING_INGREDIENTS = SurgebindingItems.GEMSTONE_BROAMS.values().stream() - .map(registryItem -> registryItem.asItem()).collect(Collectors.toSet()); - } + @Override + public boolean isFood(ItemStack pStack) + { + return false; + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(@NotNull ServerLevel pLevel, @NotNull AgeableMob pOtherParent) + { + return null; + } + + @Override + public boolean canMate(@NotNull Animal pOtherAnimal) + { + return false; + } + + static + { + TAMING_INGREDIENTS = SurgebindingItems.GEMSTONE_BROAMS.values().stream() + .map(registryItem -> registryItem.asItem()).collect(Collectors.toSet()); + } } From 21e7ff0d5a4c6b8333b51097437d88a13fc7ccb2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 5 Jun 2024 11:09:20 +1200 Subject: [PATCH 0855/1090] [Port] Recipe data generators --- .../common/recipes/VialMixingRecipe.java | 19 +- .../common/registries/AllomancyRecipes.java | 5 +- .../allomancy/AllomancyDataGenerator.java | 12 +- .../cosmere/allomancy/AllomancyRecipeGen.java | 32 +- .../cosmere/aondor/AonDorDataGenerator.java | 8 +- .../leaf/cosmere/aondor/AonDorRecipeGen.java | 32 +- .../cosmere/aviar/AviarDataGenerator.java | 8 +- .../leaf/cosmere/aviar/AviarRecipeGen.java | 30 +- .../awakening/AwakeningDataGenerator.java | 2 +- .../cosmere/awakening/AwakeningRecipeGen.java | 31 +- .../cosmere/tools/ToolsDataGenerator.java | 8 +- .../leaf/cosmere/tools/ToolsRecipeGen.java | 152 +--------- .../cosmere/example/ExampleDataGenerator.java | 8 +- .../cosmere/example/ExampleRecipeGen.java | 30 +- .../feruchemy/FeruchemyDataGenerator.java | 8 +- .../cosmere/feruchemy/FeruchemyRecipeGen.java | 30 +- .../hemalurgy/HemalurgyDataGenerator.java | 8 +- .../cosmere/hemalurgy/HemalurgyRecipeGen.java | 43 +-- .../java/leaf/cosmere/BaseRecipeProvider.java | 275 ++++++++++++++++++ .../leaf/cosmere/CosmereDataGenerator.java | 8 +- .../main/java/leaf/cosmere/RecipeGen.java | 157 ++-------- .../patchouli/data/PatchouliProvider.java | 32 +- .../sandmastery/SandmasteryDataGenerator.java | 11 +- .../sandmastery/SandmasteryRecipeGen.java | 36 ++- .../soulforgery/SoulforgeryDataGenerator.java | 8 +- .../soulforgery/SoulforgeryRecipeGen.java | 30 +- .../SurgebindingDataGenerator.java | 8 +- .../surgebinding/SurgebindingRecipeGen.java | 196 +------------ 28 files changed, 561 insertions(+), 666 deletions(-) create mode 100644 src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java index fe403cef8..d518496ef 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.recipes; @@ -9,16 +9,14 @@ import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyRecipes; import leaf.cosmere.api.Metals; +import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.item.crafting.SimpleRecipeSerializer; +import net.minecraft.world.item.crafting.*; import net.minecraft.world.level.Level; import net.minecraftforge.common.Tags; @@ -31,9 +29,9 @@ public class VialMixingRecipe extends CustomRecipe { private static final Ingredient INGREDIENT_BOTTLE = Ingredient.of(Items.GLASS_BOTTLE, AllomancyItems.METAL_VIAL.get()); - public VialMixingRecipe(ResourceLocation loc) + public VialMixingRecipe(ResourceLocation loc, CraftingBookCategory pCategory) { - super(loc); + super(loc, pCategory); } @Override @@ -112,9 +110,9 @@ private Optional> testForViableNugget(ItemStack stack) return Optional.empty(); } + @Override - @Nonnull - public ItemStack assemble(CraftingContainer inv) + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) { MetalVialItem metalVial = AllomancyItems.METAL_VIAL.get(); ItemStack itemstack = new ItemStack(metalVial); @@ -166,11 +164,12 @@ public boolean canCraftInDimensions(int width, int height) } - public static class Serializer extends SimpleRecipeSerializer + public static class Serializer extends SimpleCraftingRecipeSerializer { public Serializer() { super(VialMixingRecipe::new); } } + } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java index 95130f4f7..7c8cf682e 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; @@ -15,6 +15,7 @@ public class AllomancyRecipes { public static final RecipeSerializerDeferredRegister SPECIAL_RECIPES = new RecipeSerializerDeferredRegister(Allomancy.MODID); - public static final RecipeSerializerRegistryObject> VIAL_RECIPE_SERIALIZER = SPECIAL_RECIPES.register("vial_mix", VialMixingRecipe.Serializer::new); + public static final RecipeSerializerRegistryObject> VIAL_RECIPE_SERIALIZER = + SPECIAL_RECIPES.register("crafting_vial_mix", VialMixingRecipe.Serializer::new); } diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java index d3347f139..19a522dd7 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -8,6 +8,7 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.patchouli.AllomancyPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -21,15 +22,12 @@ public class AllomancyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - - generator.addProvider(true, new AllomancyEngLangGen(generator)); - - + generator.addProvider(true, new AllomancyEngLangGen(output)); generator.addProvider(true, new AllomancyItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AllomancyRecipeGen(generator)); - + generator.addProvider(true, new AllomancyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AllomancyPatchouliGen(generator)); generator.addProvider(true, new AllomancyAdvancementGen(generator)); generator.addProvider(true, new AllomancyTagProvider(generator, existingFileHelper)); diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java index 3f9eaa0e7..0571784f7 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java @@ -1,40 +1,52 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyRecipes; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.SimpleRecipeSerializer; +import net.minecraft.world.item.crafting.CraftingRecipe; +import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class AllomancyRecipeGen extends RecipeProvider implements IConditionBuilder +public class AllomancyRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public AllomancyRecipeGen(DataGenerator generatorIn) + public AllomancyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected void addRecipes(Consumer consumer) { - ShapedRecipeBuilder.shaped(AllomancyItems.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, AllomancyItems.METAL_VIAL.get()).define('X', Items.IRON_NUGGET).define('Y', Items.GLASS).pattern("X").pattern("Y").unlockedBy("has_material", has(Items.GLASS)).save(consumer); - ShapelessRecipeBuilder.shapeless(AllomancyItems.COIN_POUCH.get(), 1) + ShapelessRecipeBuilder.shapeless(RecipeCategory.TOOLS, AllomancyItems.COIN_POUCH.get(), 1) .unlockedBy("has_item", has(Tags.Items.LEATHER)) .requires(Tags.Items.LEATHER) .requires(Tags.Items.STRING) .save(consumer); - SpecialRecipeBuilder.special((SimpleRecipeSerializer) AllomancyRecipes.VIAL_RECIPE_SERIALIZER.get()).save(consumer, Allomancy.rl("vial_mixing").toString()); + SpecialRecipeBuilder + .special((RecipeSerializer) AllomancyRecipes.VIAL_RECIPE_SERIALIZER.get()) + .save(consumer, Allomancy.rl("vial_mixing").toString()); } + + @Override + protected ResourceLocation makeRL(String path) + { + return Allomancy.rl(path); + } } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java index e93097e53..db476a32b 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -9,6 +9,7 @@ import leaf.cosmere.aondor.loottables.AonDorLootTableGen; import leaf.cosmere.aondor.patchouli.AonDorPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,13 +23,14 @@ public class AonDorDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AonDorEngLangGen(generator)); + generator.addProvider(true, new AonDorEngLangGen(output)); generator.addProvider(true, new AonDorTagProvider(generator, existingFileHelper)); generator.addProvider(true, new AonDorLootTableGen(generator)); generator.addProvider(true, new AonDorItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AonDorRecipeGen(generator)); + generator.addProvider(true, new AonDorRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AonDorPatchouliGen(generator)); generator.addProvider(true, new AonDorAdvancementGen(generator)); } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java index 1874937e8..b5b6ef0c7 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java @@ -1,41 +1,35 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aondor; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.aondor.common.AonDor; -import leaf.cosmere.api.helpers.ResourceLocationHelper; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class AonDorRecipeGen extends RecipeProvider implements IConditionBuilder +public class AonDorRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public AonDorRecipeGen(DataGenerator generatorIn) + public AonDorRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { + return AonDor.rl(path); } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + @Override + protected void addRecipes(Consumer consumer) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, AonDor.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, AonDor.rl(name + "_from_blasting_" + path)); - } + } } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java index acb2415df..148eafa80 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aviar; @@ -10,6 +10,7 @@ import leaf.cosmere.aviar.loottables.AviarLootTableGen; import leaf.cosmere.aviar.patchouli.AviarPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -23,13 +24,14 @@ public class AviarDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AviarEngLangGen(generator)); + generator.addProvider(true, new AviarEngLangGen(output)); generator.addProvider(true, new AviarTagProvider(generator, existingFileHelper)); generator.addProvider(true, new AviarLootTableGen(generator)); generator.addProvider(true, new AviarItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AviarRecipeGen(generator)); + generator.addProvider(true, new AviarRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AviarPatchouliGen(generator)); generator.addProvider(true, new AviarAdvancementGen(generator)); } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java index 97ee6fee1..89ac43d8f 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java @@ -1,41 +1,35 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.aviar; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.aviar.common.Aviar; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class AviarRecipeGen extends RecipeProvider implements IConditionBuilder +public class AviarRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public AviarRecipeGen(DataGenerator generatorIn) + public AviarRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { + return Aviar.rl(path); } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + @Override + protected void addRecipes(Consumer consumer) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Aviar.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, Aviar.rl(name + "_from_blasting_" + path)); } } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java index 2552ca423..0ab643677 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java @@ -30,7 +30,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AwakeningTagProvider(generator, existingFileHelper)); generator.addProvider(true, new AwakeningLootTableGen(generator)); generator.addProvider(true, new AwakeningItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AwakeningRecipeGen(output)); + generator.addProvider(true, new AwakeningRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AwakeningPatchouliGen(generator)); generator.addProvider(true, new AwakeningAdvancementGen(generator)); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java index dc826e653..2ff21a142 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java @@ -1,41 +1,36 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.awakening; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.awakening.common.Awakening; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class AwakeningRecipeGen extends RecipeProvider implements IConditionBuilder +public class AwakeningRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public AwakeningRecipeGen(DataGenerator generatorIn) + public AwakeningRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { + return Awakening.rl(path); } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + @Override + protected void addRecipes(Consumer consumer) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Awakening.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, Awakening.rl(name + "_from_blasting_" + path)); + } } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java index 8885b8c15..695c99376 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -9,6 +9,7 @@ import leaf.cosmere.tools.loottables.ToolsLootTableGen; import leaf.cosmere.tools.patchouli.ToolsPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,13 +23,14 @@ public class ToolsDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new ToolsEngLangGen(generator)); + generator.addProvider(true, new ToolsEngLangGen(output)); generator.addProvider(true, new ToolsTagProvider(generator, existingFileHelper)); generator.addProvider(true, new ToolsLootTableGen(generator)); generator.addProvider(true, new ToolsItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new ToolsRecipeGen(generator)); + generator.addProvider(true, new ToolsRecipeGen(output, existingFileHelper)); generator.addProvider(true, new ToolsPatchouliGen(generator)); generator.addProvider(true, new ToolsAdvancementGen(generator)); } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java index 22e3c7961..3360c1828 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java @@ -1,36 +1,37 @@ /* - * File updated ~ 24 - 3 - 2024 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.tools; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.CosmereTags; import leaf.cosmere.api.Metals; -import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.Tags; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; -import org.jetbrains.annotations.NotNull; +import net.minecraftforge.common.data.ExistingFileHelper; -import javax.annotation.Nullable; import java.util.function.Consumer; -public class ToolsRecipeGen extends RecipeProvider implements IConditionBuilder +public class ToolsRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public ToolsRecipeGen(DataGenerator generatorIn) + public ToolsRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(@NotNull Consumer consumer) + protected ResourceLocation makeRL(String path) + { + return CosmereTools.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) { for (Metals.MetalType metalType : Metals.MetalType.values()) @@ -57,125 +58,4 @@ protected void buildCraftingRecipes(@NotNull Consumer consumer) } } - - private void addPickaxeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) - { - ShapedRecipeBuilder - .shaped(outputItem) - .define('X', inputMaterial) - .define('Y', Tags.Items.RODS_WOODEN) - .pattern("XXX") - .pattern(" Y ") - .pattern(" Y ") - .group("pickaxe") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - - private void addShovelRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) - { - ShapedRecipeBuilder - .shaped(outputItem) - .define('X', inputMaterial) - .define('Y', Tags.Items.RODS_WOODEN) - .pattern("X") - .pattern("Y") - .pattern("Y") - .group("shovel") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - - private void addAxeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) - { - ShapedRecipeBuilder - .shaped(outputItem) - .define('X', inputMaterial) - .define('Y', Tags.Items.RODS_WOODEN) - .pattern("XX") - .pattern("XY") - .pattern(" Y") - .group("axe") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - - private void addSwordRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) - { - ShapedRecipeBuilder - .shaped(outputItem) - .define('X', inputMaterial) - .define('Y', Tags.Items.RODS_WOODEN) - .pattern("X") - .pattern("X") - .pattern("Y") - .group("sword") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - - private void addHoeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) - { - ShapedRecipeBuilder - .shaped(outputItem) - .define('X', inputMaterial) - .define('Y', Tags.Items.RODS_WOODEN) - .pattern("XX") - .pattern(" Y") - .pattern(" Y") - .group("hoe") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - - - protected static void addArmorRecipes(Consumer consumer, TagKey inputMaterial, @Nullable ItemLike head, @Nullable ItemLike chest, @Nullable ItemLike legs, @Nullable ItemLike feet) - { - if (head != null) - { - ShapedRecipeBuilder - .shaped(head) - .define('X', inputMaterial) - .pattern("XXX") - .pattern("X X") - .group("helmet") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (chest != null) - { - ShapedRecipeBuilder - .shaped(chest) - .define('X', inputMaterial) - .pattern("X X") - .pattern("XXX") - .pattern("XXX") - .group("chestplate") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (legs != null) - { - ShapedRecipeBuilder - .shaped(legs) - .define('X', inputMaterial) - .pattern("XXX") - .pattern("X X") - .pattern("X X") - .group("leggings") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (feet != null) - { - ShapedRecipeBuilder - .shaped(feet) - .define('X', inputMaterial) - .pattern("X X") - .pattern("X X") - .group("boots") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - } } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java index e91421449..95ffbd832 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -9,6 +9,7 @@ import leaf.cosmere.example.loottables.ExampleLootTableGen; import leaf.cosmere.example.patchouli.ExamplePatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,13 +23,14 @@ public class ExampleDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new ExampleEngLangGen(generator)); + generator.addProvider(true, new ExampleEngLangGen(output)); generator.addProvider(true, new ExampleTagProvider(generator, existingFileHelper)); generator.addProvider(true, new ExampleLootTableGen(generator)); generator.addProvider(true, new ExampleItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new ExampleRecipeGen(generator)); + generator.addProvider(true, new ExampleRecipeGen(output, existingFileHelper)); generator.addProvider(true, new ExamplePatchouliGen(generator)); generator.addProvider(true, new ExampleAdvancementGen(generator)); } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java index 21640ca4b..1bdeecd1b 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java @@ -1,41 +1,35 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.example; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.example.common.Example; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class ExampleRecipeGen extends RecipeProvider implements IConditionBuilder +public class ExampleRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public ExampleRecipeGen(DataGenerator generatorIn) + public ExampleRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { + return Example.rl(path); } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + @Override + protected void addRecipes(Consumer consumer) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Example.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, Example.rl(name + "_from_blasting_" + path)); } } diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java index 7e7a768aa..65ecfe998 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -8,6 +8,7 @@ import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.patchouli.FeruchemyPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -21,12 +22,13 @@ public class FeruchemyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new FeruchemyEngLangGen(generator)); + generator.addProvider(true, new FeruchemyEngLangGen(output)); generator.addProvider(true, new FeruchemyItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new FeruchemyTagProvider(generator, existingFileHelper)); - generator.addProvider(true, new FeruchemyRecipeGen(generator)); + generator.addProvider(true, new FeruchemyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new FeruchemyPatchouliGen(generator)); generator.addProvider(true, new FeruchemyAdvancementGen(generator)); } diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java index ceba8a1c1..572409d09 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java @@ -1,30 +1,40 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.Metals; +import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class FeruchemyRecipeGen extends RecipeProvider implements IConditionBuilder +public class FeruchemyRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public FeruchemyRecipeGen(DataGenerator generatorIn) + public FeruchemyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) + { + return Feruchemy.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) { for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -38,9 +48,9 @@ protected static void addBasicMetalmindRecipes(Consumer consumer if (metalType.hasFeruchemicalEffect()) { - ShapedRecipeBuilder.shaped(FeruchemyItems.METAL_NECKLACES.get(metalType)).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern(" X ").group("necklace").unlockedBy("has_material", has(inputMaterial)).save(consumer); - ShapedRecipeBuilder.shaped(FeruchemyItems.METAL_RINGS.get(metalType)).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern(" X ").group("ring").unlockedBy("has_material", has(inputMaterial)).save(consumer); - ShapedRecipeBuilder.shaped(FeruchemyItems.METAL_BRACELETS.get(metalType)).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern("X X").group("bracelet").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, FeruchemyItems.METAL_NECKLACES.get(metalType)).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern(" X ").group("necklace").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, FeruchemyItems.METAL_RINGS.get(metalType)).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern(" X ").group("ring").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, FeruchemyItems.METAL_BRACELETS.get(metalType)).define('X', inputMaterial).pattern(" X ").pattern("X X").pattern("X X").group("bracelet").unlockedBy("has_material", has(inputMaterial)).save(consumer); } } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java index f2e76a776..e7eab84dc 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -8,6 +8,7 @@ import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.patchouli.HemalurgyPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -21,12 +22,13 @@ public class HemalurgyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new HemalurgyEngLangGen(generator)); + generator.addProvider(true, new HemalurgyEngLangGen(output)); generator.addProvider(true, new HemalurgyItemTagsProvider(generator, existingFileHelper)); generator.addProvider(true, new HemalurgyItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new HemalurgyRecipeGen(generator)); + generator.addProvider(true, new HemalurgyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new HemalurgyPatchouliGen(generator)); generator.addProvider(true, new HemalurgyAdvancementGen(generator)); } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java index 7781c8de9..2becf61fe 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java @@ -1,36 +1,41 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class HemalurgyRecipeGen extends RecipeProvider implements IConditionBuilder +public class HemalurgyRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public HemalurgyRecipeGen(DataGenerator generatorIn) + public HemalurgyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) + { + return Hemalurgy.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) { addOreSmeltingRecipes(consumer, HemalurgyItems.METAL_SPIKE.get(Metals.MetalType.IRON), ItemsRegistry.GUIDE.get(), 1.0f, 200); @@ -46,16 +51,14 @@ protected static void addSpikes(Consumer consumer, Metals.MetalT if (metalType.hasHemalurgicEffect()) { - ShapedRecipeBuilder.shaped(HemalurgyItems.METAL_SPIKE.get(metalType)).define('X', inputMaterial).pattern("X").pattern("X").group("spike").unlockedBy("has_material", has(inputMaterial)).save(consumer); + ShapedRecipeBuilder + .shaped(RecipeCategory.TOOLS, HemalurgyItems.METAL_SPIKE.get(metalType)) + .define('X', inputMaterial) + .pattern("X") + .pattern("X") + .group("spike") + .unlockedBy("has_material", has(inputMaterial)).save(consumer); } } - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) - { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Hemalurgy.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, Hemalurgy.rl(name + "_from_blasting_" + path)); - } - } diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java new file mode 100644 index 000000000..a2f363c2c --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -0,0 +1,275 @@ +/* + * File updated ~ 5 - 6 - 2024 ~ Leaf + */ + +package leaf.cosmere; + +import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.*; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.packs.PackType; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.Tags; +import net.minecraftforge.common.crafting.DifferenceIngredient; +import net.minecraftforge.common.data.ExistingFileHelper; + +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.function.Consumer; +import java.util.stream.Stream; + +public abstract class BaseRecipeProvider extends RecipeProvider +{ + + private final ExistingFileHelper existingFileHelper; + + protected BaseRecipeProvider(PackOutput output, ExistingFileHelper existingFileHelper) + { + super(output); + this.existingFileHelper = existingFileHelper; + } + + @Override + protected final void buildRecipes(Consumer consumer) + { + Consumer trackingConsumer = consumer.andThen(recipe -> + existingFileHelper.trackGenerated(recipe.getId(), PackType.SERVER_DATA, ".json", "recipes")); + addRecipes(trackingConsumer); + } + + protected abstract ResourceLocation makeRL(String path); + + protected abstract void addRecipes(Consumer consumer); + + public static Ingredient createIngredient(TagKey itemTag, ItemLike... items) + { + return createIngredient(Collections.singleton(itemTag), items); + } + + public static Ingredient createIngredient(Collection> itemTags, ItemLike... items) + { + return Ingredient.fromValues(Stream.concat( + itemTags.stream().map(Ingredient.TagValue::new), + Arrays.stream(items).map(item -> new Ingredient.ItemValue(new ItemStack(item))) + )); + } + + @SafeVarargs + public static Ingredient createIngredient(TagKey... tags) + { + return Ingredient.fromValues(Arrays.stream(tags).map(Ingredient.TagValue::new)); + } + + public static Ingredient difference(TagKey base, ItemLike subtracted) + { + return DifferenceIngredient.of(Ingredient.of(base), Ingredient.of(subtracted)); + } + + protected void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + { + String name = ResourceLocationHelper.get(result).getPath(); + String path = ResourceLocationHelper.get(ore.asItem()).getPath(); + SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), RecipeCategory.MISC, result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, makeRL(name + "_from_smelting_" + path)); + SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), RecipeCategory.MISC, result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, makeRL(name + "_from_blasting_" + path)); + } + + protected void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) + { + String name = ResourceLocationHelper.get(result).getPath(); + + SimpleCookingRecipeBuilder.smelting( + Ingredient.of(inputItem), + RecipeCategory.FOOD, + result, + experience, + time) + .unlockedBy("has_item", has(inputItem)) + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); + + SimpleCookingRecipeBuilder.smoking( + Ingredient.of(inputItem), + RecipeCategory.FOOD, + result, + experience, + time / 2) + .unlockedBy("has_item", has(inputItem)) + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); + + SimpleCookingRecipeBuilder.campfireCooking( + Ingredient.of(inputItem), + RecipeCategory.FOOD, + result, + experience, + time) + .unlockedBy("has_item", has(inputItem)) + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); + } + + protected void addPickaxeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.TOOLS, outputItem) + .define('X', inputMaterial) + .define('Y', Tags.Items.RODS_WOODEN) + .pattern("XXX") + .pattern(" Y ") + .pattern(" Y ") + .group("pickaxe") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + + protected void addShovelRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.TOOLS, outputItem) + .define('X', inputMaterial) + .define('Y', Tags.Items.RODS_WOODEN) + .pattern("X") + .pattern("Y") + .pattern("Y") + .group("shovel") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + + protected void addAxeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.TOOLS, outputItem) + .define('X', inputMaterial) + .define('Y', Tags.Items.RODS_WOODEN) + .pattern("XX") + .pattern("XY") + .pattern(" Y") + .group("axe") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + + protected void addSwordRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.COMBAT, outputItem) + .define('X', inputMaterial) + .define('Y', Tags.Items.RODS_WOODEN) + .pattern("X") + .pattern("X") + .pattern("Y") + .group("sword") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + + protected void addHoeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.TOOLS, outputItem) + .define('X', inputMaterial) + .define('Y', Tags.Items.RODS_WOODEN) + .pattern("XX") + .pattern(" Y") + .pattern(" Y") + .group("hoe") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + + + protected void addArmorRecipes(Consumer consumer, TagKey inputMaterial, @Nullable ItemLike head, @Nullable ItemLike chest, @Nullable ItemLike legs, @Nullable ItemLike feet) + { + if (head != null) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.COMBAT, head) + .define('X', inputMaterial) + .pattern("XXX") + .pattern("X X") + .group("helmet") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + if (chest != null) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.COMBAT, chest) + .define('X', inputMaterial) + .pattern("X X") + .pattern("XXX") + .pattern("XXX") + .group("chestplate") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + if (legs != null) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.COMBAT, legs) + .define('X', inputMaterial) + .pattern("XXX") + .pattern("X X") + .pattern("X X") + .group("leggings") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + if (feet != null) + { + ShapedRecipeBuilder + .shaped(RecipeCategory.COMBAT, feet) + .define('X', inputMaterial) + .pattern("X X") + .pattern("X X") + .group("boots") + .unlockedBy("has_material", has(inputMaterial)) + .save(consumer); + } + } + + protected void decompressRecipe(Consumer consumer, ItemLike output, ItemLike input, String name) + { + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) + .unlockedBy("has_item", has(output)) + .requires(input) + .save(consumer, Cosmere.rl("conversions/" + name)); + } + + + protected void decompressRecipe(Consumer consumer, ItemLike output, TagKey input, String name) + { + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) + .unlockedBy("has_item", has(output)) + .requires(input) + .save(consumer, Cosmere.rl("conversions/" + name)); + } + + protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) + { + return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) + .define('I', input) + .pattern("III") + .pattern("III") + .pattern("III") + .unlockedBy("has_item", has(input)); + } + + protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) + { + return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) + .define('I', input) + .define('J', center) + .pattern("III") + .pattern("IJI") + .pattern("III") + .unlockedBy("has_item", has(input)); + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index bbd60155a..a392bbec2 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 21 - 7 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere; @@ -13,6 +13,7 @@ import leaf.cosmere.patchouli.PatchouliGen; import leaf.cosmere.tag.CosmereTagProvider; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -26,15 +27,16 @@ public class CosmereDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new EngLangGen(generator)); + generator.addProvider(true, new EngLangGen(output)); generator.addProvider(true, new ItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new BlockModelsGen(generator, existingFileHelper)); generator.addProvider(true, new LootTableGen(generator)); - generator.addProvider(true, new RecipeGen(generator)); + generator.addProvider(true, new RecipeGen(output, existingFileHelper)); generator.addProvider(true, new PatchouliGen(generator)); diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 757478f64..0977758af 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -1,46 +1,52 @@ /* - * File updated ~ 24 - 3 - 2024 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere; import leaf.cosmere.api.CosmereTags; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.recipes.*; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; -import javax.annotation.Nullable; import java.util.Arrays; import java.util.Map; import java.util.function.Consumer; -public class RecipeGen extends RecipeProvider implements IConditionBuilder +public class RecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public RecipeGen(DataGenerator generatorIn) + public RecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) + { + return Cosmere.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) { ShapedRecipeBuilder - .shaped(BlocksRegistry.METALWORKING_TABLE.getBlock()) + .shaped(RecipeCategory.DECORATIONS, BlocksRegistry.METALWORKING_TABLE.getBlock()) .define('X', ItemsRegistry.METAL_INGOTS.get(Metals.MetalType.STEEL).asItem()) .define('Y', ItemTags.PLANKS) .pattern("XX") @@ -85,16 +91,14 @@ protected void buildCraftingRecipes(Consumer consumer) } } - - //todo better alloying recipes than these debug shenanigans - private void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) + protected static void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) { String s = String.format("alloying/%s/", recipe); switch (metalType) { case STEEL: - ShapelessRecipeBuilder.shapeless(output, 4) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 4) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.IRON)) .requires(materialTag.get(Metals.MetalType.IRON)) @@ -103,7 +107,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case PEWTER: - ShapelessRecipeBuilder.shapeless(output, 5) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 5) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.TIN)) .requires(materialTag.get(Metals.MetalType.TIN)) @@ -113,14 +117,14 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case BRASS: - ShapelessRecipeBuilder.shapeless(output, 2) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 2) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.ZINC)) .requires(materialTag.get(Metals.MetalType.COPPER)) .save(consumer, Cosmere.rl(s + metalType.getName())); break; case BRONZE: - ShapelessRecipeBuilder.shapeless(output, 4) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 4) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.COPPER)) .requires(materialTag.get(Metals.MetalType.COPPER)) @@ -129,7 +133,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case DURALUMIN: - ShapelessRecipeBuilder.shapeless(output, 5) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 5) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.ALUMINUM)) .requires(materialTag.get(Metals.MetalType.ALUMINUM)) @@ -139,7 +143,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case NICROSIL: - ShapelessRecipeBuilder.shapeless(output, 4) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 4) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.CHROMIUM)) .requires(materialTag.get(Metals.MetalType.NICKEL)) @@ -148,7 +152,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case BENDALLOY: - ShapelessRecipeBuilder.shapeless(output, 9) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.CADMIUM)) .requires(materialTag.get(Metals.MetalType.LEAD)) @@ -162,7 +166,7 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType .save(consumer, Cosmere.rl(s + metalType.getName())); break; case ELECTRUM: - ShapelessRecipeBuilder.shapeless(output, 2) + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 2) .unlockedBy("has_item", has(output)) .requires(materialTag.get(Metals.MetalType.GOLD)) .requires(materialTag.get(Metals.MetalType.SILVER)) @@ -170,111 +174,4 @@ private void addAlloyRecipes(Consumer consumer, Metals.MetalType break; } } - - - protected static void addArmorRecipes(Consumer consumer, TagKey inputMaterial, @Nullable Item head, @Nullable Item chest, @Nullable Item legs, @Nullable Item feet) - { - if (head != null) - { - ShapedRecipeBuilder - .shaped(head) - .define('X', inputMaterial) - .pattern("XXX") - .pattern("X X") - .group("helmets") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (chest != null) - { - ShapedRecipeBuilder - .shaped(chest) - .define('X', inputMaterial) - .pattern("X X") - .pattern("XXX") - .pattern("XXX") - .group("chestplates") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (legs != null) - { - ShapedRecipeBuilder - .shaped(legs) - .define('X', inputMaterial) - .pattern("XXX") - .pattern("X X") - .pattern("X X") - .group("leggings") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - if (feet != null) - { - ShapedRecipeBuilder - .shaped(feet) - .define('X', inputMaterial) - .pattern("X X") - .pattern("X X") - .group("boots") - .unlockedBy("has_material", has(inputMaterial)) - .save(consumer); - } - } - - - private void decompressRecipe(Consumer consumer, ItemLike output, ItemLike input, String name) - { - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); - } - - - private void decompressRecipe(Consumer consumer, ItemLike output, TagKey input, String name) - { - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); - } - - private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) - { - return ShapedRecipeBuilder.shaped(output) - .define('I', input) - .pattern("III") - .pattern("III") - .pattern("III") - .unlockedBy("has_item", has(input)); - } - - private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) - { - return ShapedRecipeBuilder.shaped(output) - .define('I', input) - .define('J', center) - .pattern("III") - .pattern("IJI") - .pattern("III") - .unlockedBy("has_item", has(input)); - } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) - { - - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_blasting_" + path)); - } - - protected static void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) - { - String name = ResourceLocationHelper.get(result).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); - SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, RecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); - SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, RecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); - } } diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java index fc336b921..7a82f37c2 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java @@ -1,22 +1,21 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.patchouli.data; import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.text.StringHelper; import net.minecraft.data.CachedOutput; import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; import org.jetbrains.annotations.NotNull; -import java.io.IOException; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; import java.util.Set; +import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; // @@ -40,10 +39,12 @@ public PatchouliProvider(DataGenerator generatorIn, String modid) /** * Performs this provider's action. + * + * @return */ - public void run(@NotNull CachedOutput cache) throws IOException + public CompletableFuture run(@NotNull CachedOutput cache) { - Path path = this.generator.getOutputFolder(); + Path path = this.generator.getPackOutput().getOutputFolder(); Set entryIDs = Sets.newHashSet(); Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); @@ -62,6 +63,7 @@ public void run(@NotNull CachedOutput cache) throws IOException entryConsumer.accept(entryToConsume); } + return null; } protected abstract void collectInfoForBook(); @@ -77,16 +79,7 @@ private Consumer getCategoryConsumer(@NotNull CachedOutput c else { Path path1 = getCategoryPath(path, category); - - try - { - DataProvider.saveStable(cache, category.serialize(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save page {}", path1, ioexception); - } - + DataProvider.saveStable(cache, category.serialize(), path1); } }; } @@ -103,14 +96,7 @@ private Consumer getEntryConsumer(@NotNull CachedOutput cache, { Path path1 = getEntryPath(path, entry); - try - { - DataProvider.saveStable(cache, entry.serialize(modid), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save page {}", path1, ioexception); - } + DataProvider.saveStable(cache, entry.serialize(modid), path1); } }; diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java index 011d26309..32b20cddf 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java @@ -1,17 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; import leaf.cosmere.sandmastery.blocks.SandmasteryBlockTagsGen; -import leaf.cosmere.sandmastery.items.SandmasteryItemModelsGen; import leaf.cosmere.sandmastery.common.Sandmastery; +import leaf.cosmere.sandmastery.items.SandmasteryItemModelsGen; import leaf.cosmere.sandmastery.items.SandmasteryItemTagsGen; -import leaf.cosmere.sandmastery.loottables.SandmasteryBlockLootTableGen; import leaf.cosmere.sandmastery.loottables.SandmasteryLootTableGen; import leaf.cosmere.sandmastery.patchouli.SandmasteryPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; @@ -26,13 +26,14 @@ public class SandmasteryDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SandmasteryEngLangGen(generator)); + generator.addProvider(true, new SandmasteryEngLangGen(output)); generator.addProvider(true, new SandmasteryItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new SandmasteryBlockTagsGen(generator, existingFileHelper)); generator.addProvider(true, new SandmasteryItemTagsGen(generator, new BlockTagsProvider(generator, Sandmastery.MODID, existingFileHelper), existingFileHelper)); - generator.addProvider(true, new SandmasteryRecipeGen(generator)); + generator.addProvider(true, new SandmasteryRecipeGen(output, existingFileHelper)); generator.addProvider(true, new SandmasteryLootTableGen(generator)); generator.addProvider(true, new SandmasteryPatchouliGen(generator)); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java index 683fd16ac..f6fd40728 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java @@ -1,34 +1,44 @@ /* - * File updated ~ 22 - 2 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; +import leaf.cosmere.BaseRecipeProvider; +import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.world.item.Items; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class SandmasteryRecipeGen extends RecipeProvider implements IConditionBuilder +public class SandmasteryRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public SandmasteryRecipeGen(DataGenerator generatorIn) + public SandmasteryRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { - ShapedRecipeBuilder.shaped(SandmasteryItems.QIDO_ITEM.get()) + return Sandmastery.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) + { + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, SandmasteryItems.QIDO_ITEM.get()) .define('H', Items.GOAT_HORN) .define('S', Tags.Items.STRING) .pattern("SSS") @@ -37,7 +47,7 @@ protected void buildCraftingRecipes(Consumer consumer) .unlockedBy("has_material", has(Items.GOAT_HORN)) .save(consumer); - ShapedRecipeBuilder.shaped(SandmasteryItems.JAR_ITEM.get()) + ShapedRecipeBuilder.shaped(RecipeCategory.REDSTONE, SandmasteryItems.JAR_ITEM.get()) .define('G', Tags.Items.GLASS) .pattern("G G") .pattern("G G") @@ -45,7 +55,7 @@ protected void buildCraftingRecipes(Consumer consumer) .unlockedBy("has_material", has(Tags.Items.GLASS)) .save(consumer); - ShapedRecipeBuilder.shaped(SandmasteryItems.SAND_POUCH_ITEM.get()) + ShapedRecipeBuilder.shaped(RecipeCategory.TOOLS, SandmasteryItems.SAND_POUCH_ITEM.get()) .define('L', Tags.Items.LEATHER) .define('B', Items.LEAD) .define('J', SandmasteryItems.SAND_JAR_ITEM) @@ -55,19 +65,19 @@ protected void buildCraftingRecipes(Consumer consumer) .unlockedBy("has_material", has(SandmasteryItems.SAND_JAR_ITEM)) .save(consumer); - ShapedRecipeBuilder.shaped(SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()) .define('W', ItemTags.WOODEN_SLABS) .pattern("W W") .pattern("WWW") .unlockedBy("has_material", has(ItemTags.WOODEN_SLABS)) .save(consumer); - ShapelessRecipeBuilder.shapeless(SandmasteryItems.SAND_JAR_ITEM.get()) + ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, SandmasteryItems.SAND_JAR_ITEM.get()) .requires(SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem()) .unlockedBy("has_material", has(SandmasteryItems.SAND_JAR_ITEM)) .save(consumer); - ShapelessRecipeBuilder.shapeless(SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem()) + ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem()) .requires(SandmasteryItems.SAND_JAR_ITEM) .unlockedBy("has_material", has(SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem())) .save(consumer); diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java index 9161af4e5..18642e0cb 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -9,6 +9,7 @@ import leaf.cosmere.soulforgery.loottables.SoulforgeryLootTableGen; import leaf.cosmere.soulforgery.patchouli.SoulforgeryPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -22,13 +23,14 @@ public class SoulforgeryDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SoulforgeryEngLangGen(generator)); + generator.addProvider(true, new SoulforgeryEngLangGen(output)); generator.addProvider(true, new SoulforgeryTagProvider(generator, existingFileHelper)); generator.addProvider(true, new SoulforgeryLootTableGen(generator)); generator.addProvider(true, new SoulforgeryItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new SoulforgeryRecipeGen(generator)); + generator.addProvider(true, new SoulforgeryRecipeGen(output, existingFileHelper)); generator.addProvider(true, new SoulforgeryPatchouliGen(generator)); generator.addProvider(true, new SoulforgeryAdvancementGen(generator)); } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java index fb33f98d8..9c434af74 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java @@ -1,41 +1,35 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.soulforgery.common.Soulforgery; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeProvider; -import net.minecraft.data.recipes.SimpleCookingRecipeBuilder; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; +import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; import java.util.function.Consumer; -public class SoulforgeryRecipeGen extends RecipeProvider implements IConditionBuilder +public class SoulforgeryRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public SoulforgeryRecipeGen(DataGenerator generatorIn) + public SoulforgeryRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) { + return Soulforgery.rl(path); } - - protected static void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) + @Override + protected void addRecipes(Consumer consumer) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Soulforgery.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, Soulforgery.rl(name + "_from_blasting_" + path)); } } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index 55e1b6e20..b9845cbb3 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -10,6 +10,7 @@ import leaf.cosmere.surgebinding.loottables.SurgebindingLootTableGen; import leaf.cosmere.surgebinding.patchouli.SurgebindingPatchouliGen; import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -23,17 +24,18 @@ public class SurgebindingDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); + PackOutput output = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SurgebindingEngLangGen(generator)); + generator.addProvider(true, new SurgebindingEngLangGen(output)); generator.addProvider(true, new SurgebindingTagsProvider(generator, existingFileHelper)); generator.addProvider(true, new SurgebindingItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new SurgebindingBlockModelsGen(generator, existingFileHelper)); generator.addProvider(true, new SurgebindingLootTableGen(generator)); - generator.addProvider(true, new SurgebindingRecipeGen(generator)); + generator.addProvider(true, new SurgebindingRecipeGen(output, existingFileHelper)); generator.addProvider(true, new SurgebindingPatchouliGen(generator)); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java index e29d12757..9680c46f8 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java @@ -1,41 +1,38 @@ /* - * File updated ~ 19 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 6 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; +import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.Roshar; -import leaf.cosmere.api.helpers.ResourceLocationHelper; -import leaf.cosmere.common.Cosmere; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.recipes.*; +import net.minecraft.data.PackOutput; +import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; +import net.minecraftforge.common.data.ExistingFileHelper; -import javax.annotation.Nullable; -import java.util.Map; import java.util.function.Consumer; -public class SurgebindingRecipeGen extends RecipeProvider implements IConditionBuilder +public class SurgebindingRecipeGen extends BaseRecipeProvider implements IConditionBuilder { - public SurgebindingRecipeGen(DataGenerator generatorIn) + public SurgebindingRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(generatorIn); + super(output, existingFileHelper); } @Override - protected void buildCraftingRecipes(Consumer consumer) + protected ResourceLocation makeRL(String path) + { + return Surgebinding.rl(path); + } + + @Override + protected void addRecipes(Consumer consumer) { for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) { @@ -46,167 +43,4 @@ protected void buildCraftingRecipes(Consumer consumer) addOreSmeltingRecipes(consumer, SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(gemstone).getBlock(), SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get(), 1.0f, 1000); } } - - - //todo better alloying recipes than these debug shenanigans - private void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) - { - String s = String.format("alloying/%s/", recipe); - - switch (metalType) - { - case STEEL: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.IRON)) - .requires(materialTag.get(Metals.MetalType.IRON)) - .requires(materialTag.get(Metals.MetalType.IRON)) - .requires(Ingredient.of(Items.COAL, Items.CHARCOAL)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case PEWTER: - ShapelessRecipeBuilder.shapeless(output, 5) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case BRASS: - ShapelessRecipeBuilder.shapeless(output, 2) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.ZINC)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case BRONZE: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case DURALUMIN: - ShapelessRecipeBuilder.shapeless(output, 5) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.ALUMINUM)) - .requires(materialTag.get(Metals.MetalType.COPPER)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case NICROSIL: - ShapelessRecipeBuilder.shapeless(output, 4) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.CHROMIUM)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .requires(materialTag.get(Metals.MetalType.NICKEL)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case BENDALLOY: - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.CADMIUM)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.LEAD)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .requires(materialTag.get(Metals.MetalType.TIN)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - case ELECTRUM: - ShapelessRecipeBuilder.shapeless(output, 2) - .unlockedBy("has_item", has(output)) - .requires(materialTag.get(Metals.MetalType.GOLD)) - .requires(materialTag.get(Metals.MetalType.SILVER)) - .save(consumer, Cosmere.rl(s + metalType.getName())); - break; - } - } - - - protected static void addBasicArmorRecipes(Consumer consumer, TagKey inputMaterial, @Nullable Item head, @Nullable Item chest, @Nullable Item legs, @Nullable Item feet) - { - if (head != null) - { - ShapedRecipeBuilder.shaped(head).define('X', inputMaterial).pattern("XXX").pattern("X X").group("helmets").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (chest != null) - { - ShapedRecipeBuilder.shaped(chest).define('X', inputMaterial).pattern("X X").pattern("XXX").pattern("XXX").group("chestplates").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (legs != null) - { - ShapedRecipeBuilder.shaped(legs).define('X', inputMaterial).pattern("XXX").pattern("X X").pattern("X X").group("leggings").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - if (feet != null) - { - ShapedRecipeBuilder.shaped(feet).define('X', inputMaterial).pattern("X X").pattern("X X").group("boots").unlockedBy("has_material", has(inputMaterial)).save(consumer); - } - } - - - private void decompressRecipe(Consumer consumer, ItemLike output, ItemLike input, String name) - { - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); - } - - - private void decompressRecipe(Consumer consumer, ItemLike output, TagKey input, String name) - { - ShapelessRecipeBuilder.shapeless(output, 9) - .unlockedBy("has_item", has(output)) - .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); - } - - private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) - { - return ShapedRecipeBuilder.shaped(output) - .define('I', input) - .pattern("III") - .pattern("III") - .pattern("III") - .unlockedBy("has_item", has(input)); - } - - private ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) - { - return ShapedRecipeBuilder.shaped(output) - .define('I', input) - .define('J', center) - .pattern("III") - .pattern("IJI") - .pattern("III") - .unlockedBy("has_item", has(input)); - } - - protected void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) - { - - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, Surgebinding.rl(name + "_from_smelting_" + path)); - SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, new ResourceLocation(Surgebinding.MODID, name + "_from_blasting_" + path)); - } - - protected void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) - { - String name = ResourceLocationHelper.get(result).getPath(); - SimpleCookingRecipeBuilder.smelting(Ingredient.of(inputItem), result, experience, time).unlockedBy("has_item", has(inputItem)).save(consumer, Surgebinding.rl(name + "_from_smelting")); - SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time / 2, RecipeSerializer.SMOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, Surgebinding.rl(name + "_from_smoking")); - SimpleCookingRecipeBuilder.cooking(Ingredient.of(inputItem), result, experience, time, RecipeSerializer.CAMPFIRE_COOKING_RECIPE).unlockedBy("has_item", has(inputItem)).save(consumer, Surgebinding.rl(name + "_from_campfire")); - } } From 0afdaf1c584b4e4c017bdc3e52ff7b8a0dad6f61 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 5 Jun 2024 22:47:23 +0200 Subject: [PATCH 0856/1090] [Port] Biome registration --- .../leaf/cosmere/CosmereDataGenerator.java | 7 ++++++ .../common/registry/BiomeRegistry.java | 22 ++++++++++++++++--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index a392bbec2..1bdb56dba 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -8,10 +8,13 @@ import leaf.cosmere.biome.BiomeTagsProvider; import leaf.cosmere.blocks.BlockModelsGen; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registry.BiomeRegistry; import leaf.cosmere.items.ItemModelsGen; import leaf.cosmere.loottables.LootTableGen; import leaf.cosmere.patchouli.PatchouliGen; import leaf.cosmere.tag.CosmereTagProvider; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; @@ -23,6 +26,9 @@ @EventBusSubscriber(modid = Cosmere.MODID, bus = Bus.MOD) public class CosmereDataGenerator { + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.BIOME, BiomeRegistry::bootstrapBiomes); + @SubscribeEvent public static void gatherData(GatherDataEvent event) { @@ -47,4 +53,5 @@ public static void gatherData(GatherDataEvent event) } + } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/BiomeRegistry.java b/src/main/java/leaf/cosmere/common/registry/BiomeRegistry.java index a8f439967..7ad37d1c8 100644 --- a/src/main/java/leaf/cosmere/common/registry/BiomeRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BiomeRegistry.java @@ -7,21 +7,37 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.BiomeDeferredRegister; import leaf.cosmere.common.registration.impl.BiomeRegistryObject; +import net.minecraft.core.HolderGetter; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstapContext; import net.minecraft.data.worldgen.biome.OverworldBiomes; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; public class BiomeRegistry { public static final BiomeDeferredRegister BIOMES = new BiomeDeferredRegister(Cosmere.MODID); - public static final BiomeRegistryObject SHADESMAR_BIOME = BIOMES.register("shadesmar_biome", OverworldBiomes::stonyPeaks); + //public static final BiomeRegistryObject SHADESMAR_BIOME = BIOMES.register("shadesmar_biome", OverworldBiomes::stonyPeaks); //resource keys - public static final ResourceKey SHADESMAR_BIOME_KEY = ResourceKey.create(Registry.BIOME_REGISTRY, Cosmere.rl("shadesmar_biome")); - public static final ResourceKey SHADESMAR_NOISE_SETTINGS = ResourceKey.create(Registry.NOISE_GENERATOR_SETTINGS_REGISTRY, Cosmere.rl("shadesmar_biome")); + public static final ResourceKey SHADESMAR_BIOME_KEY = ResourceKey.create(Registries.BIOME, Cosmere.rl("shadesmar_biome")); + public static final ResourceKey SHADESMAR_NOISE_SETTINGS = ResourceKey.create(Registries.NOISE_SETTINGS, Cosmere.rl("shadesmar_biome")); + public static void bootstrapBiomes(BootstapContext context) + { + HolderGetter> carverGetter = context.lookup(Registries.CONFIGURED_CARVER); + HolderGetter placedFeatureGetter = context.lookup(Registries.PLACED_FEATURE); + register(context, SHADESMAR_BIOME_KEY, OverworldBiomes.stonyPeaks(placedFeatureGetter, carverGetter)); + } + + private static void register(BootstapContext context, ResourceKey key, Biome biome) + { + context.register(key, biome); + } } From 514826bf3d3717c2c35cba81fe37cdd35bd7b1b5 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 5 Jun 2024 23:55:12 +0200 Subject: [PATCH 0857/1090] [Port] Updated Curios API implementation Left a few things in commented out in case we come back later --- .../common/charge/ItemChargeHelper.java | 12 +++++- .../common/compat/curios/CuriosCompat.java | 43 ++++++++++--------- .../items/ChargeableMetalCurioItem.java | 14 ++++-- .../data/cosmere/curios/slots/bracelet.json | 6 +++ .../data/cosmere/curios/slots/eyes.json | 6 +++ .../data/cosmere/curios/slots/linchpin.json | 6 +++ .../data/cosmere/curios/slots/mental.json | 6 +++ .../data/cosmere/curios/slots/necklace.json | 6 +++ .../data/cosmere/curios/slots/physical.json | 6 +++ .../data/cosmere/curios/slots/ring.json | 6 +++ .../data/cosmere/curios/slots/spiritual.json | 6 +++ .../data/cosmere/curios/slots/temporal.json | 6 +++ 12 files changed, 97 insertions(+), 26 deletions(-) create mode 100644 src/main/resources/data/cosmere/curios/slots/bracelet.json create mode 100644 src/main/resources/data/cosmere/curios/slots/eyes.json create mode 100644 src/main/resources/data/cosmere/curios/slots/linchpin.json create mode 100644 src/main/resources/data/cosmere/curios/slots/mental.json create mode 100644 src/main/resources/data/cosmere/curios/slots/necklace.json create mode 100644 src/main/resources/data/cosmere/curios/slots/physical.json create mode 100644 src/main/resources/data/cosmere/curios/slots/ring.json create mode 100644 src/main/resources/data/cosmere/curios/slots/spiritual.json create mode 100644 src/main/resources/data/cosmere/curios/slots/temporal.json diff --git a/src/main/java/leaf/cosmere/common/charge/ItemChargeHelper.java b/src/main/java/leaf/cosmere/common/charge/ItemChargeHelper.java index c73f4b64e..48eb2518c 100644 --- a/src/main/java/leaf/cosmere/common/charge/ItemChargeHelper.java +++ b/src/main/java/leaf/cosmere/common/charge/ItemChargeHelper.java @@ -15,9 +15,11 @@ import net.minecraft.world.Container; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.items.wrapper.EmptyHandler; import net.minecraftforge.items.wrapper.PlayerInvWrapper; import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; import java.util.*; @@ -45,9 +47,15 @@ public static List getChargeCurios(Player player) return Collections.emptyList(); } - Container acc = new CapWrapper(CuriosApi.getCuriosHelper().getEquippedCurios(player).orElseGet(EmptyHandler::new)); - List toReturn = getChargeableItemStacks(acc); + LazyOptional curiosItemHandler = CuriosApi.getCuriosInventory(player); + Container acc = null; + if (curiosItemHandler.resolve().isPresent()) + { + acc = new CapWrapper(curiosItemHandler.resolve().get().getEquippedCurios()); + } + + List toReturn = (acc != null) ? getChargeableItemStacks(acc) : new ArrayList<>(); return toReturn; } diff --git a/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java b/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java index 81603540a..e32e8dac2 100644 --- a/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java +++ b/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java @@ -11,9 +11,7 @@ import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import top.theillusivec4.curios.api.CuriosApi; -import top.theillusivec4.curios.api.SlotTypeMessage; -import top.theillusivec4.curios.api.SlotTypePreset; +import top.theillusivec4.curios.api.*; public class CuriosCompat { @@ -48,29 +46,32 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) return; } - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.NECKLACE.getMessageBuilder().size(2).build()); - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.BRACELET.getMessageBuilder().size(6).build()); - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.RING.getMessageBuilder().size(8).build()); + // Handled in datapacks now, leaving this code commented out and this comment in case this breaks in the future and we come looking + // Docs: https://docs.illusivesoulworks.com/curios/slots/slot-register - //custom slots + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.NECKLACE.getMessageBuilder().size(2).build()); + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.BRACELET.getMessageBuilder().size(6).build()); + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.RING.getMessageBuilder().size(8).build()); - //physical - //2 eyes, 1 linchpin, 2 top ribs, 2 center chest, 2 upper top leg - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("eyes").priority(0).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("linchpin").priority(1).size(1).icon(EMPTY_SPIKE_SLOT).build()); - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("physical").priority(501).size(8).icon(EMPTY_SPIKE_SLOT).build()); + ////custom slots - //mental - //4 upper arm, 4 upper rib?, 4 middle leg - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("mental").priority(502).size(10).icon(EMPTY_SPIKE_SLOT).build()); + ////physical + ////2 eyes, 1 linchpin, 2 top ribs, 2 center chest, 2 upper top leg + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("eyes").priority(0).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("linchpin").priority(1).size(1).icon(EMPTY_SPIKE_SLOT).build()); + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("physical").priority(501).size(8).icon(EMPTY_SPIKE_SLOT).build()); - //spiritual - //4 lower leg, 4 lower arm, 4 lower ribs - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("spiritual").priority(503).size(4).icon(EMPTY_SPIKE_SLOT).build()); + ////mental + ////4 upper arm, 4 upper rib?, 4 middle leg + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("mental").priority(502).size(10).icon(EMPTY_SPIKE_SLOT).build()); - //temporal - //4 middle ribs, 4 middle arm, 2 lower middle leg, 2 upper lower leg - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("temporal").priority(504).size(16).icon(EMPTY_SPIKE_SLOT).build()); + ////spiritual + ////4 lower leg, 4 lower arm, 4 lower ribs + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("spiritual").priority(503).size(4).icon(EMPTY_SPIKE_SLOT).build()); + + ////temporal + ////4 middle ribs, 4 middle arm, 2 lower middle leg, 2 upper lower leg + //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("temporal").priority(504).size(16).icon(EMPTY_SPIKE_SLOT).build()); /* diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index 66266434c..e250e7d35 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -11,6 +11,7 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.properties.PropTypes; +import net.minecraft.network.chat.Component; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -19,6 +20,8 @@ import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; +import java.util.List; + public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem { private final Metals.MetalType metalType; @@ -36,13 +39,18 @@ public Metals.MetalType getMetalType() } + //@Override + //public boolean showAttributesTooltip(String identifier, ItemStack stack) + //{ + // return false; + //} + @Override - public boolean showAttributesTooltip(String identifier, ItemStack stack) + public List getAttributesTooltip(List tooltips, ItemStack stack) { - return false; + return ICurioItem.super.getAttributesTooltip(tooltips, stack); } - @Override public boolean makesPiglinsNeutral(SlotContext slotContext, ItemStack stack) { diff --git a/src/main/resources/data/cosmere/curios/slots/bracelet.json b/src/main/resources/data/cosmere/curios/slots/bracelet.json new file mode 100644 index 000000000..d4ffe38f0 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/bracelet.json @@ -0,0 +1,6 @@ +{ + "order": 120, + "size": 6, + "icon": "curios:slot/empty_bracelet_slot", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/eyes.json b/src/main/resources/data/cosmere/curios/slots/eyes.json new file mode 100644 index 000000000..629a1be99 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/eyes.json @@ -0,0 +1,6 @@ +{ + "order": 0, + "size": 2, + "icon": "curios:slot/empty_head_slot", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/linchpin.json b/src/main/resources/data/cosmere/curios/slots/linchpin.json new file mode 100644 index 000000000..97de62399 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/linchpin.json @@ -0,0 +1,6 @@ +{ + "order": 1, + "size": 1, + "icon": "curios:slot/spike_icon", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/mental.json b/src/main/resources/data/cosmere/curios/slots/mental.json new file mode 100644 index 000000000..e4d845421 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/mental.json @@ -0,0 +1,6 @@ +{ + "order": 502, + "size": 10, + "icon": "curios:slot/spike_icon", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/necklace.json b/src/main/resources/data/cosmere/curios/slots/necklace.json new file mode 100644 index 000000000..6bfd6ea42 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/necklace.json @@ -0,0 +1,6 @@ +{ + "order": 60, + "size": 2, + "icon": "curios:slot/empty_necklace_slot", + "add_cosmetic": false +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/physical.json b/src/main/resources/data/cosmere/curios/slots/physical.json new file mode 100644 index 000000000..ee2312e5b --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/physical.json @@ -0,0 +1,6 @@ +{ + "order": 501, + "size": 8, + "icon": "curios:slot/spike_icon", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/ring.json b/src/main/resources/data/cosmere/curios/slots/ring.json new file mode 100644 index 000000000..08eaf25c8 --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/ring.json @@ -0,0 +1,6 @@ +{ + "order": 160, + "size": 8, + "icon": "curios:slot/empty_ring_slot", + "add_cosmetic": false +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/spiritual.json b/src/main/resources/data/cosmere/curios/slots/spiritual.json new file mode 100644 index 000000000..c6136995a --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/spiritual.json @@ -0,0 +1,6 @@ +{ + "order": 503, + "size": 4, + "icon": "curios:slot/spike_icon", + "add_cosmetic": true +} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/curios/slots/temporal.json b/src/main/resources/data/cosmere/curios/slots/temporal.json new file mode 100644 index 000000000..78b67647c --- /dev/null +++ b/src/main/resources/data/cosmere/curios/slots/temporal.json @@ -0,0 +1,6 @@ +{ + "order": 504, + "size": 16, + "icon": "curios:slot/spike_icon", + "add_cosmetic": true +} \ No newline at end of file From 283483793b6fea851d2ff91bd2ec84f6a96f5c53 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sun, 7 Jul 2024 21:10:02 +0200 Subject: [PATCH 0858/1090] [Port] Assorted allomancy things ported. --- .../AllomancyModClientEvents.java | 28 +----- .../client/gui/CoinPouchContainerScreen.java | 17 ++-- .../metalScanning/IronSteelLinesThread.java | 24 +++-- .../manifestation/AllomancyIronSteel.java | 30 +++---- .../manifestation/AllomancyManifestation.java | 2 +- .../assets/allomancy/atlases/icons.json | 9 ++ .../common/registry/FeatureRegistry.java | 88 ++++++++++--------- 7 files changed, 94 insertions(+), 104 deletions(-) create mode 100644 src/allomancy/resources/assets/allomancy/atlases/icons.json diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java index d6a59f18e..ac50d025a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java @@ -18,6 +18,7 @@ import net.minecraft.client.renderer.entity.ThrownItemRenderer; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.api.distmarker.Dist; @@ -45,7 +46,7 @@ public static void init(final FMLClientSetupEvent event) @SubscribeEvent(priority = EventPriority.LOW) public static void registerContainers(RegisterEvent event) { - event.register(Registry.MENU_REGISTRY, helper -> + event.register(Registries.MENU, helper -> { MenuScreens.register((MenuType) AllomancyMenuTypes.COIN_POUCH.get(), CoinPouchContainerScreen::new); CosmereAPI.logger.info("Allomancy registered menutypes!"); @@ -64,29 +65,4 @@ public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefini //shardplate evt.registerLayerDefinition(AllomancyLayerDefinitions.MISTCLOAK, MistcloakModel::createBodyLayer); } - - //special thank you to the chisels and bits team who have an example of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(Allomancy.rl("icon/allomancy")); - - for (final Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } - - String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); - event.addSprite(Allomancy.rl("icon/allomancy/" + metalToLower)); - } - } - } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java index 491ff9954..bd870d862 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java @@ -9,6 +9,7 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.coinpouch.CoinPouchContainerMenu; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; @@ -34,15 +35,15 @@ protected void init() } @Override - public void render(PoseStack matrixStack, int x, int y, float partialTicks) + public void render(GuiGraphics guiGraphics, int x, int y, float partialTicks) { - this.renderBackground(matrixStack); - super.render(matrixStack, x, y, partialTicks); - this.renderTooltip(matrixStack, x, y); + this.renderBackground(guiGraphics); + super.render(guiGraphics, x, y, partialTicks); + this.renderTooltip(guiGraphics, x, y); } @Override - protected void renderBg(PoseStack matrixStack, float partialTicks, int mouseX, int mouseY) + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); @@ -50,15 +51,15 @@ protected void renderBg(PoseStack matrixStack, float partialTicks, int mouseX, i int xPos = (width - imageWidth) / 2; int yPos = (height / 2) - (imageHeight / 2); - blit(matrixStack, xPos, yPos, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(new ResourceLocation(Allomancy.MODID, "textures/gui/coin_pouch.png"), xPos, yPos, 0, 0, imageWidth, imageHeight); } @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) + protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { //write the name of the itemstack - this.font.draw(matrixStack, this.title, (float) this.titleLabelX, (float) this.titleLabelY, 4210752); + guiGraphics.drawString(this.font, this.title.toString(), this.titleLabelX, this.titleLabelY, 4210752); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index 22e246e0c..2bfcac39f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -12,6 +12,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; +import net.minecraft.core.Vec3i; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; @@ -38,7 +39,7 @@ public class IronSteelLinesThread implements Runnable private static Thread t; private static final Lock lock = new ReentrantLock(); private static ScanResult scanResult = new ScanResult(); - private static Vec3 closestMetalObjectInLookVector; + private static Vec3i closestMetalObjectInLookVector; private final double tolerance = 1.8D; private static int scanRange = 0; private static boolean isStopping = false; @@ -111,7 +112,7 @@ public void setScanRange(int range) scanRange = range; } - public Vec3 getClosestMetalObject() + public Vec3i getClosestMetalObject() { if (closestMetalObjectInLookVector == null) { @@ -119,7 +120,7 @@ public Vec3 getClosestMetalObject() } // return copy - return new Vec3(closestMetalObjectInLookVector.x, closestMetalObjectInLookVector.y, closestMetalObjectInLookVector.z); + return new Vec3i(closestMetalObjectInLookVector.getX(), closestMetalObjectInLookVector.getY(), closestMetalObjectInLookVector.getZ()); } public void start() @@ -148,7 +149,12 @@ private void setScanResult(ScanResult result) private void setClosestMetalObject(Vec3 vector) { - closestMetalObjectInLookVector = vector; + closestMetalObjectInLookVector = toVec3i(vector); + } + + private Vec3i toVec3i(Vec3 vector) + { + return new Vec3i((int) vector.x(), (int) vector.y(), (int) vector.z()); } // this should be threaded to avoid lag spikes on the render thread when flaring metals @@ -173,7 +179,7 @@ public void run() BlockPos.withinManhattanStream(playerEntity.blockPosition(), scanRange, scanRange, scanRange) .filter(blockPos -> { - Block block = playerEntity.level.getBlockState(blockPos).getBlock(); + Block block = playerEntity.level().getBlockState(blockPos).getBlock(); final boolean validMetalBlock = block instanceof IHasMetalType iHasMetalType && iHasMetalType.getMetalType() != Metals.MetalType.ALUMINUM; boolean isGood = validMetalBlock || containsMetal(block); @@ -262,7 +268,7 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) int loopTimes = (int) Math.ceil(currVec.distanceTo(endPos)); for (int i = 0; i < loopTimes; i++) { - BlockState bState = Objects.requireNonNull(level.getBlockState(new BlockPos(currVec))); + BlockState bState = Objects.requireNonNull(level.getBlockState(new BlockPos(toVec3i(currVec)))); Vec3 currFloorVec = new Vec3(Math.floor(currVec.x), Math.floor(currVec.y), Math.floor(currVec.z)); if (currFloorVec.equals(endFloorVec) || resistance >= 1.0F) @@ -270,7 +276,7 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) break; } - Block currBlock = level.getBlockState(new BlockPos(currVec)).getBlock(); + Block currBlock = level.getBlockState(new BlockPos(toVec3i(currVec))).getBlock(); if (bState.is(aluminumOre) || bState.is(aluminumStorage) @@ -307,7 +313,7 @@ private boolean isEntityObscured(Entity entity, Player player, Level level) int loopTimes = (int) Math.ceil(currVec.distanceTo(endPos)); for (int i = 0; i < loopTimes; i++) { - BlockState bState = Objects.requireNonNull(level.getBlockState(new BlockPos(currVec))); + BlockState bState = Objects.requireNonNull(level.getBlockState(new BlockPos(toVec3i(currVec)))); final boolean pastEntity = (player.getEyePosition().distanceTo(currVec) >= player.getEyePosition().distanceTo(endPos)); @@ -316,7 +322,7 @@ private boolean isEntityObscured(Entity entity, Player player, Level level) break; } - Block currBlock = level.getBlockState(new BlockPos(currVec)).getBlock(); + Block currBlock = level.getBlockState(new BlockPos(toVec3i(currVec))).getBlock(); if (bState.is(aluminumOre) || bState.is(aluminumStorage) || bState.is(aluminumSheet) || bState.is(aluminumWire) || (currBlock instanceof IHasMetalType iHasMetalType && iHasMetalType.getMetalType() == Metals.MetalType.DURALUMIN)) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 604e0bd61..224900cbc 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -19,6 +19,8 @@ import leaf.cosmere.common.network.packets.SyncPushPullMessage; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; +import net.minecraft.core.Vec3i; +import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; @@ -39,7 +41,6 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.level.material.Material; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; @@ -49,7 +50,7 @@ public class AllomancyIronSteel extends AllomancyManifestation { - public static final HashMap materialResistanceMap = initHashMap(); + public static final HashMap, Double> materialResistanceMap = initHashMap(); private final boolean isPush; private static Set s_whiteList = null; @@ -61,18 +62,13 @@ public AllomancyIronSteel(Metals.MetalType metalType) this.isPush = metalType == Metals.MetalType.STEEL; } - private static HashMap initHashMap() + private static HashMap, Double> initHashMap() { - HashMap output = new HashMap<>(); + HashMap, Double> output = new HashMap<>(); - // map definitely isn't done, but this is a good start - output.put(Material.STONE, 0.5); - output.put(Material.DIRT, 0.2); - output.put(Material.WOOD, 0.25); - output.put(Material.METAL, 0.5); - output.put(Material.PISTON, 0.5); - output.put(Material.SAND, 0.2); - output.put(Material.CLAY, 0.2); + output.put(BlockTags.MINEABLE_WITH_PICKAXE, 0.5); + output.put(BlockTags.MINEABLE_WITH_SHOVEL, 0.2); + output.put(BlockTags.MINEABLE_WITH_AXE, 0.25); return output; } @@ -80,7 +76,7 @@ private static HashMap initHashMap() @Override public void applyEffectTick(ISpiritweb data) { - if (data.getLiving().level.isClientSide) + if (data.getLiving().level().isClientSide) { performEffectClient(data); } @@ -93,7 +89,7 @@ public void applyEffectTick(ISpiritweb data) @Override public void onModeChange(ISpiritweb cap, int lastMode) { - if (cap.getLiving().level.isClientSide) + if (cap.getLiving().level().isClientSide) { super.onModeChange(cap, lastMode); @@ -144,7 +140,7 @@ private void performEffectClient(ISpiritweb cap) boolean hitEntity = false; Entity entityHitResult = null; - Vec3 closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); + Vec3i closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); if (closestMetalObject != null) { BlockState blockAtPos = level.getBlockState(new BlockPos(closestMetalObject)); @@ -273,7 +269,7 @@ private void pushpullEntities(SpiritwebCapability data) { int entityID = entities.get(i); final LivingEntity dataLiving = data.getLiving(); - Entity targetEntity = dataLiving.level.getEntity(entityID); + Entity targetEntity = dataLiving.level().getEntity(entityID); if (targetEntity != null) { if (targetEntity.blockPosition().closerThan(dataLiving.blockPosition(), getRange(data))) @@ -550,7 +546,7 @@ private static void createWhitelist(Entity entity) s_whiteList = new HashSet<>(); final TagKey containsMetal = CosmereTags.Items.CONTAINS_METAL; - final RecipeManager recipeManager = entity.level.getRecipeManager(); + final RecipeManager recipeManager = entity.level().getRecipeManager(); final Collection> recipes = recipeManager.getRecipes(); for (var recipe : recipes) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 0e559f79d..118f3fc0a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -203,7 +203,7 @@ private void tickCompounding(ISpiritweb data, int allomanticSecondsUsed) //max should be around 30. 50 was way too much final double compoundStrength = getStrength(data, false) * Mth.abs(allomanticSecondsUsed); - int secondsOfFeruchemyToAdd = Mth.absFloor(compoundStrength) - 5; + int secondsOfFeruchemyToAdd = (int) (Mth.abs((float) Math.floor(compoundStrength)) - 5); // all this just because Mth#absFloor was removed... if (secondsOfFeruchemyToAdd > 0) { diff --git a/src/allomancy/resources/assets/allomancy/atlases/icons.json b/src/allomancy/resources/assets/allomancy/atlases/icons.json new file mode 100644 index 000000000..ac714fc6d --- /dev/null +++ b/src/allomancy/resources/assets/allomancy/atlases/icons.json @@ -0,0 +1,9 @@ +{ + "sources": [ + { + "type": "directory", + "source": "icon/allomancy", + "prefix": "" + } + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index 81d1f11bf..2957d4e8a 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -31,52 +31,54 @@ public class FeatureRegistry public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Cosmere.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Cosmere.MODID); - public static final Map>> CONFIGURED_METAL_ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> CONFIGURED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new ConfiguredFeature<>( - Feature.ORE, - new OreConfiguration( - makeTarget(type), - 9))) - )); + // todo: might need to be redone? ore and placed features are already in the generated jsons, so might be fine + // hard to tell while it doesn't build +// public static final Map>> CONFIGURED_METAL_ORE_FEATURES = +// Arrays.stream(Metals.MetalType.values()) +// .filter(Metals.MetalType::hasOre) +// .collect(Collectors.toMap( +// Function.identity(), +// type -> CONFIGURED_FEATURES.register( +// type.getName() + Constants.RegNameStubs.ORE, +// () -> new ConfiguredFeature<>( +// Feature.ORE, +// new OreConfiguration( +// makeTarget(type), +// 9))) +// )); - public static final Map> PLACED_METAL_ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> - PLACED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new PlacedFeature(Holder.direct(CONFIGURED_METAL_ORE_FEATURES.get(type).get()), - commonOrePlacement( - 10,//width? - HeightRangePlacement.triangle( - VerticalAnchor.absolute(-32), - VerticalAnchor.absolute(150) - ) - ) - ) - ) - )); +// public static final Map> PLACED_METAL_ORE_FEATURES = +// Arrays.stream(Metals.MetalType.values()) +// .filter(Metals.MetalType::hasOre) +// .collect(Collectors.toMap( +// Function.identity(), +// type -> +// PLACED_FEATURES.register( +// type.getName() + Constants.RegNameStubs.ORE, +// () -> new PlacedFeature(Holder.direct(CONFIGURED_METAL_ORE_FEATURES.get(type).get()), +// commonOrePlacement( +// 10,//width? +// HeightRangePlacement.triangle( +// VerticalAnchor.absolute(-32), +// VerticalAnchor.absolute(150) +// ) +// ) +// ) +// ) +// )); - private static List makeTarget(Metals.MetalType metalType) - { - return ImmutableList.of( - OreConfiguration.target( - OreFeatures.STONE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), - OreConfiguration.target( - OreFeatures.DEEPSLATE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) - ); - } +// private static List makeTarget(Metals.MetalType metalType) +// { +// return ImmutableList.of( +// OreConfiguration.target( +// OreFeatures.STONE_ORE_REPLACEABLES, +// BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), +// OreConfiguration.target( +// OreFeatures.DEEPSLATE_ORE_REPLACEABLES, +// BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) +// ); +// } // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup From 013477388c284ede2762c728d0e8f6ad9bbd07ac Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sun, 7 Jul 2024 21:16:23 +0200 Subject: [PATCH 0859/1090] [Port] Redid iron/steel lines resistance due to Materials being removed. --- .../metalScanning/IronSteelLinesThread.java | 7 +++---- .../manifestation/AllomancyIronSteel.java | 18 +++++++++++++++++- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index 2bfcac39f..9a1a4315d 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -4,6 +4,7 @@ package leaf.cosmere.allomancy.client.metalScanning; +import leaf.cosmere.allomancy.common.manifestation.AllomancyIronSteel; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.CosmereTags; import leaf.cosmere.api.IHasMetalType; @@ -289,8 +290,7 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) } else { - resistance += (materialResistanceMap.containsKey(bState.getMaterial())) - ? materialResistanceMap.get(bState.getMaterial()) : 0.0F; + resistance += AllomancyIronSteel.getResistance(bState); } double distance = currVec.distanceTo(endPos); @@ -331,8 +331,7 @@ private boolean isEntityObscured(Entity entity, Player player, Level level) } else { - resistance += (materialResistanceMap.containsKey(bState.getMaterial())) - ? materialResistanceMap.get(bState.getMaterial()) : 0.0F; + resistance += AllomancyIronSteel.getResistance(bState); } double distance = currVec.distanceTo(endPos); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 224900cbc..8a7b00c76 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -4,6 +4,7 @@ package leaf.cosmere.allomancy.common.manifestation; +import joptsimple.util.KeyValuePair; import leaf.cosmere.allomancy.client.metalScanning.IronSteelLinesThread; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.entities.CoinProjectile; @@ -20,7 +21,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; import net.minecraft.core.Vec3i; -import net.minecraft.core.registries.Registries; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; @@ -73,6 +73,22 @@ private static HashMap, Double> initHashMap() return output; } + public static Double getResistance(BlockState blockState) + { + Double retValue = 0D; + + for (TagKey tagKey : materialResistanceMap.keySet()) + { + if (blockState.is(tagKey)) + { + retValue = materialResistanceMap.get(tagKey); + break; + } + } + + return retValue; + } + @Override public void applyEffectTick(ISpiritweb data) { From 82c6d64449bf0db27c6c921952f2b363b681636f Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 10 Jul 2024 16:38:31 +0200 Subject: [PATCH 0860/1090] [Port] Even more assorted allomancy ported stuff I should really stop bulk committing, I'm sorry --- .../AllomancySpiritwebSubmodule.java | 7 +++-- .../allomancy/common/items/CoinPouchItem.java | 14 ++++----- .../allomancy/common/items/MetalVialItem.java | 31 ++++++++++--------- .../allomancy/common/items/MistcloakItem.java | 4 +-- .../manifestation/AllomancyBendalloy.java | 2 +- .../common/manifestation/AllomancyBrass.java | 6 ++-- .../manifestation/AllomancyCadmium.java | 6 ++-- .../manifestation/AllomancyChromium.java | 2 +- .../common/manifestation/AllomancyCopper.java | 2 +- .../manifestation/AllomancyIronSteel.java | 2 +- .../common/manifestation/AllomancyPewter.java | 8 ++--- .../common/manifestation/AllomancyTin.java | 6 ++-- .../common/manifestation/AllomancyZinc.java | 6 ++-- .../AllomancyDamageTypesRegistry.java | 25 +++++++++++++++ .../leaf/cosmere/api/helpers/DrawHelper.java | 5 +-- .../effects/store/CadmiumStoreEffect.java | 8 ++--- 16 files changed, 81 insertions(+), 53 deletions(-) create mode 100644 src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 5ab339481..667012832 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -22,6 +22,7 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import net.minecraft.client.Minecraft; +import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -233,11 +234,11 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event //todo - does this mean it's wrong on the first check? probably doesn't matter IronSteelLinesThread.getInstance().setScanRange(range); ScanResult scanResult = IronSteelLinesThread.getInstance().requestScanResult(); - Vec3 closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); + Vec3i closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); Vec3 originPoint = spiritweb.getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); - viewModelStack.last().pose().load(event.getPoseStack().last().pose()); + viewModelStack.last().pose().get(event.getPoseStack().last().pose()); // not sure that get() is correct here final Boolean drawMetalLines = AllomancyConfigs.CLIENT.drawMetalLines.get(); if (drawMetalLines && !scanResult.foundEntities.isEmpty()) @@ -268,7 +269,7 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event if (spiritweb.hasManifestation(tinAllomancy)) { - viewModelStack.last().pose().load(event.getPoseStack().last().pose()); + viewModelStack.last().pose().get(event.getPoseStack().last().pose()); // not sure that get() is right here Minecraft.getInstance().getProfiler().push("cosmere-getDrawSoundIndicator"); DrawHelper.drawSquareAtPoint(viewModelStack, Color.WHITE, AllomancyTin.getTinSoundList(), spiritweb.getLiving().getEyePosition()); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java index 5893b0e39..2ac2aa3c8 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java @@ -86,13 +86,13 @@ public InteractionResultHolder use(Level level, Player player, Intera if (interactionHand == InteractionHand.MAIN_HAND && player.isCrouching()) { //open inventory - if (!player.level.isClientSide && player instanceof ServerPlayer) + if (!player.level().isClientSide && player instanceof ServerPlayer) { MenuProvider container = new SimpleMenuProvider((windowID, playerInv, plyr) -> new CoinPouchContainerMenu(windowID, playerInv, coinPouchStack), coinPouchStack.getHoverName()); NetworkHooks.openScreen((ServerPlayer) player, container, buf -> buf.writeBoolean(true)); } } - else if (player.level.isClientSide && AllomancyKeybindings.ALLOMANCY_STEEL_PUSH.isDown()) + else if (player.level().isClientSide && AllomancyKeybindings.ALLOMANCY_STEEL_PUSH.isDown()) { //assume they wanna shoot a projectile //so let them tell the server @@ -123,9 +123,9 @@ public void shoot(Player player, ItemStack coinPouchStack) } //shoot? - if (!player.level.isClientSide) + if (!player.level().isClientSide) { - AbstractArrow coinProjectile = new CoinProjectile(player.level, player, stackToShoot); + AbstractArrow coinProjectile = new CoinProjectile(player.level(), player, stackToShoot); coinProjectile.setCritArrow(true); coinProjectile.shootFromRotation( player, @@ -139,12 +139,12 @@ public void shoot(Player player, ItemStack coinPouchStack) ? AbstractArrow.Pickup.DISALLOWED : AbstractArrow.Pickup.ALLOWED; - player.level.addFreshEntity(coinProjectile); + player.level().addFreshEntity(coinProjectile); steelManifestation.trackValidEntity(data, coinProjectile); } - player.level.playSound( + player.level().playSound( null, player.getX(), player.getY(), @@ -152,7 +152,7 @@ public void shoot(Player player, ItemStack coinPouchStack) SoundEvents.ARROW_SHOOT, SoundSource.PLAYERS, 1.0F, - 1.0F / (player.level.getRandom().nextFloat() * 0.4F + 1.2F) + 1 * 0.5F); + 1.0F / (player.level().getRandom().nextFloat() * 0.4F + 1.2F) + 1 * 0.5F); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index b0da27364..0d20b4de0 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -43,21 +43,22 @@ public class MetalVialItem extends BaseItem implements IHasMetalType private static final String metal_amounts = "metalAmounts"; private static final int MAX_METALS_COUNT = 16; - @Override - public void fillItemCategory(CreativeModeTab pCategory, NonNullList pItems) - { - super.fillItemCategory(pCategory, pItems); - - if (allowedIn(pCategory)) - { - final ItemStack filled = new ItemStack(this); - for (int i = 0; i < 16; i++) - { - addMetals(filled, i, 1); - } - pItems.add(filled); - } - } + // no longer exists, will need to manually assign to creative mode tab elsewhere + //@Override + //public void fillItemCategory(CreativeModeTab pCategory, NonNullList pItems) + //{ + // super.fillItemCategory(pCategory, pItems); + + // if (allowedIn(pCategory)) + // { + // final ItemStack filled = new ItemStack(this); + // for (int i = 0; i < 16; i++) + // { + // addMetals(filled, i, 1); + // } + // pItems.add(filled); + // } + //} private static CompoundTag getContainedMetalsTag(ItemStack stack) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MistcloakItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MistcloakItem.java index bd82f9911..1805423a1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MistcloakItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MistcloakItem.java @@ -15,9 +15,9 @@ public class MistcloakItem extends ArmorItem { - public MistcloakItem(ArmorMaterial material, EquipmentSlot slot, Properties properties) + public MistcloakItem(ArmorMaterial material, Type type, Properties properties) { - super(material, slot, properties); + super(material, type, properties); } //todo increase dodge chance while in the mists diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java index dc774367b..68825ea37 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java @@ -42,7 +42,7 @@ protected void applyEffectTick(ISpiritweb data) // data processing { // this is the only way to check if the player is still online, thanks forge devs - if (data.getLiving().level.getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) + if (data.getLiving().level().getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) { return; } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java index 7cf9e9cf5..5e6d55f12 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java @@ -36,7 +36,7 @@ public AllomancyBrass(Metals.MetalType metalType) @Override public void applyEffectTick(ISpiritweb data) { - if (data.getLiving().level.isClientSide()) + if (data.getLiving().level().isClientSide()) { if (isActiveTick(data)) { @@ -70,7 +70,7 @@ private void performEffectServer(ISpiritweb data) // data processing { // this is the only way to check if the player is still online, thanks forge devs - if (data.getLiving().level.getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) + if (data.getLiving().level().getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) { return; } @@ -88,7 +88,7 @@ private void performEffectServer(ISpiritweb data) if (isSingleTarget) { - if (data.getLiving().level.getEntity(playerThreadMap.get(uuid).singleTargetEntityID) instanceof LivingEntity entity) + if (data.getLiving().level().getEntity(playerThreadMap.get(uuid).singleTargetEntityID) instanceof LivingEntity entity) { entitiesToAffect.add(entity); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCadmium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCadmium.java index dae60258c..334e9fffa 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCadmium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCadmium.java @@ -37,7 +37,7 @@ protected void applyEffectTick(ISpiritweb data) // data processing { // this is the only way to check if the player is still online, thanks forge devs - if (data.getLiving().level.getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) + if (data.getLiving().level().getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) { return; } @@ -55,7 +55,7 @@ protected void applyEffectTick(ISpiritweb data) { int y = data.getLiving().blockPosition().getY() + i; BlockPos pos = new BlockPos(x, y, z); - Level world = data.getLiving().level; + Level world = data.getLiving().level(); if (world.isEmptyBlock(pos)) { @@ -152,7 +152,7 @@ public void run() } // this is the only way to check if the player is still online, thanks forge devs - if (data.getLiving().level.getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) + if (data.getLiving().level().getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) { break; } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java index 4c9c1f6a2..471ede1d4 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java @@ -32,7 +32,7 @@ protected void applyEffectTick(ISpiritweb data) int range = getRange(data); LivingEntity living = data.getLiving(); - Level world = living.level; + Level world = living.level(); boolean isActiveTick = isActiveTick(data); if (!world.isClientSide && isActiveTick) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCopper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCopper.java index 2e4a578f2..960c5540a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCopper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyCopper.java @@ -65,7 +65,7 @@ protected void applyEffectTick(ISpiritweb data) if (isActiveTick) { //do not multiply strength by mode here, flaring doesn't increase cognitive concealment and bronze flare doesn't increase pierce strength - final int actionableStrength = Mth.fastFloor(getStrength(data, false)); + final int actionableStrength = Mth.floor(getStrength(data, false)); switch (getMode(data)) { case 1: diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 8a7b00c76..f7fe420ab 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -567,7 +567,7 @@ private static void createWhitelist(Entity entity) for (var recipe : recipes) { - final ItemStack resultItem = recipe.getResultItem(); + final ItemStack resultItem = recipe.getResultItem(entity.level().registryAccess()); // check if is blacklisted, and if is, skip //if it says result item is never null, ignore it, diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java index fd8f48d2b..09bd99807 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java @@ -5,6 +5,7 @@ package leaf.cosmere.allomancy.common.manifestation; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; +import leaf.cosmere.allomancy.common.registries.AllomancyDamageTypesRegistry; import leaf.cosmere.allomancy.common.registries.AllomancyEffects; import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; import leaf.cosmere.api.Manifestations; @@ -12,6 +13,7 @@ import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import net.minecraft.client.Minecraft; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -19,8 +21,6 @@ //Increases Physical Abilities public class AllomancyPewter extends AllomancyManifestation { - public static final DamageSource PEWTER_DELAYED_DAMAGE = (new DamageSource("pewter_delayed_damage")).bypassArmor().bypassMagic(); - public AllomancyPewter(Metals.MetalType metalType) { super(metalType); @@ -54,7 +54,7 @@ public void onModeChange(ISpiritweb data, int lastMode) { super.onModeChange(data, lastMode); - if (data.getLiving().level.isClientSide || data.getMode(this) > 0) + if (data.getLiving().level().isClientSide || data.getMode(this) > 0) { return; } @@ -64,7 +64,7 @@ public void onModeChange(ISpiritweb data, int lastMode) AllomancySpiritwebSubmodule asm = AllomancySpiritwebSubmodule.getSubmodule(data); float delayedDamage = asm.getPewterDelayedDamage(); - data.getLiving().hurt(PEWTER_DELAYED_DAMAGE, delayedDamage); + data.getLiving().hurt(AllomancyDamageTypesRegistry.damageSource(data.getLiving().level(), AllomancyDamageTypesRegistry.PEWTER_DELAYED_DAMAGE), delayedDamage); asm.setPewterDelayedDamage(0); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java index efa897bce..d90b940ab 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java @@ -45,7 +45,7 @@ public static ArrayList getTinSoundList() public void onModeChange(ISpiritweb data, int lastMode) { super.onModeChange(data, lastMode); - if (data.getLiving().level.isClientSide()) + if (data.getLiving().level().isClientSide()) { int mode = getMode(data); @@ -79,7 +79,7 @@ else if (blockLighting < 8 && living.hasEffect(MobEffects.BLINDNESS)) } // show particles from sound origins towards player burning tin - if (living.level.isClientSide() && living instanceof LocalPlayer) + if (living.level().isClientSide() && living instanceof LocalPlayer) { soundPosMap.entrySet().removeIf(entry -> entry.getValue() <= 0); @@ -94,7 +94,7 @@ else if (blockLighting < 8 && living.hasEffect(MobEffects.BLINDNESS)) if (soundPosMap.get(v) > 18) { VibrationParticleOption vib = new VibrationParticleOption(playerSource, 10); - living.level.addParticle(vib, v.x, v.y, v.z, 1D, 1D, 1D); + living.level().addParticle(vib, v.x, v.y, v.z, 1D, 1D, 1D); } soundPosMap.put(v, soundPosMap.get(v)-1); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java index 992876c4a..79349ba73 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java @@ -37,7 +37,7 @@ public AllomancyZinc(Metals.MetalType metalType) @Override public void applyEffectTick(ISpiritweb data) { - if (data.getLiving().level.isClientSide()) + if (data.getLiving().level().isClientSide()) { if (isActiveTick(data)) { @@ -72,7 +72,7 @@ private void performEffectServer(ISpiritweb data) // data processing { // this is the only way to check if the player is still online, thanks forge devs - if (data.getLiving().level.getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) + if (data.getLiving().level().getServer().getPlayerList().getPlayer(data.getLiving().getUUID()) == null) { return; } @@ -85,7 +85,7 @@ private void performEffectServer(ISpiritweb data) if (isSingleTarget) { - if (data.getLiving().level.getEntity(playerThreadMap.get(uuid).singleTargetEntityID) instanceof LivingEntity entity) + if (data.getLiving().level().getEntity(playerThreadMap.get(uuid).singleTargetEntityID) instanceof LivingEntity entity) { entitiesToAffect.add(entity); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java new file mode 100644 index 000000000..eeea5d59e --- /dev/null +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java @@ -0,0 +1,25 @@ +package leaf.cosmere.allomancy.common.registries; + +import leaf.cosmere.common.Cosmere; +import net.minecraft.core.registries.Registries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.level.Level; + +public class AllomancyDamageTypesRegistry +{ + public static final ResourceKey PEWTER_DELAYED_DAMAGE = createKey("pewter_delayed_damage"); + + // special thanks to the aether mod team for inspiration + private static ResourceKey createKey(String name) + { + return ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(Cosmere.MODID, name)); + } + + public static DamageSource damageSource(Level level, ResourceKey key) + { + return new DamageSource(level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key)); + } +} diff --git a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java index d6d05359d..b899b3481 100644 --- a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java @@ -10,6 +10,7 @@ import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexFormat; import com.mojang.math.Axis; +import net.minecraft.core.Vec3i; import org.joml.Matrix3f; import org.joml.Matrix4f; import org.joml.Quaternionf; @@ -37,7 +38,7 @@ public class DrawHelper { //Draw our allomancy lines - public static void drawLinesFromPoint(PoseStack poseStack, Vec3 originPoint, float range, Color color, List lineEndPositions, Vec3 highlightVector) + public static void drawLinesFromPoint(PoseStack poseStack, Vec3 originPoint, float range, Color color, List lineEndPositions, Vec3i highlightVector) { poseStack.pushPose(); @@ -168,7 +169,7 @@ private static void squareTexVertex(VertexConsumer vertexConsumer, Matrix4f matr .endVertex(); } - public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, Vec3 highlightVector, ArrayList targetedClusterBlockList) + public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, Vec3i highlightVector, ArrayList targetedClusterBlockList) { poseStack.pushPose(); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/CadmiumStoreEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/CadmiumStoreEffect.java index c054c130d..74b2166d6 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/CadmiumStoreEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/CadmiumStoreEffect.java @@ -4,13 +4,13 @@ package leaf.cosmere.feruchemy.common.effects.store; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.feruchemy.common.effects.FeruchemyEffectBase; +import net.minecraft.core.registries.Registries; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; // air @@ -38,7 +38,7 @@ protected int getActiveTick() public void applyEffectTick(ISpiritweb data, double strength) { final LivingEntity living = data.getLiving(); - if (living.level.isClientSide) + if (living.level().isClientSide) { return; } @@ -60,7 +60,7 @@ public void applyEffectTick(ISpiritweb data, double strength) //every 2.5 seconds if (living.getAirSupply() < -10 && (getTickToCheck(data) % getActiveTick() == 0)) { - living.hurt(DamageSource.DROWN, 2.0F); + living.hurt(new DamageSource(living.level().registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.DROWN)), 2.0F); } } } From 2cff405b84088e4d4d78ca554fd4f057c31e5a7f Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 18:09:49 +0200 Subject: [PATCH 0861/1090] [Port] Allomancy items ported --- .../allomancy/common/registries/AllomancyItems.java | 7 +++---- .../leaf/cosmere/allomancy/common/utils/MiscHelper.java | 2 +- .../java/leaf/cosmere/allomancy/mixin/EntityMixin.java | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyItems.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyItems.java index 829e8377a..eece04a4a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyItems.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyItems.java @@ -8,20 +8,19 @@ import leaf.cosmere.allomancy.common.items.CoinPouchItem; import leaf.cosmere.allomancy.common.items.MetalVialItem; import leaf.cosmere.allomancy.common.items.MistcloakItem; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; import leaf.cosmere.common.registration.impl.ItemRegistryObject; -import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterials; public class AllomancyItems { public static final ItemDeferredRegister ITEMS = new ItemDeferredRegister(Allomancy.MODID); - public static final ItemRegistryObject COIN_POUCH = ITEMS.register("coin_pouch", () -> new CoinPouchItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS))); + public static final ItemRegistryObject COIN_POUCH = ITEMS.register("coin_pouch", () -> new CoinPouchItem(PropTypes.Items.ONE.get())); public static final ItemRegistryObject METAL_VIAL = ITEMS.register("metal_vial", MetalVialItem::new); - public static final ItemRegistryObject MISTCLOAK = ITEMS.register("mistcloak", () -> new MistcloakItem(ArmorMaterials.LEATHER, EquipmentSlot.HEAD, PropTypes.Items.ONE.get())); + public static final ItemRegistryObject MISTCLOAK = ITEMS.register("mistcloak", () -> new MistcloakItem(ArmorMaterials.LEATHER, ArmorItem.Type.HELMET, PropTypes.Items.ONE.get())); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 8e073966a..5e332df74 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -21,7 +21,7 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, int amount) { - if (metalType == null || livingEntity.level.isClientSide) + if (metalType == null || livingEntity.level().isClientSide) { return; } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java b/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java index 9d6dfdc12..c846ab7cb 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java @@ -25,7 +25,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) { Entity e = (Entity) (Object) this; - final boolean isServerSide = !(e.level.isClientSide); + final boolean isServerSide = !(e.level().isClientSide); final boolean isInanimateEntity = !(e instanceof LivingEntity); if (isServerSide || isInanimateEntity || cir.getReturnValue()) { From fba88f2833468b053a06e9b34eaeb0067ecf490f Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 18:16:10 +0200 Subject: [PATCH 0862/1090] [Port] Ported AonDor icons There are none, but the skeleton's there now --- .../aondor/client/AonDorModClientEvents.java | 47 ------------------- .../assets/aondor/atlases/icons.json | 9 ++++ .../textures/icon/aondor/placeholder.txt | 1 + 3 files changed, 10 insertions(+), 47 deletions(-) delete mode 100644 src/aondor/java/leaf/cosmere/aondor/client/AonDorModClientEvents.java create mode 100644 src/aondor/resources/assets/aondor/atlases/icons.json create mode 100644 src/aondor/resources/assets/textures/icon/aondor/placeholder.txt diff --git a/src/aondor/java/leaf/cosmere/aondor/client/AonDorModClientEvents.java b/src/aondor/java/leaf/cosmere/aondor/client/AonDorModClientEvents.java deleted file mode 100644 index 55d759380..000000000 --- a/src/aondor/java/leaf/cosmere/aondor/client/AonDorModClientEvents.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aondor.client; - -import leaf.cosmere.aondor.client.render.AonDorRenderers; -import leaf.cosmere.aondor.common.AonDor; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -@Mod.EventBusSubscriber(modid = AonDor.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class AonDorModClientEvents -{ - @SubscribeEvent - public static void init(final FMLClientSetupEvent event) - { - AonDorRenderers.register(); - CosmereAPI.logger.info("Cosmere AonDor mod client setup complete!"); - } - - @SubscribeEvent - public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) - { - } - - - //special thank you to the chisels and bits team who have an aondor of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(AonDor.rl("icon/aondor")); - } -} diff --git a/src/aondor/resources/assets/aondor/atlases/icons.json b/src/aondor/resources/assets/aondor/atlases/icons.json new file mode 100644 index 000000000..387dbb121 --- /dev/null +++ b/src/aondor/resources/assets/aondor/atlases/icons.json @@ -0,0 +1,9 @@ +{ + "sources": [ + { + "type": "directory", + "source": "icon/aondor", + "prefix": "" + } + ] +} \ No newline at end of file diff --git a/src/aondor/resources/assets/textures/icon/aondor/placeholder.txt b/src/aondor/resources/assets/textures/icon/aondor/placeholder.txt new file mode 100644 index 000000000..05704751d --- /dev/null +++ b/src/aondor/resources/assets/textures/icon/aondor/placeholder.txt @@ -0,0 +1 @@ +Icons go here later :) \ No newline at end of file From 1bb2d6566eb8f65f64812317be443ec5860a7438 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 18:40:53 +0200 Subject: [PATCH 0863/1090] [Port] Ported Aviars --- .../render/layers/AviarOnShoulderLayer.java | 20 ++++++++----------- .../capabilities/AviarSpiritwebSubmodule.java | 3 ++- .../aviar/common/entity/AviarBird.java | 19 +++++++++--------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java b/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java index 3c1ae4556..c20766ee7 100644 --- a/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java +++ b/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java @@ -2,7 +2,6 @@ import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import leaf.cosmere.aviar.common.registries.AviarEntityTypes; import net.minecraft.client.model.ParrotModel; import net.minecraft.client.model.PlayerModel; import net.minecraft.client.model.geom.EntityModelSet; @@ -14,6 +13,7 @@ import net.minecraft.client.renderer.texture.OverlayTexture; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Parrot; import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -37,18 +37,14 @@ public void render(PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPacke private void render(PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPackedLight, T pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pNetHeadYaw, float pHeadPitch, boolean pLeftShoulder) { - CompoundTag compoundtag = - pLeftShoulder ? pLivingEntity.getShoulderEntityLeft() : pLivingEntity.getShoulderEntityRight(); - EntityType.byString(compoundtag.getString("id")).filter((entityType) -> - { - return entityType == AviarEntityTypes.AVIAR_ENTITY.get(); - }).ifPresent((entityType) -> - { + CompoundTag compoundtag = pLeftShoulder ? pLivingEntity.getShoulderEntityLeft() : pLivingEntity.getShoulderEntityRight(); + EntityType.byString(compoundtag.getString("id")).filter((entityType) -> { + return entityType == EntityType.PARROT; + }).ifPresent((entityType) -> { pMatrixStack.pushPose(); - pMatrixStack.translate( - pLeftShoulder ? (double) 0.4F : (double) -0.4F, - pLivingEntity.isCrouching() ? (double) -1.3F : -1.5D, 0.0D); - VertexConsumer vertexconsumer = pBuffer.getBuffer(this.model.renderType(ParrotRenderer.PARROT_LOCATIONS[compoundtag.getInt("Variant")])); + pMatrixStack.translate(pLeftShoulder ? 0.4F : -0.4F, pLivingEntity.isCrouching() ? -1.3F : -1.5F, 0.0F); + Parrot.Variant variant = Parrot.Variant.byId(compoundtag.getInt("Variant")); + VertexConsumer vertexconsumer = pBuffer.getBuffer(this.model.renderType(ParrotRenderer.getVariantTexture(variant))); this.model.renderOnShoulder(pMatrixStack, vertexconsumer, pPackedLight, OverlayTexture.NO_OVERLAY, pLimbSwing, pLimbSwingAmount, pNetHeadYaw, pHeadPitch, pLivingEntity.tickCount); pMatrixStack.popPose(); }); diff --git a/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java b/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java index d9f799498..1a34008d6 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java @@ -11,6 +11,7 @@ import leaf.cosmere.aviar.common.registries.AviarEntityTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.Parrot; import net.minecraft.world.entity.player.Player; public class AviarSpiritwebSubmodule implements ISpiritwebSubmodule @@ -48,7 +49,7 @@ private void tickAviar(Player player, CompoundTag compoundtag) .filter((entityType) -> entityType == AviarEntityTypes.AVIAR_ENTITY.get()) .ifPresent((entityType) -> { - final int variant = compoundtag.getInt("Variant"); + final Parrot.Variant variant = Parrot.Variant.byId(compoundtag.getInt("Variant")); AviarBird.tickBond(player, variant, compoundtag.getUUID("UUID").toString()); }); } diff --git a/src/aviar/java/leaf/cosmere/aviar/common/entity/AviarBird.java b/src/aviar/java/leaf/cosmere/aviar/common/entity/AviarBird.java index 4707f73dc..59ac6517c 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/entity/AviarBird.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/entity/AviarBird.java @@ -78,7 +78,7 @@ public void tick() tickBond(owner, this.getVariant(), this.getStringUUID()); } - public static void tickBond(LivingEntity livingEntity, int variant, String aviarUUID) + public static void tickBond(LivingEntity livingEntity, Variant variant, String aviarUUID) { //if owner exists and has spiritweb SpiritwebCapability.get(livingEntity).ifPresent(data -> @@ -86,21 +86,22 @@ public static void tickBond(LivingEntity livingEntity, int variant, String aviar final Attribute attribute = switch (variant) { //todo decide on finalized attributes changed + // note: I'm unsure if these are the same as the IDs in the previous version // Gerbagel default -> AttributesRegistry.COGNITIVE_CONCEALMENT.get(); - case 1 -> AttributesRegistry.COSMERE_FORTUNE.get(); - case 2 -> AttributesRegistry.XP_RATE_ATTRIBUTE.get(); - case 3 -> AttributesRegistry.DETERMINATION.get(); - case 4 -> AviarAttributes.HOSTILE_LIFE_SENSE.get(); + case BLUE -> AttributesRegistry.COSMERE_FORTUNE.get(); + case GREEN -> AttributesRegistry.XP_RATE_ATTRIBUTE.get(); + case YELLOW_BLUE -> AttributesRegistry.DETERMINATION.get(); + case GRAY -> AviarAttributes.HOSTILE_LIFE_SENSE.get(); }; //todo config double strength = switch (variant) { default -> 10;//cognitive concealment - case 1 -> 1;//cosmere fortune - case 2 -> 1;//xp gain - case 3 -> 5;//determination - case 4 -> 2;//hostile life sense + case BLUE -> 1;//cosmere fortune + case GREEN -> 1;//xp gain + case YELLOW_BLUE -> 5;//determination + case GRAY -> 2;//hostile life sense }; final CosmereEffectInstance effectInstance = CosmereEffectInstance.getOrCreateEffect(AviarEffects.AVIAR_BOND_EFFECT.get(), data, aviarUUID, 1); From c8ee13a80fd6658d6b4ec32e1fdc16e9e8479d89 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 18:43:43 +0200 Subject: [PATCH 0864/1090] [Port] Ported Awakening There wasn't much to do --- .../client/AwakeningModClientEvents.java | 47 ------------------- .../assets/awakening/atlases/icons.json | 9 ++++ .../textures/icon/awakening/placeholder.txt | 1 + 3 files changed, 10 insertions(+), 47 deletions(-) delete mode 100644 src/awakening/java/leaf/cosmere/awakening/client/AwakeningModClientEvents.java create mode 100644 src/awakening/resources/assets/awakening/atlases/icons.json create mode 100644 src/awakening/resources/assets/textures/icon/awakening/placeholder.txt diff --git a/src/awakening/java/leaf/cosmere/awakening/client/AwakeningModClientEvents.java b/src/awakening/java/leaf/cosmere/awakening/client/AwakeningModClientEvents.java deleted file mode 100644 index 0796ec8bb..000000000 --- a/src/awakening/java/leaf/cosmere/awakening/client/AwakeningModClientEvents.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.awakening.client; - -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.awakening.client.render.AwakeningRenderers; -import leaf.cosmere.awakening.common.Awakening; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -@Mod.EventBusSubscriber(modid = Awakening.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class AwakeningModClientEvents -{ - @SubscribeEvent - public static void init(final FMLClientSetupEvent event) - { - AwakeningRenderers.register(); - CosmereAPI.logger.info("Cosmere Awakening mod client setup complete!"); - } - - @SubscribeEvent - public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) - { - } - - - //special thank you to the chisels and bits team who have an awakening of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(Awakening.rl("icon/awakening")); - } -} diff --git a/src/awakening/resources/assets/awakening/atlases/icons.json b/src/awakening/resources/assets/awakening/atlases/icons.json new file mode 100644 index 000000000..a84e50b93 --- /dev/null +++ b/src/awakening/resources/assets/awakening/atlases/icons.json @@ -0,0 +1,9 @@ +{ + "sources": [ + { + "type": "directory", + "source": "icon/awakening", + "prefix": "" + } + ] +} \ No newline at end of file diff --git a/src/awakening/resources/assets/textures/icon/awakening/placeholder.txt b/src/awakening/resources/assets/textures/icon/awakening/placeholder.txt new file mode 100644 index 000000000..05704751d --- /dev/null +++ b/src/awakening/resources/assets/textures/icon/awakening/placeholder.txt @@ -0,0 +1 @@ +Icons go here later :) \ No newline at end of file From d9a037e36d8317a4e222206c0b82d0c2dceededc Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 19:10:23 +0200 Subject: [PATCH 0865/1090] [Port] Fixed some mistakes regarding atlases --- .../textures/icon/aondor/placeholder.txt | 0 .../tools/client/ToolsModClientEvents.java | 47 ------------------- .../assets/cosmeretools/atlases/icons.json | 9 ++++ .../icon/cosmeretools}/placeholder.txt | 0 4 files changed, 9 insertions(+), 47 deletions(-) rename src/aondor/resources/assets/{ => aondor}/textures/icon/aondor/placeholder.txt (100%) delete mode 100644 src/cosmeretools/java/leaf/cosmere/tools/client/ToolsModClientEvents.java create mode 100644 src/cosmeretools/resources/assets/cosmeretools/atlases/icons.json rename src/{awakening/resources/assets/textures/icon/awakening => cosmeretools/resources/assets/cosmeretools/textures/icon/cosmeretools}/placeholder.txt (100%) diff --git a/src/aondor/resources/assets/textures/icon/aondor/placeholder.txt b/src/aondor/resources/assets/aondor/textures/icon/aondor/placeholder.txt similarity index 100% rename from src/aondor/resources/assets/textures/icon/aondor/placeholder.txt rename to src/aondor/resources/assets/aondor/textures/icon/aondor/placeholder.txt diff --git a/src/cosmeretools/java/leaf/cosmere/tools/client/ToolsModClientEvents.java b/src/cosmeretools/java/leaf/cosmere/tools/client/ToolsModClientEvents.java deleted file mode 100644 index 876dd47e5..000000000 --- a/src/cosmeretools/java/leaf/cosmere/tools/client/ToolsModClientEvents.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * File updated ~ 22 - 3 - 2024 ~ Leaf - */ - -package leaf.cosmere.tools.client; - -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.tools.client.render.ToolsRenderers; -import leaf.cosmere.tools.common.CosmereTools; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import net.minecraftforge.fml.common.Mod; -import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; - -@Mod.EventBusSubscriber(modid = CosmereTools.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class ToolsModClientEvents -{ - @SubscribeEvent - public static void init(final FMLClientSetupEvent event) - { - ToolsRenderers.register(); - CosmereAPI.logger.info("Cosmere Tools mod client setup complete!"); - } - - @SubscribeEvent - public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) - { - } - - - //special thank you to the chisels and bits team who have an tools of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(CosmereTools.rl("icon/tools")); - } -} diff --git a/src/cosmeretools/resources/assets/cosmeretools/atlases/icons.json b/src/cosmeretools/resources/assets/cosmeretools/atlases/icons.json new file mode 100644 index 000000000..f21860a70 --- /dev/null +++ b/src/cosmeretools/resources/assets/cosmeretools/atlases/icons.json @@ -0,0 +1,9 @@ +{ + "sources": [ + { + "type": "directory", + "source": "icon/cosmeretools", + "prefix": "" + } + ] +} \ No newline at end of file diff --git a/src/awakening/resources/assets/textures/icon/awakening/placeholder.txt b/src/cosmeretools/resources/assets/cosmeretools/textures/icon/cosmeretools/placeholder.txt similarity index 100% rename from src/awakening/resources/assets/textures/icon/awakening/placeholder.txt rename to src/cosmeretools/resources/assets/cosmeretools/textures/icon/cosmeretools/placeholder.txt From 725be8f747e4ecf838db64c6e7fd674882092ec7 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 30 Jul 2024 19:11:05 +0200 Subject: [PATCH 0866/1090] [Port] Ported cosmere tools Without creative tabs, hard to figure out when it doesn't build --- .../tools/common/items/TArmorItem.java | 2 +- .../tools/common/items/ToolsItemGroups.java | 18 ++++++------- .../tools/common/registries/ToolsItems.java | 27 ++++++++++--------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/items/TArmorItem.java b/src/cosmeretools/java/leaf/cosmere/tools/common/items/TArmorItem.java index 8a8f5460e..aa0f2c5b9 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/items/TArmorItem.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/items/TArmorItem.java @@ -21,7 +21,7 @@ public class TArmorItem extends ArmorItem implements IHasMetalType, DyeableLeath { Metals.MetalType metalType; - public TArmorItem(Metals.MetalType metalType, EquipmentSlot pSlot, Properties pProperties) + public TArmorItem(Metals.MetalType metalType, Type pSlot, Properties pProperties) { super(metalType, pSlot, pProperties); this.metalType = metalType; diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java b/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java index ca8bfbd6a..f76f8677f 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java @@ -4,25 +4,25 @@ package leaf.cosmere.tools.common.items; +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.common.Cosmere; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsItems; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.registries.DeferredRegister; import java.util.function.Supplier; public class ToolsItemGroups { - public static final Supplier TOOL = () -> new Item.Properties().tab(ToolsItemGroups.TOOLS_TAB).stacksTo(1); + public static final Supplier TOOL = () -> new Item.Properties(); - public static CreativeModeTab TOOLS_TAB = new CreativeModeTab(CosmereTools.MODID + ".tools") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(ToolsItems.METAL_PICKAXES.entrySet().stream().findAny().get().getValue().get()); - } - }; + public static CreativeModeTab TOOLS_TAB = CreativeModeTab.builder() + .icon(() -> new ItemStack(ToolsItems.METAL_PICKAXES.entrySet().stream().findAny().get().getValue().get())) + // todo: populate with .displayItems() + .build(); } diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java index f19755a90..46db60bf2 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java @@ -10,6 +10,7 @@ import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.items.*; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import java.util.Arrays; @@ -33,7 +34,7 @@ public class ToolsItems type, 1, -2.8F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB) + ToolsItemGroups.TOOL.get().rarity(type.getRarity()) ) ))); @@ -49,7 +50,7 @@ public class ToolsItems type, 5, -3.1F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB) + ToolsItemGroups.TOOL.get().rarity(type.getRarity()) ) ))); @@ -65,7 +66,7 @@ public class ToolsItems type, 1.5f, -3.0F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB) + ToolsItemGroups.TOOL.get().rarity(type.getRarity()) ) ))); @@ -81,7 +82,7 @@ public class ToolsItems type, 0, -3.0F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB) + ToolsItemGroups.TOOL.get().rarity(type.getRarity()) ) ))); @@ -97,7 +98,7 @@ public class ToolsItems type, 3, -2.4F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB) + ToolsItemGroups.TOOL.get().rarity(type.getRarity()) ) ))); @@ -109,8 +110,8 @@ public class ToolsItems Function.identity(), type -> ITEMS.register( type.getName() + "_helmet", - () -> new TArmorItem(type, EquipmentSlot.HEAD, (new Item.Properties()).rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB)) - ))); + () -> new TArmorItem(type, ArmorItem.Type.HELMET, (new Item.Properties()).rarity(type.getRarity()) + )))); public static final Map> METAL_CHESTPLATES = @@ -120,8 +121,8 @@ public class ToolsItems Function.identity(), type -> ITEMS.register( type.getName() + "_chestplate", - () -> new TArmorItem(type, EquipmentSlot.CHEST, (new Item.Properties()).rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB)) - ))); + () -> new TArmorItem(type, ArmorItem.Type.CHESTPLATE, (new Item.Properties()).rarity(type.getRarity()) + )))); public static final Map> METAL_LEGGINGS = @@ -131,8 +132,8 @@ public class ToolsItems Function.identity(), type -> ITEMS.register( type.getName() + "_leggings", - () -> new TArmorItem(type, EquipmentSlot.LEGS, (new Item.Properties()).rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB)) - ))); + () -> new TArmorItem(type, ArmorItem.Type.LEGGINGS, (new Item.Properties()).rarity(type.getRarity()) + )))); public static final Map> METAL_BOOTS = @@ -142,8 +143,8 @@ public class ToolsItems Function.identity(), type -> ITEMS.register( type.getName() + "_boots", - () -> new TArmorItem(type, EquipmentSlot.FEET, (new Item.Properties()).rarity(type.getRarity()).tab(ToolsItemGroups.TOOLS_TAB)) - ))); + () -> new TArmorItem(type, ArmorItem.Type.BOOTS, (new Item.Properties()).rarity(type.getRarity()) + )))); } From 73fb1ea82a4efabd62af98984e566055af537df9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 9 Aug 2024 08:02:19 +1200 Subject: [PATCH 0867/1090] [Port] A big chunk of files across all mods. Data generation is currently the main remaining erroring files. --- .../AllomancyModClientEvents.java | 34 ++- .../manifestation/AllomancyIronSteel.java | 79 ++++--- .../cosmere/api/helpers/RegistryHelper.java | 129 +++++++++++ .../api/helpers/ResourceLocationHelper.java | 38 --- .../allomancy/AllomancyDataGenerator.java | 4 +- .../allomancy/AllomancyEngLangGen.java | 4 +- .../allomancy/AllomancyItemModelsGen.java | 4 +- .../advancements/AllomancyAdvancementGen.java | 84 ------- .../advancements/AllomancyAdvancements.java | 80 ------- .../cosmere/aondor/AonDorDataGenerator.java | 4 +- .../leaf/cosmere/aondor/AonDorEngLangGen.java | 4 +- .../cosmere/aondor/AonDorItemModelsGen.java | 4 +- .../advancements/AonDorAdvancementGen.java | 84 ------- .../advancements/AonDorAdvancements.java | 37 --- .../cosmere/aviar/AviarDataGenerator.java | 4 +- .../leaf/cosmere/aviar/AviarEngLangGen.java | 4 +- .../advancements/AviarAdvancementGen.java | 84 ------- .../aviar/advancements/AviarAdvancements.java | 37 --- .../aviar/items/AviarItemModelsGen.java | 4 +- .../awakening/AwakeningDataGenerator.java | 4 +- .../awakening/AwakeningEngLangGen.java | 4 +- .../awakening/AwakeningItemModelsGen.java | 4 +- .../advancements/AwakeningAdvancementGen.java | 84 ------- .../advancements/AwakeningAdvancements.java | 37 --- .../cosmere/tools/ToolsDataGenerator.java | 4 +- .../leaf/cosmere/tools/ToolsEngLangGen.java | 4 +- .../cosmere/tools/ToolsItemModelsGen.java | 4 +- .../advancements/ToolsAdvancementGen.java | 84 ------- .../tools/advancements/ToolsAdvancements.java | 37 --- .../cosmere/example/ExampleDataGenerator.java | 4 +- .../cosmere/example/ExampleEngLangGen.java | 4 +- .../cosmere/example/ExampleItemModelsGen.java | 4 +- .../advancements/ExampleAdvancementGen.java | 84 ------- .../advancements/ExampleAdvancements.java | 37 --- .../feruchemy/FeruchemyDataGenerator.java | 4 +- .../feruchemy/FeruchemyEngLangGen.java | 4 +- .../advancements/FeruchemyAdvancementGen.java | 84 ------- .../advancements/FeruchemyAdvancements.java | 81 ------- .../hemalurgy/HemalurgyDataGenerator.java | 4 +- .../hemalurgy/HemalurgyEngLangGen.java | 4 +- .../hemalurgy/HemalurgyItemModelsGen.java | 4 +- .../advancements/HemalurgyAdvancementGen.java | 84 ------- .../advancements/HemalurgyAdvancements.java | 47 ---- .../java/leaf/cosmere/BaseRecipeProvider.java | 8 +- .../leaf/cosmere/CosmereDataGenerator.java | 22 +- .../main/java/leaf/cosmere/EngLangGen.java | 6 +- .../leaf/cosmere/biome/BiomeModifierGen.java | 27 +-- .../leaf/cosmere/biome/BiomeTagsProvider.java | 13 +- .../leaf/cosmere/blocks/BlockModelsGen.java | 12 +- .../leaf/cosmere/items/ItemModelsGen.java | 12 +- .../loottables/BaseBlockLootTables.java | 216 ++++++++++++++++++ .../loottables/BaseEntityLootTables.java | 48 ++++ .../cosmere/loottables/BaseLootProvider.java | 27 +++ .../cosmere/loottables/BlockLootTableGen.java | 13 +- .../loottables/EntityLootTableGen.java | 14 ++ .../leaf/cosmere/loottables/LootTableGen.java | 38 +-- .../leaf/cosmere/patchouli/PatchouliGen.java | 8 +- .../patchouli/data/PatchouliProvider.java | 12 +- .../leaf/cosmere/tag/BaseTagProvider.java | 189 ++++++++------- .../leaf/cosmere/tag/CosmereTagBuilder.java | 134 +++++++++++ .../leaf/cosmere/tag/CosmereTagProvider.java | 12 +- .../tag/IntrinsicCosmereTagBuilder.java | 60 +++++ .../main/java/leaf/cosmere/tag/TagType.java | 34 --- .../sandmastery/SandmasteryEngLangGen.java | 4 +- .../items/SandmasteryItemModelsGen.java | 14 +- .../soulforgery/SoulforgeryDataGenerator.java | 4 +- .../soulforgery/SoulforgeryEngLangGen.java | 4 +- .../soulforgery/SoulforgeryItemModelsGen.java | 4 +- .../SoulforgeryAdvancementGen.java | 84 ------- .../advancements/SoulforgeryAdvancements.java | 37 --- .../SurgebindingBlockModelsGen.java | 7 +- .../surgebinding/SurgebindingEngLangGen.java | 4 +- .../SurgebindingItemModelsGen.java | 4 +- .../biome/SurgebindingBiomeTagsProvider.java | 5 +- .../loottables/SurgebindingLootTableGen.java | 4 +- .../client/ExampleModClientEvents.java | 8 +- .../client/FeruchemyClientSetup.java | 11 +- .../renderer/KolossItemInHandLayer.java | 51 ----- .../render/renderer/KolossLargeRenderer.java | 8 +- .../render/renderer/KolossMediumRenderer.java | 8 +- .../render/renderer/KolossSmallRenderer.java | 8 +- .../common/registry/FeatureRegistry.java | 101 ++++---- ...p.java => SandmasteryModClientEvents.java} | 20 +- .../client/SoulforgeryModClientEvents.java | 18 +- .../surgebinding/client/HUDHandler.java | 24 +- .../client/SurgebindingModClientEvents.java | 13 +- 86 files changed, 1026 insertions(+), 1761 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/helpers/RegistryHelper.java delete mode 100644 src/api/java/leaf/cosmere/api/helpers/ResourceLocationHelper.java delete mode 100644 src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancementGen.java delete mode 100644 src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancements.java delete mode 100644 src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancementGen.java delete mode 100644 src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancements.java delete mode 100644 src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancementGen.java delete mode 100644 src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancements.java delete mode 100644 src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancementGen.java delete mode 100644 src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancements.java delete mode 100644 src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancementGen.java delete mode 100644 src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancements.java delete mode 100644 src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancementGen.java delete mode 100644 src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancements.java delete mode 100644 src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancementGen.java delete mode 100644 src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancements.java delete mode 100644 src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancementGen.java delete mode 100644 src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancements.java create mode 100644 src/datagen/main/java/leaf/cosmere/loottables/BaseBlockLootTables.java create mode 100644 src/datagen/main/java/leaf/cosmere/loottables/BaseEntityLootTables.java create mode 100644 src/datagen/main/java/leaf/cosmere/loottables/BaseLootProvider.java create mode 100644 src/datagen/main/java/leaf/cosmere/loottables/EntityLootTableGen.java create mode 100644 src/datagen/main/java/leaf/cosmere/tag/CosmereTagBuilder.java create mode 100644 src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java delete mode 100644 src/datagen/main/java/leaf/cosmere/tag/TagType.java delete mode 100644 src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancementGen.java delete mode 100644 src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancements.java delete mode 100644 src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossItemInHandLayer.java rename src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/{SandmasteryClientSetup.java => SandmasteryModClientEvents.java} (83%) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java index ac50d025a..fb5029df5 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.client.eventHandlers; @@ -13,25 +13,18 @@ import leaf.cosmere.allomancy.common.registries.AllomancyEntityTypes; import leaf.cosmere.allomancy.common.registries.AllomancyMenuTypes; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Metals; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.renderer.entity.ThrownItemRenderer; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.core.Registry; import net.minecraft.core.registries.Registries; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.registries.RegisterEvent; -import java.util.Locale; - @Mod.EventBusSubscriber(modid = Allomancy.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class AllomancyModClientEvents { @@ -65,4 +58,29 @@ public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefini //shardplate evt.registerLayerDefinition(AllomancyLayerDefinitions.MISTCLOAK, MistcloakModel::createBodyLayer); } + + /* todo - re setup power icon registration + //special thank you to the chisels and bits team who have an example of how to register other sprites + @SubscribeEvent + public static void registerIconTextures(TextureStitchEvent.Pre event) + { + final TextureAtlas map = event.getAtlas(); + if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) + { + return; + } + + event.addSprite(Allomancy.rl("icon/allomancy")); + + for (final Metals.MetalType metalType : Metals.MetalType.values()) + { + if (!metalType.hasAssociatedManifestation()) + { + continue; + } + + String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); + event.addSprite(Allomancy.rl("icon/allomancy/" + metalToLower)); + } + }*/ } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index f7fe420ab..b095eeae4 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -4,7 +4,6 @@ package leaf.cosmere.allomancy.common.manifestation; -import joptsimple.util.KeyValuePair; import leaf.cosmere.allomancy.client.metalScanning.IronSteelLinesThread; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.entities.CoinProjectile; @@ -13,7 +12,7 @@ import leaf.cosmere.api.CosmereTags; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.CodecHelper; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.math.VectorHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; @@ -472,7 +471,7 @@ public static boolean containsMetal(Item item) { return false; } - return s_whiteList.contains(ResourceLocationHelper.get(item).getPath()); + return s_whiteList.contains(RegistryHelper.get(item).getPath()); } @@ -486,7 +485,7 @@ public static boolean containsMetal(Block block) { return false; } - return s_whiteList.contains(ResourceLocationHelper.get(block).getPath()); + return s_whiteList.contains(RegistryHelper.get(block).getPath()); } public static boolean containsMetal(Entity entity) @@ -499,7 +498,7 @@ public static boolean containsMetal(Entity entity) { return false; } - return s_whiteList.contains(ResourceLocationHelper.get(entity).getPath()); + return s_whiteList.contains(RegistryHelper.get(entity).getPath()); } public static void invalidateWhitelist() @@ -520,38 +519,38 @@ private static void createWhitelist(Entity entity) { // would have used Items here, but it's ridiculously hard to get item IDs for blocks for no reason s_blackList = new HashSet<>(); - s_blackList.add(ResourceLocationHelper.get(Blocks.AIR).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.WATER).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.LAVA).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.GRASS_BLOCK).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.FARMLAND).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.GLASS).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.GLASS_PANE).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.BLACK_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.BROWN_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.BLUE_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.RED_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.CYAN_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.GRAY_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.GREEN_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.LIGHT_BLUE_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.LIGHT_GRAY_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.LIME_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.MAGENTA_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.ORANGE_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.PINK_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.PURPLE_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.WHITE_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.YELLOW_BED).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.TORCH).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.SHULKER_BOX).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.ICE).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.BLUE_ICE).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.FROSTED_ICE).getPath()); - s_blackList.add(ResourceLocationHelper.get(Blocks.PACKED_ICE).getPath()); - s_blackList.add(ResourceLocationHelper.get(Items.DIAMOND).getPath()); - s_blackList.add(ResourceLocationHelper.get(Items.EMERALD).getPath()); - s_blackList.add(ResourceLocationHelper.get(Items.AIR).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.AIR).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.WATER).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.LAVA).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.GRASS_BLOCK).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.FARMLAND).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.GLASS).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.GLASS_PANE).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.BLACK_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.BROWN_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.BLUE_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.RED_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.CYAN_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.GRAY_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.GREEN_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.LIGHT_BLUE_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.LIGHT_GRAY_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.LIME_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.MAGENTA_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.ORANGE_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.PINK_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.PURPLE_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.WHITE_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.YELLOW_BED).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.TORCH).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.SHULKER_BOX).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.ICE).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.BLUE_ICE).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.FROSTED_ICE).getPath()); + s_blackList.add(RegistryHelper.get(Blocks.PACKED_ICE).getPath()); + s_blackList.add(RegistryHelper.get(Items.DIAMOND).getPath()); + s_blackList.add(RegistryHelper.get(Items.EMERALD).getPath()); + s_blackList.add(RegistryHelper.get(Items.AIR).getPath()); s_blackList.add("philosophers_stone");//problem child } for (var itemInList : s_blackList) @@ -573,7 +572,7 @@ private static void createWhitelist(Entity entity) //if it says result item is never null, ignore it, //we have one confirmed bug report that it _can_ be null // https://github.com/leafreynolds/cosmere/issues/58 - if (resultItem == null || resultItem.isEmpty() || s_blackList.contains(ResourceLocationHelper.get(resultItem.getItem()).getPath())) + if (resultItem == null || resultItem.isEmpty() || s_blackList.contains(RegistryHelper.get(resultItem.getItem()).getPath())) { continue; } @@ -595,7 +594,7 @@ public static void CheckRecipeForMetal(TagKey containsMetal, Recipe rec for (ItemStack ingredientStack : ingredient.getItems()) { final Item ingredientItem = ingredientStack.getItem(); - final ResourceLocation ingredientItemRL = ResourceLocationHelper.get(ingredientItem); + final ResourceLocation ingredientItemRL = RegistryHelper.get(ingredientItem); if (s_blackList.contains(ingredientItemRL.getPath())) { continue; @@ -605,7 +604,7 @@ public static void CheckRecipeForMetal(TagKey containsMetal, Recipe rec { //found one final Item resultItem = resultItemStack.getItem(); - final ResourceLocation resultItemRL = ResourceLocationHelper.get(resultItem); + final ResourceLocation resultItemRL = RegistryHelper.get(resultItem); // final Holder.Reference itemReference = resultItem.builtInRegistryHolder(); // List> allTags = itemReference.tags().collect(Collectors.toList()); // allTags.add(CosmereTags.Items.CONTAINS_METAL); diff --git a/src/api/java/leaf/cosmere/api/helpers/RegistryHelper.java b/src/api/java/leaf/cosmere/api/helpers/RegistryHelper.java new file mode 100644 index 000000000..c137f4fd4 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/helpers/RegistryHelper.java @@ -0,0 +1,129 @@ +/* + * File updated ~ 8 - 10 - 2022 ~ Leaf + */ + +package leaf.cosmere.api.helpers; + +import net.minecraft.core.Registry; +import net.minecraft.core.particles.ParticleType; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.entity.BlockEntityType; +import net.minecraft.world.level.material.Fluid; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + + +public class RegistryHelper +{ + private RegistryHelper() + { + + } + + public static ResourceLocation get(Item item) + { + return ForgeRegistries.ITEMS.getKey(item); + } + + public static ResourceLocation get(Entity entity) + { + return ForgeRegistries.ENTITY_TYPES.getKey(entity.getType()); + } + + public static ResourceLocation get(Block block) + { + return ForgeRegistries.BLOCKS.getKey(block); + } + + public static ResourceLocation get(EntityType test) + { + return ForgeRegistries.ENTITY_TYPES.getKey(test); + } + + public static ResourceLocation getName(MenuType element) + { + return getName(ForgeRegistries.MENU_TYPES, element); + } + + public static ResourceLocation getName(ParticleType element) + { + return getName(ForgeRegistries.PARTICLE_TYPES, element); + } + + public static ResourceLocation getName(Item element) + { + return getName(ForgeRegistries.ITEMS, element); + } + + public static String getPath(Item element) + { + return getName(element).getPath(); + } + + public static ResourceLocation getName(Block element) + { + return getName(ForgeRegistries.BLOCKS, element); + } + + public static String getNamespace(Block element) + { + return getName(element).getNamespace(); + } + + public static String getPath(Block element) + { + return getName(element).getPath(); + } + + public static ResourceLocation getName(Fluid element) + { + return getName(ForgeRegistries.FLUIDS, element); + } + + public static ResourceLocation getName(BlockEntityType element) + { + return getName(ForgeRegistries.BLOCK_ENTITY_TYPES, element); + } + + public static ResourceLocation getName(EntityType element) + { + return getName(ForgeRegistries.ENTITY_TYPES, element); + } + + public static ResourceLocation getName(RecipeSerializer element) + { + return getName(ForgeRegistries.RECIPE_SERIALIZERS, element); + } + + private static ResourceLocation getName(IForgeRegistry registry, T element) + { + return registry.getKey(element); + } + + @Nullable + @SuppressWarnings({"unchecked", "rawtypes"}) + public static ResourceLocation getNameGeneric(Object element) + { + for (Registry registry : BuiltInRegistries.REGISTRY) + { + //Note: We have to use getResourceKey as getKey for defaulted registries returns the default key + Optional> resourceKey = ((Registry) registry).getResourceKey(element); + if (resourceKey.isPresent()) + { + return resourceKey.get().location(); + } + } + return null; + } +} diff --git a/src/api/java/leaf/cosmere/api/helpers/ResourceLocationHelper.java b/src/api/java/leaf/cosmere/api/helpers/ResourceLocationHelper.java deleted file mode 100644 index bc39318bc..000000000 --- a/src/api/java/leaf/cosmere/api/helpers/ResourceLocationHelper.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.api.helpers; - -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.registries.ForgeRegistries; - - -public class ResourceLocationHelper -{ - public static ResourceLocation get(Item item) - { - return ForgeRegistries.ITEMS.getKey(item); - } - - - public static ResourceLocation get(Entity entity) - { - return ForgeRegistries.ENTITY_TYPES.getKey(entity.getType()); - } - - - public static ResourceLocation get(Block block) - { - return ForgeRegistries.BLOCKS.getKey(block); - } - - public static ResourceLocation get(EntityType test) - { - return ForgeRegistries.ENTITY_TYPES.getKey(test); - } -} diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java index 19a522dd7..51661fa15 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; -import leaf.cosmere.allomancy.advancements.AllomancyAdvancementGen; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.patchouli.AllomancyPatchouliGen; import net.minecraft.data.DataGenerator; @@ -29,7 +28,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AllomancyItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new AllomancyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AllomancyPatchouliGen(generator)); - generator.addProvider(true, new AllomancyAdvancementGen(generator)); generator.addProvider(true, new AllomancyTagProvider(generator, existingFileHelper)); } diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index 7611267c8..036758e02 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -12,7 +12,7 @@ import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.ICosmereEffectProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; @@ -67,7 +67,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Allomancy.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java index e25733889..5245c2132 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java @@ -6,7 +6,7 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.registries.AllomancyItems; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; @@ -49,7 +49,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancementGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancementGen.java deleted file mode 100644 index 8853c4b02..000000000 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.allomancy.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class AllomancyAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new AllomancyAdvancements() - ); - - public AllomancyAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/allomancy/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Allomancy Advancements"; - } -} diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancements.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancements.java deleted file mode 100644 index 896b7f2fb..000000000 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/advancements/AllomancyAdvancements.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * File updated ~ 24 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.allomancy.advancements; - -import leaf.cosmere.allomancy.common.manifestation.AllomancyManifestation; -import leaf.cosmere.allomancy.common.registries.AllomancyItems; -import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.api.Metals; -import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementRewards; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.commands.CommandFunction; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; - -import java.util.function.Consumer; - -public class AllomancyAdvancements implements Consumer> -{ - public AllomancyAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "allomancy"; - - final String titleFormat = "advancements.allomancy.%s.title"; - final String descriptionFormat = "advancements.allomancy.%s.description"; - final String achievementPathFormat = "allomancy:%s/%s"; - - Advancement root = Advancement.Builder.advancement() - .display(AllomancyItems.METAL_VIAL.get(), - Component.translatable(String.format(titleFormat, tabName)), - Component.translatable(String.format(descriptionFormat, tabName)), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false,//showToast - false,//announceChat - false)//hidden - .addCriterion("tick", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.ANY)) - .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - - - for (ManifestationRegistryObject manifestation : AllomancyManifestations.ALLOMANCY_POWERS.values()) - { - AllomancyManifestation allomancyManifestation = (AllomancyManifestation) manifestation.get(); - - Metals.MetalType metalType = allomancyManifestation.getMetalType(); - String metalName = metalType.getName(); - - final Item item = metalType.getNugget(); - final ItemPredicate itemPredicate = ItemPredicate.Builder.item().of(CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType)).build(); - Advancement advancement1 = Advancement.Builder.advancement() - .parent(root) - .display( - item, - Component.translatable(String.format(titleFormat, (tabName + "." + metalName))), - Component.translatable(String.format(descriptionFormat, tabName + "." + metalName)), - (ResourceLocation) null, - FrameType.TASK, - true, //showToast - false, //announce - false)//hidden - .addCriterion("has_item", InventoryChangeTrigger.TriggerInstance.hasItems(itemPredicate)) - .rewards(new AdvancementRewards(50, new ResourceLocation[0], new ResourceLocation[0], CommandFunction.CacheableFunction.NONE)) - .save(advancementConsumer, String.format(achievementPathFormat, tabName, metalName)); - - } - - - } -} \ No newline at end of file diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java index db476a32b..b88ef4f5a 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.aondor; -import leaf.cosmere.aondor.advancements.AonDorAdvancementGen; import leaf.cosmere.aondor.common.AonDor; import leaf.cosmere.aondor.loottables.AonDorLootTableGen; import leaf.cosmere.aondor.patchouli.AonDorPatchouliGen; @@ -32,7 +31,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AonDorItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new AonDorRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AonDorPatchouliGen(generator)); - generator.addProvider(true, new AonDorAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java index da384ed1b..2da4be9a9 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java @@ -6,7 +6,7 @@ import leaf.cosmere.aondor.common.AonDor; import leaf.cosmere.aondor.common.registries.AonDorEntityTypes; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import net.minecraft.data.PackOutput; @@ -49,7 +49,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(AonDor.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java index eb0172092..8bbe710ef 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java @@ -6,7 +6,7 @@ import leaf.cosmere.aondor.common.AonDor; import leaf.cosmere.aondor.common.registries.AonDorItems; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceLocation; @@ -61,7 +61,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancementGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancementGen.java deleted file mode 100644 index 73350449b..000000000 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aondor.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class AonDorAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new AonDorAdvancements() - ); - - public AonDorAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/aondor/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "AonDor Advancements"; - } -} diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancements.java b/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancements.java deleted file mode 100644 index 3959889e4..000000000 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/advancements/AonDorAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aondor.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class AonDorAdvancements implements Consumer> -{ - public AonDorAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "aondor"; - - final String titleFormat = "advancements.aondor.%s.title"; - final String descriptionFormat = "advancements.aondor.%s.description"; - final String achievementPathFormat = "aondor:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(AonDorItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(AonDorItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java index 148eafa80..cf9082248 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.aviar; -import leaf.cosmere.aviar.advancements.AviarAdvancementGen; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.aviar.items.AviarItemModelsGen; import leaf.cosmere.aviar.loottables.AviarLootTableGen; @@ -33,7 +32,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AviarItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new AviarRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AviarPatchouliGen(generator)); - generator.addProvider(true, new AviarAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java index 829488170..492029db8 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.aviar; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.aviar.common.Aviar; @@ -49,7 +49,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Aviar.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancementGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancementGen.java deleted file mode 100644 index 8f0af8acb..000000000 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 19 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aviar.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class AviarAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new AviarAdvancements() - ); - - public AviarAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/aviar/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Aviar Advancements"; - } -} diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancements.java b/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancements.java deleted file mode 100644 index 99d33d8b1..000000000 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/advancements/AviarAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 19 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aviar.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class AviarAdvancements implements Consumer> -{ - public AviarAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "aviar"; - - final String titleFormat = "advancements.aviar.%s.title"; - final String descriptionFormat = "advancements.aviar.%s.description"; - final String achievementPathFormat = "aviar:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(AviarItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(AviarItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java index 256d1b61d..978a00575 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.aviar.items; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.aviar.common.registries.AviarItems; @@ -50,7 +50,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java index 0ab643677..ef63ae054 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.awakening; -import leaf.cosmere.awakening.advancements.AwakeningAdvancementGen; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.awakening.loottables.AwakeningLootTableGen; import leaf.cosmere.awakening.patchouli.AwakeningPatchouliGen; @@ -32,7 +31,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AwakeningItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new AwakeningRecipeGen(output, existingFileHelper)); generator.addProvider(true, new AwakeningPatchouliGen(generator)); - generator.addProvider(true, new AwakeningAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java index 7b9790324..7d735829c 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.awakening; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.awakening.common.Awakening; @@ -49,7 +49,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Awakening.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java index 75c6b31b3..7a6a7246a 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.awakening; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.awakening.common.registries.AwakeningItems; @@ -61,7 +61,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancementGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancementGen.java deleted file mode 100644 index 67aec82f1..000000000 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.awakening.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class AwakeningAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new AwakeningAdvancements() - ); - - public AwakeningAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/awakening/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Awakening Advancements"; - } -} diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancements.java b/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancements.java deleted file mode 100644 index a0359e05c..000000000 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/advancements/AwakeningAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.awakening.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class AwakeningAdvancements implements Consumer> -{ - public AwakeningAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "awakening"; - - final String titleFormat = "advancements.awakening.%s.title"; - final String descriptionFormat = "advancements.awakening.%s.description"; - final String achievementPathFormat = "awakening:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(AwakeningItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(AwakeningItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java index 695c99376..38d3a0a62 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.tools; -import leaf.cosmere.tools.advancements.ToolsAdvancementGen; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.loottables.ToolsLootTableGen; import leaf.cosmere.tools.patchouli.ToolsPatchouliGen; @@ -32,7 +31,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new ToolsItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new ToolsRecipeGen(output, existingFileHelper)); generator.addProvider(true, new ToolsPatchouliGen(generator)); - generator.addProvider(true, new ToolsAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java index 9d77e91d8..4c0796a4b 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.tools; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.tools.common.CosmereTools; @@ -48,7 +48,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(CosmereTools.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java index c123876d8..8bb120ee2 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.tools; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsItems; @@ -95,7 +95,7 @@ else if (path.contains("boots")) public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancementGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancementGen.java deleted file mode 100644 index 090df339e..000000000 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 22 - 3 - 2024 ~ Leaf - */ - -package leaf.cosmere.tools.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class ToolsAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new ToolsAdvancements() - ); - - public ToolsAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/tools/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Tools Advancements"; - } -} diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancements.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancements.java deleted file mode 100644 index 4a8e992a1..000000000 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/advancements/ToolsAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 22 - 3 - 2024 ~ Leaf - */ - -package leaf.cosmere.tools.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class ToolsAdvancements implements Consumer> -{ - public ToolsAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "tools"; - - final String titleFormat = "advancements.tools.%s.title"; - final String descriptionFormat = "advancements.tools.%s.description"; - final String achievementPathFormat = "tools:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(ToolsItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ToolsItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java index 95ffbd832..d1d51bd36 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.example; -import leaf.cosmere.example.advancements.ExampleAdvancementGen; import leaf.cosmere.example.common.Example; import leaf.cosmere.example.loottables.ExampleLootTableGen; import leaf.cosmere.example.patchouli.ExamplePatchouliGen; @@ -32,7 +31,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new ExampleItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new ExampleRecipeGen(output, existingFileHelper)); generator.addProvider(true, new ExamplePatchouliGen(generator)); - generator.addProvider(true, new ExampleAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java index 02cfda683..be514f9e7 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.example; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.example.common.Example; @@ -49,7 +49,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Example.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java index 8bd5dddab..a65ff0e62 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.example; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.example.common.Example; import leaf.cosmere.example.common.registries.ExampleItems; @@ -61,7 +61,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancementGen.java b/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancementGen.java deleted file mode 100644 index 5b89bdc02..000000000 --- a/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 19 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.example.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class ExampleAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new ExampleAdvancements() - ); - - public ExampleAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/example/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Example Advancements"; - } -} diff --git a/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancements.java b/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancements.java deleted file mode 100644 index d5d3cbc92..000000000 --- a/src/datagen/example/java/leaf/cosmere/example/advancements/ExampleAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 19 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.example.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class ExampleAdvancements implements Consumer> -{ - public ExampleAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "example"; - - final String titleFormat = "advancements.example.%s.title"; - final String descriptionFormat = "advancements.example.%s.description"; - final String achievementPathFormat = "example:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(ExampleItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(ExampleItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java index 65ecfe998..5d8dbdd37 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; -import leaf.cosmere.feruchemy.advancements.FeruchemyAdvancementGen; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.patchouli.FeruchemyPatchouliGen; import net.minecraft.data.DataGenerator; @@ -30,7 +29,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new FeruchemyTagProvider(generator, existingFileHelper)); generator.addProvider(true, new FeruchemyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new FeruchemyPatchouliGen(generator)); - generator.addProvider(true, new FeruchemyAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index cc4765949..25c432ea9 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -7,7 +7,7 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.ICosmereEffectProvider; @@ -63,7 +63,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Feruchemy.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancementGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancementGen.java deleted file mode 100644 index 37a5c95b5..000000000 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.feruchemy.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class FeruchemyAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new FeruchemyAdvancements() - ); - - public FeruchemyAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/feruchemy/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Cosmere Advancements"; - } -} diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancements.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancements.java deleted file mode 100644 index 2795edef6..000000000 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/advancements/FeruchemyAdvancements.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * File updated ~ 4 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.feruchemy.advancements; - -import leaf.cosmere.api.Metals; -import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; -import leaf.cosmere.feruchemy.common.manifestation.FeruchemyManifestation; -import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; -import leaf.cosmere.feruchemy.common.registries.FeruchemyManifestations; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.AdvancementRewards; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.commands.CommandFunction; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; - -import java.util.function.Consumer; - -public class FeruchemyAdvancements implements Consumer> -{ - public FeruchemyAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "feruchemy"; - - final String titleFormat = "advancements.feruchemy.%s.title"; - final String descriptionFormat = "advancements.feruchemy.%s.description"; - final String achievementPathFormat = "feruchemy:%s/%s"; - - Advancement root = Advancement.Builder.advancement() - .display(FeruchemyItems.METAL_RINGS.get(Metals.MetalType.IRON).get(), - Component.translatable(String.format(titleFormat, tabName)), - Component.translatable(String.format(descriptionFormat, tabName)), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false,//showToast - false,//announceChat - false)//hidden - .addCriterion("tick", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.ANY)) - .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - - - for (ManifestationRegistryObject manifestation : FeruchemyManifestations.FERUCHEMY_POWERS.values()) - { - FeruchemyManifestation feruchemyManifestation = manifestation.get(); - - Metals.MetalType metalType = feruchemyManifestation.getMetalType(); - String metalName = metalType.getName(); - - - final Item item = FeruchemyItems.METAL_RINGS.get(metalType).asItem(); - Advancement advancement1 = Advancement.Builder.advancement() - .parent(root) - .display( - item, - Component.translatable(String.format(titleFormat, tabName + "." + metalName)), - Component.translatable(String.format(descriptionFormat, tabName + "." + metalName)), - (ResourceLocation) null, - FrameType.TASK, - true, //showToast - false, //announce - false)//hidden - .addCriterion( - "has_item", - InventoryChangeTrigger.TriggerInstance.hasItems(item)) - .rewards(new AdvancementRewards(50, new ResourceLocation[0], new ResourceLocation[0], CommandFunction.CacheableFunction.NONE)) - .save(advancementConsumer, String.format(achievementPathFormat, tabName, metalName)); - - } - - - } -} \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java index e7eab84dc..3b83be461 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; -import leaf.cosmere.hemalurgy.advancements.HemalurgyAdvancementGen; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.patchouli.HemalurgyPatchouliGen; import net.minecraft.data.DataGenerator; @@ -30,7 +29,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new HemalurgyItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new HemalurgyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new HemalurgyPatchouliGen(generator)); - generator.addProvider(true, new HemalurgyAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index c26dc65c5..199f41143 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -6,7 +6,7 @@ import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.hemalurgy.common.Hemalurgy; @@ -53,7 +53,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Hemalurgy.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java index 8e044329f..fc1c1b3d8 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.hemalurgy; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; @@ -63,7 +63,7 @@ else if (item instanceof SwordItem) public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancementGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancementGen.java deleted file mode 100644 index 39099a792..000000000 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.hemalurgy.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class HemalurgyAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new HemalurgyAdvancements() - ); - - public HemalurgyAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/hemalurgy/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Hemalurgy Advancements"; - } -} diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancements.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancements.java deleted file mode 100644 index 544afb242..000000000 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/advancements/HemalurgyAdvancements.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * File updated ~ 24 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.hemalurgy.advancements; - -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.api.Metals; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.FrameType; -import net.minecraft.advancements.critereon.InventoryChangeTrigger; -import net.minecraft.advancements.critereon.ItemPredicate; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; - -import java.util.function.Consumer; - -public class HemalurgyAdvancements implements Consumer> -{ - public HemalurgyAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "hemalurgy"; - - final String titleFormat = "advancements.hemalurgy.%s.title"; - final String descriptionFormat = "advancements.hemalurgy.%s.description"; - final String achievementPathFormat = "hemalurgy:%s/%s"; - - Advancement root = Advancement.Builder.advancement() - .display(HemalurgyItems.METAL_SPIKE.get(Metals.MetalType.IRON).get(), - Component.translatable(String.format(titleFormat, tabName)), - Component.translatable(String.format(descriptionFormat, tabName)), - new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - FrameType.TASK, - false,//showToast - false,//announceChat - false)//hidden - .addCriterion("spike", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(CosmereTags.Items.METAL_SPIKE).build())) - .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - - - } -} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index a2f363c2c..4941eb343 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,7 +4,7 @@ package leaf.cosmere; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import net.minecraft.data.PackOutput; @@ -76,15 +76,15 @@ public static Ingredient difference(TagKey base, ItemLike subtracted) protected void addOreSmeltingRecipes(Consumer consumer, ItemLike ore, Item result, float experience, int time) { - String name = ResourceLocationHelper.get(result).getPath(); - String path = ResourceLocationHelper.get(ore.asItem()).getPath(); + String name = RegistryHelper.get(result).getPath(); + String path = RegistryHelper.get(ore.asItem()).getPath(); SimpleCookingRecipeBuilder.smelting(Ingredient.of(ore), RecipeCategory.MISC, result, experience, time).unlockedBy("has_ore", has(ore)).save(consumer, makeRL(name + "_from_smelting_" + path)); SimpleCookingRecipeBuilder.blasting(Ingredient.of(ore), RecipeCategory.MISC, result, experience, time / 2).unlockedBy("has_ore", has(ore)).save(consumer, makeRL(name + "_from_blasting_" + path)); } protected void addCookingRecipes(Consumer consumer, ItemLike inputItem, Item result, float experience, int time) { - String name = ResourceLocationHelper.get(result).getPath(); + String name = RegistryHelper.get(result).getPath(); SimpleCookingRecipeBuilder.smelting( Ingredient.of(inputItem), diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index 1bdb56dba..d7cf24a48 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere; @@ -33,23 +33,23 @@ public class CosmereDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new EngLangGen(output)); + generator.addProvider(true, new EngLangGen(packOutput)); - generator.addProvider(true, new ItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new BlockModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new LootTableGen(generator)); - generator.addProvider(true, new RecipeGen(output, existingFileHelper)); + generator.addProvider(true, new ItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new BlockModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new LootTableGen(packOutput)); + generator.addProvider(true, new RecipeGen(packOutput, existingFileHelper)); - generator.addProvider(true, new PatchouliGen(generator)); + generator.addProvider(true, new PatchouliGen(packOutput)); - generator.addProvider(true, new BiomeModifierGen(generator)); - generator.addProvider(true, new BiomeTagsProvider(generator, existingFileHelper)); + generator.addProvider(true, new BiomeModifierGen(packOutput)); + generator.addProvider(true, new BiomeTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new CosmereTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new CosmereTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); } diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 39439863e..e5eb76e7f 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -5,7 +5,7 @@ package leaf.cosmere; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.providers.IItemProvider; @@ -56,7 +56,7 @@ private void addItemsAndBlocks() for (IItemProvider item : ItemsRegistry.ITEMS.getAllItems()) { final Item currentItem = item.asItem(); - final ResourceLocation registryName = ResourceLocationHelper.get(currentItem); + final ResourceLocation registryName = RegistryHelper.get(currentItem); if (registryName.getNamespace().contentEquals(Cosmere.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); @@ -75,7 +75,7 @@ private void addItemsAndBlocks() for (IItemProvider item : BlocksRegistry.BLOCKS.getAllBlocks()) { final Item currentItem = item.asItem(); - final ResourceLocation registryName = ResourceLocationHelper.get(currentItem); + final ResourceLocation registryName = RegistryHelper.get(currentItem); String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); add(currentItem.getDescriptionId(), localisedString); } diff --git a/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java b/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java index 10e69b5a9..3250059a3 100644 --- a/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java +++ b/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.biome; @@ -16,10 +16,9 @@ import leaf.cosmere.common.world.MetalOreBiomeFeatureModifier; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; import net.minecraft.core.RegistryAccess; +import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; import net.minecraft.resources.RegistryOps; import net.minecraft.resources.ResourceLocation; @@ -32,11 +31,11 @@ import net.minecraftforge.registries.holdersets.OrHolderSet; import org.jetbrains.annotations.NotNull; -import java.io.IOException; import java.nio.file.Path; import java.util.Arrays; +import java.util.concurrent.CompletableFuture; -public record BiomeModifierGen(DataGenerator dataGenerator) implements DataProvider +public record BiomeModifierGen(net.minecraft.data.PackOutput dataGenerator) implements DataProvider { @Override public @NotNull String getName() @@ -50,17 +49,17 @@ private static HolderSet or(HolderSet... holders) } @Override - public void run(@NotNull CachedOutput cachedOutput) + public CompletableFuture run(@NotNull CachedOutput cachedOutput) { RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.BUILTIN.get()); final Path outputFolder = this.dataGenerator.getOutputFolder(); // Biome Modifiers final HolderSet.Named overworld = new HolderSet.Named<>( - ops.registry(Registry.BIOME_REGISTRY).get(), + ops.registry(Registries.BIOME).get(), BiomeTags.IS_OVERWORLD); final HolderSet.Named roshar = new HolderSet.Named<>( - ops.registry(Registry.BIOME_REGISTRY).get(), + ops.registry(Registries.BIOME).get(), CosmereTags.Biomes.IS_ROSHAR); for (Metals.MetalType type : Metals.MetalType.values()) @@ -84,6 +83,7 @@ public void run(@NotNull CachedOutput cachedOutput) cachedOutput); } + return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); } public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) @@ -97,15 +97,8 @@ public static void generate(RegistryOps ops, BiomeModifier modifier .resultOrPartial(msg -> CosmereAPI.logger.error("Failed to encode {}: {}", biomeModifierPathString, msg)) .ifPresent(json -> { - try - { - final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); - DataProvider.saveStable(cache, json, biomeModifierPath); - } - catch (IOException e) - { - CosmereAPI.logger.error("Failed to save " + biomeModifierPathString, e); - } + final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); + DataProvider.saveStable(cache, json, biomeModifierPath); }); } diff --git a/src/datagen/main/java/leaf/cosmere/biome/BiomeTagsProvider.java b/src/datagen/main/java/leaf/cosmere/biome/BiomeTagsProvider.java index 3e66ec781..e1df39013 100644 --- a/src/datagen/main/java/leaf/cosmere/biome/BiomeTagsProvider.java +++ b/src/datagen/main/java/leaf/cosmere/biome/BiomeTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.biome; @@ -7,21 +7,24 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.CosmereTags; import leaf.cosmere.common.registry.BiomeRegistry; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; import net.minecraftforge.common.data.ExistingFileHelper; +import java.util.concurrent.CompletableFuture; + public class BiomeTagsProvider extends net.minecraft.data.tags.BiomeTagsProvider { - public BiomeTagsProvider(DataGenerator arg, ExistingFileHelper existingFileHelper) + public BiomeTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, ExistingFileHelper existingFileHelper) { - super(arg, CosmereAPI.COSMERE_MODID, existingFileHelper); + super(packOutput, lookupProvider, CosmereAPI.COSMERE_MODID, existingFileHelper); } @Override - protected void addTags() + protected void addTags(HolderLookup.Provider pProvider) { tag(BiomeRegistry.SHADESMAR_BIOME_KEY, CosmereTags.Biomes.IS_SHADESMAR); } diff --git a/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java b/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java index 8ecdc9b36..75b9680f7 100644 --- a/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java @@ -1,17 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 6 - 8 - 2024 ~ Leaf */ package leaf.cosmere.blocks; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.blocks.MetalworkingTableBlock; import leaf.cosmere.common.registry.BlocksRegistry; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockStateProvider; @@ -22,9 +22,9 @@ public class BlockModelsGen extends BlockStateProvider { - public BlockModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public BlockModelsGen(PackOutput packOutput, ExistingFileHelper existingFileHelper) { - super(generator, Cosmere.MODID, existingFileHelper); + super(packOutput, Cosmere.MODID, existingFileHelper); } @Override @@ -61,7 +61,7 @@ else if (block instanceof MetalOreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. - final boolean deepslate = ResourceLocationHelper.get(block).getPath().contains("deepslate"); + final boolean deepslate = RegistryHelper.get(block).getPath().contains("deepslate"); final String stoneType = deepslate ? "block/ore_block_deepslate" : "block/ore_block"; final String stoneFileName = deepslate ? "ore_block_deepslate" : "ore_block"; diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index b1a94e377..4fc3cacf3 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -1,17 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 6 - 8 - 2024 ~ Leaf */ package leaf.cosmere.items; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.items.MetalNuggetItem; import leaf.cosmere.common.items.MetalRawOreItem; import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -25,9 +25,9 @@ public class ItemModelsGen extends ItemModelProvider { - public ItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public ItemModelsGen(PackOutput packOutput, ExistingFileHelper existingFileHelper) { - super(generator, Cosmere.MODID, existingFileHelper); + super(packOutput, Cosmere.MODID, existingFileHelper); } @Override @@ -68,7 +68,7 @@ else if (item instanceof MetalRawOreItem rawItem) public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/main/java/leaf/cosmere/loottables/BaseBlockLootTables.java b/src/datagen/main/java/leaf/cosmere/loottables/BaseBlockLootTables.java new file mode 100644 index 000000000..5563e27d4 --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/loottables/BaseBlockLootTables.java @@ -0,0 +1,216 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.loottables; + +import it.unimi.dsi.fastutil.objects.ReferenceArraySet; +import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; +import leaf.cosmere.api.providers.IBlockProvider; +import net.minecraft.advancements.critereon.EnchantmentPredicate; +import net.minecraft.advancements.critereon.ItemPredicate; +import net.minecraft.advancements.critereon.MinMaxBounds; +import net.minecraft.advancements.critereon.StatePropertiesPredicate; +import net.minecraft.data.loot.BlockLootSubProvider; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.SlabBlock; +import net.minecraft.world.level.block.state.properties.SlabType; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.LootTable.Builder; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; +import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount; +import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.predicates.*; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import net.minecraft.world.level.storage.loot.providers.number.NumberProvider; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; +import org.jetbrains.annotations.NotNull; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.function.Function; + +public abstract class BaseBlockLootTables extends BlockLootSubProvider +{ + + private static final LootItemCondition.Builder HAS_SILK_TOUCH = MatchTool.toolMatches(ItemPredicate.Builder.item() + .hasEnchantment(new EnchantmentPredicate(Enchantments.SILK_TOUCH, MinMaxBounds.Ints.atLeast(1)))); + + private final Set knownBlocks = new ReferenceOpenHashSet<>(); + //Note: We use an array set as we never expect this to have more than a few elements (in reality it only ever has one) + private final Set toSkip = new ReferenceArraySet<>(); + + protected BaseBlockLootTables() + { + //Note: We manually handle explosion resistance on a case by case basis dynamically + super(Collections.emptySet(), FeatureFlags.VANILLA_SET); + } + + @Override + protected void add(@NotNull Block block, @NotNull LootTable.Builder table) + { + //Overwrite the core register method to add to our list of known blocks + super.add(block, table); + knownBlocks.add(block); + } + + @NotNull + @Override + protected Iterable getKnownBlocks() + { + return knownBlocks; + } + + protected void skip(IBlockProvider... blockProviders) + { + for (IBlockProvider blockProvider : blockProviders) + { + toSkip.add(blockProvider.getBlock()); + } + } + + protected boolean skipBlock(Block block) + { + //Skip any blocks that we already registered a table for or have marked to skip + return knownBlocks.contains(block) || toSkip.contains(block); + } + + protected Builder createOreDrop(Block block, ItemLike item) + { + return createSilkTouchDispatchTable(block, applyExplosionDecay(block, LootItem.lootTableItem(item.asItem()) + .apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE)) + )); + } + + protected Builder droppingWithFortuneOrRandomly(Block block, ItemLike item, UniformGenerator range) + { + return createSilkTouchDispatchTable(block, applyExplosionDecay(block, LootItem.lootTableItem(item.asItem()) + .apply(SetItemCountFunction.setCount(range)) + .apply(ApplyBonusCount.addOreBonusCount(Enchantments.BLOCK_FORTUNE)) + )); + } + + //IBlockProvider versions of BlockLootTable methods, modified to support varargs + protected void dropSelf(List blockProviders) + { + for (IBlockProvider blockProvider : blockProviders) + { + Block block = blockProvider.getBlock(); + if (!skipBlock(block)) + { + dropSelf(block); + } + } + } + + protected void add(Function factory, Collection blockProviders) + { + for (IBlockProvider blockProvider : blockProviders) + { + add(blockProvider.getBlock(), factory); + } + } + + protected void add(Function factory, IBlockProvider... blockProviders) + { + for (IBlockProvider blockProvider : blockProviders) + { + add(blockProvider.getBlock(), factory); + } + } + + /** + * Like vanilla's {@link BlockLootSubProvider#applyExplosionCondition(ItemLike, ConditionUserBuilder)} except with a boolean for if it is explosion resistant. + */ + private static > T applyExplosionCondition(boolean explosionResistant, ConditionUserBuilder condition) + { + return explosionResistant ? condition.unwrap() : condition.when(ExplosionCondition.survivesExplosion()); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#createSlabItemTable(Block)} except with a named pool + */ + @NotNull + @Override + protected LootTable.Builder createSlabItemTable(@NotNull Block slab) + { + return LootTable.lootTable().withPool(LootPool.lootPool() + .name("main") + .setRolls(ConstantValue.exactly(1)) + .add(applyExplosionDecay(slab, LootItem.lootTableItem(slab) + .apply(SetItemCountFunction.setCount(ConstantValue.exactly(2)) + .when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(slab) + .setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(SlabBlock.TYPE, SlabType.DOUBLE))) + ) + ) + ) + ); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#dropOther(Block, ItemLike)} except with a named pool + */ + @Override + public void dropOther(@NotNull Block block, @NotNull ItemLike drop) + { + add(block, createSingleItemTable(drop)); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#createSingleItemTable(ItemLike)} except with a named pool + */ + @NotNull + @Override + public LootTable.Builder createSingleItemTable(@NotNull ItemLike item) + { + return LootTable.lootTable().withPool(applyExplosionCondition(item, LootPool.lootPool() + .name("main") + .setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(item)) + )); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#createSingleItemTableWithSilkTouch(Block, ItemLike, NumberProvider)} except with a named pool + */ + @NotNull + @Override + protected LootTable.Builder createSingleItemTableWithSilkTouch(@NotNull Block block, @NotNull ItemLike item, @NotNull NumberProvider range) + { + return createSilkTouchDispatchTable(block, applyExplosionDecay(block, LootItem.lootTableItem(item).apply(SetItemCountFunction.setCount(range)))); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#createSilkTouchDispatchTable(Block, LootPoolEntryContainer.Builder)} except with a named pool + */ + @NotNull + protected static LootTable.Builder createSilkTouchDispatchTable(@NotNull Block block, @NotNull LootPoolEntryContainer.Builder builder) + { + return createSelfDropDispatchTable(block, HAS_SILK_TOUCH, builder); + } + + /** + * Like vanilla's {@link BlockLootSubProvider#createSelfDropDispatchTable(Block, LootItemCondition.Builder, LootPoolEntryContainer.Builder)} except with a named pool + */ + @NotNull + protected static LootTable.Builder createSelfDropDispatchTable(@NotNull Block block, @NotNull LootItemCondition.Builder conditionBuilder, + @NotNull LootPoolEntryContainer.Builder entry) + { + return LootTable.lootTable().withPool(LootPool.lootPool() + .name("main") + .setRolls(ConstantValue.exactly(1)) + .add(LootItem.lootTableItem(block) + .when(conditionBuilder) + .otherwise(entry) + ) + ); + } + +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/loottables/BaseEntityLootTables.java b/src/datagen/main/java/leaf/cosmere/loottables/BaseEntityLootTables.java new file mode 100644 index 000000000..ca7931b32 --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/loottables/BaseEntityLootTables.java @@ -0,0 +1,48 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.loottables; + +import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; +import leaf.cosmere.api.providers.IEntityTypeProvider; +import net.minecraft.data.loot.EntityLootSubProvider; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.flag.FeatureFlags; +import net.minecraft.world.level.storage.loot.LootTable; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; +import java.util.stream.Stream; + +public abstract class BaseEntityLootTables extends EntityLootSubProvider +{ + + private final Set> knownEntityTypes = new ReferenceOpenHashSet<>(); + + protected BaseEntityLootTables() + { + super(FeatureFlags.VANILLA_SET); + } + + @Override + protected void add(@NotNull EntityType type, @NotNull LootTable.Builder table) + { + //Overwrite the core register method to add to our list of known entity types + //Note: This isn't the actual core method as that one takes a ResourceLocation, but all our things wil pass through this one + super.add(type, table); + knownEntityTypes.add(type); + } + + @NotNull + @Override + protected Stream> getKnownEntityTypes() + { + return knownEntityTypes.stream(); + } + + protected void add(@NotNull IEntityTypeProvider typeProvider, @NotNull LootTable.Builder table) + { + add(typeProvider.getEntityType(), table); + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/loottables/BaseLootProvider.java b/src/datagen/main/java/leaf/cosmere/loottables/BaseLootProvider.java new file mode 100644 index 000000000..20e1fb53a --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/loottables/BaseLootProvider.java @@ -0,0 +1,27 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.loottables; + +import net.minecraft.data.PackOutput; +import net.minecraft.data.loot.LootTableProvider; +import net.minecraft.resources.ResourceLocation; + +import java.util.Collections; +import java.util.List; +import java.util.Set; + +public abstract class BaseLootProvider extends LootTableProvider +{ + + protected BaseLootProvider(PackOutput output, List subProviders) + { + this(output, Collections.emptySet(), subProviders); + } + + protected BaseLootProvider(PackOutput output, Set requiredTables, List subProviders) + { + super(output, requiredTables, subProviders); + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java b/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java index 3a4581870..91c21bca3 100644 --- a/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java +++ b/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.loottables; @@ -8,13 +8,12 @@ import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.data.loot.BlockLoot; import net.minecraft.world.level.block.Block; -public class BlockLootTableGen extends BlockLoot +public class BlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { for (IBlockProvider itemRegistryObject : BlocksRegistry.BLOCKS.getAllBlocks()) { @@ -30,10 +29,4 @@ protected void addTables() } } } - - @Override - protected Iterable getKnownBlocks() - { - return BlocksRegistry.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; - } } diff --git a/src/datagen/main/java/leaf/cosmere/loottables/EntityLootTableGen.java b/src/datagen/main/java/leaf/cosmere/loottables/EntityLootTableGen.java new file mode 100644 index 000000000..50c258863 --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/loottables/EntityLootTableGen.java @@ -0,0 +1,14 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.loottables; + +public class EntityLootTableGen extends BaseEntityLootTables +{ + + @Override + public void generate() + { + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/loottables/LootTableGen.java b/src/datagen/main/java/leaf/cosmere/loottables/LootTableGen.java index f6de6ca4d..1b924d1ca 100644 --- a/src/datagen/main/java/leaf/cosmere/loottables/LootTableGen.java +++ b/src/datagen/main/java/leaf/cosmere/loottables/LootTableGen.java @@ -1,43 +1,21 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class LootTableGen extends LootTableProvider +public class LootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(BlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public LootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public LootTableGen(PackOutput output) { + super(output, List.of( + new SubProviderEntry(BlockLootTableGen::new, LootContextParamSets.BLOCK), + new SubProviderEntry(EntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java index 6259bad12..92af540d8 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java @@ -1,21 +1,21 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 6 - 8 - 2024 ~ Leaf */ package leaf.cosmere.patchouli; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class PatchouliGen extends PatchouliProvider { - public PatchouliGen(DataGenerator generatorIn) + public PatchouliGen(PackOutput packOutput) { - super(generatorIn, CosmereAPI.COSMERE_MODID); + super(packOutput, CosmereAPI.COSMERE_MODID); } diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java index 7a82f37c2..f03c86269 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 6 - 8 - 2024 ~ Leaf */ package leaf.cosmere.patchouli.data; @@ -7,8 +7,8 @@ import com.google.common.collect.Sets; import leaf.cosmere.api.text.StringHelper; import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; +import net.minecraft.data.PackOutput; import org.jetbrains.annotations.NotNull; import java.nio.file.Path; @@ -24,16 +24,16 @@ public abstract class PatchouliProvider implements DataProvider { public static final String GUIDE_NAME = "guide"; - private final DataGenerator generator; + private final PackOutput packOutput; private final String modid; protected final List categories = new ArrayList<>(); protected final List entries = new ArrayList<>(); - public PatchouliProvider(DataGenerator generatorIn, String modid) + public PatchouliProvider(PackOutput packOutput, String modid) { - this.generator = generatorIn; + this.packOutput = packOutput; this.modid = modid; } @@ -44,7 +44,7 @@ public PatchouliProvider(DataGenerator generatorIn, String modid) */ public CompletableFuture run(@NotNull CachedOutput cache) { - Path path = this.generator.getPackOutput().getOutputFolder(); + Path path = this.packOutput.getOutputFolder(); Set entryIDs = Sets.newHashSet(); Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); diff --git a/src/datagen/main/java/leaf/cosmere/tag/BaseTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/BaseTagProvider.java index 2119b9505..e3ccd17a4 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/BaseTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/BaseTagProvider.java @@ -1,56 +1,62 @@ /* - * File updated ~ 21 - 7 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.tag; import it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.common.registration.impl.GameEventRegistryObject; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; import net.minecraft.data.DataProvider; +import net.minecraft.data.PackOutput; import net.minecraft.data.tags.TagsProvider; +import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagBuilder; import net.minecraft.tags.TagKey; +import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.effect.MobEffect; import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.Item; import net.minecraft.world.level.ItemLike; +import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.gameevent.GameEvent; import net.minecraft.world.level.material.Fluid; import net.minecraftforge.common.data.ExistingFileHelper; -import net.minecraftforge.common.data.ForgeRegistryTagsProvider; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.IForgeRegistry; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.concurrent.CompletableFuture; +import java.util.function.Function; //Based off of Mekanism's implementation of BaseTagProvider, obtained 1st June, 2023 //This lets us make data jsons much easier, so todo is to move to this implementation for other tags and things public abstract class BaseTagProvider implements DataProvider { - - private final Map, Map, TagBuilder>> supportedTagTypes = new Object2ObjectLinkedOpenHashMap<>(); - private final Set knownHarvestRequirements = new HashSet<>(); + private final Map>, Map, TagBuilder>> supportedTagTypes = new Object2ObjectLinkedOpenHashMap<>(); + private final Set knownHarvestRequirements = new ReferenceOpenHashSet<>(); + private final CompletableFuture lookupProvider; private final ExistingFileHelper existingFileHelper; - private final DataGenerator gen; + private final PackOutput output; private final String modid; - protected BaseTagProvider(DataGenerator gen, String modid, @Nullable ExistingFileHelper existingFileHelper) + protected BaseTagProvider(PackOutput output, CompletableFuture lookupProvider, String modid, @Nullable ExistingFileHelper existingFileHelper) { - this.gen = gen; + this.output = output; this.modid = modid; + this.lookupProvider = lookupProvider; this.existingFileHelper = existingFileHelper; - addTagType(TagType.ITEM); - addTagType(TagType.BLOCK); - addTagType(TagType.ENTITY_TYPE); - addTagType(TagType.FLUID); - addTagType(TagType.BLOCK_ENTITY_TYPE); - addTagType(TagType.GAME_EVENT); } @NotNull @@ -60,13 +66,7 @@ public String getName() return "Tags: " + modid; } - //Protected to allow for extensions to add their own supported types if they have one - protected void addTagType(TagType tagType) - { - supportedTagTypes.computeIfAbsent(tagType, type -> new Object2ObjectLinkedOpenHashMap<>()); - } - - protected abstract void registerTags(); + protected abstract void registerTags(HolderLookup.Provider registries); protected List getAllBlocks() { @@ -78,98 +78,115 @@ protected void hasHarvestData(Block block) knownHarvestRequirements.add(block); } + @NotNull @Override - public void run(@NotNull CachedOutput cache) + public CompletableFuture run(@NotNull CachedOutput cache) { - supportedTagTypes.values().forEach(Map::clear); - registerTags(); - //todo eventually migrate all tags to use CosmereTagProvider - for (IBlockProvider blockProvider : getAllBlocks()) + return this.lookupProvider.thenApply(registries -> { - Block block = blockProvider.getBlock(); - if (block.defaultBlockState().requiresCorrectToolForDrops() && !knownHarvestRequirements.contains(block)) - { - throw new IllegalStateException("Missing harvest tool type for block '" + ResourceLocationHelper.get(block) + "' that requires the correct tool for drops."); - } - } - supportedTagTypes.forEach((tagType, tagTypeMap) -> act(cache, tagType, tagTypeMap)); - } - - private void act(@NotNull CachedOutput cache, TagType tagType, Map, TagBuilder> tagTypeMap) - { - if (!tagTypeMap.isEmpty()) + supportedTagTypes.values().forEach(Map::clear); + registerTags(registries); + return registries; + }).thenCompose(registries -> { - //Create a dummy provider and pass all our collected data through to it - tagType.getRegistry().map(forgeRegistry -> new ForgeRegistryTagsProvider<>(gen, forgeRegistry, modid, existingFileHelper) + for (IBlockProvider blockProvider : getAllBlocks()) { - @Override - protected void addTags() - { - //Add each tag builder to the wrapped provider's builder - tagTypeMap.forEach((tag, tagBuilder) -> builders.put(tag.location(), tagBuilder)); - } - - @NotNull - @Override - public String getName() + Block block = blockProvider.getBlock(); + if (block.defaultBlockState().requiresCorrectToolForDrops() && !knownHarvestRequirements.contains(block)) { - return tagType.name() + " Tags: " + modid; + throw new IllegalStateException("Missing harvest tool type for block '" + RegistryHelper.getName(block) + "' that requires the correct tool for drops."); } - }, vanillaRegistry -> new TagsProvider<>(gen, vanillaRegistry, modid, existingFileHelper) + } + List> futures = new ArrayList<>(); + supportedTagTypes.forEach((registry, tagTypeMap) -> { - @Override - protected void addTags() + if (!tagTypeMap.isEmpty()) { - //Add each tag builder to the wrapped provider's builder - tagTypeMap.forEach((tag, tagBuilder) -> builders.put(tag.location(), tagBuilder)); + //Create a dummy provider and pass all our collected data through to it + futures.add(new TagsProvider(output, registry, lookupProvider, modid, existingFileHelper) + { + @Override + protected void addTags(@NotNull HolderLookup.Provider lookupProvider) + { + //Add each tag builder to the wrapped provider's builder + tagTypeMap.forEach((tag, tagBuilder) -> builders.put(tag.location(), tagBuilder)); + } + }.run(cache)); } + }); + return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); + }); + } - @NotNull - @Override - public String getName() - { - return tagType.name() + " Tags: " + modid; - } - }).run(cache); - } + private Map, TagBuilder> getTagTypeMap(ResourceKey> registry) + { + return supportedTagTypes.computeIfAbsent(registry, type -> new Object2ObjectLinkedOpenHashMap<>()); + } + + private TagBuilder getTagBuilder(ResourceKey> registry, TagKey tag) + { + return getTagTypeMap(registry).computeIfAbsent(tag, ignored -> TagBuilder.create()); } - //Protected to allow for extensions to add retrieve their own supported types if they have any - protected ForgeRegistryTagBuilder getBuilder(TagType tagType, TagKey tag) + protected CosmereTagBuilder getBuilder(ResourceKey> registry, TagKey tag) { - return new ForgeRegistryTagBuilder<>(tagType.getRegistry(), supportedTagTypes.get(tagType).computeIfAbsent(tag, ignored -> TagBuilder.create()), modid); + return new CosmereTagBuilder<>(getTagBuilder(registry, tag), modid); } - protected ForgeRegistryTagBuilder getItemBuilder(TagKey tag) + protected IntrinsicCosmereTagBuilder getBuilder(ResourceKey> registry, Function> keyExtractor, TagKey tag) { - return getBuilder(TagType.ITEM, tag); + return new IntrinsicCosmereTagBuilder<>(keyExtractor, getTagBuilder(registry, tag), modid); } - protected ForgeRegistryTagBuilder getBlockBuilder(TagKey tag) + protected IntrinsicCosmereTagBuilder getBuilder(IForgeRegistry registry, TagKey tag) { - return getBuilder(TagType.BLOCK, tag); + return new IntrinsicCosmereTagBuilder<>(element -> registry.getResourceKey(element).orElseThrow(), getTagBuilder(registry.getRegistryKey(), tag), modid); } - protected ForgeRegistryTagBuilder> getEntityTypeBuilder(TagKey> tag) + protected IntrinsicCosmereTagBuilder getItemBuilder(TagKey tag) { - return getBuilder(TagType.ENTITY_TYPE, tag); + return getBuilder(ForgeRegistries.ITEMS, tag); } - protected ForgeRegistryTagBuilder getFluidBuilder(TagKey tag) + protected IntrinsicCosmereTagBuilder getBlockBuilder(TagKey tag) { - return getBuilder(TagType.FLUID, tag); + return getBuilder(ForgeRegistries.BLOCKS, tag); } - protected ForgeRegistryTagBuilder> getTileEntityTypeBuilder(TagKey> tag) + protected IntrinsicCosmereTagBuilder> getEntityTypeBuilder(TagKey> tag) { - return getBuilder(TagType.BLOCK_ENTITY_TYPE, tag); + return getBuilder(ForgeRegistries.ENTITY_TYPES, tag); } - protected ForgeRegistryTagBuilder getGameEventBuilder(TagKey tag) + protected IntrinsicCosmereTagBuilder getFluidBuilder(TagKey tag) { - return getBuilder(TagType.GAME_EVENT, tag); + return getBuilder(ForgeRegistries.FLUIDS, tag); } + protected IntrinsicCosmereTagBuilder> getTileEntityTypeBuilder(TagKey> tag) + { + return getBuilder(ForgeRegistries.BLOCK_ENTITY_TYPES, tag); + } + + protected IntrinsicCosmereTagBuilder getGameEventBuilder(TagKey tag) + { + return getBuilder(Registries.GAME_EVENT, gameEvent -> gameEvent.builtInRegistryHolder().key(), tag); + } + + protected CosmereTagBuilder getDamageTypeBuilder(TagKey tag) + { + return getBuilder(Registries.DAMAGE_TYPE, tag); + } + + protected CosmereTagBuilder getBiomeBuilder(TagKey tag) + { + return getBuilder(Registries.BIOME, tag); + } + + protected IntrinsicCosmereTagBuilder getMobEffectBuilder(TagKey tag) + { + return getBuilder(ForgeRegistries.MOB_EFFECTS, tag); + } protected void addToTag(TagKey tag, ItemLike... itemProviders) { @@ -184,7 +201,7 @@ protected void addToTag(TagKey tag, IBlockProvider... blockProviders) @SafeVarargs protected final void addToTag(TagKey blockTag, Map... blockProviders) { - ForgeRegistryTagBuilder tagBuilder = getBlockBuilder(blockTag); + IntrinsicCosmereTagBuilder tagBuilder = getBlockBuilder(blockTag); for (Map blockProvider : blockProviders) { for (IBlockProvider value : blockProvider.values()) @@ -196,7 +213,7 @@ protected final void addToTag(TagKey blockTag, Map tag, IBlockProvider... blockProviders) { - ForgeRegistryTagBuilder tagBuilder = getBlockBuilder(tag); + IntrinsicCosmereTagBuilder tagBuilder = getBlockBuilder(tag); for (IBlockProvider blockProvider : blockProviders) { Block block = blockProvider.getBlock(); @@ -208,7 +225,7 @@ protected void addToHarvestTag(TagKey tag, IBlockProvider... blockProvide @SafeVarargs protected final void addToHarvestTag(TagKey blockTag, Map... blockProviders) { - ForgeRegistryTagBuilder tagBuilder = getBlockBuilder(blockTag); + IntrinsicCosmereTagBuilder tagBuilder = getBlockBuilder(blockTag); for (Map blockProvider : blockProviders) { for (IBlockProvider value : blockProvider.values()) @@ -222,8 +239,8 @@ protected final void addToHarvestTag(TagKey blockTag, Map itemTag, TagKey blockTag, IBlockProvider... blockProviders) { - ForgeRegistryTagBuilder itemTagBuilder = getItemBuilder(itemTag); - ForgeRegistryTagBuilder blockTagBuilder = getBlockBuilder(blockTag); + IntrinsicCosmereTagBuilder itemTagBuilder = getItemBuilder(itemTag); + IntrinsicCosmereTagBuilder blockTagBuilder = getBlockBuilder(blockTag); for (IBlockProvider blockProvider : blockProviders) { itemTagBuilder.add(blockProvider.asItem()); diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagBuilder.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagBuilder.java new file mode 100644 index 000000000..9bb3c692d --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagBuilder.java @@ -0,0 +1,134 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.tag; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagBuilder; +import net.minecraft.tags.TagEntry; +import net.minecraft.tags.TagKey; + +import java.util.function.Consumer; +import java.util.function.Function; + +//Based off of TagsProvider.TagAppender but with a few shortcuts for forge registry entries and also a few more helpers and addition of SafeVarargs annotations +public class CosmereTagBuilder> +{ + + protected final TagBuilder builder; + protected final String modID; + + public CosmereTagBuilder(TagBuilder builder, String modID) + { + this.builder = builder; + this.modID = modID; + } + + @SuppressWarnings("unchecked") + private BUILDER self() + { + return (BUILDER) this; + } + + @SafeVarargs + public final BUILDER add(TagKey... tags) + { + return apply(builder::addTag, TagKey::location, tags); + } + + public BUILDER add(TagEntry tag) + { + builder.add(tag); + return self(); + } + + @SafeVarargs + public final BUILDER add(ResourceKey... keys) + { + return add(ResourceKey::location, keys); + } + + @SafeVarargs + public final BUILDER add(Function locationGetter, T... elements) + { + return apply(builder::addElement, locationGetter, elements); + } + + public BUILDER replace() + { + return replace(true); + } + + public BUILDER replace(boolean value) + { + builder.replace(value); + return self(); + } + + public BUILDER addOptional(ResourceLocation... locations) + { + return addOptional(Function.identity(), locations); + } + + @SafeVarargs + public final BUILDER addOptional(Function locationGetter, T... elements) + { + return add(TagEntry::optionalElement, locationGetter, elements); + } + + @SafeVarargs + public final BUILDER addOptionalTag(TagKey... tags) + { + return addOptionalTag(TagKey::location, tags); + } + + public BUILDER addOptionalTag(ResourceLocation... locations) + { + return addOptionalTag(Function.identity(), locations); + } + + @SafeVarargs + public final BUILDER addOptionalTag(Function locationGetter, T... elements) + { + return add(TagEntry::optionalTag, locationGetter, elements); + } + + @SafeVarargs + private BUILDER add(Function entryCreator, Function locationGetter, T... elements) + { + return apply(rl -> add(entryCreator.apply(rl)), locationGetter, elements); + } + + public BUILDER remove(ResourceLocation... locations) + { + return remove(Function.identity(), locations); + } + + @SafeVarargs + public final BUILDER remove(Function locationGetter, T... elements) + { + return apply(rl -> builder.removeElement(rl, modID), locationGetter, elements); + } + + @SafeVarargs + public final BUILDER remove(TagKey... tags) + { + for (TagKey tag : tags) + { + builder.removeTag(tag.location(), modID); + } + return self(); + } + + @SafeVarargs + protected final BUILDER apply(Consumer consumer, Function locationGetter, T... elements) + { + for (T element : elements) + { + consumer.accept(locationGetter.apply(element)); + } + return self(); + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 252dd1591..311cf3127 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 11 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.tag; @@ -15,7 +15,8 @@ import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; import net.minecraft.tags.GameEventTags; import net.minecraft.tags.TagKey; @@ -28,13 +29,14 @@ import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class CosmereTagProvider extends BaseTagProvider { - public CosmereTagProvider(DataGenerator gen, @Nullable ExistingFileHelper existingFileHelper) + public CosmereTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(gen, Cosmere.MODID, existingFileHelper); + super(packOutput, lookupProvider, Cosmere.MODID, existingFileHelper); } @Override @@ -44,7 +46,7 @@ protected List getAllBlocks() } @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { addItems(); addBlocks(); diff --git a/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java b/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java new file mode 100644 index 000000000..22d9ad19e --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java @@ -0,0 +1,60 @@ +/* + * File updated ~ 7 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.tag; + +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagBuilder; + +import java.util.function.Function; +import java.util.function.Supplier; + +//Based off of IntrinsicHolderTagsProvider.IntrinsicTagAppender but with a few shortcuts for forge registry entries and also a few more helpers and addition of SafeVarargs annotations +public class IntrinsicCosmereTagBuilder extends CosmereTagBuilder> +{ + + private final Function> keyExtractor; + + public IntrinsicCosmereTagBuilder(Function> keyExtractor, TagBuilder builder, String modID) + { + super(builder, modID); + this.keyExtractor = keyExtractor; + } + + @SafeVarargs + public final IntrinsicCosmereTagBuilder add(Supplier... elements) + { + return addTyped(Supplier::get, elements); + } + + private ResourceLocation getKey(TYPE element) + { + return keyExtractor.apply(element).location(); + } + + @SafeVarargs + public final IntrinsicCosmereTagBuilder add(TYPE... elements) + { + return add(this::getKey, elements); + } + + @SafeVarargs + public final IntrinsicCosmereTagBuilder addTyped(Function converter, T... elements) + { + return add(converter.andThen(this::getKey), elements); + } + + @SafeVarargs + public final IntrinsicCosmereTagBuilder addOptional(TYPE... elements) + { + return addOptional(this::getKey, elements); + } + + @SafeVarargs + public final IntrinsicCosmereTagBuilder remove(TYPE... elements) + { + return remove(this::getKey, elements); + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/TagType.java b/src/datagen/main/java/leaf/cosmere/tag/TagType.java deleted file mode 100644 index 61517735d..000000000 --- a/src/datagen/main/java/leaf/cosmere/tag/TagType.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * File updated ~ 1 - 6 - 2023 ~ Leaf - */ - -package leaf.cosmere.tag; - -import com.mojang.datafixers.util.Either; -import net.minecraft.core.Registry; -import net.minecraft.world.entity.EntityType; -import net.minecraft.world.item.Item; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.entity.BlockEntityType; -import net.minecraft.world.level.gameevent.GameEvent; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.common.util.NonNullSupplier; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.IForgeRegistry; - -//Based off of Mekanism's implementation of TagType, obtained 1st June, 2023 -public record TagType(String name, NonNullSupplier, Registry>> registry) -{ - - public static final TagType ITEM = new TagType<>("Item", () -> Either.left(ForgeRegistries.ITEMS)); - public static final TagType BLOCK = new TagType<>("Block", () -> Either.left(ForgeRegistries.BLOCKS)); - public static final TagType> ENTITY_TYPE = new TagType<>("Entity Type", () -> Either.left(ForgeRegistries.ENTITY_TYPES)); - public static final TagType FLUID = new TagType<>("Fluid", () -> Either.left(ForgeRegistries.FLUIDS)); - public static final TagType> BLOCK_ENTITY_TYPE = new TagType<>("Block Entity Type", () -> Either.left(ForgeRegistries.BLOCK_ENTITY_TYPES)); - public static final TagType GAME_EVENT = new TagType<>("Game Event", () -> Either.right(Registry.GAME_EVENT)); - - public Either, Registry> getRegistry() - { - return registry.get(); - } -} \ No newline at end of file diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java index 9df7f36e5..7ac13c441 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java @@ -6,7 +6,7 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Taldain; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; @@ -62,7 +62,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Sandmastery.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java index ce5cc0c6c..23436e8a0 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.sandmastery.items; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.items.SandJarItem; @@ -37,8 +37,14 @@ protected void registerModels() Item item = itemRegistryObject.asItem(); //blocks have their own model rules - if (item instanceof BlockItem) continue; - if (item instanceof SandJarItem) continue; + if (item instanceof BlockItem) + { + continue; + } + if (item instanceof SandJarItem) + { + continue; + } //else normal item texture rules apply simpleItem(path, path); } @@ -47,7 +53,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java index 18642e0cb..f2d031f23 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; -import leaf.cosmere.soulforgery.advancements.SoulforgeryAdvancementGen; import leaf.cosmere.soulforgery.common.Soulforgery; import leaf.cosmere.soulforgery.loottables.SoulforgeryLootTableGen; import leaf.cosmere.soulforgery.patchouli.SoulforgeryPatchouliGen; @@ -32,7 +31,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new SoulforgeryItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new SoulforgeryRecipeGen(output, existingFileHelper)); generator.addProvider(true, new SoulforgeryPatchouliGen(generator)); - generator.addProvider(true, new SoulforgeryAdvancementGen(generator)); } } \ No newline at end of file diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java index 02036f234..61f03cfb5 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.soulforgery; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.soulforgery.common.Soulforgery; @@ -49,7 +49,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Soulforgery.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java index 015dc38c3..d2b66228d 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.soulforgery; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.soulforgery.common.Soulforgery; import leaf.cosmere.soulforgery.common.registries.SoulforgeryItems; @@ -61,7 +61,7 @@ protected void registerModels() public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancementGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancementGen.java deleted file mode 100644 index da5341162..000000000 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancementGen.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.soulforgery.advancements; - -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Sets; -import leaf.cosmere.api.CosmereAPI; -import net.minecraft.advancements.Advancement; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.ResourceLocation; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.List; -import java.util.Set; -import java.util.function.Consumer; - -public class SoulforgeryAdvancementGen implements DataProvider -{ - private final DataGenerator generator; - private final List>> advancements = ImmutableList.of( - new SoulforgeryAdvancements() - ); - - public SoulforgeryAdvancementGen(DataGenerator generatorIn) - { - this.generator = generatorIn; - } - - /** - * Performs this provider's action. - */ - @Override - public void run(@NotNull CachedOutput cache) throws IOException - { - Path path = this.generator.getOutputFolder(); - Set set = Sets.newHashSet(); - Consumer consumer = (advancement) -> - { - if (!set.add(advancement.getId())) - { - throw new IllegalStateException("Duplicate advancement " + advancement.getId()); - } - else - { - Path path1 = getPath(path, advancement); - - try - { - DataProvider.saveStable(cache, advancement.deconstruct().serializeToJson(), path1); - } - catch (IOException ioexception) - { - CosmereAPI.logger.error("Couldn't save advancement {}", path1, ioexception); - } - - } - }; - - for (Consumer> consumer1 : this.advancements) - { - consumer1.accept(consumer); - } - - } - - private static Path getPath(Path pathIn, Advancement advancementIn) - { - return pathIn.resolve("data/soulforgery/advancements/" + advancementIn.getId().getPath() + ".json"); - } - - /** - * Gets a name for this provider, to use in logging. - */ - public @NotNull String getName() - { - return "Soulforgery Advancements"; - } -} diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancements.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancements.java deleted file mode 100644 index 93e7f1101..000000000 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/advancements/SoulforgeryAdvancements.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * File updated ~ 30 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.soulforgery.advancements; - -import net.minecraft.advancements.Advancement; - -import java.util.function.Consumer; - -public class SoulforgeryAdvancements implements Consumer> -{ - public SoulforgeryAdvancements() - { - } - - public void accept(Consumer advancementConsumer) - { - String tabName = "soulforgery"; - - final String titleFormat = "advancements.soulforgery.%s.title"; - final String descriptionFormat = "advancements.soulforgery.%s.description"; - final String achievementPathFormat = "soulforgery:%s/%s"; - - //Advancement root = Advancement.Builder.advancement() - // .display(SoulforgeryItems.WORM.get(), - // Component.translatable(String.format(titleFormat, tabName)), - // Component.translatable(String.format(descriptionFormat, tabName)), - // new ResourceLocation("textures/gui/advancements/backgrounds/stone.png"), - // FrameType.TASK, - // false,//showToast - // false,//announceChat - // false)//hidden - // .addCriterion("worm", InventoryChangeTrigger.TriggerInstance.hasItems(ItemPredicate.Builder.item().of(SoulforgeryItems.WORM.get()).build())) - // .save(advancementConsumer, String.format(achievementPathFormat, tabName, "root")); - } -} \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java index 08f04e624..06a4d7cdd 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.surgebinding; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.surgebinding.common.Surgebinding; @@ -43,7 +43,7 @@ else if (block instanceof GemOreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. - final boolean deepslate = ResourceLocationHelper.get(block).getPath().contains("deepslate"); + final boolean deepslate = RegistryHelper.get(block).getPath().contains("deepslate"); final String stoneType = deepslate ? "block/gem_ore_block_deepslate" : "block/gem_ore_block"; final String stoneFileName = deepslate ? "gem_ore_block_deepslate" : "gem_ore_block"; @@ -55,7 +55,8 @@ else if (block instanceof GemOreBlock) simpleBlock(block, blockModel); continue; } - else if (block instanceof LavisPolypBlock || block instanceof PrickletacBlock || block instanceof RockbudVariantBlock || block instanceof VinebudBlock) { + else if (block instanceof LavisPolypBlock || block instanceof PrickletacBlock || block instanceof RockbudVariantBlock || block instanceof VinebudBlock) + { continue; } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java index 613a01aab..d5cf02e0f 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java @@ -5,7 +5,7 @@ package leaf.cosmere.surgebinding; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; @@ -59,7 +59,7 @@ private void addItemsAndBlocks() //Items and Blocks for (Item item : ForgeRegistries.ITEMS.getValues()) { - final ResourceLocation registryName = ResourceLocationHelper.get(item); + final ResourceLocation registryName = RegistryHelper.get(item); if (registryName.getNamespace().contentEquals(Surgebinding.MODID)) { String localisedString = StringHelper.fixCapitalisation(registryName.getPath()); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java index 6d18ab48f..0b9ec5f65 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.surgebinding; -import leaf.cosmere.api.helpers.ResourceLocationHelper; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.items.GemstoneItem; @@ -84,7 +84,7 @@ else if (item instanceof GemstoneItem gemstoneItem) public String getPath(Supplier itemSupplier) { - ResourceLocation location = ResourceLocationHelper.get(itemSupplier.get()); + ResourceLocation location = RegistryHelper.get(itemSupplier.get()); return location.getPath(); } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java index d0f474124..99d349d39 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.biome; @@ -7,6 +7,7 @@ import leaf.cosmere.api.CosmereTags; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; @@ -21,7 +22,7 @@ public SurgebindingBiomeTagsProvider(DataGenerator arg, ExistingFileHelper exist } @Override - protected void addTags() + protected void addTags(HolderLookup.Provider pProvider) { tag(SurgebindingBiomes.ROSHAR_BIOME_KEY, CosmereTags.Biomes.IS_ROSHAR); } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java index 53e83556a..ed0002364 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.loottables; @@ -31,7 +31,7 @@ public SurgebindingLootTableGen(DataGenerator dataGeneratorIn) } @Override - protected List>>, LootContextParamSet>> getTables() + public List getTables() { return this.loot_tables; } diff --git a/src/example/java/leaf/cosmere/example/client/ExampleModClientEvents.java b/src/example/java/leaf/cosmere/example/client/ExampleModClientEvents.java index 8124b5ad4..298c3bcf1 100644 --- a/src/example/java/leaf/cosmere/example/client/ExampleModClientEvents.java +++ b/src/example/java/leaf/cosmere/example/client/ExampleModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.example.client; @@ -7,11 +7,8 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.example.client.render.ExampleRenderers; import leaf.cosmere.example.common.Example; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -32,6 +29,7 @@ public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefini } + /* todo - re setup power icon registration //special thank you to the chisels and bits team who have an example of how to register other sprites @SubscribeEvent public static void registerIconTextures(TextureStitchEvent.Pre event) @@ -43,5 +41,5 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) } event.addSprite(Example.rl("icon/example")); - } + }*/ } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java index f80fd9c40..5ca7ab5d8 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java @@ -1,26 +1,20 @@ /* - * File updated ~ 18 - 10 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.client; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Metals; import leaf.cosmere.feruchemy.client.render.FeruchemyLayerDefinitions; import leaf.cosmere.feruchemy.client.render.FeruchemyRenderers; import leaf.cosmere.feruchemy.client.render.model.BraceletModel; import leaf.cosmere.feruchemy.common.Feruchemy; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import java.util.Locale; - @Mod.EventBusSubscriber(modid = Feruchemy.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class FeruchemyClientSetup { @@ -40,6 +34,7 @@ public static void init(final FMLClientSetupEvent event) CosmereAPI.logger.info("Feruchemy client setup complete!"); } + /* todo - re setup power icon registration //special thank you to the chisels and bits team who have an example of how to register other sprites @SubscribeEvent public static void registerIconTextures(TextureStitchEvent.Pre event) @@ -62,5 +57,5 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) event.addSprite(Feruchemy.rl("icon/feruchemy/" + metalToLower)); } } - + */ } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossItemInHandLayer.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossItemInHandLayer.java deleted file mode 100644 index 1f25e5897..000000000 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossItemInHandLayer.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * File updated ~ 13 - 6 - 2023 ~ Leaf - */ - -package leaf.cosmere.hemalurgy.client.render.renderer; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.math.Vector3f; -import net.minecraft.client.model.ArmedModel; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.renderer.ItemInHandRenderer; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.block.model.ItemTransforms; -import net.minecraft.client.renderer.entity.RenderLayerParent; -import net.minecraft.client.renderer.entity.layers.RenderLayer; -import net.minecraft.world.entity.HumanoidArm; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -public class KolossItemInHandLayer & ArmedModel> extends RenderLayer -{ - private final ItemInHandRenderer itemInHandRenderer; - - public KolossItemInHandLayer(RenderLayerParent p_234846_, ItemInHandRenderer p_234847_) - { - super(p_234846_); - this.itemInHandRenderer = p_234847_; - } - - public void render(PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPackedLight, T pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pPartialTicks, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) - { - return; - - } - - - protected void renderArmWithItem(LivingEntity pLivingEntity, ItemStack pItemStack, ItemTransforms.TransformType pTransformType, HumanoidArm pArm, PoseStack pPoseStack, MultiBufferSource pBuffer, int pPackedLight) - { - if (!pItemStack.isEmpty()) - { - pPoseStack.pushPose(); - this.getParentModel().translateToHand(pArm, pPoseStack); - pPoseStack.mulPose(Vector3f.XP.rotationDegrees(-90.0F)); - pPoseStack.mulPose(Vector3f.YP.rotationDegrees(180.0F)); - boolean flag = pArm == HumanoidArm.LEFT; - pPoseStack.translate((double) ((float) (flag ? -1 : 1) / 16.0F), 0.125D, -0.625D); - this.itemInHandRenderer.renderItem(pLivingEntity, pItemStack, pTransformType, flag, pPoseStack, pBuffer, pPackedLight); - pPoseStack.popPose(); - } - } -} \ No newline at end of file diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossLargeRenderer.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossLargeRenderer.java index 73fc3adf4..dba100004 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossLargeRenderer.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossLargeRenderer.java @@ -1,15 +1,13 @@ /* - * File updated ~ 19 - 7 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.client.render.renderer; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.hemalurgy.client.render.HemalurgyLayerDefinitions; import leaf.cosmere.hemalurgy.client.render.model.KolossLargeModel; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.entity.Koloss; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -22,7 +20,7 @@ public KolossLargeRenderer(EntityRendererProvider.Context context) { super(context, new KolossLargeModel<>(context.bakeLayer(HemalurgyLayerDefinitions.KOLOSS_LARGE)), 1.0F); - this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) + /*this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) { public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLight, Koloss pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pPartialTicks, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) { @@ -32,7 +30,7 @@ public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLi super.render(poseStack, pBuffer, pPackedLight, pLivingEntity, pLimbSwing, pLimbSwingAmount, pPartialTicks, pAgeInTicks, pNetHeadYaw, pHeadPitch); } } - }); + });*/ } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossMediumRenderer.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossMediumRenderer.java index ba1fb1a16..66d5c0b2e 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossMediumRenderer.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossMediumRenderer.java @@ -1,15 +1,13 @@ /* - * File updated ~ 19 - 7 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.client.render.renderer; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.hemalurgy.client.render.HemalurgyLayerDefinitions; import leaf.cosmere.hemalurgy.client.render.model.KolossMediumModel; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.entity.Koloss; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -22,7 +20,7 @@ public KolossMediumRenderer(EntityRendererProvider.Context context) { super(context, new KolossMediumModel<>(context.bakeLayer(HemalurgyLayerDefinitions.KOLOSS_MEDIUM)), 1.0F); - this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) + /*this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) { public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLight, Koloss pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pPartialTicks, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) { @@ -32,7 +30,7 @@ public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLi super.render(poseStack, pBuffer, pPackedLight, pLivingEntity, pLimbSwing, pLimbSwingAmount, pPartialTicks, pAgeInTicks, pNetHeadYaw, pHeadPitch); } } - }); + });*/ } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossSmallRenderer.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossSmallRenderer.java index 5ab7d1ec0..d9b028412 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossSmallRenderer.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/client/render/renderer/KolossSmallRenderer.java @@ -1,15 +1,13 @@ /* - * File updated ~ 19 - 7 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.client.render.renderer; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.hemalurgy.client.render.HemalurgyLayerDefinitions; import leaf.cosmere.hemalurgy.client.render.model.KolossSmallModel; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.entity.Koloss; -import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; import net.minecraft.resources.ResourceLocation; @@ -22,7 +20,7 @@ public KolossSmallRenderer(EntityRendererProvider.Context context) { super(context, new KolossSmallModel<>(context.bakeLayer(HemalurgyLayerDefinitions.KOLOSS_SMALL)), 1.0F); - this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) + /*this.addLayer(new KolossItemInHandLayer<>(this, context.getItemInHandRenderer()) { public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLight, Koloss pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pPartialTicks, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) { @@ -32,7 +30,7 @@ public void render(PoseStack poseStack, MultiBufferSource pBuffer, int pPackedLi super.render(poseStack, pBuffer, pPackedLight, pLivingEntity, pLimbSwing, pLimbSwingAmount, pPartialTicks, pAgeInTicks, pNetHeadYaw, pHeadPitch); } } - }); + });*/ } diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index 2957d4e8a..62bfbb41e 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -13,12 +13,14 @@ import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureRegistryObject; import net.minecraft.core.Holder; -import net.minecraft.data.worldgen.features.OreFeatures; +import net.minecraft.tags.BlockTags; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.placement.*; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import java.util.Arrays; import java.util.List; @@ -30,55 +32,58 @@ public class FeatureRegistry { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Cosmere.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Cosmere.MODID); + private static final RuleTest ruletest1 = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); + private static final RuleTest ruletest2 = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); // todo: might need to be redone? ore and placed features are already in the generated jsons, so might be fine // hard to tell while it doesn't build -// public static final Map>> CONFIGURED_METAL_ORE_FEATURES = -// Arrays.stream(Metals.MetalType.values()) -// .filter(Metals.MetalType::hasOre) -// .collect(Collectors.toMap( -// Function.identity(), -// type -> CONFIGURED_FEATURES.register( -// type.getName() + Constants.RegNameStubs.ORE, -// () -> new ConfiguredFeature<>( -// Feature.ORE, -// new OreConfiguration( -// makeTarget(type), -// 9))) -// )); - -// public static final Map> PLACED_METAL_ORE_FEATURES = -// Arrays.stream(Metals.MetalType.values()) -// .filter(Metals.MetalType::hasOre) -// .collect(Collectors.toMap( -// Function.identity(), -// type -> -// PLACED_FEATURES.register( -// type.getName() + Constants.RegNameStubs.ORE, -// () -> new PlacedFeature(Holder.direct(CONFIGURED_METAL_ORE_FEATURES.get(type).get()), -// commonOrePlacement( -// 10,//width? -// HeightRangePlacement.triangle( -// VerticalAnchor.absolute(-32), -// VerticalAnchor.absolute(150) -// ) -// ) -// ) -// ) -// )); - - -// private static List makeTarget(Metals.MetalType metalType) -// { -// return ImmutableList.of( -// OreConfiguration.target( -// OreFeatures.STONE_ORE_REPLACEABLES, -// BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), -// OreConfiguration.target( -// OreFeatures.DEEPSLATE_ORE_REPLACEABLES, -// BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) -// ); -// } + public static final Map>> CONFIGURED_METAL_ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> CONFIGURED_FEATURES.register( + type.getName() + Constants.RegNameStubs.ORE, + () -> new ConfiguredFeature<>( + Feature.ORE, + new OreConfiguration( + makeTarget(type), + 9))) + )); + + public static final Map> PLACED_METAL_ORE_FEATURES = + Arrays.stream(Metals.MetalType.values()) + .filter(Metals.MetalType::hasOre) + .collect(Collectors.toMap( + Function.identity(), + type -> + PLACED_FEATURES.register( + type.getName() + Constants.RegNameStubs.ORE, + () -> new PlacedFeature(Holder.direct(CONFIGURED_METAL_ORE_FEATURES.get(type).get()), + commonOrePlacement( + 10,//width? + HeightRangePlacement.triangle( + VerticalAnchor.absolute(-32), + VerticalAnchor.absolute(150) + ) + ) + ) + ) + )); + + + private static List makeTarget(Metals.MetalType metalType) + { + + return ImmutableList.of( + OreConfiguration.target( + ruletest1, + BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), + OreConfiguration.target( + ruletest2, + BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) + ); + } // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientSetup.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryModClientEvents.java similarity index 83% rename from src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientSetup.java rename to src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryModClientEvents.java index 301f66da3..273604ff2 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientSetup.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryModClientEvents.java @@ -1,37 +1,31 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.client.eventHandlers; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Taldain; import leaf.cosmere.sandmastery.client.gui.SandPouchContainerScreen; import leaf.cosmere.sandmastery.client.gui.SandSpreaderScreen; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreader.SandSpreaderMenu; +import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchContainerMenu; import leaf.cosmere.sandmastery.common.registries.SandmasteryEntityTypes; import leaf.cosmere.sandmastery.common.registries.SandmasteryMenuTypes; -import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchContainerMenu; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.renderer.entity.ThrownItemRenderer; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.core.Registry; -import net.minecraft.world.inventory.InventoryMenu; +import net.minecraft.core.registries.Registries; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.registries.RegisterEvent; -import java.util.Locale; - @Mod.EventBusSubscriber(modid = Sandmastery.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) -public class SandmasteryClientSetup +public class SandmasteryModClientEvents { @@ -50,7 +44,7 @@ public static void init(final FMLClientSetupEvent event) @SubscribeEvent(priority = EventPriority.LOW) public static void registerContainers(RegisterEvent event) { - event.register(Registry.MENU_REGISTRY, helper -> + event.register(Registries.MENU, helper -> { MenuScreens.register((MenuType) SandmasteryMenuTypes.SAND_POUCH.get(), SandPouchContainerScreen::new); MenuScreens.register((MenuType) SandmasteryMenuTypes.SAND_SPREADER.get(), SandSpreaderScreen::new); @@ -64,7 +58,7 @@ public static void RegisterRenderers(EntityRenderersEvent.RegisterRenderers even event.registerEntityRenderer(SandmasteryEntityTypes.SAND_PROJECTILE.get(), ThrownItemRenderer::new); } - //special thank you to the chisels and bits team who have an example of how to register other sprites +/* //special thank you to the chisels and bits team who have an example of how to register other sprites @SubscribeEvent public static void registerIconTextures(TextureStitchEvent.Pre event) { @@ -81,6 +75,6 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) String abilityToLower = manifestation.toString().toLowerCase(Locale.ROOT); event.addSprite(Sandmastery.rl("icon/sandmastery/" + abilityToLower)); } - } + }*/ } diff --git a/src/soulforgery/java/leaf/cosmere/soulforgery/client/SoulforgeryModClientEvents.java b/src/soulforgery/java/leaf/cosmere/soulforgery/client/SoulforgeryModClientEvents.java index 450ef781b..04d9f331c 100644 --- a/src/soulforgery/java/leaf/cosmere/soulforgery/client/SoulforgeryModClientEvents.java +++ b/src/soulforgery/java/leaf/cosmere/soulforgery/client/SoulforgeryModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.client; @@ -7,11 +7,8 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.soulforgery.client.render.SoulforgeryRenderers; import leaf.cosmere.soulforgery.common.Soulforgery; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; @@ -31,17 +28,4 @@ public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefini { } - - //special thank you to the chisels and bits team who have an soulforgery of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(Soulforgery.rl("icon/soulforgery")); - } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/HUDHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/HUDHandler.java index cd5095a76..581fc9d4f 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/HUDHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/HUDHandler.java @@ -1,18 +1,17 @@ /* - * File updated ~ 27 - 2 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.client; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.api.Manifestations; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.entity.player.Player; @@ -25,7 +24,7 @@ public class HUDHandler private static final ResourceLocation stormlightBar = new ResourceLocation(Surgebinding.MODID, "textures/gui/stormlight_hud.png"); - public static void onDrawScreenPost(PoseStack ms) + public static void onDrawScreenPost(GuiGraphics guiGraphics) { Minecraft mc = Minecraft.getInstance(); if (mc.options.hideGui) @@ -55,7 +54,7 @@ public static void onDrawScreenPost(PoseStack ms) if (heldStormlight > 0) { final int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); - renderStormlightBar(ms, heldStormlight, maxPlayerStormlight); + renderStormlightBar(guiGraphics, heldStormlight, maxPlayerStormlight); } } @@ -68,7 +67,7 @@ public static void onDrawScreenPost(PoseStack ms) RenderSystem.setShaderColor(1F, 1F, 1F, 1F); } - private static void renderStormlightBar(PoseStack ms, int heldStormlight, int maxPlayerStormlight) + private static void renderStormlightBar(GuiGraphics gui, int heldStormlight, int maxPlayerStormlight) { Minecraft mc = Minecraft.getInstance(); int barWidth = 182; @@ -120,22 +119,11 @@ private static void renderStormlightBar(PoseStack ms, int heldStormlight, int ma 1// - (red / 255F)//fading in and out? ); - RenderSystem.setShaderTexture(0, stormlightBar); - RenderSystem.enableBlend(); RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); //draw textured rect - GuiComponent.blit( - ms, - barStartingX, - barStartingY, - 0, - 251, - barWidth, - 5, - 256, - 256); + gui.blit(stormlightBar, barStartingX, barStartingY, 0, 251, barWidth, 5, 256, 256); RenderSystem.disableBlend(); RenderSystem.setShaderColor(1, 1, 1, 1); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java index f2c66ca34..8ad9841e0 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java @@ -1,30 +1,24 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 7 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.client; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Roshar; import leaf.cosmere.surgebinding.client.render.SurgebindingLayerDefinitions; import leaf.cosmere.surgebinding.client.render.SurgebindingRenderers; import leaf.cosmere.surgebinding.client.render.model.ChullModel; import leaf.cosmere.surgebinding.client.render.model.CrypticModel; import leaf.cosmere.surgebinding.client.render.model.ShardplateModel; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; -import java.util.Locale; - @Mod.EventBusSubscriber(modid = Surgebinding.MODID, value = Dist.CLIENT, bus = Mod.EventBusSubscriber.Bus.MOD) public class SurgebindingModClientEvents { @@ -35,7 +29,7 @@ public static void registerGuiOverlays(RegisterGuiOverlaysEvent guiOverlaysEvent guiOverlaysEvent.registerAbove( VanillaGuiOverlay.EXPERIENCE_BAR.id(), "hud", - (gui, poseStack, partialTick, width, height) -> HUDHandler.onDrawScreenPost(poseStack) + (forgeGui, gui, partialTick, width, height) -> HUDHandler.onDrawScreenPost(gui) ); } @@ -58,6 +52,7 @@ public static void init(final FMLClientSetupEvent event) } + /* todo - re setup power icon registration //special thank you to the chisels and bits team who have an example of how to register other sprites @SubscribeEvent public static void registerIconTextures(TextureStitchEvent.Pre event) @@ -75,6 +70,6 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) String toLowerCase = surge.toString().toLowerCase(Locale.ROOT); event.addSprite(Surgebinding.rl("icon/surgebinding/" + toLowerCase)); } - } + }*/ } From 9488d5cf8b1155e18eb34aee71c611734a34b1f3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 9 Aug 2024 13:02:51 +1200 Subject: [PATCH 0868/1090] [Port] Most non data-gen scripts are errorless now. --- .../feruchemy/client/FeruchemyClientEvents.java | 6 +++--- .../common/effects/store/BendalloyStoreEffect.java | 4 ++-- .../common/effects/store/BrassStoreEffect.java | 9 ++++++--- .../common/effects/store/IronStoreEffect.java | 4 ++-- .../common/effects/tap/BendalloyTapEffect.java | 4 ++-- .../feruchemy/common/effects/tap/BrassTapEffect.java | 4 ++-- .../feruchemy/common/effects/tap/CadmiumTapEffect.java | 4 ++-- .../common/effects/tap/DuraluminTapEffect.java | 4 ++-- .../eventHandlers/FeruchemyEntityEventHandler.java | 4 ++-- .../feruchemy/common/items/BandsOfMourningItem.java | 10 +++------- .../common/manifestation/FeruchemyBronze.java | 10 +++++----- .../common/manifestation/FeruchemyManifestation.java | 8 ++++---- .../cosmere/feruchemy/common/utils/MiscHelper.java | 4 ++-- .../java/leaf/cosmere/feruchemy/mixin/EntityMixin.java | 9 +++++---- .../cosmere/feruchemy/mixin/GameRendererMixin.java | 4 ++-- .../cosmere/feruchemy/mixin/IForgeEntityMixin.java | 5 +++-- src/main/java/leaf/cosmere/common/fog/FogManager.java | 4 ++-- 17 files changed, 49 insertions(+), 48 deletions(-) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientEvents.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientEvents.java index d9b004322..db413029b 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientEvents.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientEvents.java @@ -1,14 +1,14 @@ /* - * File updated ~ 23 - 10 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.client; import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.registry.AttributesRegistry; +import leaf.cosmere.feruchemy.client.utils.FeruchemyChargeThread; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.manifestation.FeruchemyAtium; -import leaf.cosmere.feruchemy.client.utils.FeruchemyChargeThread; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; @@ -133,7 +133,7 @@ public static void onLivingRenderPost(RenderLivingEvent.Post event) @SubscribeEvent public static void onEntityJoinLevelEvent(EntityJoinLevelEvent event) { - if (event.getEntity().level.isClientSide && event.getEntity() instanceof Player) + if (event.getEntity().level().isClientSide && event.getEntity() instanceof Player) { FeruchemyChargeThread.getInstance().start(); } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BendalloyStoreEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BendalloyStoreEffect.java index 13835a457..51262e3ec 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BendalloyStoreEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BendalloyStoreEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.store; @@ -22,7 +22,7 @@ public BendalloyStoreEffect(Metals.MetalType type) @Override public void applyEffectTick(ISpiritweb data, double strength) { - if (data.getLiving() instanceof Player player && !player.level.isClientSide) + if (data.getLiving() instanceof Player player && !player.level().isClientSide) { final FoodData foodData = player.getFoodData(); foodData.setFoodLevel((int) Math.max(0, foodData.getFoodLevel() - (1 + strength))); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BrassStoreEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BrassStoreEffect.java index 208a642f2..d371707c0 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BrassStoreEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/BrassStoreEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 26 - 10 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.store; @@ -8,6 +8,7 @@ import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.effects.FeruchemyEffectBase; +import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; @@ -26,7 +27,7 @@ public BrassStoreEffect(Metals.MetalType type) public static void onLivingHurtEvent(LivingHurtEvent event) { - if (!event.getSource().isFire() || event.isCanceled()) + if (!event.getSource().is(DamageTypes.ON_FIRE) || event.isCanceled()) { return; } @@ -59,7 +60,9 @@ public static void onLivingHurtEvent(LivingHurtEvent event) public static void onLivingAttackEvent(LivingAttackEvent event) { - if (!event.getSource().isFire() || event.isCanceled()) + //todo - check if on fire is what this is meant to be + //and whether we should actually be cancelling damage outright is correct + if (!event.getSource().is(DamageTypes.ON_FIRE) || event.isCanceled()) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/IronStoreEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/IronStoreEffect.java index a46394f65..c3381440d 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/IronStoreEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/store/IronStoreEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.store; @@ -35,7 +35,7 @@ public void applyEffectTick(ISpiritweb data, double strength) { final LivingEntity living = data.getLiving(); //ensure the user has correct buffs at least as strong as their store effect - if (living.level.isClientSide) + if (living.level().isClientSide) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BendalloyTapEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BendalloyTapEffect.java index 80798e47f..76a0cd01c 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BendalloyTapEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BendalloyTapEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.tap; @@ -21,7 +21,7 @@ public BendalloyTapEffect(Metals.MetalType type) @Override public void applyEffectTick(ISpiritweb data, double strength) { - if (data.getLiving() instanceof Player player && !player.level.isClientSide) + if (data.getLiving() instanceof Player player && !player.level().isClientSide) { final FoodData foodData = player.getFoodData(); final int i = (int) (1 + strength); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BrassTapEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BrassTapEffect.java index 2dee893e4..4a938cdfc 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BrassTapEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/BrassTapEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 3 - 2024 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.tap; @@ -39,7 +39,7 @@ public void applyEffectTick(ISpiritweb data, double strength) { //todo move to config final LivingEntity living = data.getLiving(); - if (!living.level.isClientSide && strength >= 6 && !living.isInWater()) + if (!living.level().isClientSide && strength >= 6 && !living.isInWater()) { //set user on fire living.setSecondsOnFire(3); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/CadmiumTapEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/CadmiumTapEffect.java index b5a712968..3d9708890 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/CadmiumTapEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/CadmiumTapEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.tap; @@ -41,7 +41,7 @@ protected boolean isActiveTick(ISpiritweb data) public void applyEffectTick(ISpiritweb data, double strength) { final LivingEntity living = data.getLiving(); - if (living.level.isClientSide) + if (living.level().isClientSide) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/DuraluminTapEffect.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/DuraluminTapEffect.java index a301e8293..594b07da8 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/DuraluminTapEffect.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/effects/tap/DuraluminTapEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.effects.tap; @@ -31,7 +31,7 @@ public void applyEffectTick(ISpiritweb data, double strength) { final LivingEntity living = data.getLiving(); //ensure the user has correct buffs at least as strong as their store effect - if (living.level.isClientSide) + if (living.level().isClientSide) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 919b7718c..199cca2d7 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 27 - 10 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.eventHandlers; @@ -28,7 +28,7 @@ public class FeruchemyEntityEventHandler @SubscribeEvent public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) { - if (!(event.getTarget() instanceof LivingEntity target) || event.getEntity().level.isClientSide) + if (!(event.getTarget() instanceof LivingEntity target) || event.getEntity().level().isClientSide) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java index 20fc1c4f3..f6eaf4eb0 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 15 - 10 - 2022 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.items; @@ -7,19 +7,15 @@ import com.google.common.collect.Multimap; import leaf.cosmere.api.Constants; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.CompoundNBTHelper; import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; -import javax.annotation.Nonnull; import java.util.UUID; public class BandsOfMourningItem extends BraceletMetalmindItem @@ -28,7 +24,7 @@ public BandsOfMourningItem() { super(Metals.MetalType.HARMONIUM); } - +/*todo setup filled bands of mourning for creative @Override public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { @@ -51,7 +47,7 @@ public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList< stacks.add(fullPower); } - } + }*/ @Override public float getMaxChargeModifier() diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyBronze.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyBronze.java index dba7be109..5ab6f59ed 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyBronze.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyBronze.java @@ -1,5 +1,5 @@ /* - * File updated ~ 15 - 10 - 2022 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.manifestation; @@ -132,7 +132,7 @@ private void trySleep(ISpiritweb data) } } - if (player.level instanceof ServerLevel serverLevel) + if (player.level() instanceof ServerLevel serverLevel) { serverLevel.updateSleepingPlayerList(); } @@ -155,11 +155,11 @@ private boolean canSleep(Player player) return false;//(PlayerEntity.SleepResult.OTHER_PROBLEM); } - if (!player.level.dimensionType().natural()) + if (!player.level().dimensionType().natural()) { return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_HERE); } - if (player.level.isDay()) + if (player.level().isDay()) { return false;//(PlayerEntity.SleepResult.NOT_POSSIBLE_NOW); } @@ -172,7 +172,7 @@ private boolean canSleep(Player player) if (!player.isCreative()) { Vec3 vector3d = player.position(); - List list = player.level.getEntitiesOfClass( + List list = player.level().getEntitiesOfClass( Monster.class, new AABB( vector3d.x() - 8D, diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyManifestation.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyManifestation.java index 61486a3d6..b2f6a1f31 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyManifestation.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/manifestation/FeruchemyManifestation.java @@ -1,5 +1,5 @@ /* - * File updated ~ 15 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.manifestation; @@ -51,7 +51,7 @@ public boolean modeWraps(ISpiritweb data) public int modeMax(ISpiritweb data) { final double strength = getStrength(data, false); - return Mth.fastFloor(strength / 3); + return Mth.floor(strength / 3); } //tapping is negative, eg taking from store @@ -59,7 +59,7 @@ public int modeMax(ISpiritweb data) public int modeMin(ISpiritweb data) { final double strength = getStrength(data, false); - return -(Mth.fastFloor(strength)); + return -(Mth.floor(strength)); } @Override @@ -129,7 +129,7 @@ public int getCost(ISpiritweb data) { //wanting to tap //get cost - return mode >= -modeMax(data) ? mode : -(Mth.absFloor(Math.pow(Mth.abs(mode), 1.5d))); + return mode >= -modeMax(data) ? mode : -(Mth.abs(Mth.floor(Math.pow(Mth.abs(mode), 1.5d)))); } //if we are storing //check if there is space to store diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index c255c3775..b0ea8f3e4 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -1,5 +1,5 @@ /* - * File updated ~ 27 - 2 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.utils; @@ -18,7 +18,7 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType) { - if (metalType == null || livingEntity.level.isClientSide) + if (metalType == null || livingEntity.level().isClientSide) { return; } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/EntityMixin.java b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/EntityMixin.java index 0d8fcd578..29645a110 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/EntityMixin.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/EntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 16 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.mixin; @@ -50,7 +50,7 @@ public void handleCanEnterPose(Pose pose, CallbackInfoReturnable cir) Vec3 vector3d1 = new Vec3(livingEntity.getX() + f, livingEntity.getY() + (double) entityDimensions.height, livingEntity.getZ() + f); AABB box = new AABB(vector3d, vector3d1); - cir.setReturnValue(livingEntity.level.noCollision(livingEntity, box.deflate(1.0E-7D))); + cir.setReturnValue(livingEntity.level().noCollision(livingEntity, box.deflate(1.0E-7D))); } } } @@ -141,13 +141,14 @@ private static Map findFluidDistances(LivingEntity entity, Vec3 or points.put(new Vec3(box.maxX, box.minY, box.minZ), null); points.put(new Vec3(box.maxX, box.minY, box.maxZ), null); - double fluidStepHeight = entity.isOnGround() ? Math.max(1.0, entity.maxUpStep) : 0.0; + double fluidStepHeight = entity.onGround() ? Math.max(1.0, entity.getStepHeight()) : 0.0; for (Map.Entry entry : points.entrySet()) { for (int i = 0; ; i--) { - BlockPos landingPos = new BlockPos(entry.getKey()).offset(0.0, i + fluidStepHeight, 0.0); + //todo - check this still works. + BlockPos landingPos = BlockPos.containing(entry.getKey().x, entry.getKey().y + i + fluidStepHeight, entry.getKey().z); FluidState landingState = entity.getCommandSenderWorld().getFluidState(landingPos); double distanceToFluidSurface = landingPos.getY() + landingState.getOwnHeight() - entity.getY(); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java index 6f963a1a9..d5270a736 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.mixin; @@ -74,7 +74,7 @@ private void getRenderDistance(CallbackInfoReturnable info) final int i = Mth.abs(tinF.getMode(playerSpiritweb)); final double pow = Math.pow(2, i); - final int floor = Mth.fastFloor(pow); + final int floor = Mth.floor(pow); final float v = renderDistance / floor; info.setReturnValue(v); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java index 86de88ad2..aa566a8d1 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.mixin; @@ -24,7 +24,8 @@ public interface IForgeEntityMixin default float getStepHeight() { final Entity self = (Entity) this; - float vanillaStep = self.maxUpStep; + //todo replace this mixin completely with just using the attribute + float vanillaStep = self.getStepHeight(); if (self instanceof LivingEntity living) { AttributeInstance stepHeightAttribute = living.getAttribute(ForgeMod.STEP_HEIGHT_ADDITION.get()); diff --git a/src/main/java/leaf/cosmere/common/fog/FogManager.java b/src/main/java/leaf/cosmere/common/fog/FogManager.java index 2a427e8e7..1fa84a798 100644 --- a/src/main/java/leaf/cosmere/common/fog/FogManager.java +++ b/src/main/java/leaf/cosmere/common/fog/FogManager.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.fog; @@ -63,7 +63,7 @@ public void tick() { return; } - boolean isFogDense = this.mc.level.effects().isFoggyAt(pos.getX(), pos.getZ()) || this.mc.gui.getBossOverlay().shouldCreateWorldFog(); + boolean isFogDense = this.mc.level().effects().isFoggyAt(pos.getX(), pos.getZ()) || this.mc.gui.getBossOverlay().shouldCreateWorldFog(); float density = isFogDense ? 0.9F : 1.0F; ClientLevel pLevel = this.mc.level; From 107ab18d9dce4d576da06f975b6fb335d48d2d71 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 15:27:03 +1200 Subject: [PATCH 0869/1090] [Port] Creative Tabs --- .../client/utils/FeruchemyChargeThread.java | 334 +++++++++--------- .../cosmere/feruchemy/common/Feruchemy.java | 3 +- .../itemgroups/FeruchemyItemGroups.java | 23 -- .../common/items/BraceletMetalmindItem.java | 5 +- .../common/items/NecklaceMetalmindItem.java | 5 +- .../common/items/RingMetalmindItem.java | 5 +- .../registries/FeruchemyCreativeTabs.java | 82 +++++ .../java/leaf/cosmere/common/Cosmere.java | 4 +- .../common/itemgroups/CosmereItemGroups.java | 39 -- .../leaf/cosmere/common/items/BaseItem.java | 3 +- .../items/ChargeableMetalCurioItem.java | 5 +- .../leaf/cosmere/common/items/MetalItem.java | 3 +- .../cosmere/common/properties/PropTypes.java | 5 +- .../impl/BlockDeferredRegister.java | 5 +- .../impl/CreativeTabDeferredRegister.java | 136 +++++++ .../impl/CreativeTabRegistryObject.java | 18 + .../impl/ItemDeferredRegister.java | 6 +- .../common/registry/CreativeTabsRegistry.java | 111 ++++++ .../common/items/GemstoneItem.java | 9 +- 19 files changed, 550 insertions(+), 251 deletions(-) delete mode 100644 src/feruchemy/java/leaf/cosmere/feruchemy/common/itemgroups/FeruchemyItemGroups.java create mode 100644 src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java delete mode 100644 src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/CreativeTabDeferredRegister.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/CreativeTabRegistryObject.java create mode 100644 src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/utils/FeruchemyChargeThread.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/utils/FeruchemyChargeThread.java index dbf6f1e97..47df8f6b3 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/utils/FeruchemyChargeThread.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/utils/FeruchemyChargeThread.java @@ -1,171 +1,189 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.feruchemy.client.utils; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.ChargeableMetalCurioItem; -import leaf.cosmere.feruchemy.common.itemgroups.FeruchemyItemGroups; import net.minecraft.client.Minecraft; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.CuriosApi; +import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler; +import top.theillusivec4.curios.api.type.inventory.IDynamicStackHandler; -import java.util.*; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -public class FeruchemyChargeThread implements Runnable { - private static final Lock lock = new ReentrantLock(); - private static FeruchemyChargeThread INSTANCE; - private static final HashMap feruchemyChargeMap = new HashMap<>(); - static Thread t; - static boolean isStopping = false; - - public static FeruchemyChargeThread getInstance() - { - if (INSTANCE == null) - { - INSTANCE = new FeruchemyChargeThread(); - } - - return INSTANCE; - } - - public HashMap getCharges() - { - try - { - HashMap retVal = new HashMap<>(); - if (lock.tryLock()) - { - retVal.putAll(feruchemyChargeMap); - lock.unlock(); - } - return retVal; - } - catch (Exception e) - { - e.printStackTrace(); - lock.unlock(); - } - return new HashMap<>(); - } - - public void start() - { - if (t == null || isStopping) - { - CosmereAPI.logger.info("Feruchemy thread started"); - t = new Thread(this, "feruchemy_enumerator_thread"); - isStopping = false; - t.start(); - } - } - - public void stop() - { - if (t != null && !isStopping) - { - isStopping = true; - } - } - - @Override - public void run() { - Minecraft mc = Minecraft.getInstance(); - - // hashmap to keep track of each metal's f-charge in the inventory - final HashMap metalmindCharges = new HashMap<>(); - - while (!isStopping) - { - try - { - // no serverside action, unloaded levels, or non-existent players allowed >:( - if (mc.level == null || mc.player == null || !mc.level.isClientSide) - { - break; - } - - if (mc.player.tickCount % 2 != 0) // only run on even ticks - { - try - { - Thread.sleep(50); // 20 ticks per 1000ms, 1000/20 = 50, rest for 1 tick - } - catch (Exception e) - { - e.printStackTrace(); - } - continue; - } - - metalmindCharges.clear(); - - // all inventory metalminds are counted - for (ItemStack stack : mc.player.getInventory().items) - { - if (stack.getItem() instanceof ChargeableMetalCurioItem item) - { - // is either f-item or h-item - if (item.getItemCategory() == FeruchemyItemGroups.METALMINDS) - { - Double chargeToAdd = (double) item.getCharge(stack); - if (metalmindCharges.containsKey(item.getMetalType())) - { - metalmindCharges.put(item.getMetalType(), metalmindCharges.get(item.getMetalType()) + chargeToAdd); - } - else - { - metalmindCharges.put(item.getMetalType(), chargeToAdd); - } - } - } - } - - // all curio metalminds are counted - CuriosApi.getCuriosHelper().getEquippedCurios(mc.player) - .map(mapper -> - { - for (int i = 0; i < mapper.getSlots(); i++) - { - if (mapper.getStackInSlot(i).getItem() instanceof ChargeableMetalCurioItem item) - { - if (item.getItemCategory() == FeruchemyItemGroups.METALMINDS) - { - Double chargeToAdd = (double) item.getCharge(mapper.getStackInSlot(i)); - if (metalmindCharges.containsKey(item.getMetalType())) - { - metalmindCharges.put(item.getMetalType(), metalmindCharges.get(item.getMetalType()) + chargeToAdd); - } - else - { - metalmindCharges.put(item.getMetalType(), chargeToAdd); - } - } - } - } - return true; - }); - - try - { - if (lock.tryLock()) - { - feruchemyChargeMap.clear(); - feruchemyChargeMap.putAll(metalmindCharges); - lock.unlock(); - } - } - catch (Exception e) - { - e.printStackTrace(); - lock.unlock(); - } - } - catch (Exception e) - { - CosmereAPI.logger.warn(Arrays.toString(e.getStackTrace())); - } - } - stop(); - } +public class FeruchemyChargeThread implements Runnable +{ + private static final Lock lock = new ReentrantLock(); + private static FeruchemyChargeThread INSTANCE; + private static final HashMap feruchemyChargeMap = new HashMap<>(); + static Thread t; + static boolean isStopping = false; + + public static FeruchemyChargeThread getInstance() + { + if (INSTANCE == null) + { + INSTANCE = new FeruchemyChargeThread(); + } + + return INSTANCE; + } + + public HashMap getCharges() + { + try + { + HashMap retVal = new HashMap<>(); + if (lock.tryLock()) + { + retVal.putAll(feruchemyChargeMap); + lock.unlock(); + } + return retVal; + } + catch (Exception e) + { + e.printStackTrace(); + lock.unlock(); + } + return new HashMap<>(); + } + + public void start() + { + if (t == null || isStopping) + { + CosmereAPI.logger.info("Feruchemy thread started"); + t = new Thread(this, "feruchemy_enumerator_thread"); + isStopping = false; + t.start(); + } + } + + public void stop() + { + if (t != null && !isStopping) + { + isStopping = true; + } + } + + @Override + public void run() + { + Minecraft mc = Minecraft.getInstance(); + + // hashmap to keep track of each metal's f-charge in the inventory + final HashMap metalmindCharges = new HashMap<>(); + + while (!isStopping) + { + try + { + // no serverside action, unloaded levels, or non-existent players allowed >:( + if (mc.level == null || mc.player == null || !mc.level.isClientSide) + { + break; + } + + if (mc.player.tickCount % 2 != 0) // only run on even ticks + { + try + { + Thread.sleep(50); // 20 ticks per 1000ms, 1000/20 = 50, rest for 1 tick + } + catch (Exception e) + { + e.printStackTrace(); + } + continue; + } + + metalmindCharges.clear(); + + // all inventory metalminds are counted + for (ItemStack stack : mc.player.getInventory().items) + { + if (stack.getItem() instanceof ChargeableMetalCurioItem item) + { + // is either f-item or h-item + //if (item.getItemCategory() == FeruchemyItemGroups.METALMINDS) + { + Double chargeToAdd = (double) item.getCharge(stack); + if (metalmindCharges.containsKey(item.getMetalType())) + { + metalmindCharges.put(item.getMetalType(), metalmindCharges.get(item.getMetalType()) + chargeToAdd); + } + else + { + metalmindCharges.put(item.getMetalType(), chargeToAdd); + } + } + } + } + + // all curio metalminds are counted + CuriosApi.getCuriosInventory(mc.player).ifPresent(handler -> + { + Map curios = handler.getCurios(); + for (ICurioStacksHandler stacksHandler : curios.values()) + { + final IDynamicStackHandler stacks = stacksHandler.getStacks(); + + for (int i = 0; i < stacks.getSlots(); i++) + { + final ItemStack stackInSlot = stacks.getStackInSlot(i); + if (stackInSlot.getItem() instanceof ChargeableMetalCurioItem item) + { + Double chargeToAdd = (double) item.getCharge(stackInSlot); + if (metalmindCharges.containsKey(item.getMetalType())) + { + metalmindCharges.put(item.getMetalType(), metalmindCharges.get(item.getMetalType()) + chargeToAdd); + } + else + { + metalmindCharges.put(item.getMetalType(), chargeToAdd); + } + } + } + } + }); + + CuriosApi.getCuriosInventory(mc.player) + .map(mapper -> + { + + return true; + }); + + try + { + if (lock.tryLock()) + { + feruchemyChargeMap.clear(); + feruchemyChargeMap.putAll(metalmindCharges); + lock.unlock(); + } + } + catch (Exception e) + { + e.printStackTrace(); + lock.unlock(); + } + } + catch (Exception e) + { + CosmereAPI.logger.warn(Arrays.toString(e.getStackTrace())); + } + } + stop(); + } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java index 989b53a0d..e12b6b08d 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common; @@ -50,6 +50,7 @@ public Feruchemy() FeruchemyLootFunctions.LOOT_FUNCTIONS.register(modBus); FeruchemyLootModifiers.LOOT_MODIFIERS.register(modBus); FeruchemyEffects.EFFECTS.register(modBus); + FeruchemyCreativeTabs.CREATIVE_TABS.register(modBus); //Set our version number to match the mods.toml file, which matches the one in our build.gradle versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/itemgroups/FeruchemyItemGroups.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/itemgroups/FeruchemyItemGroups.java deleted file mode 100644 index 1c4ae25b3..000000000 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/itemgroups/FeruchemyItemGroups.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.feruchemy.common.itemgroups; - -import leaf.cosmere.feruchemy.common.Feruchemy; -import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; - -public class FeruchemyItemGroups -{ - - public static CreativeModeTab METALMINDS = new CreativeModeTab(Feruchemy.MODID + ".metalminds") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(FeruchemyItems.METAL_BRACELETS.entrySet().stream().findAny().get().getValue().get()); - } - }; -} diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java index b0451fdac..23a25088c 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java @@ -1,18 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.items; import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.ChargeableMetalCurioItem; -import leaf.cosmere.feruchemy.common.itemgroups.FeruchemyItemGroups; public class BraceletMetalmindItem extends ChargeableMetalCurioItem { public BraceletMetalmindItem(Metals.MetalType metalType) { - super(metalType, FeruchemyItemGroups.METALMINDS); + super(metalType); } @Override diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java index 2fb13952f..21c79c3fb 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java @@ -1,18 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.items; import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.ChargeableMetalCurioItem; -import leaf.cosmere.feruchemy.common.itemgroups.FeruchemyItemGroups; public class NecklaceMetalmindItem extends ChargeableMetalCurioItem { public NecklaceMetalmindItem(Metals.MetalType metalType) { - super(metalType, FeruchemyItemGroups.METALMINDS); + super(metalType); } @Override diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java index cfd97f9e5..d136e2ad3 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java @@ -1,18 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.items; import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.ChargeableMetalCurioItem; -import leaf.cosmere.feruchemy.common.itemgroups.FeruchemyItemGroups; public class RingMetalmindItem extends ChargeableMetalCurioItem { public RingMetalmindItem(Metals.MetalType metalType) { - super(metalType, FeruchemyItemGroups.METALMINDS); + super(metalType); } @Override diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java new file mode 100644 index 000000000..15f8e161e --- /dev/null +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -0,0 +1,82 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.feruchemy.common.registries; + +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.feruchemy.common.Feruchemy; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class FeruchemyCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Feruchemy.MODID, FeruchemyCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Feruchemy.MODID + ".items"), + FeruchemyItems.BANDS_OF_MOURNING, + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(FeruchemyItems.ITEMS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index f604aa0e0..96a331775 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common; @@ -13,7 +13,6 @@ import leaf.cosmere.common.eventHandlers.ColorHandler; import leaf.cosmere.common.network.NetworkPacketHandler; import leaf.cosmere.common.registry.*; -import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.common.capabilities.RegisterCapabilitiesEvent; import net.minecraftforge.eventbus.api.IEventBus; @@ -72,6 +71,7 @@ public Cosmere() GameEventRegistry.GAME_EVENTS.register(modBus); ArgumentTypeRegistry.ARGUMENT_TYPE_INFOS.register(modBus); + CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); FeatureRegistry.CONFIGURED_FEATURES.register(modBus); FeatureRegistry.PLACED_FEATURES.register(modBus); diff --git a/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java b/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java deleted file mode 100644 index 808a1003b..000000000 --- a/src/main/java/leaf/cosmere/common/itemgroups/CosmereItemGroups.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * File updated ~ 24 - 4 - 2021 ~ Leaf - */ - -package leaf.cosmere.common.itemgroups; - -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.registry.BlocksRegistry; -import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.common.CreativeModeTabRegistry; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - -public class CosmereItemGroups -{ - public static final DeferredRegister CREATIVE_TABS = DeferredRegister.create(new ResourceLocation(Cosmere.MODID + ".creative_tabs"), Cosmere.MODID); - - public static RegistryObject ITEMS = CREATIVE_TABS.register("items", () -> CreativeModeTab.builder() - .title(Component.translatable("itemGroups." + Cosmere.MODID + ".items")) - .icon(() -> new ItemStack(ItemsRegistry.GUIDE.asItem())) - .displayItems((params, output) -> { - // todo: cosmere items here - }) - .build()); - - public static RegistryObject BLOCKS = CREATIVE_TABS.register("blocks", () -> CreativeModeTab.builder() - .title(Component.translatable("itemGroups." + Cosmere.MODID + ".blocks")) - .icon(() -> new ItemStack(BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue().getBlock())) - .displayItems((params, output) -> { - // todo: cosmere blocks here - }) - .build()); - -} diff --git a/src/main/java/leaf/cosmere/common/items/BaseItem.java b/src/main/java/leaf/cosmere/common/items/BaseItem.java index 2b1798ae8..93ecabd64 100644 --- a/src/main/java/leaf/cosmere/common/items/BaseItem.java +++ b/src/main/java/leaf/cosmere/common/items/BaseItem.java @@ -1,10 +1,9 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.items; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.properties.PropTypes; import net.minecraft.util.Mth; import net.minecraft.world.item.Item; diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index e250e7d35..b4b2f9dda 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 8 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.items; @@ -15,7 +15,6 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; @@ -26,7 +25,7 @@ public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHas { private final Metals.MetalType metalType; - public ChargeableMetalCurioItem(Metals.MetalType metalType, CreativeModeTab group) + public ChargeableMetalCurioItem(Metals.MetalType metalType) { super(PropTypes.Items.ONE.get().rarity(metalType.getRarity())); this.metalType = metalType; diff --git a/src/main/java/leaf/cosmere/common/items/MetalItem.java b/src/main/java/leaf/cosmere/common/items/MetalItem.java index c9c355378..a6d773ef5 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalItem.java @@ -1,12 +1,11 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.items; import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.properties.PropTypes; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; diff --git a/src/main/java/leaf/cosmere/common/properties/PropTypes.java b/src/main/java/leaf/cosmere/common/properties/PropTypes.java index 9d33676e6..e80b67255 100644 --- a/src/main/java/leaf/cosmere/common/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/common/properties/PropTypes.java @@ -1,15 +1,12 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.properties; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; -import net.minecraft.client.renderer.item.ItemProperties; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockBehaviour; import java.util.function.Supplier; diff --git a/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java index 8f7d23519..a21c9f27a 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/BlockDeferredRegister.java @@ -1,7 +1,10 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.common.registration.impl; import leaf.cosmere.api.providers.IBlockProvider; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.registration.DoubleDeferredRegister; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; diff --git a/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabDeferredRegister.java new file mode 100644 index 000000000..e2aba0725 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabDeferredRegister.java @@ -0,0 +1,136 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.registration.WrappedDeferredRegister; +import net.minecraft.core.registries.Registries; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import net.minecraftforge.eventbus.api.IEventBus; + +import java.util.function.Consumer; +import java.util.function.UnaryOperator; + +public class CreativeTabDeferredRegister extends WrappedDeferredRegister +{ + + private final Consumer addToExistingTabs; + private final String modid; + + public CreativeTabDeferredRegister(String modid) + { + this(modid, event -> + { + }); + } + + public CreativeTabDeferredRegister(String modid, Consumer addToExistingTabs) + { + super(modid, Registries.CREATIVE_MODE_TAB); + this.modid = modid; + this.addToExistingTabs = addToExistingTabs; + } + + @Override + public void register(IEventBus bus) + { + super.register(bus); + bus.addListener(addToExistingTabs); + } + + /** + * @apiNote We manually require the title and icon to be passed so that we ensure all tabs have one. + */ + public CreativeTabRegistryObject registerMain(Component title, IItemProvider icon, UnaryOperator operator) + { + return register(modid, title, icon, operator); + } + + /** + * @apiNote We manually require the title and icon to be passed so that we ensure all tabs have one. + */ + public CreativeTabRegistryObject register(String name, Component title, IItemProvider icon, UnaryOperator operator) + { + return register(name, () -> + { + CreativeModeTab.Builder builder = CreativeModeTab.builder() + .title(title) + .icon(icon::getItemStack) + .withTabFactory(CosmereCreativeTab::new); + return operator.apply(builder).build(); + }, CreativeTabRegistryObject::new); + } + + public static void addToDisplay(CreativeModeTab.Output output, ItemLike... items) + { + for (ItemLike item : items) + { + addToDisplay(output, item); + } + } + + public static void addToDisplay(CreativeModeTab.Output output, ItemLike itemLike) + { + if (itemLike.asItem() instanceof ICustomCreativeTabContents contents) + { + if (contents.addDefault()) + { + output.accept(itemLike); + } + contents.addItems(output); + } + else + { + output.accept(itemLike); + } + } + + public static void addToDisplay(ItemDeferredRegister register, CreativeModeTab.Output output) + { + for (IItemProvider itemProvider : register.getAllItems()) + { + addToDisplay(output, itemProvider); + } + } + + public static void addToDisplay(BlockDeferredRegister register, CreativeModeTab.Output output) + { + for (IBlockProvider itemProvider : register.getAllBlocks()) + { + addToDisplay(output, itemProvider); + } + } + + public interface ICustomCreativeTabContents + { + + void addItems(CreativeModeTab.Output tabOutput); + + default boolean addDefault() + { + return true; + } + } + + public static class CosmereCreativeTab extends CreativeModeTab + { + + protected CosmereCreativeTab(Builder builder) + { + super(builder); + } + + @Override + public int getLabelColor() + { + //todo better colours references + return 0xFF404040; + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabRegistryObject.java b/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabRegistryObject.java new file mode 100644 index 000000000..3c3e7bfaf --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/CreativeTabRegistryObject.java @@ -0,0 +1,18 @@ +/* + * File updated ~ 9 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.common.registration.WrappedRegistryObject; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraftforge.registries.RegistryObject; + +public class CreativeTabRegistryObject extends WrappedRegistryObject +{ + + public CreativeTabRegistryObject(RegistryObject registryObject) + { + super(registryObject); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java index e314fc48c..f0d410dfa 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/ItemDeferredRegister.java @@ -1,14 +1,16 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.common.registration.impl; import leaf.cosmere.api.providers.IItemProvider; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.registration.WrappedDeferredRegister; import net.minecraft.world.entity.Mob; import net.minecraft.world.item.Item; import net.minecraft.world.item.Rarity; import net.minecraftforge.common.ForgeSpawnEggItem; import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java new file mode 100644 index 000000000..35d6aa555 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -0,0 +1,111 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registry; + +import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.level.block.Block; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class CreativeTabsRegistry +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Cosmere.MODID, CreativeTabsRegistry::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Cosmere.MODID + ".items"), + ItemsRegistry.GUIDE, + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); + }) + ); + + public static final CreativeTabRegistryObject BLOCKS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Cosmere.MODID + ".blocks"), + BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue(), + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); + }) + ); + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + + for (var ore : BlocksRegistry.METAL_BLOCKS.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + for (IBlockProvider blockProvider : BlocksRegistry.BLOCKS.getAllBlocks()) + { + Block block = blockProvider.getBlock(); + //if (block == valid) + //{ + // CreativeTabDeferredRegister.addToDisplay(event, block); + //} + } + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + for (IItemProvider item : ItemsRegistry.METAL_INGOTS.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, item); + } + } + } + +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java index e275f13b4..a6510a37d 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 3 - 4 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -9,7 +9,6 @@ import leaf.cosmere.api.Roshar; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.charge.ItemChargeHelper; -import leaf.cosmere.common.itemgroups.CosmereItemGroups; import leaf.cosmere.common.items.ChargeableItemBase; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; @@ -33,7 +32,7 @@ public class GemstoneItem extends ChargeableItemBase implements IHasGemType public GemstoneItem(Roshar.Gemstone gemstone, Roshar.GemSize gemSize) { - super(PropTypes.Items.SIXTY_FOUR.get().tab(CosmereItemGroups.ITEMS).rarity(Rarity.UNCOMMON)); + super(PropTypes.Items.SIXTY_FOUR.get().rarity(Rarity.UNCOMMON)); this.gemstone = gemstone; this.gemSize = gemSize; } @@ -65,9 +64,9 @@ public Roshar.GemSize getSize() @Override public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) { - if (entityItem.level.dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + if (entityItem.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) { - if (entityItem.level.isRainingAt(entityItem.blockPosition()) && entityItem.level.isThundering()) + if (entityItem.level().isRainingAt(entityItem.blockPosition()) && entityItem.level().isThundering()) { if (getCharge(stack) < getMaxCharge(stack)) { From c5d3501887a6cdb39b9d78f1bda2bbe7c58e8191 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 15:27:28 +1200 Subject: [PATCH 0870/1090] [Port] Fortune loot modification --- .../cosmere/feruchemy/common/Feruchemy.java | 1 - .../FeruchemyEntityEventHandler.java | 36 ++++++++++++++++++- .../java/leaf/cosmere/common/Cosmere.java | 1 + .../common/loot/FortuneBonusModifier.java | 21 +++++++---- .../registry/LootModifiersRegistry.java} | 12 +++---- 5 files changed, 56 insertions(+), 15 deletions(-) rename src/{feruchemy/java/leaf/cosmere/feruchemy => main/java/leaf/cosmere}/common/loot/FortuneBonusModifier.java (82%) rename src/{feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyLootModifiers.java => main/java/leaf/cosmere/common/registry/LootModifiersRegistry.java} (67%) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java index e12b6b08d..bb6809dd8 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/Feruchemy.java @@ -48,7 +48,6 @@ public Feruchemy() FeruchemyAttributes.ATTRIBUTES.register(modBus); FeruchemyManifestations.MANIFESTATIONS.register(modBus); FeruchemyLootFunctions.LOOT_FUNCTIONS.register(modBus); - FeruchemyLootModifiers.LOOT_MODIFIERS.register(modBus); FeruchemyEffects.EFFECTS.register(modBus); FeruchemyCreativeTabs.CREATIVE_TABS.register(modBus); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 199cca2d7..28e46cd0c 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -1,11 +1,13 @@ /* - * File updated ~ 9 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.eventHandlers; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.items.MetalNuggetItem; +import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.effects.store.BrassStoreEffect; import leaf.cosmere.feruchemy.common.effects.tap.GoldTapEffect; @@ -13,12 +15,17 @@ import leaf.cosmere.feruchemy.common.utils.MiscHelper; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.Enchantments; +import net.minecraft.world.level.LevelAccessor; import net.minecraftforge.event.entity.EntityEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.living.LivingEntityUseItemEvent; import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.event.level.BlockEvent; +import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -105,4 +112,31 @@ public static void onLivingHurtEvent(LivingHurtEvent event) } + @SubscribeEvent(priority = EventPriority.LOWEST) + public void onBreakBlock(BlockEvent.BreakEvent evt) + { + Player player = evt.getPlayer(); + + int totalFortuneBonus = (int) EntityHelper.getAttributeValue(player, AttributesRegistry.COSMERE_FORTUNE.getAttribute()); + + if (totalFortuneBonus == 0) + { + return; + } + + ItemStack stack = player.getMainHandItem(); + int bonusLevel = stack.getEnchantmentLevel(Enchantments.BLOCK_FORTUNE); + int silklevel = stack.getEnchantmentLevel(Enchantments.SILK_TOUCH); + + LevelAccessor level = evt.getLevel(); + evt.setExpToDrop( + evt.getState().getExpDrop( + level, + level.getRandom(), + evt.getPos(), + bonusLevel + totalFortuneBonus, + silklevel + ) + ); + } } diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index 96a331775..dfb4eeb14 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -73,6 +73,7 @@ public Cosmere() CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); + LootModifiersRegistry.LOOT_MODIFIERS.register(modBus); FeatureRegistry.CONFIGURED_FEATURES.register(modBus); FeatureRegistry.PLACED_FEATURES.register(modBus); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/loot/FortuneBonusModifier.java b/src/main/java/leaf/cosmere/common/loot/FortuneBonusModifier.java similarity index 82% rename from src/feruchemy/java/leaf/cosmere/feruchemy/common/loot/FortuneBonusModifier.java rename to src/main/java/leaf/cosmere/common/loot/FortuneBonusModifier.java index 655728b2a..c0780a0a6 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/loot/FortuneBonusModifier.java +++ b/src/main/java/leaf/cosmere/common/loot/FortuneBonusModifier.java @@ -1,8 +1,8 @@ /* - * File updated ~ 23 - 10 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ -package leaf.cosmere.feruchemy.common.loot; +package leaf.cosmere.common.loot; import com.google.common.base.Suppliers; import com.mojang.serialization.Codec; @@ -19,10 +19,12 @@ import net.minecraft.world.item.enchantment.Enchantments; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.storage.loot.LootContext; +import net.minecraft.world.level.storage.loot.LootParams; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import net.minecraft.world.level.storage.loot.parameters.LootContextParams; import net.minecraft.world.level.storage.loot.predicates.LootItemCondition; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.common.loot.IGlobalLootModifier; import net.minecraftforge.common.loot.LootModifier; import org.jetbrains.annotations.NotNull; @@ -61,6 +63,7 @@ public Codec codec() { Entity entity = context.getParamOrNull(LootContextParams.THIS_ENTITY); BlockState blockState = context.getParamOrNull(LootContextParams.BLOCK_STATE); + Vec3 origin = context.getParamOrNull(LootContextParams.ORIGIN); if (blockState != null && entity instanceof LivingEntity livingEntity) { @@ -79,13 +82,17 @@ public Codec codec() EnchantmentHelper.setEnchantments(enchantments, fakeTool); - LootContext.Builder builder = new LootContext.Builder(context); - builder.withParameter(LootContextParams.TOOL, fakeTool); + LootParams lootparams = (new LootParams.Builder(context.getLevel())) + .withParameter(LootContextParams.ORIGIN, origin) + .withParameter(LootContextParams.THIS_ENTITY, entity) + .withParameter(LootContextParams.BLOCK_STATE, blockState) + .withParameter(LootContextParams.TOOL, fakeTool) + .create(LootContextParamSets.BLOCK); - LootContext newContext = builder.create(LootContextParamSets.BLOCK); - LootTable lootTable = context.getLevel().getServer().getLootTables().get(blockState.getBlock().getLootTable()); - return lootTable.getRandomItems(newContext); + LootTable lootTable = context.getLevel().getServer().getLootData().getLootTable(blockState.getBlock().getLootTable()); + + return lootTable.getRandomItems(lootparams); } } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyLootModifiers.java b/src/main/java/leaf/cosmere/common/registry/LootModifiersRegistry.java similarity index 67% rename from src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyLootModifiers.java rename to src/main/java/leaf/cosmere/common/registry/LootModifiersRegistry.java index 5f2cf244d..410591cfd 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyLootModifiers.java +++ b/src/main/java/leaf/cosmere/common/registry/LootModifiersRegistry.java @@ -1,18 +1,18 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ -package leaf.cosmere.feruchemy.common.registries; +package leaf.cosmere.common.registry; import com.mojang.serialization.Codec; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.loot.FortuneBonusModifier; import leaf.cosmere.common.registration.impl.GlobalLootModifierDeferredRegister; import leaf.cosmere.common.registration.impl.GlobalLootModifierRegistryObject; -import leaf.cosmere.feruchemy.common.Feruchemy; -import leaf.cosmere.feruchemy.common.loot.FortuneBonusModifier; import net.minecraftforge.common.loot.IGlobalLootModifier; -public class FeruchemyLootModifiers +public class LootModifiersRegistry { - public static final GlobalLootModifierDeferredRegister> LOOT_MODIFIERS = new GlobalLootModifierDeferredRegister<>(Feruchemy.MODID); + public static final GlobalLootModifierDeferredRegister> LOOT_MODIFIERS = new GlobalLootModifierDeferredRegister<>(Cosmere.MODID); public static final GlobalLootModifierRegistryObject> FORTUNE_BONUS = LOOT_MODIFIERS.register("fortune_bonus", FortuneBonusModifier.CODEC); } From 16d3839135801b9960aab18e53fdf922e9be25d3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 15:27:36 +1200 Subject: [PATCH 0871/1090] [Port] FogManager --- src/main/java/leaf/cosmere/common/fog/FogManager.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/fog/FogManager.java b/src/main/java/leaf/cosmere/common/fog/FogManager.java index 1fa84a798..2bad1178e 100644 --- a/src/main/java/leaf/cosmere/common/fog/FogManager.java +++ b/src/main/java/leaf/cosmere/common/fog/FogManager.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.fog; @@ -63,10 +63,10 @@ public void tick() { return; } - boolean isFogDense = this.mc.level().effects().isFoggyAt(pos.getX(), pos.getZ()) || this.mc.gui.getBossOverlay().shouldCreateWorldFog(); + ClientLevel pLevel = this.mc.level; + boolean isFogDense = pLevel.effects().isFoggyAt(pos.getX(), pos.getZ()) || this.mc.gui.getBossOverlay().shouldCreateWorldFog(); float density = isFogDense ? 0.9F : 1.0F; - ClientLevel pLevel = this.mc.level; Camera camera = this.mc.gameRenderer.getMainCamera(); BiomeManager biomemanager = pLevel.getBiomeManager(); Vec3 playerPos = camera.getPosition().subtract(2.0D, 2.0D, 2.0D).scale(0.25D); From d40a7f6363dbcd4f7c92ac8aa29d38fb1ca59e3b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 15:41:54 +1200 Subject: [PATCH 0872/1090] [Port] KolossPatrolSpawner --- .../world/KolossPatrolSpawner.java | 223 +++++++++--------- 1 file changed, 108 insertions(+), 115 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/world/KolossPatrolSpawner.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/world/KolossPatrolSpawner.java index b35208a76..5a305be1f 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/world/KolossPatrolSpawner.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/world/KolossPatrolSpawner.java @@ -1,5 +1,5 @@ /* - * File updated ~ 31 - 7 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.capabilities.world; @@ -24,8 +24,11 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraftforge.common.ForgeHooks; +import net.minecraft.world.level.levelgen.PatrolSpawner; +/** + * Koloss spawn patrol version of {@link PatrolSpawner}. + */ public class KolossPatrolSpawner implements CustomSpawner { private int nextTick; @@ -36,87 +39,101 @@ public int tick(ServerLevel pLevel, boolean pSpawnEnemies, boolean pSpawnFriendl { return 0; } - if (!pLevel.getGameRules().getBoolean(GameRules.RULE_DO_PATROL_SPAWNING)) - { - return 0; - } - RandomSource randomsource = pLevel.random; - --this.nextTick; - if (this.nextTick > 0) + else if (!pLevel.getGameRules().getBoolean(GameRules.RULE_DO_PATROL_SPAWNING)) { return 0; } - this.nextTick += 12000 + randomsource.nextInt(1200); - long i = pLevel.getDayTime() / 24000L; - if (i >= 5L && pLevel.isDay()) + else { - final int ranNumTest = randomsource.nextInt(5); - if (ranNumTest != 0) - { - return 0; - } - int j = pLevel.players().size(); - if (j < 1) - { - return 0; - } - Player player = pLevel.players().get(randomsource.nextInt(j)); - if (player.isSpectator()) - { - return 0; - } - if (pLevel.isCloseToVillage(player.blockPosition(), 2)) + RandomSource randomsource = pLevel.random; + --this.nextTick; + if (this.nextTick > 0) { return 0; } - return trySpawnPatrol(pLevel, randomsource, player); - } - return 0; - } - - private int trySpawnPatrol(ServerLevel pLevel, RandomSource randomsource, Player player) - { - int k = (24 + randomsource.nextInt(24)) * (randomsource.nextBoolean() ? -1 : 1); - int l = (24 + randomsource.nextInt(24)) * (randomsource.nextBoolean() ? -1 : 1); - BlockPos.MutableBlockPos blockpos$mutableblockpos = player.blockPosition().mutable().move(k, 0, l); - - if (!pLevel.hasChunksAt( - blockpos$mutableblockpos.getX() - 10, - blockpos$mutableblockpos.getZ() - 10, - blockpos$mutableblockpos.getX() + 10, - blockpos$mutableblockpos.getZ() + 10)) - { - return 0; - } - Holder holder = pLevel.getBiome(blockpos$mutableblockpos); - if (holder.is(BiomeTags.WITHOUT_PATROL_SPAWNS)) - { - return 0; - } - int j1 = 0; - int k1 = (int) Math.ceil((double) pLevel.getCurrentDifficultyAt(blockpos$mutableblockpos).getEffectiveDifficulty()) + 1; - - for (int l1 = 0; l1 < k1; ++l1) - { - ++j1; - blockpos$mutableblockpos.setY(pLevel.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockpos$mutableblockpos).getY()); - if (l1 == 0) + else { - if (!this.spawnPatrolMember(pLevel, blockpos$mutableblockpos, randomsource, true)) + this.nextTick += 12000 + randomsource.nextInt(1200); + long i = pLevel.getDayTime() / 24000L; + if (i >= 5L && pLevel.isDay()) { - break; + if (randomsource.nextInt(5) != 0) + { + return 0; + } + else + { + int j = pLevel.players().size(); + if (j < 1) + { + return 0; + } + else + { + Player player = pLevel.players().get(randomsource.nextInt(j)); + if (player.isSpectator()) + { + return 0; + } + else if (pLevel.isCloseToVillage(player.blockPosition(), 2)) + { + return 0; + } + else + { + int k = (24 + randomsource.nextInt(24)) * (randomsource.nextBoolean() ? -1 : 1); + int l = (24 + randomsource.nextInt(24)) * (randomsource.nextBoolean() ? -1 : 1); + BlockPos.MutableBlockPos blockpos$mutableblockpos = player.blockPosition().mutable().move(k, 0, l); + int i1 = 10; + if (!pLevel.hasChunksAt(blockpos$mutableblockpos.getX() - 10, blockpos$mutableblockpos.getZ() - 10, blockpos$mutableblockpos.getX() + 10, blockpos$mutableblockpos.getZ() + 10)) + { + return 0; + } + else + { + Holder holder = pLevel.getBiome(blockpos$mutableblockpos); + if (holder.is(BiomeTags.WITHOUT_PATROL_SPAWNS)) + { + return 0; + } + else + { + int j1 = 0; + int k1 = (int) Math.ceil((double) pLevel.getCurrentDifficultyAt(blockpos$mutableblockpos).getEffectiveDifficulty()) + 1; + + for (int l1 = 0; l1 < k1; ++l1) + { + ++j1; + blockpos$mutableblockpos.setY(pLevel.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, blockpos$mutableblockpos).getY()); + if (l1 == 0) + { + if (!this.spawnPatrolMember(pLevel, blockpos$mutableblockpos, randomsource, true)) + { + break; + } + } + else + { + this.spawnPatrolMember(pLevel, blockpos$mutableblockpos, randomsource, false); + } + + blockpos$mutableblockpos.setX(blockpos$mutableblockpos.getX() + randomsource.nextInt(5) - randomsource.nextInt(5)); + blockpos$mutableblockpos.setZ(blockpos$mutableblockpos.getZ() + randomsource.nextInt(5) - randomsource.nextInt(5)); + } + + return j1; + } + } + } + } + } + } + else + { + return 0; } } - else - { - this.spawnPatrolMember(pLevel, blockpos$mutableblockpos, randomsource, false); - } - - blockpos$mutableblockpos.setX(blockpos$mutableblockpos.getX() + randomsource.nextInt(5) - randomsource.nextInt(5)); - blockpos$mutableblockpos.setZ(blockpos$mutableblockpos.getZ() + randomsource.nextInt(5) - randomsource.nextInt(5)); } - - return j1; } private boolean spawnPatrolMember(ServerLevel pLevel, BlockPos pPos, RandomSource pRandom, boolean pLeader) @@ -125,62 +142,38 @@ private boolean spawnPatrolMember(ServerLevel pLevel, BlockPos pPos, RandomSourc if (!NaturalSpawner.isValidEmptySpawnBlock(pLevel, pPos, blockstate, blockstate.getFluidState(), HemalurgyEntityTypes.KOLOSS_LARGE.getEntityType())) { return false; - } - //if you can spawn a pillager there, for now lets just assume koloss can go there - if (!PatrollingMonster.checkPatrollingMonsterSpawnRules(EntityType.PILLAGER, pLevel, MobSpawnType.PATROL, pPos, pRandom)) + else if (!PatrollingMonster.checkPatrollingMonsterSpawnRules(EntityType.PILLAGER, pLevel, MobSpawnType.PATROL, pPos, pRandom)) { return false; } - PatrollingMonster patrollingmonster; - if (pLeader) - { - patrollingmonster = HemalurgyEntityTypes.KOLOSS_LARGE.getEntityType().create(pLevel); - } else { final EntityTypeRegistryObject kolossType = - pLevel.random.nextBoolean() - ? HemalurgyEntityTypes.KOLOSS_MEDIUM - : HemalurgyEntityTypes.KOLOSS_SMALL; - - patrollingmonster = kolossType.getEntityType().create(pLevel); - } - - if (patrollingmonster != null) - { - if (pLeader) + pLeader + ? HemalurgyEntityTypes.KOLOSS_LARGE + : pLevel.random.nextBoolean() + ? HemalurgyEntityTypes.KOLOSS_MEDIUM + : HemalurgyEntityTypes.KOLOSS_SMALL; + + PatrollingMonster patrollingmonster = kolossType.getEntityType().create(pLevel); + if (patrollingmonster != null) { - patrollingmonster.setPatrolLeader(true); - patrollingmonster.findPatrolTarget(); - } - - patrollingmonster.setPos((double) pPos.getX(), (double) pPos.getY(), (double) pPos.getZ()); - - final int canEntitySpawn = ForgeHooks.canEntitySpawn( - patrollingmonster, - pLevel, - pPos.getX(), - pPos.getY(), - pPos.getZ(), - null, - MobSpawnType.PATROL); + if (pLeader) + { + patrollingmonster.setPatrolLeader(true); + patrollingmonster.findPatrolTarget(); + } - if (canEntitySpawn == -1) + patrollingmonster.setPos((double) pPos.getX(), (double) pPos.getY(), (double) pPos.getZ()); + patrollingmonster.finalizeSpawn(pLevel, pLevel.getCurrentDifficultyAt(pPos), MobSpawnType.PATROL, (SpawnGroupData) null, (CompoundTag) null); + pLevel.addFreshEntityWithPassengers(patrollingmonster); + return true; + } + else { return false; } - - patrollingmonster.finalizeSpawn( - pLevel, - pLevel.getCurrentDifficultyAt(pPos), - MobSpawnType.PATROL, - (SpawnGroupData) null, - (CompoundTag) null); - - pLevel.addFreshEntityWithPassengers(patrollingmonster); - return true; } - return false; } } From b122270ad5c23e2b04b2adc2f12f63a60cb9eaab Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 16:58:14 +1200 Subject: [PATCH 0873/1090] [Port] damage types --- .../common/items/HemalurgicSpikeItem.java | 27 +++++--- .../cosmere/common/items/MetalNuggetItem.java | 8 +-- .../registry/CosmereDamageTypesRegistry.java | 65 ++++++++++++++++--- 3 files changed, 76 insertions(+), 24 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 7f640fbb3..953fc7d63 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -34,20 +34,21 @@ import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.living.LivingDeathEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import org.apache.commons.lang3.tuple.ImmutableTriple; import top.theillusivec4.curios.api.CuriosApi; import top.theillusivec4.curios.api.SlotContext; +import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; import javax.annotation.Nonnull; -import java.util.Collection; import java.util.List; -import java.util.Optional; import java.util.UUID; import java.util.function.Predicate; +import static leaf.cosmere.common.registry.CosmereDamageTypesRegistry.SPIKED; + //Other ideas? //Spike Guns? //https://wob.coppermind.net/events/390-stuttgart-signing/#e12677 @@ -60,9 +61,6 @@ public class HemalurgicSpikeItem extends ChargeableMetalCurioItem implements IHe */ private final Multimap attributeModifiers; - - public static final DamageSource SPIKED = (new DamageSource("spiked")).bypassArmor().bypassMagic(); - public HemalurgicSpikeItem(Metals.MetalType metalType) { super(metalType, HemalurgyItemGroups.HEMALURGIC_SPIKES); @@ -361,9 +359,18 @@ public boolean canEquip(SlotContext slotContext, ItemStack stack) return matchingSpikeIdentity || onlyOneIronAllowed; }; - final Optional> curioSpike = CuriosApi.getCuriosHelper().findEquippedCurio(spikePredicate, player); - return curioSpike.isEmpty(); + + final LazyOptional curiosInventory = CuriosApi.getCuriosInventory(player); + + if (!curiosInventory.isPresent()) + { + return false; + } + + ICuriosItemHandler curiosInv = curiosInventory.resolve().get(); + + return curiosInv.findFirstCurio(spikePredicate).isEmpty(); } } return true; @@ -381,7 +388,7 @@ public void onEquip(SlotContext slotContext, ItemStack prevStack, ItemStack stac //then do hemalurgy spike logic //hurt the user //spiritweb attributes are handled in metalmind - slotContext.entity().hurt(SPIKED, 4); + slotContext.entity().hurt(SPIKED.source(slotContext.entity().level()), 4); } } @@ -395,7 +402,7 @@ public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack sta boolean isUnequipping = newStack.isEmpty() || !newStack.is(stack.getItem()); if (isUnequipping) { - slotContext.entity().hurt(SPIKED, 4); + slotContext.entity().hurt(SPIKED.source(slotContext.entity().level()), 4); } } } diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index e29a95743..bcd12624c 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -1,17 +1,13 @@ /* - * File updated ~ 18 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.items; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; -import net.minecraft.core.Holder; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; -import net.minecraft.world.damagesource.DamageSource; -import net.minecraft.world.damagesource.DamageType; -import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; @@ -69,7 +65,7 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity itemstack.shrink(1); } - pLivingEntity.hurt(CosmereDamageTypesRegistry.damageSource(pLevel, CosmereDamageTypesRegistry.EAT_METAL), 1); + pLivingEntity.hurt(CosmereDamageTypesRegistry.EAT_METAL.source(pLivingEntity.level()), 1); return itemstack; } diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java index 258870e4b..9d3697c39 100644 --- a/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java @@ -1,25 +1,74 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.common.registry; +import leaf.cosmere.api.text.IHasTranslationKey; import leaf.cosmere.common.Cosmere; +import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; public class CosmereDamageTypesRegistry { - public static final ResourceKey EAT_METAL = createKey("eat_metal"); + private static final Map INTERNAL_DAMAGE_TYPES = new HashMap<>(); + public static final Map DAMAGE_TYPES = Collections.unmodifiableMap(INTERNAL_DAMAGE_TYPES); - // special thanks to the aether mod team for inspiration - private static ResourceKey createKey(String name) - { - return ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(Cosmere.MODID, name)); - } + public static final CosmereDamageType EAT_METAL = new CosmereDamageType("eat_metal"); + public static final CosmereDamageType SPIKED = new CosmereDamageType("spiked"); - public static DamageSource damageSource(Level level, ResourceKey key) + public record CosmereDamageType(ResourceKey key, float exhaustion) implements IHasTranslationKey { - return new DamageSource(level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key)); + public CosmereDamageType + { + INTERNAL_DAMAGE_TYPES.put(key.location().toString(), this); + } + + private CosmereDamageType(String name) + { + this(name, 0); + } + + private CosmereDamageType(String name, float exhaustion) + { + this(ResourceKey.create(Registries.DAMAGE_TYPE, Cosmere.rl(name)), exhaustion); + } + + public String getMsgId() + { + return registryName().getNamespace() + "." + registryName().getPath(); + } + + public ResourceLocation registryName() + { + return key.location(); + } + + @NotNull + @Override + public String getTranslationKey() + { + return "death.attack." + getMsgId(); + } + + public DamageSource source(Level level) + { + return source(level.registryAccess()); + } + + public DamageSource source(RegistryAccess registryAccess) + { + return new DamageSource(registryAccess.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key())); + } } } From f3754327ba2c23ff675f7a5379fb1d7625e92d86 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 17:06:21 +1200 Subject: [PATCH 0874/1090] [Port] sandmastery water hud --- .../SandmasteryClientEvents.java | 2 +- .../sandmastery/client/gui/HUDHandler.java | 19 ++++++++++--------- .../sandmastery/common/items/SandJarItem.java | 17 ++++++++++------- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java index 1f0fce0cf..365bdeee6 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java @@ -24,7 +24,7 @@ public static void registerGuiOverlays(RegisterGuiOverlaysEvent guiOverlaysEvent guiOverlaysEvent.registerBelow( VanillaGuiOverlay.FOOD_LEVEL.id(), "hud", - (gui, poseStack, partialTick, width, height) -> HUDHandler.onDrawScreenPost(poseStack) + (forgeGui, guiGraphics, partialTick, width, height) -> HUDHandler.onDrawScreenPost(guiGraphics) ); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java index 648c8ad7c..07dabd6f1 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java @@ -13,7 +13,7 @@ import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; import leaf.cosmere.sandmastery.common.config.SandmasteryServerConfig; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiComponent; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.resources.ResourceLocation; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.entity.player.Player; @@ -25,7 +25,7 @@ public class HUDHandler { private static final ResourceLocation hydrationBar = new ResourceLocation(Sandmastery.MODID, "textures/gui/hydration_hud.png"); - public static void onDrawScreenPost(PoseStack ms) + public static void onDrawScreenPost(GuiGraphics guiGraphics) { Minecraft mc = Minecraft.getInstance(); if (mc.options.hideGui) @@ -54,7 +54,7 @@ public static void onDrawScreenPost(PoseStack ms) final int hydrationLevel = sbModule.getHydrationLevel(); if (hydrationLevel > 0) { - renderHydrationBar(ms, hydrationLevel, SandmasteryConfigs.SERVER.MAX_HYDRATION.get()); + renderHydrationBar(guiGraphics, hydrationLevel, SandmasteryConfigs.SERVER.MAX_HYDRATION.get()); } } @@ -67,7 +67,7 @@ public static void onDrawScreenPost(PoseStack ms) RenderSystem.setShaderColor(1F, 1F, 1F, 1F); } - private static void renderHydrationBar(PoseStack ms, int hydration, int maxHydration) + private static void renderHydrationBar(GuiGraphics gui, int hydration, int maxHydration) { Minecraft mc = Minecraft.getInstance(); int fullBarWidth = 83; @@ -113,7 +113,6 @@ private static void renderHydrationBar(PoseStack ms, int hydration, int maxHydra final int green = color.getGreen(); final int blue = color.getBlue(); - RenderSystem.setShaderTexture(0, hydrationBar); RenderSystem.enableBlend(); RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); RenderSystem.setShaderColor( @@ -123,8 +122,8 @@ private static void renderHydrationBar(PoseStack ms, int hydration, int maxHydra 0.25F ); //draw textured rect - GuiComponent.blit( - ms, + gui.blit( + hydrationBar, barStartingX, barStartingY, 0, @@ -133,14 +132,16 @@ private static void renderHydrationBar(PoseStack ms, int hydration, int maxHydra hydrationBarHeight, fullBarWidth, hydrationBarHeight); + RenderSystem.setShaderColor( red / 255F, green / 255F, blue / 255F, 1 ); - GuiComponent.blit( - ms, + + gui.blit( + hydrationBar, barStartingX, barStartingY, 0, diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java index 1cd278117..bae015e6c 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.items; import leaf.cosmere.api.Constants; @@ -6,21 +10,18 @@ import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.blocks.SandJarBlock; import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandLayerBlock; -import leaf.cosmere.sandmastery.common.itemgroups.SandmasteryItemGroups; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import leaf.cosmere.sandmastery.common.utils.SandmasteryConstants; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; -import net.minecraft.core.NonNullList; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.ClipContext; import net.minecraft.world.level.Level; @@ -28,8 +29,6 @@ import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; - public class SandJarItem extends ChargeableItemBase { public SandJarItem() @@ -90,7 +89,10 @@ public ItemStack getCraftingRemainingItem(ItemStack itemStack) public InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { ItemStack usedItem = pPlayer.getItemInHand(pUsedHand); - if (pLevel.isClientSide()) return InteractionResultHolder.pass(usedItem); + if (pLevel.isClientSide()) + { + return InteractionResultHolder.pass(usedItem); + } BlockHitResult res = getPlayerPOVHitResult(pLevel, pPlayer, ClipContext.Fluid.NONE); BlockPos pos = res.getBlockPos(); Direction dir = res.getDirection(); @@ -110,7 +112,8 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte } else { - inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected : -106, new ItemStack(SandmasteryItems.JAR_ITEM)); + inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected + : -106, new ItemStack(SandmasteryItems.JAR_ITEM)); if (state.is(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock()) && state.getValue(TaldainBlackSandLayerBlock.LAYERS) < 8) { int layers = state.getValue(TaldainBlackSandLayerBlock.LAYERS); From 41b6f5acdbb8a5d7170dd206bd6b4b6efb66163d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 17:12:05 +1200 Subject: [PATCH 0875/1090] [Port] Sandmastery UI --- .../client/gui/CoinPouchContainerScreen.java | 9 ++++--- .../SandmasteryClientEvents.java | 2 +- .../sandmastery/client/gui/HUDHandler.java | 4 +-- .../client/gui/SandPouchContainerScreen.java | 26 ++++++++++++------- .../client/gui/SandSpreaderScreen.java | 11 +++++--- 5 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java index bd870d862..49490a074 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java @@ -1,11 +1,10 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.client.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.coinpouch.CoinPouchContainerMenu; import net.minecraft.client.Minecraft; @@ -19,6 +18,8 @@ public class CoinPouchContainerScreen extends AbstractContainerScreen { + final ResourceLocation resourceLocation = new ResourceLocation(Allomancy.MODID, "textures/gui/coin_pouch.png"); + public CoinPouchContainerScreen(CoinPouchContainerMenu container, Inventory playerInv, Component title) { super(container, playerInv, title); @@ -47,11 +48,11 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, new ResourceLocation(Allomancy.MODID, "textures/gui/coin_pouch.png")); + RenderSystem.setShaderTexture(0, resourceLocation); int xPos = (width - imageWidth) / 2; int yPos = (height / 2) - (imageHeight / 2); - guiGraphics.blit(new ResourceLocation(Allomancy.MODID, "textures/gui/coin_pouch.png"), xPos, yPos, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(resourceLocation, xPos, yPos, 0, 0, imageWidth, imageHeight); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java index 365bdeee6..08607675c 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/eventHandlers/SandmasteryClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.client.eventHandlers; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java index 07dabd6f1..95ed4f0e0 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/HUDHandler.java @@ -1,17 +1,15 @@ /* - * File updated ~ 10 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.client.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.api.Manifestations; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.capabilities.SandmasterySpiritwebSubmodule; import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; -import leaf.cosmere.sandmastery.common.config.SandmasteryServerConfig; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.resources.ResourceLocation; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandPouchContainerScreen.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandPouchContainerScreen.java index bc5059bb4..848fedfed 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandPouchContainerScreen.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandPouchContainerScreen.java @@ -1,10 +1,14 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.client.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchContainerMenu; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; @@ -13,6 +17,8 @@ public class SandPouchContainerScreen extends AbstractContainerScreen { + final ResourceLocation resourceLocation = new ResourceLocation(Sandmastery.MODID, "textures/gui/sand_pouch.png"); + public SandPouchContainerScreen(SandPouchContainerMenu container, Inventory playerInv, Component title) { super(container, playerInv, title); @@ -29,15 +35,15 @@ protected void init() } @Override - public void render(PoseStack matrixStack, int x, int y, float partialTicks) + public void render(GuiGraphics guiGraphics, int x, int y, float partialTicks) { - this.renderBackground(matrixStack); - super.render(matrixStack, x, y, partialTicks); - this.renderTooltip(matrixStack, x, y); + this.renderBackground(guiGraphics); + super.render(guiGraphics, x, y, partialTicks); + this.renderTooltip(guiGraphics, x, y); } @Override - protected void renderBg(PoseStack matrixStack, float partialTicks, int mouseX, int mouseY) + protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, int mouseY) { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); @@ -45,14 +51,14 @@ protected void renderBg(PoseStack matrixStack, float partialTicks, int mouseX, i int xPos = (width - imageWidth) / 2; int yPos = (height / 2) - (imageHeight / 2); - blit(matrixStack, xPos, yPos, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(resourceLocation, xPos, yPos, 0, 0, imageWidth, imageHeight); } @Override - protected void renderLabels(PoseStack matrixStack, int mouseX, int mouseY) + protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { //write the name of the itemstack - this.font.draw(matrixStack, this.title, (float) this.titleLabelX, (float) this.titleLabelY, 4210752); -// this.font.draw(matrixStack, "Number of layers available: " + MiscHelper.intToAbbreviatedStr(this.menu.slots.get(2).getItem().getCount()), this.titleLabelX, this.titleLabelY + 32, 4210752); + guiGraphics.drawString(this.font, this.title.toString(), this.titleLabelX, this.titleLabelY, 4210752); +// this.font.draw(guiGraphics, "Number of layers available: " + MiscHelper.intToAbbreviatedStr(this.menu.slots.get(2).getItem().getCount()), this.titleLabelX, this.titleLabelY + 32, 4210752); } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java index df430b7fa..7f71a2b82 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java @@ -4,6 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreader.SandSpreaderMenu; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; @@ -13,24 +14,26 @@ public class SandSpreaderScreen extends AbstractContainerScreen { + final ResourceLocation resourceLocation = new ResourceLocation(Sandmastery.MODID, "textures/gui/sand_spreader.png"); + public SandSpreaderScreen(SandSpreaderMenu pMenu, Inventory pPlayerInventory, Component pTitle) { super(pMenu, pPlayerInventory, pTitle); } @Override - protected void renderBg(PoseStack pPoseStack, float pPartialTick, int pMouseX, int pMouseY) + protected void renderBg(GuiGraphics guiGraphics, float pPartialTick, int pMouseX, int pMouseY) { RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F); - RenderSystem.setShaderTexture(0, new ResourceLocation(Sandmastery.MODID, "textures/gui/sand_spreader.png")); + RenderSystem.setShaderTexture(0, resourceLocation); int x = (width - imageWidth) / 2; int y = (height - imageHeight) / 2; - this.blit(pPoseStack, x, y, 0, 0, imageWidth, imageHeight); + guiGraphics.blit(resourceLocation, x, y, 0, 0, imageWidth, imageHeight); } @Override - public void render(PoseStack pPoseStack, int mouseX, int mouseY, float delta) + public void render(GuiGraphics pPoseStack, int mouseX, int mouseY, float delta) { renderBackground(pPoseStack); super.render(pPoseStack, mouseX, mouseY, delta); From 9cf34620a20e3e255eff99443f32e2be9c218035 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 17:24:02 +1200 Subject: [PATCH 0876/1090] [Port] sandmastery creative tabs --- .../sandmastery/SandmasteryRecipeGen.java | 12 +-- .../blocks/SandmasteryBlockTagsGen.java | 14 ++-- .../SandmasteryBlockLootTableGen.java | 27 +++--- .../client/gui/SandSpreaderScreen.java | 5 +- .../sandmastery/common/Sandmastery.java | 4 +- .../common/blocks/TaldainBlackSandBlock.java | 23 +++-- .../blocks/TaldainBlackSandLayerBlock.java | 23 ++++- .../common/blocks/TaldainWhiteSandBlock.java | 19 +++-- .../blocks/TaldainWhiteSandLayerBlock.java | 23 ++++- .../SandSpreader/SandSpreaderMenu.java | 14 ++-- .../blocks/entities/SandSpreaderBE.java | 48 ++++++++--- .../common/entities/SandProjectile.java | 6 +- .../itemgroups/SandmasteryItemGroups.java | 18 ---- .../sandmastery/common/items/JarItem.java | 46 ++++++---- .../sandmastery/common/items/QidoItem.java | 10 +-- .../sandmastery/common/items/SandJarItem.java | 12 +-- .../common/items/SandPouchItem.java | 36 ++++---- .../common/items/sandpouch/SandPouchSlot.java | 6 +- .../items/sandpouch/SandpouchItemHandler.java | 53 +++++++++--- .../common/manifestation/MasteryCushion.java | 8 +- .../common/manifestation/MasteryElevate.java | 4 +- .../common/manifestation/MasteryLaunch.java | 4 +- .../common/manifestation/MasteryPlatform.java | 13 ++- .../SandmasteryBlockEntitiesRegistry.java | 12 +-- ...ksRegistry.java => SandmasteryBlocks.java} | 2 +- .../registries/SandmasteryCreativeTabs.java | 83 +++++++++++++++++++ .../sandmastery/common/utils/MiscHelper.java | 31 ++++--- 27 files changed, 370 insertions(+), 186 deletions(-) delete mode 100644 src/sandmastery/java/leaf/cosmere/sandmastery/common/itemgroups/SandmasteryItemGroups.java rename src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/{SandmasteryBlocksRegistry.java => SandmasteryBlocks.java} (97%) create mode 100644 src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java index f6fd40728..5ec85073b 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java @@ -1,12 +1,12 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.sandmastery.common.Sandmastery; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; @@ -65,7 +65,7 @@ protected void addRecipes(Consumer consumer) .unlockedBy("has_material", has(SandmasteryItems.SAND_JAR_ITEM)) .save(consumer); - ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()) + ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()) .define('W', ItemTags.WOODEN_SLABS) .pattern("W W") .pattern("WWW") @@ -73,13 +73,13 @@ protected void addRecipes(Consumer consumer) .save(consumer); ShapelessRecipeBuilder.shapeless(RecipeCategory.REDSTONE, SandmasteryItems.SAND_JAR_ITEM.get()) - .requires(SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem()) + .requires(SandmasteryBlocks.SAND_JAR_BLOCK.asItem()) .unlockedBy("has_material", has(SandmasteryItems.SAND_JAR_ITEM)) .save(consumer); - ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem()) + ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, SandmasteryBlocks.SAND_JAR_BLOCK.asItem()) .requires(SandmasteryItems.SAND_JAR_ITEM) - .unlockedBy("has_material", has(SandmasteryBlocksRegistry.SAND_JAR_BLOCK.asItem())) + .unlockedBy("has_material", has(SandmasteryBlocks.SAND_JAR_BLOCK.asItem())) .save(consumer); } } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java index 9bb0b6356..4ae679f90 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java @@ -1,7 +1,11 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.blocks; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import net.minecraft.data.DataGenerator; import net.minecraft.data.tags.BlockTagsProvider; import net.minecraft.tags.BlockTags; @@ -19,10 +23,10 @@ public SandmasteryBlockTagsGen(DataGenerator generatorIn, ExistingFileHelper exi @Override protected void addTags() { - add(BlockTags.MINEABLE_WITH_SHOVEL, SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock()); - add(BlockTags.SAND, SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock()); - add(BlockTags.MINEABLE_WITH_PICKAXE, SandmasteryBlocksRegistry.SAND_JAR_BLOCK.getBlock()); - add(BlockTags.MINEABLE_WITH_AXE, SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()); + add(BlockTags.MINEABLE_WITH_SHOVEL, SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); + add(BlockTags.SAND, SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); + add(BlockTags.MINEABLE_WITH_PICKAXE, SandmasteryBlocks.SAND_JAR_BLOCK.getBlock()); + add(BlockTags.MINEABLE_WITH_AXE, SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java index 7b51381fe..2d5d1f878 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java @@ -1,28 +1,25 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.loottables; -import com.mojang.datafixers.kinds.Const; import leaf.cosmere.api.providers.IBlockProvider; -import leaf.cosmere.sandmastery.common.blocks.*; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.blocks.SandJarBlock; +import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandLayerBlock; +import leaf.cosmere.sandmastery.common.blocks.TaldainWhiteSandLayerBlock; +import leaf.cosmere.sandmastery.common.blocks.TemporarySandBlock; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import net.minecraft.advancements.critereon.StatePropertiesPredicate; import net.minecraft.data.loot.BlockLoot; -import net.minecraft.world.item.AirItem; import net.minecraft.world.item.Items; -import net.minecraft.world.level.block.AirBlock; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.block.SnowLayerBlock; import net.minecraft.world.level.storage.loot.LootContext; import net.minecraft.world.level.storage.loot.LootPool; import net.minecraft.world.level.storage.loot.LootTable; import net.minecraft.world.level.storage.loot.entries.AlternativesEntry; import net.minecraft.world.level.storage.loot.entries.LootItem; -import net.minecraft.world.level.storage.loot.entries.LootPoolEntryContainer; import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; import net.minecraft.world.level.storage.loot.predicates.LootItemBlockStatePropertyCondition; import net.minecraft.world.level.storage.loot.predicates.LootItemEntityPropertyCondition; @@ -33,7 +30,7 @@ public class SandmasteryBlockLootTableGen extends BlockLoot @Override protected void addTables() { - for (IBlockProvider itemRegistryObject : SandmasteryBlocksRegistry.BLOCKS.getAllBlocks()) + for (IBlockProvider itemRegistryObject : SandmasteryBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); @@ -43,10 +40,10 @@ protected void addTables() } else if (block instanceof TaldainBlackSandLayerBlock || block instanceof TaldainWhiteSandLayerBlock) { - Block blackLayer = SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock(); - Block whiteLayer = SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock(); - this.add(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock(), (layer) -> LootTable.lootTable().withPool(LootPool.lootPool().when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)).add(AlternativesEntry.alternatives(TaldainBlackSandLayerBlock.LAYERS.getPossibleValues(), (layers) -> LootItem.lootTableItem(blackLayer.asItem()).when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(layer).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(TaldainBlackSandLayerBlock.LAYERS, layers))).apply(SetItemCountFunction.setCount(ConstantValue.exactly(layers.intValue()))))))); - this.add(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock(), (layer) -> LootTable.lootTable().withPool(LootPool.lootPool().when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)).add(AlternativesEntry.alternatives(TaldainWhiteSandLayerBlock.LAYERS.getPossibleValues(), (layers) -> LootItem.lootTableItem(whiteLayer.asItem()).when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(layer).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(TaldainWhiteSandLayerBlock.LAYERS, layers))).apply(SetItemCountFunction.setCount(ConstantValue.exactly(layers.intValue()))))))); + Block blackLayer = SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(); + Block whiteLayer = SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(); + this.add(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), (layer) -> LootTable.lootTable().withPool(LootPool.lootPool().when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)).add(AlternativesEntry.alternatives(TaldainBlackSandLayerBlock.LAYERS.getPossibleValues(), (layers) -> LootItem.lootTableItem(blackLayer.asItem()).when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(layer).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(TaldainBlackSandLayerBlock.LAYERS, layers))).apply(SetItemCountFunction.setCount(ConstantValue.exactly(layers.intValue()))))))); + this.add(SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), (layer) -> LootTable.lootTable().withPool(LootPool.lootPool().when(LootItemEntityPropertyCondition.entityPresent(LootContext.EntityTarget.THIS)).add(AlternativesEntry.alternatives(TaldainWhiteSandLayerBlock.LAYERS.getPossibleValues(), (layers) -> LootItem.lootTableItem(whiteLayer.asItem()).when(LootItemBlockStatePropertyCondition.hasBlockStateProperties(layer).setProperties(StatePropertiesPredicate.Builder.properties().hasProperty(TaldainWhiteSandLayerBlock.LAYERS, layers))).apply(SetItemCountFunction.setCount(ConstantValue.exactly(layers.intValue()))))))); } else if (block instanceof TemporarySandBlock) { @@ -62,6 +59,6 @@ else if (block instanceof TemporarySandBlock) @Override protected Iterable getKnownBlocks() { - return SandmasteryBlocksRegistry.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + return SandmasteryBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java index 7f71a2b82..03dd845e9 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/client/gui/SandSpreaderScreen.java @@ -1,7 +1,10 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.client.gui; import com.mojang.blaze3d.systems.RenderSystem; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreader.SandSpreaderMenu; import net.minecraft.client.gui.GuiGraphics; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java index 65b1d5868..f701c137f 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common; @@ -46,7 +46,7 @@ public Sandmastery() modBus.addListener(this::commonSetup); SandmasteryItems.ITEMS.register(modBus); - SandmasteryBlocksRegistry.BLOCKS.register(modBus); + SandmasteryBlocks.BLOCKS.register(modBus); SandmasteryBlockEntitiesRegistry.BLOCK_ENTITIES.register(modBus); SandmasteryAttributes.ATTRIBUTES.register(modBus); SandmasteryEffects.EFFECTS.register(modBus); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java index e1d540490..d08fd137a 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java @@ -1,15 +1,15 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; //import leaf.cosmere.allomancy.common.registries.AllomancyEffects; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; -import leaf.cosmere.sandmastery.common.utils.MiscHelper; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; +import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.server.level.ServerLevel; @@ -38,23 +38,30 @@ public boolean isRandomlyTicking(BlockState pState) public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) { if (!pLevel.isAreaLoaded(pPos, 3)) + { return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading + } boolean nearbyInvestiture = MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false); boolean offTaldain = !MiscHelper.onTaldain(pLevel); boolean canSeeSky = pLevel.canSeeSky(pPos.above()); - if (offTaldain && !nearbyInvestiture) return; + if (offTaldain && !nearbyInvestiture) + { + return; + } if (!canSeeSky && !nearbyInvestiture) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } - pLevel.setBlockAndUpdate(pPos, SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); + pLevel.setBlockAndUpdate(pPos, SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); for (int i = 0; i < 4; ++i) { BlockPos blockpos = pPos.offset(pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1); if (pLevel.getBlockState(blockpos).is(Blocks.SAND)) { - pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); + pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); } } } @@ -84,7 +91,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pFacingPos) { return touchesLiquid(pLevel, pCurrentPos, pState) ? - this.defaultBlockState() : - super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + this.defaultBlockState() : + super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java index a26af0b20..35556458a 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java @@ -1,8 +1,12 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.blocks; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -101,7 +105,9 @@ public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pFacingPos) { if (touchesLiquid(pLevel, pCurrentPos, pState)) + { return this.defaultBlockState().setValue(LAYERS, pState.getValue(LAYERS)); + } return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); } @@ -154,18 +160,27 @@ public boolean isRandomlyTicking(BlockState pState) public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) { if (!pLevel.isAreaLoaded(pPos, 3)) + { return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading - BlockState defaultWhiteSandLayers = SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock().defaultBlockState(); + } + BlockState defaultWhiteSandLayers = SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock().defaultBlockState(); boolean nearbyInvestiture = MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false); boolean offTaldain = !MiscHelper.onTaldain(pLevel); boolean canSeeSky = pLevel.canSeeSky(pPos.above()); - if (offTaldain && !nearbyInvestiture) return; + if (offTaldain && !nearbyInvestiture) + { + return; + } if (!canSeeSky && !nearbyInvestiture) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } if ((!MiscHelper.onTaldain(pLevel) && !pLevel.canSeeSky(pPos.above())) && !MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false)) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } pLevel.setBlockAndUpdate(pPos, defaultWhiteSandLayers.setValue(LAYERS, pState.getValue(LAYERS))); for (int i = 0; i < 4; ++i) @@ -173,7 +188,7 @@ public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, Ran BlockPos blockpos = pPos.offset(pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1); if (pLevel.getBlockState(blockpos).is(Blocks.SAND)) { - pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); + pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); } } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java index b5e923f82..63670f10d 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java @@ -1,5 +1,5 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; @@ -8,7 +8,7 @@ import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -38,21 +38,28 @@ public boolean isRandomlyTicking(BlockState pState) public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) { if (!pLevel.isAreaLoaded(pPos, 3)) + { return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading + } boolean nearbyInvestiture = MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false); boolean offTaldain = !MiscHelper.onTaldain(pLevel); boolean canSeeSky = pLevel.canSeeSky(pPos.above()); - if (offTaldain && !nearbyInvestiture) return; + if (offTaldain && !nearbyInvestiture) + { + return; + } if (!canSeeSky && !nearbyInvestiture) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } for (int i = 0; i < 4; ++i) { BlockPos blockpos = pPos.offset(pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1); if (pLevel.getBlockState(blockpos).is(Blocks.SAND)) { - pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); + pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); } } } @@ -82,7 +89,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pFacingPos) { return touchesLiquid(pLevel, pCurrentPos, pState) ? - SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.getBlock().defaultBlockState() : - super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); + SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock().defaultBlockState() : + super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java index 4a8822545..7369c071a 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java @@ -1,8 +1,12 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.blocks; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -101,7 +105,9 @@ public float getShadeBrightness(BlockState pState, BlockGetter pLevel, BlockPos public BlockState updateShape(BlockState pState, Direction pFacing, BlockState pFacingState, LevelAccessor pLevel, BlockPos pCurrentPos, BlockPos pFacingPos) { if (touchesLiquid(pLevel, pCurrentPos, pState)) - return SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock().defaultBlockState().setValue(LAYERS, pState.getValue(LAYERS)); + { + return SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock().defaultBlockState().setValue(LAYERS, pState.getValue(LAYERS)); + } return super.updateShape(pState, pFacing, pFacingState, pLevel, pCurrentPos, pFacingPos); } @@ -154,25 +160,34 @@ public boolean isRandomlyTicking(BlockState pState) public void randomTick(BlockState pState, ServerLevel pLevel, BlockPos pPos, RandomSource pRandom) { if (!pLevel.isAreaLoaded(pPos, 3)) + { return; // Forge: prevent loading unloaded chunks when checking neighbor's light and spreading + } BlockState state = this.defaultBlockState(); boolean nearbyInvestiture = MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false); boolean offTaldain = !MiscHelper.onTaldain(pLevel); boolean canSeeSky = pLevel.canSeeSky(pPos.above()); - if (offTaldain && !nearbyInvestiture) return; + if (offTaldain && !nearbyInvestiture) + { + return; + } if (!canSeeSky && !nearbyInvestiture) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } if ((!MiscHelper.onTaldain(pLevel) && !pLevel.canSeeSky(pPos.above())) && !MiscHelper.checkIfNearbyInvestiture(pLevel, pPos, false)) + { return; // Can't see the taldanian sky nor can I find any investiture, can't charge from it + } for (int i = 0; i < 4; ++i) { BlockPos blockpos = pPos.offset(pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1, pRandom.nextInt(3) - 1); if (pLevel.getBlockState(blockpos).is(Blocks.SAND)) { - pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); + pLevel.setBlockAndUpdate(blockpos, SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock().defaultBlockState()); } } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreader/SandSpreaderMenu.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreader/SandSpreaderMenu.java index 9ac1826b3..24cccec15 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreader/SandSpreaderMenu.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreader/SandSpreaderMenu.java @@ -1,10 +1,12 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.blocks.entities.SandSpreader; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreaderBE; -import leaf.cosmere.sandmastery.common.items.SandPouchItem; -import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchSlot; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryMenuTypes; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Inventory; @@ -25,7 +27,7 @@ public class SandSpreaderMenu extends AbstractContainerMenu public SandSpreaderMenu(int id, Inventory inv, FriendlyByteBuf extraData) { - this(id, inv, inv.player.level.getBlockEntity(extraData.readBlockPos()), new SimpleContainerData(2)); + this(id, inv, inv.player.level().getBlockEntity(extraData.readBlockPos()), new SimpleContainerData(2)); } public SandSpreaderMenu(int id, Inventory inv, BlockEntity entity, ContainerData data) @@ -33,7 +35,7 @@ public SandSpreaderMenu(int id, Inventory inv, BlockEntity entity, ContainerData super(SandmasteryMenuTypes.SAND_SPREADER.get(), id); checkContainerSize(inv, 3); this.blockEntity = (SandSpreaderBE) entity; - this.level = inv.player.level; + this.level = inv.player.level(); this.data = data; IItemHandlerModifiable blockInv = (IItemHandlerModifiable) this.blockEntity.getCapability(ForgeCapabilities.ITEM_HANDLER).orElse(null); int invStart = 0; @@ -123,6 +125,6 @@ else if (!this.moveItemStackTo(itemstack1, 0, maxSlots, false)) @Override public boolean stillValid(Player pPlayer) { - return stillValid(ContainerLevelAccess.create(this.level, this.blockEntity.getBlockPos()), pPlayer, SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()); + return stillValid(ContainerLevelAccess.create(this.level, this.blockEntity.getBlockPos()), pPlayer, SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()); } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreaderBE.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreaderBE.java index 30703138c..09cd5daf4 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreaderBE.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/entities/SandSpreaderBE.java @@ -1,8 +1,12 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.blocks.entities; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreader.SandSpreaderMenu; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlockEntitiesRegistry; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -164,26 +168,50 @@ public boolean hasCatalyst() for (int i = 0; i < this.itemHandler.getSlots(); i++) { ItemStack item = this.itemHandler.getStackInSlot(i); - if (item.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.asItem()) return true; - if (item.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.asItem()) return true; - if (item.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.asItem()) return true; - if (item.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.asItem()) return true; + if (item.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND.asItem()) + { + return true; + } + if (item.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND.asItem()) + { + return true; + } + if (item.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.asItem()) + { + return true; + } + if (item.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.asItem()) + { + return true; + } } return false; } public static void tick(Level level, BlockPos pos, BlockState state, SandSpreaderBE entity) { - if (level.isClientSide()) return; - if (!entity.readyToUpdate()) return; - if (!entity.hasCatalyst()) return; - if (!MiscHelper.checkIfNearbyInvestiture((ServerLevel) level, pos, false)) return; + if (level.isClientSide()) + { + return; + } + if (!entity.readyToUpdate()) + { + return; + } + if (!entity.hasCatalyst()) + { + return; + } + if (!MiscHelper.checkIfNearbyInvestiture((ServerLevel) level, pos, false)) + { + return; + } ItemStackHandler inv = entity.itemHandler; int slot = MiscHelper.randomSlot(inv); ItemStack item = inv.getStackInSlot(slot); if (item.getItem() == Blocks.SAND.asItem()) { - ItemStack newItem = new ItemStack(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND); + ItemStack newItem = new ItemStack(SandmasteryBlocks.TALDAIN_BLACK_SAND); newItem.setCount(item.getCount()); inv.setStackInSlot(slot, newItem); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/entities/SandProjectile.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/entities/SandProjectile.java index ad7d918ff..d8391fc73 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/entities/SandProjectile.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/entities/SandProjectile.java @@ -1,10 +1,10 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.entities; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryEntityTypes; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.LivingEntity; @@ -15,7 +15,7 @@ public class SandProjectile extends AbstractArrow implements ItemSupplier { - private ItemStack projectileStack = SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getItemStack(); + private ItemStack projectileStack = SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getItemStack(); public SandProjectile(Level level, LivingEntity livingEntity, ItemStack itemStack) { diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/itemgroups/SandmasteryItemGroups.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/itemgroups/SandmasteryItemGroups.java deleted file mode 100644 index b93d08b4f..000000000 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/itemgroups/SandmasteryItemGroups.java +++ /dev/null @@ -1,18 +0,0 @@ -package leaf.cosmere.sandmastery.common.itemgroups; - -import leaf.cosmere.sandmastery.common.Sandmastery; -import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; - -public class SandmasteryItemGroups -{ - public static CreativeModeTab ITEMS = new CreativeModeTab(Sandmastery.MODID) - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(SandmasteryItems.QIDO_ITEM); - } - }; -} diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/JarItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/JarItem.java index 6f27f86ce..91e3087d0 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/JarItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/JarItem.java @@ -1,13 +1,15 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.items; import leaf.cosmere.api.Constants; import leaf.cosmere.api.helpers.StackNBTHelper; import leaf.cosmere.common.items.BaseItem; import leaf.cosmere.common.properties.PropTypes; -import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandBlock; import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandLayerBlock; -import leaf.cosmere.sandmastery.common.itemgroups.SandmasteryItemGroups; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; @@ -24,53 +26,66 @@ public class JarItem extends BaseItem { public JarItem() { - super(PropTypes.Items.ONE.get().tab(SandmasteryItemGroups.ITEMS)); + super(PropTypes.Items.ONE.get()); } @Override public InteractionResultHolder use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { ItemStack usedItem = pPlayer.getItemInHand(pUsedHand); - if (pLevel.isClientSide()) return InteractionResultHolder.pass(usedItem); + if (pLevel.isClientSide()) + { + return InteractionResultHolder.pass(usedItem); + } BlockPos pos = getPlayerPOVHitResult(pLevel, pPlayer, ClipContext.Fluid.NONE).getBlockPos(); BlockState state = pLevel.getBlockState(pos); Inventory inv = pPlayer.getInventory(); boolean fill = false; boolean charged = false; - if (state.is(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock())) + if (state.is(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock())) { int layers = state.getValue(TaldainBlackSandLayerBlock.LAYERS); if (layers > 1) + { pLevel.setBlockAndUpdate(pos, state.setValue(TaldainBlackSandLayerBlock.LAYERS, layers - 1)); - else pLevel.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + } + else + { + pLevel.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + } charged = false; fill = true; } - else if (state.is(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.getBlock())) + else if (state.is(SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock())) { pLevel.setBlockAndUpdate(pos, - SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock() + SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock() .defaultBlockState() .setValue(TaldainBlackSandLayerBlock.LAYERS, 7) ); charged = false; fill = true; } - if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock())) + if (state.is(SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock())) { int layers = state.getValue(TaldainBlackSandLayerBlock.LAYERS); if (layers > 1) + { pLevel.setBlockAndUpdate(pos, state.setValue(TaldainBlackSandLayerBlock.LAYERS, layers - 1)); - else pLevel.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + } + else + { + pLevel.setBlockAndUpdate(pos, Blocks.AIR.defaultBlockState()); + } charged = true; fill = true; } - else if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock())) + else if (state.is(SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock())) { pLevel.setBlockAndUpdate(pos, - SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock() + SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock() .defaultBlockState() .setValue(TaldainBlackSandLayerBlock.LAYERS, 7) ); @@ -88,7 +103,10 @@ else if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock()) StackNBTHelper.setInt(item, Constants.NBT.CHARGE_LEVEL, 0); } - if (fill) inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected : -106, item); + if (fill) + { + inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected : -106, item); + } return InteractionResultHolder.consume(usedItem); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java index 37aa7c412..902578cce 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.items; @@ -10,13 +10,10 @@ import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.capabilities.SandmasterySpiritwebSubmodule; import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; -import leaf.cosmere.sandmastery.common.itemgroups.SandmasteryItemGroups; import leaf.cosmere.sandmastery.common.registries.SandmasteryAttributes; -import leaf.cosmere.sandmastery.common.registries.SandmasteryManifestations; import net.minecraft.core.BlockPos; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; -import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; @@ -35,14 +32,15 @@ public class QidoItem extends ChargeableItemBase { public QidoItem() { - super(PropTypes.Items.ONE.get().tab(SandmasteryItemGroups.ITEMS)); + super(PropTypes.Items.ONE.get()); } /** * @param fillPercent ranges from 0 to 1 * @return ItemStack of a qido with specified fill percentage */ - public ItemStack getChargedQido(float fillPercent) { + public ItemStack getChargedQido(float fillPercent) + { ItemStack qido = new ItemStack(this); setCharge(qido, Math.round(fillPercent * SandmasteryConfigs.SERVER.QIDO_MAX_FILL.get())); return qido; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java index bae015e6c..31939be58 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java @@ -10,7 +10,7 @@ import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.blocks.SandJarBlock; import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandLayerBlock; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import leaf.cosmere.sandmastery.common.utils.SandmasteryConstants; @@ -105,7 +105,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected : -106, ItemStack.EMPTY); BlockPos pos2 = pos.offset(dir.getNormal()); pLevel.setBlockAndUpdate(pos2, - SandmasteryBlocksRegistry.SAND_JAR_BLOCK.getBlock() + SandmasteryBlocks.SAND_JAR_BLOCK.getBlock() .defaultBlockState() .setValue(SandJarBlock.INVESTITURE, StackNBTHelper.getInt(usedItem, Constants.NBT.CHARGE_LEVEL, 0)) ); @@ -114,7 +114,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte { inv.setItem(pUsedHand == InteractionHand.MAIN_HAND ? inv.selected : -106, new ItemStack(SandmasteryItems.JAR_ITEM)); - if (state.is(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock()) && state.getValue(TaldainBlackSandLayerBlock.LAYERS) < 8) + if (state.is(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock()) && state.getValue(TaldainBlackSandLayerBlock.LAYERS) < 8) { int layers = state.getValue(TaldainBlackSandLayerBlock.LAYERS); pLevel.setBlockAndUpdate(pos, @@ -122,7 +122,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte .setValue(TaldainBlackSandLayerBlock.LAYERS, layers + 1) ); } - else if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock()) && state.getValue(TaldainBlackSandLayerBlock.LAYERS) < 8) + else if (state.is(SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock()) && state.getValue(TaldainBlackSandLayerBlock.LAYERS) < 8) { int layers = state.getValue(TaldainBlackSandLayerBlock.LAYERS); pLevel.setBlockAndUpdate(pos, @@ -136,7 +136,7 @@ else if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock()) { BlockPos pos2 = pos.offset(dir.getNormal()); pLevel.setBlockAndUpdate(pos2, - SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock() + SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock() .defaultBlockState() .setValue(TaldainBlackSandLayerBlock.LAYERS, 1) ); @@ -146,7 +146,7 @@ else if (state.is(SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.getBlock()) BlockPos pos2 = pos.offset(dir.getNormal()); pLevel.setBlockAndUpdate(pos2, - SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.getBlock() + SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock() .defaultBlockState() .setValue(TaldainBlackSandLayerBlock.LAYERS, 1) ); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandPouchItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandPouchItem.java index 614838e64..1d3eb4def 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandPouchItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandPouchItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 13 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.items; @@ -11,13 +11,11 @@ import leaf.cosmere.common.items.ChargeableItemBase; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.entities.SandProjectile; -import leaf.cosmere.sandmastery.common.itemgroups.SandmasteryItemGroups; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; -import leaf.cosmere.sandmastery.common.registries.SandmasteryManifestations; import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchContainerMenu; import leaf.cosmere.sandmastery.common.items.sandpouch.SandPouchInventory; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; +import leaf.cosmere.sandmastery.common.registries.SandmasteryManifestations; import leaf.cosmere.sandmastery.common.utils.MiscHelper; -import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; @@ -29,7 +27,6 @@ import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.AbstractArrow; -import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraftforge.common.capabilities.ForgeCapabilities; @@ -39,24 +36,23 @@ import net.minecraftforge.network.NetworkHooks; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.function.Predicate; public class SandPouchItem extends ChargeableItemBase { public SandPouchItem() { - super(PropTypes.Items.ONE.get().tab(SandmasteryItemGroups.ITEMS)); + super(PropTypes.Items.ONE.get()); } private SandPouchInventory sandPouchInventory; public static final Predicate SUPPORTED_ITEMS = (itemStack) -> { - return itemStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.asItem() || - itemStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.asItem() || - itemStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.asItem() || - itemStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.asItem(); + return itemStack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.asItem() || + itemStack.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.asItem() || + itemStack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND.asItem() || + itemStack.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND.asItem(); }; @Override @@ -89,14 +85,14 @@ public int getMaxCharge(ItemStack itemStack) return res; } - @Override + /*@Override public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { if (allowedIn(tab)) { stacks.add(new ItemStack(this)); } - } + }*/ @Override public boolean isFoil(@NotNull ItemStack stack) @@ -110,7 +106,7 @@ public InteractionResultHolder use(Level level, Player player, Intera ItemStack pouchStack = player.getItemInHand(interactionHand); if (interactionHand == InteractionHand.MAIN_HAND) { - if (!player.level.isClientSide() && player instanceof ServerPlayer) + if (!player.level().isClientSide() && player instanceof ServerPlayer) { MenuProvider container = new SimpleMenuProvider((windowID, playerInv, plyer) -> new SandPouchContainerMenu(windowID, playerInv, pouchStack), pouchStack.getHoverName()); @@ -149,9 +145,9 @@ public void shoot(ItemStack pouch, Player player) ammo.shrink(1); //shoot? - if (!player.level.isClientSide) + if (!player.level().isClientSide) { - AbstractArrow sandProjectile = new SandProjectile(player.level, player, stackToShoot); + AbstractArrow sandProjectile = new SandProjectile(player.level(), player, stackToShoot); sandProjectile.setCritArrow(true); sandProjectile.shootFromRotation( player, @@ -163,10 +159,10 @@ public void shoot(ItemStack pouch, Player player) sandProjectile.pickup = AbstractArrow.Pickup.CREATIVE_ONLY; - player.level.addFreshEntity(sandProjectile); + player.level().addFreshEntity(sandProjectile); } - player.level.playSound( + player.level().playSound( null, player.getX(), player.getY(), @@ -174,7 +170,7 @@ public void shoot(ItemStack pouch, Player player) SoundEvents.ARROW_SHOOT, SoundSource.PLAYERS, 1.0F, - 1.0F / (player.level.getRandom().nextFloat() * 0.4F + 1.2F) + 1 * 0.5F); + 1.0F / (player.level().getRandom().nextFloat() * 0.4F + 1.2F) + 1 * 0.5F); } }); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandPouchSlot.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandPouchSlot.java index 6d7cd4348..4434de77c 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandPouchSlot.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandPouchSlot.java @@ -1,9 +1,11 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.items.sandpouch; import leaf.cosmere.sandmastery.common.items.SandPouchItem; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; import net.minecraft.world.item.ItemStack; -import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.SlotItemHandler; import org.jetbrains.annotations.NotNull; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandpouchItemHandler.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandpouchItemHandler.java index ae6759047..c743ce8ad 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandpouchItemHandler.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/sandpouch/SandpouchItemHandler.java @@ -1,12 +1,15 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.sandmastery.common.items.sandpouch; import leaf.cosmere.sandmastery.common.items.SandPouchItem; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.items.IItemHandler; @@ -54,9 +57,18 @@ public void setStackInSlot(int slot, @NotNull ItemStack stack) int newCount = stack.isEmpty() ? 0 : stack.getCount(); MODES mode = null; - if (prevCount < newCount) mode = MODES.ADD; - else if (newCount < prevCount) mode = MODES.REMOVE; - else mode = MODES.NO_CHANGE; + if (prevCount < newCount) + { + mode = MODES.ADD; + } + else if (newCount < prevCount) + { + mode = MODES.REMOVE; + } + else + { + mode = MODES.NO_CHANGE; + } this.stacks.set(slot, stack); onContentsChanged(slot, Math.abs(prevCount - newCount), mode); @@ -70,13 +82,16 @@ protected void onContentsChanged(int slot) protected void onContentsChanged(int slot, int count, MODES mode) { ItemStack changedStack = getStackInSlot(slot); - boolean sandBlock = changedStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.asItem() || changedStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND.asItem(); - boolean sandLayer = changedStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.asItem() || changedStack.getItem() == SandmasteryBlocksRegistry.TALDAIN_WHITE_SAND_LAYER.asItem(); + boolean sandBlock = changedStack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND.asItem() || changedStack.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND.asItem(); + boolean sandLayer = changedStack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.asItem() || changedStack.getItem() == SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.asItem(); switch (slot) { case 0: - if (mode != MODES.ADD) break; // This slot is input, and can accept both, don't update if it's removed + if (mode != MODES.ADD) + { + break; // This slot is input, and can accept both, don't update if it's removed + } if (sandBlock) { layers += 8 * count; // Blocks are worth 8 layers @@ -88,12 +103,16 @@ else if (sandLayer) break; case 1: if (mode != MODES.REMOVE) + { break; // this slot is output only, no item filter as only one item can ever be here + } layers -= 8 * count; // Blocks are worth 8 layers break; case 2: if (mode != MODES.REMOVE) + { break; // this slot is output only, no item filter as only one item can ever be here + } layers -= count; break; } @@ -106,10 +125,10 @@ private void updateSlots() { int numBlocks = (int) Math.floor(this.layers / 8); - ItemStack blocksInSlot = new ItemStack(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND); + ItemStack blocksInSlot = new ItemStack(SandmasteryBlocks.TALDAIN_BLACK_SAND); blocksInSlot.setCount(Math.min(numBlocks, 64)); - ItemStack layersInSlot = new ItemStack(SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER); + ItemStack layersInSlot = new ItemStack(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER); layersInSlot.setCount(Math.min(this.layers, 64)); this.stacks.set(0, ItemStack.EMPTY); @@ -136,10 +155,14 @@ public ItemStack getStackInSlot(int slot) public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate) { if (stack.isEmpty()) + { return ItemStack.EMPTY; + } if (!isItemValid(slot, stack)) + { return stack; + } validateSlotIndex(slot); @@ -150,13 +173,17 @@ public ItemStack insertItem(int slot, @NotNull ItemStack stack, boolean simulate if (!existing.isEmpty()) { if (!ItemHandlerHelper.canItemStacksStack(stack, existing)) + { return stack; + } limit -= existing.getCount(); } if (limit <= 0) + { return stack; + } boolean reachedLimit = stack.getCount() > limit; @@ -186,14 +213,18 @@ protected int getStackLimit(int slot, @NotNull ItemStack stack) public ItemStack extractItem(int slot, int amount, boolean simulate) { if (amount == 0) + { return ItemStack.EMPTY; + } validateSlotIndex(slot); ItemStack existing = this.stacks.get(slot); if (existing.isEmpty()) + { return ItemStack.EMPTY; + } int toExtract = Math.min(amount, existing.getMaxStackSize()); @@ -282,7 +313,9 @@ protected void onLoad() protected void validateSlotIndex(int slot) { if (slot < 0 || slot >= stacks.size()) + { throw new RuntimeException("Slot " + slot + " not in valid range - [0," + stacks.size() + ")"); + } } protected void setLayers(int layers) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryCushion.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryCushion.java index ceef8ef6a..e632fd0cc 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryCushion.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryCushion.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.manifestation; @@ -7,7 +7,6 @@ import leaf.cosmere.api.Taldain; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.sandmastery.common.capabilities.SandmasterySpiritwebSubmodule; -import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; @@ -32,7 +31,8 @@ public boolean tick(ISpiritweb data) } @Override - protected int getBaseCost() { + protected int getBaseCost() + { return 1; } @@ -58,7 +58,7 @@ protected boolean performEffectServer(ISpiritweb data) } BlockPos groundPos = MiscHelper.blockPosAtGround(data.getLiving()); - MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level, data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); + MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level(), data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); living.setDeltaMovement(movement.multiply(1, 0.05, 1)); living.hurtMarked = true; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryElevate.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryElevate.java index 2c096eaf7..6f3127b10 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryElevate.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryElevate.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.manifestation; @@ -74,7 +74,7 @@ protected boolean performEffectServer(ISpiritweb data) living.resetFallDistance(); BlockPos groundPos = MiscHelper.blockPosAtGround(data.getLiving()); - MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level, data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); + MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level(), data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); submodule.adjustHydration(-getHydrationCost(data), true, data); useChargedSand(data); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryLaunch.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryLaunch.java index c06c5703d..9c70f4f4e 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryLaunch.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryLaunch.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.manifestation; @@ -76,7 +76,7 @@ protected boolean performEffectServer(ISpiritweb data) } BlockPos groundPos = MiscHelper.blockPosAtGround(data.getLiving()); - MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level, data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); + MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level(), data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); submodule.adjustHydration(-getHydrationCost(data), true, data); useChargedSand(data); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryPlatform.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryPlatform.java index ecd5596dc..e921fc363 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryPlatform.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryPlatform.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.manifestation; @@ -9,8 +9,7 @@ import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.sandmastery.common.capabilities.SandmasterySpiritwebSubmodule; -import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.utils.MiscHelper; import leaf.cosmere.sandmastery.common.utils.SandmasteryConstants; import net.minecraft.core.BlockPos; @@ -48,7 +47,7 @@ public boolean tick(ISpiritweb data) private void setBlockIfAir(Level level, BlockPos pos, BlockState state) { Block block = level.getBlockState(pos).getBlock(); - if (block != Blocks.AIR && block != SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock()) + if (block != Blocks.AIR && block != SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock()) { return; } @@ -60,9 +59,9 @@ protected boolean performEffectServer(ISpiritweb data) SpiritwebCapability playerSpiritweb = (SpiritwebCapability) data; SandmasterySpiritwebSubmodule submodule = (SandmasterySpiritwebSubmodule) playerSpiritweb.getSubmodule(Manifestations.ManifestationTypes.SANDMASTERY); LivingEntity living = data.getLiving(); - Level level = living.level; + Level level = living.level(); BlockPos pos = living.blockPosition().below(); - BlockState state = SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock().defaultBlockState(); + BlockState state = SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock().defaultBlockState(); int size = getMode(data) / 2; pos = pos.offset(-(size + 1), living.isCrouching() ? -1 : 0, -(size + 1)); for (int x = -size; x <= size; x++) @@ -77,7 +76,7 @@ protected boolean performEffectServer(ISpiritweb data) } BlockPos groundPos = MiscHelper.blockPosAtGround(data.getLiving()); - MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level, data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); + MiscHelper.spawnMasteredSandLine((ServerLevel) data.getLiving().level(), data.getLiving().getEyePosition(), new Vec3(groundPos.getX(), groundPos.getY(), groundPos.getZ())); submodule.adjustHydration(-getHydrationCost(data), true, data); return true; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlockEntitiesRegistry.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlockEntitiesRegistry.java index 89b2175b4..49d90a0c0 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlockEntitiesRegistry.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlockEntitiesRegistry.java @@ -1,14 +1,10 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf - * Special thank you to SizableShrimp from the Forge Project discord! - * Java isn't my first programming language, so I didn't know you could collect and set up items like this! - * Makes setting up items for metals a breeze~ + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.registries; import leaf.cosmere.sandmastery.common.Sandmastery; -import leaf.cosmere.sandmastery.common.blocks.TemporarySandBlock; import leaf.cosmere.sandmastery.common.blocks.entities.SandJarBE; import leaf.cosmere.sandmastery.common.blocks.entities.SandSpreaderBE; import leaf.cosmere.sandmastery.common.blocks.entities.TemporarySandBE; @@ -21,7 +17,7 @@ public class SandmasteryBlockEntitiesRegistry { public static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITY_TYPES, Sandmastery.MODID); - public static final RegistryObject> SAND_JAR_BE = BLOCK_ENTITIES.register("sand_jar_be", () -> BlockEntityType.Builder.of(SandJarBE::new, SandmasteryBlocksRegistry.SAND_JAR_BLOCK.getBlock()).build(null)); - public static final RegistryObject> SAND_SPREADER_BE = BLOCK_ENTITIES.register("sand_spreader_be", () -> BlockEntityType.Builder.of(SandSpreaderBE::new, SandmasteryBlocksRegistry.SAND_SPREADING_TUB_BLOCK.getBlock()).build(null)); - public static final RegistryObject> TEMPORARY_SAND_BE = BLOCK_ENTITIES.register("temporary_sand_be", () -> BlockEntityType.Builder.of(TemporarySandBE::new, SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock()).build(null)); + public static final RegistryObject> SAND_JAR_BE = BLOCK_ENTITIES.register("sand_jar_be", () -> BlockEntityType.Builder.of(SandJarBE::new, SandmasteryBlocks.SAND_JAR_BLOCK.getBlock()).build(null)); + public static final RegistryObject> SAND_SPREADER_BE = BLOCK_ENTITIES.register("sand_spreader_be", () -> BlockEntityType.Builder.of(SandSpreaderBE::new, SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()).build(null)); + public static final RegistryObject> TEMPORARY_SAND_BE = BLOCK_ENTITIES.register("temporary_sand_be", () -> BlockEntityType.Builder.of(TemporarySandBE::new, SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock()).build(null)); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocksRegistry.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocks.java similarity index 97% rename from src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocksRegistry.java rename to src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocks.java index fcd6e72af..9d1bcaefa 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocksRegistry.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryBlocks.java @@ -13,7 +13,7 @@ import leaf.cosmere.sandmastery.common.blocks.*; import net.minecraft.world.item.BlockItem; -public class SandmasteryBlocksRegistry +public class SandmasteryBlocks { public static final BlockDeferredRegister BLOCKS = new BlockDeferredRegister(Sandmastery.MODID); public static final BlockRegistryObject TALDAIN_BLACK_SAND_LAYER = BLOCKS.register("taldain_sand_layer", TaldainBlackSandLayerBlock::new); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java new file mode 100644 index 000000000..7e4e9c752 --- /dev/null +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java @@ -0,0 +1,83 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.sandmastery.common.registries; + +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.sandmastery.common.Sandmastery; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class SandmasteryCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Sandmastery.MODID, SandmasteryCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Sandmastery.MODID + ".items"), + SandmasteryItems.QIDO_ITEM, + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(SandmasteryItems.ITEMS, output); + CreativeTabDeferredRegister.addToDisplay(SandmasteryBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + CreativeTabDeferredRegister.addToDisplay(event, SandmasteryBlocks.SAND_JAR_BLOCK); + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + CreativeTabDeferredRegister.addToDisplay(event, SandmasteryBlocks.SAND_JAR_BLOCK); + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/utils/MiscHelper.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/utils/MiscHelper.java index 8e5cb1db4..f2a0a67d5 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/utils/MiscHelper.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/utils/MiscHelper.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.utils; @@ -15,7 +15,7 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.sandmastery.common.Sandmastery; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocksRegistry; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryDimensions; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import net.minecraft.core.BlockPos; @@ -120,7 +120,6 @@ public static boolean onTaldain(Level pLevel) } /** - * * @param e Living Entity * @return the distance between the entity and the first block below it. Returns -1 if above void */ @@ -129,10 +128,10 @@ public static int distanceFromGround(LivingEntity e) BlockPos pos = e.blockPosition(); double y = pos.getY(); int dist = 0; - for (double i = y; i >= e.level.getMinBuildHeight(); i--) + for (double i = y; i >= e.level().getMinBuildHeight(); i--) { - BlockState block = e.level.getBlockState(pos.offset(0, -dist, 0)); - if (!block.isAir() && !block.is(SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock())) + BlockState block = e.level().getBlockState(pos.offset(0, -dist, 0)); + if (!block.isAir() && !block.is(SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock())) { return dist; } @@ -143,7 +142,6 @@ public static int distanceFromGround(LivingEntity e) } /** - * * @param e Living Entity * @return If above ground, returns the block position of the first block directly below entity, otherwise returns eye position */ @@ -152,10 +150,10 @@ public static BlockPos blockPosAtGround(LivingEntity e) BlockPos pos = e.blockPosition(); double y = pos.getY(); int dist = 0; - for (double i = y; i >= e.level.getMinBuildHeight(); i--) + for (double i = y; i >= e.level().getMinBuildHeight(); i--) { - BlockState block = e.level.getBlockState(pos.offset(0, -dist, 0)); - if (!block.isAir() && !block.is(SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock())) + BlockState block = e.level().getBlockState(pos.offset(0, -dist, 0)); + if (!block.isAir() && !block.is(SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock())) { return pos.offset(0, -dist, 0); } @@ -163,7 +161,7 @@ public static BlockPos blockPosAtGround(LivingEntity e) } Vec3 eyePos = e.getEyePosition(); - return new BlockPos(eyePos); + return BlockPos.containing(eyePos); } public static boolean isActivatedAndActive(ISpiritweb data, Manifestation manifestation) @@ -178,11 +176,11 @@ public static int getChargeFromItemStack(ItemStack stack) return 0; } - if (stack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND_LAYER.asItem()) + if (stack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.asItem()) { return stack.getCount() * 10; } - if (stack.getItem() == SandmasteryBlocksRegistry.TALDAIN_BLACK_SAND.asItem()) + if (stack.getItem() == SandmasteryBlocks.TALDAIN_BLACK_SAND.asItem()) { return stack.getCount() * 80; } @@ -227,7 +225,7 @@ public static void logToChat(ISpiritweb data, String msg) public static boolean isClient(ISpiritweb data) { - return data.getLiving().level.isClientSide; + return data.getLiving().level().isClientSide; } public static int getHotkeyFlags(ISpiritweb data) @@ -259,9 +257,10 @@ public static int randomSlot(ItemStackHandler itemStackHandler) public static void spawnMasteredSandLine(ServerLevel level, Vec3 pos1, Vec3 pos2) { - ParticleOptions particleOptions = new BlockParticleOption(ParticleTypes.FALLING_DUST, SandmasteryBlocksRegistry.TEMPORARY_SAND_BLOCK.getBlock().defaultBlockState()); + ParticleOptions particleOptions = new BlockParticleOption(ParticleTypes.FALLING_DUST, SandmasteryBlocks.TEMPORARY_SAND_BLOCK.getBlock().defaultBlockState()); int dist = Mth.floor(pos1.distanceTo(pos2)); - for( Vec3 vector : vectorsBetweenPositions(pos1, pos2, dist)) { + for (Vec3 vector : vectorsBetweenPositions(pos1, pos2, dist)) + { level.sendParticles(particleOptions, vector.x, vector.y, vector.z, 2, 0, 0, 0, 1); } } From 7d165449802b7e92a1b54517e6f5c35e7cf1bd03 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 17:41:46 +1200 Subject: [PATCH 0877/1090] [Port] Breaking dehydration damage source --- .../sandmastery/common/Sandmastery.java | 1 + .../SandmasterySpiritwebSubmodule.java | 34 +++++++++---------- .../common/effects/DehydratedEffect.java | 10 +++--- .../sandmastery/common/items/QidoItem.java | 4 +-- .../sandmastery/common/items/SandJarItem.java | 6 ++-- .../manifestation/MasteryProjectile.java | 20 ++++++----- .../registries/SandmasteryDimensions.java | 7 ++-- 7 files changed, 42 insertions(+), 40 deletions(-) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java index f701c137f..76691af6c 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/Sandmastery.java @@ -53,6 +53,7 @@ public Sandmastery() SandmasteryEntityTypes.ENTITY_TYPES.register(modBus); SandmasteryManifestations.MANIFESTATIONS.register(modBus); SandmasteryMenuTypes.MENU_TYPES.register(modBus); + SandmasteryCreativeTabs.CREATIVE_TABS.register(modBus); SandmasteryDimensions.register(); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java index ac476211b..689515237 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.capabilities; @@ -16,8 +16,6 @@ import leaf.cosmere.sandmastery.client.SandmasteryKeybindings; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.config.SandmasteryConfigs; -import leaf.cosmere.sandmastery.common.effects.DehydratedEffect; -import leaf.cosmere.sandmastery.common.items.QidoItem; import leaf.cosmere.sandmastery.common.manifestation.SandmasteryManifestation; import leaf.cosmere.sandmastery.common.network.packets.SyncMasteryBindsMessage; import leaf.cosmere.sandmastery.common.registries.SandmasteryAttributes; @@ -26,6 +24,7 @@ import leaf.cosmere.sandmastery.common.utils.SandmasteryConstants; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; +import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.player.Player; @@ -34,7 +33,6 @@ import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; -import java.util.LinkedList; import java.util.List; import java.util.Random; import java.util.UUID; @@ -62,28 +60,28 @@ public void tickClient(ISpiritweb spiritweb) { final int isActivatedAndActive = Keybindings.MANIFESTATION_USE_ACTIVE.isDown() - ? 1 - : 0; + ? 1 + : 0; final int elevateFlag = SandmasteryKeybindings.SANDMASTERY_ELEVATE.isDown() - ? SandmasteryConstants.ELEVATE_HOTKEY_FLAG - : 0; + ? SandmasteryConstants.ELEVATE_HOTKEY_FLAG + : 0; final int launchFlag = SandmasteryKeybindings.SANDMASTERY_LAUNCH.isDown() - ? SandmasteryConstants.LAUNCH_HOTKEY_FLAG - : 0; + ? SandmasteryConstants.LAUNCH_HOTKEY_FLAG + : 0; final int projectileFlag = SandmasteryKeybindings.SANDMASTERY_PROJECTILE.isDown() - ? SandmasteryConstants.PROJECTILE_HOTKEY_FLAG - : 0; + ? SandmasteryConstants.PROJECTILE_HOTKEY_FLAG + : 0; final int platformFlag = SandmasteryKeybindings.SANDMASTERY_PLATFORM.isDown() - ? SandmasteryConstants.PLATFORM_HOTKEY_FLAG - : 0; + ? SandmasteryConstants.PLATFORM_HOTKEY_FLAG + : 0; int currentFlags = 0; currentFlags = currentFlags + isActivatedAndActive; @@ -225,7 +223,8 @@ public void adjustHydration(int amountToAdjust) private static void overmaster(ISpiritweb data) { - AttributeInstance availableRibbons = data.getLiving().getAttribute(SandmasteryAttributes.RIBBONS.getAttribute()); + final LivingEntity living = data.getLiving(); + AttributeInstance availableRibbons = living.getAttribute(SandmasteryAttributes.RIBBONS.getAttribute()); if (availableRibbons == null) { @@ -282,8 +281,9 @@ else if (ribbons < 15) } //damage and disable powers regardless - data.getLiving().hurt(DehydratedEffect.DEHYDRATED, 10F); - data.addEffect(EffectsHelper.getNewEffect(SandmasteryEffects.OVERMASTERED_EFFECT.get(), data.getLiving(), 1, SandmasteryConfigs.SERVER.OVERMASTERY_DURATION.get() * 20 * 60)); // * 20 * 60 to convert minutes to ticks + //todo replace dryout + living.hurt(living.damageSources().dryOut(), 10F); + data.addEffect(EffectsHelper.getNewEffect(SandmasteryEffects.OVERMASTERED_EFFECT.get(), living, 1, SandmasteryConfigs.SERVER.OVERMASTERY_DURATION.get() * 20 * 60)); // * 20 * 60 to convert minutes to ticks } @NotNull diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/effects/DehydratedEffect.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/effects/DehydratedEffect.java index 17f290372..e08d56c9b 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/effects/DehydratedEffect.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/effects/DehydratedEffect.java @@ -1,17 +1,15 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.effects; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.spiritweb.ISpiritweb; -import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.LivingEntity; public class DehydratedEffect extends CosmereEffect { - public static final DamageSource DEHYDRATED = (new DamageSource("dehydrated")).bypassArmor().bypassMagic().bypassEnchantments(); - public DehydratedEffect() { super(); @@ -34,6 +32,8 @@ protected int getTickOffset() @Override public void applyEffectTick(ISpiritweb data, double strength) { - data.getLiving().hurt(DEHYDRATED, 4.0F); + final LivingEntity living = data.getLiving(); + //todo swap out dryout damage source + living.hurt(living.damageSources().dryOut(), 4.0F); } } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java index 902578cce..fbc1aeae6 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/QidoItem.java @@ -96,7 +96,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte } @Override - public void onUsingTick(ItemStack pStack, LivingEntity pLivingEntity, int pRemainingUseDuration) + public void onUseTick(Level pLevel, LivingEntity pLivingEntity, ItemStack pStack, int pRemainingUseDuration) { if (!pLivingEntity.isCrouching()) { @@ -128,7 +128,7 @@ public void onUsingTick(ItemStack pStack, LivingEntity pLivingEntity, int pRemai setCharge(pStack, availableWater - increasePerTick); }); } - super.onUsingTick(pStack, pLivingEntity, pRemainingUseDuration); + super.onUseTick(pLevel, pLivingEntity, pStack, pRemainingUseDuration); } @Nonnull diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java index 31939be58..a8ec350da 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/items/SandJarItem.java @@ -33,7 +33,7 @@ public class SandJarItem extends ChargeableItemBase { public SandJarItem() { - super(PropTypes.Items.ONE.get().tab(SandmasteryItemGroups.ITEMS)); + super(PropTypes.Items.ONE.get()); } @Override @@ -54,7 +54,7 @@ public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pS MiscHelper.chargeItemFromInvestiture(pStack, pLevel, pEntity, getMaxCharge(pStack)); } - @Override + /*@Override public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) { if (allowedIn(tab)) @@ -69,7 +69,7 @@ public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList< setCharge(fullPower, getMaxCharge(fullPower)); stacks.add(fullPower); } - } + }*/ @Override public boolean isFoil(@NotNull ItemStack stack) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryProjectile.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryProjectile.java index e4603aef1..37e1e5232 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryProjectile.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/manifestation/MasteryProjectile.java @@ -1,5 +1,5 @@ /* - * File updated ~ 18 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.manifestation; @@ -16,8 +16,9 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.CuriosApi; -import top.theillusivec4.curios.api.SlotTypePreset; -import top.theillusivec4.curios.api.type.inventory.ICurioStacksHandler; +import top.theillusivec4.curios.api.SlotResult; + +import java.util.List; public class MasteryProjectile extends SandmasteryManifestation { @@ -27,7 +28,8 @@ public MasteryProjectile(Taldain.Mastery mastery) } @Override - protected int getBaseCost() { + protected int getBaseCost() + { return 100; } @@ -71,14 +73,14 @@ protected boolean performEffectServer(ISpiritweb data) } } - CuriosApi.getCuriosHelper().getCuriosHandler(player).ifPresent(handler -> + CuriosApi.getCuriosInventory(player).ifPresent(handler -> { - ICurioStacksHandler stacksHandler = handler.getCurios().get(SlotTypePreset.BELT.getIdentifier()); - if (stacksHandler != null) + List pouchesFound = handler.findCurios(SandmasteryItems.SAND_POUCH_ITEM.get()); + if (pouchesFound != null) { - for (int i = 0; i < stacksHandler.getSlots(); i++) + for (SlotResult pouchResult : pouchesFound) { - ItemStack pouch = stacksHandler.getStacks().getStackInSlot(i); + ItemStack pouch = pouchResult.stack(); if (!pouch.isEmpty() && pouch.is(SandmasteryItems.SAND_POUCH_ITEM.get())) { SandmasteryItems.SAND_POUCH_ITEM.get().shoot(pouch, player); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryDimensions.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryDimensions.java index c2b9b3fe1..708adeef0 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryDimensions.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryDimensions.java @@ -1,21 +1,20 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.registries; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.sandmastery.common.Sandmastery; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; -import net.minecraft.world.level.dimension.DimensionType; public class SandmasteryDimensions { public static final ResourceKey DAYSIDE_TALDAIN_DIM_KEY = ResourceKey.create( - Registry.DIMENSION_REGISTRY, + Registries.DIMENSION, Sandmastery.rl("dayside") ); From 386e3a2cd8c7d7d53aa34e743231f8a3a6b031f2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 17:46:10 +1200 Subject: [PATCH 0878/1090] [Port] roshar plants --- .../common/blocks/LavisPolypBlock.java | 51 ++++++++------ .../common/blocks/PrickletacBlock.java | 66 +++++++++++-------- .../common/blocks/RockbudVariantBlock.java | 65 ++++++++++-------- .../common/blocks/VinebudBlock.java | 66 +++++++++++-------- 4 files changed, 146 insertions(+), 102 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/LavisPolypBlock.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/LavisPolypBlock.java index 9c5968895..646415d97 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/LavisPolypBlock.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/LavisPolypBlock.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.surgebinding.common.blocks; import net.minecraft.core.BlockPos; @@ -9,35 +13,40 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.DirectionProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; -public class LavisPolypBlock extends HorizontalDirectionalBlock { - public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; - public static final VoxelShape SHAPE; +public class LavisPolypBlock extends HorizontalDirectionalBlock +{ + public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING; + public static final VoxelShape SHAPE; - public LavisPolypBlock () { - super(BlockBehaviour.Properties.of(Material.GRASS).color(MaterialColor.COLOR_GREEN).noCollission()); - } + public LavisPolypBlock() + { + super(BlockBehaviour.Properties.of().mapColor(MapColor.GRASS).noCollission()); + } - @Override - public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) { - return SHAPE; - } + @Override + public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) + { + return SHAPE; + } - public BlockState getStateForPlacement(BlockPlaceContext pContext) { - return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite()); - } + public BlockState getStateForPlacement(BlockPlaceContext pContext) + { + return this.defaultBlockState().setValue(FACING, pContext.getHorizontalDirection().getOpposite()); + } - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(FACING); - } + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) + { + pBuilder.add(FACING); + } - static { - SHAPE = Shapes.box(0.25, 0, 0.25, 0.75, 0.375, 0.75); - } + static + { + SHAPE = Shapes.box(0.25, 0, 0.25, 0.75, 0.375, 0.75); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/PrickletacBlock.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/PrickletacBlock.java index 6b3eac11b..06a93d759 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/PrickletacBlock.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/PrickletacBlock.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.surgebinding.common.blocks; import leaf.cosmere.common.blocks.BaseBlock; @@ -11,44 +15,52 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; -public class PrickletacBlock extends BaseBlock { - public static final IntegerProperty STATE; - public static final VoxelShape SHAPE; +public class PrickletacBlock extends BaseBlock +{ + public static final IntegerProperty STATE; + public static final VoxelShape SHAPE; - public PrickletacBlock() { - super(Properties.of(Material.GRASS).color(MaterialColor.COLOR_GREEN).noCollission()); - this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); - } + public PrickletacBlock() + { + super(Properties.of().mapColor(MapColor.GRASS).noCollission()); + this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); + } - @Override - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(STATE); - } + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) + { + pBuilder.add(STATE); + } - @Override - public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) { - return SHAPE; - } + @Override + public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) + { + return SHAPE; + } - @Override - public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) { - if (pLevel.isClientSide) return InteractionResult.SUCCESS; + @Override + public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) + { + if (pLevel.isClientSide) + { + return InteractionResult.SUCCESS; + } - pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); + pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); - return InteractionResult.SUCCESS; - } + return InteractionResult.SUCCESS; + } - static { - STATE = IntegerProperty.create("state", 1, 3); - SHAPE = Shapes.box(0.25, 0, 0.375, 0.5625, 0.6875, 0.6875); - } + static + { + STATE = IntegerProperty.create("state", 1, 3); + SHAPE = Shapes.box(0.25, 0, 0.375, 0.5625, 0.6875, 0.6875); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/RockbudVariantBlock.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/RockbudVariantBlock.java index 0261f6525..bca28c232 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/RockbudVariantBlock.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/RockbudVariantBlock.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.surgebinding.common.blocks; import leaf.cosmere.common.blocks.BaseBlock; @@ -10,34 +14,41 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import org.jetbrains.annotations.NotNull; -public class RockbudVariantBlock extends BaseBlock { - public static final IntegerProperty STATE; - - public RockbudVariantBlock() { - super(Properties.of(Material.GRASS).color(MaterialColor.COLOR_GREEN).noCollission()); - this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); - } - - @Override - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(STATE); - } - - @Override - public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) { - if (pLevel.isClientSide) return InteractionResult.SUCCESS; - - pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); - - return InteractionResult.SUCCESS; - } - - static { - STATE = IntegerProperty.create("state", 1, 6); - } +public class RockbudVariantBlock extends BaseBlock +{ + public static final IntegerProperty STATE; + + public RockbudVariantBlock() + { + super(Properties.of().mapColor(MapColor.GRASS).noCollission()); + this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) + { + pBuilder.add(STATE); + } + + @Override + public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) + { + if (pLevel.isClientSide) + { + return InteractionResult.SUCCESS; + } + + pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); + + return InteractionResult.SUCCESS; + } + + static + { + STATE = IntegerProperty.create("state", 1, 6); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/VinebudBlock.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/VinebudBlock.java index 30d0588b9..e03c2f9a3 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/VinebudBlock.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/blocks/VinebudBlock.java @@ -1,3 +1,7 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + package leaf.cosmere.surgebinding.common.blocks; import leaf.cosmere.common.blocks.BaseBlock; @@ -12,44 +16,52 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.IntegerProperty; -import net.minecraft.world.level.material.Material; -import net.minecraft.world.level.material.MaterialColor; +import net.minecraft.world.level.material.MapColor; import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.NotNull; -public class VinebudBlock extends BaseBlock { - public static final IntegerProperty STATE; - public static final VoxelShape SHAPE; +public class VinebudBlock extends BaseBlock +{ + public static final IntegerProperty STATE; + public static final VoxelShape SHAPE; - public VinebudBlock() { - super(BlockBehaviour.Properties.of(Material.GRASS).color(MaterialColor.COLOR_GREEN).noCollission()); - this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); - } + public VinebudBlock() + { + super(BlockBehaviour.Properties.of().mapColor(MapColor.GRASS).noCollission()); + this.registerDefaultState(this.defaultBlockState().setValue(STATE, 1)); + } - @Override - protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) { - pBuilder.add(STATE); - } + @Override + protected void createBlockStateDefinition(StateDefinition.Builder pBuilder) + { + pBuilder.add(STATE); + } - @Override - public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) { - return SHAPE; - } + @Override + public @NotNull VoxelShape getShape(@NotNull BlockState pState, @NotNull BlockGetter pLevel, @NotNull BlockPos pPos, @NotNull CollisionContext pContext) + { + return SHAPE; + } - @Override - public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) { - if (pLevel.isClientSide) return InteractionResult.SUCCESS; + @Override + public InteractionResult use(@NotNull BlockState pState, Level pLevel, @NotNull BlockPos pPos, @NotNull Player pPlayer, @NotNull InteractionHand pHand, @NotNull BlockHitResult pHit) + { + if (pLevel.isClientSide) + { + return InteractionResult.SUCCESS; + } - pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); + pLevel.setBlockAndUpdate(pPos, pState.cycle(STATE)); - return InteractionResult.SUCCESS; - } + return InteractionResult.SUCCESS; + } - static { - STATE = IntegerProperty.create("state", 1, 4); - SHAPE = Shapes.box(0.1875, 0, 0.1875, 0.8125, 0.625, 0.8125); - } + static + { + STATE = IntegerProperty.create("state", 1, 4); + SHAPE = Shapes.box(0.1875, 0, 0.1875, 0.8125, 0.625, 0.8125); + } } From 3bb792bc2b4bcdc3dd86592d11c8acd62cd978f9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:28:18 +1200 Subject: [PATCH 0879/1090] [Port] surgebinding combat buffs --- build.gradle | 3 ++- .../common/capabilities/SurgebindingSpiritwebSubmodule.java | 6 +++--- src/surgebinding/resources/META-INF/accesstransformer.cfg | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 src/surgebinding/resources/META-INF/accesstransformer.cfg diff --git a/build.gradle b/build.gradle index bdd2e84d1..fad930158 100644 --- a/build.gradle +++ b/build.gradle @@ -317,7 +317,8 @@ minecraft { mappings channel: "${mappings_channel}", version: "${mappings_version}" accessTransformers.from(file('src/main/resources/META-INF/accesstransformer.cfg'), - file('src/allomancy/resources/META-INF/accesstransformer.cfg')) + file('src/allomancy/resources/META-INF/accesstransformer.cfg'), + file('src/surgebinding/resources/META-INF/accesstransformer.cfg')) runs { client { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index a15bbbbf8..261472507 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; @@ -42,7 +42,7 @@ public void tickServer(ISpiritweb spiritweb) //tick stormlight if (anySurges) { - if (livingEntity.level.dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) && livingEntity.level.isThundering() && livingEntity.level.isRainingAt(livingEntity.blockPosition())) + if (livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) && livingEntity.level().isThundering() && livingEntity.level().isRainingAt(livingEntity.blockPosition())) { //todo how much stormlight per tick? //if player has max of 1000, it will take just under a minute to @@ -66,7 +66,7 @@ public void tickServer(ISpiritweb spiritweb) //otherwise conditional effects else { - if (livingEntity.getCombatTracker().isInCombat()) + if (livingEntity.getCombatTracker().inCombat) { //todo combat effect cost livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DAMAGE_BOOST, 0)); diff --git a/src/surgebinding/resources/META-INF/accesstransformer.cfg b/src/surgebinding/resources/META-INF/accesstransformer.cfg new file mode 100644 index 000000000..54c13be13 --- /dev/null +++ b/src/surgebinding/resources/META-INF/accesstransformer.cfg @@ -0,0 +1 @@ +public net.minecraft.world.damagesource.CombatTracker f_19281_ #inCombat \ No newline at end of file From a131b2c6d6ec450f585a15ec7ccfe09316dfce33 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:32:53 +1200 Subject: [PATCH 0880/1090] [Port] shardplate --- .../surgebinding/common/items/ShardplateItem.java | 6 +++--- .../common/items/tiers/ShardplateArmorMaterial.java | 7 ++++--- .../common/registries/SurgebindingItems.java | 12 ++++++------ 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardplateItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardplateItem.java index 1fef5898f..59261cb86 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardplateItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardplateItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 8 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -26,9 +26,9 @@ public class ShardplateItem extends ArmorItem { - public ShardplateItem(ShardplateArmorMaterial material, EquipmentSlot slot, Properties properties) + public ShardplateItem(ShardplateArmorMaterial material, ArmorItem.Type pType, Properties properties) { - super(material, slot, properties); + super(material, pType, properties); } @Nonnull diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java index b75ca7132..2981b9ca5 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.items.tiers; @@ -9,6 +9,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.util.LazyLoadedValue; import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; @@ -48,9 +49,9 @@ public enum ShardplateArmorMaterial implements ArmorMaterial this.repairIngredient = new LazyLoadedValue<>(pRepairIngredient); } - public int getDurabilityForSlot(EquipmentSlot pSlot) + public int getDurabilityForType(ArmorItem.Type pType) { - return HEALTH_PER_SLOT[pSlot.getIndex()] * this.durabilityMultiplier; + return HEALTH_PER_SLOT[pType.getSlot().getIndex()] * this.durabilityMultiplier; } public int getDefenseForSlot(EquipmentSlot pSlot) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java index c95cf4ba9..66aa3fb54 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -13,7 +13,7 @@ import leaf.cosmere.surgebinding.common.items.*; import leaf.cosmere.surgebinding.common.items.tiers.ShardbladeItemTier; import leaf.cosmere.surgebinding.common.items.tiers.ShardplateArmorMaterial; -import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.item.ArmorItem; import net.minecraftforge.common.ForgeSpawnEggItem; import java.util.Arrays; @@ -36,10 +36,10 @@ private SurgebindingItems() public static final ItemRegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> new ShardbladeItem(SHARDBLADE_ITEM_TIER, 10, -2.4F, PropTypes.Items.SHARDBLADE.get())); public static final ItemRegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> new ShardbladeItem(SHARDBLADE_ITEM_TIER, 10, -2.4F, PropTypes.Items.SHARDBLADE.get())); - public static final ItemRegistryObject SHARDPLATE_HELMET = ITEMS.register("shardplate_helmet", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, EquipmentSlot.HEAD, PropTypes.Items.SHARDBLADE.get())); - public static final ItemRegistryObject SHARDPLATE_CHEST = ITEMS.register("shardplate_chest", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, EquipmentSlot.CHEST, PropTypes.Items.SHARDBLADE.get())); - public static final ItemRegistryObject SHARDPLATE_LEGGINGS = ITEMS.register("shardplate_leggings", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, EquipmentSlot.LEGS, PropTypes.Items.SHARDBLADE.get())); - public static final ItemRegistryObject SHARDPLATE_BOOTS = ITEMS.register("shardplate_boots", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, EquipmentSlot.FEET, PropTypes.Items.SHARDBLADE.get())); + public static final ItemRegistryObject SHARDPLATE_HELMET = ITEMS.register("shardplate_helmet", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.HELMET, PropTypes.Items.SHARDBLADE.get())); + public static final ItemRegistryObject SHARDPLATE_CHEST = ITEMS.register("shardplate_chest", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.CHESTPLATE, PropTypes.Items.SHARDBLADE.get())); + public static final ItemRegistryObject SHARDPLATE_LEGGINGS = ITEMS.register("shardplate_leggings", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.LEGGINGS, PropTypes.Items.SHARDBLADE.get())); + public static final ItemRegistryObject SHARDPLATE_BOOTS = ITEMS.register("shardplate_boots", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.BOOTS, PropTypes.Items.SHARDBLADE.get())); public static final Map> HONORBLADES = From 203d2ef63d1d0f1e9558ff1dcdbeb868f0dcb373 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:36:59 +1200 Subject: [PATCH 0881/1090] [Port] shardplate armor material --- .../common/items/tiers/ShardplateArmorMaterial.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java index 2981b9ca5..ba086cd92 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/tiers/ShardplateArmorMaterial.java @@ -8,7 +8,6 @@ import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.LazyLoadedValue; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ArmorMaterial; import net.minecraft.world.item.Items; @@ -54,9 +53,9 @@ public int getDurabilityForType(ArmorItem.Type pType) return HEALTH_PER_SLOT[pType.getSlot().getIndex()] * this.durabilityMultiplier; } - public int getDefenseForSlot(EquipmentSlot pSlot) + public int getDefenseForType(ArmorItem.Type pType) { - return this.slotProtections[pSlot.getIndex()]; + return this.slotProtections[pType.getSlot().getIndex()]; } public int getEnchantmentValue() From 40cb10d83a52e6109a018e7373ec762f5f9e919a Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:37:17 +1200 Subject: [PATCH 0882/1090] [Port] more level references --- .../common/manifestation/SurgeGravitation.java | 5 +++-- .../common/manifestation/SurgeProgression.java | 11 ++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeGravitation.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeGravitation.java index cf4edbc0c..8b641f3cf 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeGravitation.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeGravitation.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.manifestation; @@ -10,6 +10,7 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations; +import net.minecraft.tags.DamageTypeTags; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.FireworkRocketEntity; @@ -28,7 +29,7 @@ public SurgeGravitation(Roshar.Surges surge) public static void onLivingAttackEvent(LivingAttackEvent event) { - if (event.getSource().getEntity() instanceof Player player && !event.getSource().isProjectile() && player.getMainHandItem().isEmpty()) + if (event.getSource().getEntity() instanceof Player player && !event.getSource().is(DamageTypeTags.IS_PROJECTILE) && player.getMainHandItem().isEmpty()) { SpiritwebCapability.get(player).ifPresent(iSpiritweb -> { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java index f0d92015e..ba75d3cb0 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java @@ -1,5 +1,5 @@ /* - * File updated ~ 27 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.manifestation; @@ -32,6 +32,7 @@ public SurgeProgression(Roshar.Surges surge) { super(surge); } + private static final HashMap progressionBlockMap = new HashMap<>(); @@ -71,7 +72,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) } } - if (event.getTarget() instanceof AgeableMob ageableMob && ageableMob.getLevel() instanceof ServerLevel) + if (event.getTarget() instanceof AgeableMob ageableMob && ageableMob.level() instanceof ServerLevel) { if (ageableMob.isBaby()) { @@ -79,7 +80,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) { if (iSpiritweb.hasManifestation(SurgebindingManifestations.SURGEBINDING_POWERS.get(Roshar.Surges.PROGRESSION).get())) { - int ageUpAmount = (int) Math.floor(-(ageableMob.getAge()/20D) * 0.1); // get age in seconds, then 10% of that + int ageUpAmount = (int) Math.floor(-(ageableMob.getAge() / 20D) * 0.1); // get age in seconds, then 10% of that SpiritwebCapability playerSpiritweb = (SpiritwebCapability) iSpiritweb; SurgebindingSpiritwebSubmodule submodule = (SurgebindingSpiritwebSubmodule) playerSpiritweb.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); @@ -112,7 +113,7 @@ public static void heal(LivingEntity livingEntity, float setHealthTo) double ySpeed = livingEntity.getRandom().nextGaussian() * 0.02D; double zSpeed = livingEntity.getRandom().nextGaussian() * 0.02D; - livingEntity.level.addParticle(ParticleTypes.HAPPY_VILLAGER, + livingEntity.level().addParticle(ParticleTypes.HAPPY_VILLAGER, livingEntity.getX(1.0D) - xSpeed * 10.0D, livingEntity.getRandomY() - ySpeed * 10.0D, livingEntity.getRandomZ(1.0D) - zSpeed * 10.0D, @@ -143,7 +144,7 @@ public static void ageUp(AgeableMob ageableMob, int ageUpAmount) double ySpeed = ageableMob.getRandom().nextGaussian() * 0.02D; double zSpeed = ageableMob.getRandom().nextGaussian() * 0.02D; - ageableMob.level.addParticle(ParticleTypes.HAPPY_VILLAGER, + ageableMob.level().addParticle(ParticleTypes.HAPPY_VILLAGER, ageableMob.getX(1.0D) - xSpeed * 10.0D, ageableMob.getRandomY() - ySpeed * 10.0D, ageableMob.getRandomZ(1.0D) - zSpeed * 10.0D, From 2e9827bb71705d1a56c93e3912b1cad4bd11e274 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:37:44 +1200 Subject: [PATCH 0883/1090] [Port] surgebinding ore target --- .../common/registry/FeatureRegistry.java | 16 ++++----- .../registries/SurgebindingFeatures.java | 33 ++++--------------- 2 files changed, 15 insertions(+), 34 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index 62bfbb41e..ee4d1da82 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -32,8 +32,8 @@ public class FeatureRegistry { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Cosmere.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Cosmere.MODID); - private static final RuleTest ruletest1 = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); - private static final RuleTest ruletest2 = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); + public static final RuleTest STONE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); + public static final RuleTest DEEPSLATE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); // todo: might need to be redone? ore and placed features are already in the generated jsons, so might be fine // hard to tell while it doesn't build @@ -77,10 +77,10 @@ private static List makeTarget(Metals.MetalTy return ImmutableList.of( OreConfiguration.target( - ruletest1, + STONE_ORE_REPLACEABLES, BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), OreConfiguration.target( - ruletest2, + DEEPSLATE_ORE_REPLACEABLES, BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) ); } @@ -91,17 +91,17 @@ private static List makeTarget(Metals.MetalTy //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) + public static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) { return orePlacement(CountPlacement.of(pCount), pHeightRange); } - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) + public static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) { return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); } - private static List orePlacement(PlacementModifier countPlacement, PlacementModifier heightRange) + public static List orePlacement(PlacementModifier countPlacement, PlacementModifier heightRange) { return List.of(countPlacement, InSquarePlacement.spread(), heightRange, BiomeFilter.biome()); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java index 7943d0cd6..dab6c99c8 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -11,14 +11,15 @@ import leaf.cosmere.common.registration.impl.ConfiguredFeatureRegistryObject; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureRegistryObject; +import leaf.cosmere.common.registry.FeatureRegistry; import leaf.cosmere.surgebinding.common.Surgebinding; import net.minecraft.core.Holder; -import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; -import net.minecraft.world.level.levelgen.placement.*; +import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; import java.util.Arrays; import java.util.List; @@ -52,7 +53,7 @@ public class SurgebindingFeatures PLACED_FEATURES.register( type.getName() + Constants.RegNameStubs.ORE, () -> new PlacedFeature(Holder.direct(CONFIGURED_GEM_ORE_FEATURES.get(type).get()), - commonOrePlacement( + FeatureRegistry.commonOrePlacement( 8,//width? HeightRangePlacement.triangle( VerticalAnchor.aboveBottom(-80), @@ -68,32 +69,12 @@ private static List makeTarget(Roshar.Gemston { return ImmutableList.of( OreConfiguration.target( - OreFeatures.STONE_ORE_REPLACEABLES, + FeatureRegistry.STONE_ORE_REPLACEABLES, SurgebindingBlocks.GEM_ORE.get(type).getBlock().defaultBlockState()), OreConfiguration.target( - OreFeatures.DEEPSLATE_ORE_REPLACEABLES, + FeatureRegistry.DEEPSLATE_ORE_REPLACEABLES, SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(type).getBlock().defaultBlockState()) ); } - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } From 9012189ccd744f3cebb813faf643907e9370f560 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 18:44:47 +1200 Subject: [PATCH 0884/1090] [Port] surgebinding biomes and dimension errors --- .../SurgebindingDataGenerator.java | 8 +++++- .../common/registries/SurgebindingBiomes.java | 27 ++++++++++++++----- .../registries/SurgebindingDimensions.java | 8 +++--- .../world/GemOreBiomeFeatureModifier.java | 4 +-- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index b9845cbb3..63e3c2706 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -1,14 +1,17 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; +import leaf.cosmere.common.registry.BiomeRegistry; import leaf.cosmere.surgebinding.biome.SurgebindingBiomeModifierGen; import leaf.cosmere.surgebinding.biome.SurgebindingBiomeTagsProvider; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.loottables.SurgebindingLootTableGen; import leaf.cosmere.surgebinding.patchouli.SurgebindingPatchouliGen; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; @@ -20,6 +23,9 @@ @EventBusSubscriber(modid = Surgebinding.MODID, bus = Bus.MOD) public class SurgebindingDataGenerator { + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.BIOME, BiomeRegistry::bootstrapBiomes); + @SubscribeEvent public static void gatherData(GatherDataEvent event) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomes.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomes.java index 15c3f28be..179fe5fda 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomes.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomes.java @@ -1,27 +1,42 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; import leaf.cosmere.common.registration.impl.BiomeDeferredRegister; -import leaf.cosmere.common.registration.impl.BiomeRegistryObject; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.core.Registry; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.worldgen.BootstapContext; import net.minecraft.data.worldgen.biome.OverworldBiomes; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; +import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; public class SurgebindingBiomes { public static final BiomeDeferredRegister BIOMES = new BiomeDeferredRegister(Surgebinding.MODID); - public static final BiomeRegistryObject ROSHAR_BIOME = BIOMES.register("roshar_biome", OverworldBiomes::stonyPeaks); + //public static final BiomeRegistryObject ROSHAR_BIOME = BIOMES.register("roshar_biome", OverworldBiomes::stonyPeaks); - public static final ResourceKey ROSHAR_BIOME_KEY = ResourceKey.create(Registry.BIOME_REGISTRY, Surgebinding.rl("roshar_biome")); - public static final ResourceKey ROSHAR_NOISE_SETTINGS = ResourceKey.create(Registry.NOISE_GENERATOR_SETTINGS_REGISTRY, Surgebinding.rl("roshar_biome")); + public static final ResourceKey ROSHAR_BIOME_KEY = ResourceKey.create(Registries.BIOME, Surgebinding.rl("roshar_biome")); + public static final ResourceKey ROSHAR_NOISE_SETTINGS = ResourceKey.create(Registries.NOISE_SETTINGS, Surgebinding.rl("roshar_biome")); + public static void bootstrapBiomes(BootstapContext context) + { + HolderGetter> carverGetter = context.lookup(Registries.CONFIGURED_CARVER); + HolderGetter placedFeatureGetter = context.lookup(Registries.PLACED_FEATURE); + + register(context, ROSHAR_BIOME_KEY, OverworldBiomes.stonyPeaks(placedFeatureGetter, carverGetter)); + } + + private static void register(BootstapContext context, ResourceKey key, Biome biome) + { + context.register(key, biome); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingDimensions.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingDimensions.java index 9e5d3fe94..0a60cc422 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingDimensions.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingDimensions.java @@ -1,12 +1,12 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.core.Registry; +import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.dimension.DimensionType; @@ -15,13 +15,13 @@ public class SurgebindingDimensions { public static final ResourceKey ROSHAR_DIM_KEY = ResourceKey.create( - Registry.DIMENSION_REGISTRY, + Registries.DIMENSION, Surgebinding.rl("roshar") ); public static final ResourceKey ROSHAR_DIM_TYPE = ResourceKey.create( - Registry.DIMENSION_TYPE_REGISTRY, + Registries.DIMENSION_TYPE, ROSHAR_DIM_KEY.registry() ); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java index 4870a3068..2935eaf73 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.world; @@ -54,7 +54,7 @@ private static DataResult generationStageFromString(S } catch (Exception e) { - return DataResult.error("Not a decoration stage: " + name); + return DataResult.error(() -> "Not a decoration stage: " + name); } } } \ No newline at end of file From 35c846623145c9cb2fab61b7b8a9ec2d9f04285e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 19:00:58 +1200 Subject: [PATCH 0885/1090] [Port] disabling some ore gen stuff --- .../common/registry/FeatureRegistry.java | 15 ++------------- .../common/registries/SurgebindingFeatures.java | 17 ++--------------- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index ee4d1da82..39bf285fe 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -5,28 +5,17 @@ package leaf.cosmere.common.registry; import com.google.common.collect.ImmutableList; -import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; -import leaf.cosmere.common.registration.impl.ConfiguredFeatureRegistryObject; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.common.registration.impl.PlacedFeatureRegistryObject; -import net.minecraft.core.Holder; import net.minecraft.tags.BlockTags; -import net.minecraft.world.level.levelgen.VerticalAnchor; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.placement.*; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; -import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; public class FeatureRegistry { @@ -37,7 +26,7 @@ public class FeatureRegistry // todo: might need to be redone? ore and placed features are already in the generated jsons, so might be fine // hard to tell while it doesn't build - public static final Map>> CONFIGURED_METAL_ORE_FEATURES = + /*public static final Map>> CONFIGURED_METAL_ORE_FEATURES = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( @@ -70,7 +59,7 @@ public class FeatureRegistry ) ) )); - +*/ private static List makeTarget(Metals.MetalType metalType) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java index dab6c99c8..f7614a455 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java @@ -5,34 +5,21 @@ package leaf.cosmere.surgebinding.common.registries; import com.google.common.collect.ImmutableList; -import leaf.cosmere.api.Constants; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; -import leaf.cosmere.common.registration.impl.ConfiguredFeatureRegistryObject; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.common.registration.impl.PlacedFeatureRegistryObject; import leaf.cosmere.common.registry.FeatureRegistry; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.core.Holder; -import net.minecraft.world.level.levelgen.VerticalAnchor; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; -import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import java.util.Arrays; import java.util.List; -import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; public class SurgebindingFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Surgebinding.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Surgebinding.MODID); - public static final Map>> CONFIGURED_GEM_ORE_FEATURES = + /*public static final Map>> CONFIGURED_GEM_ORE_FEATURES = Arrays.stream(Roshar.Gemstone.values()) .collect(Collectors.toMap( Function.identity(), @@ -62,7 +49,7 @@ public class SurgebindingFeatures ) ) ) - )); + ));*/ private static List makeTarget(Roshar.Gemstone type) From c1de34e700454dddeeb3af33a03cf8d0e78b4bfd Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 19:01:25 +1200 Subject: [PATCH 0886/1090] [Port] Fix misnamed secondary cosmere creative tab --- .../leaf/cosmere/common/registry/CreativeTabsRegistry.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 35d6aa555..d0bc3ef1b 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -34,7 +34,8 @@ public class CreativeTabsRegistry ); public static final CreativeTabRegistryObject BLOCKS = - CREATIVE_TABS.registerMain( + CREATIVE_TABS.register( + "cosmere.blocks", Component.translatable("itemGroups." + Cosmere.MODID + ".blocks"), BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue(), builder -> @@ -97,7 +98,7 @@ else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) } else if (tabKey == CreativeModeTabs.SPAWN_EGGS) { - + } else if (tabKey == CreativeModeTabs.INGREDIENTS) { From a8b7f3b2471f69ab5670a196b54f18178a149194 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 19:14:35 +1200 Subject: [PATCH 0887/1090] [Port] updated precipitation key in biome jsons --- .../resources/data/cosmere/worldgen/biome/shadesmar_biome.json | 2 +- .../data/sandmastery/worldgen/biome/dayside_biome.json | 2 +- .../data/surgebinding/worldgen/biome/roshar_biome.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/data/cosmere/worldgen/biome/shadesmar_biome.json b/src/main/resources/data/cosmere/worldgen/biome/shadesmar_biome.json index e203e938d..4fec2bc86 100644 --- a/src/main/resources/data/cosmere/worldgen/biome/shadesmar_biome.json +++ b/src/main/resources/data/cosmere/worldgen/biome/shadesmar_biome.json @@ -1,7 +1,7 @@ { "temperature": 0.5, "downfall": 0.5, - "precipitation": "none", + "has_precipitation": false, "effects": { "sky_color": 0, "fog_color": 3089199, diff --git a/src/sandmastery/resources/data/sandmastery/worldgen/biome/dayside_biome.json b/src/sandmastery/resources/data/sandmastery/worldgen/biome/dayside_biome.json index e9e1a4d4d..177564e95 100644 --- a/src/sandmastery/resources/data/sandmastery/worldgen/biome/dayside_biome.json +++ b/src/sandmastery/resources/data/sandmastery/worldgen/biome/dayside_biome.json @@ -1,7 +1,7 @@ { "temperature": 2, "downfall": 0, - "precipitation": "none", + "has_precipitation": false, "effects": { "sky_color": 7254527, "fog_color": 16773304, diff --git a/src/surgebinding/resources/data/surgebinding/worldgen/biome/roshar_biome.json b/src/surgebinding/resources/data/surgebinding/worldgen/biome/roshar_biome.json index 81a526551..cc9a06992 100644 --- a/src/surgebinding/resources/data/surgebinding/worldgen/biome/roshar_biome.json +++ b/src/surgebinding/resources/data/surgebinding/worldgen/biome/roshar_biome.json @@ -1,7 +1,7 @@ { "temperature": 1, "downfall": 0.3, - "precipitation": "rain", + "has_precipitation": true, "effects": { "sky_color": 7776511, "fog_color": 12638463, From 46aba925a0668397471b599f9eb3efa78003995d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 19:20:52 +1200 Subject: [PATCH 0888/1090] [Port] Fix self referential stacktrace explosion --- .../java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java index aa566a8d1..74b81164a 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/IForgeEntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.mixin; @@ -25,7 +25,7 @@ default float getStepHeight() { final Entity self = (Entity) this; //todo replace this mixin completely with just using the attribute - float vanillaStep = self.getStepHeight(); + float vanillaStep = self.maxUpStep(); if (self instanceof LivingEntity living) { AttributeInstance stepHeightAttribute = living.getAttribute(ForgeMod.STEP_HEIGHT_ADDITION.get()); From f9c862ccff3865af40d44d6ed22de7e53305097c Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 19:35:05 +1200 Subject: [PATCH 0889/1090] [Port] apparently damage types require datapacks jsons now --- .../cosmere/data/cosmere/damage_type/eat_metal.json | 5 +++++ .../generated/cosmere/data/cosmere/damage_type/spiked.json | 5 +++++ 2 files changed, 10 insertions(+) create mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json diff --git a/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json b/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json new file mode 100644 index 000000000..6b0079c12 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.0, + "message_id": "cosmere.eat_metal", + "scaling": "when_caused_by_living_non_player" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json b/src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json new file mode 100644 index 000000000..ea0adecc6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "cosmere.spiked", + "scaling": "when_caused_by_living_non_player" +} \ No newline at end of file From 84037171b0881e5dd2e17fdc40aeab437030a1b1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 20:57:16 +1200 Subject: [PATCH 0890/1090] [Port] Hemalurgy Creative Tabs --- .../cosmere/hemalurgy/common/Hemalurgy.java | 8 +- .../itemgroups/HemalurgyItemGroups.java | 24 ------ .../registries/HemalurgyCreativeTabs.java | 82 +++++++++++++++++++ 3 files changed, 85 insertions(+), 29 deletions(-) delete mode 100644 src/hemalurgy/java/leaf/cosmere/hemalurgy/common/itemgroups/HemalurgyItemGroups.java create mode 100644 src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/Hemalurgy.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/Hemalurgy.java index 305f45b54..c23eab5f0 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/Hemalurgy.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/Hemalurgy.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common; @@ -12,10 +12,7 @@ import leaf.cosmere.common.config.CosmereModConfig; import leaf.cosmere.hemalurgy.common.capabilities.HemalurgySpiritwebSubmodule; import leaf.cosmere.hemalurgy.common.config.HemalurgyConfigs; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyEntityTypes; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyLootFunctions; +import leaf.cosmere.hemalurgy.common.registries.*; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.ModLoadingContext; @@ -51,6 +48,7 @@ public Hemalurgy() HemalurgyItems.ITEMS.register(modBus); HemalurgyLootFunctions.LOOT_FUNCTIONS.register(modBus); HemalurgyEntityTypes.ENTITY_TYPES.register(modBus); + HemalurgyCreativeTabs.CREATIVE_TABS.register(modBus); versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/itemgroups/HemalurgyItemGroups.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/itemgroups/HemalurgyItemGroups.java deleted file mode 100644 index b7135b90a..000000000 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/itemgroups/HemalurgyItemGroups.java +++ /dev/null @@ -1,24 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.hemalurgy.common.itemgroups; - -import leaf.cosmere.hemalurgy.common.Hemalurgy; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; - -public class HemalurgyItemGroups -{ - - public static CreativeModeTab HEMALURGIC_SPIKES = new CreativeModeTab(Hemalurgy.MODID + ".spikes") - { - @Override - public ItemStack makeIcon() - { - return new ItemStack(HemalurgyItems.METAL_SPIKE.entrySet().stream().findAny().get().getValue().get()); - } - }; - -} diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java new file mode 100644 index 000000000..f032502a2 --- /dev/null +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -0,0 +1,82 @@ +/* + * File updated ~ 10 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.hemalurgy.common.registries; + +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.hemalurgy.common.Hemalurgy; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class HemalurgyCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Hemalurgy.MODID, HemalurgyCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Hemalurgy.MODID + ".items"), + HemalurgyItems.METAL_SPIKE.entrySet().stream().findAny().get().getValue(), + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(HemalurgyItems.ITEMS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} From 2d557ebcda186bcd0ab3516209f1e9cee71d112b Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 10 Aug 2024 21:31:20 +1200 Subject: [PATCH 0891/1090] [Port] filled spikes re-added to hemalurgy creative tab --- .../common/items/HemalurgicSpikeItem.java | 95 -------------- .../registries/HemalurgyCreativeTabs.java | 120 +++++++++++++++++- 2 files changed, 119 insertions(+), 96 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 953fc7d63..dc51322b0 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -108,101 +108,6 @@ public float getMaxChargeModifier() return (0.5f / 9f); } - @Override - public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) - { - super.fillItemCategory(tab, stacks); - if (allowedIn(tab)) - { - if (getMetalType().hasFeruchemicalEffect()) - { - - //what powers can this metal type contain - - if (this.getMetalType() == Metals.MetalType.IRON) - { - ItemStack filledIronSpike = new ItemStack(this); - //steals physical strength - //don't steal modified values, only base value - //todo decide how much strength is reasonable to steal and how much goes to waste - //currently will try 70% - double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have - - - Invest(filledIronSpike, this.getMetalType(), strengthToAdd, UUID.randomUUID()); - - stacks.add(filledIronSpike); - } - else if (this.getMetalType() == Metals.MetalType.TIN) - { - ItemStack filledIronSpike = new ItemStack(this); - Invest(filledIronSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); - stacks.add(filledIronSpike); - } - - - Collection hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); - if (hemalurgyStealWhitelist != null) - { - for (Metals.MetalType stealType : hemalurgyStealWhitelist) - { - if (!stealType.hasAssociatedManifestation()) - { - continue; - } - try - { - - //then we've found something to steal! - switch (this.getMetalType()) - { - //steals allomantic abilities - case STEEL, BRONZE, CADMIUM, ELECTRUM -> - { - ItemStack allomancySpike = new ItemStack(this); - Manifestation allomancyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", stealType.getName())); - Invest(allomancySpike, allomancyMani, 7, UUID.randomUUID()); - stacks.add(allomancySpike); - } - //steals feruchemical abilities - case PEWTER, BRASS, BENDALLOY, GOLD -> - { - ItemStack feruchemySpike = new ItemStack(this); - Manifestation feruchemyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("feruchemy", stealType.getName())); - Invest(feruchemySpike, feruchemyMani, 7, UUID.randomUUID()); - stacks.add(feruchemySpike); - } - } - - - } - catch (Exception e) - { - CosmereAPI.logger.info(String.format("remove %s from whitelist for %s spikes", stealType, getMetalType())); - } - } - } - } - - if (this.getMetalType() == Metals.MetalType.LERASATIUM) - { - ItemStack bound = new ItemStack(this); - final UUID identity = UUID.randomUUID(); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - //lerasatium creative mode hide surge powers for now - if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.SURGEBINDING) - { - continue; - } - - Invest(bound, manifestation, 5, identity); - } - - stacks.add(bound); - } - } - } //todo hemalurgic decay //https://wob.coppermind.net/events/332/#e9534 diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java index f032502a2..e75578c7c 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -4,15 +4,26 @@ package leaf.cosmere.hemalurgy.common.registries; +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.hemalurgy.common.Hemalurgy; +import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import java.util.Collection; +import java.util.UUID; + public class HemalurgyCreativeTabs { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Hemalurgy.MODID, HemalurgyCreativeTabs::addToExistingTabs); @@ -27,10 +38,10 @@ public class HemalurgyCreativeTabs .displayItems((displayParameters, output) -> { CreativeTabDeferredRegister.addToDisplay(HemalurgyItems.ITEMS, output); + addFilledSpikes(output); }) ); - private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { ResourceKey tabKey = event.getTabKey(); @@ -79,4 +90,111 @@ else if (tabKey == CreativeModeTabs.INGREDIENTS) } } + private static void addFilledSpikes(CreativeModeTab.Output output) + { + for (ItemRegistryObject spike : HemalurgyItems.METAL_SPIKE.values()) + { + filledSpike(spike.asItem(), output); + } + } + + private static void filledSpike(HemalurgicSpikeItem item, CreativeModeTab.Output output) + { + final Metals.MetalType metalType = item.getMetalType(); + if (metalType.hasFeruchemicalEffect()) + { + //what powers can this metal type contain + if (metalType == Metals.MetalType.IRON) + { + ItemStack filledIronSpike = new ItemStack(item); + //steals physical strength + //don't steal modified values, only base value + //todo decide how much strength is reasonable to steal and how much goes to waste + //currently will try 70% + double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have + + + item.Invest(filledIronSpike, metalType, strengthToAdd, UUID.randomUUID()); + + output.accept(filledIronSpike); + } + else if (metalType == Metals.MetalType.TIN) + { + ItemStack filledIronSpike = new ItemStack(item); + item.Invest(filledIronSpike, metalType, 0.25f, UUID.randomUUID()); + output.accept(filledIronSpike); + } + + + Collection hemalurgyStealWhitelist = metalType.getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + for (Metals.MetalType stealType : hemalurgyStealWhitelist) + { + if (!stealType.hasAssociatedManifestation()) + { + continue; + } + try + { + + //then we've found something to steal! + switch (metalType) + { + //steals allomantic abilities + case STEEL, BRONZE, CADMIUM, ELECTRUM -> + { + ItemStack allomancySpike = new ItemStack(item); + Manifestation manifestation = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", stealType.getName())); + item.Invest(allomancySpike, manifestation, 7, UUID.randomUUID()); + output.accept(allomancySpike); + } + //steals feruchemical abilities + case PEWTER, BRASS, BENDALLOY, GOLD -> + { + ItemStack feruchemySpike = new ItemStack(item); + Manifestation manifestation = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("feruchemy", stealType.getName())); + item.Invest(feruchemySpike, manifestation, 7, UUID.randomUUID()); + output.accept(feruchemySpike); + } + } + + + } + catch (Exception e) + { + CosmereAPI.logger.info(String.format("remove %s from whitelist for %s spikes", stealType, metalType)); + } + } + } + } + + if (metalType == Metals.MetalType.LERASATIUM) + { + ItemStack bound = new ItemStack(item); + final UUID identity = UUID.randomUUID(); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + //lerasatium creative mode hide surge powers for now + if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.SURGEBINDING) + { + continue; + } + switch (manifestation.getManifestationType()) + { + case ALLOMANCY, FERUCHEMY -> + { + item.Invest(bound, manifestation, 5, identity); + } + default -> + { + //skip everything else for now + } + } + + } + + output.accept(bound); + } + } } From 9041b98a979b966b54a7b2809841b071cfc6b6f6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:38:53 +1200 Subject: [PATCH 0892/1090] [Port] creative tab improvements --- .../registries/ExampleCreativeTabs.java | 84 +++++++++++++++++++ .../common/items/ChargeableItemBase.java | 24 ++---- 2 files changed, 92 insertions(+), 16 deletions(-) create mode 100644 src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java diff --git a/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java b/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java new file mode 100644 index 000000000..940b750b5 --- /dev/null +++ b/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java @@ -0,0 +1,84 @@ +/* + * File updated ~ 11 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.example.common.registries; + +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.common.registry.ItemsRegistry; +import leaf.cosmere.example.common.Example; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class ExampleCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Example.MODID, ExampleCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Example.MODID + ".items"), + ItemsRegistry.GUIDE,//ExampleItems.ITEMS., + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(ExampleItems.ITEMS, output); + CreativeTabDeferredRegister.addToDisplay(ExampleBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java b/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java index 79ea2db14..4e7cc4f80 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableItemBase.java @@ -1,5 +1,5 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.common.items; @@ -7,7 +7,6 @@ import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.charge.IChargeable; import net.minecraft.ChatFormatting; -import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; @@ -17,7 +16,6 @@ import net.minecraftforge.api.distmarker.OnlyIn; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; import java.util.List; import java.util.UUID; @@ -28,19 +26,13 @@ public ChargeableItemBase(Properties prop) super(prop); } - // todo: move somewhere more appropriate -// @Override -// public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) -// { -// if (allowedIn(tab)) -// { -// stacks.add(new ItemStack(this)); -// -// ItemStack fullPower = new ItemStack(this); -// setCharge(fullPower, getMaxCharge(fullPower)); -// stacks.add(fullPower); -// } -// } + public void addFilled(CreativeModeTab.Output output) + { + output.accept(new ItemStack(this)); + ItemStack fullPower = new ItemStack(this); + setCharge(fullPower, getMaxCharge(fullPower)); + output.accept(fullPower); + } @Override public int getEntityLifespan(ItemStack itemStack, Level world) From 51fb73fcfee440a41f76217bc8efeb34d94dbec3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:39:11 +1200 Subject: [PATCH 0893/1090] [Port] Hemalurgy Creative Tab better --- .../common/items/HemalurgicSpikeItem.java | 102 +++++++++++++++- .../registries/HemalurgyCreativeTabs.java | 114 +----------------- 2 files changed, 98 insertions(+), 118 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index dc51322b0..fcaea9bc5 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 8 - 2023 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.items; @@ -14,11 +14,8 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.items.ChargeableMetalCurioItem; import leaf.cosmere.hemalurgy.common.Hemalurgy; -import leaf.cosmere.hemalurgy.common.itemgroups.HemalurgyItemGroups; -import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -43,6 +40,7 @@ import top.theillusivec4.curios.api.type.capability.ICuriosItemHandler; import javax.annotation.Nonnull; +import java.util.Collection; import java.util.List; import java.util.UUID; import java.util.function.Predicate; @@ -63,7 +61,7 @@ public class HemalurgicSpikeItem extends ChargeableMetalCurioItem implements IHe public HemalurgicSpikeItem(Metals.MetalType metalType) { - super(metalType, HemalurgyItemGroups.HEMALURGIC_SPIKES); + super(metalType); //todo decide on damage float attackDamage = 2f + 1f;//tier.getAttackDamage(); @@ -108,6 +106,98 @@ public float getMaxChargeModifier() return (0.5f / 9f); } + @Override + public void addFilled(CreativeModeTab.Output output) + { + super.addFilled(output); + + if (getMetalType().hasFeruchemicalEffect()) + { + //what powers can this metal type contain + + if (this.getMetalType() == Metals.MetalType.IRON) + { + ItemStack filledIronSpike = new ItemStack(this); + //steals physical strength + //don't steal modified values, only base value + //todo decide how much strength is reasonable to steal and how much goes to waste + //currently will try 70% + double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have + + + Invest(filledIronSpike, this.getMetalType(), strengthToAdd, UUID.randomUUID()); + + output.accept(filledIronSpike); + } + else if (this.getMetalType() == Metals.MetalType.TIN) + { + ItemStack filledIronSpike = new ItemStack(this); + Invest(filledIronSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); + output.accept(filledIronSpike); + } + + + Collection hemalurgyStealWhitelist = getMetalType().getHemalurgyStealWhitelist(); + if (hemalurgyStealWhitelist != null) + { + for (Metals.MetalType stealType : hemalurgyStealWhitelist) + { + if (!stealType.hasAssociatedManifestation()) + { + continue; + } + try + { + + //then we've found something to steal! + switch (this.getMetalType()) + { + //steals allomantic abilities + case STEEL, BRONZE, CADMIUM, ELECTRUM -> + { + ItemStack allomancySpike = new ItemStack(this); + Manifestation allomancyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", stealType.getName())); + Invest(allomancySpike, allomancyMani, 7, UUID.randomUUID()); + output.accept(allomancySpike); + } + //steals feruchemical abilities + case PEWTER, BRASS, BENDALLOY, GOLD -> + { + ItemStack feruchemySpike = new ItemStack(this); + Manifestation feruchemyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("feruchemy", stealType.getName())); + Invest(feruchemySpike, feruchemyMani, 7, UUID.randomUUID()); + output.accept(feruchemySpike); + } + } + + + } + catch (Exception e) + { + CosmereAPI.logger.info(String.format("remove %s from whitelist for %s spikes", stealType, getMetalType())); + } + } + } + } + + if (this.getMetalType() == Metals.MetalType.LERASATIUM) + { + ItemStack bound = new ItemStack(this); + final UUID identity = UUID.randomUUID(); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + //lerasatium creative mode hide surge powers for now + if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.SURGEBINDING) + { + continue; + } + + Invest(bound, manifestation, 5, identity); + } + + output.accept(bound); + } + } //todo hemalurgic decay //https://wob.coppermind.net/events/332/#e9534 @@ -167,7 +257,7 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool @SubscribeEvent public static void onEntityDeath(LivingDeathEvent event) { - if (event.getEntity().level.isClientSide()) + if (event.getEntity().level().isClientSide()) { return; } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java index e75578c7c..77e35d293 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -1,13 +1,9 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.registries; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; -import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -15,20 +11,14 @@ import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; -import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; -import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import java.util.Collection; -import java.util.UUID; - public class HemalurgyCreativeTabs { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Hemalurgy.MODID, HemalurgyCreativeTabs::addToExistingTabs); - public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( Component.translatable("itemGroups." + Hemalurgy.MODID + ".items"), @@ -94,107 +84,7 @@ private static void addFilledSpikes(CreativeModeTab.Output output) { for (ItemRegistryObject spike : HemalurgyItems.METAL_SPIKE.values()) { - filledSpike(spike.asItem(), output); - } - } - - private static void filledSpike(HemalurgicSpikeItem item, CreativeModeTab.Output output) - { - final Metals.MetalType metalType = item.getMetalType(); - if (metalType.hasFeruchemicalEffect()) - { - //what powers can this metal type contain - if (metalType == Metals.MetalType.IRON) - { - ItemStack filledIronSpike = new ItemStack(item); - //steals physical strength - //don't steal modified values, only base value - //todo decide how much strength is reasonable to steal and how much goes to waste - //currently will try 70% - double strengthToAdd = 15 * 0.7D;// Iron golems have the most base attack damage of normal mods (giants have 50??). Ravagers have - - - item.Invest(filledIronSpike, metalType, strengthToAdd, UUID.randomUUID()); - - output.accept(filledIronSpike); - } - else if (metalType == Metals.MetalType.TIN) - { - ItemStack filledIronSpike = new ItemStack(item); - item.Invest(filledIronSpike, metalType, 0.25f, UUID.randomUUID()); - output.accept(filledIronSpike); - } - - - Collection hemalurgyStealWhitelist = metalType.getHemalurgyStealWhitelist(); - if (hemalurgyStealWhitelist != null) - { - for (Metals.MetalType stealType : hemalurgyStealWhitelist) - { - if (!stealType.hasAssociatedManifestation()) - { - continue; - } - try - { - - //then we've found something to steal! - switch (metalType) - { - //steals allomantic abilities - case STEEL, BRONZE, CADMIUM, ELECTRUM -> - { - ItemStack allomancySpike = new ItemStack(item); - Manifestation manifestation = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", stealType.getName())); - item.Invest(allomancySpike, manifestation, 7, UUID.randomUUID()); - output.accept(allomancySpike); - } - //steals feruchemical abilities - case PEWTER, BRASS, BENDALLOY, GOLD -> - { - ItemStack feruchemySpike = new ItemStack(item); - Manifestation manifestation = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("feruchemy", stealType.getName())); - item.Invest(feruchemySpike, manifestation, 7, UUID.randomUUID()); - output.accept(feruchemySpike); - } - } - - - } - catch (Exception e) - { - CosmereAPI.logger.info(String.format("remove %s from whitelist for %s spikes", stealType, metalType)); - } - } - } - } - - if (metalType == Metals.MetalType.LERASATIUM) - { - ItemStack bound = new ItemStack(item); - final UUID identity = UUID.randomUUID(); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - //lerasatium creative mode hide surge powers for now - if (manifestation.getManifestationType() == Manifestations.ManifestationTypes.SURGEBINDING) - { - continue; - } - switch (manifestation.getManifestationType()) - { - case ALLOMANCY, FERUCHEMY -> - { - item.Invest(bound, manifestation, 5, identity); - } - default -> - { - //skip everything else for now - } - } - - } - - output.accept(bound); + spike.asItem().addFilled(output); } } } From 03e93440b2a5f6d183e47c68ac3dc18b42fa068f Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:39:33 +1200 Subject: [PATCH 0894/1090] [Port] feruchemy creative tabs better --- .../common/items/BandsOfMourningItem.java | 35 +++++++++---------- .../registries/FeruchemyCreativeTabs.java | 23 ++++++++++-- .../common/registries/FeruchemyItems.java | 5 ++- 3 files changed, 40 insertions(+), 23 deletions(-) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java index f6eaf4eb0..4d7b21756 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BandsOfMourningItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 8 - 2024 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.items; @@ -7,12 +7,14 @@ import com.google.common.collect.Multimap; import leaf.cosmere.api.Constants; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.CompoundNBTHelper; import leaf.cosmere.api.manifestation.Manifestation; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; import top.theillusivec4.curios.api.SlotContext; @@ -24,30 +26,27 @@ public BandsOfMourningItem() { super(Metals.MetalType.HARMONIUM); } -/*todo setup filled bands of mourning for creative + @Override - public void fillItemCategory(@Nonnull CreativeModeTab tab, @Nonnull NonNullList stacks) + public void addFilled(CreativeModeTab.Output output) { - if (allowedIn(tab)) - { - ItemStack fullPower = new ItemStack(this); - setCharge(fullPower, getMaxCharge(fullPower)); + ItemStack fullPower = new ItemStack(this); + setCharge(fullPower, getMaxCharge(fullPower)); - CompoundTag nbt = fullPower.getOrCreateTagElement("StoredInvestiture"); + CompoundTag nbt = fullPower.getOrCreateTagElement("StoredInvestiture"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String attributeRegistryName = manifestation.getRegistryName().toString(); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String attributeRegistryName = manifestation.getRegistryName().toString(); - if (manifestation instanceof IHasMetalType) - { - nbt.putDouble(attributeRegistryName, 20); - } + if (manifestation instanceof IHasMetalType) + { + nbt.putDouble(attributeRegistryName, 20); } - - stacks.add(fullPower); } - }*/ + + output.accept(fullPower); + } @Override public float getMaxChargeModifier() diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java index 15f8e161e..6ad0fdc19 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -1,12 +1,14 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.feruchemy.common.Feruchemy; +import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.CreativeModeTab; @@ -17,7 +19,6 @@ public class FeruchemyCreativeTabs { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Feruchemy.MODID, FeruchemyCreativeTabs::addToExistingTabs); - public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( Component.translatable("itemGroups." + Feruchemy.MODID + ".items"), @@ -27,9 +28,27 @@ public class FeruchemyCreativeTabs .displayItems((displayParameters, output) -> { CreativeTabDeferredRegister.addToDisplay(FeruchemyItems.ITEMS, output); + addFilledMetalminds(output); }) ); + private static void addFilledMetalminds(CreativeModeTab.Output output) + { + for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + { + item.get().addFilled(output); + } + for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + { + item.get().addFilled(output); + } + for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + { + item.get().addFilled(output); + } + + FeruchemyItems.BANDS_OF_MOURNING.get().addFilled(output); + } private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java index 6a714f20f..b6feb6d6f 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; @@ -13,7 +13,6 @@ import leaf.cosmere.feruchemy.common.items.BraceletMetalmindItem; import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; import leaf.cosmere.feruchemy.common.items.RingMetalmindItem; -import net.minecraft.world.item.Item; import java.util.Arrays; import java.util.Map; @@ -25,7 +24,7 @@ public class FeruchemyItems public static final ItemDeferredRegister ITEMS = new ItemDeferredRegister(Feruchemy.MODID); - public static final ItemRegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", BandsOfMourningItem::new); + public static final ItemRegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", BandsOfMourningItem::new); public static final Map> METAL_RINGS = Arrays.stream(Metals.MetalType.values()) From ca576ff07dc46952a5260eb38995db8e5f7130b4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:39:51 +1200 Subject: [PATCH 0895/1090] [Port] sandmastery filled qido to creative tab --- .../sandmastery/common/registries/SandmasteryCreativeTabs.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java index 7e4e9c752..9d7f9ff1b 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java @@ -27,6 +27,7 @@ public class SandmasteryCreativeTabs .displayItems((displayParameters, output) -> { CreativeTabDeferredRegister.addToDisplay(SandmasteryItems.ITEMS, output); + SandmasteryItems.QIDO_ITEM.get().addFilled(output); CreativeTabDeferredRegister.addToDisplay(SandmasteryBlocks.BLOCKS, output); }) ); From 31343cbc916c77f1f160b65739bbd81641f1a6da Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:40:13 +1200 Subject: [PATCH 0896/1090] [Port] allomancy creative tab --- .../cosmere/allomancy/common/Allomancy.java | 3 +- .../allomancy/common/items/MetalVialItem.java | 29 +++---- .../registries/AllomancyCreativeTabs.java | 84 +++++++++++++++++++ 3 files changed, 97 insertions(+), 19 deletions(-) create mode 100644 src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java b/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java index 4edd2237b..b07b52311 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common; @@ -53,6 +53,7 @@ public Allomancy() AllomancyMenuTypes.MENU_TYPES.register(modBus); AllomancyRecipes.SPECIAL_RECIPES.register(modBus); AllomancyStats.STATS.register(modBus); + AllomancyCreativeTabs.CREATIVE_TABS.register(modBus); //Set our version number to match the mods.toml file, which matches the one in our build.gradle versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index 0d20b4de0..a6da9dab6 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 11 - 8 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.items; @@ -12,7 +12,6 @@ import leaf.cosmere.api.helpers.PlayerHelper; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.items.BaseItem; -import net.minecraft.core.NonNullList; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; @@ -43,22 +42,16 @@ public class MetalVialItem extends BaseItem implements IHasMetalType private static final String metal_amounts = "metalAmounts"; private static final int MAX_METALS_COUNT = 16; - // no longer exists, will need to manually assign to creative mode tab elsewhere - //@Override - //public void fillItemCategory(CreativeModeTab pCategory, NonNullList pItems) - //{ - // super.fillItemCategory(pCategory, pItems); - - // if (allowedIn(pCategory)) - // { - // final ItemStack filled = new ItemStack(this); - // for (int i = 0; i < 16; i++) - // { - // addMetals(filled, i, 1); - // } - // pItems.add(filled); - // } - //} + + public void addFilled(CreativeModeTab.Output output) + { + final ItemStack filled = new ItemStack(this); + for (int i = 0; i < 16; i++) + { + addMetals(filled, i, 1); + } + output.accept(filled); + } private static CompoundTag getContainedMetalsTag(ItemStack stack) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java new file mode 100644 index 000000000..d2ea40ec4 --- /dev/null +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java @@ -0,0 +1,84 @@ +/* + * File updated ~ 11 - 8 - 2024 ~ Leaf + */ + +package leaf.cosmere.allomancy.common.registries; + +import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class AllomancyCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Allomancy.MODID, AllomancyCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("itemGroups." + Allomancy.MODID + ".items"), + AllomancyItems.METAL_VIAL, + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(AllomancyItems.ITEMS, output); + AllomancyItems.METAL_VIAL.get().addFilled(output); + //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} From 6a9accd2380b68081c5b689954074783aafc30d3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 11:55:51 +1200 Subject: [PATCH 0897/1090] [Port] feruchemy creative, forgot rings/bracelets --- .../feruchemy/common/registries/FeruchemyCreativeTabs.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java index 6ad0fdc19..347126ab8 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -8,7 +8,9 @@ import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.feruchemy.common.Feruchemy; +import leaf.cosmere.feruchemy.common.items.BraceletMetalmindItem; import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; +import leaf.cosmere.feruchemy.common.items.RingMetalmindItem; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; import net.minecraft.world.item.CreativeModeTab; @@ -38,11 +40,11 @@ private static void addFilledMetalminds(CreativeModeTab.Output output) { item.get().addFilled(output); } - for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + for (ItemRegistryObject item : FeruchemyItems.METAL_BRACELETS.values()) { item.get().addFilled(output); } - for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + for (ItemRegistryObject item : FeruchemyItems.METAL_RINGS.values()) { item.get().addFilled(output); } From 77747a50ddc07883508c672b07ae0d4fd8b86228 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 11 Aug 2024 12:36:18 +1200 Subject: [PATCH 0898/1090] [Port] even betterer ordering feruchemy/hemalurgy --- .../registries/FeruchemyCreativeTabs.java | 32 +++++++++++++------ .../registries/HemalurgyCreativeTabs.java | 10 ++++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java index 347126ab8..a224cfa5f 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -4,9 +4,9 @@ package leaf.cosmere.feruchemy.common.registries; +import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; -import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.items.BraceletMetalmindItem; import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; @@ -36,20 +36,34 @@ public class FeruchemyCreativeTabs private static void addFilledMetalminds(CreativeModeTab.Output output) { - for (ItemRegistryObject item : FeruchemyItems.METAL_NECKLACES.values()) + FeruchemyItems.BANDS_OF_MOURNING.get().addFilled(output); + + //I don't like the multiple for loops, + // but this is how we have them ordered nicely in the creative menu + for (Metals.MetalType metalType : Metals.MetalType.values()) { - item.get().addFilled(output); + if (metalType.hasFeruchemicalEffect()) + { + final RingMetalmindItem item = FeruchemyItems.METAL_RINGS.get(metalType).get(); + item.addFilled(output); + } } - for (ItemRegistryObject item : FeruchemyItems.METAL_BRACELETS.values()) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - item.get().addFilled(output); + if (metalType.hasFeruchemicalEffect()) + { + final BraceletMetalmindItem item = FeruchemyItems.METAL_BRACELETS.get(metalType).get(); + item.addFilled(output); + } } - for (ItemRegistryObject item : FeruchemyItems.METAL_RINGS.values()) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - item.get().addFilled(output); + if (metalType.hasFeruchemicalEffect()) + { + final NecklaceMetalmindItem item = FeruchemyItems.METAL_NECKLACES.get(metalType).get(); + item.addFilled(output); + } } - - FeruchemyItems.BANDS_OF_MOURNING.get().addFilled(output); } private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java index 77e35d293..9694aa43c 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -4,9 +4,9 @@ package leaf.cosmere.hemalurgy.common.registries; +import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; -import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import net.minecraft.network.chat.Component; @@ -82,9 +82,13 @@ else if (tabKey == CreativeModeTabs.INGREDIENTS) private static void addFilledSpikes(CreativeModeTab.Output output) { - for (ItemRegistryObject spike : HemalurgyItems.METAL_SPIKE.values()) + for (Metals.MetalType metalType : Metals.MetalType.values()) { - spike.asItem().addFilled(output); + if (metalType.hasHemalurgicEffect()) + { + final HemalurgicSpikeItem item = HemalurgyItems.METAL_SPIKE.get(metalType).get(); + item.addFilled(output); + } } } } From 6a4b6221db94e752f0e6f471d47900d04ae1a0dc Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Tue, 17 Sep 2024 14:34:14 -0400 Subject: [PATCH 0899/1090] Changes to Allomancy, Feruchemy, and Cosmere tools patchouli guides. Adds keybinds to steel, iron, zinc, and brass allomancy pages. Adds mentions of future features for aluminum allomancy. Clarifies use on Chromium, Nicrosil, Cadmium, and Bendalloy Allomancy. Corrects Typo on Feruchemical Cadmium and clarifies compounding. Edits Cosmere tools main page slightly. Remember to check my work on the Allomancy guide. --- .../patchouli/PatchouliAllomancyCategory.java | 29 ++++++++++++------- .../patchouli/PatchouliToolsCategory.java | 4 +-- .../patchouli/PatchouliFeruchemyCategory.java | 4 +-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index 01d840f2c..7fc5ef470 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -9,6 +9,7 @@ import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.StringHelper; +import leaf.cosmere.client.Keybindings; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; @@ -105,11 +106,15 @@ public static void collect(List categories, List categories, List categories, List categories, List categories, List categories, List categories, List Date: Tue, 17 Sep 2024 14:34:14 -0400 Subject: [PATCH 0900/1090] Changes to Allomancy, Feruchemy, and Cosmere tools patchouli guides. Adds keybinds to steel, iron, zinc, and brass allomancy pages. Adds mentions of future features for aluminum allomancy. Clarifies use on Chromium, Nicrosil, Cadmium, and Bendalloy Allomancy. Corrects Typo on Feruchemical Cadmium and clarifies compounding. Edits Cosmere tools main page slightly. Remember to check my work on the Allomancy guide. Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../patchouli/PatchouliAllomancyCategory.java | 29 ++++++++++++------- .../patchouli/PatchouliToolsCategory.java | 4 +-- .../patchouli/PatchouliFeruchemyCategory.java | 4 +-- 3 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index 01d840f2c..7fc5ef470 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -9,6 +9,7 @@ import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.StringHelper; +import leaf.cosmere.client.Keybindings; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; @@ -105,11 +106,15 @@ public static void collect(List categories, List categories, List categories, List categories, List categories, List categories, List categories, List Date: Sat, 28 Sep 2024 19:53:41 +1200 Subject: [PATCH 0901/1090] [Port] work towards getting the build gradle task going --- build.gradle | 25 +++++++++++++++-------- gradle.properties | 4 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 62076 -> 63721 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- src/allomancy/resources/pack.mcmeta | 4 +--- src/aondor/resources/pack.mcmeta | 4 +--- src/aviar/resources/pack.mcmeta | 4 +--- src/awakening/resources/pack.mcmeta | 4 +--- src/cosmeretools/resources/pack.mcmeta | 4 +--- src/example/resources/pack.mcmeta | 4 +--- src/feruchemy/resources/pack.mcmeta | 4 +--- src/hemalurgy/resources/pack.mcmeta | 4 +--- src/main/resources/pack.mcmeta | 4 +--- src/sandmastery/resources/pack.mcmeta | 4 +--- src/soulforgery/resources/pack.mcmeta | 4 +--- src/surgebinding/resources/pack.mcmeta | 4 +--- 16 files changed, 31 insertions(+), 48 deletions(-) diff --git a/build.gradle b/build.gradle index fad930158..a24df753a 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,7 @@ buildscript { plugins { id 'org.ajoberstar.grgit.service' version '5.2.0' - id 'net.darkhax.curseforgegradle' version '1.0.14' + id 'net.darkhax.curseforgegradle' version '1.1.16' id "com.modrinth.minotaur" version "2.+" id 'java' id 'eclipse' @@ -171,7 +171,7 @@ def setupExtraSourceSets(SourceSet base) } //And then setup and have all the extra sourceSets have their configurations extend the ones for the base module so that they can // properly access the dependency - for (def extraType : extraTypes) { + for (String extraType : extraTypes) { //Setup a source set in extraType/$name def extraSourceSet = setupExtraSourceSet(base, extraType) //And then setup the configurations for it @@ -306,7 +306,10 @@ version = "${minecraft_version}-${forge_version}-" + full_mod_version java { - toolchain.languageVersion = JavaLanguageVersion.of("${java_version}") + toolchain { + languageVersion.set(JavaLanguageVersion.of("${java_version}")) + //vendor.set(JvmVendorSpec.JETBRAINS) + } withSourcesJar() } @@ -335,6 +338,10 @@ minecraft { // Note: This is not your email, even if you have a Mojang account args '--username', project.getProperty('mc_username') } + if (project.hasProperty('mc_accessToken')) { + //Your access token, you can find it in your '.minecraft/launcher_accounts.json' file + args '--accessToken', project.getProperty('mc_accessToken') + } } server { setupRunConfig(it, true) } gameTestServer { setupRunConfig(it, true, "runGameTests") } @@ -364,13 +371,13 @@ def setupRunConfig(RunConfig runConfig, boolean supportsGameTests, String direct runConfig.property 'mixin.env.refMapRemappingFile', "${projectDir}/build/createSrgToMcp/output.srg" if (supportsGameTests) { //Specify all our mods as domains to look for game tests - runConfig.property 'forge.enabledGameTestNamespaces', 'cosmere,allomancy,feruchemy,hemalurgy,surgebinding,sandmastery' + runConfig.property 'forge.enabledGameTestNamespaces', 'cosmere,allomancy,feruchemy,hemalurgy,surgebinding,sandmastery,cosmeretools' } if (project.hasProperty('forge_force_ansi')) { //Force ansi if declared as a gradle variable, as the auto detection doesn't detect IntelliJ properly // or eclipse's plugin that adds support for ansi escape in console - runConfig.jvmArg('-Dterminal.ansi=' + project.getProperty('forge_force_ansi')) + runConfig.jvmArg("-Dterminal.ansi=${project.getProperty('forge_force_ansi')}") } runConfig.mods.register("cosmere").configure { @@ -610,7 +617,7 @@ for (def name : secondaryModules) { def createReobf(SourceSet sourceSet) { def reobfTask = createReobf(sourceSet.getJarTaskName()) - reobfTask.configure { classpath.from(sourceSet.compileClasspath) } + reobfTask.configure { libraries.from(sourceSet.compileClasspath) } tasks.named(sourceSet.getJarTaskName()).configure(task -> task.finalizedBy(reobfTask)) return reobfTask } @@ -739,7 +746,7 @@ void setGenericCurseArtifactData(UploadArtifact artifact, String changelog, Stri artifact.changelog = changelog artifact.changelogType = 'text' artifact.releaseType = "${release_type}" - artifact.addModLoader("forge") + artifact.addModLoader("Forge") } void uploadSecondaryCurseProject(TaskPublishCurseForge task, long projectId, String changelog, TaskProvider sourceSetJar, String release_type) @@ -805,7 +812,7 @@ if (System.getenv("MODRINTH_API_TOKEN") != null || project.hasProperty('modrinth projectId = "SEABTDiK" versionNumber = "${full_mod_version}" versionType = "${release_type}" - gameVersions = ["1.19.2"] // Must be an array, even with only one version + gameVersions = ["1.20.1"] // Must be an array, even with only one version changelog = changeLogResolver.call() uploadFile = jar getAdditionalFiles().value([apiJar.get()]) @@ -837,7 +844,7 @@ def createSecondaryModrinthUpload(String output, String targetProjectId, TaskPro modrinth { projectId = targetProjectId uploadFile = sourceSetJar.get() - gameVersions = ["1.19.2"] // Must be an array, even with only one version + gameVersions = ["1.20.1"] // Must be an array, even with only one version //Clear additional upload files as this is a modification of what things are set to from before getAdditionalFiles().empty() diff --git a/gradle.properties b/gradle.properties index ad2768b8b..672c1f066 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ # -# File updated ~ 1 - 5 - 2024 ~ Leaf +# File updated ~ 19 - 9 - 2024 ~ Leaf # -org.gradle.jvmargs=-Xmx3G +org.gradle.jvmargs=-Xmx2G java_version=17 # Minecraft/Forge minecraft_version=1.20.1 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index c1962a79e29d3e0ab67b14947c167a862655af9b..7f93135c49b765f8051ef9d0a6055ff8e46073d8 100644 GIT binary patch delta 37652 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 delta 36122 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 Ac-xW1# z){S32Cnt6?HmLcD&~7U(;X$!yC#c{BkMEFE^u#7L>^&RuEYO0<>O(2Xl(1glD6OoL z_6a5Un|;_18~O#E@V@IdkAM*72PxbyrFDo#EJubGK}GVag->PY8`KS8o!^+V6B@@| z?~c(^>YXo)tj{R+~MkU2Ovf)*aa=>{ltsx;eDzwsK!V742EyP;Rak)pM zcVsKl+m%d1OrlI>-%g^es!%kSA{f?;v0O+$fTQ<38@z zBZq4ECfhWH7|_~e90-GYg(CHj(j?6IxZB*)eye_RN`L?B`(>A6yhxEMMWne;@AOBZ z$!`|rh4|3VFFnv_qWu0W>{K|WRrert?W>vEZr{3ILa+p({b&fF2+lYpie&*~dMEN5 z-LMB=wr=PH!o5tk2c(w-zo6mD@+$ z$#VWGF_I6ZawAC2>iE~8@j$_-{^t<|OQJcMSYa9R06of9)vF$waK616SZRR#%K_T8 zE1DQkP$8ut5Unm?n@N~SX^nBjMvs4uk?eU9r^*rMGWiCNq*-M}KFkWUna5O30hY&x zZ*JZ+Pv14-h=pHaj8QL=_qmhut+CaQ^$)QRgg&gzo}>ocQp)1pcWb4^cwPn@e|#-y zb+r@FVsbuZCw?v2+}5e{uXG)!UP7o^5l6(hB4d07GF?GHR7bpZ2b4FxIAglxmKTcN zaMGFd^FqsI*@YL*pZ=vYjPBi0mQ(j!DUUna&Nz#uGA{(bkP~Vhaib?X)tON0qE;2E zxFH1Y!oP62K;_=QC*0}#?d3(+n>wIAI!+;`Qzi$c+J;K!i~v$93T2MB&CU*?C)Xz^ zM+jt(P@LU>wN`IbFT)$UGZdVkL2md{UhI^#SZxBNj0pY+-`Qy?(JH0V>ZP-LC;xmS znBf-V!;N*(?%MX#${^RLle0{t&eoE`)1V>O99+qorc8~}TVAwVGwFA!Rg^3TQ0?5x zZOtTt4ZA@FVRdLbH}uIgj6EkmnH$gJzV2y&snt^twJjEtwj!ll?NEs-yO=_jZ z5$d&OS&XEOdgx2;xz+F*ly5klyG6vfKfFe>2n#2EQVqwF%a*yqEa!|i|3uh22Q9O5 zz&IlU7VxF0OS}J&mTb?UP&qv#mA%djb&AE}*uT9p5=Xuc*9iVRgq^Xs&q{FnT_bn; z1@miHrD;qQ^Z5R&CzJIxx#7nN3kvJr``h5~h;ZpyhKAyGzdt1sasf8$Gt&MVRcV1g z>#ecpg|1hWJNsyrs8GhsA4KlR_vXolv=u%CkVMTHuqlt2D{SeGZFPoya{k3@%!goR z#~OY@zayCD%)?t8R6F?K&FgR&QvoVY<#vn95B{zd8_t0_=^9j(p*vYNNIiBH7DjQMAS1{DpJ{2WeQwRQIf2w=j9W|<<&Lxc$dcDc< zPVu_|FTlc~6G^Rv!-0syp+tB`eCf@1_zTvO-eFGiqJ%0!26(ZLCPK!GiIv34FSRlo zm$H%K0Yz{*ahdSS&berCz$$%77Sq!cK*iAHR|Q>l=vr9SltkiJv9GS9N`vvail%Sh zl>cDWy6EN!Lk$~WeZ;MUc(T!wh)G&?SY3cOF13O(omF@)r}Pw9>8ADfDCOBK05d;n zDp0j>G`9*!SSDJV=efOv|6uz=t6(%|bI$JOU#%#0+seT(&9UQOAPo>3?*!2r=pXzO z^=yNOZ-OSh(OfY2{JmBluz%z#4Z?po^Z#h@_){1Fz^@f_J`*~UsRQs4srm-g5$Fcm z2@EOdWX@vI)(CW3o+t4fpjkhH zlL>a`00xI^AD3OelU$FJ*^iep0)M!_ocu5cSnAry5(!}|jHy8xAjQ#uf3>EXQtWagX!Sprml<~z5l0~%5gSJn z8JENN+n=`P@72G@m(AWPv#BSvnb`ihM)%8qKQrmE&}lVc93|F3opK8BxY!%p_V!j4 zS&oM!HX2fo7VDcMazs~_;j7BPgq&7ly_=Ca#8g4VbUNt?-X>R8tXcs>nr!v7&4pqB zz+cB6LBy`ImD$WT=}*v1^k-AhN~b#LCqpM)92OjEDw7ZUlkL$|=$n?=L~2#hNZj;W z)#u`&%rZCY=PUZjMp%f+_hH#}TVU65mak7+e$KUXP1GDEFkC<&93 zZ>7}}=qbr5R+92xz6V6#rTN zzJ3O&jO1X0JKKLfRky!d{i8ep;J82cDRWHn5wAJHy9a#8fcW^4W*`Ii&*1QX{Zgpk zw0jJ%Rl$8mdV+03wX#eqRxRlZv?b%qI~HL|pE*`vBK^7KW`y}|4cs<1soLtT-Iu?X zu9S%?&(vL0D%mTo(YGQy-B<=21oE3F+9N81aqOjDDa!Or+D}hPNLbv>%B3T|AFlc^9x7hym``{pff)G#@iWOkV?TnpDu$!Vss?QEgv)xA^fGVij*CT zNMVhn@Xmpxy{}ONU<>A$Z&eKvZF;8WCeC4fe6=bstP0(dhhX<3+46m{eQ>KbHBoT{ z{UgH{kZTC6|s75dx1o(1b~;)PtuK*PHHh?iQ+B;=}VqviJnUy9vy5%r$ZT zoqfLVkU|;KnseQ)IP%on9TZe1VaQcog5Qalpm6J+C~__S1{h~JR&Ol zLsu3lR3Rb@fK%bsj&xy-NyY~;i7(8HA}fLW1DTfd5_1AUcswF_X%Ju%_hhy?LAI6? zzO6N~@bR%DMA(pf`=rJ+j`P-UAI z;|9^=i57<}4&>8tiIyZvfa!9_rK?T!iHVGymX4su!^=IVf`xIdN-P|l=s<+_14MTb zG4AMhtaGCBFiFKMY<9S;YW?8SevyP1%z&~^0`^Ubw_xIGn1(y}p_|RUr!u~V7|!Y1 zyz~)>s*(-UyPr()1wl1)VEIMxA3Qs0@&zYJH669dZSe{W9y1_K3*%ori{igpV!Hoc zo4v1)NzrTQ06mo@LA200VXIA)Q;#<^WVFqEQ6WX(sCkSUbw}-fY=`vZQ50KLaw)UX z-NTUCb*E8Sz;A)cJ6n|eKlT>gToz3y-8cLjOOJEA27SPW;LpNHp%fsz@cm7M(SxBt zS-|UsQzxvZR_hpl!Do0_FBjuc2^jWb3+T)j$l?Fxwl^A8|I)$dD^HgCMP$&OIAn;eHZ9;DLS2fB<_Y~hCW@( z+0=^6Pzl9AzUk!FE@=Y>T#wU#GgvGuqS0G*cJ5lMt34=Iu;UUQs9NFDl#1u|$mRK! zYJoA60fwrl+*B&qRNod=>FHHf{BMr43joXKbSeeEUlH~?txvjYNfKx4F;QCAOD#LQ z!Wu`hX0{oRT%g_&iN@5fJJjOsL_iGc`6sKR^qX%Uqa)D1?1H&NvoSvZc7 z=`o^YLmo8}4u%pHlUzI=`T1-iI-hYwtUNidfcLoVf;*6)>j!chUI8lca2}kJVkqn8 z1st0V_v1nc*TEdH@~b)J8TQhAff0{DZ2e6#{$_`o<^Ee8r0mMH7`k^8J4F|r^mi;B zh#(hP_y>x+%+UkK&!V2VGuQE#ITLDe?!#;n)6!=ABj~WhTByH;OQ{I2D_yPxiAMIw zHSi`KU5iln05n&ZOL>L|uCjgFiJ-<~CE#@6#V`PL-$V$boiHl?IN((i37SpDPw=$* zbO4(^yg!iEMTnID-&~z<-hwDO2&%Oo7+p_zp&S3<8;^`(3d)w{Czyyo4oWZi8+^i9 zDD{mH7{e5kt%IMC3Q_bp5KJqckA7T)UosxtD<+e}PjHksUV^hi;!={=aPQHqC6WEodO1YIGnV%Kz;kbU=!Rmm%5_ z`j1>=)&^XXAv-A&RHt#WnFmp%5)#r8lo^{w6Ev$~mOOisscBQw?5wk8&4{`U;+YiP zb8F2qhK?;!L8&xiWKGY_KTGIGY0Hft%jK*+gv`(STkK2kZrAS1Rnm{wqZ1I#odY&Q z!rda0erY}oLz+`vARz)}Jm3~)$Eze-BjnZ^yH3dwQ@<)70}_3D02sSYg%K0dI^u!< zyE|7P?Dg;0rx&QoF4ka{r!UJ*cZh`p{GJ^ze}7(E*ewG7?!+Oampf;$$K5LuU zzWcBJV|Qz9Lx7Q#Xxpu+RmWz|a^vnf*$#W-t_9_sJ!7N0#_Y;YyEI=$Qxl@zNu+Wq zNKyWBi?M!1L|0K<7GU>>vHQNVDoiEl56bb4z*Wx|2Ld8# z7mp7lBrhqMMF!WOMtDAkf{lhs!(SQCz5D!H>IVCp#-`)V{{om8x4h(V*{oQ2%%lIc z9GGbzTpgscXD)2LXllpKwm5i<$_17gTD2OPpD7-sTP0*?Jpr0~HtJ7pv_D8)MW+Vx z5E@+S{!dls9n{3uhH;1>%|Z=rks2TrDFPzBNJ~Hkg4A4;-ix4u1Owb4Ua8)ti4Zzi zXcEK#mm(q{BGMxQN|z3iq97lBdo#}Gm)(Efv-3OWJ-f3zv*(>T&qF-juL9!;P&Kn4 zHDFCIZy+sG7Dr<=+8ggQ_10yMl{p@*p0uhT&p;oF>$h$sq*tSe@oA0gREl)1R z0QHp%Qe!#^6JL)0={H-u7%-o?xAe4;uc_M1J$*#)OCP^4Ms$e%0m-Uzj0M@CVBveA z)xQtjd&2dcIJ&je0DC39;D$Ntx>uyCo|%Q2W3bbW7x&-u_`eZEp-S*%+ece+J)X>o zX*F|re)xmMN)NUH_S@bK6WA)*9V0$%Y9#lX{l4W77(U2`YJ&Sq==Ph1L!(g*=^Zx_ zlsQ?;1T}SE#YVbzd+=be`;o=l3SYDBW{i{kqcW63v*bi41}Erx)z`JOFPvCfI`d%B zejxc2U-P1^%F9MS0c$)}9hXN)y0sipoJq069r=t2l@GF~DrRCj2g=8Ik`Gtzxtt6TQmKgPue z-n}h4E0YwFa4&zx8`Gv&nW^*78wC&3c>ab~lilx{6RI-tuk7(PGWaUD+-NEX`~ZD` zdR-m4E1YyGOIUHGO%RTMc&{mRe9Yt8xZ-5br-`p>R&c5_U+b$4yMx#>h(sVi;}2CfBsTprdM8`tYR#hEa2$c)F;jD z*(Xtb<8id3^EiGb)Ta32O{K8KHiGARXiz(Ma5c+xTu)DC$X^>)j-xjp{kUwl=PaqJ zqm((!uC3ujWk>;=E6ulG=qzQth`%1#5}f0B zr>AH$s!J1}2evd&E`3CM1xDw_6BeImmsh#x7qkCO&OSW#u2BCDyHkx|UfoBdr*h%_ z`+~$BoKx^l1^O}Qn<)~!$tgtjeuC6 zp;MsI@pmzqg676&9tquxe_GC!Z5ZMsq&}3E%1#c%Z(kS4a?_5s`@%^?6!@!Pn1BQY zpT9ov8hvwrdCV`N9W|xWEBGX(^nyX2=_IsCRX)pF(PMaswS!GE_HxB$H;U}F%K49t z{PFN_+D4^-2y1`e;}2@fY!Rm!T|}55eDUNCs`pjK-2RD~ z#+;cJ_AGbx`B8P=B=zhLr`0YkpyN3qRJX7K-}Q=|a`7bx zu71sUc^_}Y{4j5oj*wEkmV(5n#a(CF4rgR>FsG1)wnNn)hAsp(Qwyb0X{M!PncW_E z(uJoCYbjjcBCNrO9jDIwv`?oXU3Qq#9mwuN_QCltpNOkqb(8(&&QxV#7L6tO%#pLF zZ`g&LsTz>9oqmxkzojQpi%9gY@w%&1Q?E_TZr9q!MhT!!roJ_~qFmyac#;wl_>JG&K$?~J`#5~&R@Rdi`vbFG zmG3juYOjmSh*0cDzuoORB2GENZ8v`{U+RJOG!~ z5;F|HrQdk8B8;RC$xkuL&7p)9F2e8J<2H^UE>{Q7dgEpsjGWx zPr0*ilC#fppWULoo~e|ni52Q*3(&D)#64vpSFyU-GgV1W@srzrV5eAo_;^iFrG|Ww zBRK}>DK$SQm>EwwmnDG3u|5xarfJt>{TL&HHn-r+F=FpS^eV4QQU2lN2;ui!nmpgy z#ZypUbUM%k`_V-*@`g;_9D`yavIrf--iW;> z+h#Sts%tZy6{TC~uedz8yeu*OI_@X&Ck(8a2S~Q_x0#q0zx%d=BTJr4=KfhQu*-7=9lmv16*>w5%j3bVeA| zTjd1)wZeP?fgKR2`8uAJ+!gu3>~jE+#lSe3M*VfGs1X}{Qj+{ z(=DY-XG-h9@=L}Ptij-wK|ZkWD=!%TRTXwJ^jGsd%>4!}OufYkp4;LC z=yVq8N51(BWCNq35TM`=CqR=>gVyJ_p+}=e2UDW{2eZTofb84QTk`*cO?2>E{4bal zwB1&Qefj%;&0wff4kZG+w}oI7kal@*8wLB6Lks^X5CZv^I6=aW5UeN!a^j3uDKu0BAwYlDvKEQ2@ze6gzx8*8JbIo#EN#lND3r`{e19lpr|boG3? z?!K>ofjqQ{4}TMaJ?jNGzZn5^#SFSWF9*O7iV_(8ofDv2uhBsgBcRy09Q+cR8T!f~ Q>rd#Eb%7 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 309b4e18d..8707e8b50 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/src/allomancy/resources/pack.mcmeta b/src/allomancy/resources/pack.mcmeta index a9c22de01..5ebb41ae5 100644 --- a/src/allomancy/resources/pack.mcmeta +++ b/src/allomancy/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Allomancy", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/aondor/resources/pack.mcmeta b/src/aondor/resources/pack.mcmeta index 67b98c3b4..7b4dc53a1 100644 --- a/src/aondor/resources/pack.mcmeta +++ b/src/aondor/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere AonDor", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/aviar/resources/pack.mcmeta b/src/aviar/resources/pack.mcmeta index 6f7e877fa..d755a1e74 100644 --- a/src/aviar/resources/pack.mcmeta +++ b/src/aviar/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Aviar", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/awakening/resources/pack.mcmeta b/src/awakening/resources/pack.mcmeta index 6b9b34283..0a39f46e0 100644 --- a/src/awakening/resources/pack.mcmeta +++ b/src/awakening/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Awakening", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/cosmeretools/resources/pack.mcmeta b/src/cosmeretools/resources/pack.mcmeta index a48923efa..9bce70cc6 100644 --- a/src/cosmeretools/resources/pack.mcmeta +++ b/src/cosmeretools/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Tools", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/example/resources/pack.mcmeta b/src/example/resources/pack.mcmeta index 74b3f621e..6820333a2 100644 --- a/src/example/resources/pack.mcmeta +++ b/src/example/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Example", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/feruchemy/resources/pack.mcmeta b/src/feruchemy/resources/pack.mcmeta index 40c0e8844..8f652bd67 100644 --- a/src/feruchemy/resources/pack.mcmeta +++ b/src/feruchemy/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Feruchemy", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/hemalurgy/resources/pack.mcmeta b/src/hemalurgy/resources/pack.mcmeta index 58bb0fbb9..b79d325a8 100644 --- a/src/hemalurgy/resources/pack.mcmeta +++ b/src/hemalurgy/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Hemalurgy", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/main/resources/pack.mcmeta b/src/main/resources/pack.mcmeta index 14cd897ad..dd7c3f12f 100644 --- a/src/main/resources/pack.mcmeta +++ b/src/main/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/sandmastery/resources/pack.mcmeta b/src/sandmastery/resources/pack.mcmeta index 55b22a0b8..70f2868f8 100644 --- a/src/sandmastery/resources/pack.mcmeta +++ b/src/sandmastery/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Sand Mastery", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/soulforgery/resources/pack.mcmeta b/src/soulforgery/resources/pack.mcmeta index de18c8172..e7bef8487 100644 --- a/src/soulforgery/resources/pack.mcmeta +++ b/src/soulforgery/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Cosmere Soulforgery", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file diff --git a/src/surgebinding/resources/pack.mcmeta b/src/surgebinding/resources/pack.mcmeta index b7b886ce5..90ff3492a 100644 --- a/src/surgebinding/resources/pack.mcmeta +++ b/src/surgebinding/resources/pack.mcmeta @@ -1,8 +1,6 @@ { "pack": { "description": "Resources used for Surgebinding", - "pack_format": 9, - "forge:resource_pack_format": 9, - "forge:data_pack_format": 10 + "pack_format": 15 } } \ No newline at end of file From 1544f081fa20a7cdcadec5be1bac5118cba9031b Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 1 Oct 2024 21:28:10 +0200 Subject: [PATCH 0902/1090] [Port] Fixed freeze on null vector in lines thread --- .../allomancy/client/metalScanning/IronSteelLinesThread.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index 9a1a4315d..cd1fd50b3 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -155,6 +155,11 @@ private void setClosestMetalObject(Vec3 vector) private Vec3i toVec3i(Vec3 vector) { + if (vector == null) + { + return null; + } + return new Vec3i((int) vector.x(), (int) vector.y(), (int) vector.z()); } From e1f7bae8ae8bba45fe77614b7ebf801d6d2e93d7 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 1 Oct 2024 21:28:42 +0200 Subject: [PATCH 0903/1090] [Port] Fixed clouds and lines being 'unstuck' --- .../common/capabilities/AllomancySpiritwebSubmodule.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 667012832..82024090b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -220,7 +220,7 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event AllomancyIronSteel steelAllomancy = (AllomancyIronSteel) AllomancyManifestations.ALLOMANCY_POWERS.get(Metals.MetalType.STEEL).get(); AllomancyTin tinAllomancy = (AllomancyTin) AllomancyManifestations.ALLOMANCY_POWERS.get(Metals.MetalType.TIN).get(); - PoseStack viewModelStack = new PoseStack(); + PoseStack viewModelStack = event.getPoseStack(); //if user has iron or steel manifestation if (spiritweb.hasManifestation(ironAllomancy) || spiritweb.hasManifestation(steelAllomancy)) @@ -238,8 +238,6 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event Vec3 originPoint = spiritweb.getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); - viewModelStack.last().pose().get(event.getPoseStack().last().pose()); // not sure that get() is correct here - final Boolean drawMetalLines = AllomancyConfigs.CLIENT.drawMetalLines.get(); if (drawMetalLines && !scanResult.foundEntities.isEmpty()) { From db0002d0fdb022357cb1567798b04438d8c0869e Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 2 Oct 2024 12:38:51 +1300 Subject: [PATCH 0904/1090] [Port] Build gradle task works! --- build.gradle | 9 ++++----- gradle.properties | 11 ++++++----- gradle/wrapper/gradle-wrapper.properties | 3 ++- settings.gradle | 6 +++++- 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/build.gradle b/build.gradle index a24df753a..cd8e83ef7 100644 --- a/build.gradle +++ b/build.gradle @@ -37,7 +37,8 @@ plugins { id 'eclipse' id 'idea' id 'maven-publish' - id 'net.neoforged.gradle' version '[6.0.18,6.2)' + id 'net.minecraftforge.gradle' version '[6.0,6.2)' + //id 'net.neoforged.gradle' version '[6.0.18,6.2)' id 'org.parchmentmc.librarian.forgegradle' version '1.+' id 'org.spongepowered.mixin' version '0.7.+' } @@ -441,7 +442,8 @@ repositories { } dependencies { - minecraft "net.neoforged:forge:${minecraft_version}-${forge_version}" + //minecraft "net.neoforged:forge:${minecraft_version}-${forge_version}" + minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}" annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' @@ -633,9 +635,6 @@ afterEvaluate { tasks.named('jar', Jar).configure { finalizedBy(tasks.named('reobfJar', RenameJarInPlace)) } } -tasks.withType(RenameJarInPlace).configureEach { - args.add('--stable') -} tasks.withType(GenerateModuleMetadata) { //Disable Gradle 7 module metadata generation as it does not play nicely with FG diff --git a/gradle.properties b/gradle.properties index 672c1f066..ede5c6972 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,12 @@ # -# File updated ~ 19 - 9 - 2024 ~ Leaf +# File updated ~ 2 - 10 - 2024 ~ Leaf # -org.gradle.jvmargs=-Xmx2G +org.gradle.jvmargs=-Xmx3G +org.gradle.daemon=false java_version=17 # Minecraft/Forge minecraft_version=1.20.1 -forge_version=47.1.76 +forge_version=47.3.0 #mod mod_version=0.6 # Mappings @@ -13,8 +14,8 @@ mappings_channel=parchment mappings_version=2023.09.03-1.20.1 # mods.toml version settings loader_version_range=[47,) -forge_version_range=[47.1.1,) -minecraft_version_range=[1.20.1] +forge_version_range=[47,) +minecraft_version_range=[1.20.1,1.21) # mods.toml dependency version settings patchouli_version_range=[1.20.1-84,) curios_version_range=[5.2.0+1.20.1,) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8707e8b50..8838ba97b 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/settings.gradle b/settings.gradle index aa4fbcb8f..da4c9573b 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,9 +1,13 @@ pluginManagement { repositories { gradlePluginPortal() - maven { + /*maven { name "NeoForge" url "https://maven.neoforged.net/releases/" + }*/ + maven { + name = 'MinecraftForge' + url = 'https://maven.minecraftforge.net/' } maven { name 'parchment' From 20c5f3488fbf6fd79f45a45a342d39e8291e726e Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 2 Oct 2024 13:07:34 +1300 Subject: [PATCH 0905/1090] [Port] clean used features functions --- .../common/registries/AonDorFeatures.java | 28 ++---------------- .../common/registries/AviarFeatures.java | 29 ++----------------- .../common/registries/AwakeningFeatures.java | 29 ++----------------- .../common/registries/ToolsFeatures.java | 28 +----------------- .../common/registries/ExampleFeatures.java | 27 +---------------- .../registries/SoulforgeryFeatures.java | 27 +---------------- 6 files changed, 9 insertions(+), 159 deletions(-) diff --git a/src/aondor/java/leaf/cosmere/aondor/common/registries/AonDorFeatures.java b/src/aondor/java/leaf/cosmere/aondor/common/registries/AonDorFeatures.java index 452042c4e..6d91dd727 100644 --- a/src/aondor/java/leaf/cosmere/aondor/common/registries/AonDorFeatures.java +++ b/src/aondor/java/leaf/cosmere/aondor/common/registries/AonDorFeatures.java @@ -1,15 +1,12 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.aondor.common.registries; +import leaf.cosmere.aondor.common.AonDor; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.aondor.common.AonDor; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class AonDorFeatures { @@ -17,25 +14,4 @@ public class AonDorFeatures public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(AonDor.MODID); - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } diff --git a/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarFeatures.java b/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarFeatures.java index a09202b6a..ad942dc13 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarFeatures.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarFeatures.java @@ -1,41 +1,16 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.aviar.common.registries; +import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.aviar.common.Aviar; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class AviarFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Aviar.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Aviar.MODID); - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } diff --git a/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningFeatures.java b/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningFeatures.java index 2302aec34..a9e955ddd 100644 --- a/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningFeatures.java +++ b/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningFeatures.java @@ -1,41 +1,16 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.awakening.common.registries; +import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.awakening.common.Awakening; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class AwakeningFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Awakening.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Awakening.MODID); - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsFeatures.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsFeatures.java index 08526d6b9..7ee4ab9dc 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsFeatures.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsFeatures.java @@ -1,5 +1,5 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.tools.common.registries; @@ -7,35 +7,9 @@ import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import leaf.cosmere.tools.common.CosmereTools; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class ToolsFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(CosmereTools.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(CosmereTools.MODID); - - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } diff --git a/src/example/java/leaf/cosmere/example/common/registries/ExampleFeatures.java b/src/example/java/leaf/cosmere/example/common/registries/ExampleFeatures.java index 7786f0d48..956bebd43 100644 --- a/src/example/java/leaf/cosmere/example/common/registries/ExampleFeatures.java +++ b/src/example/java/leaf/cosmere/example/common/registries/ExampleFeatures.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.example.common.registries; @@ -7,35 +7,10 @@ import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import leaf.cosmere.example.common.Example; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class ExampleFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Example.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Example.MODID); - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } diff --git a/src/soulforgery/java/leaf/cosmere/soulforgery/common/registries/SoulforgeryFeatures.java b/src/soulforgery/java/leaf/cosmere/soulforgery/common/registries/SoulforgeryFeatures.java index b6999c6cd..3c99ec3d6 100644 --- a/src/soulforgery/java/leaf/cosmere/soulforgery/common/registries/SoulforgeryFeatures.java +++ b/src/soulforgery/java/leaf/cosmere/soulforgery/common/registries/SoulforgeryFeatures.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 9 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.common.registries; @@ -7,35 +7,10 @@ import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import leaf.cosmere.soulforgery.common.Soulforgery; -import net.minecraft.world.level.levelgen.placement.*; - -import java.util.List; public class SoulforgeryFeatures { public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Soulforgery.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Soulforgery.MODID); - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //todo move this to a parent class so it can be reused across mods - //copied from OrePlacements.java, since they're private methods that should really be public - private static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } - - private static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } - - private static List orePlacement(PlacementModifier p_195347_, PlacementModifier p_195348_) - { - return List.of(p_195347_, InSquarePlacement.spread(), p_195348_, BiomeFilter.biome()); - } - } From 861be063b98b750d28258fb16e31e8df9dd9bb47 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Oct 2024 07:34:51 +1300 Subject: [PATCH 0906/1090] [Port] patchouli relations page object accepts single string if only one relation --- .../main/java/leaf/cosmere/patchouli/data/BookStuff.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java index 69eddb379..2b5466b82 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java @@ -1,5 +1,5 @@ /* - * File updated ~ 2 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.patchouli.data; @@ -424,6 +424,12 @@ public RelationsPage(String text, String[] entries) this.entries = entries; } + public RelationsPage(String text, String entry) + { + super("relations", text); + this.entries = new String[]{entry}; + } + public RelationsPage(String text, String title, String[] entries) { super("relations", text, title); From f43b5086e170be5d2e161334421caeab627455a7 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Oct 2024 08:37:18 +1300 Subject: [PATCH 0907/1090] [Port] tag providers should now compile --- .../allomancy/AllomancyTagProvider.java | 12 +++--- .../cosmere/aondor/AonDorTagProvider.java | 12 +++--- .../leaf/cosmere/aviar/AviarTagProvider.java | 12 +++--- .../awakening/AwakeningTagProvider.java | 12 +++--- .../leaf/cosmere/tools/ToolsTagProvider.java | 12 +++--- .../cosmere/example/ExampleTagProvider.java | 12 +++--- .../feruchemy/FeruchemyTagProvider.java | 12 +++--- .../hemalurgy/HemalurgyDataGenerator.java | 4 +- ...ovider.java => HemalurgyTagsProvider.java} | 14 +++--- .../leaf/cosmere/tag/CosmereTagProvider.java | 12 +++--- .../tag/IntrinsicCosmereTagBuilder.java | 3 +- .../sandmastery/SandmasteryDataGenerator.java | 15 +++---- .../blocks/SandmasteryBlockTagsGen.java | 42 ------------------ .../items/SandmasteryItemTagsGen.java | 43 ------------------- .../items/SandmasteryTagsProvider.java | 38 ++++++++++++++++ .../soulforgery/SoulforgeryTagProvider.java | 12 +++--- .../SurgebindingTagsProvider.java | 18 ++++---- 17 files changed, 128 insertions(+), 157 deletions(-) rename src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/{HemalurgyItemTagsProvider.java => HemalurgyTagsProvider.java} (74%) delete mode 100644 src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java delete mode 100644 src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemTagsGen.java create mode 100644 src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryTagsProvider.java diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyTagProvider.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyTagProvider.java index b26c9746d..c8ab75f9f 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyTagProvider.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -8,20 +8,22 @@ import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.api.CosmereTags; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; public class AllomancyTagProvider extends BaseTagProvider { - public AllomancyTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public AllomancyTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Allomancy.MODID, existingFileHelper); + super(packOutput, lookupProvider, Allomancy.MODID, existingFileHelper); } @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(AllomancyItems.MISTCLOAK.asItem()); } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorTagProvider.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorTagProvider.java index b80bd794f..ee2ef1c06 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorTagProvider.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -8,17 +8,19 @@ import leaf.cosmere.aondor.common.registries.AonDorBlocks; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class AonDorTagProvider extends BaseTagProvider { - public AonDorTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public AonDorTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, AonDor.MODID, existingFileHelper); + super(packOutput, lookupProvider, AonDor.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(AonDor.Item.asItem()); diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarTagProvider.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarTagProvider.java index 00410e28c..165dfec85 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarTagProvider.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar; @@ -8,17 +8,19 @@ import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.aviar.common.registries.AviarBlocks; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class AviarTagProvider extends BaseTagProvider { - public AviarTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public AviarTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Aviar.MODID, existingFileHelper); + super(packOutput, lookupProvider, Aviar.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Aviar.Item.asItem()); diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningTagProvider.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningTagProvider.java index 069ca783e..bd7e3b3ee 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningTagProvider.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -8,17 +8,19 @@ import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.awakening.common.registries.AwakeningBlocks; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class AwakeningTagProvider extends BaseTagProvider { - public AwakeningTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public AwakeningTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Awakening.MODID, existingFileHelper); + super(packOutput, lookupProvider, Awakening.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Awakening.Item.asItem()); diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsTagProvider.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsTagProvider.java index f8714919f..17b931c18 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsTagProvider.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -8,17 +8,19 @@ import leaf.cosmere.tag.BaseTagProvider; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsBlocks; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class ToolsTagProvider extends BaseTagProvider { - public ToolsTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public ToolsTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, CosmereTools.MODID, existingFileHelper); + super(packOutput, lookupProvider, CosmereTools.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Tools.Item.asItem()); diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleTagProvider.java b/src/datagen/example/java/leaf/cosmere/example/ExampleTagProvider.java index 5da8057e2..f67a071da 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleTagProvider.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -8,17 +8,19 @@ import leaf.cosmere.example.common.Example; import leaf.cosmere.example.common.registries.ExampleBlocks; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class ExampleTagProvider extends BaseTagProvider { - public ExampleTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public ExampleTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Example.MODID, existingFileHelper); + super(packOutput, lookupProvider, Example.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Example.Item.asItem()); diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java index 6a5e7db25..cd31592ad 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -9,20 +9,22 @@ import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; public class FeruchemyTagProvider extends BaseTagProvider { - public FeruchemyTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public FeruchemyTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Feruchemy.MODID, existingFileHelper); + super(packOutput, lookupProvider, Feruchemy.MODID, existingFileHelper); } @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Example.Item.asItem()); diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java index 3b83be461..379f764b8 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -25,7 +25,7 @@ public static void gatherData(GatherDataEvent event) ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); generator.addProvider(true, new HemalurgyEngLangGen(output)); - generator.addProvider(true, new HemalurgyItemTagsProvider(generator, existingFileHelper)); + generator.addProvider(true, new HemalurgyTagsProvider(output, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new HemalurgyItemModelsGen(generator, existingFileHelper)); generator.addProvider(true, new HemalurgyRecipeGen(output, existingFileHelper)); generator.addProvider(true, new HemalurgyPatchouliGen(generator)); diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemTagsProvider.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java similarity index 74% rename from src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemTagsProvider.java rename to src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java index e216cb989..4a9c4d2cb 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemTagsProvider.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -10,20 +10,22 @@ import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; -public class HemalurgyItemTagsProvider extends BaseTagProvider +public class HemalurgyTagsProvider extends BaseTagProvider { - public HemalurgyItemTagsProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public HemalurgyTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Hemalurgy.MODID, existingFileHelper); + super(packOutput, lookupProvider, Hemalurgy.MODID, existingFileHelper); } @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { for (Metals.MetalType metalType : Metals.MetalType.values()) { diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 311cf3127..e2093471a 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tag; @@ -159,8 +159,8 @@ private void addGameEvents() private void addStorageBlocks() { - final ForgeRegistryTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); - final ForgeRegistryTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); + final IntrinsicCosmereTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); + final IntrinsicCosmereTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); for (Metals.MetalType metalType : Metals.MetalType.values()) { @@ -182,9 +182,9 @@ private void addStorageBlocks() private void addContainsMetal() { - final ForgeRegistryTagBuilder itemTagBuilder = getItemBuilder(CosmereTags.Items.CONTAINS_METAL); - final ForgeRegistryTagBuilder blockTagBuilder = getBlockBuilder(CosmereTags.Blocks.CONTAINS_METAL); - final ForgeRegistryTagBuilder> entityTagBuilder = getEntityTypeBuilder(CosmereTags.EntityTypes.CONTAINS_METAL); + final IntrinsicCosmereTagBuilder itemTagBuilder = getItemBuilder(CosmereTags.Items.CONTAINS_METAL); + final IntrinsicCosmereTagBuilder blockTagBuilder = getBlockBuilder(CosmereTags.Blocks.CONTAINS_METAL); + final IntrinsicCosmereTagBuilder> entityTagBuilder = getEntityTypeBuilder(CosmereTags.EntityTypes.CONTAINS_METAL); itemTagBuilder.addOptionalTag(CosmereTags.Items.METAL_SPIKE); diff --git a/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java b/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java index 22d9ad19e..c1d41a5f4 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java +++ b/src/datagen/main/java/leaf/cosmere/tag/IntrinsicCosmereTagBuilder.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tag; @@ -11,6 +11,7 @@ import java.util.function.Function; import java.util.function.Supplier; +//Special thanks to Mekanism for showing how this works //Based off of IntrinsicHolderTagsProvider.IntrinsicTagAppender but with a few shortcuts for forge registry entries and also a few more helpers and addition of SafeVarargs annotations public class IntrinsicCosmereTagBuilder extends CosmereTagBuilder> { diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java index 32b20cddf..9b2eccee4 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java @@ -1,18 +1,16 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; -import leaf.cosmere.sandmastery.blocks.SandmasteryBlockTagsGen; import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.items.SandmasteryItemModelsGen; -import leaf.cosmere.sandmastery.items.SandmasteryItemTagsGen; +import leaf.cosmere.sandmastery.items.SandmasteryTagsProvider; import leaf.cosmere.sandmastery.loottables.SandmasteryLootTableGen; import leaf.cosmere.sandmastery.patchouli.SandmasteryPatchouliGen; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; -import net.minecraft.data.tags.BlockTagsProvider; import net.minecraftforge.common.data.ExistingFileHelper; import net.minecraftforge.data.event.GatherDataEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; @@ -26,14 +24,13 @@ public class SandmasteryDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SandmasteryEngLangGen(output)); + generator.addProvider(true, new SandmasteryEngLangGen(packOutput)); generator.addProvider(true, new SandmasteryItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new SandmasteryBlockTagsGen(generator, existingFileHelper)); - generator.addProvider(true, new SandmasteryItemTagsGen(generator, new BlockTagsProvider(generator, Sandmastery.MODID, existingFileHelper), existingFileHelper)); - generator.addProvider(true, new SandmasteryRecipeGen(output, existingFileHelper)); + generator.addProvider(true, new SandmasteryTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); + generator.addProvider(true, new SandmasteryRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new SandmasteryLootTableGen(generator)); generator.addProvider(true, new SandmasteryPatchouliGen(generator)); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java deleted file mode 100644 index 4ae679f90..000000000 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/blocks/SandmasteryBlockTagsGen.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * File updated ~ 10 - 8 - 2024 ~ Leaf - */ - -package leaf.cosmere.sandmastery.blocks; - -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.block.Block; -import net.minecraftforge.common.data.ExistingFileHelper; - -public class SandmasteryBlockTagsGen extends BlockTagsProvider -{ - public SandmasteryBlockTagsGen(DataGenerator generatorIn, ExistingFileHelper existingFileHelper) - { - super(generatorIn, Cosmere.MODID, existingFileHelper); - } - - @Override - protected void addTags() - { - add(BlockTags.MINEABLE_WITH_SHOVEL, SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); - add(BlockTags.SAND, SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); - add(BlockTags.MINEABLE_WITH_PICKAXE, SandmasteryBlocks.SAND_JAR_BLOCK.getBlock()); - add(BlockTags.MINEABLE_WITH_AXE, SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()); - - } - - public void add(TagKey branch, Block block) - { - this.tag(branch).add(block); - } - - public void add(TagKey branch, Block... block) - { - this.tag(branch).add(block); - } -} diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemTagsGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemTagsGen.java deleted file mode 100644 index b65d5aa44..000000000 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemTagsGen.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.sandmastery.items; - -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.sandmastery.common.Sandmastery; -import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.tags.BlockTagsProvider; -import net.minecraft.data.tags.ItemTagsProvider; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraftforge.common.data.ExistingFileHelper; - -import javax.annotation.Nullable; - -public class SandmasteryItemTagsGen extends ItemTagsProvider -{ - public SandmasteryItemTagsGen(DataGenerator dataGenerator, BlockTagsProvider blockTagsProvider, @Nullable ExistingFileHelper existingFileHelper) - { - super(dataGenerator, blockTagsProvider, Sandmastery.MODID, existingFileHelper); - } - - @Override - protected void addTags() - { - add(CosmereTags.Items.CURIO_BELT, SandmasteryItems.SAND_POUCH_ITEM.asItem()); - } - - public void add(TagKey branch, Item item) - { - this.tag(branch).add(item); - } - - public void add(TagKey branch, Item... item) - { - this.tag(branch).add(item); - } - - -} \ No newline at end of file diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryTagsProvider.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryTagsProvider.java new file mode 100644 index 000000000..26076ea66 --- /dev/null +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryTagsProvider.java @@ -0,0 +1,38 @@ +/* + * File updated ~ 8 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.sandmastery.items; + +import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.sandmastery.common.Sandmastery; +import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; +import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; +import leaf.cosmere.tag.BaseTagProvider; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.tags.BlockTags; +import net.minecraftforge.common.data.ExistingFileHelper; + +import javax.annotation.Nullable; +import java.util.concurrent.CompletableFuture; + +public class SandmasteryTagsProvider extends BaseTagProvider +{ + public SandmasteryTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) + { + super(packOutput, lookupProvider, Sandmastery.MODID, existingFileHelper); + } + + @Override + protected void registerTags(HolderLookup.Provider registries) + { + getItemBuilder(CosmereTags.Items.CURIO_BELT).add(SandmasteryItems.SAND_POUCH_ITEM.asItem()); + + getBlockBuilder(BlockTags.MINEABLE_WITH_SHOVEL).add(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); + getBlockBuilder(BlockTags.SAND).add(SandmasteryBlocks.TALDAIN_BLACK_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_BLACK_SAND.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND_LAYER.getBlock(), SandmasteryBlocks.TALDAIN_WHITE_SAND.getBlock()); + getBlockBuilder(BlockTags.MINEABLE_WITH_PICKAXE).add(SandmasteryBlocks.SAND_JAR_BLOCK.getBlock()); + getBlockBuilder(BlockTags.MINEABLE_WITH_AXE).add(SandmasteryBlocks.SAND_SPREADING_TUB_BLOCK.getBlock()); + } + +} \ No newline at end of file diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryTagProvider.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryTagProvider.java index 37fe6dbbb..9d8669339 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryTagProvider.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -8,17 +8,19 @@ import leaf.cosmere.soulforgery.common.Soulforgery; import leaf.cosmere.soulforgery.common.registries.SoulforgeryBlocks; import leaf.cosmere.tag.BaseTagProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class SoulforgeryTagProvider extends BaseTagProvider { - public SoulforgeryTagProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public SoulforgeryTagProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Soulforgery.MODID, existingFileHelper); + super(packOutput, lookupProvider, Soulforgery.MODID, existingFileHelper); } @@ -30,7 +32,7 @@ protected List getAllBlocks() @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { //getItemBuilder(CosmereTags.Items.CURIO_HEAD).add(Soulforgery.Item.asItem()); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java index 0741eda77..89c500516 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -17,8 +17,9 @@ import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; import leaf.cosmere.tag.BaseTagProvider; -import leaf.cosmere.tag.ForgeRegistryTagBuilder; -import net.minecraft.data.DataGenerator; +import leaf.cosmere.tag.IntrinsicCosmereTagBuilder; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.BlockItem; @@ -29,12 +30,13 @@ import javax.annotation.Nullable; import java.util.List; +import java.util.concurrent.CompletableFuture; public class SurgebindingTagsProvider extends BaseTagProvider { - public SurgebindingTagsProvider(DataGenerator dataGenerator, @Nullable ExistingFileHelper existingFileHelper) + public SurgebindingTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, @Nullable ExistingFileHelper existingFileHelper) { - super(dataGenerator, Surgebinding.MODID, existingFileHelper); + super(packOutput, lookupProvider, Surgebinding.MODID, existingFileHelper); } @Override @@ -44,7 +46,7 @@ protected List getAllBlocks() } @Override - protected void registerTags() + protected void registerTags(HolderLookup.Provider registries) { addItems(); addBlocks(); @@ -101,8 +103,8 @@ private void addBlocks() private void addStorageBlocks() { - final ForgeRegistryTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); - final ForgeRegistryTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); + final IntrinsicCosmereTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); + final IntrinsicCosmereTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) { From e33b31d24d051f6b7cd14ce84833b4f52efea394 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Oct 2024 09:16:19 +1300 Subject: [PATCH 0908/1090] [Port] datagen ItemModels/patchouli compiling errors resolved --- .../allomancy/AllomancyDataGenerator.java | 14 +++++++------- .../allomancy/AllomancyItemModelsGen.java | 6 +++--- .../patchouli/AllomancyPatchouliGen.java | 6 +++--- .../leaf/cosmere/aondor/AonDorDataGenerator.java | 14 +++++++------- .../leaf/cosmere/aondor/AonDorItemModelsGen.java | 6 +++--- .../aondor/patchouli/AonDorPatchouliGen.java | 6 +++--- .../leaf/cosmere/aviar/AviarDataGenerator.java | 14 +++++++------- .../cosmere/aviar/items/AviarItemModelsGen.java | 6 +++--- .../aviar/patchouli/AviarPatchouliGen.java | 6 +++--- .../awakening/AwakeningDataGenerator.java | 14 +++++++------- .../awakening/AwakeningItemModelsGen.java | 6 +++--- .../patchouli/AwakeningPatchouliGen.java | 6 +++--- .../leaf/cosmere/tools/ToolsDataGenerator.java | 14 +++++++------- .../leaf/cosmere/tools/ToolsItemModelsGen.java | 6 +++--- .../tools/patchouli/ToolsPatchouliGen.java | 6 +++--- .../cosmere/example/ExampleDataGenerator.java | 14 +++++++------- .../cosmere/example/ExampleItemModelsGen.java | 6 +++--- .../example/patchouli/ExamplePatchouliGen.java | 6 +++--- .../feruchemy/FeruchemyDataGenerator.java | 14 +++++++------- .../feruchemy/FeruchemyItemModelsGen.java | 6 +++--- .../patchouli/FeruchemyPatchouliGen.java | 6 +++--- .../hemalurgy/HemalurgyDataGenerator.java | 12 ++++++------ .../hemalurgy/HemalurgyItemModelsGen.java | 8 ++++---- .../patchouli/HemalurgyPatchouliGen.java | 8 ++++---- .../sandmastery/SandmasteryDataGenerator.java | 4 ++-- .../items/SandmasteryItemModelsGen.java | 6 +++--- .../patchouli/SandmasteryPatchouliGen.java | 8 ++++---- .../soulforgery/SoulforgeryDataGenerator.java | 14 +++++++------- .../soulforgery/SoulforgeryItemModelsGen.java | 6 +++--- .../patchouli/SoulforgeryPatchouliGen.java | 6 +++--- .../surgebinding/SurgebindingBlockModelsGen.java | 6 +++--- .../surgebinding/SurgebindingDataGenerator.java | 16 ++++++++-------- .../surgebinding/SurgebindingItemModelsGen.java | 6 +++--- .../patchouli/SurgebindingPatchouliGen.java | 6 +++--- 34 files changed, 144 insertions(+), 144 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java index 51661fa15..ecb12cb2a 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -21,14 +21,14 @@ public class AllomancyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AllomancyEngLangGen(output)); - generator.addProvider(true, new AllomancyItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AllomancyRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new AllomancyPatchouliGen(generator)); - generator.addProvider(true, new AllomancyTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new AllomancyEngLangGen(packOutput)); + generator.addProvider(true, new AllomancyItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AllomancyRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AllomancyPatchouliGen(packOutput)); + generator.addProvider(true, new AllomancyTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); } } \ No newline at end of file diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java index 5245c2132..02984491b 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -8,7 +8,7 @@ import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -22,7 +22,7 @@ public class AllomancyItemModelsGen extends ItemModelProvider { - public AllomancyItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public AllomancyItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Allomancy.MODID, existingFileHelper); } diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java index 8a632eaca..2afcefedf 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.patchouli; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class AllomancyPatchouliGen extends PatchouliProvider { - public AllomancyPatchouliGen(DataGenerator generatorIn) + public AllomancyPatchouliGen(PackOutput generatorIn) { super(generatorIn, Allomancy.MODID); } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java index b88ef4f5a..2f09ba60d 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -22,15 +22,15 @@ public class AonDorDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AonDorEngLangGen(output)); - generator.addProvider(true, new AonDorTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new AonDorEngLangGen(packOutput)); + generator.addProvider(true, new AonDorTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new AonDorLootTableGen(generator)); - generator.addProvider(true, new AonDorItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AonDorRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new AonDorPatchouliGen(generator)); + generator.addProvider(true, new AonDorItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AonDorRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AonDorPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java index 8bbe710ef..d2afa17a8 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -8,7 +8,7 @@ import leaf.cosmere.aondor.common.registries.AonDorItems; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class AonDorItemModelsGen extends ItemModelProvider { - public AonDorItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public AonDorItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, AonDor.MODID, existingFileHelper); } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java index b06c381a4..5a176500e 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor.patchouli; import leaf.cosmere.aondor.common.AonDor; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class AonDorPatchouliGen extends PatchouliProvider { - public AonDorPatchouliGen(DataGenerator generatorIn) + public AonDorPatchouliGen(PackOutput generatorIn) { super(generatorIn, AonDor.MODID); } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java index cf9082248..0bbd108a0 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar; @@ -23,15 +23,15 @@ public class AviarDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AviarEngLangGen(output)); - generator.addProvider(true, new AviarTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new AviarEngLangGen(packOutput)); + generator.addProvider(true, new AviarTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new AviarLootTableGen(generator)); - generator.addProvider(true, new AviarItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AviarRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new AviarPatchouliGen(generator)); + generator.addProvider(true, new AviarItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AviarRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AviarPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java index 978a00575..d7b942314 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/items/AviarItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar.items; @@ -8,7 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.aviar.common.registries.AviarItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class AviarItemModelsGen extends ItemModelProvider { - public AviarItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public AviarItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Aviar.MODID, existingFileHelper); } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java index dd5f7e846..3795154c9 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar.patchouli; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class AviarPatchouliGen extends PatchouliProvider { - public AviarPatchouliGen(DataGenerator generatorIn) + public AviarPatchouliGen(PackOutput generatorIn) { super(generatorIn, Aviar.MODID); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java index ef63ae054..3928bf693 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -22,15 +22,15 @@ public class AwakeningDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new AwakeningEngLangGen(output)); - generator.addProvider(true, new AwakeningTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new AwakeningEngLangGen(packOutput)); + generator.addProvider(true, new AwakeningTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new AwakeningLootTableGen(generator)); - generator.addProvider(true, new AwakeningItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new AwakeningRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new AwakeningPatchouliGen(generator)); + generator.addProvider(true, new AwakeningItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AwakeningRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new AwakeningPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java index 7a6a7246a..bc9bf00f3 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -8,7 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.awakening.common.registries.AwakeningItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class AwakeningItemModelsGen extends ItemModelProvider { - public AwakeningItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public AwakeningItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Awakening.MODID, existingFileHelper); } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java index 42b1a37d2..1b92839fd 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening.patchouli; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class AwakeningPatchouliGen extends PatchouliProvider { - public AwakeningPatchouliGen(DataGenerator generatorIn) + public AwakeningPatchouliGen(PackOutput generatorIn) { super(generatorIn, Awakening.MODID); } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java index 38d3a0a62..4f6b2b6f4 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -22,15 +22,15 @@ public class ToolsDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new ToolsEngLangGen(output)); - generator.addProvider(true, new ToolsTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new ToolsEngLangGen(packOutput)); + generator.addProvider(true, new ToolsTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new ToolsLootTableGen(generator)); - generator.addProvider(true, new ToolsItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new ToolsRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new ToolsPatchouliGen(generator)); + generator.addProvider(true, new ToolsItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new ToolsRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new ToolsPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java index 8bb120ee2..6476c6d5c 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 24 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -8,7 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.*; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class ToolsItemModelsGen extends ItemModelProvider { - public ToolsItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public ToolsItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, CosmereTools.MODID, existingFileHelper); } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java index 28de31a94..bda937b7f 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.patchouli; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.tools.common.CosmereTools; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class ToolsPatchouliGen extends PatchouliProvider { - public ToolsPatchouliGen(DataGenerator generatorIn) + public ToolsPatchouliGen(PackOutput generatorIn) { super(generatorIn, CosmereTools.MODID); } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java index d1d51bd36..d1f40c39f 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -22,15 +22,15 @@ public class ExampleDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new ExampleEngLangGen(output)); - generator.addProvider(true, new ExampleTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new ExampleEngLangGen(packOutput)); + generator.addProvider(true, new ExampleTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new ExampleLootTableGen(generator)); - generator.addProvider(true, new ExampleItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new ExampleRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new ExamplePatchouliGen(generator)); + generator.addProvider(true, new ExampleItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new ExampleRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new ExamplePatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java index a65ff0e62..ca0f7c68c 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -8,7 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.example.common.Example; import leaf.cosmere.example.common.registries.ExampleItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class ExampleItemModelsGen extends ItemModelProvider { - public ExampleItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public ExampleItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Example.MODID, existingFileHelper); } diff --git a/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java b/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java index b428bb1fe..bb14b74de 100644 --- a/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example.patchouli; import leaf.cosmere.example.common.Example; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class ExamplePatchouliGen extends PatchouliProvider { - public ExamplePatchouliGen(DataGenerator generatorIn) + public ExamplePatchouliGen(PackOutput generatorIn) { super(generatorIn, Example.MODID); } diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java index 5d8dbdd37..88800716a 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -21,14 +21,14 @@ public class FeruchemyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new FeruchemyEngLangGen(output)); - generator.addProvider(true, new FeruchemyItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new FeruchemyTagProvider(generator, existingFileHelper)); - generator.addProvider(true, new FeruchemyRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new FeruchemyPatchouliGen(generator)); + generator.addProvider(true, new FeruchemyEngLangGen(packOutput)); + generator.addProvider(true, new FeruchemyItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new FeruchemyTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); + generator.addProvider(true, new FeruchemyRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new FeruchemyPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java index b1fa752fb..13f17d2f7 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -10,7 +10,7 @@ import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; import leaf.cosmere.feruchemy.common.items.RingMetalmindItem; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -21,7 +21,7 @@ public class FeruchemyItemModelsGen extends ItemModelProvider { - public FeruchemyItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public FeruchemyItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Feruchemy.MODID, existingFileHelper); } diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java index 770d81494..d63ab7ee8 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.patchouli; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class FeruchemyPatchouliGen extends PatchouliProvider { - public FeruchemyPatchouliGen(DataGenerator generatorIn) + public FeruchemyPatchouliGen(PackOutput generatorIn) { super(generatorIn, Feruchemy.MODID); } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java index 379f764b8..402fa1029 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java @@ -21,14 +21,14 @@ public class HemalurgyDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new HemalurgyEngLangGen(output)); - generator.addProvider(true, new HemalurgyTagsProvider(output, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new HemalurgyItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new HemalurgyRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new HemalurgyPatchouliGen(generator)); + generator.addProvider(true, new HemalurgyEngLangGen(packOutput)); + generator.addProvider(true, new HemalurgyTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); + generator.addProvider(true, new HemalurgyItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new HemalurgyRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new HemalurgyPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java index fc1c1b3d8..21b7588af 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -9,7 +9,7 @@ import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraft.world.item.SwordItem; @@ -24,9 +24,9 @@ public class HemalurgyItemModelsGen extends ItemModelProvider { - public HemalurgyItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public HemalurgyItemModelsGen(PackOutput packOutput, ExistingFileHelper existingFileHelper) { - super(generator, Hemalurgy.MODID, existingFileHelper); + super(packOutput, Hemalurgy.MODID, existingFileHelper); } @Override diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java index 445a008a7..a0a426c19 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java @@ -1,21 +1,21 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.patchouli; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class HemalurgyPatchouliGen extends PatchouliProvider { - public HemalurgyPatchouliGen(DataGenerator generatorIn) + public HemalurgyPatchouliGen(PackOutput packOutput) { - super(generatorIn, Hemalurgy.MODID); + super(packOutput, Hemalurgy.MODID); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java index 9b2eccee4..fe23f8397 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java @@ -28,11 +28,11 @@ public static void gatherData(GatherDataEvent event) ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); generator.addProvider(true, new SandmasteryEngLangGen(packOutput)); - generator.addProvider(true, new SandmasteryItemModelsGen(generator, existingFileHelper)); + generator.addProvider(true, new SandmasteryItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new SandmasteryTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new SandmasteryRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new SandmasteryLootTableGen(generator)); - generator.addProvider(true, new SandmasteryPatchouliGen(generator)); + generator.addProvider(true, new SandmasteryPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java index 23436e8a0..1021c9e74 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/items/SandmasteryItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.items; @@ -9,7 +9,7 @@ import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.sandmastery.common.items.SandJarItem; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -23,7 +23,7 @@ public class SandmasteryItemModelsGen extends ItemModelProvider { - public SandmasteryItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public SandmasteryItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Sandmastery.MODID, existingFileHelper); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java index 139b750e4..f186754b3 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.patchouli; -import leaf.cosmere.sandmastery.common.Sandmastery; import leaf.cosmere.patchouli.data.PatchouliProvider; -import net.minecraft.data.DataGenerator; +import leaf.cosmere.sandmastery.common.Sandmastery; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class SandmasteryPatchouliGen extends PatchouliProvider { - public SandmasteryPatchouliGen(DataGenerator generatorIn) + public SandmasteryPatchouliGen(PackOutput generatorIn) { super(generatorIn, Sandmastery.MODID); } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java index f2d031f23..3a1bf3352 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -22,15 +22,15 @@ public class SoulforgeryDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SoulforgeryEngLangGen(output)); - generator.addProvider(true, new SoulforgeryTagProvider(generator, existingFileHelper)); + generator.addProvider(true, new SoulforgeryEngLangGen(packOutput)); + generator.addProvider(true, new SoulforgeryTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new SoulforgeryLootTableGen(generator)); - generator.addProvider(true, new SoulforgeryItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new SoulforgeryRecipeGen(output, existingFileHelper)); - generator.addProvider(true, new SoulforgeryPatchouliGen(generator)); + generator.addProvider(true, new SoulforgeryItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new SoulforgeryRecipeGen(packOutput, existingFileHelper)); + generator.addProvider(true, new SoulforgeryPatchouliGen(packOutput)); } } \ No newline at end of file diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java index d2b66228d..27ca332aa 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -8,7 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.soulforgery.common.Soulforgery; import leaf.cosmere.soulforgery.common.registries.SoulforgeryItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Item; import net.minecraftforge.client.model.generators.ItemModelBuilder; @@ -22,7 +22,7 @@ public class SoulforgeryItemModelsGen extends ItemModelProvider { - public SoulforgeryItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public SoulforgeryItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Soulforgery.MODID, existingFileHelper); } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java index 7a6715e43..9a525b237 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.patchouli; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.soulforgery.common.Soulforgery; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class SoulforgeryPatchouliGen extends PatchouliProvider { - public SoulforgeryPatchouliGen(DataGenerator generatorIn) + public SoulforgeryPatchouliGen(PackOutput generatorIn) { super(generatorIn, Soulforgery.MODID); } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java index 06a4d7cdd..0469e90d7 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingBlockModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -10,7 +10,7 @@ import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.blocks.*; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.block.Block; import net.minecraftforge.client.model.generators.BlockStateProvider; import net.minecraftforge.client.model.generators.ModelFile; @@ -20,7 +20,7 @@ public class SurgebindingBlockModelsGen extends BlockStateProvider { - public SurgebindingBlockModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public SurgebindingBlockModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Surgebinding.MODID, existingFileHelper); } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index 63e3c2706..63e909e84 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -30,20 +30,20 @@ public class SurgebindingDataGenerator public static void gatherData(GatherDataEvent event) { DataGenerator generator = event.getGenerator(); - PackOutput output = generator.getPackOutput(); + PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); - generator.addProvider(true, new SurgebindingEngLangGen(output)); + generator.addProvider(true, new SurgebindingEngLangGen(packOutput)); - generator.addProvider(true, new SurgebindingTagsProvider(generator, existingFileHelper)); + generator.addProvider(true, new SurgebindingTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new SurgebindingItemModelsGen(generator, existingFileHelper)); - generator.addProvider(true, new SurgebindingBlockModelsGen(generator, existingFileHelper)); + generator.addProvider(true, new SurgebindingItemModelsGen(packOutput, existingFileHelper)); + generator.addProvider(true, new SurgebindingBlockModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new SurgebindingLootTableGen(generator)); - generator.addProvider(true, new SurgebindingRecipeGen(output, existingFileHelper)); + generator.addProvider(true, new SurgebindingRecipeGen(packOutput, existingFileHelper)); - generator.addProvider(true, new SurgebindingPatchouliGen(generator)); + generator.addProvider(true, new SurgebindingPatchouliGen(packOutput)); generator.addProvider(true, new SurgebindingBiomeModifierGen(generator)); generator.addProvider(true, new SurgebindingBiomeTagsProvider(generator, existingFileHelper)); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java index 0b9ec5f65..1c8ba0cd9 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -10,7 +10,7 @@ import leaf.cosmere.surgebinding.common.items.GemstoneItem; import leaf.cosmere.surgebinding.common.items.ShardbladeItem; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -25,7 +25,7 @@ public class SurgebindingItemModelsGen extends ItemModelProvider { - public SurgebindingItemModelsGen(DataGenerator generator, ExistingFileHelper existingFileHelper) + public SurgebindingItemModelsGen(PackOutput generator, ExistingFileHelper existingFileHelper) { super(generator, Surgebinding.MODID, existingFileHelper); } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java index 189896c3d..5d1e97dea 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java @@ -1,19 +1,19 @@ /* - * File updated ~ 18 - 9 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.patchouli; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; // // In-Game Documentation generator // public class SurgebindingPatchouliGen extends PatchouliProvider { - public SurgebindingPatchouliGen(DataGenerator generatorIn) + public SurgebindingPatchouliGen(PackOutput generatorIn) { super(generatorIn, Surgebinding.MODID); } From 8e0d738e1c3bf9355aa39e836996952b9e2c6724 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Oct 2024 11:36:40 +1300 Subject: [PATCH 0909/1090] [Port] datagen loot tables --- .../cosmere/aondor/AonDorDataGenerator.java | 2 +- .../loottables/AonDorBlockLootTableGen.java | 25 ++++-------- .../aondor/loottables/AonDorLootTableGen.java | 38 ++++-------------- .../cosmere/aviar/AviarDataGenerator.java | 2 +- .../loottables/AviarBlockLootTableGen.java | 26 +++++------- .../aviar/loottables/AviarLootTableGen.java | 39 +++++------------- .../awakening/AwakeningDataGenerator.java | 2 +- .../AwakeningBlockLootTableGen.java | 20 ++++------ .../loottables/AwakeningLootTableGen.java | 39 +++++------------- .../cosmere/tools/ToolsDataGenerator.java | 2 +- .../loottables/ToolsBlockLootTableGen.java | 24 ++++------- .../tools/loottables/ToolsLootTableGen.java | 39 +++++------------- .../cosmere/example/ExampleDataGenerator.java | 2 +- .../loottables/ExampleBlockLootTableGen.java | 25 ++++-------- .../loottables/ExampleLootTableGen.java | 38 +++++------------- .../cosmere/loottables/BlockLootTableGen.java | 13 +++--- .../sandmastery/SandmasteryDataGenerator.java | 2 +- .../SandmasteryBlockLootTableGen.java | 9 +++-- .../loottables/SandmasteryLootTableGen.java | 40 +++++-------------- .../soulforgery/SoulforgeryDataGenerator.java | 2 +- .../SoulforgeryBlockLootTableGen.java | 21 +++++----- .../loottables/SoulforgeryLootTableGen.java | 39 +++++------------- .../biome/SurgebindingBiomeTagsProvider.java | 10 +++-- 23 files changed, 134 insertions(+), 325 deletions(-) diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java index 2f09ba60d..baa2c1d0c 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorDataGenerator.java @@ -27,7 +27,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AonDorEngLangGen(packOutput)); generator.addProvider(true, new AonDorTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new AonDorLootTableGen(generator)); + generator.addProvider(true, new AonDorLootTableGen(packOutput)); generator.addProvider(true, new AonDorItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new AonDorRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new AonDorPatchouliGen(packOutput)); diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorBlockLootTableGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorBlockLootTableGen.java index 90f165286..2e51cd3d4 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorBlockLootTableGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorBlockLootTableGen.java @@ -1,39 +1,30 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor.loottables; import leaf.cosmere.aondor.common.registries.AonDorBlocks; import leaf.cosmere.api.providers.IBlockProvider; -import net.minecraft.data.loot.BlockLoot; +import leaf.cosmere.loottables.BaseBlockLootTables; import net.minecraft.world.level.block.Block; -public class AonDorBlockLootTableGen extends BlockLoot +public class AonDorBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : AonDorBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); //if (block instanceof MetalOreBlock oreBlock) //{ - // this.add(oreBlock, (ore) -> - // { - // return createOreDrop(ore, AonDorItems.ITEM.get()); - // }); + // this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); //} - //else - { - this.dropSelf(block); - } } - } - @Override - protected Iterable getKnownBlocks() - { - return AonDorBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(AonDorBlocks.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorLootTableGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorLootTableGen.java index 2a0c9092b..e4631855b 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorLootTableGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/loottables/AonDorLootTableGen.java @@ -1,43 +1,21 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class AonDorLootTableGen extends LootTableProvider +public class AonDorLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(AonDorBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public AonDorLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public AonDorLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(AonDorBlockLootTableGen::new, LootContextParamSets.BLOCK) + )); } } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java index 0bbd108a0..aa2004df9 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarDataGenerator.java @@ -28,7 +28,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AviarEngLangGen(packOutput)); generator.addProvider(true, new AviarTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new AviarLootTableGen(generator)); + generator.addProvider(true, new AviarLootTableGen(packOutput)); generator.addProvider(true, new AviarItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new AviarRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new AviarPatchouliGen(packOutput)); diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarBlockLootTableGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarBlockLootTableGen.java index abe598572..d9907cac4 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarBlockLootTableGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarBlockLootTableGen.java @@ -1,39 +1,31 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar.loottables; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.aviar.common.registries.AviarBlocks; -import net.minecraft.data.loot.BlockLoot; +import leaf.cosmere.loottables.BaseBlockLootTables; import net.minecraft.world.level.block.Block; -public class AviarBlockLootTableGen extends BlockLoot +public class AviarBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : AviarBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); //if (block instanceof MetalOreBlock oreBlock) //{ - // this.add(oreBlock, (ore) -> - // { - // return createOreDrop(ore, AviarItems.ITEM.get()); - // }); + // this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); //} - //else - { - this.dropSelf(block); - } } - } - @Override - protected Iterable getKnownBlocks() - { - return AviarBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(AviarBlocks.BLOCKS.getAllBlocks()); } + } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarLootTableGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarLootTableGen.java index 98d800c82..04fe8b616 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarLootTableGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/loottables/AviarLootTableGen.java @@ -1,43 +1,22 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class AviarLootTableGen extends LootTableProvider +public class AviarLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(AviarBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public AviarLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public AviarLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(AviarBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java index 3928bf693..cb0e2786a 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningDataGenerator.java @@ -27,7 +27,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AwakeningEngLangGen(packOutput)); generator.addProvider(true, new AwakeningTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new AwakeningLootTableGen(generator)); + generator.addProvider(true, new AwakeningLootTableGen(packOutput)); generator.addProvider(true, new AwakeningItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new AwakeningRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new AwakeningPatchouliGen(packOutput)); diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningBlockLootTableGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningBlockLootTableGen.java index 5dbd76bba..3927b4bb4 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningBlockLootTableGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningBlockLootTableGen.java @@ -1,19 +1,20 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening.loottables; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.awakening.common.registries.AwakeningBlocks; -import net.minecraft.data.loot.BlockLoot; +import leaf.cosmere.loottables.BaseBlockLootTables; import net.minecraft.world.level.block.Block; -public class AwakeningBlockLootTableGen extends BlockLoot +public class AwakeningBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : AwakeningBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); @@ -24,16 +25,9 @@ protected void addTables() // return createOreDrop(ore, AwakeningItems.ITEM.get()); // }); //} - //else - { - this.dropSelf(block); - } } - } - @Override - protected Iterable getKnownBlocks() - { - return AwakeningBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(AwakeningBlocks.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningLootTableGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningLootTableGen.java index bbe3c276f..45240bbde 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningLootTableGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/loottables/AwakeningLootTableGen.java @@ -1,43 +1,22 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class AwakeningLootTableGen extends LootTableProvider +public class AwakeningLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(AwakeningBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public AwakeningLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public AwakeningLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(AwakeningBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java index 4f6b2b6f4..235b51b7d 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsDataGenerator.java @@ -27,7 +27,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new ToolsEngLangGen(packOutput)); generator.addProvider(true, new ToolsTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new ToolsLootTableGen(generator)); + generator.addProvider(true, new ToolsLootTableGen(packOutput)); generator.addProvider(true, new ToolsItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new ToolsRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new ToolsPatchouliGen(packOutput)); diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsBlockLootTableGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsBlockLootTableGen.java index 2a60f20e5..9d80e2915 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsBlockLootTableGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsBlockLootTableGen.java @@ -1,39 +1,29 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.loottables; import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.loottables.BaseBlockLootTables; import leaf.cosmere.tools.common.registries.ToolsBlocks; -import net.minecraft.data.loot.BlockLoot; import net.minecraft.world.level.block.Block; -public class ToolsBlockLootTableGen extends BlockLoot +public class ToolsBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { for (IBlockProvider itemRegistryObject : ToolsBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); //if (block instanceof MetalOreBlock oreBlock) //{ - // this.add(oreBlock, (ore) -> - // { - // return createOreDrop(ore, ToolsItems.ITEM.get()); - // }); + // this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); //} - //else - { - this.dropSelf(block); - } } - } - @Override - protected Iterable getKnownBlocks() - { - return ToolsBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(ToolsBlocks.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsLootTableGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsLootTableGen.java index 15a9d262c..caa84ccf3 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsLootTableGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/loottables/ToolsLootTableGen.java @@ -1,43 +1,22 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class ToolsLootTableGen extends LootTableProvider +public class ToolsLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(ToolsBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public ToolsLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public ToolsLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(ToolsBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java index d1f40c39f..2e17978a1 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleDataGenerator.java @@ -27,7 +27,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new ExampleEngLangGen(packOutput)); generator.addProvider(true, new ExampleTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new ExampleLootTableGen(generator)); + generator.addProvider(true, new ExampleLootTableGen(packOutput)); generator.addProvider(true, new ExampleItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new ExampleRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new ExamplePatchouliGen(packOutput)); diff --git a/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleBlockLootTableGen.java b/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleBlockLootTableGen.java index d33a21d05..6decdd847 100644 --- a/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleBlockLootTableGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleBlockLootTableGen.java @@ -1,39 +1,30 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example.loottables; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.example.common.registries.ExampleBlocks; -import net.minecraft.data.loot.BlockLoot; +import leaf.cosmere.loottables.BaseBlockLootTables; import net.minecraft.world.level.block.Block; -public class ExampleBlockLootTableGen extends BlockLoot +public class ExampleBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : ExampleBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); //if (block instanceof MetalOreBlock oreBlock) //{ - // this.add(oreBlock, (ore) -> - // { - // return createOreDrop(ore, ExampleItems.ITEM.get()); - // }); + // this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); //} - //else - { - this.dropSelf(block); - } } - } - @Override - protected Iterable getKnownBlocks() - { - return ExampleBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(ExampleBlocks.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleLootTableGen.java b/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleLootTableGen.java index 4b9d4cb91..db6b224ca 100644 --- a/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleLootTableGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/loottables/ExampleLootTableGen.java @@ -1,43 +1,23 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class ExampleLootTableGen extends LootTableProvider +public class ExampleLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(ExampleBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public ExampleLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() + public ExampleLootTableGen(PackOutput packOutput) { - return this.loot_tables; + super(packOutput, List.of( + new SubProviderEntry(ExampleBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } - @Override - protected void validate(Map map, ValidationContext validationtracker) - { - } } diff --git a/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java b/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java index 91c21bca3..91ee1b4a2 100644 --- a/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java +++ b/src/datagen/main/java/leaf/cosmere/loottables/BlockLootTableGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.loottables; @@ -15,18 +15,17 @@ public class BlockLootTableGen extends BaseBlockLootTables @Override protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : BlocksRegistry.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); if (block instanceof MetalOreBlock oreBlock) { - - this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()).asItem())); - } - else - { - this.dropSelf(block); + this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); } } + + //then make the rest drop themselves. + dropSelf(BlocksRegistry.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java index fe23f8397..a22b0bac3 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryDataGenerator.java @@ -31,7 +31,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new SandmasteryItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new SandmasteryTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new SandmasteryRecipeGen(packOutput, existingFileHelper)); - generator.addProvider(true, new SandmasteryLootTableGen(generator)); + generator.addProvider(true, new SandmasteryLootTableGen(packOutput)); generator.addProvider(true, new SandmasteryPatchouliGen(packOutput)); } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java index 2d5d1f878..7e6583647 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryBlockLootTableGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.loottables; import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.loottables.BaseBlockLootTables; import leaf.cosmere.sandmastery.common.blocks.SandJarBlock; import leaf.cosmere.sandmastery.common.blocks.TaldainBlackSandLayerBlock; import leaf.cosmere.sandmastery.common.blocks.TaldainWhiteSandLayerBlock; @@ -12,7 +13,6 @@ import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; import leaf.cosmere.sandmastery.common.registries.SandmasteryItems; import net.minecraft.advancements.critereon.StatePropertiesPredicate; -import net.minecraft.data.loot.BlockLoot; import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.storage.loot.LootContext; @@ -25,10 +25,10 @@ import net.minecraft.world.level.storage.loot.predicates.LootItemEntityPropertyCondition; import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; -public class SandmasteryBlockLootTableGen extends BlockLoot +public class SandmasteryBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { for (IBlockProvider itemRegistryObject : SandmasteryBlocks.BLOCKS.getAllBlocks()) { @@ -59,6 +59,7 @@ else if (block instanceof TemporarySandBlock) @Override protected Iterable getKnownBlocks() { + //todo delete this when moving generate function to use BaseBlockLootTables functions return SandmasteryBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; } } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryLootTableGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryLootTableGen.java index 72024d3d8..33f28ee4d 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryLootTableGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/loottables/SandmasteryLootTableGen.java @@ -1,44 +1,22 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import leaf.cosmere.loottables.BlockLootTableGen; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class SandmasteryLootTableGen extends LootTableProvider +public class SandmasteryLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(SandmasteryBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public SandmasteryLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public SandmasteryLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(SandmasteryBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java index 3a1bf3352..6af580907 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryDataGenerator.java @@ -27,7 +27,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new SoulforgeryEngLangGen(packOutput)); generator.addProvider(true, new SoulforgeryTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); - generator.addProvider(true, new SoulforgeryLootTableGen(generator)); + generator.addProvider(true, new SoulforgeryLootTableGen(packOutput)); generator.addProvider(true, new SoulforgeryItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new SoulforgeryRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new SoulforgeryPatchouliGen(packOutput)); diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryBlockLootTableGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryBlockLootTableGen.java index b0b8da963..e92252f94 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryBlockLootTableGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryBlockLootTableGen.java @@ -1,34 +1,31 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.loottables; import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.loottables.BaseBlockLootTables; import leaf.cosmere.soulforgery.common.registries.SoulforgeryBlocks; -import net.minecraft.data.loot.BlockLoot; import net.minecraft.world.level.block.Block; -public class SoulforgeryBlockLootTableGen extends BlockLoot +public class SoulforgeryBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : SoulforgeryBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); //if (block instanceof MetalOreBlock oreBlock) //{ - // this.add(oreBlock, (ore) -> - // { - // return createOreDrop(ore, SoulforgeryItems.ITEM.get()); - // }); + // this.add(oreBlock, (ore) -> createOreDrop(ore, ItemsRegistry.METAL_RAW_ORE.get(oreBlock.getMetalType()))); //} - //else - { - this.dropSelf(block); - } } + + //then make the rest drop themselves. + dropSelf(SoulforgeryBlocks.BLOCKS.getAllBlocks()); } @Override diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryLootTableGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryLootTableGen.java index 59ebfb1cd..ba36004c0 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryLootTableGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/loottables/SoulforgeryLootTableGen.java @@ -1,43 +1,22 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class SoulforgeryLootTableGen extends LootTableProvider +public class SoulforgeryLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(SoulforgeryBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public SoulforgeryLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - protected List>>, LootContextParamSet>> getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public SoulforgeryLootTableGen(PackOutput packOutput) { + super(packOutput, List.of( + new SubProviderEntry(SoulforgeryBlockLootTableGen::new, LootContextParamSets.BLOCK) + //,new SubProviderEntry(ExampleEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java index 99d349d39..08be0594f 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.biome; @@ -8,17 +8,19 @@ import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; import net.minecraft.core.HolderLookup; -import net.minecraft.data.DataGenerator; +import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.TagKey; import net.minecraft.world.level.biome.Biome; import net.minecraftforge.common.data.ExistingFileHelper; +import java.util.concurrent.CompletableFuture; + public class SurgebindingBiomeTagsProvider extends net.minecraft.data.tags.BiomeTagsProvider { - public SurgebindingBiomeTagsProvider(DataGenerator arg, ExistingFileHelper existingFileHelper) + public SurgebindingBiomeTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, ExistingFileHelper existingFileHelper) { - super(arg, Surgebinding.MODID, existingFileHelper); + super(packOutput, lookupProvider, Surgebinding.MODID, existingFileHelper); } @Override From 876cd3242caadbdf2c479463d6c14a7618747af5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 8 Oct 2024 11:37:08 +1300 Subject: [PATCH 0910/1090] [Surgebinding] Chulls drop random gems --- .../SurgebindingDataGenerator.java | 4 +- .../SurgebindingBlockLootTableGen.java | 26 +++----- .../SurgebindingEntityLootTableGen.java | 59 +++++++++++++++++++ .../loottables/SurgebindingLootTableGen.java | 39 +++--------- 4 files changed, 79 insertions(+), 49 deletions(-) create mode 100644 src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index 63e909e84..aaba704b8 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -40,13 +40,13 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new SurgebindingItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new SurgebindingBlockModelsGen(packOutput, existingFileHelper)); - generator.addProvider(true, new SurgebindingLootTableGen(generator)); + generator.addProvider(true, new SurgebindingLootTableGen(packOutput)); generator.addProvider(true, new SurgebindingRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new SurgebindingPatchouliGen(packOutput)); generator.addProvider(true, new SurgebindingBiomeModifierGen(generator)); - generator.addProvider(true, new SurgebindingBiomeTagsProvider(generator, existingFileHelper)); + generator.addProvider(true, new SurgebindingBiomeTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); } } \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java index d93ad98d4..c23f3d253 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java @@ -1,41 +1,33 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.loottables; import leaf.cosmere.api.providers.IBlockProvider; +import leaf.cosmere.common.registry.BlocksRegistry; +import leaf.cosmere.loottables.BaseBlockLootTables; import leaf.cosmere.surgebinding.common.blocks.GemOreBlock; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; -import net.minecraft.data.loot.BlockLoot; import net.minecraft.world.level.block.Block; -public class SurgebindingBlockLootTableGen extends BlockLoot +public class SurgebindingBlockLootTableGen extends BaseBlockLootTables { @Override - protected void addTables() + protected void generate() { + //first catch any blocks that don't drop self, like ores for (IBlockProvider itemRegistryObject : SurgebindingBlocks.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); if (block instanceof GemOreBlock oreBlock) { - this.add(oreBlock, (ore) -> - { - return createOreDrop(ore, SurgebindingItems.GEMSTONE_CHIPS.get(oreBlock.getGemType()).get()); - }); - } - else - { - this.dropSelf(block); + this.add(oreBlock, (ore) -> createOreDrop(ore, SurgebindingItems.GEMSTONE_CHIPS.get(oreBlock.getGemType()))); } } - } - @Override - protected Iterable getKnownBlocks() - { - return SurgebindingBlocks.BLOCKS.getAllBlocks().stream().map(IBlockProvider::getBlock)::iterator; + //then make the rest drop themselves. + dropSelf(BlocksRegistry.BLOCKS.getAllBlocks()); } } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java new file mode 100644 index 000000000..dce167c66 --- /dev/null +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java @@ -0,0 +1,59 @@ +/* + * File updated ~ 8 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.surgebinding.loottables; + +import leaf.cosmere.api.Roshar; +import leaf.cosmere.loottables.BaseEntityLootTables; +import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; +import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; +import net.minecraft.world.level.storage.loot.LootPool; +import net.minecraft.world.level.storage.loot.LootTable; +import net.minecraft.world.level.storage.loot.entries.LootItem; +import net.minecraft.world.level.storage.loot.functions.LootingEnchantFunction; +import net.minecraft.world.level.storage.loot.functions.SetItemCountFunction; +import net.minecraft.world.level.storage.loot.predicates.LootItemKilledByPlayerCondition; +import net.minecraft.world.level.storage.loot.predicates.LootItemRandomChanceWithLootingCondition; +import net.minecraft.world.level.storage.loot.providers.number.ConstantValue; +import net.minecraft.world.level.storage.loot.providers.number.UniformGenerator; + +public class SurgebindingEntityLootTableGen extends BaseEntityLootTables +{ + + @Override + public void generate() + { + final LootPool.Builder lootPool = LootPool.lootPool() + .name("gems") + .setRolls(ConstantValue.exactly(1)) + .when(LootItemKilledByPlayerCondition.killedByPlayer()) + .when(LootItemRandomChanceWithLootingCondition.randomChanceAndLootingBoost(0.1F, 0.05F)); + + //gems aren't guaranteed to drop, generally. + //The concept that the gems may be damaged while fighting or harvesting. + for (var gemType : Roshar.Gemstone.values()) + { + lootPool.add( + LootItem.lootTableItem(SurgebindingItems.GEMSTONE_BROAMS.get(gemType)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(-1.0F, 1.0F))) + ); + lootPool.add( + LootItem.lootTableItem(SurgebindingItems.GEMSTONE_MARKS.get(gemType)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(-1.0F, 2.0F))) + .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F))) + ); + //chips are small enough that surely you'll get at least some + lootPool.add( + LootItem.lootTableItem(SurgebindingItems.GEMSTONE_CHIPS.get(gemType)) + .apply(SetItemCountFunction.setCount(UniformGenerator.between(1.0F, 3.0F))) + .apply(LootingEnchantFunction.lootingMultiplier(UniformGenerator.between(0.0F, 1.0F))) + ); + } + + add( + SurgebindingEntityTypes.CHULL, + LootTable.lootTable().withPool(lootPool) + ); + } +} \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java index ed0002364..11a3017a9 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingLootTableGen.java @@ -1,43 +1,22 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.loottables; -import com.google.common.collect.ImmutableList; -import com.mojang.datafixers.util.Pair; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.loot.LootTableProvider; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.level.storage.loot.LootTable; -import net.minecraft.world.level.storage.loot.LootTable.Builder; -import net.minecraft.world.level.storage.loot.ValidationContext; -import net.minecraft.world.level.storage.loot.parameters.LootContextParamSet; +import leaf.cosmere.loottables.BaseLootProvider; +import net.minecraft.data.PackOutput; import net.minecraft.world.level.storage.loot.parameters.LootContextParamSets; import java.util.List; -import java.util.Map; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Supplier; -public class SurgebindingLootTableGen extends LootTableProvider +public class SurgebindingLootTableGen extends BaseLootProvider { - private final List>>, LootContextParamSet>> loot_tables = ImmutableList.of(Pair.of(SurgebindingBlockLootTableGen::new, LootContextParamSets.BLOCK)); - - public SurgebindingLootTableGen(DataGenerator dataGeneratorIn) - { - super(dataGeneratorIn); - } - - @Override - public List getTables() - { - return this.loot_tables; - } - - @Override - protected void validate(Map map, ValidationContext validationtracker) + public SurgebindingLootTableGen(PackOutput output) { + super(output, List.of( + new SubProviderEntry(SurgebindingBlockLootTableGen::new, LootContextParamSets.BLOCK), + new SubProviderEntry(SurgebindingEntityLootTableGen::new, LootContextParamSets.ENTITY) + )); } } From 2a53634d6a1b43a19b1747a980f5d8bdf05849df Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 07:47:37 +1300 Subject: [PATCH 0911/1090] [Port] patchouli move from data to assets --- .../java/leaf/cosmere/patchouli/data/PatchouliProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java index f03c86269..40fdb5e95 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 6 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.patchouli.data; @@ -106,7 +106,7 @@ private Path getCategoryPath(Path pathIn, BookStuff.Category category) { return pathIn.resolve( String.format( - "data/%s/patchouli_books/%s/en_us/categories/%s.json", + "assets/%s/patchouli_books/%s/en_us/categories/%s.json", modid, GUIDE_NAME, StringHelper.fixPath(category.name))); @@ -116,7 +116,7 @@ private Path getEntryPath(Path pathIn, BookStuff.Entry entry) { return pathIn.resolve( String.format( - "data/%s/patchouli_books/%s/en_us/entries/%s/%s.json", + "assets/%s/patchouli_books/%s/en_us/entries/%s/%s.json", modid, GUIDE_NAME, StringHelper.fixPath(entry.category.name), From 1ba16848ba4b9513babd0e6b57d22b840e56cb8a Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 07:58:56 +1300 Subject: [PATCH 0912/1090] [Port] patchouli move from data to assets --- .../patchouli_books/guide/en_us/categories/allomancy.json | 0 .../guide/en_us/entries/allomancy/allomancy_basics.json | 0 .../guide/en_us/entries/allomancy/allomantic_aluminum.json | 0 .../guide/en_us/entries/allomancy/allomantic_atium.json | 0 .../guide/en_us/entries/allomancy/allomantic_bendalloy.json | 0 .../guide/en_us/entries/allomancy/allomantic_brass.json | 0 .../guide/en_us/entries/allomancy/allomantic_bronze.json | 0 .../guide/en_us/entries/allomancy/allomantic_cadmium.json | 0 .../guide/en_us/entries/allomancy/allomantic_chromium.json | 0 .../guide/en_us/entries/allomancy/allomantic_copper.json | 0 .../guide/en_us/entries/allomancy/allomantic_duralumin.json | 0 .../guide/en_us/entries/allomancy/allomantic_electrum.json | 0 .../guide/en_us/entries/allomancy/allomantic_gold.json | 0 .../guide/en_us/entries/allomancy/allomantic_iron.json | 0 .../guide/en_us/entries/allomancy/allomantic_nicrosil.json | 0 .../guide/en_us/entries/allomancy/allomantic_pewter.json | 0 .../guide/en_us/entries/allomancy/allomantic_steel.json | 0 .../guide/en_us/entries/allomancy/allomantic_tin.json | 0 .../guide/en_us/entries/allomancy/allomantic_zinc.json | 0 .../patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json | 0 .../aondor/patchouli_books/guide/en_us/categories/aondor.json | 0 .../patchouli_books/guide/en_us/entries/aondor/aondor_basics.json | 0 .../aviar/patchouli_books/guide/en_us/categories/aviar.json | 0 .../patchouli_books/guide/en_us/entries/aviar/aviar_basics.json | 0 .../guide/en_us/entries/aviar/breed_abilities.json | 0 .../guide/en_us/entries/aviar/how_to_get_aviar.json | 0 .../patchouli_books/guide/en_us/categories/awakening.json | 0 .../guide/en_us/entries/awakening/awakening_basics.json | 0 .../patchouli_books/guide/en_us/categories/tools.json | 0 .../patchouli_books/guide/en_us/entries/tools/tools_basics.json | 0 .../example/patchouli_books/guide/en_us/categories/example.json | 0 .../guide/en_us/entries/example/example_basics.json | 0 .../patchouli_books/guide/en_us/categories/feruchemy.json | 0 .../guide/en_us/entries/feruchemy/compounding.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_aluminum.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_atium.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_bendalloy.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_brass.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_bronze.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_cadmium.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_chromium.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_copper.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_duralumin.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_electrum.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_gold.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_iron.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_nicrosil.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_pewter.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_steel.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_tin.json | 0 .../guide/en_us/entries/feruchemy/feruchemical_zinc.json | 0 .../guide/en_us/entries/feruchemy/feruchemy_basics.json | 0 .../patchouli_books/guide/en_us/categories/hemalurgy.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_atium.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_brass.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_bronze.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_chromium.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_copper.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_electrum.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_gold.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_iron.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_pewter.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_steel.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_tin.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_zinc.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgy_basics.json | 0 .../patchouli_books/guide/en_us/entries/hemalurgy/koloss.json | 0 .../patchouli_books/guide/en_us/categories/sandmastery.json | 0 .../patchouli_books/guide/en_us/entries/sandmastery/qido.json | 0 .../patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json | 0 .../guide/en_us/entries/sandmastery/sand_pouch.json | 0 .../guide/en_us/entries/sandmastery/sand_spreader.json | 0 .../guide/en_us/entries/sandmastery/sandmastery_basics.json | 0 .../patchouli_books/guide/en_us/categories/soulforgery.json | 0 .../guide/en_us/entries/soulforgery/soulforgery_basics.json | 0 .../patchouli_books/guide/en_us/categories/surgebinding.json | 0 .../patchouli_books/guide/en_us/entries/surgebinding/chull.json | 0 .../guide/en_us/entries/surgebinding/surgebinding_basics.json | 0 85 files changed, 0 insertions(+), 0 deletions(-) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/categories/allomancy.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json (100%) rename src/datagen/generated/allomancy/{data => assets}/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json (100%) rename src/datagen/generated/aondor/{data => assets}/aondor/patchouli_books/guide/en_us/categories/aondor.json (100%) rename src/datagen/generated/aondor/{data => assets}/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json (100%) rename src/datagen/generated/aviar/{data => assets}/aviar/patchouli_books/guide/en_us/categories/aviar.json (100%) rename src/datagen/generated/aviar/{data => assets}/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json (100%) rename src/datagen/generated/aviar/{data => assets}/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json (100%) rename src/datagen/generated/aviar/{data => assets}/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json (100%) rename src/datagen/generated/awakening/{data => assets}/awakening/patchouli_books/guide/en_us/categories/awakening.json (100%) rename src/datagen/generated/awakening/{data => assets}/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json (100%) rename src/datagen/generated/cosmeretools/{data => assets}/cosmeretools/patchouli_books/guide/en_us/categories/tools.json (100%) rename src/datagen/generated/cosmeretools/{data => assets}/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json (100%) rename src/datagen/generated/example/{data => assets}/example/patchouli_books/guide/en_us/categories/example.json (100%) rename src/datagen/generated/example/{data => assets}/example/patchouli_books/guide/en_us/entries/example/example_basics.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json (100%) rename src/datagen/generated/feruchemy/{data => assets}/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json (100%) rename src/datagen/generated/hemalurgy/{data => assets}/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json (100%) rename src/datagen/generated/sandmastery/{data => assets}/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json (100%) rename src/datagen/generated/soulforgery/{data => assets}/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json (100%) rename src/datagen/generated/soulforgery/{data => assets}/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json (100%) rename src/datagen/generated/surgebinding/{data => assets}/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json (100%) rename src/datagen/generated/surgebinding/{data => assets}/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json (100%) rename src/datagen/generated/surgebinding/{data => assets}/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json (100%) diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/categories/allomancy.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/categories/allomancy.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/categories/allomancy.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/categories/allomancy.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json diff --git a/src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json b/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json similarity index 100% rename from src/datagen/generated/allomancy/data/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json rename to src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json diff --git a/src/datagen/generated/aondor/data/aondor/patchouli_books/guide/en_us/categories/aondor.json b/src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/categories/aondor.json similarity index 100% rename from src/datagen/generated/aondor/data/aondor/patchouli_books/guide/en_us/categories/aondor.json rename to src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/categories/aondor.json diff --git a/src/datagen/generated/aondor/data/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json b/src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json similarity index 100% rename from src/datagen/generated/aondor/data/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json rename to src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json diff --git a/src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/categories/aviar.json b/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/categories/aviar.json similarity index 100% rename from src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/categories/aviar.json rename to src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/categories/aviar.json diff --git a/src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json b/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json similarity index 100% rename from src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json rename to src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json diff --git a/src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json b/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json similarity index 100% rename from src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json rename to src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json diff --git a/src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json b/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json similarity index 100% rename from src/datagen/generated/aviar/data/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json rename to src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json diff --git a/src/datagen/generated/awakening/data/awakening/patchouli_books/guide/en_us/categories/awakening.json b/src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/categories/awakening.json similarity index 100% rename from src/datagen/generated/awakening/data/awakening/patchouli_books/guide/en_us/categories/awakening.json rename to src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/categories/awakening.json diff --git a/src/datagen/generated/awakening/data/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json b/src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json similarity index 100% rename from src/datagen/generated/awakening/data/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json rename to src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/patchouli_books/guide/en_us/categories/tools.json b/src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/categories/tools.json similarity index 100% rename from src/datagen/generated/cosmeretools/data/cosmeretools/patchouli_books/guide/en_us/categories/tools.json rename to src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/categories/tools.json diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json b/src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json similarity index 100% rename from src/datagen/generated/cosmeretools/data/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json rename to src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json diff --git a/src/datagen/generated/example/data/example/patchouli_books/guide/en_us/categories/example.json b/src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/categories/example.json similarity index 100% rename from src/datagen/generated/example/data/example/patchouli_books/guide/en_us/categories/example.json rename to src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/categories/example.json diff --git a/src/datagen/generated/example/data/example/patchouli_books/guide/en_us/entries/example/example_basics.json b/src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/entries/example/example_basics.json similarity index 100% rename from src/datagen/generated/example/data/example/patchouli_books/guide/en_us/entries/example/example_basics.json rename to src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/entries/example/example_basics.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json b/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json similarity index 100% rename from src/datagen/generated/feruchemy/data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json rename to src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json similarity index 100% rename from src/datagen/generated/hemalurgy/data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json rename to src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json b/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json similarity index 100% rename from src/datagen/generated/sandmastery/data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json rename to src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json diff --git a/src/datagen/generated/soulforgery/data/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json b/src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json similarity index 100% rename from src/datagen/generated/soulforgery/data/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json rename to src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json diff --git a/src/datagen/generated/soulforgery/data/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json b/src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json similarity index 100% rename from src/datagen/generated/soulforgery/data/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json rename to src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json diff --git a/src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json b/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json similarity index 100% rename from src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json rename to src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json diff --git a/src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json b/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json similarity index 100% rename from src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json rename to src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json diff --git a/src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json b/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json similarity index 100% rename from src/datagen/generated/surgebinding/data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json rename to src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json From 358aa6246e1a246ad8a9b03cd8092c71733e9668 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 10:03:35 +1300 Subject: [PATCH 0913/1090] [Port] Patchouli moving files, updating entries json to match new folder structure. hopefully the data gen just works --- .../resources/data/allomancy/patchouli_books/guide/book.json | 4 ---- .../resources/data/aondor/patchouli_books/guide/book.json | 4 ---- .../resources/data/aviar/patchouli_books/guide/book.json | 4 ---- .../resources/data/awakening/patchouli_books/guide/book.json | 4 ---- .../data/cosmeretools/patchouli_books/guide/book.json | 4 ---- .../cosmere/allomancy/patchouli/AllomancyPatchouliGen.java | 5 +++-- .../leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java | 5 +++-- .../java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java | 5 +++-- .../cosmere/awakening/patchouli/AwakeningPatchouliGen.java | 5 +++-- .../java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java | 5 +++-- .../leaf/cosmere/example/patchouli/ExamplePatchouliGen.java | 5 +++-- .../cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java | 5 +++-- .../patchouli_books/guide/en_us/categories/allomancy.json | 0 .../guide/en_us/entries/allomancy/allomancy_basics.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_aluminum.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_atium.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_bendalloy.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_brass.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_bronze.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_cadmium.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_chromium.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_copper.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_duralumin.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_electrum.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_gold.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_iron.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_nicrosil.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_pewter.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_steel.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_tin.json | 2 +- .../guide/en_us/entries/allomancy/allomantic_zinc.json | 2 +- .../guide/en_us/entries/allomancy/coin_pouch.json | 2 +- .../patchouli_books/guide/en_us/categories/aondor.json | 0 .../guide/en_us/entries/aondor/aondor_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/aviar.json | 0 .../guide/en_us/entries/aviar/aviar_basics.json | 2 +- .../guide/en_us/entries/aviar/breed_abilities.json | 2 +- .../guide/en_us/entries/aviar/how_to_get_aviar.json | 2 +- .../patchouli_books/guide/en_us/categories/awakening.json | 0 .../guide/en_us/entries/awakening/awakening_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/tools.json | 0 .../guide/en_us/entries/tools/tools_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/example.json | 0 .../guide/en_us/entries/example/example_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/feruchemy.json | 0 .../guide/en_us/entries/feruchemy/compounding.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_aluminum.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_atium.json | 2 +- .../en_us/entries/feruchemy/feruchemical_bendalloy.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_brass.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_bronze.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_cadmium.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_chromium.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_copper.json | 2 +- .../en_us/entries/feruchemy/feruchemical_duralumin.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_electrum.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_gold.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_iron.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_nicrosil.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_pewter.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_steel.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_tin.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemical_zinc.json | 2 +- .../guide/en_us/entries/feruchemy/feruchemy_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/hemalurgy.json | 0 .../guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_atium.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_brass.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_bronze.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_chromium.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_copper.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_electrum.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_gold.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_iron.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_pewter.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_steel.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_tin.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgic_zinc.json | 2 +- .../guide/en_us/entries/hemalurgy/hemalurgy_basics.json | 2 +- .../guide/en_us/entries/hemalurgy/koloss.json | 2 +- .../patchouli_books/guide/en_us/categories/sandmastery.json | 0 .../guide/en_us/entries/sandmastery/qido.json | 2 +- .../guide/en_us/entries/sandmastery/sand_jar.json | 2 +- .../guide/en_us/entries/sandmastery/sand_pouch.json | 2 +- .../guide/en_us/entries/sandmastery/sand_spreader.json | 2 +- .../guide/en_us/entries/sandmastery/sandmastery_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/soulforgery.json | 0 .../guide/en_us/entries/soulforgery/soulforgery_basics.json | 2 +- .../patchouli_books/guide/en_us/categories/surgebinding.json | 0 .../guide/en_us/entries/surgebinding/chull.json | 2 +- .../en_us/entries/surgebinding/surgebinding_basics.json | 2 +- .../cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java | 5 +++-- .../main/java/leaf/cosmere/patchouli/PatchouliGen.java | 2 +- .../sandmastery/patchouli/SandmasteryPatchouliGen.java | 5 +++-- .../soulforgery/patchouli/SoulforgeryPatchouliGen.java | 5 +++-- .../surgebinding/patchouli/SurgebindingPatchouliGen.java | 5 +++-- .../resources/data/example/patchouli_books/guide/book.json | 4 ---- .../resources/data/feruchemy/patchouli_books/guide/book.json | 4 ---- .../resources/data/hemalurgy/patchouli_books/guide/book.json | 4 ---- .../resources/data/cosmere/patchouli_books/guide/book.json | 1 + .../data/sandmastery/patchouli_books/guide/book.json | 4 ---- .../data/soulforgery/patchouli_books/guide/book.json | 4 ---- .../data/surgebinding/patchouli_books/guide/book.json | 4 ---- 109 files changed, 109 insertions(+), 141 deletions(-) delete mode 100644 src/allomancy/resources/data/allomancy/patchouli_books/guide/book.json delete mode 100644 src/aondor/resources/data/aondor/patchouli_books/guide/book.json delete mode 100644 src/aviar/resources/data/aviar/patchouli_books/guide/book.json delete mode 100644 src/awakening/resources/data/awakening/patchouli_books/guide/book.json delete mode 100644 src/cosmeretools/resources/data/cosmeretools/patchouli_books/guide/book.json rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/categories/allomancy.json (100%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json (96%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json (92%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json (90%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json (93%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json (93%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json (93%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json (90%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json (90%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json (93%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json (91%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json (96%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json (92%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json (92%) rename src/datagen/generated/allomancy/assets/{allomancy => cosmere}/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json (95%) rename src/datagen/generated/aondor/assets/{aondor => cosmere}/patchouli_books/guide/en_us/categories/aondor.json (100%) rename src/datagen/generated/aondor/assets/{aondor => cosmere}/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json (91%) rename src/datagen/generated/aviar/assets/{aviar => cosmere}/patchouli_books/guide/en_us/categories/aviar.json (100%) rename src/datagen/generated/aviar/assets/{aviar => cosmere}/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json (96%) rename src/datagen/generated/aviar/assets/{aviar => cosmere}/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json (98%) rename src/datagen/generated/aviar/assets/{aviar => cosmere}/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json (96%) rename src/datagen/generated/awakening/assets/{awakening => cosmere}/patchouli_books/guide/en_us/categories/awakening.json (100%) rename src/datagen/generated/awakening/assets/{awakening => cosmere}/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json (90%) rename src/datagen/generated/cosmeretools/assets/{cosmeretools => cosmere}/patchouli_books/guide/en_us/categories/tools.json (100%) rename src/datagen/generated/cosmeretools/assets/{cosmeretools => cosmere}/patchouli_books/guide/en_us/entries/tools/tools_basics.json (90%) rename src/datagen/generated/example/assets/{example => cosmere}/patchouli_books/guide/en_us/categories/example.json (100%) rename src/datagen/generated/example/assets/{example => cosmere}/patchouli_books/guide/en_us/entries/example/example_basics.json (91%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/categories/feruchemy.json (100%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/compounding.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json (96%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json (96%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json (95%) rename src/datagen/generated/feruchemy/assets/{feruchemy => cosmere}/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json (95%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/categories/hemalurgy.json (100%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json (90%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json (92%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json (96%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json (95%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json (96%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json (95%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json (95%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json (92%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json (90%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json (90%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json (95%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json (94%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json (92%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json (92%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json (98%) rename src/datagen/generated/hemalurgy/assets/{hemalurgy => cosmere}/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json (96%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/categories/sandmastery.json (100%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/entries/sandmastery/qido.json (93%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json (95%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json (94%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json (92%) rename src/datagen/generated/sandmastery/assets/{sandmastery => cosmere}/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json (96%) rename src/datagen/generated/soulforgery/assets/{soulforgery => cosmere}/patchouli_books/guide/en_us/categories/soulforgery.json (100%) rename src/datagen/generated/soulforgery/assets/{soulforgery => cosmere}/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json (89%) rename src/datagen/generated/surgebinding/assets/{surgebinding => cosmere}/patchouli_books/guide/en_us/categories/surgebinding.json (100%) rename src/datagen/generated/surgebinding/assets/{surgebinding => cosmere}/patchouli_books/guide/en_us/entries/surgebinding/chull.json (92%) rename src/datagen/generated/surgebinding/assets/{surgebinding => cosmere}/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json (89%) delete mode 100644 src/example/resources/data/example/patchouli_books/guide/book.json delete mode 100644 src/feruchemy/resources/data/feruchemy/patchouli_books/guide/book.json delete mode 100644 src/hemalurgy/resources/data/hemalurgy/patchouli_books/guide/book.json delete mode 100644 src/sandmastery/resources/data/sandmastery/patchouli_books/guide/book.json delete mode 100644 src/soulforgery/resources/data/soulforgery/patchouli_books/guide/book.json delete mode 100644 src/surgebinding/resources/data/surgebinding/patchouli_books/guide/book.json diff --git a/src/allomancy/resources/data/allomancy/patchouli_books/guide/book.json b/src/allomancy/resources/data/allomancy/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/allomancy/resources/data/allomancy/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/aondor/resources/data/aondor/patchouli_books/guide/book.json b/src/aondor/resources/data/aondor/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/aondor/resources/data/aondor/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/aviar/resources/data/aviar/patchouli_books/guide/book.json b/src/aviar/resources/data/aviar/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/aviar/resources/data/aviar/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/awakening/resources/data/awakening/patchouli_books/guide/book.json b/src/awakening/resources/data/awakening/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/awakening/resources/data/awakening/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/cosmeretools/resources/data/cosmeretools/patchouli_books/guide/book.json b/src/cosmeretools/resources/data/cosmeretools/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/cosmeretools/resources/data/cosmeretools/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java index 2afcefedf..d4471e676 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/AllomancyPatchouliGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.patchouli; import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class AllomancyPatchouliGen extends PatchouliProvider { public AllomancyPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Allomancy.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java index 5a176500e..9a13dce75 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/patchouli/AonDorPatchouliGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor.patchouli; import leaf.cosmere.aondor.common.AonDor; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class AonDorPatchouliGen extends PatchouliProvider { public AonDorPatchouliGen(PackOutput generatorIn) { - super(generatorIn, AonDor.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java index 3795154c9..9922853b4 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/patchouli/AviarPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.aviar.common.Aviar; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class AviarPatchouliGen extends PatchouliProvider { public AviarPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Aviar.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java index 1b92839fd..5c51b6fad 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/patchouli/AwakeningPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.awakening.common.Awakening; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class AwakeningPatchouliGen extends PatchouliProvider { public AwakeningPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Awakening.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java index bda937b7f..ce4a8e95f 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/ToolsPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.tools.common.CosmereTools; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class ToolsPatchouliGen extends PatchouliProvider { public ToolsPatchouliGen(PackOutput generatorIn) { - super(generatorIn, CosmereTools.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java b/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java index bb14b74de..bd422b6e2 100644 --- a/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/patchouli/ExamplePatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.example.common.Example; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class ExamplePatchouliGen extends PatchouliProvider { public ExamplePatchouliGen(PackOutput generatorIn) { - super(generatorIn, Example.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java index d63ab7ee8..aea98defa 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/patchouli/FeruchemyPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class FeruchemyPatchouliGen extends PatchouliProvider { public FeruchemyPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Feruchemy.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/categories/allomancy.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/categories/allomancy.json similarity index 100% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/categories/allomancy.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/categories/allomancy.json diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json similarity index 96% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json index 0a8edf7af..c2b58c55a 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "allomancy:metal_vial", "name": "Allomancy Basics", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json similarity index 92% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json index f5f0bf59c..248d17f82 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:aluminum_nugget", "name": "Allomantic Aluminum", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json similarity index 90% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json index bc8702623..a86626658 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:atium_nugget", "name": "Allomantic Atium", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json index 315a766d9..256bb29b8 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:bendalloy_nugget", "name": "Allomantic Bendalloy", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json index 04ed33ac7..d4f241658 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:brass_nugget", "name": "Allomantic Brass", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json similarity index 93% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json index 1a8b70a23..5de69d7ff 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:bronze_nugget", "name": "Allomantic Bronze", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json index 19c8274d4..f9ee75ca0 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:cadmium_nugget", "name": "Allomantic Cadmium", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json index 8a5ecaaf9..04004b2be 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:chromium_nugget", "name": "Allomantic Chromium", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json similarity index 93% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json index d807f485a..0ad12cf8d 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:copper_nugget", "name": "Allomantic Copper", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json similarity index 93% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json index 0b06ae28f..7d5b67c3f 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:duralumin_nugget", "name": "Allomantic Duralumin", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json similarity index 90% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json index bf06730ab..83bcc69c2 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:electrum_nugget", "name": "Allomantic Electrum", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json similarity index 90% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json index 3977a4d8b..8fc7844fc 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "minecraft:gold_nugget", "name": "Allomantic Gold", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json similarity index 93% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json index 127da4d49..c848205e5 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "minecraft:iron_nugget", "name": "Allomantic Iron", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json index 14452c812..502a43357 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:nicrosil_nugget", "name": "Allomantic Nicrosil", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json similarity index 91% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json index 4773460a1..99ea4419a 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:pewter_nugget", "name": "Allomantic Pewter", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json similarity index 96% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json index fba17be7e..e1bedd48a 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:steel_nugget", "name": "Allomantic Steel", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json similarity index 92% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json index d35eacd51..700066273 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:tin_nugget", "name": "Allomantic Tin", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json similarity index 92% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json index d38afc1b1..8de846341 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "cosmere:zinc_nugget", "name": "Allomantic Zinc", "pages": [ diff --git a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json similarity index 95% rename from src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json rename to src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json index 6e42dbfc6..51795e6d5 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json @@ -1,5 +1,5 @@ { - "category": "allomancy:allomancy", + "category": "cosmere:allomancy", "icon": "allomancy:coin_pouch", "name": "Coin Pouch", "pages": [ diff --git a/src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/categories/aondor.json b/src/datagen/generated/aondor/assets/cosmere/patchouli_books/guide/en_us/categories/aondor.json similarity index 100% rename from src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/categories/aondor.json rename to src/datagen/generated/aondor/assets/cosmere/patchouli_books/guide/en_us/categories/aondor.json diff --git a/src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json b/src/datagen/generated/aondor/assets/cosmere/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json similarity index 91% rename from src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json rename to src/datagen/generated/aondor/assets/cosmere/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json index 624455681..d32c7e58f 100644 --- a/src/datagen/generated/aondor/assets/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json +++ b/src/datagen/generated/aondor/assets/cosmere/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json @@ -1,5 +1,5 @@ { - "category": "aondor:aondor", + "category": "cosmere:aondor", "icon": "minecraft:paper", "name": "AonDor (For Dummies)", "pages": [ diff --git a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/categories/aviar.json b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/categories/aviar.json similarity index 100% rename from src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/categories/aviar.json rename to src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/categories/aviar.json diff --git a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json similarity index 96% rename from src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json rename to src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json index 557bdf923..f2b4cfc61 100644 --- a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json +++ b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json @@ -1,5 +1,5 @@ { - "category": "aviar:aviar", + "category": "cosmere:aviar", "icon": "minecraft:book", "name": "Aviar (For Dummies)", "pages": [ diff --git a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json similarity index 98% rename from src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json rename to src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json index dd91b4d5c..3f2b4c45c 100644 --- a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json +++ b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json @@ -1,5 +1,5 @@ { - "category": "aviar:aviar", + "category": "cosmere:aviar", "icon": "minecraft:writable_book", "name": "Breed Abilities", "pages": [ diff --git a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json similarity index 96% rename from src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json rename to src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json index 20a5756a8..e27d8dd24 100644 --- a/src/datagen/generated/aviar/assets/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json +++ b/src/datagen/generated/aviar/assets/cosmere/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json @@ -1,5 +1,5 @@ { - "category": "aviar:aviar", + "category": "cosmere:aviar", "icon": "aviar:fruit_of_patji", "name": "Fruit Of Patji", "pages": [ diff --git a/src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/categories/awakening.json b/src/datagen/generated/awakening/assets/cosmere/patchouli_books/guide/en_us/categories/awakening.json similarity index 100% rename from src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/categories/awakening.json rename to src/datagen/generated/awakening/assets/cosmere/patchouli_books/guide/en_us/categories/awakening.json diff --git a/src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json b/src/datagen/generated/awakening/assets/cosmere/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json similarity index 90% rename from src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json rename to src/datagen/generated/awakening/assets/cosmere/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json index 431e85d95..5c044b156 100644 --- a/src/datagen/generated/awakening/assets/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json +++ b/src/datagen/generated/awakening/assets/cosmere/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json @@ -1,5 +1,5 @@ { - "category": "awakening:awakening", + "category": "cosmere:awakening", "icon": "minecraft:paper", "name": "Awakening (For Dummies)", "pages": [ diff --git a/src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/categories/tools.json b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json similarity index 100% rename from src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/categories/tools.json rename to src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json diff --git a/src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json similarity index 90% rename from src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json rename to src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json index 4d7f0012b..ccc8d3cba 100644 --- a/src/datagen/generated/cosmeretools/assets/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json +++ b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json @@ -1,5 +1,5 @@ { - "category": "cosmeretools:tools", + "category": "cosmere:tools", "icon": "minecraft:paper", "name": "Tools (For Dummies)", "pages": [ diff --git a/src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/categories/example.json b/src/datagen/generated/example/assets/cosmere/patchouli_books/guide/en_us/categories/example.json similarity index 100% rename from src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/categories/example.json rename to src/datagen/generated/example/assets/cosmere/patchouli_books/guide/en_us/categories/example.json diff --git a/src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/entries/example/example_basics.json b/src/datagen/generated/example/assets/cosmere/patchouli_books/guide/en_us/entries/example/example_basics.json similarity index 91% rename from src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/entries/example/example_basics.json rename to src/datagen/generated/example/assets/cosmere/patchouli_books/guide/en_us/entries/example/example_basics.json index 9db482420..39de091b7 100644 --- a/src/datagen/generated/example/assets/example/patchouli_books/guide/en_us/entries/example/example_basics.json +++ b/src/datagen/generated/example/assets/cosmere/patchouli_books/guide/en_us/entries/example/example_basics.json @@ -1,5 +1,5 @@ { - "category": "example:example", + "category": "cosmere:example", "icon": "minecraft:paper", "name": "Example (For Dummies)", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json similarity index 100% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json index d9c771946..26eed5f88 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:copper_bracelet_metalmind", "name": "Compounding", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json similarity index 96% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json index 6efa9dce0..840e710d3 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:aluminum_bracelet_metalmind", "name": "Feruchemical Aluminum", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json index 501424b83..ed4ee3019 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:atium_bracelet_metalmind", "name": "Feruchemical Atium", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json index eed3d4125..5142abed8 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:bendalloy_bracelet_metalmind", "name": "Feruchemical Bendalloy", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json index 2ea8d070e..b877f77fe 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:brass_bracelet_metalmind", "name": "Feruchemical Brass", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json index 50bac6130..6b3f6b3ea 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:bronze_bracelet_metalmind", "name": "Feruchemical Bronze", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json index 43cda865d..4cfb472ea 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:cadmium_bracelet_metalmind", "name": "Feruchemical Cadmium", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json index ec4cc3146..3cd3bf763 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:chromium_bracelet_metalmind", "name": "Feruchemical Chromium", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json index c6bd8488c..451feed5b 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:copper_bracelet_metalmind", "name": "Feruchemical Copper", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json similarity index 96% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json index cc9a67e9a..a129261fe 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:duralumin_bracelet_metalmind", "name": "Feruchemical Duralumin", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json index 2e0300fa9..488f5b727 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:electrum_bracelet_metalmind", "name": "Feruchemical Electrum", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json index 76653efa6..f7328629e 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:gold_bracelet_metalmind", "name": "Feruchemical Gold", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json index 99845bfa1..ce2d39ca2 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:iron_bracelet_metalmind", "name": "Feruchemical Iron", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json index ec8617829..177289323 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:nicrosil_bracelet_metalmind", "name": "Feruchemical Nicrosil", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json index bf5de47b3..ab6648882 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:pewter_bracelet_metalmind", "name": "Feruchemical Pewter", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json index c0aecdb45..2eca54dcb 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:steel_bracelet_metalmind", "name": "Feruchemical Steel", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json index d7a5b7265..c590742d4 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:tin_bracelet_metalmind", "name": "Feruchemical Tin", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json index b3f9a8394..21fe68056 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:zinc_bracelet_metalmind", "name": "Feruchemical Zinc", "pages": [ diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json similarity index 95% rename from src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json rename to src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json index cb3c0cae1..d5680a8ef 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json @@ -1,5 +1,5 @@ { - "category": "feruchemy:feruchemy", + "category": "cosmere:feruchemy", "icon": "feruchemy:copper_bracelet_metalmind", "name": "Feruchemy Basics", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json similarity index 100% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json similarity index 90% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json index 17786b9d8..62647812c 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:aluminum_spike", "name": "Hemalurgic Aluminum", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json similarity index 92% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json index 40b45a214..ea2841087 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:atium_spike", "name": "Hemalurgic Atium", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json similarity index 96% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json index 4d93a9d33..ced42ca4b 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:bendalloy_spike", "name": "Hemalurgic Bendalloy", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json similarity index 95% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json index bd0d99a34..6ae8ec36d 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:brass_spike", "name": "Hemalurgic Brass", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json similarity index 96% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json index f6b575ddf..77f579f1c 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:bronze_spike", "name": "Hemalurgic Bronze", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json index fec8817a7..c79de1e26 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:cadmium_spike", "name": "Hemalurgic Cadmium", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json similarity index 95% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json index 7daab74f8..7fc7aa677 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:chromium_spike", "name": "Hemalurgic Chromium", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json index 5bc4b06e1..531ca2609 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:copper_spike", "name": "Hemalurgic Copper", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json index ab2c3be27..da225976b 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:duralumin_spike", "name": "Hemalurgic Duralumin", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json index a66c1c716..79480ce35 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:electrum_spike", "name": "Hemalurgic Electrum", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json similarity index 95% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json index 032282ccf..8c1b3bdf0 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:gold_spike", "name": "Hemalurgic Gold", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json similarity index 92% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json index b1d5646a0..b97f07fd1 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:iron_spike", "name": "Hemalurgic Iron", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json similarity index 90% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json index 0c6bd78d8..d6bfd9479 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:lerasatium_spike", "name": "Hemalurgic Lerasatium", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json similarity index 90% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json index fa9d7d881..62cfbb6ee 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:lerasium_spike", "name": "Hemalurgic Lerasium", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json index b1b0188cf..e1fc6f416 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:nicrosil_spike", "name": "Hemalurgic Nicrosil", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json similarity index 95% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json index 43be5ff78..a5c4a2379 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:pewter_spike", "name": "Hemalurgic Pewter", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json similarity index 94% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json index 793aa0329..3869a28ac 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:steel_spike", "name": "Hemalurgic Steel", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json similarity index 92% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json index 38d3c0a8c..9bca32132 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:tin_spike", "name": "Hemalurgic Tin", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json similarity index 92% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json index 635e89c4b..0fa9af0f1 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:zinc_spike", "name": "Hemalurgic Zinc", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json similarity index 98% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json index c4659e1f6..65e102b33 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:atium_spike", "name": "Hemalurgy (For Dummies)", "pages": [ diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json similarity index 96% rename from src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json rename to src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json index f31d6b622..ad68db57d 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json +++ b/src/datagen/generated/hemalurgy/assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json @@ -1,5 +1,5 @@ { - "category": "hemalurgy:hemalurgy", + "category": "cosmere:hemalurgy", "icon": "hemalurgy:atium_spike", "name": "Koloss", "pages": [ diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/categories/sandmastery.json similarity index 100% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/categories/sandmastery.json diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/qido.json similarity index 93% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/qido.json index ed9225c5b..800d54321 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json +++ b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/qido.json @@ -1,5 +1,5 @@ { - "category": "sandmastery:sandmastery", + "category": "cosmere:sandmastery", "icon": "sandmastery:qido", "name": "Qido", "pages": [ diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json similarity index 95% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json index be76c8ea9..0b831cc55 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json +++ b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json @@ -1,5 +1,5 @@ { - "category": "sandmastery:sandmastery", + "category": "cosmere:sandmastery", "icon": "sandmastery:sand_jar", "name": "Sand Jar", "pages": [ diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json similarity index 94% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json index b29041559..2ef7840f3 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json +++ b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json @@ -1,5 +1,5 @@ { - "category": "sandmastery:sandmastery", + "category": "cosmere:sandmastery", "icon": "sandmastery:sand_pouch", "name": "Sand Pouch", "pages": [ diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json similarity index 92% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json index c77776379..ad13c23e7 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json +++ b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json @@ -1,5 +1,5 @@ { - "category": "sandmastery:sandmastery", + "category": "cosmere:sandmastery", "icon": "sandmastery:sand_spreading_tub", "name": "Sand Spreader", "pages": [ diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json similarity index 96% rename from src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json rename to src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json index a59bc0569..da7a6b62a 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json +++ b/src/datagen/generated/sandmastery/assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json @@ -1,5 +1,5 @@ { - "category": "sandmastery:sandmastery", + "category": "cosmere:sandmastery", "icon": "sandmastery:qido", "name": "Sandmastery Basics", "pages": [ diff --git a/src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json b/src/datagen/generated/soulforgery/assets/cosmere/patchouli_books/guide/en_us/categories/soulforgery.json similarity index 100% rename from src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json rename to src/datagen/generated/soulforgery/assets/cosmere/patchouli_books/guide/en_us/categories/soulforgery.json diff --git a/src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json b/src/datagen/generated/soulforgery/assets/cosmere/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json similarity index 89% rename from src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json rename to src/datagen/generated/soulforgery/assets/cosmere/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json index 223a1b9a0..d228712e3 100644 --- a/src/datagen/generated/soulforgery/assets/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json +++ b/src/datagen/generated/soulforgery/assets/cosmere/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json @@ -1,5 +1,5 @@ { - "category": "soulforgery:soulforgery", + "category": "cosmere:soulforgery", "icon": "minecraft:paper", "name": "Soulforgery (For Dummies)", "pages": [ diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json b/src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/categories/surgebinding.json similarity index 100% rename from src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json rename to src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/categories/surgebinding.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json b/src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/chull.json similarity index 92% rename from src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json rename to src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/chull.json index 06c999c3d..9e8920e08 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json +++ b/src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/chull.json @@ -1,5 +1,5 @@ { - "category": "surgebinding:surgebinding", + "category": "cosmere:surgebinding", "icon": "surgebinding:amethyst_broam", "name": "Chull", "pages": [ diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json b/src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json similarity index 89% rename from src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json rename to src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json index 7df4b9924..e780bea0b 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json +++ b/src/datagen/generated/surgebinding/assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json @@ -1,5 +1,5 @@ { - "category": "surgebinding:surgebinding", + "category": "cosmere:surgebinding", "icon": "surgebinding:amethyst_broam", "name": "Surgebinding Basics", "pages": [ diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java index a0a426c19..d453428bb 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/patchouli/HemalurgyPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.patchouli.data.PatchouliProvider; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class HemalurgyPatchouliGen extends PatchouliProvider { public HemalurgyPatchouliGen(PackOutput packOutput) { - super(packOutput, Hemalurgy.MODID); + super(packOutput, CosmereAPI.COSMERE_MODID); } diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java index 92af540d8..33c7425e0 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 6 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.patchouli; diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java index f186754b3..5d1f5534b 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/patchouli/SandmasteryPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.sandmastery.common.Sandmastery; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class SandmasteryPatchouliGen extends PatchouliProvider { public SandmasteryPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Sandmastery.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java index 9a525b237..0468a492f 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/patchouli/SoulforgeryPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.soulforgery.common.Soulforgery; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class SoulforgeryPatchouliGen extends PatchouliProvider { public SoulforgeryPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Soulforgery.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java index 5d1e97dea..9cdc51508 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/patchouli/SurgebindingPatchouliGen.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.patchouli; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.patchouli.data.PatchouliProvider; import leaf.cosmere.surgebinding.common.Surgebinding; import net.minecraft.data.PackOutput; @@ -15,7 +16,7 @@ public class SurgebindingPatchouliGen extends PatchouliProvider { public SurgebindingPatchouliGen(PackOutput generatorIn) { - super(generatorIn, Surgebinding.MODID); + super(generatorIn, CosmereAPI.COSMERE_MODID); } @Override diff --git a/src/example/resources/data/example/patchouli_books/guide/book.json b/src/example/resources/data/example/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/example/resources/data/example/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/feruchemy/resources/data/feruchemy/patchouli_books/guide/book.json b/src/feruchemy/resources/data/feruchemy/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/feruchemy/resources/data/feruchemy/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/hemalurgy/resources/data/hemalurgy/patchouli_books/guide/book.json b/src/hemalurgy/resources/data/hemalurgy/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/hemalurgy/resources/data/hemalurgy/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/patchouli_books/guide/book.json b/src/main/resources/data/cosmere/patchouli_books/guide/book.json index 9a7d30c89..ab3933414 100644 --- a/src/main/resources/data/cosmere/patchouli_books/guide/book.json +++ b/src/main/resources/data/cosmere/patchouli_books/guide/book.json @@ -9,6 +9,7 @@ "dont_generate_book": true, "custom_book_item": "cosmere:guide", "advancements_tab": "cosmere:main/root", + "use_resource_pack": true, "advancement_namespaces": [ "cosmere" ], diff --git a/src/sandmastery/resources/data/sandmastery/patchouli_books/guide/book.json b/src/sandmastery/resources/data/sandmastery/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/sandmastery/resources/data/sandmastery/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/soulforgery/resources/data/soulforgery/patchouli_books/guide/book.json b/src/soulforgery/resources/data/soulforgery/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/soulforgery/resources/data/soulforgery/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file diff --git a/src/surgebinding/resources/data/surgebinding/patchouli_books/guide/book.json b/src/surgebinding/resources/data/surgebinding/patchouli_books/guide/book.json deleted file mode 100644 index 57eb9a467..000000000 --- a/src/surgebinding/resources/data/surgebinding/patchouli_books/guide/book.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "name": "ignored", - "extend": "cosmere:guide" -} \ No newline at end of file From 1122ffb5ead3f5687f3c2ec0d1f556c1b658410b Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 11:14:31 +1300 Subject: [PATCH 0914/1090] [Port] removing surgebinding biome modifiers for now --- .../SurgebindingDataGenerator.java | 5 - .../SurgebindingTagsProvider.java | 9 ++ .../biome/SurgebindingBiomeModifierGen.java | 104 ------------------ .../biome/SurgebindingBiomeTagsProvider.java | 46 -------- 4 files changed, 9 insertions(+), 155 deletions(-) delete mode 100644 src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeModifierGen.java delete mode 100644 src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index aaba704b8..05112c935 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -5,8 +5,6 @@ package leaf.cosmere.surgebinding; import leaf.cosmere.common.registry.BiomeRegistry; -import leaf.cosmere.surgebinding.biome.SurgebindingBiomeModifierGen; -import leaf.cosmere.surgebinding.biome.SurgebindingBiomeTagsProvider; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.loottables.SurgebindingLootTableGen; import leaf.cosmere.surgebinding.patchouli.SurgebindingPatchouliGen; @@ -44,9 +42,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new SurgebindingRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new SurgebindingPatchouliGen(packOutput)); - - generator.addProvider(true, new SurgebindingBiomeModifierGen(generator)); - generator.addProvider(true, new SurgebindingBiomeTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); } } \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java index 89c500516..4034c51c0 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java @@ -14,6 +14,7 @@ import leaf.cosmere.surgebinding.common.blocks.GemBlock; import leaf.cosmere.surgebinding.common.blocks.GemOreBlock; import leaf.cosmere.surgebinding.common.items.GemstoneItem; +import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; import leaf.cosmere.tag.BaseTagProvider; @@ -53,6 +54,7 @@ protected void registerTags(HolderLookup.Provider registries) addStorageBlocks(); addEntityTypes(); addGameEvents(); + addBiomes(); addContainsMetal(); } @@ -129,6 +131,13 @@ private void addGameEvents() } + private void addBiomes() + { + getBiomeBuilder(CosmereTags.Biomes.SPAWN_ORES).add(CosmereTags.Biomes.IS_ROSHAR); + + getBiomeBuilder(CosmereTags.Biomes.IS_ROSHAR).add(SurgebindingBiomes.ROSHAR_BIOME_KEY); + } + private void addContainsMetal() { diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeModifierGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeModifierGen.java deleted file mode 100644 index 394dce19a..000000000 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeModifierGen.java +++ /dev/null @@ -1,104 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2022 ~ Leaf - */ - -package leaf.cosmere.surgebinding.biome; - - -import com.google.gson.JsonElement; -import com.mojang.serialization.JsonOps; -import leaf.cosmere.api.Constants; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.api.Roshar; -import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.registries.SurgebindingFeatures; -import leaf.cosmere.surgebinding.common.world.GemOreBiomeFeatureModifier; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; -import net.minecraft.core.Registry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataGenerator; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.holdersets.OrHolderSet; -import org.jetbrains.annotations.NotNull; - -import java.io.IOException; -import java.nio.file.Path; -import java.util.Arrays; - -public record SurgebindingBiomeModifierGen(DataGenerator dataGenerator) implements DataProvider -{ - @Override - public @NotNull String getName() - { - return Surgebinding.MODID + " Biome Modifiers"; - } - - private static HolderSet or(HolderSet... holders) - { - return new OrHolderSet<>(Arrays.asList(holders)); - } - - @Override - public void run(@NotNull CachedOutput cachedOutput) - { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.BUILTIN.get()); - final Path outputFolder = this.dataGenerator.getOutputFolder(); - - // Biome Modifiers - final HolderSet.Named roshar = new HolderSet.Named<>( - ops.registry(Registry.BIOME_REGISTRY).get(), - CosmereTags.Biomes.IS_ROSHAR); - - for (Roshar.Gemstone type : Roshar.Gemstone.values()) - { - // Biome Modifiers - GemOreBiomeFeatureModifier oreModifier = new GemOreBiomeFeatureModifier( - roshar, - GenerationStep.Decoration.UNDERGROUND_ORES, - HolderSet.direct(Holder.direct(SurgebindingFeatures.PLACED_GEM_ORE_FEATURES.get(type).get())) - ); - - // Generate BiomeModiers - generate(ops, - oreModifier, - outputFolder, - type.getName() + Constants.RegNameStubs.ORE, - cachedOutput); - - } - } - - public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) - { - final String directory = PackType.SERVER_DATA.getDirectory(); - final ResourceLocation biomeModifiersRegistryID = ForgeRegistries.Keys.BIOME_MODIFIERS.location(); - - final String biomeModifierPathString = String.join("/", directory, Surgebinding.MODID, biomeModifiersRegistryID.getNamespace(), biomeModifiersRegistryID.getPath(), saveName + ".json"); - - BiomeModifier.DIRECT_CODEC.encodeStart(ops, modifier) - .resultOrPartial(msg -> CosmereAPI.logger.error("Failed to encode {}: {}", biomeModifierPathString, msg)) - .ifPresent(json -> - { - try - { - final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); - DataProvider.saveStable(cache, json, biomeModifierPath); - } - catch (IOException e) - { - CosmereAPI.logger.error("Failed to save " + biomeModifierPathString, e); - } - }); - } - -} \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java deleted file mode 100644 index 08be0594f..000000000 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/biome/SurgebindingBiomeTagsProvider.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * File updated ~ 8 - 10 - 2024 ~ Leaf - */ - -package leaf.cosmere.surgebinding.biome; - -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; -import net.minecraft.core.HolderLookup; -import net.minecraft.data.PackOutput; -import net.minecraft.resources.ResourceKey; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.biome.Biome; -import net.minecraftforge.common.data.ExistingFileHelper; - -import java.util.concurrent.CompletableFuture; - -public class SurgebindingBiomeTagsProvider extends net.minecraft.data.tags.BiomeTagsProvider -{ - public SurgebindingBiomeTagsProvider(PackOutput packOutput, CompletableFuture lookupProvider, ExistingFileHelper existingFileHelper) - { - super(packOutput, lookupProvider, Surgebinding.MODID, existingFileHelper); - } - - @Override - protected void addTags(HolderLookup.Provider pProvider) - { - tag(SurgebindingBiomes.ROSHAR_BIOME_KEY, CosmereTags.Biomes.IS_ROSHAR); - } - - @SafeVarargs - private void tag(ResourceKey biome, TagKey... tags) - { - for (TagKey key : tags) - { - tag(key).add(biome); - } - } - - @Override - public String getName() - { - return "Surgebinding Biome Tags"; - } -} \ No newline at end of file From 6818999eefc53c2ec317986936530d1ed860f56e Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 11:23:43 +1300 Subject: [PATCH 0915/1090] [Port] Metal ore registration changes --- src/api/java/leaf/cosmere/api/Constants.java | 4 +- .../java/leaf/cosmere/api/CosmereTags.java | 11 +++++- src/api/java/leaf/cosmere/api/Metals.java | 3 +- .../main/java/leaf/cosmere/RecipeGen.java | 6 +-- .../leaf/cosmere/tag/CosmereTagProvider.java | 22 +++++++---- .../common/eventHandlers/CommonEvents.java | 11 ++---- .../common/registry/BlocksRegistry.java | 39 +++++++++---------- .../common/registry/CreativeTabsRegistry.java | 11 ++---- .../common/resource/ore/OreBlockType.java | 24 ++++++++++++ 9 files changed, 81 insertions(+), 50 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/resource/ore/OreBlockType.java diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index fd157d4de..cba3ec3e2 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -1,5 +1,5 @@ /* - * File updated ~ 2 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.api; @@ -50,7 +50,7 @@ public static class RegNameStubs public static final String BLOCK = "_block"; public static final String RAW = "raw_"; public static final String ORE = "_ore"; - public static final String DEEPSLATE = "deepslate_"; + public static final String DEEPSLATE = "_deepslate"; public static final String BLEND = "_blend"; public static final String METALMIND = "_metalmind"; diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index d09ab3d7e..a1ba7d98a 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -1,10 +1,9 @@ /* - * File updated ~ 11 - 11 - 2023 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.api; -import net.minecraft.core.Registry; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.ItemTags; @@ -57,6 +56,12 @@ public static class Items Function.identity(), type -> forgeItemTag("raw_materials/" + type.getName()))); + public static final Map> METAL_ORE_TAGS = + Arrays.stream(Metals.MetalType.values()) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("ores/" + type.getName()))); + public static final Map> METAL_DUST_TAGS = Arrays.stream(Metals.MetalType.values()) .collect(Collectors.toMap( @@ -170,6 +175,8 @@ public static class Biomes public static final TagKey IS_ROSHAR = create(new ResourceLocation("surgebinding", "is_roshar")); public static final TagKey IS_SHADESMAR = create(new ResourceLocation(CosmereAPI.COSMERE_MODID, "is_shadesmar")); + public static final TagKey SPAWN_ORES = create(new ResourceLocation(CosmereAPI.COSMERE_MODID, "spawn_ores")); + private static TagKey create(ResourceLocation resourceLocation) { return TagKey.create(ForgeRegistries.BIOMES.getRegistryKey(), resourceLocation); diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 21691c0d0..6e0202b08 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -1,5 +1,5 @@ /* - * File updated ~ 1 - 5 - 2024 ~ Leaf + * File updated ~ 8 - 10 - 2024 ~ Leaf */ package leaf.cosmere.api; @@ -604,6 +604,7 @@ public Collection getHemalurgyStealWhitelist() return null; } + @SuppressWarnings("DuplicateBranchesInSwitch") public int getAllomancyBurnTimeSeconds() { //todo convert to config item diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 0977758af..b096c5c70 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere; @@ -73,8 +73,8 @@ protected void addRecipes(Consumer consumer) if (metalType.hasOre()) { - addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(metalType).getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); - addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); + addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(metalType).stone().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); + addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(metalType).deepslate().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_RAW_ORE.get(metalType).get(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); } diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index e2093471a..3507c091e 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tag; @@ -9,14 +9,15 @@ import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; -import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ItemsRegistry; +import leaf.cosmere.common.resource.ore.OreBlockType; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; +import net.minecraft.tags.BiomeTags; import net.minecraft.tags.BlockTags; import net.minecraft.tags.GameEventTags; import net.minecraft.tags.TagKey; @@ -53,6 +54,7 @@ protected void registerTags(HolderLookup.Provider registries) addStorageBlocks(); addEntityTypes(); addGameEvents(); + addBiomes(); addContainsMetal(); } @@ -122,16 +124,15 @@ private void addBlocks() if (metalType.hasOre()) { - final BlockRegistryObject oreBlock = BlocksRegistry.METAL_ORE.get(metalType); - final BlockRegistryObject oreDeepslateBlock = BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType); + final OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(metalType); final TagKey oreBlockTag = CosmereTags.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType); - addToTag(oreBlockTag, oreBlock, oreDeepslateBlock); + addToTag(oreBlockTag, oreBlockType.stone(), oreBlockType.deepslate()); - addToTag(BlockTags.NEEDS_STONE_TOOL, oreBlock); - addToTag(BlockTags.NEEDS_IRON_TOOL, oreDeepslateBlock); + addToTag(BlockTags.NEEDS_STONE_TOOL, oreBlockType.stone()); + addToTag(BlockTags.NEEDS_IRON_TOOL, oreBlockType.deepslate()); - addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, oreBlock, oreDeepslateBlock); + addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, oreBlockType.stone(), oreBlockType.deepslate()); } //put metal type tag on block @@ -157,6 +158,11 @@ private void addGameEvents() addToTag(GameEventTags.WARDEN_CAN_LISTEN, GameEventRegistry.KINETIC_INVESTITURE); } + private void addBiomes() + { + getBiomeBuilder(CosmereTags.Biomes.SPAWN_ORES).add(BiomeTags.IS_OVERWORLD); + } + private void addStorageBlocks() { final IntrinsicCosmereTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/CommonEvents.java b/src/main/java/leaf/cosmere/common/eventHandlers/CommonEvents.java index d1d5bfafe..5e8526a59 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/CommonEvents.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/CommonEvents.java @@ -1,20 +1,17 @@ /* - * File updated ~ 30 - 7 - 2023 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.commands.CosmereCommand; -import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.common.registry.VillagerProfessionRegistry; import net.minecraft.world.entity.npc.VillagerTrades; -import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; @@ -113,11 +110,11 @@ private static void addRawOreTrades(List tradesForLe private static void addOreTrades(List tradesForLevel, Rarity rarity) { - for (BlockRegistryObject item : BlocksRegistry.METAL_ORE.values()) + for (var oreType : BlocksRegistry.METAL_ORE.values()) { - if (item.getBlock().asItem().getRarity(ItemStack.EMPTY) == rarity) + if (oreType.stone().getBlock().asItem().getRarity(ItemStack.EMPTY) == rarity) { - ItemStack itemStackForSale = new ItemStack(item.getBlock().asItem(), 1); + ItemStack itemStackForSale = new ItemStack(oreType.stone().getBlock().asItem(), 1); tradesForLevel.add(makeTrade(itemStackForSale)); } } diff --git a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java index 5b5e5aafe..171d5d160 100644 --- a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java @@ -1,8 +1,5 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf - * Special thank you to SizableShrimp from the Forge Project discord! - * Java isn't my first programming language, so I didn't know you could collect and set up items like this! - * Makes setting up items for metals a breeze~ + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -15,6 +12,7 @@ import leaf.cosmere.common.blocks.MetalworkingTableBlock; import leaf.cosmere.common.registration.impl.BlockDeferredRegister; import leaf.cosmere.common.registration.impl.BlockRegistryObject; +import leaf.cosmere.common.resource.ore.OreBlockType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; @@ -23,6 +21,10 @@ import java.util.function.Function; import java.util.stream.Collectors; +/* Special thank you to SizableShrimp from the Forge Project discord! + * Java isn't my first programming language, so I didn't know you could collect and set up items like this! + * Makes setting up items for metals a breeze~ + */ public class BlocksRegistry { public static final BlockDeferredRegister BLOCKS = new BlockDeferredRegister(Cosmere.MODID); @@ -40,25 +42,22 @@ public class BlocksRegistry metalType.getRarity()))); - public static final Map> METAL_ORE = + public static final Map METAL_ORE = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( Function.identity(), - metalType -> BLOCKS.registerWithRarity( - metalType.getName() + Constants.RegNameStubs.ORE, - () -> new MetalOreBlock(metalType), - metalType.getRarity()))); - - public static final Map> METAL_ORE_DEEPSLATE = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - metalType -> BLOCKS.registerWithRarity( - Constants.RegNameStubs.DEEPSLATE + metalType.getName() + Constants.RegNameStubs.ORE, - () -> new MetalOreBlock(metalType), - metalType.getRarity()))); - + metalType -> + { + final BlockRegistryObject stoneOre = BLOCKS.registerWithRarity( + metalType.getName() + Constants.RegNameStubs.ORE, + () -> new MetalOreBlock(metalType), + metalType.getRarity()); + final BlockRegistryObject deepslateOre = BLOCKS.registerWithRarity( + metalType.getName() + Constants.RegNameStubs.ORE + Constants.RegNameStubs.DEEPSLATE, + () -> new MetalOreBlock(metalType), + metalType.getRarity()); + return new OreBlockType(stoneOre, deepslateOre); + })); } diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index d0bc3ef1b..4c27f9390 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -37,7 +37,7 @@ public class CreativeTabsRegistry CREATIVE_TABS.register( "cosmere.blocks", Component.translatable("itemGroups." + Cosmere.MODID + ".blocks"), - BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue(), + BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue().stone(), builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> @@ -62,11 +62,8 @@ else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) { for (var ore : BlocksRegistry.METAL_ORE.values()) { - CreativeTabDeferredRegister.addToDisplay(event, ore); - } - for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) - { - CreativeTabDeferredRegister.addToDisplay(event, ore); + CreativeTabDeferredRegister.addToDisplay(event, ore.stone()); + CreativeTabDeferredRegister.addToDisplay(event, ore.deepslate()); } } else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) diff --git a/src/main/java/leaf/cosmere/common/resource/ore/OreBlockType.java b/src/main/java/leaf/cosmere/common/resource/ore/OreBlockType.java new file mode 100644 index 000000000..f5cda56b9 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/resource/ore/OreBlockType.java @@ -0,0 +1,24 @@ +/* + * File updated ~ 9 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.resource.ore; + +import leaf.cosmere.common.blocks.MetalOreBlock; +import leaf.cosmere.common.registration.impl.BlockRegistryObject; +import net.minecraft.world.item.BlockItem; + +public record OreBlockType(BlockRegistryObject stone, + BlockRegistryObject deepslate) +{ + + public MetalOreBlock stoneBlock() + { + return stone.getBlock(); + } + + public MetalOreBlock deepslateBlock() + { + return deepslate.getBlock(); + } +} \ No newline at end of file From e0101559735fc27e814177770e660afaf4a4d2ff Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 14:15:45 +1300 Subject: [PATCH 0916/1090] [Port] Remove oregen from data generation --- src/api/java/leaf/cosmere/api/Constants.java | 2 +- .../leaf/cosmere/CosmereDataGenerator.java | 4 +- .../leaf/cosmere/biome/BiomeModifierGen.java | 105 ------------------ .../surgebinding/SurgebindingRecipeGen.java | 7 +- .../SurgebindingTagsProvider.java | 11 +- .../common/registry/BlocksRegistry.java | 2 +- .../common/registry/FeatureRegistry.java | 9 +- .../SurgebindingBiomeModifiers.java | 6 +- .../common/registries/SurgebindingBlocks.java | 6 +- .../registries/SurgebindingFeatures.java | 12 +- .../world/GemOreBiomeFeatureModifier.java | 60 ---------- 11 files changed, 23 insertions(+), 201 deletions(-) delete mode 100644 src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java delete mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index cba3ec3e2..87cf381a8 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -50,7 +50,7 @@ public static class RegNameStubs public static final String BLOCK = "_block"; public static final String RAW = "raw_"; public static final String ORE = "_ore"; - public static final String DEEPSLATE = "_deepslate"; + public static final String DEEPSLATE = "deepslate_"; public static final String BLEND = "_blend"; public static final String METALMIND = "_metalmind"; diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index d7cf24a48..f3e931218 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -1,10 +1,9 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere; -import leaf.cosmere.biome.BiomeModifierGen; import leaf.cosmere.biome.BiomeTagsProvider; import leaf.cosmere.blocks.BlockModelsGen; import leaf.cosmere.common.Cosmere; @@ -46,7 +45,6 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new PatchouliGen(packOutput)); - generator.addProvider(true, new BiomeModifierGen(packOutput)); generator.addProvider(true, new BiomeTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new CosmereTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); diff --git a/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java b/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java deleted file mode 100644 index 3250059a3..000000000 --- a/src/datagen/main/java/leaf/cosmere/biome/BiomeModifierGen.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * File updated ~ 7 - 8 - 2024 ~ Leaf - */ - -package leaf.cosmere.biome; - - -import com.google.gson.JsonElement; -import com.mojang.serialization.JsonOps; -import leaf.cosmere.api.Constants; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.CosmereTags; -import leaf.cosmere.api.Metals; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.registry.FeatureRegistry; -import leaf.cosmere.common.world.MetalOreBiomeFeatureModifier; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; -import net.minecraft.core.RegistryAccess; -import net.minecraft.core.registries.Registries; -import net.minecraft.data.CachedOutput; -import net.minecraft.data.DataProvider; -import net.minecraft.resources.RegistryOps; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.packs.PackType; -import net.minecraft.tags.BiomeTags; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.holdersets.OrHolderSet; -import org.jetbrains.annotations.NotNull; - -import java.nio.file.Path; -import java.util.Arrays; -import java.util.concurrent.CompletableFuture; - -public record BiomeModifierGen(net.minecraft.data.PackOutput dataGenerator) implements DataProvider -{ - @Override - public @NotNull String getName() - { - return Cosmere.MODID + " Biome Modifiers"; - } - - private static HolderSet or(HolderSet... holders) - { - return new OrHolderSet<>(Arrays.asList(holders)); - } - - @Override - public CompletableFuture run(@NotNull CachedOutput cachedOutput) - { - RegistryOps ops = RegistryOps.create(JsonOps.INSTANCE, RegistryAccess.BUILTIN.get()); - final Path outputFolder = this.dataGenerator.getOutputFolder(); - - // Biome Modifiers - final HolderSet.Named overworld = new HolderSet.Named<>( - ops.registry(Registries.BIOME).get(), - BiomeTags.IS_OVERWORLD); - final HolderSet.Named roshar = new HolderSet.Named<>( - ops.registry(Registries.BIOME).get(), - CosmereTags.Biomes.IS_ROSHAR); - - for (Metals.MetalType type : Metals.MetalType.values()) - { - if (!type.hasOre()) - { - continue; - } - - MetalOreBiomeFeatureModifier oreModifier = new MetalOreBiomeFeatureModifier( - or(overworld, roshar), - GenerationStep.Decoration.UNDERGROUND_ORES, - HolderSet.direct(Holder.direct(FeatureRegistry.PLACED_METAL_ORE_FEATURES.get(type).get())) - ); - - // Generate BiomeModiers - generate(ops, - oreModifier, - outputFolder, - type.getName() + Constants.RegNameStubs.ORE, - cachedOutput); - } - - return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); - } - - public static void generate(RegistryOps ops, BiomeModifier modifier, Path outputFolder, String saveName, CachedOutput cache) - { - final String directory = PackType.SERVER_DATA.getDirectory(); - final ResourceLocation biomeModifiersRegistryID = ForgeRegistries.Keys.BIOME_MODIFIERS.location(); - - final String biomeModifierPathString = String.join("/", directory, Cosmere.MODID, biomeModifiersRegistryID.getNamespace(), biomeModifiersRegistryID.getPath(), saveName + ".json"); - - BiomeModifier.DIRECT_CODEC.encodeStart(ops, modifier) - .resultOrPartial(msg -> CosmereAPI.logger.error("Failed to encode {}: {}", biomeModifierPathString, msg)) - .ifPresent(json -> - { - final Path biomeModifierPath = outputFolder.resolve(biomeModifierPathString); - DataProvider.saveStable(cache, json, biomeModifierPath); - }); - } - -} \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java index 9680c46f8..fca6c0145 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -39,8 +39,9 @@ protected void addRecipes(Consumer consumer) compressRecipe(SurgebindingBlocks.GEM_BLOCKS.get(gemstone).getBlock(), CosmereTags.Items.GEM_TAGS.get(gemstone), SurgebindingItems.GEMSTONE_BROAMS.get(gemstone)).save(consumer); decompressRecipe(consumer, SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get(), SurgebindingBlocks.GEM_BLOCKS.get(gemstone), gemstone.getName() + "_block_deconstruct"); - addOreSmeltingRecipes(consumer, SurgebindingBlocks.GEM_ORE.get(gemstone).getBlock(), SurgebindingItems.GEMSTONE_MARKS.get(gemstone).get(), 1.0f, 1000); - addOreSmeltingRecipes(consumer, SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(gemstone).getBlock(), SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get(), 1.0f, 1000); + //ores no longer obtained from blocks? + //addOreSmeltingRecipes(consumer, SurgebindingBlocks.GEM_ORE.get(gemstone).getBlock(), SurgebindingItems.GEMSTONE_MARKS.get(gemstone).get(), 1.0f, 1000); + //addOreSmeltingRecipes(consumer, SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(gemstone).getBlock(), SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get(), 1.0f, 1000); } } } diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java index 4034c51c0..ca5c296cd 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -12,7 +12,6 @@ import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.blocks.GemBlock; -import leaf.cosmere.surgebinding.common.blocks.GemOreBlock; import leaf.cosmere.surgebinding.common.items.GemstoneItem; import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; @@ -79,10 +78,10 @@ private void addBlocks() for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) { final BlockRegistryObject gemBlock = SurgebindingBlocks.GEM_BLOCKS.get(gemstone); - final BlockRegistryObject gemOre = SurgebindingBlocks.GEM_ORE.get(gemstone); - final BlockRegistryObject gemOreDeepslate = SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(gemstone); + //final BlockRegistryObject gemOre = SurgebindingBlocks.GEM_ORE.get(gemstone); + //final BlockRegistryObject gemOreDeepslate = SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(gemstone); - var list = ImmutableList.of(gemBlock, gemOre, gemOreDeepslate); + var list = ImmutableList.of(gemBlock);//, gemOre, gemOreDeepslate); for (var block : list) { @@ -92,7 +91,7 @@ private void addBlocks() } addToTag(BlockTags.BEACON_BASE_BLOCKS, gemBlock); - addToTag(CosmereTags.Blocks.GEM_ORE_BLOCK_TAGS.get(gemstone), gemOre, gemOreDeepslate); + //addToTag(CosmereTags.Blocks.GEM_ORE_BLOCK_TAGS.get(gemstone), gemOre, gemOreDeepslate); } for (BlockRegistryObject plantBlock : SurgebindingBlocks.PLANT_BLOCKS) diff --git a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java index 171d5d160..233327de3 100644 --- a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java @@ -54,7 +54,7 @@ public class BlocksRegistry () -> new MetalOreBlock(metalType), metalType.getRarity()); final BlockRegistryObject deepslateOre = BLOCKS.registerWithRarity( - metalType.getName() + Constants.RegNameStubs.ORE + Constants.RegNameStubs.DEEPSLATE, + Constants.RegNameStubs.DEEPSLATE + metalType.getName() + Constants.RegNameStubs.ORE, () -> new MetalOreBlock(metalType), metalType.getRarity()); return new OreBlockType(stoneOre, deepslateOre); diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index 39bf285fe..ab926dd33 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -1,16 +1,13 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; -import com.google.common.collect.ImmutableList; -import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; import net.minecraft.tags.BlockTags; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.placement.*; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; @@ -59,7 +56,7 @@ public class FeatureRegistry ) ) )); -*/ + private static List makeTarget(Metals.MetalType metalType) { @@ -73,7 +70,7 @@ private static List makeTarget(Metals.MetalTy BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) ); } - +*/ // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomeModifiers.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomeModifiers.java index e700271eb..b2fce58e1 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomeModifiers.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBiomeModifiers.java @@ -1,19 +1,17 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; import leaf.cosmere.common.registration.impl.BiomeModifierSerializerDeferredRegister; -import leaf.cosmere.common.registration.impl.BiomeModifierSerializerRegistryObject; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.world.GemOreBiomeFeatureModifier; public class SurgebindingBiomeModifiers { public static final BiomeModifierSerializerDeferredRegister BIOME_MODIFIER_SERIALIZERS = new BiomeModifierSerializerDeferredRegister(Surgebinding.MODID); - public static final BiomeModifierSerializerRegistryObject GEM_ORE_MODIFIER = BIOME_MODIFIER_SERIALIZERS.register("ores", GemOreBiomeFeatureModifier::makeCodec); + //public static final BiomeModifierSerializerRegistryObject GEM_ORE_MODIFIER = BIOME_MODIFIER_SERIALIZERS.register("ores", GemOreBiomeFeatureModifier::makeCodec); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java index 049bfa66e..7a87f6805 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -32,7 +32,7 @@ public class SurgebindingBlocks () -> new GemBlock(gemstone), Rarity.UNCOMMON))); - public static final Map> GEM_ORE = +/* public static final Map> GEM_ORE = Arrays.stream(Roshar.Gemstone.values()) .collect(Collectors.toMap( Function.identity(), @@ -48,7 +48,7 @@ public class SurgebindingBlocks gemstone -> BLOCKS.registerWithRarity( Constants.RegNameStubs.DEEPSLATE + gemstone.getName() + Constants.RegNameStubs.ORE, () -> new GemOreBlock(gemstone), - Rarity.UNCOMMON))); + Rarity.UNCOMMON)));*/ public static final BlockRegistryObject LAVIS_POLYP_BLOCK = BLOCKS.register("lavis_polyp", LavisPolypBlock::new); public static final BlockRegistryObject PRICKLETAC_BLOCK = BLOCKS.register("prickletac", PrickletacBlock::new); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java index f7614a455..a0325e290 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java @@ -1,18 +1,12 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; -import com.google.common.collect.ImmutableList; -import leaf.cosmere.api.Roshar; import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import leaf.cosmere.common.registry.FeatureRegistry; import leaf.cosmere.surgebinding.common.Surgebinding; -import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; - -import java.util.List; public class SurgebindingFeatures { @@ -49,7 +43,7 @@ public class SurgebindingFeatures ) ) ) - ));*/ + )); private static List makeTarget(Roshar.Gemstone type) @@ -63,5 +57,5 @@ private static List makeTarget(Roshar.Gemston SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(type).getBlock().defaultBlockState()) ); } - +*/ } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java deleted file mode 100644 index 2935eaf73..000000000 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/world/GemOreBiomeFeatureModifier.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * File updated ~ 10 - 8 - 2024 ~ Leaf - */ - -package leaf.cosmere.surgebinding.common.world; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomeModifiers; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.common.world.ModifiableBiomeInfo; - -public record GemOreBiomeFeatureModifier(HolderSet biomes, GenerationStep.Decoration generationStep, - HolderSet features) implements BiomeModifier -{ - - @Override - public Codec codec() - { - return SurgebindingBiomeModifiers.GEM_ORE_MODIFIER.get(); - } - - public static Codec makeCodec() - { - return RecordCodecBuilder.create(builder -> builder.group( - Biome.LIST_CODEC.fieldOf("biomes").forGetter(GemOreBiomeFeatureModifier::biomes), - Codec.STRING.comapFlatMap(GemOreBiomeFeatureModifier::generationStageFromString, GenerationStep.Decoration::toString).fieldOf("generation_stage").forGetter(GemOreBiomeFeatureModifier::generationStep), - PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(GemOreBiomeFeatureModifier::features) - ).apply(builder, GemOreBiomeFeatureModifier::new)); - } - - @Override - public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) - { - if (phase == Phase.ADD && this.biomes.contains(biome)) - { - BiomeGenerationSettingsBuilder generation = builder.getGenerationSettings(); - this.features.forEach(holder -> generation.addFeature(this.generationStep, holder)); - } - } - - private static DataResult generationStageFromString(String name) - { - try - { - return DataResult.success(GenerationStep.Decoration.valueOf(name)); - } - catch (Exception e) - { - return DataResult.error(() -> "Not a decoration stage: " + name); - } - } -} \ No newline at end of file From 78a90628d22d5eeadd4ba5a6744c18322e94879b Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 14:15:59 +1300 Subject: [PATCH 0917/1090] [Port] Fix compile errors in datagen --- .../allomancy/AllomancyEngLangGen.java | 7 ++++--- .../leaf/cosmere/aondor/AonDorEngLangGen.java | 13 ++++++++++-- .../leaf/cosmere/tools/ToolsEngLangGen.java | 11 +++++++++- .../feruchemy/FeruchemyEngLangGen.java | 11 +++++++++- .../hemalurgy/HemalurgyEngLangGen.java | 11 +++++++++- .../main/java/leaf/cosmere/EngLangGen.java | 12 +++++++++-- .../leaf/cosmere/patchouli/PatchouliGen.java | 2 +- .../patchouli/data/PatchouliProvider.java | 21 ++++++++----------- .../surgebinding/SurgebindingEngLangGen.java | 12 ++++++++++- 9 files changed, 76 insertions(+), 24 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index 036758e02..89fe153ad 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -50,7 +50,7 @@ protected void addTranslations() addAttributes(); addPatchouli(); addTooltips(); - addItemGroups(); + addCreativeTabs(); addDamageSources(); addMobEffects(); addCurioIdentifiers(); @@ -174,9 +174,10 @@ private void addTooltips() add("tooltip.cosmere.metals.contained", "Contained Metals:"); } - private void addItemGroups() + private void addCreativeTabs() { //ItemGroups/Tabs + add("itemGroup.allomancy.items", "Allomancy Items"); } private void addDamageSources() diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java index 2da4be9a9..1325b263e 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -31,6 +31,7 @@ protected void addTranslations() addManifestations(); addAttributes(); addPatchouli(); + addCreativeTabs(); addTooltips(); addItemGroups(); addDamageSources(); @@ -86,6 +87,14 @@ private void addPatchouli() } + private void addCreativeTabs() + { + //ItemGroups/Tabs + // "itemGroup.aondor.items": "Aon Dor Items", + add("itemGroup.aondor.items", "Aon Dor Items"); + + } + private void addTooltips() { @@ -94,7 +103,7 @@ private void addTooltips() private void addItemGroups() { //ItemGroups/Tabs - //add("itemGroup." + AonDorItemGroups.GROUP.getRecipeFolderName(), "AonDor Group"); + //todo aondor item group } private void addDamageSources() diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java index 4c0796a4b..0dfbde16d 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -31,6 +31,7 @@ protected void addTranslations() addManifestations(); addAttributes(); addPatchouli(); + addCreativeTabs(); addTooltips(); addDamageSources(); addMobEffects(); @@ -85,6 +86,14 @@ private void addPatchouli() } + private void addCreativeTabs() + { + //ItemGroups/Tabs + //"itemGroup.cosmeretools.tools": "Cosmere tools" + add("itemGroup.cosmeretools.tools", "Cosmere Tools"); + + } + private void addTooltips() { diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index 25c432ea9..32c095788 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -46,6 +46,7 @@ protected void addTranslations() addManifestations(); addAttributes(); addPatchouli(); + addCreativeTabs(); addTooltips(); addDamageSources(); addMobEffects(); @@ -180,6 +181,14 @@ private void addPatchouli() } } + private void addCreativeTabs() + { + //ItemGroups/Tabs + // "itemGroup.feruchemy.metalminds": "Feruchemical Metalminds", + add("itemGroup.feruchemy.metalminds", "Feruchemical Metalminds"); + + } + private void addTooltips() { //Tooltips diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 199f41143..1b07acf00 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -36,6 +36,7 @@ protected void addTranslations() addManifestations(); addAttributes(); addPatchouli(); + addCreativeTabs(); addTooltips(); addDamageSources(); addMobEffects(); @@ -104,6 +105,14 @@ private void addPatchouli() } } + private void addCreativeTabs() + { + //ItemGroups/Tabs + // "itemGroup.hemalurgy.spikes": "Hemalurgic Spikes", + add("itemGroup.hemalurgy.spikes", "Hemalurgic Spikes"); + + } + private void addTooltips() { add("tooltip.cosmere.attribute.iron", "%s%s Attack Damage"); diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index e5eb76e7f..891d109e5 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere; @@ -46,7 +46,7 @@ protected void addTranslations() addCommands(); addKeybindings(); addStats(); - + addCreativeTabs(); } @@ -142,6 +142,14 @@ private void addPatchouli() add("cosmere.landing", "The Cosmere is filled with many fantastical things. I have left my findings written within this book."); } + private void addCreativeTabs() + { + //ItemGroups/Tabs + //CreativeTabsRegistry.ITEMS.get().getDisplayName() + add("itemGroup.cosmere.items", "Cosmere Items"); + add("itemGroup.cosmere.blocks", "Cosmere Blocks"); + } + private void addTooltips() { //Tooltips diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java index 33c7425e0..43a29ddba 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliGen.java @@ -43,7 +43,7 @@ protected void collectInfoForBook() */ public String getName() { - return "PatchouliGeneration"; + return "Cosmere PatchouliGeneration"; } } diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java index 40fdb5e95..b2facde12 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/PatchouliProvider.java @@ -44,11 +44,13 @@ public PatchouliProvider(PackOutput packOutput, String modid) */ public CompletableFuture run(@NotNull CachedOutput cache) { + List> futures = new ArrayList<>(); + Path path = this.packOutput.getOutputFolder(); Set entryIDs = Sets.newHashSet(); - Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs); - Consumer categoryConsumer = getCategoryConsumer(cache, path, entryIDs); + Consumer entryConsumer = getEntryConsumer(cache, path, entryIDs, futures); + Consumer categoryConsumer = getCategoryConsumer(cache, path, entryIDs, futures); //adds to our categories and entries fields. collectInfoForBook(); @@ -63,12 +65,12 @@ public CompletableFuture run(@NotNull CachedOutput cache) entryConsumer.accept(entryToConsume); } - return null; + return CompletableFuture.allOf(futures.toArray(CompletableFuture[]::new)); } protected abstract void collectInfoForBook(); - private Consumer getCategoryConsumer(@NotNull CachedOutput cache, Path path, Set categoryIDs) + private Consumer getCategoryConsumer(@NotNull CachedOutput cache, Path path, Set categoryIDs, List> futures) { return category -> { @@ -79,12 +81,12 @@ private Consumer getCategoryConsumer(@NotNull CachedOutput c else { Path path1 = getCategoryPath(path, category); - DataProvider.saveStable(cache, category.serialize(), path1); + futures.add(DataProvider.saveStable(cache, category.serialize(), path1)); } }; } - private Consumer getEntryConsumer(@NotNull CachedOutput cache, Path path, Set entryIDs) + private Consumer getEntryConsumer(@NotNull CachedOutput cache, Path path, Set entryIDs, List> futures) { return entry -> { @@ -95,9 +97,7 @@ private Consumer getEntryConsumer(@NotNull CachedOutput cache, else { Path path1 = getEntryPath(path, entry); - - DataProvider.saveStable(cache, entry.serialize(modid), path1); - + futures.add(DataProvider.saveStable(cache, entry.serialize(modid), path1)); } }; } @@ -124,6 +124,3 @@ private Path getEntryPath(Path pathIn, BookStuff.Entry entry) } } - - - diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java index d5cf02e0f..a995893ed 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 9 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -42,6 +42,7 @@ protected void addTranslations() addManifestations(); addAttributes(); addPatchouli(); + addCreativeTabs(); addTooltips(); addDamageSources(); addMobEffects(); @@ -136,6 +137,15 @@ private void addPatchouli() //todo surgebinding patchouli localisation } + + private void addCreativeTabs() + { + //ItemGroups/Tabs + // "itemGroup.surgebinding.items": "Surgebinding Items", + add("itemGroup.surgebinding.items", "Surgebinding Items"); + + } + private void addTooltips() { From 4adfdeef7944f834d7a22a2908de5549255f95ad Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 9 Oct 2024 14:16:34 +1300 Subject: [PATCH 0918/1090] [All] run data --- .../2326a4aabce608f922c63b97aebd9504cbbeab88 | 19 - .../33e127e6612844751945f5810028d222595a199c | 2 +- .../3b2a435655541c92d690318b57013336949ed348 | 42 +- .../3b6ce84233946f4e21ac7e6988b2016b6258d63f | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 12 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../assets/allomancy/lang/en_us.json | 1 + .../allomancy/allomantic_aluminum.json | 2 +- .../allomancy/allomantic_bendalloy.json | 2 +- .../entries/allomancy/allomantic_brass.json | 6 +- .../entries/allomancy/allomantic_cadmium.json | 2 +- .../allomancy/allomantic_chromium.json | 2 +- .../entries/allomancy/allomantic_iron.json | 4 + .../allomancy/allomantic_nicrosil.json | 2 +- .../entries/allomancy/allomantic_pewter.json | 2 +- .../entries/allomancy/allomantic_steel.json | 9 +- .../entries/allomancy/allomantic_zinc.json | 6 +- .../advancements/allomancy/aluminum.json | 38 - .../advancements/allomancy/atium.json | 38 - .../advancements/allomancy/bendalloy.json | 38 - .../advancements/allomancy/brass.json | 38 - .../advancements/allomancy/bronze.json | 38 - .../advancements/allomancy/cadmium.json | 38 - .../advancements/allomancy/chromium.json | 38 - .../advancements/allomancy/copper.json | 38 - .../advancements/allomancy/duralumin.json | 38 - .../advancements/allomancy/electrum.json | 38 - .../advancements/allomancy/gold.json | 38 - .../advancements/allomancy/iron.json | 38 - .../advancements/allomancy/nicrosil.json | 38 - .../advancements/allomancy/pewter.json | 38 - .../advancements/allomancy/root.json | 33 - .../advancements/allomancy/steel.json | 38 - .../allomancy/advancements/allomancy/tin.json | 38 - .../advancements/allomancy/zinc.json | 38 - .../{cosmere.items => tools}/coin_pouch.json | 3 +- .../{cosmere.items => tools}/metal_vial.json | 3 +- .../data/allomancy/recipes/coin_pouch.json | 1 + .../data/allomancy/recipes/metal_vial.json | 4 +- .../data/allomancy/recipes/vial_mixing.json | 3 +- .../1348f526bbf5dfe88b837c04b91be2f71c59740d | 1 - .../457b0b1d8ad1d3ce474cf329ea36fc02f640a6c9 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../68a8b808418fcd4c550b2bbef53fb17032dfe059 | 6 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../a2da15235c39ab67a641752ec6d98b2ae4fd48a5 | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 3 +- .../aondor/assets/aondor/lang/en_us.json | 3 + .../3e2d1f5e57812959258e594888869e91a5496a56 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../db13d68236ce24768410ad17bbad099c91fec9a8 | 10 +- .../e130b7356d169b5364790e64711bf69a7f5bef98 | 1 - .../e932775582821fe5f079bfff77f1b9c34a22bca1 | 2 +- .../0941a75e8dd932c4ad270b26681f58beacb09c53 | 2 +- .../1229fb9899534b7b5cb6c13eb36250e23af7df0a | 1 - .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../8d71f8cd3fe3fe64399f7174312823c4481b46dc | 6 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../f773dd59223378bbd8a7f8ae49aec06c9566c4e2 | 2 +- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 3 +- .../39b5f26b3fbd3a088f493470df207f8ad9de8264 | 1 + .../3b2a435655541c92d690318b57013336949ed348 | 1 - .../44623903f0365d3c95d129c2cab3e32a7eda1dc7 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 40 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 40 - .../6d6f5723d9e7fbafeec1b0bb4cc9fc2c015e9cff | 2 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 710 +++++++++--------- .../a2c6b3dcb5eefab370df8fe38d91af50718936d2 | 9 - .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../aluminum_block.json | 3 +- .../aluminum_ingot.json | 3 +- .../atium_block.json | 3 +- .../atium_ingot.json | 3 +- .../bendalloy_block.json | 3 +- .../bendalloy_ingot.json | 3 +- .../brass_block.json | 3 +- .../brass_ingot.json | 3 +- .../bronze_block.json | 3 +- .../bronze_ingot.json | 3 +- .../cadmium_block.json | 3 +- .../cadmium_ingot.json | 3 +- .../chromium_block.json | 3 +- .../chromium_ingot.json | 3 +- .../copper_block.json | 3 +- .../copper_ingot.json | 3 +- .../duralumin_block.json | 3 +- .../duralumin_ingot.json | 3 +- .../electrum_block.json | 3 +- .../electrum_ingot.json | 3 +- .../harmonium_block.json | 3 +- .../harmonium_ingot.json | 3 +- .../lead_block.json | 3 +- .../lead_ingot.json | 3 +- .../lerasatium_block.json | 3 +- .../lerasatium_ingot.json | 3 +- .../lerasium_block.json | 3 +- .../lerasium_ingot.json | 3 +- .../malatium_block.json | 3 +- .../malatium_ingot.json | 3 +- .../metalworking_table.json | 3 +- .../nickel_block.json | 3 +- .../nickel_ingot.json | 3 +- .../nicrosil_block.json | 3 +- .../nicrosil_ingot.json | 3 +- .../pewter_block.json | 3 +- .../pewter_ingot.json | 3 +- .../silver_block.json | 3 +- .../silver_ingot.json | 3 +- .../steel_block.json | 3 +- .../steel_ingot.json | 3 +- .../tin_block.json | 3 +- .../tin_ingot.json | 3 +- .../zinc_block.json | 3 +- .../zinc_ingot.json | 3 +- .../alloying/dust_blend/bendalloy.json | 3 +- .../alloying/dust_blend/brass.json | 3 +- .../alloying/dust_blend/bronze.json | 3 +- .../alloying/dust_blend/duralumin.json | 3 +- .../alloying/dust_blend/electrum.json | 3 +- .../alloying/dust_blend/nicrosil.json | 3 +- .../alloying/dust_blend/pewter.json | 3 +- .../alloying/dust_blend/steel.json | 3 +- .../alloying/ingot_blend/bendalloy.json | 3 +- .../alloying/ingot_blend/brass.json | 3 +- .../alloying/ingot_blend/bronze.json | 3 +- .../alloying/ingot_blend/duralumin.json | 3 +- .../alloying/ingot_blend/electrum.json | 3 +- .../alloying/ingot_blend/nicrosil.json | 3 +- .../alloying/ingot_blend/pewter.json | 3 +- .../alloying/ingot_blend/steel.json | 3 +- .../alloying/raw_blend/bendalloy.json | 3 +- .../alloying/raw_blend/brass.json | 3 +- .../alloying/raw_blend/bronze.json | 3 +- .../alloying/raw_blend/duralumin.json | 3 +- .../alloying/raw_blend/electrum.json | 3 +- .../alloying/raw_blend/nicrosil.json | 3 +- .../alloying/raw_blend/pewter.json | 3 +- .../alloying/raw_blend/steel.json | 3 +- ...inum_ingot_from_blasting_aluminum_ore.json | 3 +- ..._from_blasting_deepslate_aluminum_ore.json | 3 +- ..._ingot_from_blasting_raw_aluminum_ore.json | 3 +- ...inum_ingot_from_smelting_aluminum_ore.json | 3 +- ..._from_smelting_deepslate_aluminum_ore.json | 3 +- ..._ingot_from_smelting_raw_aluminum_ore.json | 3 +- ...y_ingot_from_blasting_bendalloy_blend.json | 3 +- ...y_ingot_from_smelting_bendalloy_blend.json | 3 +- ...brass_ingot_from_blasting_brass_blend.json | 3 +- ...brass_ingot_from_smelting_brass_blend.json | 3 +- ...onze_ingot_from_blasting_bronze_blend.json | 3 +- ...onze_ingot_from_smelting_bronze_blend.json | 3 +- ...dmium_ingot_from_blasting_cadmium_ore.json | 3 +- ...t_from_blasting_deepslate_cadmium_ore.json | 3 +- ...m_ingot_from_blasting_raw_cadmium_ore.json | 3 +- ...dmium_ingot_from_smelting_cadmium_ore.json | 3 +- ...t_from_smelting_deepslate_cadmium_ore.json | 3 +- ...m_ingot_from_smelting_raw_cadmium_ore.json | 3 +- ...mium_ingot_from_blasting_chromium_ore.json | 3 +- ..._from_blasting_deepslate_chromium_ore.json | 3 +- ..._ingot_from_blasting_raw_chromium_ore.json | 3 +- ...mium_ingot_from_smelting_chromium_ore.json | 3 +- ..._from_smelting_deepslate_chromium_ore.json | 3 +- ..._ingot_from_smelting_raw_chromium_ore.json | 3 +- .../aluminum_block_deconstruct.json | 3 +- .../aluminum_item_deconstruct.json | 3 +- .../conversions/atium_block_deconstruct.json | 3 +- .../conversions/atium_item_deconstruct.json | 3 +- .../bendalloy_block_deconstruct.json | 3 +- .../bendalloy_item_deconstruct.json | 3 +- .../conversions/brass_block_deconstruct.json | 3 +- .../conversions/brass_item_deconstruct.json | 3 +- .../conversions/bronze_block_deconstruct.json | 3 +- .../conversions/bronze_item_deconstruct.json | 3 +- .../cadmium_block_deconstruct.json | 3 +- .../conversions/cadmium_item_deconstruct.json | 3 +- .../chromium_block_deconstruct.json | 3 +- .../chromium_item_deconstruct.json | 3 +- .../conversions/copper_block_deconstruct.json | 3 +- .../conversions/copper_item_deconstruct.json | 3 +- .../duralumin_block_deconstruct.json | 3 +- .../duralumin_item_deconstruct.json | 3 +- .../electrum_block_deconstruct.json | 3 +- .../electrum_item_deconstruct.json | 3 +- .../harmonium_block_deconstruct.json | 3 +- .../harmonium_item_deconstruct.json | 3 +- .../conversions/lead_block_deconstruct.json | 3 +- .../conversions/lead_item_deconstruct.json | 3 +- .../lerasatium_block_deconstruct.json | 3 +- .../lerasatium_item_deconstruct.json | 3 +- .../lerasium_block_deconstruct.json | 3 +- .../lerasium_item_deconstruct.json | 3 +- .../malatium_block_deconstruct.json | 3 +- .../malatium_item_deconstruct.json | 3 +- .../conversions/nickel_block_deconstruct.json | 3 +- .../conversions/nickel_item_deconstruct.json | 3 +- .../nicrosil_block_deconstruct.json | 3 +- .../nicrosil_item_deconstruct.json | 3 +- .../conversions/pewter_block_deconstruct.json | 3 +- .../conversions/pewter_item_deconstruct.json | 3 +- .../conversions/silver_block_deconstruct.json | 3 +- .../conversions/silver_item_deconstruct.json | 3 +- .../conversions/steel_block_deconstruct.json | 3 +- .../conversions/steel_item_deconstruct.json | 3 +- .../conversions/tin_block_deconstruct.json | 3 +- .../conversions/tin_item_deconstruct.json | 3 +- .../conversions/zinc_block_deconstruct.json | 3 +- .../conversions/zinc_item_deconstruct.json | 3 +- ...n_ingot_from_blasting_duralumin_blend.json | 3 +- ...n_ingot_from_smelting_duralumin_blend.json | 3 +- ...um_ingot_from_blasting_electrum_blend.json | 3 +- ...um_ingot_from_smelting_electrum_blend.json | 3 +- ...ngot_from_blasting_deepslate_lead_ore.json | 3 +- .../lead_ingot_from_blasting_lead_ore.json | 3 +- ...lead_ingot_from_blasting_raw_lead_ore.json | 3 +- ...ngot_from_smelting_deepslate_lead_ore.json | 3 +- .../lead_ingot_from_smelting_lead_ore.json | 3 +- ...lead_ingot_from_smelting_raw_lead_ore.json | 3 +- ...ot_from_blasting_deepslate_nickel_ore.json | 3 +- ...nickel_ingot_from_blasting_nickel_ore.json | 3 +- ...el_ingot_from_blasting_raw_nickel_ore.json | 3 +- ...ot_from_smelting_deepslate_nickel_ore.json | 3 +- ...nickel_ingot_from_smelting_nickel_ore.json | 3 +- ...el_ingot_from_smelting_raw_nickel_ore.json | 3 +- ...il_ingot_from_blasting_nicrosil_blend.json | 3 +- ...il_ingot_from_smelting_nicrosil_blend.json | 3 +- ...wter_ingot_from_blasting_pewter_blend.json | 3 +- ...wter_ingot_from_smelting_pewter_blend.json | 3 +- ...ot_from_blasting_deepslate_silver_ore.json | 3 +- ...er_ingot_from_blasting_raw_silver_ore.json | 3 +- ...silver_ingot_from_blasting_silver_ore.json | 3 +- ...ot_from_smelting_deepslate_silver_ore.json | 3 +- ...er_ingot_from_smelting_raw_silver_ore.json | 3 +- ...silver_ingot_from_smelting_silver_ore.json | 3 +- ...steel_ingot_from_blasting_steel_blend.json | 3 +- ...steel_ingot_from_smelting_steel_blend.json | 3 +- ...ingot_from_blasting_deepslate_tin_ore.json | 3 +- .../tin_ingot_from_blasting_raw_tin_ore.json | 3 +- .../tin_ingot_from_blasting_tin_ore.json | 3 +- ...ingot_from_smelting_deepslate_tin_ore.json | 3 +- .../tin_ingot_from_smelting_raw_tin_ore.json | 3 +- .../tin_ingot_from_smelting_tin_ore.json | 3 +- ...ngot_from_blasting_deepslate_zinc_ore.json | 3 +- ...zinc_ingot_from_blasting_raw_zinc_ore.json | 3 +- .../zinc_ingot_from_blasting_zinc_ore.json | 3 +- ...ngot_from_smelting_deepslate_zinc_ore.json | 3 +- ...zinc_ingot_from_smelting_raw_zinc_ore.json | 3 +- .../zinc_ingot_from_smelting_zinc_ore.json | 3 +- .../forge/biome_modifier/aluminum_ore.json | 64 -- .../forge/biome_modifier/cadmium_ore.json | 64 -- .../forge/biome_modifier/chromium_ore.json | 64 -- .../forge/biome_modifier/lead_ore.json | 64 -- .../forge/biome_modifier/nickel_ore.json | 64 -- .../forge/biome_modifier/silver_ore.json | 64 -- .../cosmere/forge/biome_modifier/tin_ore.json | 64 -- .../forge/biome_modifier/zinc_ore.json | 64 -- .../loot_tables/blocks/aluminum_block.json | 4 +- .../loot_tables/blocks/aluminum_ore.json | 4 +- .../loot_tables/blocks/atium_block.json | 4 +- .../loot_tables/blocks/bendalloy_block.json | 4 +- .../loot_tables/blocks/brass_block.json | 4 +- .../loot_tables/blocks/bronze_block.json | 4 +- .../loot_tables/blocks/cadmium_block.json | 4 +- .../loot_tables/blocks/cadmium_ore.json | 4 +- .../loot_tables/blocks/chromium_block.json | 4 +- .../loot_tables/blocks/chromium_ore.json | 4 +- .../loot_tables/blocks/copper_block.json | 4 +- .../blocks/deepslate_aluminum_ore.json | 4 +- .../blocks/deepslate_cadmium_ore.json | 4 +- .../blocks/deepslate_chromium_ore.json | 4 +- .../blocks/deepslate_lead_ore.json | 4 +- .../blocks/deepslate_nickel_ore.json | 4 +- .../blocks/deepslate_silver_ore.json | 4 +- .../loot_tables/blocks/deepslate_tin_ore.json | 4 +- .../blocks/deepslate_zinc_ore.json | 4 +- .../loot_tables/blocks/duralumin_block.json | 4 +- .../loot_tables/blocks/electrum_block.json | 4 +- .../loot_tables/blocks/harmonium_block.json | 4 +- .../loot_tables/blocks/lead_block.json | 4 +- .../cosmere/loot_tables/blocks/lead_ore.json | 4 +- .../loot_tables/blocks/lerasatium_block.json | 4 +- .../loot_tables/blocks/lerasium_block.json | 4 +- .../loot_tables/blocks/malatium_block.json | 4 +- .../blocks/metalworking_table.json | 4 +- .../loot_tables/blocks/nickel_block.json | 4 +- .../loot_tables/blocks/nickel_ore.json | 4 +- .../loot_tables/blocks/nicrosil_block.json | 4 +- .../loot_tables/blocks/pewter_block.json | 4 +- .../loot_tables/blocks/silver_block.json | 4 +- .../loot_tables/blocks/silver_ore.json | 4 +- .../loot_tables/blocks/steel_block.json | 4 +- .../cosmere/loot_tables/blocks/tin_block.json | 4 +- .../cosmere/loot_tables/blocks/tin_ore.json | 4 +- .../loot_tables/blocks/zinc_block.json | 4 +- .../cosmere/loot_tables/blocks/zinc_ore.json | 4 +- .../alloying/dust_blend/bendalloy.json | 1 + .../recipes/alloying/dust_blend/brass.json | 1 + .../recipes/alloying/dust_blend/bronze.json | 1 + .../alloying/dust_blend/duralumin.json | 1 + .../recipes/alloying/dust_blend/electrum.json | 1 + .../recipes/alloying/dust_blend/nicrosil.json | 1 + .../recipes/alloying/dust_blend/pewter.json | 1 + .../recipes/alloying/dust_blend/steel.json | 1 + .../alloying/ingot_blend/bendalloy.json | 1 + .../recipes/alloying/ingot_blend/brass.json | 1 + .../recipes/alloying/ingot_blend/bronze.json | 1 + .../alloying/ingot_blend/duralumin.json | 1 + .../alloying/ingot_blend/electrum.json | 1 + .../alloying/ingot_blend/nicrosil.json | 1 + .../recipes/alloying/ingot_blend/pewter.json | 1 + .../recipes/alloying/ingot_blend/steel.json | 1 + .../recipes/alloying/raw_blend/bendalloy.json | 1 + .../recipes/alloying/raw_blend/brass.json | 1 + .../recipes/alloying/raw_blend/bronze.json | 1 + .../recipes/alloying/raw_blend/duralumin.json | 1 + .../recipes/alloying/raw_blend/electrum.json | 1 + .../recipes/alloying/raw_blend/nicrosil.json | 1 + .../recipes/alloying/raw_blend/pewter.json | 1 + .../recipes/alloying/raw_blend/steel.json | 1 + .../data/cosmere/recipes/aluminum_block.json | 4 +- .../data/cosmere/recipes/aluminum_ingot.json | 4 +- ...inum_ingot_from_blasting_aluminum_ore.json | 1 + ..._from_blasting_deepslate_aluminum_ore.json | 1 + ..._ingot_from_blasting_raw_aluminum_ore.json | 1 + ...inum_ingot_from_smelting_aluminum_ore.json | 1 + ..._from_smelting_deepslate_aluminum_ore.json | 1 + ..._ingot_from_smelting_raw_aluminum_ore.json | 1 + .../data/cosmere/recipes/atium_block.json | 4 +- .../data/cosmere/recipes/atium_ingot.json | 4 +- .../data/cosmere/recipes/bendalloy_block.json | 4 +- .../data/cosmere/recipes/bendalloy_ingot.json | 4 +- ...y_ingot_from_blasting_bendalloy_blend.json | 1 + ...y_ingot_from_smelting_bendalloy_blend.json | 1 + .../data/cosmere/recipes/brass_block.json | 4 +- .../data/cosmere/recipes/brass_ingot.json | 4 +- ...brass_ingot_from_blasting_brass_blend.json | 1 + ...brass_ingot_from_smelting_brass_blend.json | 1 + .../data/cosmere/recipes/bronze_block.json | 4 +- .../data/cosmere/recipes/bronze_ingot.json | 4 +- ...onze_ingot_from_blasting_bronze_blend.json | 1 + ...onze_ingot_from_smelting_bronze_blend.json | 1 + .../data/cosmere/recipes/cadmium_block.json | 4 +- .../data/cosmere/recipes/cadmium_ingot.json | 4 +- ...dmium_ingot_from_blasting_cadmium_ore.json | 1 + ...t_from_blasting_deepslate_cadmium_ore.json | 1 + ...m_ingot_from_blasting_raw_cadmium_ore.json | 1 + ...dmium_ingot_from_smelting_cadmium_ore.json | 1 + ...t_from_smelting_deepslate_cadmium_ore.json | 1 + ...m_ingot_from_smelting_raw_cadmium_ore.json | 1 + .../data/cosmere/recipes/chromium_block.json | 4 +- .../data/cosmere/recipes/chromium_ingot.json | 4 +- ...mium_ingot_from_blasting_chromium_ore.json | 1 + ..._from_blasting_deepslate_chromium_ore.json | 1 + ..._ingot_from_blasting_raw_chromium_ore.json | 1 + ...mium_ingot_from_smelting_chromium_ore.json | 1 + ..._from_smelting_deepslate_chromium_ore.json | 1 + ..._ingot_from_smelting_raw_chromium_ore.json | 1 + .../aluminum_block_deconstruct.json | 1 + .../aluminum_item_deconstruct.json | 1 + .../conversions/atium_block_deconstruct.json | 1 + .../conversions/atium_item_deconstruct.json | 1 + .../bendalloy_block_deconstruct.json | 1 + .../bendalloy_item_deconstruct.json | 1 + .../conversions/brass_block_deconstruct.json | 1 + .../conversions/brass_item_deconstruct.json | 1 + .../conversions/bronze_block_deconstruct.json | 1 + .../conversions/bronze_item_deconstruct.json | 1 + .../cadmium_block_deconstruct.json | 1 + .../conversions/cadmium_item_deconstruct.json | 1 + .../chromium_block_deconstruct.json | 1 + .../chromium_item_deconstruct.json | 1 + .../conversions/copper_block_deconstruct.json | 1 + .../conversions/copper_item_deconstruct.json | 1 + .../duralumin_block_deconstruct.json | 1 + .../duralumin_item_deconstruct.json | 1 + .../electrum_block_deconstruct.json | 1 + .../electrum_item_deconstruct.json | 1 + .../harmonium_block_deconstruct.json | 1 + .../harmonium_item_deconstruct.json | 1 + .../conversions/lead_block_deconstruct.json | 1 + .../conversions/lead_item_deconstruct.json | 1 + .../lerasatium_block_deconstruct.json | 1 + .../lerasatium_item_deconstruct.json | 1 + .../lerasium_block_deconstruct.json | 1 + .../lerasium_item_deconstruct.json | 1 + .../malatium_block_deconstruct.json | 1 + .../malatium_item_deconstruct.json | 1 + .../conversions/nickel_block_deconstruct.json | 1 + .../conversions/nickel_item_deconstruct.json | 1 + .../nicrosil_block_deconstruct.json | 1 + .../nicrosil_item_deconstruct.json | 1 + .../conversions/pewter_block_deconstruct.json | 1 + .../conversions/pewter_item_deconstruct.json | 1 + .../conversions/silver_block_deconstruct.json | 1 + .../conversions/silver_item_deconstruct.json | 1 + .../conversions/steel_block_deconstruct.json | 1 + .../conversions/steel_item_deconstruct.json | 1 + .../conversions/tin_block_deconstruct.json | 1 + .../conversions/tin_item_deconstruct.json | 1 + .../conversions/zinc_block_deconstruct.json | 1 + .../conversions/zinc_item_deconstruct.json | 1 + .../data/cosmere/recipes/copper_block.json | 4 +- .../data/cosmere/recipes/copper_ingot.json | 4 +- .../data/cosmere/recipes/duralumin_block.json | 4 +- .../data/cosmere/recipes/duralumin_ingot.json | 4 +- ...n_ingot_from_blasting_duralumin_blend.json | 1 + ...n_ingot_from_smelting_duralumin_blend.json | 1 + .../data/cosmere/recipes/electrum_block.json | 4 +- .../data/cosmere/recipes/electrum_ingot.json | 4 +- ...um_ingot_from_blasting_electrum_blend.json | 1 + ...um_ingot_from_smelting_electrum_blend.json | 1 + .../data/cosmere/recipes/harmonium_block.json | 4 +- .../data/cosmere/recipes/harmonium_ingot.json | 4 +- .../data/cosmere/recipes/lead_block.json | 4 +- .../data/cosmere/recipes/lead_ingot.json | 4 +- ...ngot_from_blasting_deepslate_lead_ore.json | 1 + .../lead_ingot_from_blasting_lead_ore.json | 1 + ...lead_ingot_from_blasting_raw_lead_ore.json | 1 + ...ngot_from_smelting_deepslate_lead_ore.json | 1 + .../lead_ingot_from_smelting_lead_ore.json | 1 + ...lead_ingot_from_smelting_raw_lead_ore.json | 1 + .../cosmere/recipes/lerasatium_block.json | 4 +- .../cosmere/recipes/lerasatium_ingot.json | 4 +- .../data/cosmere/recipes/lerasium_block.json | 4 +- .../data/cosmere/recipes/lerasium_ingot.json | 4 +- .../data/cosmere/recipes/malatium_block.json | 4 +- .../data/cosmere/recipes/malatium_ingot.json | 4 +- .../cosmere/recipes/metalworking_table.json | 4 +- .../data/cosmere/recipes/nickel_block.json | 4 +- .../data/cosmere/recipes/nickel_ingot.json | 4 +- ...ot_from_blasting_deepslate_nickel_ore.json | 1 + ...nickel_ingot_from_blasting_nickel_ore.json | 1 + ...el_ingot_from_blasting_raw_nickel_ore.json | 1 + ...ot_from_smelting_deepslate_nickel_ore.json | 1 + ...nickel_ingot_from_smelting_nickel_ore.json | 1 + ...el_ingot_from_smelting_raw_nickel_ore.json | 1 + .../data/cosmere/recipes/nicrosil_block.json | 4 +- .../data/cosmere/recipes/nicrosil_ingot.json | 4 +- ...il_ingot_from_blasting_nicrosil_blend.json | 1 + ...il_ingot_from_smelting_nicrosil_blend.json | 1 + .../data/cosmere/recipes/pewter_block.json | 4 +- .../data/cosmere/recipes/pewter_ingot.json | 4 +- ...wter_ingot_from_blasting_pewter_blend.json | 1 + ...wter_ingot_from_smelting_pewter_blend.json | 1 + .../data/cosmere/recipes/silver_block.json | 4 +- .../data/cosmere/recipes/silver_ingot.json | 4 +- ...ot_from_blasting_deepslate_silver_ore.json | 1 + ...er_ingot_from_blasting_raw_silver_ore.json | 1 + ...silver_ingot_from_blasting_silver_ore.json | 1 + ...ot_from_smelting_deepslate_silver_ore.json | 1 + ...er_ingot_from_smelting_raw_silver_ore.json | 1 + ...silver_ingot_from_smelting_silver_ore.json | 1 + .../data/cosmere/recipes/steel_block.json | 4 +- .../data/cosmere/recipes/steel_ingot.json | 4 +- ...steel_ingot_from_blasting_steel_blend.json | 1 + ...steel_ingot_from_smelting_steel_blend.json | 1 + .../data/cosmere/recipes/tin_block.json | 4 +- .../data/cosmere/recipes/tin_ingot.json | 4 +- ...ingot_from_blasting_deepslate_tin_ore.json | 1 + .../tin_ingot_from_blasting_raw_tin_ore.json | 1 + .../tin_ingot_from_blasting_tin_ore.json | 1 + ...ingot_from_smelting_deepslate_tin_ore.json | 1 + .../tin_ingot_from_smelting_raw_tin_ore.json | 1 + .../tin_ingot_from_smelting_tin_ore.json | 1 + .../data/cosmere/recipes/zinc_block.json | 4 +- .../data/cosmere/recipes/zinc_ingot.json | 4 +- ...ngot_from_blasting_deepslate_zinc_ore.json | 1 + ...zinc_ingot_from_blasting_raw_zinc_ore.json | 1 + .../zinc_ingot_from_blasting_zinc_ore.json | 1 + ...ngot_from_smelting_deepslate_zinc_ore.json | 1 + ...zinc_ingot_from_smelting_raw_zinc_ore.json | 1 + .../zinc_ingot_from_smelting_zinc_ore.json | 1 + .../tags/worldgen/biome/spawn_ores.json | 5 + .../0091ba631176854276c2a1c4a58a7dfb77cb24a4 | 6 +- .../545a26d0656f5ce884cbfae350c3577a108baac0 | 1 - .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../dd0552f4815307fa79918bc7fddf7e3ebb5df25c | 2 +- .../e97825cad1b7db91061ba52571a61f8715113ce1 | 2 +- .../guide/en_us/categories/tools.json | 4 +- .../en_us/entries/tools/tools_basics.json | 2 +- .../assets/cosmeretools/lang/en_us.json | 2 +- .../1fa0b7e761d1385d265c3e6fc16617fbb79d24b6 | 1 - .../4256cb056fbe91aad6656efb50983fdfb19e7569 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../9adbaa29e00bdcd402d9c6d9c3e37d562b53ee0b | 6 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../fd7181717ee34e9c72543275cac97813daa42620 | 2 +- .../0da09c3765e69584f28b8eb99ea0d5489f661122 | 19 - .../378e5163db565cdb690d66f27a88cc18d663d22f | 2 +- .../3b2a435655541c92d690318b57013336949ed348 | 42 +- .../8ad779514fe79ec9d533430acc900ab68c6e0ca1 | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 206 ++--- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../en_us/entries/feruchemy/compounding.json | 2 +- .../feruchemy/feruchemical_cadmium.json | 2 +- .../advancements/feruchemy/aluminum.json | 40 - .../advancements/feruchemy/atium.json | 40 - .../advancements/feruchemy/bendalloy.json | 40 - .../advancements/feruchemy/brass.json | 40 - .../advancements/feruchemy/bronze.json | 40 - .../advancements/feruchemy/cadmium.json | 40 - .../advancements/feruchemy/chromium.json | 40 - .../advancements/feruchemy/copper.json | 40 - .../advancements/feruchemy/duralumin.json | 40 - .../advancements/feruchemy/electrum.json | 40 - .../advancements/feruchemy/gold.json | 40 - .../advancements/feruchemy/iron.json | 40 - .../advancements/feruchemy/nicrosil.json | 40 - .../advancements/feruchemy/pewter.json | 40 - .../advancements/feruchemy/root.json | 33 - .../advancements/feruchemy/steel.json | 40 - .../feruchemy/advancements/feruchemy/tin.json | 40 - .../advancements/feruchemy/zinc.json | 40 - .../aluminum_bracelet_metalmind.json | 3 +- .../aluminum_necklace_metalmind.json | 3 +- .../aluminum_ring_metalmind.json | 3 +- .../atium_bracelet_metalmind.json | 3 +- .../atium_necklace_metalmind.json | 3 +- .../atium_ring_metalmind.json | 3 +- .../bendalloy_bracelet_metalmind.json | 3 +- .../bendalloy_necklace_metalmind.json | 3 +- .../bendalloy_ring_metalmind.json | 3 +- .../brass_bracelet_metalmind.json | 3 +- .../brass_necklace_metalmind.json | 3 +- .../brass_ring_metalmind.json | 3 +- .../bronze_bracelet_metalmind.json | 3 +- .../bronze_necklace_metalmind.json | 3 +- .../bronze_ring_metalmind.json | 3 +- .../cadmium_bracelet_metalmind.json | 3 +- .../cadmium_necklace_metalmind.json | 3 +- .../cadmium_ring_metalmind.json | 3 +- .../chromium_bracelet_metalmind.json | 3 +- .../chromium_necklace_metalmind.json | 3 +- .../chromium_ring_metalmind.json | 3 +- .../copper_bracelet_metalmind.json | 3 +- .../copper_necklace_metalmind.json | 3 +- .../copper_ring_metalmind.json | 3 +- .../duralumin_bracelet_metalmind.json | 3 +- .../duralumin_necklace_metalmind.json | 3 +- .../duralumin_ring_metalmind.json | 3 +- .../electrum_bracelet_metalmind.json | 3 +- .../electrum_necklace_metalmind.json | 3 +- .../electrum_ring_metalmind.json | 3 +- .../gold_bracelet_metalmind.json | 3 +- .../gold_necklace_metalmind.json | 3 +- .../gold_ring_metalmind.json | 3 +- .../iron_bracelet_metalmind.json | 3 +- .../iron_necklace_metalmind.json | 3 +- .../iron_ring_metalmind.json | 3 +- .../nicrosil_bracelet_metalmind.json | 3 +- .../nicrosil_necklace_metalmind.json | 3 +- .../nicrosil_ring_metalmind.json | 3 +- .../pewter_bracelet_metalmind.json | 3 +- .../pewter_necklace_metalmind.json | 3 +- .../pewter_ring_metalmind.json | 3 +- .../steel_bracelet_metalmind.json | 3 +- .../steel_necklace_metalmind.json | 3 +- .../steel_ring_metalmind.json | 3 +- .../tin_bracelet_metalmind.json | 3 +- .../tin_necklace_metalmind.json | 3 +- .../tin_ring_metalmind.json | 3 +- .../zinc_bracelet_metalmind.json | 3 +- .../zinc_necklace_metalmind.json | 3 +- .../zinc_ring_metalmind.json | 3 +- .../recipes/aluminum_bracelet_metalmind.json | 4 +- .../recipes/aluminum_necklace_metalmind.json | 4 +- .../recipes/aluminum_ring_metalmind.json | 4 +- .../recipes/atium_bracelet_metalmind.json | 4 +- .../recipes/atium_necklace_metalmind.json | 4 +- .../recipes/atium_ring_metalmind.json | 4 +- .../recipes/bendalloy_bracelet_metalmind.json | 4 +- .../recipes/bendalloy_necklace_metalmind.json | 4 +- .../recipes/bendalloy_ring_metalmind.json | 4 +- .../recipes/brass_bracelet_metalmind.json | 4 +- .../recipes/brass_necklace_metalmind.json | 4 +- .../recipes/brass_ring_metalmind.json | 4 +- .../recipes/bronze_bracelet_metalmind.json | 4 +- .../recipes/bronze_necklace_metalmind.json | 4 +- .../recipes/bronze_ring_metalmind.json | 4 +- .../recipes/cadmium_bracelet_metalmind.json | 4 +- .../recipes/cadmium_necklace_metalmind.json | 4 +- .../recipes/cadmium_ring_metalmind.json | 4 +- .../recipes/chromium_bracelet_metalmind.json | 4 +- .../recipes/chromium_necklace_metalmind.json | 4 +- .../recipes/chromium_ring_metalmind.json | 4 +- .../recipes/copper_bracelet_metalmind.json | 4 +- .../recipes/copper_necklace_metalmind.json | 4 +- .../recipes/copper_ring_metalmind.json | 4 +- .../recipes/duralumin_bracelet_metalmind.json | 4 +- .../recipes/duralumin_necklace_metalmind.json | 4 +- .../recipes/duralumin_ring_metalmind.json | 4 +- .../recipes/electrum_bracelet_metalmind.json | 4 +- .../recipes/electrum_necklace_metalmind.json | 4 +- .../recipes/electrum_ring_metalmind.json | 4 +- .../recipes/gold_bracelet_metalmind.json | 4 +- .../recipes/gold_necklace_metalmind.json | 4 +- .../recipes/gold_ring_metalmind.json | 4 +- .../recipes/iron_bracelet_metalmind.json | 4 +- .../recipes/iron_necklace_metalmind.json | 4 +- .../recipes/iron_ring_metalmind.json | 4 +- .../recipes/nicrosil_bracelet_metalmind.json | 4 +- .../recipes/nicrosil_necklace_metalmind.json | 4 +- .../recipes/nicrosil_ring_metalmind.json | 4 +- .../recipes/pewter_bracelet_metalmind.json | 4 +- .../recipes/pewter_necklace_metalmind.json | 4 +- .../recipes/pewter_ring_metalmind.json | 4 +- .../recipes/steel_bracelet_metalmind.json | 4 +- .../recipes/steel_necklace_metalmind.json | 4 +- .../recipes/steel_ring_metalmind.json | 4 +- .../recipes/tin_bracelet_metalmind.json | 4 +- .../recipes/tin_necklace_metalmind.json | 4 +- .../feruchemy/recipes/tin_ring_metalmind.json | 4 +- .../recipes/zinc_bracelet_metalmind.json | 4 +- .../recipes/zinc_necklace_metalmind.json | 4 +- .../recipes/zinc_ring_metalmind.json | 4 +- .../14cfc8c609bc90dfaf9edf7b39a40affae5154fe | 2 - .../3b2a435655541c92d690318b57013336949ed348 | 46 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 86 +-- .../c3f80e268d2cfd3bbfc23cd1cc3b922ec14bcac1 | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 | 2 +- .../advancements/hemalurgy/root.json | 35 - .../guide_from_blasting_iron_spike.json | 3 +- .../guide_from_smelting_iron_spike.json | 3 +- .../aluminum_spike.json | 3 +- .../atium_spike.json | 3 +- .../bendalloy_spike.json | 3 +- .../brass_spike.json | 3 +- .../bronze_spike.json | 3 +- .../cadmium_spike.json | 3 +- .../chromium_spike.json | 3 +- .../copper_spike.json | 3 +- .../duralumin_spike.json | 3 +- .../electrum_spike.json | 3 +- .../gold_spike.json | 3 +- .../iron_spike.json | 3 +- .../lerasatium_spike.json | 3 +- .../lerasium_spike.json | 3 +- .../nicrosil_spike.json | 3 +- .../pewter_spike.json | 3 +- .../steel_spike.json | 3 +- .../tin_spike.json | 3 +- .../zinc_spike.json | 3 +- .../hemalurgy/recipes/aluminum_spike.json | 4 +- .../data/hemalurgy/recipes/atium_spike.json | 4 +- .../hemalurgy/recipes/bendalloy_spike.json | 4 +- .../data/hemalurgy/recipes/brass_spike.json | 4 +- .../data/hemalurgy/recipes/bronze_spike.json | 4 +- .../data/hemalurgy/recipes/cadmium_spike.json | 4 +- .../hemalurgy/recipes/chromium_spike.json | 4 +- .../data/hemalurgy/recipes/copper_spike.json | 4 +- .../hemalurgy/recipes/duralumin_spike.json | 4 +- .../hemalurgy/recipes/electrum_spike.json | 4 +- .../data/hemalurgy/recipes/gold_spike.json | 4 +- .../guide_from_blasting_iron_spike.json | 1 + .../guide_from_smelting_iron_spike.json | 1 + .../data/hemalurgy/recipes/iron_spike.json | 4 +- .../hemalurgy/recipes/lerasatium_spike.json | 4 +- .../hemalurgy/recipes/lerasium_spike.json | 4 +- .../hemalurgy/recipes/nicrosil_spike.json | 4 +- .../data/hemalurgy/recipes/pewter_spike.json | 4 +- .../data/hemalurgy/recipes/steel_spike.json | 4 +- .../data/hemalurgy/recipes/tin_spike.json | 4 +- .../data/hemalurgy/recipes/zinc_spike.json | 4 +- .../03e4de26f1265135874f8cdcaebc09d9c08eb42b | 2 - ... 053b3b118f91e8b4c0c2e2484a0c644a0c507099} | 3 +- .../3b2a435655541c92d690318b57013336949ed348 | 14 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 8 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 8 - .../70bedf271fa6bf3021ea6203463defec8ff35d9e | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 26 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../sand_jar_block.json | 3 +- .../sand_spreading_tub.json | 3 +- .../{sandmastery => redstone}/jar.json | 3 +- .../{sandmastery => redstone}/sand_jar.json | 3 +- .../recipes/{sandmastery => tools}/qido.json | 3 +- .../{sandmastery => tools}/sand_pouch.json | 3 +- .../blocks/charged_taldain_sand.json | 4 +- .../blocks/charged_taldain_sand_layer.json | 3 +- .../loot_tables/blocks/sand_jar_block.json | 4 +- .../blocks/sand_spreading_tub.json | 4 +- .../loot_tables/blocks/taldain_sand.json | 4 +- .../blocks/taldain_sand_layer.json | 3 +- .../blocks/temporary_sand_block.json | 4 +- .../data/sandmastery/recipes/jar.json | 4 +- .../data/sandmastery/recipes/qido.json | 4 +- .../data/sandmastery/recipes/sand_jar.json | 1 + .../sandmastery/recipes/sand_jar_block.json | 1 + .../data/sandmastery/recipes/sand_pouch.json | 4 +- .../recipes/sand_spreading_tub.json | 4 +- .../048958a2bfc6e32adf0697478597f5ab7e7fbb24 | 1 - .../0596c3d7e5592bcf0093791e94a8655dfa8477d2 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 1 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 1 - .../85d298822a7ae20512882a6cadee381ab6d5f104 | 2 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../fd1874cfe95a30de0d4cf8b0ec1f36bca0fef150 | 6 +- .../0bcb30cabd5f2de093260c224c11c3eb66c313fd | 44 +- .../109f316ce3b77a5a02bbf6e9c200027075e14620 | 20 +- .../36b7f816b5f8b042235228566873c711db2c5319 | 8 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 41 + .../67cce32b1c3cbbcb1f646605f4914e3f196986c2 | 35 - .../6f1794b6807b6703b7ba76414acccaba2dae1f14 | 11 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 162 +--- .../a42c2d14910c607d1cdeea761ec88e5ad05f96c6 | 2 +- .../b050c542600f026370b74c0cf389e51d9c95f74e | 2 - .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../blockstates/amethyst_ore.json | 7 - .../blockstates/deepslate_amethyst_ore.json | 7 - .../blockstates/deepslate_diamond_ore.json | 7 - .../blockstates/deepslate_emerald_ore.json | 7 - .../blockstates/deepslate_garnet_ore.json | 7 - .../blockstates/deepslate_heliodor_ore.json | 7 - .../blockstates/deepslate_ruby_ore.json | 7 - .../blockstates/deepslate_sapphire_ore.json | 7 - .../blockstates/deepslate_smokestone_ore.json | 7 - .../blockstates/deepslate_topaz_ore.json | 7 - .../blockstates/deepslate_zircon_ore.json | 7 - .../surgebinding/blockstates/diamond_ore.json | 7 - .../surgebinding/blockstates/emerald_ore.json | 7 - .../surgebinding/blockstates/garnet_ore.json | 7 - .../blockstates/heliodor_ore.json | 7 - .../surgebinding/blockstates/ruby_ore.json | 7 - .../blockstates/sapphire_ore.json | 7 - .../blockstates/smokestone_ore.json | 7 - .../surgebinding/blockstates/topaz_ore.json | 7 - .../surgebinding/blockstates/zircon_ore.json | 7 - .../assets/surgebinding/lang/en_us.json | 21 +- .../models/block/gem_ore_block.json | 7 - .../models/block/gem_ore_block_deepslate.json | 7 - .../models/item/amethyst_ore.json | 3 - .../models/item/deepslate_amethyst_ore.json | 3 - .../models/item/deepslate_diamond_ore.json | 3 - .../models/item/deepslate_emerald_ore.json | 3 - .../models/item/deepslate_garnet_ore.json | 3 - .../models/item/deepslate_heliodor_ore.json | 3 - .../models/item/deepslate_ruby_ore.json | 3 - .../models/item/deepslate_sapphire_ore.json | 3 - .../models/item/deepslate_smokestone_ore.json | 3 - .../models/item/deepslate_topaz_ore.json | 3 - .../models/item/deepslate_zircon_ore.json | 3 - .../surgebinding/models/item/diamond_ore.json | 3 - .../surgebinding/models/item/emerald_ore.json | 3 - .../surgebinding/models/item/garnet_ore.json | 3 - .../models/item/heliodor_ore.json | 3 - .../surgebinding/models/item/ruby_ore.json | 3 - .../models/item/sapphire_ore.json | 3 - .../models/item/smokestone_ore.json | 3 - .../surgebinding/models/item/topaz_ore.json | 3 - .../surgebinding/models/item/zircon_ore.json | 3 - .../amethyst_block_deconstruct.json | 3 +- .../diamond_block_deconstruct.json | 3 +- .../emerald_block_deconstruct.json | 3 +- .../conversions/garnet_block_deconstruct.json | 3 +- .../heliodor_block_deconstruct.json | 3 +- .../conversions/ruby_block_deconstruct.json | 3 +- .../sapphire_block_deconstruct.json | 3 +- .../smokestone_block_deconstruct.json | 3 +- .../conversions/topaz_block_deconstruct.json | 3 +- .../conversions/zircon_block_deconstruct.json | 3 +- .../loot_tables/blocks/aluminum_block.json | 22 + .../loot_tables/blocks/aluminum_ore.json | 22 + .../loot_tables/blocks/atium_block.json | 22 + .../loot_tables/blocks/bendalloy_block.json | 22 + .../loot_tables/blocks/brass_block.json | 22 + .../loot_tables/blocks/bronze_block.json | 22 + .../loot_tables/blocks/cadmium_block.json | 22 + .../loot_tables/blocks/cadmium_ore.json | 22 + .../loot_tables/blocks/chromium_block.json | 22 + .../loot_tables/blocks/chromium_ore.json | 22 + .../loot_tables/blocks/copper_block.json | 22 + .../blocks/deepslate_aluminum_ore.json | 22 + .../blocks/deepslate_cadmium_ore.json | 22 + .../blocks/deepslate_chromium_ore.json | 22 + .../blocks/deepslate_lead_ore.json | 22 + .../blocks/deepslate_nickel_ore.json | 22 + .../blocks/deepslate_silver_ore.json | 22 + .../loot_tables/blocks/deepslate_tin_ore.json | 22 + .../blocks/deepslate_zinc_ore.json | 22 + .../loot_tables/blocks/duralumin_block.json | 22 + .../loot_tables/blocks/electrum_block.json | 22 + .../loot_tables/blocks/harmonium_block.json | 22 + .../loot_tables/blocks/lead_block.json | 22 + .../loot_tables/blocks/lead_ore.json} | 6 +- .../loot_tables/blocks/lerasatium_block.json | 22 + .../loot_tables/blocks/lerasium_block.json | 22 + .../loot_tables/blocks/malatium_block.json | 22 + .../blocks/metalworking_table.json | 22 + .../loot_tables/blocks/nickel_block.json | 22 + .../loot_tables/blocks/nickel_ore.json | 22 + .../loot_tables/blocks/nicrosil_block.json | 22 + .../loot_tables/blocks/pewter_block.json | 22 + .../loot_tables/blocks/silver_block.json | 22 + .../loot_tables/blocks/silver_ore.json | 22 + .../loot_tables/blocks/steel_block.json | 22 + .../loot_tables/blocks/tin_block.json} | 6 +- .../loot_tables/blocks/tin_ore.json} | 6 +- .../loot_tables/blocks/zinc_block.json | 22 + .../loot_tables/blocks/zinc_ore.json} | 6 +- .../amethyst_block_deconstruct.json | 1 + .../diamond_block_deconstruct.json | 1 + .../emerald_block_deconstruct.json | 1 + .../conversions/garnet_block_deconstruct.json | 1 + .../heliodor_block_deconstruct.json | 1 + .../conversions/ruby_block_deconstruct.json | 1 + .../sapphire_block_deconstruct.json | 1 + .../smokestone_block_deconstruct.json | 1 + .../conversions/topaz_block_deconstruct.json | 1 + .../conversions/zircon_block_deconstruct.json | 1 + .../tags/worldgen/biome/spawn_ores.json | 5 + .../data/forge/tags/blocks/ores/amethyst.json | 6 - .../data/forge/tags/blocks/ores/diamond.json | 6 - .../data/forge/tags/blocks/ores/emerald.json | 6 - .../data/forge/tags/blocks/ores/garnet.json | 6 - .../data/forge/tags/blocks/ores/heliodor.json | 6 - .../data/forge/tags/blocks/ores/ruby.json | 6 - .../data/forge/tags/blocks/ores/sapphire.json | 6 - .../forge/tags/blocks/ores/smokestone.json | 6 - .../data/forge/tags/blocks/ores/topaz.json | 6 - .../data/forge/tags/blocks/ores/zircon.json | 6 - .../minecraft/tags/blocks/dragon_immune.json | 22 +- .../tags/blocks/mineable/pickaxe.json | 20 - .../tags/blocks/needs_iron_tool.json | 22 +- ..._from_blasting_deepslate_amethyst_ore.json | 34 - ..._from_smelting_deepslate_amethyst_ore.json | 34 - ...thyst_mark_from_blasting_amethyst_ore.json | 34 - ...thyst_mark_from_smelting_amethyst_ore.json | 34 - ...m_from_blasting_deepslate_diamond_ore.json | 34 - ...m_from_smelting_deepslate_diamond_ore.json | 34 - ...iamond_mark_from_blasting_diamond_ore.json | 34 - ...iamond_mark_from_smelting_diamond_ore.json | 34 - ...m_from_blasting_deepslate_emerald_ore.json | 34 - ...m_from_smelting_deepslate_emerald_ore.json | 34 - ...merald_mark_from_blasting_emerald_ore.json | 34 - ...merald_mark_from_smelting_emerald_ore.json | 34 - ...am_from_blasting_deepslate_garnet_ore.json | 34 - ...am_from_smelting_deepslate_garnet_ore.json | 34 - .../garnet_mark_from_blasting_garnet_ore.json | 34 - .../garnet_mark_from_smelting_garnet_ore.json | 34 - ..._from_blasting_deepslate_heliodor_ore.json | 34 - ..._from_smelting_deepslate_heliodor_ore.json | 34 - ...iodor_mark_from_blasting_heliodor_ore.json | 34 - ...iodor_mark_from_smelting_heliodor_ore.json | 34 - ...roam_from_blasting_deepslate_ruby_ore.json | 34 - ...roam_from_smelting_deepslate_ruby_ore.json | 34 - .../ruby_mark_from_blasting_ruby_ore.json | 34 - .../ruby_mark_from_smelting_ruby_ore.json | 34 - ..._from_blasting_deepslate_sapphire_ore.json | 34 - ..._from_smelting_deepslate_sapphire_ore.json | 34 - ...phire_mark_from_blasting_sapphire_ore.json | 34 - ...phire_mark_from_smelting_sapphire_ore.json | 34 - ...rom_blasting_deepslate_smokestone_ore.json | 34 - ...rom_smelting_deepslate_smokestone_ore.json | 34 - ...one_mark_from_blasting_smokestone_ore.json | 34 - ...one_mark_from_smelting_smokestone_ore.json | 34 - ...oam_from_blasting_deepslate_topaz_ore.json | 34 - ...oam_from_smelting_deepslate_topaz_ore.json | 34 - .../topaz_mark_from_blasting_topaz_ore.json | 34 - .../topaz_mark_from_smelting_topaz_ore.json | 34 - ...am_from_blasting_deepslate_zircon_ore.json | 34 - ...am_from_smelting_deepslate_zircon_ore.json | 34 - .../zircon_mark_from_blasting_zircon_ore.json | 34 - .../zircon_mark_from_smelting_zircon_ore.json | 34 - .../amethyst_block.json | 3 +- .../diamond_block.json | 3 +- .../emerald_block.json | 3 +- .../garnet_block.json | 3 +- .../heliodor_block.json | 3 +- .../ruby_block.json | 3 +- .../sapphire_block.json | 3 +- .../smokestone_block.json | 3 +- .../topaz_block.json | 3 +- .../zircon_block.json | 3 +- .../forge/biome_modifier/amethyst_ore.json | 58 -- .../forge/biome_modifier/diamond_ore.json | 58 -- .../forge/biome_modifier/emerald_ore.json | 58 -- .../forge/biome_modifier/garnet_ore.json | 58 -- .../forge/biome_modifier/heliodor_ore.json | 58 -- .../forge/biome_modifier/ruby_ore.json | 58 -- .../forge/biome_modifier/sapphire_ore.json | 58 -- .../forge/biome_modifier/smokestone_ore.json | 58 -- .../forge/biome_modifier/topaz_ore.json | 58 -- .../forge/biome_modifier/zircon_ore.json | 58 -- .../loot_tables/blocks/amethyst_ore.json | 49 -- .../blocks/deepslate_amethyst_ore.json | 49 -- .../blocks/deepslate_diamond_ore.json | 49 -- .../blocks/deepslate_emerald_ore.json | 49 -- .../blocks/deepslate_garnet_ore.json | 49 -- .../blocks/deepslate_heliodor_ore.json | 49 -- .../blocks/deepslate_ruby_ore.json | 49 -- .../blocks/deepslate_sapphire_ore.json | 49 -- .../blocks/deepslate_smokestone_ore.json | 49 -- .../blocks/deepslate_topaz_ore.json | 49 -- .../blocks/deepslate_zircon_ore.json | 49 -- .../loot_tables/blocks/diamond_ore.json | 49 -- .../loot_tables/blocks/emerald_ore.json | 49 -- .../loot_tables/blocks/garnet_ore.json | 49 -- .../loot_tables/blocks/heliodor_block.json | 20 - .../loot_tables/blocks/heliodor_ore.json | 49 -- .../loot_tables/blocks/lavis_polyp.json | 20 - .../loot_tables/blocks/prickletac.json | 20 - .../loot_tables/blocks/rockbud_variant.json | 20 - .../loot_tables/blocks/ruby_block.json | 20 - .../loot_tables/blocks/ruby_ore.json | 49 -- .../loot_tables/blocks/sapphire_block.json | 20 - .../loot_tables/blocks/sapphire_ore.json | 49 -- .../loot_tables/blocks/smokestone_block.json | 20 - .../loot_tables/blocks/smokestone_ore.json | 49 -- .../loot_tables/blocks/topaz_block.json | 20 - .../loot_tables/blocks/topaz_ore.json | 49 -- .../loot_tables/blocks/vinebud.json | 20 - .../loot_tables/blocks/zircon_block.json | 20 - .../loot_tables/blocks/zircon_ore.json | 49 -- .../loot_tables/entities/chull.json | 633 ++++++++++++++++ .../surgebinding/recipes/amethyst_block.json | 4 +- ..._from_blasting_deepslate_amethyst_ore.json | 9 - ..._from_smelting_deepslate_amethyst_ore.json | 9 - ...thyst_mark_from_blasting_amethyst_ore.json | 9 - ...thyst_mark_from_smelting_amethyst_ore.json | 9 - .../surgebinding/recipes/diamond_block.json | 4 +- ...m_from_blasting_deepslate_diamond_ore.json | 9 - ...m_from_smelting_deepslate_diamond_ore.json | 9 - ...iamond_mark_from_blasting_diamond_ore.json | 9 - ...iamond_mark_from_smelting_diamond_ore.json | 9 - .../surgebinding/recipes/emerald_block.json | 4 +- ...m_from_blasting_deepslate_emerald_ore.json | 9 - ...m_from_smelting_deepslate_emerald_ore.json | 9 - ...merald_mark_from_blasting_emerald_ore.json | 9 - ...merald_mark_from_smelting_emerald_ore.json | 9 - .../surgebinding/recipes/garnet_block.json | 4 +- ...am_from_blasting_deepslate_garnet_ore.json | 9 - ...am_from_smelting_deepslate_garnet_ore.json | 9 - .../garnet_mark_from_blasting_garnet_ore.json | 9 - .../garnet_mark_from_smelting_garnet_ore.json | 9 - .../surgebinding/recipes/heliodor_block.json | 4 +- ..._from_blasting_deepslate_heliodor_ore.json | 9 - ..._from_smelting_deepslate_heliodor_ore.json | 9 - ...iodor_mark_from_blasting_heliodor_ore.json | 9 - ...iodor_mark_from_smelting_heliodor_ore.json | 9 - .../data/surgebinding/recipes/ruby_block.json | 4 +- ...roam_from_blasting_deepslate_ruby_ore.json | 9 - ...roam_from_smelting_deepslate_ruby_ore.json | 9 - .../ruby_mark_from_blasting_ruby_ore.json | 9 - .../ruby_mark_from_smelting_ruby_ore.json | 9 - .../surgebinding/recipes/sapphire_block.json | 4 +- ..._from_blasting_deepslate_sapphire_ore.json | 9 - ..._from_smelting_deepslate_sapphire_ore.json | 9 - ...phire_mark_from_blasting_sapphire_ore.json | 9 - ...phire_mark_from_smelting_sapphire_ore.json | 9 - .../recipes/smokestone_block.json | 4 +- ...rom_blasting_deepslate_smokestone_ore.json | 9 - ...rom_smelting_deepslate_smokestone_ore.json | 9 - ...one_mark_from_blasting_smokestone_ore.json | 9 - ...one_mark_from_smelting_smokestone_ore.json | 9 - .../surgebinding/recipes/topaz_block.json | 4 +- ...oam_from_blasting_deepslate_topaz_ore.json | 9 - ...oam_from_smelting_deepslate_topaz_ore.json | 9 - .../topaz_mark_from_blasting_topaz_ore.json | 9 - .../topaz_mark_from_smelting_topaz_ore.json | 9 - .../surgebinding/recipes/zircon_block.json | 4 +- ...am_from_blasting_deepslate_zircon_ore.json | 9 - ...am_from_smelting_deepslate_zircon_ore.json | 9 - .../zircon_mark_from_blasting_zircon_ore.json | 9 - .../zircon_mark_from_smelting_zircon_ore.json | 9 - 976 files changed, 3506 insertions(+), 7254 deletions(-) delete mode 100644 src/datagen/generated/allomancy/.cache/2326a4aabce608f922c63b97aebd9504cbbeab88 delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/aluminum.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/atium.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bendalloy.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/brass.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bronze.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/cadmium.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/chromium.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/copper.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/duralumin.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/electrum.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/gold.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/iron.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/nicrosil.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/pewter.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/root.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/steel.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/tin.json delete mode 100644 src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/zinc.json rename src/datagen/generated/allomancy/data/allomancy/advancements/recipes/{cosmere.items => tools}/coin_pouch.json (93%) rename src/datagen/generated/allomancy/data/allomancy/advancements/recipes/{cosmere.items => tools}/metal_vial.json (93%) delete mode 100644 src/datagen/generated/aondor/.cache/1348f526bbf5dfe88b837c04b91be2f71c59740d create mode 100644 src/datagen/generated/aondor/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/aondor/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 create mode 100644 src/datagen/generated/aondor/assets/aondor/lang/en_us.json create mode 100644 src/datagen/generated/aviar/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/aviar/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 delete mode 100644 src/datagen/generated/aviar/.cache/e130b7356d169b5364790e64711bf69a7f5bef98 delete mode 100644 src/datagen/generated/awakening/.cache/1229fb9899534b7b5cb6c13eb36250e23af7df0a create mode 100644 src/datagen/generated/awakening/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/awakening/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 create mode 100644 src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 delete mode 100644 src/datagen/generated/cosmere/.cache/3b2a435655541c92d690318b57013336949ed348 create mode 100644 src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/cosmere/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 delete mode 100644 src/datagen/generated/cosmere/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/aluminum_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/aluminum_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/atium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/atium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/bendalloy_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/bendalloy_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/brass_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/brass_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/bronze_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/bronze_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/cadmium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/cadmium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/chromium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/chromium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/copper_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/copper_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/duralumin_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/duralumin_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/electrum_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/electrum_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/harmonium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/harmonium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/lead_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/lead_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/lerasatium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/lerasatium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/lerasium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/lerasium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/malatium_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/malatium_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/metalworking_table.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/nickel_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/nickel_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/nicrosil_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/nicrosil_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/pewter_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/pewter_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/silver_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/silver_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/steel_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/steel_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/tin_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/tin_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.blocks => decorations}/zinc_block.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => decorations}/zinc_ingot.json (93%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/bendalloy.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/brass.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/bronze.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/duralumin.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/electrum.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/nicrosil.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/pewter.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/dust_blend/steel.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/bendalloy.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/brass.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/bronze.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/duralumin.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/electrum.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/nicrosil.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/pewter.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/ingot_blend/steel.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/bendalloy.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/brass.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/bronze.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/duralumin.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/electrum.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/nicrosil.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/pewter.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/alloying/raw_blend/steel.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_blasting_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_blasting_raw_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_smelting_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/aluminum_ingot_from_smelting_raw_aluminum_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/bendalloy_ingot_from_blasting_bendalloy_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/bendalloy_ingot_from_smelting_bendalloy_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/brass_ingot_from_blasting_brass_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/brass_ingot_from_smelting_brass_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/bronze_ingot_from_blasting_bronze_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/bronze_ingot_from_smelting_bronze_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_blasting_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_blasting_raw_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_smelting_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/cadmium_ingot_from_smelting_raw_cadmium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_blasting_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_blasting_deepslate_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_blasting_raw_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_smelting_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_smelting_deepslate_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/chromium_ingot_from_smelting_raw_chromium_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/aluminum_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/aluminum_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/atium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/atium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/bendalloy_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/bendalloy_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/brass_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/brass_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/bronze_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/bronze_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/cadmium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/cadmium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/chromium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/chromium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/copper_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/copper_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/duralumin_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/duralumin_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/electrum_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/electrum_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/harmonium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/harmonium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lead_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lead_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lerasatium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lerasatium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lerasium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/lerasium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/malatium_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/malatium_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/nickel_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/nickel_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/nicrosil_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/nicrosil_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/pewter_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/pewter_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/silver_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/silver_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/steel_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/steel_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/tin_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/tin_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/zinc_block_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/zinc_item_deconstruct.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/duralumin_ingot_from_blasting_duralumin_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/duralumin_ingot_from_smelting_duralumin_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/electrum_ingot_from_blasting_electrum_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/electrum_ingot_from_smelting_electrum_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_blasting_deepslate_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_blasting_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_blasting_raw_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_smelting_deepslate_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_smelting_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/lead_ingot_from_smelting_raw_lead_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_blasting_deepslate_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_blasting_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_blasting_raw_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_smelting_deepslate_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_smelting_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nickel_ingot_from_smelting_raw_nickel_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nicrosil_ingot_from_blasting_nicrosil_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/nicrosil_ingot_from_smelting_nicrosil_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/pewter_ingot_from_blasting_pewter_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/pewter_ingot_from_smelting_pewter_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_blasting_deepslate_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_blasting_raw_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_blasting_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_smelting_deepslate_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_smelting_raw_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/silver_ingot_from_smelting_silver_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/steel_ingot_from_blasting_steel_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/steel_ingot_from_smelting_steel_blend.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_blasting_deepslate_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_blasting_raw_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_blasting_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_smelting_deepslate_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_smelting_raw_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/tin_ingot_from_smelting_tin_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_blasting_deepslate_zinc_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_blasting_raw_zinc_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_blasting_zinc_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_smelting_deepslate_zinc_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_smelting_raw_zinc_ore.json (94%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/{cosmere.items => misc}/zinc_ingot_from_smelting_zinc_ore.json (94%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin_ore.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc_ore.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/tags/worldgen/biome/spawn_ores.json delete mode 100644 src/datagen/generated/cosmeretools/.cache/545a26d0656f5ce884cbfae350c3577a108baac0 create mode 100644 src/datagen/generated/cosmeretools/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/cosmeretools/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 delete mode 100644 src/datagen/generated/example/.cache/1fa0b7e761d1385d265c3e6fc16617fbb79d24b6 create mode 100644 src/datagen/generated/example/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/example/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 delete mode 100644 src/datagen/generated/feruchemy/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/aluminum.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/atium.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bendalloy.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/brass.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bronze.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/cadmium.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/chromium.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/copper.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/duralumin.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/electrum.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/gold.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/iron.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/nicrosil.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/pewter.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/root.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/steel.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/tin.json delete mode 100644 src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/zinc.json rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/aluminum_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/aluminum_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/aluminum_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/atium_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/atium_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/atium_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bendalloy_bracelet_metalmind.json (94%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bendalloy_necklace_metalmind.json (94%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bendalloy_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/brass_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/brass_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/brass_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bronze_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bronze_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/bronze_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/cadmium_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/cadmium_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/cadmium_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/chromium_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/chromium_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/chromium_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/copper_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/copper_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/copper_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/duralumin_bracelet_metalmind.json (94%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/duralumin_necklace_metalmind.json (94%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/duralumin_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/electrum_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/electrum_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/electrum_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/gold_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/gold_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/gold_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/iron_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/iron_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/iron_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/nicrosil_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/nicrosil_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/nicrosil_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/pewter_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/pewter_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/pewter_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/steel_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/steel_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/steel_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/tin_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/tin_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/tin_ring_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/zinc_bracelet_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/zinc_necklace_metalmind.json (93%) rename src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/{feruchemy.metalminds => tools}/zinc_ring_metalmind.json (93%) delete mode 100644 src/datagen/generated/hemalurgy/.cache/14cfc8c609bc90dfaf9edf7b39a40affae5154fe delete mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/advancements/hemalurgy/root.json rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{cosmere.items => misc}/guide_from_blasting_iron_spike.json (94%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{cosmere.items => misc}/guide_from_smelting_iron_spike.json (94%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/aluminum_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/atium_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/bendalloy_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/brass_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/bronze_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/cadmium_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/chromium_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/copper_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/duralumin_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/electrum_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/gold_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/iron_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/lerasatium_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/lerasium_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/nicrosil_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/pewter_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/steel_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/tin_spike.json (93%) rename src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/{hemalurgy.spikes => tools}/zinc_spike.json (93%) delete mode 100644 src/datagen/generated/sandmastery/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b rename src/datagen/generated/sandmastery/.cache/{75bcd4dba6ca7d365462b0ec45e291d1056349c4 => 053b3b118f91e8b4c0c2e2484a0c644a0c507099} (72%) create mode 100644 src/datagen/generated/sandmastery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/sandmastery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{cosmere.blocks => decorations}/sand_jar_block.json (94%) rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{cosmere.blocks => decorations}/sand_spreading_tub.json (93%) rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{sandmastery => redstone}/jar.json (93%) rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{sandmastery => redstone}/sand_jar.json (93%) rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{sandmastery => tools}/qido.json (93%) rename src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/{sandmastery => tools}/sand_pouch.json (94%) delete mode 100644 src/datagen/generated/soulforgery/.cache/048958a2bfc6e32adf0697478597f5ab7e7fbb24 create mode 100644 src/datagen/generated/soulforgery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/soulforgery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 create mode 100644 src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d delete mode 100644 src/datagen/generated/surgebinding/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 delete mode 100644 src/datagen/generated/surgebinding/.cache/6f1794b6807b6703b7ba76414acccaba2dae1f14 delete mode 100644 src/datagen/generated/surgebinding/.cache/b050c542600f026370b74c0cf389e51d9c95f74e delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/blockstates/zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block_deepslate.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_ore.json rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/amethyst_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/diamond_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/emerald_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/garnet_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/heliodor_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/ruby_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/sapphire_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/smokestone_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/topaz_block_deconstruct.json (94%) rename src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/{cosmere.items => misc}/conversions/zircon_block_deconstruct.json (94%) create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json rename src/datagen/generated/surgebinding/data/{surgebinding/loot_tables/blocks/diamond_block.json => cosmere/loot_tables/blocks/lead_ore.json} (72%) create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json rename src/datagen/generated/surgebinding/data/{surgebinding/loot_tables/blocks/amethyst_block.json => cosmere/loot_tables/blocks/tin_block.json} (72%) rename src/datagen/generated/surgebinding/data/{surgebinding/loot_tables/blocks/garnet_block.json => cosmere/loot_tables/blocks/tin_ore.json} (72%) create mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json rename src/datagen/generated/surgebinding/data/{surgebinding/loot_tables/blocks/emerald_block.json => cosmere/loot_tables/blocks/zinc_ore.json} (72%) create mode 100644 src/datagen/generated/surgebinding/data/cosmere/tags/worldgen/biome/spawn_ores.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/amethyst.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/diamond.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/emerald.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/garnet.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/heliodor.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/ruby.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/sapphire.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/smokestone.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/topaz.json delete mode 100644 src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/zircon.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_blasting_deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_smelting_deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_blasting_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_smelting_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_blasting_deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_smelting_deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_blasting_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_smelting_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_blasting_deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_smelting_deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_blasting_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_smelting_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_blasting_deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_smelting_deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_blasting_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_smelting_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_blasting_deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_smelting_deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_blasting_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_smelting_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_blasting_deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_smelting_deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_blasting_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_smelting_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_blasting_deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_smelting_deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_blasting_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_smelting_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_blasting_deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_smelting_deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_blasting_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_smelting_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_blasting_deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_smelting_deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_blasting_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_smelting_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_blasting_deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_smelting_deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_blasting_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_smelting_zircon_ore.json rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/amethyst_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/diamond_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/emerald_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/garnet_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/heliodor_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/ruby_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/sapphire_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/smokestone_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/topaz_block.json (93%) rename src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/{cosmere.blocks => decorations}/zircon_block.json (93%) delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_ore.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/entities/chull.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_blasting_deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_smelting_deepslate_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_blasting_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_smelting_amethyst_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_blasting_deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_smelting_deepslate_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_blasting_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_smelting_diamond_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_blasting_deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_smelting_deepslate_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_blasting_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_smelting_emerald_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_blasting_deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_smelting_deepslate_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_blasting_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_smelting_garnet_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_blasting_deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_smelting_deepslate_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_blasting_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_smelting_heliodor_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_blasting_deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_smelting_deepslate_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_blasting_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_smelting_ruby_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_blasting_deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_smelting_deepslate_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_blasting_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_smelting_sapphire_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_blasting_deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_smelting_deepslate_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_blasting_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_smelting_smokestone_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_blasting_deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_smelting_deepslate_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_blasting_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_smelting_topaz_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_blasting_deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_smelting_deepslate_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_blasting_zircon_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_smelting_zircon_ore.json diff --git a/src/datagen/generated/allomancy/.cache/2326a4aabce608f922c63b97aebd9504cbbeab88 b/src/datagen/generated/allomancy/.cache/2326a4aabce608f922c63b97aebd9504cbbeab88 deleted file mode 100644 index a2e6599cc..000000000 --- a/src/datagen/generated/allomancy/.cache/2326a4aabce608f922c63b97aebd9504cbbeab88 +++ /dev/null @@ -1,19 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.6586563 Allomancy Advancements -dfe00ba5ca3b199bbe07b5edd0d1f6f3ca050ae7 data/allomancy/advancements/allomancy/aluminum.json -b5473f20738035c8122fa1fdd6387d29c39871a6 data/allomancy/advancements/allomancy/atium.json -6b57fb6814f9f0181803a24a5faf49e4c26ab5cd data/allomancy/advancements/allomancy/bendalloy.json -ce6950abd3104140bee4bb84f0027a95ca896286 data/allomancy/advancements/allomancy/brass.json -5425ee87c04c10162c065da23e8438b957d98465 data/allomancy/advancements/allomancy/bronze.json -e82f9dda54e708100c636605116dc27bc505848b data/allomancy/advancements/allomancy/cadmium.json -6b508b3e5d4198edc0f83b8af12a1818395622bd data/allomancy/advancements/allomancy/chromium.json -cc7bc2899707b515c0ba1ffc3ce0866e116dae5e data/allomancy/advancements/allomancy/copper.json -6b9e44eaa59c04bd6b8a8101a7168309be9ce855 data/allomancy/advancements/allomancy/duralumin.json -df86e5d28fbcc02cd4fa93e05695462c11649c66 data/allomancy/advancements/allomancy/electrum.json -cd998687ff85ca9d56eca12b53b111f5f75e06d3 data/allomancy/advancements/allomancy/gold.json -ece4a71135651b072c150aff420712084a8d747d data/allomancy/advancements/allomancy/iron.json -9656061b3da6fcac61f0574506af6c427fb8f010 data/allomancy/advancements/allomancy/nicrosil.json -faa56044354e6460f30878afa78cb311ad05d9e2 data/allomancy/advancements/allomancy/pewter.json -464455e28272d31efab7e355ae2f054f2567dc5d data/allomancy/advancements/allomancy/root.json -1378f02c57fd758cae46d8568d9033e481d91474 data/allomancy/advancements/allomancy/steel.json -168c5f8d472c6bf6f332bb6cf4cf9573e9313813 data/allomancy/advancements/allomancy/tin.json -b73bdc98ccd56b14002e05bf404affd2ab2fdd4b data/allomancy/advancements/allomancy/zinc.json diff --git a/src/datagen/generated/allomancy/.cache/33e127e6612844751945f5810028d222595a199c b/src/datagen/generated/allomancy/.cache/33e127e6612844751945f5810028d222595a199c index 0aa90e80c..c7b142333 100644 --- a/src/datagen/generated/allomancy/.cache/33e127e6612844751945f5810028d222595a199c +++ b/src/datagen/generated/allomancy/.cache/33e127e6612844751945f5810028d222595a199c @@ -1,4 +1,4 @@ -// 1.19.2 2023-08-05T17:13:32.50061 Item Models: allomancy +// 1.20.1 2024-10-09T13:22:13.3395565 Item Models: allomancy 81c96996e349f751bedf23b075c2981721fb76d0 assets/allomancy/models/item/coin_pouch.json e82bd90fb9277f12fa679fb05b3e6af79c724fbb assets/allomancy/models/item/metal_vial.json b1fc9e10f610b74182b209d5e872439f2a296b41 assets/allomancy/models/item/mistcloak.json diff --git a/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 index 5c7276b93..f8d703a5b 100644 --- a/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,21 +1,21 @@ -// 1.19.2 2024-03-16T13:15:24.2699141 PatchouliGeneration -9a35dabf30aea20c86f3776639599f4c047a8992 data/allomancy/patchouli_books/guide/en_us/categories/allomancy.json -dfe7406fcada2113c29faddd0c1a879991cedd46 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json -1b9b2cc277e6326b4f00ef38d581057dbd50ca00 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json -9c530479565aaeb0f12d5884ea8fb891b3c0d4b9 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json -4d247148dc0d78e34fe343969a8fcbe64bbb4569 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json -1dfff2532845f3b1e0198633822445ab864ffb0c data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json -fe00014608b286b94c9a2b9eae8c572bdbc58ca6 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json -5b2823fdf50c3ce4cefcc40211b70c0353ea5956 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json -85ac4863bd937f269f89863bd3d0ecb58348691e data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json -f3da74616a91dd293408ef536504b307ff413ccd data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json -5cf3e8e79ae8c0f8f4c27dd12bb919eed7476879 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json -f6837cde1b9452f8da1f25ac7c10b98b1cf79a54 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json -20405f04d58872554cdd4f3183913cafb3ead166 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json -cab1c7c7130a10d0346428f70eb34268be2271e6 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json -46ad7a4d65c80a2bac8b28c0b29e2eb34b4baa2e data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json -4c11a17fbb31ca35360d21854eaa5c65132c6856 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json -d1d4ee0c1dc9214177151f27c7e2b3cec429da1d data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json -8a5c37ac2c5f89041d8009dcc2021beed43af962 data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json -789690417b0861ba752ffb80a9d3786d95b2533b data/allomancy/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json -4bbcc49230ab6bc6ab33af9d86cd86316286951e data/allomancy/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json +// 1.20.1 2024-10-09T13:38:50.2669814 PatchouliGeneration +9a35dabf30aea20c86f3776639599f4c047a8992 assets/cosmere/patchouli_books/guide/en_us/categories/allomancy.json +34f94c3f6f0be01f4f1062c85d0b416f5f1046e8 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json +08a74ce8a2609a4cd81c5245950f78146c8c64e6 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +2e875c1c5f9135d34091dab079ff85ef2f3f2bc0 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_atium.json +7ca53c23da94dc6d22f7d0bdbdae4568888331f0 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +419683e8f44b0d32d5a4620666a137378ce205c3 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +653b3ce161e9eead1e9059466c206fd7951fa31b assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bronze.json +8b9e0fd98846ec9a2d8860c608313442df8cabe1 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +f1372cef6dec179f0d10cf4983c28f867c9c062c assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +affbd1c48d65622941561ca0a5019434443132cf assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_copper.json +45f351d50b6a8cf30ef32157ec0a38b5b9edb641 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_duralumin.json +123ad309628a5757ae2100c83dee918d68c84aa0 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_electrum.json +c91b4f49b075de5c7fa4f75c57bcc5c3b6c5bd9a assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_gold.json +fe2ca0dde6859e23da8a3da5c4b0448ecf9ac442 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +f4cb6c8d4ff7f82712d9172b7b79c3d4ded8b84d assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +90c7e6cb82627275a2a0cd0337aba9696b9d674b assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +b1d2ad7ba55e2de05b10c4be6acf672e92d8866d assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +cce2cd177c4f8fc8d2343a836c974dfa6f93e8f7 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_tin.json +db8bc4ba756bdb07cf2a5110ba2ebae9dab67744 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +65b80a4bc317d1f462e38e5d35d683357c6b0912 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/coin_pouch.json diff --git a/src/datagen/generated/allomancy/.cache/3b6ce84233946f4e21ac7e6988b2016b6258d63f b/src/datagen/generated/allomancy/.cache/3b6ce84233946f4e21ac7e6988b2016b6258d63f index ba76a77df..42f749465 100644 --- a/src/datagen/generated/allomancy/.cache/3b6ce84233946f4e21ac7e6988b2016b6258d63f +++ b/src/datagen/generated/allomancy/.cache/3b6ce84233946f4e21ac7e6988b2016b6258d63f @@ -1,2 +1,2 @@ -// 1.19.2 2023-08-07T12:47:23.747249 Tags: allomancy +// 1.20.1 2024-10-09T13:22:13.338555 Tags: allomancy 9185f8da9398f78e4a902fc8a23daee805e5e879 data/curios/tags/items/head.json diff --git a/src/datagen/generated/allomancy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/allomancy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 1bf566132..d624b1f54 100644 --- a/src/datagen/generated/allomancy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/allomancy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,6 +1,6 @@ -// 1.19.2 2022-11-20T19:09:29.6607831 Recipes -b713c28b6b44393543b389c3b4423e986328c34a data/allomancy/advancements/recipes/cosmere.items/coin_pouch.json -67d10d1cf2469d477bd38bf3346da441dfd52a91 data/allomancy/advancements/recipes/cosmere.items/metal_vial.json -46f98acd99a6be45dd6e62538025a924ed8cea5d data/allomancy/recipes/coin_pouch.json -60f315841ea01a2eeb29508e9014b6a66b28b6a6 data/allomancy/recipes/metal_vial.json -5377db94c7ddbd8768415ba695120fadfb68e51d data/allomancy/recipes/vial_mixing.json +// 1.20.1 2024-10-09T13:22:13.338555 Recipes +2ab76b8b72d83f1207051efc1cb9174ae9ae4a61 data/allomancy/advancements/recipes/tools/coin_pouch.json +ff01905c7528be493d7b447b09e20762cd818089 data/allomancy/advancements/recipes/tools/metal_vial.json +97699dc7b7a7cd857564421ad0cafff04b654089 data/allomancy/recipes/coin_pouch.json +8ad78df11acb7d92cf1169192b00ab592dc78b93 data/allomancy/recipes/metal_vial.json +08792c13f9fd6638a1e2f0b0a267e81ca8c42849 data/allomancy/recipes/vial_mixing.json diff --git a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 81b0af500..0529fc505 100644 --- a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2024-03-16T13:15:24.2669114 Languages: en_us -97072280db2b99c18e309b59dc8a5397ced51b15 assets/allomancy/lang/en_us.json +// 1.20.1 2024-10-09T14:04:49.1493018 Languages: en_us +28430e7d470aeff4a7185ba71e4489a659c9f1bb assets/allomancy/lang/en_us.json diff --git a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json index f0d5a6550..292d8cc96 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json +++ b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json @@ -87,6 +87,7 @@ "item.allomancy.coin_pouch": "Coin Pouch", "item.allomancy.metal_vial": "Metal Vial", "item.allomancy.mistcloak": "Mistcloak", + "itemGroup.allomancy.items": "Allomancy Items", "key.cosmere.allomancy.pull": "Pull", "key.cosmere.allomancy.push": "Push", "key.cosmere.allomancy.riot": "Riot", diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json index 248d17f82..0c724f43b 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who can only burn $(thing)aluminum$() is known as a \"$(thing)Aluminum Gnat$()\" as they gain no discernible effect from burning their metal. A mistborn burning aluminum will wipe all their metal reserves, including aluminum." + "text": "A misting who can only burn $(thing)aluminum$() is known as a \"$(thing)Aluminum Gnat$()\" as they gain no discernible effect from burning their metal. A mistborn burning aluminum will wipe all their metal reserves, including aluminum.I have heard rumors that an Aluminum Gnat of considerable power could clear the effects of other sources of investiture or impurities from their bodies, but this has not been confirmed to me. (Not yet implemented)" } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json index 256bb29b8..249add745 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_bendalloy.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)bendalloy$() is known as a \"$(thing)Slider$()\". A slider creates a bubble around them in which everyone moves slower around them." + "text": "A misting who burns $(thing)bendalloy$() is known as a \"$(thing)Slider$()\". A slider creates a bubble around them in which time speeds up. To anyone inside of the time bubble, everything outside appears to move much more slowly." } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json index d4f241658..a20b21af6 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_brass.json @@ -5,7 +5,11 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)brass$() is known as a \"$(thing)Soother$()\". A creature being manipulated by a soother will act far more pacified, reducing their willingness to engage in combat." + "text": "A misting who burns $(thing)brass$() is known as a \"$(thing)Soother$()\". A creature being manipulated by a soother will act far more pacified, reducing their willingness to engage in combat. A soother can use their powers by pressing either $(k:k:cosmere.allomacy.soothe)$() or $(k:key.cosmere.manifestation.use.active)$()." + }, + { + "type": "text", + "text": "Soothers have reported recently that their allomancy has been acting different, resulting in creatures that seem confused. (This feature is bugged.)" } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json index f9ee75ca0..0066956e7 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_cadmium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)cadmium$() is known as a \"$(thing)Pulser$()\". a pulser creates a bubble around them in which everyone moves faster around them." + "text": "A misting who burns $(thing)cadmium$() is known as a \"$(thing)Pulser$()\". a pulser creates a bubble around them in which time slows down. To anyone inside this time bubble, everything outside appears to move faster." } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json index 04004b2be..f00ea3548 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_chromium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)chromium$() is known as a \"$(thing)Leecher$()\". A leecher gazing upon an allomancer can deplete their metal reserves, as if they were burning aluminum themselves." + "text": "A misting who burns $(thing)chromium$() is known as a \"$(thing)Leecher$()\". A leecher gazing upon an allomancer can deplete their metal reserves, as if the target were burning aluminum themselves." } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json index c848205e5..25d80619d 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_iron.json @@ -6,6 +6,10 @@ { "type": "text", "text": "A misting who burns $(thing)iron$() is known as a \"$(thing)Lurcher$()\". Ironpulling is affected by the normal laws of physics. If a lurcher were to pull on something that weighs more than them, they'd be pulled towards it. If they pulled on something lighter, the object would move. If both were of similar weight, they'd both move." + }, + { + "type": "text", + "text": "A lurcher can pull on items that contain metal by pressing $(k:key.cosmere.allomancy.pull)$()" } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json index 502a43357..c5540bbe2 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_nicrosil.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)nicrosil$() is known as a \"$(thing)Nicroburst$()\". A nicroburst can empower the allomancy of another with physical contact, as if they were burning duralumin themselves." + "text": "A misting who burns $(thing)nicrosil$() is known as a \"$(thing)Nicroburst$()\". A nicroburst can empower the allomancy of another with physical contact, as if the target were burning duralumin themselves." } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json index 99ea4419a..9674103f4 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_pewter.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)pewter$() is known as a \"$(thing)Thug$()\". While burning pewter, a pewterarm becomes faster, considerably stronger, and more resistant to punishment." + "text": "A misting who burns $(thing)pewter$() is known as a \"$(thing)Thug$()\". While burning pewter, a pewterarm becomes faster, considerably stronger, and more resistant to punishment. However, they need to be careful because if they run out of pewter to burn, they will immediately feel all the pain they were shrugging off. This can mean instant death in extreme cases." } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json index e1bedd48a..a6f5267b6 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_steel.json @@ -9,11 +9,14 @@ }, { "type": "text", - "text": "If they pushed on something lighter, the object would move. Clever use of Steelpushing can lead to a pseudo flight through use of small metal objects, such as coins or nuggets. Many coinshots generally carry around a pouch of coins, for ease of access." + "text": "If they pushed on something lighter, the object would move. Clever use of Steelpushing can lead to a pseudo flight through use of small metal objects, such as coins or nuggets. Many coinshots generally carry around a pouch of coins, for ease of access. A Coinshot can access their abilities by pressing $(k:key.cosmere.allomancy.push)$()" }, { - "type": "patchouli:crafting", - "recipe": "allomancy:coin_pouch" + "type": "relations", + "entries": [ + "coinPouchEntry" + ], + "text": "Coin Pouch" } ], "priority": false, diff --git a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json index 8de846341..6831000a7 100644 --- a/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json +++ b/src/datagen/generated/allomancy/assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_zinc.json @@ -5,7 +5,11 @@ "pages": [ { "type": "text", - "text": "A misting who burns $(thing)zinc$() is known as a \"$(thing)Rioter$()\". A creature being manipulated by a rioter will act far more aggressive, turning even the most pacified of animals into bloodthirsty beasts." + "text": "A misting who burns $(thing)zinc$() is known as a \"$(thing)Rioter$()\". A creature being manipulated by a rioter will act far more aggressive, turning even the most pacified of animals into bloodthirsty beasts. A rioter can use their powers by pressing either $(k:key.cosmere.allomacy.riot)$() or $(k:key.cosmere.manifestation.use.active)$()." + }, + { + "type": "text", + "text": "Rioters have reported recently that their allomancy has been acting different, resulting in creatures that seem confused. (This feature is bugged.)" } ], "priority": false, diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/aluminum.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/aluminum.json deleted file mode 100644 index 9de48800e..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/aluminum.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/aluminum" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.aluminum.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:aluminum_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.aluminum.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/atium.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/atium.json deleted file mode 100644 index 389143b49..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/atium.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/atium" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.atium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:atium_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.atium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bendalloy.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bendalloy.json deleted file mode 100644 index b7342d617..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bendalloy.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/bendalloy" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.bendalloy.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:bendalloy_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.bendalloy.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/brass.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/brass.json deleted file mode 100644 index 01c1d217e..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/brass.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/brass" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.brass.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:brass_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.brass.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bronze.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bronze.json deleted file mode 100644 index 69da1aa12..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/bronze.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/bronze" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.bronze.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:bronze_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.bronze.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/cadmium.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/cadmium.json deleted file mode 100644 index 1d2c3ea8e..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/cadmium.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/cadmium" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.cadmium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:cadmium_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.cadmium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/chromium.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/chromium.json deleted file mode 100644 index 654e84fd9..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/chromium.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/chromium" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.chromium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:chromium_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.chromium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/copper.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/copper.json deleted file mode 100644 index edaf716d9..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/copper.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/copper" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.copper.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:copper_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.copper.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/duralumin.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/duralumin.json deleted file mode 100644 index 1e20488b6..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/duralumin.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/duralumin" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.duralumin.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:duralumin_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.duralumin.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/electrum.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/electrum.json deleted file mode 100644 index 42456ee48..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/electrum.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/electrum" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.electrum.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:electrum_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.electrum.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/gold.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/gold.json deleted file mode 100644 index 98015a587..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/gold.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/gold" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.gold.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "minecraft:gold_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.gold.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/iron.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/iron.json deleted file mode 100644 index 4b8343734..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/iron.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/iron" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.iron.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "minecraft:iron_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.iron.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/nicrosil.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/nicrosil.json deleted file mode 100644 index 2b12f9d4a..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/nicrosil.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/nicrosil" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.nicrosil.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:nicrosil_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.nicrosil.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/pewter.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/pewter.json deleted file mode 100644 index 4925ae467..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/pewter.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/pewter" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.pewter.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:pewter_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.pewter.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/root.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/root.json deleted file mode 100644 index 327534525..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/root.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "criteria": { - "tick": { - "conditions": { - "items": [ - null - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", - "description": { - "translate": "advancements.allomancy.allomancy.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "allomancy:metal_vial" - }, - "show_toast": false, - "title": { - "translate": "advancements.allomancy.allomancy.title" - } - }, - "requirements": [ - [ - "tick" - ] - ] -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/steel.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/steel.json deleted file mode 100644 index 72d686de2..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/steel.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/steel" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.steel.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:steel_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.steel.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/tin.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/tin.json deleted file mode 100644 index 46952588b..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/tin.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/tin" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.tin.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:tin_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.tin.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/zinc.json b/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/zinc.json deleted file mode 100644 index 365979f86..000000000 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/allomancy/zinc.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "parent": "allomancy:allomancy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "tag": "forge:nuggets/zinc" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.allomancy.allomancy.zinc.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "cosmere:zinc_nugget" - }, - "show_toast": true, - "title": { - "translate": "advancements.allomancy.allomancy.zinc.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/coin_pouch.json b/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/coin_pouch.json similarity index 93% rename from src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/coin_pouch.json rename to src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/coin_pouch.json index 48a5f41bf..85ebda202 100644 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/coin_pouch.json +++ b/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/coin_pouch.json @@ -28,5 +28,6 @@ "recipes": [ "allomancy:coin_pouch" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/metal_vial.json b/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/metal_vial.json similarity index 93% rename from src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/metal_vial.json rename to src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/metal_vial.json index 5f7ee3436..292cb918f 100644 --- a/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/cosmere.items/metal_vial.json +++ b/src/datagen/generated/allomancy/data/allomancy/advancements/recipes/tools/metal_vial.json @@ -30,5 +30,6 @@ "recipes": [ "allomancy:metal_vial" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/recipes/coin_pouch.json b/src/datagen/generated/allomancy/data/allomancy/recipes/coin_pouch.json index b15e6d445..86f44e062 100644 --- a/src/datagen/generated/allomancy/data/allomancy/recipes/coin_pouch.json +++ b/src/datagen/generated/allomancy/data/allomancy/recipes/coin_pouch.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "equipment", "ingredients": [ { "tag": "forge:leather" diff --git a/src/datagen/generated/allomancy/data/allomancy/recipes/metal_vial.json b/src/datagen/generated/allomancy/data/allomancy/recipes/metal_vial.json index e4f6d5045..231883bef 100644 --- a/src/datagen/generated/allomancy/data/allomancy/recipes/metal_vial.json +++ b/src/datagen/generated/allomancy/data/allomancy/recipes/metal_vial.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "key": { "X": { "item": "minecraft:iron_nugget" @@ -14,5 +15,6 @@ ], "result": { "item": "allomancy:metal_vial" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/allomancy/data/allomancy/recipes/vial_mixing.json b/src/datagen/generated/allomancy/data/allomancy/recipes/vial_mixing.json index 2e60ad79c..a2c956872 100644 --- a/src/datagen/generated/allomancy/data/allomancy/recipes/vial_mixing.json +++ b/src/datagen/generated/allomancy/data/allomancy/recipes/vial_mixing.json @@ -1,3 +1,4 @@ { - "type": "allomancy:vial_mix" + "type": "allomancy:crafting_vial_mix", + "category": "misc" } \ No newline at end of file diff --git a/src/datagen/generated/aondor/.cache/1348f526bbf5dfe88b837c04b91be2f71c59740d b/src/datagen/generated/aondor/.cache/1348f526bbf5dfe88b837c04b91be2f71c59740d deleted file mode 100644 index ea2bbad8f..000000000 --- a/src/datagen/generated/aondor/.cache/1348f526bbf5dfe88b837c04b91be2f71c59740d +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0302573 AonDor Advancements diff --git a/src/datagen/generated/aondor/.cache/457b0b1d8ad1d3ce474cf329ea36fc02f640a6c9 b/src/datagen/generated/aondor/.cache/457b0b1d8ad1d3ce474cf329ea36fc02f640a6c9 index d5e48c22f..c6b72c237 100644 --- a/src/datagen/generated/aondor/.cache/457b0b1d8ad1d3ce474cf329ea36fc02f640a6c9 +++ b/src/datagen/generated/aondor/.cache/457b0b1d8ad1d3ce474cf329ea36fc02f640a6c9 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0312578 Item Models: aondor +// 1.20.1 2024-10-09T13:22:13.4267484 Item Models: aondor diff --git a/src/datagen/generated/aondor/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/aondor/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..010697747 --- /dev/null +++ b/src/datagen/generated/aondor/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.4257414 Loot Tables diff --git a/src/datagen/generated/aondor/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/aondor/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index f431b7018..000000000 --- a/src/datagen/generated/aondor/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0302573 LootTables diff --git a/src/datagen/generated/aondor/.cache/68a8b808418fcd4c550b2bbef53fb17032dfe059 b/src/datagen/generated/aondor/.cache/68a8b808418fcd4c550b2bbef53fb17032dfe059 index c18999922..eeb2cd8ba 100644 --- a/src/datagen/generated/aondor/.cache/68a8b808418fcd4c550b2bbef53fb17032dfe059 +++ b/src/datagen/generated/aondor/.cache/68a8b808418fcd4c550b2bbef53fb17032dfe059 @@ -1,3 +1,3 @@ -// 1.19.2 2023-11-22T13:35:41.0312578 AonDor PatchouliGeneration -766c1d54106cb060fecd5d74550b07314ed1a23e data/aondor/patchouli_books/guide/en_us/categories/aondor.json -8e80485f84acb3d3154fa66bf4bda98418d419ea data/aondor/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json +// 1.20.1 2024-10-09T13:38:50.3271199 AonDor PatchouliGeneration +766c1d54106cb060fecd5d74550b07314ed1a23e assets/cosmere/patchouli_books/guide/en_us/categories/aondor.json +7706da94258f0159ffabc7f507b83c99894a54df assets/cosmere/patchouli_books/guide/en_us/entries/aondor/aondor_basics.json diff --git a/src/datagen/generated/aondor/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/aondor/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 3c55729d8..06dfdc2bc 100644 --- a/src/datagen/generated/aondor/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/aondor/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0292564 Recipes +// 1.20.1 2024-10-09T13:22:13.4267484 Recipes diff --git a/src/datagen/generated/aondor/.cache/a2da15235c39ab67a641752ec6d98b2ae4fd48a5 b/src/datagen/generated/aondor/.cache/a2da15235c39ab67a641752ec6d98b2ae4fd48a5 index c0a4e424e..cee2fab99 100644 --- a/src/datagen/generated/aondor/.cache/a2da15235c39ab67a641752ec6d98b2ae4fd48a5 +++ b/src/datagen/generated/aondor/.cache/a2da15235c39ab67a641752ec6d98b2ae4fd48a5 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0302573 Tags: aondor +// 1.20.1 2024-10-09T13:22:13.427738 Tags: aondor diff --git a/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index c3f80d27f..8fc04dec4 100644 --- a/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1,2 @@ -// 1.19.2 2023-11-22T13:35:41.0312578 Languages: en_us +// 1.20.1 2024-10-09T14:02:55.9602511 Languages: en_us +0edf704ff48d71a6be69ba2f2d03a67e538fc738 assets/aondor/lang/en_us.json diff --git a/src/datagen/generated/aondor/assets/aondor/lang/en_us.json b/src/datagen/generated/aondor/assets/aondor/lang/en_us.json new file mode 100644 index 000000000..1b6ff4660 --- /dev/null +++ b/src/datagen/generated/aondor/assets/aondor/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "itemGroup.aondor.items": "Aon Dor Items" +} \ No newline at end of file diff --git a/src/datagen/generated/aviar/.cache/3e2d1f5e57812959258e594888869e91a5496a56 b/src/datagen/generated/aviar/.cache/3e2d1f5e57812959258e594888869e91a5496a56 index 854d3ed51..05975d0d8 100644 --- a/src/datagen/generated/aviar/.cache/3e2d1f5e57812959258e594888869e91a5496a56 +++ b/src/datagen/generated/aviar/.cache/3e2d1f5e57812959258e594888869e91a5496a56 @@ -1,3 +1,3 @@ -// 1.19.2 2023-11-19T15:52:48.8065699 Item Models: aviar +// 1.20.1 2024-10-09T13:22:13.3996172 Item Models: aviar 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/aviar/models/item/aviar_spawn_egg.json bef8eebacca0f5ca942f0b895dbff8e7abd6278a assets/aviar/models/item/fruit_of_patji.json diff --git a/src/datagen/generated/aviar/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/aviar/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..41aac733f --- /dev/null +++ b/src/datagen/generated/aviar/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.4006173 Loot Tables diff --git a/src/datagen/generated/aviar/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/aviar/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 75c59f9c2..000000000 --- a/src/datagen/generated/aviar/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-17T22:05:04.3832512 LootTables diff --git a/src/datagen/generated/aviar/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/aviar/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 0889abc21..15cf3511e 100644 --- a/src/datagen/generated/aviar/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/aviar/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2023-11-17T21:13:57.0618079 Recipes +// 1.20.1 2024-10-09T13:22:13.4006173 Recipes diff --git a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 8afcca3b2..b4fcc89e8 100644 --- a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-19T14:06:10.7458019 Languages: en_us +// 1.20.1 2024-10-09T13:22:13.4016179 Languages: en_us fc9b807f85e395e0e1947b2f107b3094bf0ce335 assets/aviar/lang/en_us.json diff --git a/src/datagen/generated/aviar/.cache/db13d68236ce24768410ad17bbad099c91fec9a8 b/src/datagen/generated/aviar/.cache/db13d68236ce24768410ad17bbad099c91fec9a8 index 513d9007e..b396e6bd5 100644 --- a/src/datagen/generated/aviar/.cache/db13d68236ce24768410ad17bbad099c91fec9a8 +++ b/src/datagen/generated/aviar/.cache/db13d68236ce24768410ad17bbad099c91fec9a8 @@ -1,5 +1,5 @@ -// 1.19.2 2023-11-22T13:35:40.9962284 Aviar PatchouliGeneration -c09484516f71f0130cde6ceccdd3dba854516f71 data/aviar/patchouli_books/guide/en_us/categories/aviar.json -5c2b34b7fb1b06d91492d0cf586d7cf705c8d870 data/aviar/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json -d6cab4b9c7de266971b5b426a1f0f3cadb2f4c1a data/aviar/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json -55d2958683c0e5a503ff3d5c32b75a917d645ff6 data/aviar/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json +// 1.20.1 2024-10-09T13:38:50.3089412 Aviar PatchouliGeneration +c09484516f71f0130cde6ceccdd3dba854516f71 assets/cosmere/patchouli_books/guide/en_us/categories/aviar.json +bdd34080d6cbb68da38a503728a9ea7f766b7fe4 assets/cosmere/patchouli_books/guide/en_us/entries/aviar/aviar_basics.json +12d6986faf6d8622ee08d409cd059e32052f19f2 assets/cosmere/patchouli_books/guide/en_us/entries/aviar/breed_abilities.json +5b3c7dbb608a6f3e9351a441abe8ff273eddb978 assets/cosmere/patchouli_books/guide/en_us/entries/aviar/how_to_get_aviar.json diff --git a/src/datagen/generated/aviar/.cache/e130b7356d169b5364790e64711bf69a7f5bef98 b/src/datagen/generated/aviar/.cache/e130b7356d169b5364790e64711bf69a7f5bef98 deleted file mode 100644 index dc2fcb4cb..000000000 --- a/src/datagen/generated/aviar/.cache/e130b7356d169b5364790e64711bf69a7f5bef98 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-17T21:13:57.0618079 Aviar Advancements diff --git a/src/datagen/generated/aviar/.cache/e932775582821fe5f079bfff77f1b9c34a22bca1 b/src/datagen/generated/aviar/.cache/e932775582821fe5f079bfff77f1b9c34a22bca1 index 337199924..efcefb84c 100644 --- a/src/datagen/generated/aviar/.cache/e932775582821fe5f079bfff77f1b9c34a22bca1 +++ b/src/datagen/generated/aviar/.cache/e932775582821fe5f079bfff77f1b9c34a22bca1 @@ -1 +1 @@ -// 1.19.2 2023-11-17T22:05:04.3812494 Tags: aviar +// 1.20.1 2024-10-09T13:22:13.4006173 Tags: aviar diff --git a/src/datagen/generated/awakening/.cache/0941a75e8dd932c4ad270b26681f58beacb09c53 b/src/datagen/generated/awakening/.cache/0941a75e8dd932c4ad270b26681f58beacb09c53 index 817e1a152..2ea3ebfec 100644 --- a/src/datagen/generated/awakening/.cache/0941a75e8dd932c4ad270b26681f58beacb09c53 +++ b/src/datagen/generated/awakening/.cache/0941a75e8dd932c4ad270b26681f58beacb09c53 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0682894 Item Models: awakening +// 1.20.1 2024-10-09T13:22:13.4698811 Item Models: awakening diff --git a/src/datagen/generated/awakening/.cache/1229fb9899534b7b5cb6c13eb36250e23af7df0a b/src/datagen/generated/awakening/.cache/1229fb9899534b7b5cb6c13eb36250e23af7df0a deleted file mode 100644 index 11fd223b6..000000000 --- a/src/datagen/generated/awakening/.cache/1229fb9899534b7b5cb6c13eb36250e23af7df0a +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0672888 Awakening Advancements diff --git a/src/datagen/generated/awakening/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/awakening/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..8fb0b4fa0 --- /dev/null +++ b/src/datagen/generated/awakening/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.4688806 Loot Tables diff --git a/src/datagen/generated/awakening/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/awakening/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 1919aefcd..000000000 --- a/src/datagen/generated/awakening/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0702902 LootTables diff --git a/src/datagen/generated/awakening/.cache/8d71f8cd3fe3fe64399f7174312823c4481b46dc b/src/datagen/generated/awakening/.cache/8d71f8cd3fe3fe64399f7174312823c4481b46dc index e30c9eeb4..9943ed859 100644 --- a/src/datagen/generated/awakening/.cache/8d71f8cd3fe3fe64399f7174312823c4481b46dc +++ b/src/datagen/generated/awakening/.cache/8d71f8cd3fe3fe64399f7174312823c4481b46dc @@ -1,3 +1,3 @@ -// 1.19.2 2023-11-22T13:35:41.0692897 Awakening PatchouliGeneration -d6f9e4d31e4cbdc43edcb5f27fd1351093625cca data/awakening/patchouli_books/guide/en_us/categories/awakening.json -609c8c2f436bc4cbdf8272e2d1ed429b4472d1ef data/awakening/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json +// 1.20.1 2024-10-09T13:38:50.3513975 Awakening PatchouliGeneration +d6f9e4d31e4cbdc43edcb5f27fd1351093625cca assets/cosmere/patchouli_books/guide/en_us/categories/awakening.json +0e1e550f66bd2282becb58b06d85e231622899d6 assets/cosmere/patchouli_books/guide/en_us/entries/awakening/awakening_basics.json diff --git a/src/datagen/generated/awakening/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/awakening/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index c5ec93327..5c1897dbd 100644 --- a/src/datagen/generated/awakening/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/awakening/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0682894 Recipes +// 1.20.1 2024-10-09T13:22:13.4688806 Recipes diff --git a/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 2b66632d6..f8385829e 100644 --- a/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0702902 Languages: en_us +// 1.20.1 2024-10-09T13:22:13.4698811 Languages: en_us diff --git a/src/datagen/generated/awakening/.cache/f773dd59223378bbd8a7f8ae49aec06c9566c4e2 b/src/datagen/generated/awakening/.cache/f773dd59223378bbd8a7f8ae49aec06c9566c4e2 index 19725c0d8..fa352f5f4 100644 --- a/src/datagen/generated/awakening/.cache/f773dd59223378bbd8a7f8ae49aec06c9566c4e2 +++ b/src/datagen/generated/awakening/.cache/f773dd59223378bbd8a7f8ae49aec06c9566c4e2 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0672888 Tags: awakening +// 1.20.1 2024-10-09T13:22:13.4678797 Tags: awakening diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index ae63a122a..0c7b0044d 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,7 +1,8 @@ -// 1.19.2 2023-11-12T09:46:50.838269 Tags: cosmere +// 1.20.1 2024-10-09T13:22:13.1297614 Tags: cosmere 22892348b7c9b1ae120b0d154815212882db2906 data/cosmere/tags/blocks/contains_metal.json 29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json 09dea08ab07afd676fd127be1ad67dd3fcb25f55 data/cosmere/tags/items/contains_metal.json +b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ores.json 2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json 8a55b8e8e7325d8a829173ccfc5afe9c8962ffcc data/forge/tags/blocks/ores/cadmium.json 9404f97aea7bc2f029fab25dda2ef4f9d750d890 data/forge/tags/blocks/ores/chromium.json diff --git a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 new file mode 100644 index 000000000..6c1f56edd --- /dev/null +++ b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.1357663 Cosmere PatchouliGeneration diff --git a/src/datagen/generated/cosmere/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/cosmere/.cache/3b2a435655541c92d690318b57013336949ed348 deleted file mode 100644 index 4071e4820..000000000 --- a/src/datagen/generated/cosmere/.cache/3b2a435655541c92d690318b57013336949ed348 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.08324 PatchouliGeneration diff --git a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 index 06ee1d404..50116eb7b 100644 --- a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 +++ b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 @@ -1,4 +1,4 @@ -// 1.19.2 2022-11-20T19:09:29.0790776 Block States: cosmere +// 1.20.1 2024-10-09T13:22:13.1407708 Block States: cosmere 83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/aluminum_block.json 9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/aluminum_ore.json 83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/atium_block.json diff --git a/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..3bca4af0a --- /dev/null +++ b/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1,40 @@ +// 1.20.1 2024-10-09T13:22:13.1357663 Loot Tables +1440a509cd4375633c42e39a73c393fac55bc5b5 data/cosmere/loot_tables/blocks/aluminum_block.json +b11f02392d505e4d09ad5b4d2ae886a9d6ec9f23 data/cosmere/loot_tables/blocks/aluminum_ore.json +cd731279bd267f94d0afd47ad08ae376ed5a9f88 data/cosmere/loot_tables/blocks/atium_block.json +56a2e680d379b39e2c6c3a3880b03054d0f12aa2 data/cosmere/loot_tables/blocks/bendalloy_block.json +7c6f0158470b2c13bf5a944fe4b405f2d271490f data/cosmere/loot_tables/blocks/brass_block.json +15931a1d5cf53294314934deae3b318f5ebee6e9 data/cosmere/loot_tables/blocks/bronze_block.json +b23765f334dad8db8a5ee67557013adaaf56aa49 data/cosmere/loot_tables/blocks/cadmium_block.json +0bbacdb84127d0788045d6c0c95c73bf2246929c data/cosmere/loot_tables/blocks/cadmium_ore.json +158625ad82a7f3412e2d8fe8ba5865ac45ea632a data/cosmere/loot_tables/blocks/chromium_block.json +9c2ceb3734a131a37b3d8b7f09f933d0123b1746 data/cosmere/loot_tables/blocks/chromium_ore.json +68c5f9187043df0179e5f770d9bb9b5bb6d92489 data/cosmere/loot_tables/blocks/copper_block.json +abb8e67ed41500f08a74b4eaf8712c217359973c data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json +a67fb03d8402fcc8af36c5cc18de613ae80ec1b3 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json +3b98ebb6b759abc221bb03d1df0375efef0cb5a8 data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json +35c7349b387170765c49f9295299077f8dc6a9db data/cosmere/loot_tables/blocks/deepslate_lead_ore.json +10ef4a9eba8d0cd10926dcd95c6a61c070c209bb data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json +cb5ddd2f0b28c21f61494ac6d8c3aca226a92e79 data/cosmere/loot_tables/blocks/deepslate_silver_ore.json +ccfd45cec43abae55960c98521af5d2fc1ff8bf2 data/cosmere/loot_tables/blocks/deepslate_tin_ore.json +b5ffc27a992f641a1b02be607bc3e1f4d0faaefc data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json +15855f9da5b35eb4abf691bbe910bb7262e14219 data/cosmere/loot_tables/blocks/duralumin_block.json +79bddf7f0ec076e19359a73e3a30d168bbe9125f data/cosmere/loot_tables/blocks/electrum_block.json +8180e3fc3f58b48b298df6a42ac4ada19c9318b7 data/cosmere/loot_tables/blocks/harmonium_block.json +beb28ea68984cc7dfb369d5702be6691285c20bf data/cosmere/loot_tables/blocks/lead_block.json +972b72b62e4a7d51d1d89587f8785c9895283e4e data/cosmere/loot_tables/blocks/lead_ore.json +055789ab56e620938e54e1740bab19bda7af019c data/cosmere/loot_tables/blocks/lerasatium_block.json +56c34b3fb3a6bcf4bb161e597e9959b2c039e7be data/cosmere/loot_tables/blocks/lerasium_block.json +e4aecb93364a450379e522040319a7f515bd35a3 data/cosmere/loot_tables/blocks/malatium_block.json +b2ecd38ab0f9269aa7e995579634007d10dcb32b data/cosmere/loot_tables/blocks/metalworking_table.json +96db278cdb580a714b53b4f819bb32d98f76e708 data/cosmere/loot_tables/blocks/nickel_block.json +9a116ab1e707a3430f806c787d4224fafbb29f6c data/cosmere/loot_tables/blocks/nickel_ore.json +119d0773f16fb3e3d612879db0535b0e7393a102 data/cosmere/loot_tables/blocks/nicrosil_block.json +52470d0e26fedc08affe611737ee8b377f6e6063 data/cosmere/loot_tables/blocks/pewter_block.json +21387fc249c02b926f4e3f8688d4bce78cb82d8b data/cosmere/loot_tables/blocks/silver_block.json +699459b5a218743771ce1a9c7ed6e2391be35156 data/cosmere/loot_tables/blocks/silver_ore.json +06b119096f6ae9abd898d00d193fa5423776e34b data/cosmere/loot_tables/blocks/steel_block.json +d53cea7faa3f4ab1cadba5b03fe7c51aac443aa9 data/cosmere/loot_tables/blocks/tin_block.json +20073cfcd2deb866089823aad28710ce3a0b4844 data/cosmere/loot_tables/blocks/tin_ore.json +bc7d9b87a09b899f9d9a2a67ff93e6ea048179d3 data/cosmere/loot_tables/blocks/zinc_block.json +ee47d2fb9c7e7edd08918d00850193b3df0b3b0c data/cosmere/loot_tables/blocks/zinc_ore.json diff --git a/src/datagen/generated/cosmere/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/cosmere/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 0bd323f76..000000000 --- a/src/datagen/generated/cosmere/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1,40 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.0842474 LootTables -6ed7835d6cb5a97885f41da18457f55920a7ac6d data/cosmere/loot_tables/blocks/aluminum_block.json -6ee2360d2be71b724e8dde61f1beb1d4b24bdb49 data/cosmere/loot_tables/blocks/aluminum_ore.json -cb50963ebeb96e8e20c0319e0a16c609a2c65cf0 data/cosmere/loot_tables/blocks/atium_block.json -4054c2fc637fc91259e966b229a5b2983d553063 data/cosmere/loot_tables/blocks/bendalloy_block.json -e7582d26c1dd571e9093d95fea597abbef09c0d9 data/cosmere/loot_tables/blocks/brass_block.json -e9e350de1dbb699d00b1c133c794799abb08ca72 data/cosmere/loot_tables/blocks/bronze_block.json -954889497519c25882f0178f2abcaaaaa309b9a4 data/cosmere/loot_tables/blocks/cadmium_block.json -f9a336b6e1aadbd416bf423815abf26acfbbabbc data/cosmere/loot_tables/blocks/cadmium_ore.json -44874b08630d181c6e49277d6416f992a3a1ae52 data/cosmere/loot_tables/blocks/chromium_block.json -99959269989d6c8e0fdb637afc2e4cfe4a2c3739 data/cosmere/loot_tables/blocks/chromium_ore.json -f88bffb110d17f4c96532f1532b99e1694b295b0 data/cosmere/loot_tables/blocks/copper_block.json -50ca8646cb8abf2ebfebb54537a9b166e03cb422 data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json -beb0a747a966c0b18799d45c8914453b2146d6c6 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json -34fe697f3c98e34abab9add3ff8a580bbbf57eb0 data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json -9eafb6adb4f32336d0c758c55b61e8018f71087a data/cosmere/loot_tables/blocks/deepslate_lead_ore.json -40d2595776cf0a4d0744921c59cb914d24d2173e data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json -44c53207f9e55e2bb32f8ca74bf9ffd57efdb232 data/cosmere/loot_tables/blocks/deepslate_silver_ore.json -027a16015808f1841f91d8b388d1674eb19d7475 data/cosmere/loot_tables/blocks/deepslate_tin_ore.json -2d00c0a16b9a43d57a5b6fd12ddfa9f96a7e78d9 data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json -dac9bdfe573960ce3cf6aaa62d89b5f8326f1347 data/cosmere/loot_tables/blocks/duralumin_block.json -647d918ce74aa13835f8f2961c12b66ceaa92180 data/cosmere/loot_tables/blocks/electrum_block.json -f3323f56a202b8d327b20c8350a04e4969230e78 data/cosmere/loot_tables/blocks/harmonium_block.json -df05fae07ae240a6e86fe7624094fe6c3f6cbaa8 data/cosmere/loot_tables/blocks/lead_block.json -0bd6b310416b21bea5bacbd945a4b1d3d809a7cd data/cosmere/loot_tables/blocks/lead_ore.json -59509ea6208e832d1087c6922b0d8e8b33bb08c2 data/cosmere/loot_tables/blocks/lerasatium_block.json -5bfb65d5b4b4583d60e8defaf9054407ad698c42 data/cosmere/loot_tables/blocks/lerasium_block.json -56a00423094bd35c225a8b00c0d8bdf0adb0624a data/cosmere/loot_tables/blocks/malatium_block.json -5526e4e12c815425eeb8aee44b4eb770ea3b76ab data/cosmere/loot_tables/blocks/metalworking_table.json -06edad7edab3def833dd611592c489301394f8b6 data/cosmere/loot_tables/blocks/nickel_block.json -d9aa91c9dcc9f2ca89b25b6b592c16cf6acfac28 data/cosmere/loot_tables/blocks/nickel_ore.json -fa42bed3e699b0edea9d9bfd99c1532726cfb50a data/cosmere/loot_tables/blocks/nicrosil_block.json -2bb663fda80fcd7a79897b667f7d7c6efc6ce634 data/cosmere/loot_tables/blocks/pewter_block.json -f222c1007fca6002208018d44b1f9de000335737 data/cosmere/loot_tables/blocks/silver_block.json -4c5ebdd2323b848ea8a2d4793543029415046b17 data/cosmere/loot_tables/blocks/silver_ore.json -004fa95449272f386bb498f90b1a6bb79aba49e8 data/cosmere/loot_tables/blocks/steel_block.json -dcfa62c715ce077c483d3397f47724b1baff05ce data/cosmere/loot_tables/blocks/tin_block.json -e629c9c078fb768f35d277c011c7a9d75ce99dad data/cosmere/loot_tables/blocks/tin_ore.json -e2f76636bb7f2bc5432d423637a9115151159178 data/cosmere/loot_tables/blocks/zinc_block.json -8647862ef47d72f2361bf5159ca8ababb3eff002 data/cosmere/loot_tables/blocks/zinc_ore.json diff --git a/src/datagen/generated/cosmere/.cache/6d6f5723d9e7fbafeec1b0bb4cc9fc2c015e9cff b/src/datagen/generated/cosmere/.cache/6d6f5723d9e7fbafeec1b0bb4cc9fc2c015e9cff index 92df5ed7b..7397ab64c 100644 --- a/src/datagen/generated/cosmere/.cache/6d6f5723d9e7fbafeec1b0bb4cc9fc2c015e9cff +++ b/src/datagen/generated/cosmere/.cache/6d6f5723d9e7fbafeec1b0bb4cc9fc2c015e9cff @@ -1,2 +1,2 @@ -// 1.19.2 2022-11-20T19:09:29.0740865 Cosmere Biome Tags +// 1.20.1 2024-10-09T13:22:13.1417723 Cosmere Biome Tags 597ce8b32486ba638537e2532c70e94111b26494 data/cosmere/tags/worldgen/biome/is_shadesmar.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 4d92b3e9c..13ad25caa 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.19.2 2022-11-20T19:09:29.07608 Item Models: cosmere +// 1.20.1 2024-10-09T13:22:13.1347657 Item Models: cosmere c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 7ef894a88..f6edba5b1 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,355 +1,355 @@ -// 1.19.2 2023-02-03T08:36:26.8330328 Recipes -77a0eac808078676e15eb82c1b3b7d89dbd6304e data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json -bcde6240066289f4e54c7ec9944611bd118a7530 data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json -0774becab0613f8e15e06d5af31b8d51b8e0f111 data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json -d8f54d54b0403e0cc4a4754fdd68627db5c6520d data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json -0a5f160165ccbd746e1077d3907b362ee68ba766 data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json -f2ab41ed22e5242fda20a6989e3d07a4e20a2186 data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json -6dcbbdbf870937282093028da4af40b2b40f7ace data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json -02b4337e22a80a59041719d4a8a3b75fb33659be data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json -f982fdf4c790471993c2f12e1e966d421817cd50 data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json -761bceee3994e46d21e98dc5dd8ae7308af22007 data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json -3a6b57ebacf0dcc8b56817f1dbe57b775abab3dd data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json -287dc10a9efca10b5804401c0b2e722a5b285fc7 data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json -397b59e9774435e0f4260b3de5485d2eb69fa6b1 data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json -a968bd84d8a4cd36159c49de6c2285722185185b data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json -69d3b21e84d16947cefbdf0f51d054136868777d data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json -d4eb5f6847e25eeb223497787c72eb5329fc6df4 data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json -344060f4aafb27d1468b61164c512d258fb0690f data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json -85846b5b59fb50be0ab6b9db101da05a9d9c0fb5 data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json -0f4c85bd8dfcdb7440c6c5e33ec5e50a19db5f42 data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json -bb57f5cd9b274df64b2e138e1dd0ae8c42846753 data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json -01c5937ee191f4b0e5db8c83b8a625ff089b9bd7 data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json -498e5a9e1b9096660f357b36bed3f9f6146644f5 data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json -aee74dcf863bc5ad4bfb8282d290a152d723edb6 data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json -acfff920abcaf8b7c1b022b9256f9d34d0317560 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json -ea252e3126472783685104aad59b950c7041d699 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json -000176a24b2ab6384e26c873c3b2cf698b682dbc data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json -f29b8029947f50cbe7004d21b3b51784ba441d88 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json -7db0b76d9700fd3b08ab27d7e8e47aa5d5a4decb data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json -b30cb564031825a4b94645c8b8d3944eafe33152 data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json -a8338d16207a6b1591d4f106cee174794f9881ca data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json -777505d379fe54b6566f59a422078d800d81735c data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json -a48e5de95f700d7a91005f9371feb0641831e0f2 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json -f2fedf07961cc9fbe9e08da0a3387b803291927e data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json -a1a0dacfaf26b681f89552680d51bb78dd1e9fb1 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json -df3999ddc5094af598d7c2a1f3b57bf9f0ed7c8a data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json -64a75e86367494e822f7ea41a9635ff3f56187b8 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json -798e2bfa6febd7514be931ae070c2b554920056e data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json -88f3ad06cbb6b298c1c49543168d12ff75c7db39 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json -0c49da27e05a39b6fc7a16caf2c4db03c2649690 data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json -17683d756f7753d16e8ce62c3aad010b4168721e data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json -1bc79f356d4b1bebc48cd86ab68710a96dde2183 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json -5b729cc3b827a9f3da2d5bee612ee783567620c6 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json -f1ea4c9fe9827bf3248b6e89bb73aad307bd2343 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json -aaa89b232a8167030cc20f264fdd23510af3b834 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json -bfc557b5c80f7847b04a8a251b95cdd92069a1a6 data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json -5caa2d0902bc235f3270c107796c6e21af030f9a data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json -784c6f85ebddcf9dbdfec7c66355bb9142797e2a data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json -ada3aa09c7f70387c3a1e845d1441dbbabe72f18 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json -a1af2c509826e4395dc19d84ce446e60f39dbac5 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json -dfdfa0baaad904dbccb0192afc0962cdc0529124 data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json -ac3bd9cdf292605d78360b9a8045849f7002ff5d data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json -d374161d962c129001cc2f99afe6bf2fd978c66f data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json -9c58dee8db3599fea966213ca43037b1344cf80f data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json -3f3c59f6f3d239f1f8d9a9346af271e1471b9dac data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json -3019e762b965c29fd7c5f07f9ee8b12b31c7f18f data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json -e103c64254c9ee847f708733c75870e5e9461c31 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json -1735f9b00b0a5290d58dd2c1ed1e2a85575434fb data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json -97a6a743dd7af29148fe4f382127d901fdc047c2 data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json -7f7feb59c3c3c581fd57ba83309c2661991ef5b0 data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json -7a51a4f8562fd7a19ca0a52e5a9a43690dc2c5e5 data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json -c322c1bb3c232841c636244582eef53642f8360f data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json -05d20963faf8e9f035b9f12c6599384332a640c5 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json -16e0b477ac998b0a0e1832ff133fde5f4d5cf125 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json -302c72583515e2ab2ddac3120f043996cc26de99 data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json -df1271022c3c95438296ccd20b53c258c1a3b59b data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json -7621b0ef2efeec5a31a9ddc4f7c12985cef4285c data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json -7be1fd5479a24f4f49792f80df15166d97d48a8d data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json -cf291e698b4afdc0f1f665cbf9e4f954c82405f1 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json -1b461a94be643f6395aec15382da4655b8374585 data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json -cf83815ae04152468b4aa3d4d209a1b4eb2eeddd data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json -ef941cc48c33abe0dd4741013c5aeb914dabf91b data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json -f5e073a217d0882b33b42654d0abd91d646817e5 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json -35a2395e5e5dca3d698612c0c498b100f0be5d07 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json -0e72c4e626a02ff2eeb77a842c8784c9663aa82a data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_deepslate_chromium_ore.json -89eeb5ea86561d6416d00745f981e1a860aa091a data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json -26332c3d11ffa48d68ae50f876edf32ee07f4f65 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json -7991a774f3934e5bc97c587eb1522d22a5ed8ca7 data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_deepslate_chromium_ore.json -1e9ec68e3b688877bee77d2b20472d3aa0ff543f data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json -775837261f34d7d7732645d3931eed544d7a6ec1 data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json -21877cc38751a2244c6ef98933e122dda4bd656b data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json -0f411f2a418e96a6011e42646be865f205df52e5 data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json -c52a82c057033b6e5a3f2d7c33b1d8bdd660df2b data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json -ed212e5ec74d5f1306b548e84f329f541ac0d177 data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json -886103ff55ce65aedc62550b1f9e06174976d73d data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json -41925ed52494be6e35797ecab3cc6f2420debe82 data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json -d17c0c42300c9a0c0f5585ceb091fd194bafb27f data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json -322f402acb200ca6cac6fdab6dc3d8504a86283c data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json -352c72454025f1ebb3e1ff641d80e957b51ccd4e data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json -ad0b45232fc5cdfe23be8184751e100f8016f5ee data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json -d0ee9719c8b95a2801810644caabcf15be2a09cc data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json -ef3ac3cd29e8b5a817c0fc4748d61f5c983c7705 data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json -7c53ead81f99ee5eb95e26e00464ebd1996ed1ce data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json -ddc41f45271ba5fddcce32ab6c3ee4e33a5199ee data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json -f7368eaec2909010838c6cc30608a9fd397f6c0d data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json -88e3d6356322109b7dd39690488902af695e12ff data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json -229c0569114ebab197fca68893354fd538a6490b data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json -d286ca9d98202b382979501ec9a3e6a2a43b8829 data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json -49b2629131b1a0892c1197ae7dee5be99d432466 data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json -893ea8ff062734f2442889a3265a565b73b74d29 data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json -ce8826c98e095dae9e611061639656bdced63b58 data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json -af71915dbd3a14431f4a1fc5dc719e6fa61c80f6 data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json -470b9696c6c8283320828e3f9bf8915c55d7810d data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json -f1358ac7fb5adb0fcc87816f7118069d04863cc8 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json -243bd9c38721b533b15afdacd199c30cf8d2f9d1 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json -9fb9c00776614f703c62ba187161e855c623ba49 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json -4280fea62b7283501e331e76cb5c709de50dadb6 data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json -ea4705d1c203ab88123c005235691a94b3513bcd data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json -e0877e45930455c00d5a822d67346c7a8c576d90 data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json -4125fefc75523307377337da68963512e42b44e7 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json -be9564ed8b316ff0660f8988f3fc7e66c4460bf5 data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json -186e1399f81785ccd0cb0176541d196717aeaf55 data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json -26c5e79bd291308648afe4b2f8ce2fffdf761a8b data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json -f4539325c0d12d257c1549b63f75b3be25fbbfd1 data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json -d937beca2dfe0b0b7f717da4e2e166a74ed57e1f data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json -eb4fe9ee9fa8b6ebe33d19a4caf96bd1ea32a6ff data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json -285a734389fdafe1ca85791e6296048f18137f0a data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json -0530257475bca00c31789ba05da7077c65a47367 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json -8076a86a496d61cfb9f009ff0892b5620bdb5148 data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json -d04e74822782728f4006593f74de449cdccf05e3 data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json -e2138211ad44446474ddfdf414d1ca67685eacfa data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json -e727dbcf2d3ecaaf437e3c8935fec3d9e25763c2 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json -962f4084afdf33801038be1b38e5f19150893301 data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json -db799b6b2caee3da64b48798546c30784edbec0e data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json -dce0dc1cbee3d68ead59d90ace4f37302ad6846a data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json -60cc42973fc9a9051a0e64c1f66b1477634eaa08 data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json -f837b45450e10567f2e248f7dd424a14ec4183ac data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json -044496a2294e8c6fc94cd7b4f627d859fbff0be5 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json -3326953464e00620b9e8f048ff52df7e62745299 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json -c6ef3b49361703a06cf8505dab73164bd4b5c4f5 data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json -9141cecb840aa3047f6304b7f3b1371568383f78 data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json -1e34603bf2657e9d100730a11becc72dc67580ff data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json -7524a9d66d881f2d3bf7b717aee912fe215a6c8a data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_deepslate_lead_ore.json -4244a72aaeda77b3829e178c6abedf1327abf635 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json -b67565ac75c5206a2d6f4aa0e4a5eff2c57668b2 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json -12d9367cf42987828e2409256cb14e75415d3f5c data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_deepslate_lead_ore.json -15632d791e209d27331b39a59cd621c06f80872a data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json -f605b9ac6da4c8891b38cb4fb5903b02e81935c1 data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json -f47103868069611a5a2de8c98144608d8de4b865 data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json -60eeb0ca668ecad5d847368646833dce52f2b29b data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json -68f004e16dfa473ed52a92804d3592c72a6834ce data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json -d915d5f1e1f74aee8190769ca4fcce6e23a6c5a9 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json -1d94fe0a707f83840b89226978b34d9f491acefd data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_deepslate_nickel_ore.json -a48b1151b4b40fe0c78b196158e9aaac8fe9382d data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json -31de945d6008af8264673335e58e7b1d0147d204 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json -7d49f68325ffac45cffc0f4079586b850847d532 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_deepslate_nickel_ore.json -3f8a9fe6e90f13aa172849e764ae411f60b16150 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json -a0147c9e89ecb8248cf3be0414d35523b1805dd4 data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json -b178796425970dd0ffbd488fca74946d56041f41 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json -d4df5c48c67bb1d1c614cf4a7e862030218eaba7 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json -f37cb4bbcfbdb32a1150418e0729103e51c81476 data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json -d19c3685b0d5a098aa0ad079d3a24fdb7d7e9d1c data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json -eaf54ad3b192da75c0c835a2b0e6ef600ca038b2 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json -229f28eb40f1146554b908145023c0590c1c2336 data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json -1f7b15d9973993d3f1e0506bbc8357e86d003357 data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json -212658c5324855d2d1527aa67d0bc866409292d4 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_deepslate_silver_ore.json -4d1140b1906eb97fbfafdb2df884fd97a1ace02b data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json -faea4edd3d904c79a909dc0e2a657d1598720120 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json -924d38a396be7444760db7443e9c9c973f6a4184 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_deepslate_silver_ore.json -de8709aa9edf7505146dd8172e61d625dc3a0743 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json -e9b0427e0ed729effcb7b9bb84d4ebdbd07149a6 data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json -de5b730098a1126bfaa0db01bbf15c3d0c597cbf data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json -664329a2328e531012c2b8810a5fce7c60b0948b data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json -55b6d9c645954cda3123a8d499bd114edfaed95b data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json -a0157cf569911cf98bd026e5a22b03bf45ea51f5 data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json -a5e56735d18939e950b229a4e1f6241b8a704140 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_deepslate_tin_ore.json -3592ffc29d4c17277b32210b17789dc47034c76a data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json -272d8dee1697554d6aa539232e1eacf3750b228d data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json -31b4ac33c43104d81adba2b9d46adb20786d6ab4 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_deepslate_tin_ore.json -41d4f846034d7e1dcdb84fa2991d2d6658c2e392 data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json -954c78a17a0f76056e7c1b9dc5d688082dfa823d data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json -350c9cbd73f50f2a5bd85750b0542952ebeadf6b data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json -4c1279355e03b450d1dc5917fcf781d1ca3f2abf data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_deepslate_zinc_ore.json -d9be3c10fe4b46b8da381b7e13ea362b894b363c data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json -d00177bc7a17808a283c60d455ca4de905d61356 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json -dd1ccd4932296dbc81882e2eba1da3cb2508bfd2 data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_deepslate_zinc_ore.json -7e72be25f9f5a813dd0603d408427d8b84595bdc data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json -e44f4dd77c116a47a730f4c900444170b0d7786b data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json -aed8ba6f40c41ebe5b6097d8f5a7799192e0b26f data/cosmere/recipes/alloying/dust_blend/bendalloy.json -715767eac5fca634180d66a588530678109554a3 data/cosmere/recipes/alloying/dust_blend/brass.json -f599d83f0b9abf0c62f26301a19ba4faed5e5f09 data/cosmere/recipes/alloying/dust_blend/bronze.json -e47f636d4d09f047725405e231bea09ee1b911c1 data/cosmere/recipes/alloying/dust_blend/duralumin.json -80ed4a47a2ee5217cc4e42fc2eb511042cb8623f data/cosmere/recipes/alloying/dust_blend/electrum.json -d646ab12491913235775c0fa15f75391f64d9e4b data/cosmere/recipes/alloying/dust_blend/nicrosil.json -b8a11f33dbcf022cb19669a24549f144f5981b12 data/cosmere/recipes/alloying/dust_blend/pewter.json -c461cedf3c89e02e27f7d0eadc0e3b9dd1edae22 data/cosmere/recipes/alloying/dust_blend/steel.json -35e69bb132bc565b63a9fbff6f1bcf6049eae916 data/cosmere/recipes/alloying/ingot_blend/bendalloy.json -1c6cf7cdd0abdea612ab2013444f7a026cda8c82 data/cosmere/recipes/alloying/ingot_blend/brass.json -cbf644117a540a81242cfe95b679932277c3ec59 data/cosmere/recipes/alloying/ingot_blend/bronze.json -381b3f599c9135aa5d407d1fbae13a25358f6865 data/cosmere/recipes/alloying/ingot_blend/duralumin.json -792ea14925ca99ae4fda665182aff60342bf24a1 data/cosmere/recipes/alloying/ingot_blend/electrum.json -f605908a5d9135b95c03ac2ef992efc8c763723f data/cosmere/recipes/alloying/ingot_blend/nicrosil.json -5281031929535da68f726b29cb99576f555ef24d data/cosmere/recipes/alloying/ingot_blend/pewter.json -ff4cfaaaa083dda3067e17b829048d368810dd6d data/cosmere/recipes/alloying/ingot_blend/steel.json -f37ea3bf5560018fa302c8b1502fd0a740a71b92 data/cosmere/recipes/alloying/raw_blend/bendalloy.json -f39ac5face05e4b7c08152679649d9be99c3392e data/cosmere/recipes/alloying/raw_blend/brass.json -54eb611e1e1d97be672ee5f24d61d298251f788f data/cosmere/recipes/alloying/raw_blend/bronze.json -d682ab056acaa8c3dbf6fa57952b5568f4df9353 data/cosmere/recipes/alloying/raw_blend/duralumin.json -8a96b24650a0e22db06e4b6258f0bbf79cf350ec data/cosmere/recipes/alloying/raw_blend/electrum.json -01ae7863a9c516393be723df33bfabf9064a11a8 data/cosmere/recipes/alloying/raw_blend/nicrosil.json -1dd6b54fb34bf54c719bd2f6ac8f8b4b034abd98 data/cosmere/recipes/alloying/raw_blend/pewter.json -095fec2c1e844b7ba9c7d8a026fdc3d5744e8a1a data/cosmere/recipes/alloying/raw_blend/steel.json -c02021058400a74ff8f35094cea8e09ae61695ac data/cosmere/recipes/aluminum_block.json -9ebc80d8f74874b278a8710ee1045d213c143b24 data/cosmere/recipes/aluminum_ingot.json -fdca44bf36ac66557e3f1a7448555a8e9d6387f0 data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json -5bd3822663922881792186b9fb717c6ec41eaf0b data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json -a6c51e2e1f7980c6364c75c85bcc4ebf9fdcbbb3 data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json -c2aa043337238a6e1c5b7f8c5548526f101be471 data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json -f1c19e63883bff5bc96bd82ffb2e409659661600 data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json -d8fc3a0b6842ad4b788b87d3962e4cb2b2ef0c7c data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json -6391454c08a0a2e34614f57ca03ec2edc3d99680 data/cosmere/recipes/atium_block.json -265a51cd0077df00b87e3010b3b5fc4c8f8aa995 data/cosmere/recipes/atium_ingot.json -62db0dd3384c1a44763e6b4dee34ed2501717ea6 data/cosmere/recipes/bendalloy_block.json -5636b5e0e1e34d33083a78615ccf2f2eb4ded965 data/cosmere/recipes/bendalloy_ingot.json -a1f33f7d1423bad549c48902871e779f81ff4a02 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json -37517a60a8db760ed41879c10b6d590250fce697 data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json -59fba64c57d10b4d0fa17a960c877a0f48dc5250 data/cosmere/recipes/brass_block.json -66668d8063863314c0e88c1520d778bb3054e41a data/cosmere/recipes/brass_ingot.json -6604443fec3153b6faeb722b0c1ed2114d99b63e data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json -e86de01427058f3822b659e0d857bfcbbe12afab data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json -072fc911fa3a0d3d3ca107e0e6c541b2cb9845cb data/cosmere/recipes/bronze_block.json -fca0d9c68a486afbb7454562eb55acfa9297a5ce data/cosmere/recipes/bronze_ingot.json -9fcefe7ae6c732d400754eb69588623fa47b87d8 data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json -913c456587fb1fd3b9606d08fef529b47c239fbe data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json -f009be39c6acaa739ff1eaa3728559e55c0c6f39 data/cosmere/recipes/cadmium_block.json -940d33fcc36998aff60234ebdfd4d6fc4857a3bb data/cosmere/recipes/cadmium_ingot.json -d6e8f0452b031b146b3b332faeef8ce87a2fdaab data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json -df2be924a9fd2c19e207b93319e0963f69368e10 data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json -4da177c50d09bec0a67c8c588d2c356cc5aa35e0 data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json -089bafdfa4766a6fc615fc5de6d33d1c82c9d72b data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json -b3049f3c03ca997c30afc02dd759ff7b6b7daca8 data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json -e81b1bec9ba0371e77ff287ca4dc50382200139b data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json -b07c1ee1f0edcb44eee649fb37d461583fa6309f data/cosmere/recipes/chromium_block.json -31bceba908ae998040f8fd0f3b90d6e202f0d1b6 data/cosmere/recipes/chromium_ingot.json -5141c5f3a9d25ca363419831278cab93bc3ba7d6 data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json -0ee93b6ec7373200a3d9f7ad928557edab596634 data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json -1fdf39cd27da8122724802b3b2c67135469fe78f data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json -1067ee6178920ecf24105de6f776ada594fcceb7 data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json -4deb17a3860e65f82c1bc7b05e59c3ad35c065aa data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json -d108b6a243f9f59b5e09422bf2d15d53193a654c data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json -f71808f576a5d50c9a92e890fc5e707d30cd2a84 data/cosmere/recipes/conversions/aluminum_block_deconstruct.json -841c2f1c536cfee700216b8178908ca81396d394 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json -b9294f3be07766870e8adb7544355d2fdfa94b26 data/cosmere/recipes/conversions/atium_block_deconstruct.json -9f42fc8350c416d93895babf8959564b4817f6a4 data/cosmere/recipes/conversions/atium_item_deconstruct.json -1f5bc2e20cf803752acb0f46c53bcec94c4ce859 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json -32b4117e9e7f66aaf0f5348da031a1c85d1417f1 data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json -f6dc922b936ea68440c27a7f92c77613cb43b97c data/cosmere/recipes/conversions/brass_block_deconstruct.json -020c9b08d35103d76dee01d1d23822d6bff0553b data/cosmere/recipes/conversions/brass_item_deconstruct.json -864e78da2bdbf1976bdc37697e001e0f6fe0ad18 data/cosmere/recipes/conversions/bronze_block_deconstruct.json -397f2cb11c1056caf665afd3e402c45e5bc5e792 data/cosmere/recipes/conversions/bronze_item_deconstruct.json -ec3bc328abe32570d05fffee95b9442643a2ff26 data/cosmere/recipes/conversions/cadmium_block_deconstruct.json -0696b61b950962fb7eb4d171d8497e7d40c441ff data/cosmere/recipes/conversions/cadmium_item_deconstruct.json -80c6a444cb90587f78a83fa61becae64d7a35168 data/cosmere/recipes/conversions/chromium_block_deconstruct.json -7a92ca8b38fff1c0000e5ad0779ee27c3065ae1a data/cosmere/recipes/conversions/chromium_item_deconstruct.json -ad17daabe3deecca1781e06d6ac5069e7de7af51 data/cosmere/recipes/conversions/copper_block_deconstruct.json -ea6409f7345644d400624b05b1be08303364c532 data/cosmere/recipes/conversions/copper_item_deconstruct.json -29e90b320632a2677b379856039599b99eeda0a6 data/cosmere/recipes/conversions/duralumin_block_deconstruct.json -397cd77f4eaf8e148d05feee5fd8b98e594636fe data/cosmere/recipes/conversions/duralumin_item_deconstruct.json -3eae786835271d96f61a5caf220e40904b77056f data/cosmere/recipes/conversions/electrum_block_deconstruct.json -5d37400c2a0f030e7c57c652b7209ae82f643d5b data/cosmere/recipes/conversions/electrum_item_deconstruct.json -8792b4313f04e7b98e8e5d0e3952ec410c79bf30 data/cosmere/recipes/conversions/harmonium_block_deconstruct.json -8e47f0df812bae3c546dbea65abd3dfb856f5559 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json -f0f39bd7d6f654bd265ae2afaf918b996931f1e4 data/cosmere/recipes/conversions/lead_block_deconstruct.json -2909c6d932ae4ff78b12e948e99258ed0bf62aae data/cosmere/recipes/conversions/lead_item_deconstruct.json -1c450dd6560670d958484c2b1ffd88cd4f18fe21 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json -4b1f9a8f65c5eab03123a319e72c7878e21cec6d data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json -97d6cbb473718a86286028ec9db960567b745f32 data/cosmere/recipes/conversions/lerasium_block_deconstruct.json -39d2538b9dcf72d145e8d95703dc312a524cf88f data/cosmere/recipes/conversions/lerasium_item_deconstruct.json -04b6edb8eb2a8123b0236a484b2d09c796d9ddac data/cosmere/recipes/conversions/malatium_block_deconstruct.json -e3f3a0e869e45baeb60b772ec2610a065b93f1e2 data/cosmere/recipes/conversions/malatium_item_deconstruct.json -f3de76aa357ec6ca01e20f110a2bce69699a6a1f data/cosmere/recipes/conversions/nickel_block_deconstruct.json -bdf72c5bae0767be57b7fac002a1c2a9cd0509bb data/cosmere/recipes/conversions/nickel_item_deconstruct.json -3742a4d1eab15025838bf0f2da74bb4b0b6eb518 data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json -5fe1ee5e857cdf85eeee13d66ce1b626bf660397 data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json -577af42c2f5ff2b82e4ae991e645f2eb27bf8888 data/cosmere/recipes/conversions/pewter_block_deconstruct.json -97400b3b619ae014143020a7c16535751cec24d0 data/cosmere/recipes/conversions/pewter_item_deconstruct.json -e7c78231c266167fa37ce8886bf643f6a4decc52 data/cosmere/recipes/conversions/silver_block_deconstruct.json -e14f877988596bc902e2e598c5b00005d3c35103 data/cosmere/recipes/conversions/silver_item_deconstruct.json -42162821f1590e4abcb4781b10a47bb397fcb14e data/cosmere/recipes/conversions/steel_block_deconstruct.json -8fd6237621e8f8c498f37ec8457f6f55042e8621 data/cosmere/recipes/conversions/steel_item_deconstruct.json -9b02600d9e0bd714511e7f8e6bde7433d8a56155 data/cosmere/recipes/conversions/tin_block_deconstruct.json -b44122ab771b4a4b939a5d6fbd98f95e589ad95f data/cosmere/recipes/conversions/tin_item_deconstruct.json -7294c18b5b774cca0d45c13e5219e3347fe8486f data/cosmere/recipes/conversions/zinc_block_deconstruct.json -14bb78dae79e147bdae3bba066d68e8e1bd98a18 data/cosmere/recipes/conversions/zinc_item_deconstruct.json -1cb088f77bfa70e42a65e8014030fa6027ce73a6 data/cosmere/recipes/copper_block.json -bb03ed00ff998dd03e18d8e3da1a302aa581c6af data/cosmere/recipes/copper_ingot.json -381299a477edf2eb4d4913915dcfebc9aaebd9c6 data/cosmere/recipes/duralumin_block.json -f0319945e10ac809c2b142d34532ba369de8aefb data/cosmere/recipes/duralumin_ingot.json -0f40b47be4dd7d22b5fcb6b7ccd89c81a72e8113 data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json -571ae06691c0db0214f11f3c2e99cfe146cbdccc data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json -40157e603a4c1dd14676ef4351a350e110d4e2e2 data/cosmere/recipes/electrum_block.json -e9272d7bbb1b154c5a8ef14d32ff9eb0fb456581 data/cosmere/recipes/electrum_ingot.json -8b49057875dc37f4225e39e056c04d80fb7c579a data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json -9abc72776ecfb97b828643793b3198a492de715a data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json -55929a1d62b017939269ff07ec597db47c3e7647 data/cosmere/recipes/harmonium_block.json -39914feea282288d69a91ce43a61e5f8c10c48bf data/cosmere/recipes/harmonium_ingot.json -ce4167aa66cf8d059eab0288454eb8e38ad191eb data/cosmere/recipes/lead_block.json -920c3e334274286df7d683b4ef298cc9f227057f data/cosmere/recipes/lead_ingot.json -b3783e3e2838ee97025f7ec87ad60fb1717cf635 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json -b8332e20a2b2b597e7234b5a48a8c994161cec04 data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json -6defc6c18e7b5f18b9add123982a963a176a5a98 data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json -3a2d95d9b2f0fe0594c4c5ab89b6a95520f0730e data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json -ec803b98cd5c19eacb8a1ee2791cef9af9b356c3 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json -867e69993bc7b6ac9c87edbb222a51a9a3fbe84f data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -04a41095d7a231804258a0e9453ba55da47f17df data/cosmere/recipes/lerasatium_block.json -d2680d0368017d65fb2c8f2043f7417af7dec9d5 data/cosmere/recipes/lerasatium_ingot.json -b5b7a4025d9ab461a76425af52514d5503de7c62 data/cosmere/recipes/lerasium_block.json -b434223e254dd0aad17e719a32afd07773be4219 data/cosmere/recipes/lerasium_ingot.json -289d0080d8b0f494610e46c67d060c1d67b6535c data/cosmere/recipes/malatium_block.json -54e286e81a5d9306754253e649eb56353e6fe99d data/cosmere/recipes/malatium_ingot.json -000fe7f8c770b04c546968a78523ac7ceed72005 data/cosmere/recipes/metalworking_table.json -64cc128ef12b5a3187bdb0418c6702de2cf2ddaa data/cosmere/recipes/nickel_block.json -eaa3f7864374da91b56a328571ba1c19c454de9f data/cosmere/recipes/nickel_ingot.json -2bf704215ea26579b50dcdd88f2ee123800fb330 data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json -780925423b643104740257fe7a4e58db38348c03 data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json -6d64e9ffdb9b904ba4110b6c066a2eb2a7f119d8 data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json -ae5cd3721d0c40b36b252618d9d6ffde26ac7c30 data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json -a0fb0ca06fc502c2d69ceb30d966909e50451eb8 data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json -e18cf12577110ac9c33d057254f230f89f6d3d2f data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json -9238e77e53f7455066397324d0c580b4da73d6fc data/cosmere/recipes/nicrosil_block.json -3f810ee2b15798d14f993d50c18d61defb17a47b data/cosmere/recipes/nicrosil_ingot.json -189117321d4c5cdd4214d26ec74b28f326618372 data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json -172f22b9d76e6cd8eab08086deb5f29f5e6085f7 data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json -d405839c55e5d5cf76db0eecc4b84ad6c00e7f8b data/cosmere/recipes/pewter_block.json -30f8000b2527b171539a9d8c797a7e0da9d481d6 data/cosmere/recipes/pewter_ingot.json -08f93f560375c79eb4aba91c03c1b4e8154887a6 data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json -20293ee0e26c2c437d798221e872d505da9a52cd data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json -58588049660bee3fef3f0c7387ebaaebe5b145f9 data/cosmere/recipes/silver_block.json -ae6df6989fed3a7c9b3ca4e8edcd90b8189ffad9 data/cosmere/recipes/silver_ingot.json -0dc6f223bba2ffbca52b51ed37f9b6d579d1fb19 data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json -e51f28bd280d21a104cfba7d9356faf35898612b data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json -732bee6a915483ab62cf10c4286edb81943e7d12 data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json -d27f718e206b96abef85e6bd7f8077cd9eb0b467 data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json -4f17244935eaf84c884c9d66d5d1b3200d481fc9 data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json -aac346221ba16d9a5db9ac4a72c9208fdef529a3 data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json -b0573f91c18216968cdd3eedfe1ced01314f12ee data/cosmere/recipes/steel_block.json -2d053c60c3fdaaa58b1bdb385ab130cd718143bd data/cosmere/recipes/steel_ingot.json -db2e490daf5baddccfa2dfdb099d776288bc1c62 data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json -3846858ee33dc0c5b1bd103ce4671717bf0e40a0 data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json -40d9863ce113625b6db2f0aa57e05cc9c36c55f9 data/cosmere/recipes/tin_block.json -e87feed8da1ce24d8916b120e0337a317dfbe84a data/cosmere/recipes/tin_ingot.json -e719ada0b2a7e4711eac39e98e63182e2eb627cf data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json -433b8abe56cdb6f082af5dc651fd64c355f992c5 data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json -82f14fe906ff639200fb14ff8dc2e536e8405385 data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json -c7ebd8d994d58e83889430ad18f15563cb831fc9 data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json -e3aab6a55fe258454ba575853d61bcf3de7665dc data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json -98e904c602f397fcd5baad9badb0088e2780fcdc data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json -01bc447f33d2a899792c4111af71d3ceb7851d4e data/cosmere/recipes/zinc_block.json -68fefed49981c6e60ac644543745dfe4dbb3d332 data/cosmere/recipes/zinc_ingot.json -d72070e86fd647cf87ceb6bbafc74f249eccc2d6 data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json -0179e10f178092ffe15a9823f1f3392fbb17c588 data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json -3ef2372addbe4e4fe8ec13e1eaa75cf700f26d73 data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json -9b55e7454a517d67ee2259ef5a64437bd6edc5e5 data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json -82ee7227ac6fa2ef712f04419c46f1e75fcc8fe7 data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json -d2b7ef82d4457bbf10ee0a3bbb774b3d4c5b6cb0 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json +// 1.20.1 2024-10-09T13:22:13.1367673 Recipes +d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json +681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json +b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json +51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json +627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json +eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json +4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json +5c227c57681468dd79fb86714625f1b4146dd029 data/cosmere/advancements/recipes/decorations/brass_ingot.json +d4808c3b0e09ef95a98bb09182aca71dd5fd9c4e data/cosmere/advancements/recipes/decorations/bronze_block.json +dc040358290d35dfd6adfab76930f17d096aaa10 data/cosmere/advancements/recipes/decorations/bronze_ingot.json +14e40d4a5535672e3f0d93effbe9c079c6cf287c data/cosmere/advancements/recipes/decorations/cadmium_block.json +9912b201e66a6106bd6f29ad78ab4423d66c7988 data/cosmere/advancements/recipes/decorations/cadmium_ingot.json +38b683af77d34e6a427b7c2c04cc083b8b6c5d98 data/cosmere/advancements/recipes/decorations/chromium_block.json +f65fbb945ce9617744bd8294cd8443de09d378fc data/cosmere/advancements/recipes/decorations/chromium_ingot.json +182da45fefe9e8d5b80bd17f9350394f016b2864 data/cosmere/advancements/recipes/decorations/copper_block.json +b10aaa33eb08332e15298e9a8e4ef37e130f561d data/cosmere/advancements/recipes/decorations/copper_ingot.json +490ae23bc04bc0a9207c34098c990677aff227fc data/cosmere/advancements/recipes/decorations/duralumin_block.json +c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decorations/duralumin_ingot.json +371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json +b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json +e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json +878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json +308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json +77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json +ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json +18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json +c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json +cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json +0422f386a093c87986f963269fda7bb8eee2262c data/cosmere/advancements/recipes/decorations/nickel_block.json +2f795776baf9d875bd837dfce05dbce31ce76b3d data/cosmere/advancements/recipes/decorations/nickel_ingot.json +9c09506b96bea6aaf6a01587c0f45d54dd118b26 data/cosmere/advancements/recipes/decorations/nicrosil_block.json +7208791ea1556c85ab1c53829d2a1971b2d449c8 data/cosmere/advancements/recipes/decorations/nicrosil_ingot.json +e2e0f1667ff2e5b959338a8289e4bb8a573d6e20 data/cosmere/advancements/recipes/decorations/pewter_block.json +3ffbd2b837842de9dc3d043eb5e7f907a45d78d7 data/cosmere/advancements/recipes/decorations/pewter_ingot.json +de3fd454428ef996663e25b917d9901fcbf4c7d3 data/cosmere/advancements/recipes/decorations/silver_block.json +f0bdd518fdb64909e788e3e5ac53c3c788059ebb data/cosmere/advancements/recipes/decorations/silver_ingot.json +941e5c57fa2368b7ca0a40b477994dfc0842edb8 data/cosmere/advancements/recipes/decorations/steel_block.json +ad94f830fd86b40709d916258f8d59e65a9129cb data/cosmere/advancements/recipes/decorations/steel_ingot.json +2ec95812c121b55c5cb9e02b3e9cd029802fd96a data/cosmere/advancements/recipes/decorations/tin_block.json +87270ebd377fe576ab273a26c088f2e4e174a11a data/cosmere/advancements/recipes/decorations/tin_ingot.json +19682bee0882e3bc39fa607088222dbbe1c5a9eb data/cosmere/advancements/recipes/decorations/zinc_block.json +aecfae1de3866d351b5fedb237294d3dfad40120 data/cosmere/advancements/recipes/decorations/zinc_ingot.json +de6dc524b1aad77685d3cac7ce87160b7c7c7a79 data/cosmere/advancements/recipes/misc/alloying/dust_blend/bendalloy.json +6bdfd20e3394d1b69a8df4d559670b46eaa8add8 data/cosmere/advancements/recipes/misc/alloying/dust_blend/brass.json +3b656b65293d7e1455d54bc3b38c338bf443d6c7 data/cosmere/advancements/recipes/misc/alloying/dust_blend/bronze.json +701e5478c38bed3509878065eaa525ab61a935fc data/cosmere/advancements/recipes/misc/alloying/dust_blend/duralumin.json +fa2a3a57aebd2c8bbd006a8a2e0c4b02dfdb4353 data/cosmere/advancements/recipes/misc/alloying/dust_blend/electrum.json +8bb6d282aa30e69395836176cde6c81edd1e8374 data/cosmere/advancements/recipes/misc/alloying/dust_blend/nicrosil.json +e4ed1e4d4ed8628a70fff2d8d3b6050fec0afd3a data/cosmere/advancements/recipes/misc/alloying/dust_blend/pewter.json +5924acb71162f1115eb2298a3f3e99178ce0a331 data/cosmere/advancements/recipes/misc/alloying/dust_blend/steel.json +bddba4c190252c5fbe141c013ad0b4c5dab22dac data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bendalloy.json +7fd3c3d50c0e67ea1ce6839b6c008bd944fd4f7a data/cosmere/advancements/recipes/misc/alloying/ingot_blend/brass.json +5eca302e17dff7d62978b87804dc10bfabba04dd data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bronze.json +64cb53c45d68a1c99ca6eecd91143963d8a830dd data/cosmere/advancements/recipes/misc/alloying/ingot_blend/duralumin.json +8c910c6c858eebed08a59fd061f52ec40a19119f data/cosmere/advancements/recipes/misc/alloying/ingot_blend/electrum.json +9991b64962a06cb157bf9d81f2680986c31305d5 data/cosmere/advancements/recipes/misc/alloying/ingot_blend/nicrosil.json +3e8a9cba214533576b737161a9aeda1a93ed8580 data/cosmere/advancements/recipes/misc/alloying/ingot_blend/pewter.json +13c6c841650902eed46d5a82fdf0216f1965ca39 data/cosmere/advancements/recipes/misc/alloying/ingot_blend/steel.json +fc94e4bf2847127f93492a313ac154e89563ee9d data/cosmere/advancements/recipes/misc/alloying/raw_blend/bendalloy.json +029367fbc8ff0095b396bf6be33335f9930f8e4a data/cosmere/advancements/recipes/misc/alloying/raw_blend/brass.json +e2aa143776ecf280cef27a12cd13a947d217608a data/cosmere/advancements/recipes/misc/alloying/raw_blend/bronze.json +bb9a7663e02f97764e351a044ab14ebc58fa5b6c data/cosmere/advancements/recipes/misc/alloying/raw_blend/duralumin.json +55263ed3f25cc0fbcfc765e5547d18a24e2931b9 data/cosmere/advancements/recipes/misc/alloying/raw_blend/electrum.json +f06b9ee6fbf5d3969b1d2ecd18cce9bd3530d2de data/cosmere/advancements/recipes/misc/alloying/raw_blend/nicrosil.json +6bfeeaef8a4c703e8f510319de31e9c41ec887e0 data/cosmere/advancements/recipes/misc/alloying/raw_blend/pewter.json +1c276fdc4e44ee0123678f7281ada66dfea6459f data/cosmere/advancements/recipes/misc/alloying/raw_blend/steel.json +c7e6aa166c29193cf7a83b19845f75beec514cec data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_aluminum_ore.json +55467c06d52be72677d2908961f895c568782fa2 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json +248bfad1a1eb898bf0c1909a48b6c5861aa7ca44 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_raw_aluminum_ore.json +4b16a3704599e05a64dea1ec6cbe9668fde79478 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json +c9fe0f3e92644b7a6d3028dfa13e4ffa12af4d18 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json +a5ec44e370311037f941a04ed8f4389450649db7 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json +c643a34c452d8168369c02896ce61fe422011971 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json +11d6f0c8cea954b1b2d9b056bc85d0f57f98fe44 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json +654e4bcd5a4be48d8530a8ff8d400864255f31aa data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json +884fa590a388ccd322d232e746cb39f2446619f9 data/cosmere/advancements/recipes/misc/brass_ingot_from_smelting_brass_blend.json +f36f884d7a6ebc3ef5eb9fc1a6eb5d1ae3df0e66 data/cosmere/advancements/recipes/misc/bronze_ingot_from_blasting_bronze_blend.json +5b33f4de42fd8314ec733d83c2b4128a60d2be4a data/cosmere/advancements/recipes/misc/bronze_ingot_from_smelting_bronze_blend.json +d649575e96df6ab2ca9e49543ffefe4a50d3c5d9 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_cadmium_ore.json +580233d5bf769b65ce6201cbef01e136e8b69351 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json +e11f6f1bc1c1fc0ae0d86b53316cb33d4da7c064 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_raw_cadmium_ore.json +a9e579b8046f7b64d324660d84de3a5eb937bd68 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_cadmium_ore.json +9b57ac1bc7389f50ff18fe567fef5372d96b2f42 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json +bb2f7f8ab20511a0ced59c8b3269014382e83e31 data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_raw_cadmium_ore.json +cc7f118a8b5b60b03addf11addfea550b6be169a data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_chromium_ore.json +caa5510eaa1acf417e0f3248e6483ce9d81664e0 data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_deepslate_chromium_ore.json +3315318572cd176c1532f22855a9a05bf1a672a6 data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_raw_chromium_ore.json +d6e7c5919263ed995b6e1edd6c562a3e9724cb8c data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_chromium_ore.json +09139aa814e3ff221f8e84e9e0b34c62d9e837e7 data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_deepslate_chromium_ore.json +1ce1375898ce194e21969d9931b2889f1c6d5cfb data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_raw_chromium_ore.json +dbc0b939398763dcdfa0ca8a5bd9d20cc85d65a5 data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json +659f091523822870e0b5c819783e976e59d8f414 data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json +dbc010d11d586d1322bd0adb0a5f1baabeefe4cf data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json +594e40ee46c4b08b29b8319f69539643b736ee85 data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json +98b94a773b82e90dff928a615b5e9aaf5c2ce5f3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json +a1a7362f8b093200c65077c55d176bb7d63fe9e3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json +bb8c793713f8c0a32b9d2d8d3c058075d42afac0 data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json +ffd249086072b7ec76de5173f0537a651e66973c data/cosmere/advancements/recipes/misc/conversions/brass_item_deconstruct.json +c5bff33ea00b5a63e76f40930bfd8e7433573a2e data/cosmere/advancements/recipes/misc/conversions/bronze_block_deconstruct.json +de1ffb6dad2cdfff5237e369a28d96354182b1e4 data/cosmere/advancements/recipes/misc/conversions/bronze_item_deconstruct.json +b70611b765caed1df9458a40ea36b80d7e18f791 data/cosmere/advancements/recipes/misc/conversions/cadmium_block_deconstruct.json +edd649debcc61d9de30b18a9507a7fc3fdc37bd2 data/cosmere/advancements/recipes/misc/conversions/cadmium_item_deconstruct.json +5cc899f38e772555b5b4f4a7eaad8396ec981089 data/cosmere/advancements/recipes/misc/conversions/chromium_block_deconstruct.json +ac26d2d5577a16c67e42c855a46c20c73f8b4aa8 data/cosmere/advancements/recipes/misc/conversions/chromium_item_deconstruct.json +b305c1b61f1f453d39d1f080280cb3f19f7f7462 data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json +96d06c0eb7c7b4104022e5adf20841b5244f92af data/cosmere/advancements/recipes/misc/conversions/copper_item_deconstruct.json +5e73ff7e74ba57b88043f66ed1a26affa3db9afc data/cosmere/advancements/recipes/misc/conversions/duralumin_block_deconstruct.json +760eb4df0dd4e40ce4673da1cb51c2c06503ea36 data/cosmere/advancements/recipes/misc/conversions/duralumin_item_deconstruct.json +6768c27277ed3709692a9b0ce7ff2345d2d1900b data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json +1c357b17c43d7a3434fb1d15a8bfd4f67c9f14bb data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json +2d039025ec49cff788309f50023d90f5dc515800 data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json +329eb749169c732714d549391d378815036b9244 data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json +14d5adab97c136743fc0c292428139cbba7d59b9 data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json +12d9f9ce91f202aa020bb6ee173d37754e02225b data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json +eaf60b4440cbd54d83b22c8b780825571ed26fe9 data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json +c1dc2f1a234d6fd1f3b22ba4e8c96bdaef7cfe21 data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json +27edd917293def5ec9a7aed15130398dae268bcb data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json +bb274ce62b99aa5b2e9bca20c5798d284230a1fb data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json +fd0f0e33312dd33c38585424106b464fa490f6d0 data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json +4f74f10ffcadbd766f1988ce7fa397696ba6ce20 data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json +9226b65f455009ac8e452ba06553829e23262c35 data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json +94a21cd66be726ce1254896e85fb6f0f8a90488c data/cosmere/advancements/recipes/misc/conversions/nickel_item_deconstruct.json +3ff67f116262653cf394a477afc2b08226907ffb data/cosmere/advancements/recipes/misc/conversions/nicrosil_block_deconstruct.json +83ac2dc75451531de311c639addb4aa2619c4e23 data/cosmere/advancements/recipes/misc/conversions/nicrosil_item_deconstruct.json +1dce2679077f9a17a06b570dd51a11f70c40e710 data/cosmere/advancements/recipes/misc/conversions/pewter_block_deconstruct.json +669d3030ee9ceedc96a5be6857dbeb322379890a data/cosmere/advancements/recipes/misc/conversions/pewter_item_deconstruct.json +b36df511264d99a0ac1a48fb3aee616f706b997c data/cosmere/advancements/recipes/misc/conversions/silver_block_deconstruct.json +509f2d427b91d37d3ca48a2846ea41b68e796a5f data/cosmere/advancements/recipes/misc/conversions/silver_item_deconstruct.json +f01ed9fe9b557b62a5451ed4423673ce5812a0bb data/cosmere/advancements/recipes/misc/conversions/steel_block_deconstruct.json +17d5565804458bbfacec740ef98fe3feffa299dd data/cosmere/advancements/recipes/misc/conversions/steel_item_deconstruct.json +2d718f2075b9e3379d493d63939a0f79943ac501 data/cosmere/advancements/recipes/misc/conversions/tin_block_deconstruct.json +4a31391d736ae0a2b8908506c7af5a8368865a1a data/cosmere/advancements/recipes/misc/conversions/tin_item_deconstruct.json +1dfbfe605d1780ae4c270914a717c6f12a567a70 data/cosmere/advancements/recipes/misc/conversions/zinc_block_deconstruct.json +adb1d78194fe89558879cdae85bf20b82007d53c data/cosmere/advancements/recipes/misc/conversions/zinc_item_deconstruct.json +a0b1993f5f6ef980f0fe9c351db512ac0e84af31 data/cosmere/advancements/recipes/misc/duralumin_ingot_from_blasting_duralumin_blend.json +5555e5c100bd7b804344ddfb6c6ea80ed204f175 data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json +0e10b0fb67bddbe8e023b18f0e9974e883f534d7 data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json +16785ac3722c92b31faa145ddffe92f3257ed0f2 data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json +74ec3e1d84e37bd79d815de56b4ba08447a6852d data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json +ab3af6154116ab63676b766b762a6d6775d08e39 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json +f74b4d5daf0b2de67ac1279f4431a8d0a40536a5 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json +4677ad6ab84978723788a61856fa18de55cb3f20 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json +78c7450aab83fb92a217ed88c34730957c67bff1 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json +d576db25f5c71b4c77958c2104444e7523b04032 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json +08b7debec020216a21c67912eeb8cfc7fdddc3c2 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json +8110c799bbb2a42d7921bef97593bf5c47f32416 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json +6b963b370cd777d523d2d29087b4ffafbf3e9d66 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json +dbe7b91a4edf28c839f83db210bf41a32e9ec863 data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_deepslate_nickel_ore.json +6952681b2576348a236a0b8378de63016540839a data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_nickel_ore.json +b41388e8ebbf0f8ee8ee0fdc1832c3892efcc6da data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_raw_nickel_ore.json +4d00617ccb862cf719df18fb39d52fac19d93265 data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_blasting_nicrosil_blend.json +4ee52299ea03ea98aab812d56646f8d1c15d3788 data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_smelting_nicrosil_blend.json +80232801d35653b36e7e3a2414594450f7ae7606 data/cosmere/advancements/recipes/misc/pewter_ingot_from_blasting_pewter_blend.json +c0cbe3263ca179de215e20cbc7b43ef492aaa517 data/cosmere/advancements/recipes/misc/pewter_ingot_from_smelting_pewter_blend.json +824902778d24462a0c00d159fc8b62b4b2c21bd8 data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_deepslate_silver_ore.json +60a9563d51a9083f36ef89eea2cadd3b4ec04f3a data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_raw_silver_ore.json +91f240c493272c39e0d7932209ac52c790ea7a42 data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_silver_ore.json +826cadf1dec3c35cb0fbe040511f949e4d0f8edd data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_deepslate_silver_ore.json +fa1f9b894b48ea76ccdcf2bf57ce8831b9374537 data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_raw_silver_ore.json +c91f31236e101ba340087b2622cd41afbead70b6 data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_silver_ore.json +ad65644e5bcee67a88859e11dc10cc1a70f553a7 data/cosmere/advancements/recipes/misc/steel_ingot_from_blasting_steel_blend.json +d296485ac06132b8b67f2491bfade1f27bab7317 data/cosmere/advancements/recipes/misc/steel_ingot_from_smelting_steel_blend.json +1b2c2d6a0ec037c2f9754e375f615fe3f088c4b1 data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_deepslate_tin_ore.json +b257698a62ae276f396018dfa7cc608c98f075e6 data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_raw_tin_ore.json +c5caff3b416e1b3603c29662c2a7d088406d2ebc data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_tin_ore.json +8629b03e645594fdee2194e59faa5808939b2ea5 data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_deepslate_tin_ore.json +9b9c4fd59de15084c37232e6facdf44335298cfd data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_raw_tin_ore.json +cf45fab24fc596f37f3b768c44b2f54bc834d01c data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_tin_ore.json +d780cc77d9edf3f921a3dfda492dcbbe6f151fd4 data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_deepslate_zinc_ore.json +ae5ac929902e60409ea5b64ba91d9a45ba8ab649 data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_raw_zinc_ore.json +8aa5cc9016eba40fd6d888bc3003108e06de8cd8 data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_zinc_ore.json +736a537ee81c023c37befa4f3ee8f092deb3cfe2 data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_deepslate_zinc_ore.json +e4f408c665c05ff55bb87398e03b7fe73903b5cd data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_raw_zinc_ore.json +63e94573946cab9081cbe3abd2875c2b3eb47615 data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_zinc_ore.json +5828b1d48cf99c2a59a53e2e765abadddc9a42fa data/cosmere/recipes/alloying/dust_blend/bendalloy.json +565b4c7cb207d6761e85d50baa6c77425c438988 data/cosmere/recipes/alloying/dust_blend/brass.json +99495bb48bc6e337594db9897eea7c37ed41356e data/cosmere/recipes/alloying/dust_blend/bronze.json +dfdbe66488d7f833673e0f648742cbabddd4cf9d data/cosmere/recipes/alloying/dust_blend/duralumin.json +279fcfc89c44e2eccc02f68c3cbe006847eccbf8 data/cosmere/recipes/alloying/dust_blend/electrum.json +46b9e6d6b88b6e80e7ad854d8ff47456c4a49009 data/cosmere/recipes/alloying/dust_blend/nicrosil.json +40c762a1c9eda75549a887db61912fc919f63203 data/cosmere/recipes/alloying/dust_blend/pewter.json +b3736cfd9022dfaa253366a9afc9e59ce58c4661 data/cosmere/recipes/alloying/dust_blend/steel.json +9c2a14dfae081d59bcb4996dc0ab7e05403d2b41 data/cosmere/recipes/alloying/ingot_blend/bendalloy.json +913d58f7de2d13f356144f175707a816951efaf0 data/cosmere/recipes/alloying/ingot_blend/brass.json +0b4da0c96b68a461ae08002c24d0816e4f5c3103 data/cosmere/recipes/alloying/ingot_blend/bronze.json +396f8e2bfccfcf21f4a178a00c33d1f4490a852e data/cosmere/recipes/alloying/ingot_blend/duralumin.json +95414d4a6f724e975de6f7290c02a3d84df4d3b6 data/cosmere/recipes/alloying/ingot_blend/electrum.json +850379e04c6ad326e1b2e2248d07ea2bd36c712c data/cosmere/recipes/alloying/ingot_blend/nicrosil.json +a2048c2db5f00db2bbef261fb460b340f2fb7ee0 data/cosmere/recipes/alloying/ingot_blend/pewter.json +00b309bd1a576e90c37d028c3329aa84b811a5e0 data/cosmere/recipes/alloying/ingot_blend/steel.json +8e6ea1358f05ba862eb82382ba65b353245d5077 data/cosmere/recipes/alloying/raw_blend/bendalloy.json +738cc9e3e003e328b74550eaea5b726cefbc783e data/cosmere/recipes/alloying/raw_blend/brass.json +ab33404dbd3c8ef272e50c46cf7a7b3d3867ec4d data/cosmere/recipes/alloying/raw_blend/bronze.json +4750c6431713f41f0607b8f68cfda8f17f4a5ab2 data/cosmere/recipes/alloying/raw_blend/duralumin.json +288019d5335e08f8c35e1d8e920e4512293f87a7 data/cosmere/recipes/alloying/raw_blend/electrum.json +c0397e976ef251d4974e8fe4b1e3ced2f49120ac data/cosmere/recipes/alloying/raw_blend/nicrosil.json +68f1f0393f26e5d42dfb484aca244afa6506d0a4 data/cosmere/recipes/alloying/raw_blend/pewter.json +34f6bd44b47c401e5f821e1d00dfa3773e3d989e data/cosmere/recipes/alloying/raw_blend/steel.json +97785477bd36295debdd9bd349626ab352b6ff51 data/cosmere/recipes/aluminum_block.json +b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.json +91f9468690afd0f2649f22df98b93f9b7dde30d8 data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json +5f3466afeef40d225158d61f28e2196eb7954542 data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json +837a1031610f9dd0c243094718196be06ce21352 data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json +9212d392d1bc1f7fec0b90dce25fffea415941c5 data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json +ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json +cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json +50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json +2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json +d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json +188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json +c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json +4959a3f1cd5dd441b7755b4724114ece91cad6b7 data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json +d376b3d0403d9ada3b60cd52181b348d38d5e53e data/cosmere/recipes/brass_block.json +429a21ae7eae55bf9c99d1c8878c5f9ee1287314 data/cosmere/recipes/brass_ingot.json +4c0c362cbe20ad1bb82254102e297826fe9900bb data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json +f14a5769d140497098086db7b6229991f26b5be1 data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json +2568525e67813acc0035e0c2c164a8a5b73b5223 data/cosmere/recipes/bronze_block.json +1647649f44c85485aa0c69e2d52ffc40c5baf46f data/cosmere/recipes/bronze_ingot.json +ec74d4b245d594abcd3cce1b526b8e6a61a0eee7 data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json +9c323d95658b7f597f505e7f75bc645a9cb3b232 data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json +47e379c5e2fc28ed952b778a4dee724423d17ec5 data/cosmere/recipes/cadmium_block.json +f690ae900dffc6ec7ac0d449368f51326e142cf1 data/cosmere/recipes/cadmium_ingot.json +078dc6939c4682e67cf4bdfb942500f6f7e3353e data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json +f8a4050a8c9d36a5a853621c6a7e71d6858eb60b data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json +8df7176838ef18e6ef85888f18d80e89ab154833 data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json +d11f547f22b3794ec9b6dce10827cec65e964ec8 data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json +7f5bca594444f16e7283b950cb76c05455635c29 data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json +188d5441bdf9625271144c29b91ed6f532507e92 data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json +bb2964f1513172f74db4f0999cfc76dde2f07182 data/cosmere/recipes/chromium_block.json +4e785ac0a6affd143c555e640f2848f8f4ff0265 data/cosmere/recipes/chromium_ingot.json +26784539bf73616bd03e0492c9a8bc3751494cc1 data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json +f022736550def991a6ce11a6105553b7aa1e5b1b data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json +030be79dbb66e13d0457da0718a2cba7907f8e93 data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json +d64797176bbf359324f6c0649dffad535ba0df32 data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json +df3cb1f0fe2674c0e0b4deeb20d68be7e0223c5a data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json +26c89431560194ed85b13404177063add4cbdf9c data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json +4d7d4b24afbb4931ceb6f55dc0413f470eaffc7c data/cosmere/recipes/conversions/aluminum_block_deconstruct.json +1f73890dbe2be61e03977a713b960b328b7a2087 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json +680c0658b68f344bca81f327ad3bf74a4da18795 data/cosmere/recipes/conversions/atium_block_deconstruct.json +096dc7eb84e6e60c4dcf3118f92218917a1baaaa data/cosmere/recipes/conversions/atium_item_deconstruct.json +c32019d369a231302c373b5418d3f2ca415052a2 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json +93fa65e4a6c54d997c9e9676b8bd4cd90155359c data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json +f7014f16f2a82bdbfb0262389dfa2ff009432f6b data/cosmere/recipes/conversions/brass_block_deconstruct.json +479f70a1f7030f2b27d561e11c92300040225a74 data/cosmere/recipes/conversions/brass_item_deconstruct.json +687065d3b415aa10e13e763ee736a32ca4556452 data/cosmere/recipes/conversions/bronze_block_deconstruct.json +71185efcaf6d183d6139804d92096172acee344f data/cosmere/recipes/conversions/bronze_item_deconstruct.json +fa5a8654f1945037d77510f8ebbd8d8bc07cca3c data/cosmere/recipes/conversions/cadmium_block_deconstruct.json +c4f16c1dabbdf3deda2650b98f2272f448f4f01b data/cosmere/recipes/conversions/cadmium_item_deconstruct.json +a0bf45a47386b68325b4e1984fd8626c5f87e309 data/cosmere/recipes/conversions/chromium_block_deconstruct.json +1b67ce39eb539a3e3f84a96159f1cf2602b25b5e data/cosmere/recipes/conversions/chromium_item_deconstruct.json +bf484944fcc3aae456ce7f1064fce34cd519eef8 data/cosmere/recipes/conversions/copper_block_deconstruct.json +0084357fac5c24594265f91687d85d3ef237a9f7 data/cosmere/recipes/conversions/copper_item_deconstruct.json +7f26451ae0f641c45a865a4c5427f4e23d8c0ab3 data/cosmere/recipes/conversions/duralumin_block_deconstruct.json +ece851d4f1b9da48bee3133be5aba10f3d72ae8e data/cosmere/recipes/conversions/duralumin_item_deconstruct.json +2c943c58f26789a8feee9b05471d473b38c4b272 data/cosmere/recipes/conversions/electrum_block_deconstruct.json +79ca04523d1b2ed9c921b4d669d33848190eeadb data/cosmere/recipes/conversions/electrum_item_deconstruct.json +9c0547bd88bbf7c5b1ceb54b8780e51267e33b7b data/cosmere/recipes/conversions/harmonium_block_deconstruct.json +e5a593c779c7d8efcdb7d945f545e579b563c2a5 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +f10ee6f07670b583fc8d56c21c8bf16ed860820b data/cosmere/recipes/conversions/lead_block_deconstruct.json +04935fac62043daebfa92bec2cbbbf126aa1fc3f data/cosmere/recipes/conversions/lead_item_deconstruct.json +ba927c70c851b5fe745cedc39c246bd837dec975 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json +63a7e4b091da9d0c5706874f34c8e97b3c62ef08 data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +2c2fbad486619b5912f3150505802f9e9715461d data/cosmere/recipes/conversions/lerasium_block_deconstruct.json +eb136b12ae8a72b0e0e09724698d053148fa75f9 data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +d4b725ddc9a2fbd493c3216abbdcc18592358a69 data/cosmere/recipes/conversions/malatium_block_deconstruct.json +689b14a3a023557584c1c058b0fc2c2b06efaa04 data/cosmere/recipes/conversions/malatium_item_deconstruct.json +2866e6f39fd8c0ce152db25ffb4a93a381ab204e data/cosmere/recipes/conversions/nickel_block_deconstruct.json +f5b3cc2fac61b4c1f8b13695f7a57be0ff0d8efc data/cosmere/recipes/conversions/nickel_item_deconstruct.json +ed35caf7c1137a626c8c47564b86834b16e4f789 data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json +3a6a39cd39fcb5902f5026019accc0c138c8422c data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json +ef036ef285bc227b43b4fbb6eb121d1ee8344d8c data/cosmere/recipes/conversions/pewter_block_deconstruct.json +ee50d2d2a430f17b658067eb7f2f9ccfd00a6dc7 data/cosmere/recipes/conversions/pewter_item_deconstruct.json +2da989633a1736711544b751c68fd3f8b01fe8b1 data/cosmere/recipes/conversions/silver_block_deconstruct.json +e6478c6dc86f615c2a3ccb6a2ae7bb52aaf5ffb9 data/cosmere/recipes/conversions/silver_item_deconstruct.json +f5cfb9a18ba62978b92bff60dc506b147476367b data/cosmere/recipes/conversions/steel_block_deconstruct.json +583febf686de5b643e9c3748ea43ff9833122c5c data/cosmere/recipes/conversions/steel_item_deconstruct.json +224c8591f11013dada7eedbae5f3800b0eed64ed data/cosmere/recipes/conversions/tin_block_deconstruct.json +1bb3b1c7751740d881003c713ab35b81a6f4c5a6 data/cosmere/recipes/conversions/tin_item_deconstruct.json +c88dc59d28af370757edcceb5e2b7d7725bda629 data/cosmere/recipes/conversions/zinc_block_deconstruct.json +cc80cff2c8c790e49086d36e267878fa952275c6 data/cosmere/recipes/conversions/zinc_item_deconstruct.json +b9f08f56cd3524a9ed31ca4d8b23d597c888f01a data/cosmere/recipes/copper_block.json +5534b6b338eb6f0b47858934a2d74fce8d776e19 data/cosmere/recipes/copper_ingot.json +40cc2403498dbf72ad1969d2a4fcce3b06629dc3 data/cosmere/recipes/duralumin_block.json +ce0a4b09393b1ee9a95e2180d3e4d2ec22beb9a5 data/cosmere/recipes/duralumin_ingot.json +d41c016a9203e5fa4698b8095cb13699cbce1b7d data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json +afa3542d017e17d9cf68eaeb1821095fb83d06f2 data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json +8439149e9923a76886e85abf5858173c5137810a data/cosmere/recipes/electrum_block.json +de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.json +8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json +a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json +677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json +dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json +3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json +335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json +622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json +7fc62fd2c57c463a7a188699abfea35654981c0b data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json +97ea160d6001952a0f3a151bf3bf55f89f64007c data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json +cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json +d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json +0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json +da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json +22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json +ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json +0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json +f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json +9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json +54a9381669efb4a66863b15db99ce9db39c97b0e data/cosmere/recipes/nickel_block.json +0c926786eba8f093b28d7f9261956760c1a1d547 data/cosmere/recipes/nickel_ingot.json +d94ce97418dd34512a0ca20a703c77b5306c2a90 data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json +53b2dd5ba0a7c93dd6e4a25ef0c03a80e4ce481d data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json +e19d7be826650d794354afad8371dd325ae6ac0f data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json +20c586a108c59ac64fffd6492ff3f67da4664e8f data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json +c064d1760e70d169ff4741fa0061cc29f9b79817 data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json +ac423cc09c7210fd3f7c7dd30304d202f85eb762 data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json +da49f3eeb29a50a85ae3b1a646895548b1ce2712 data/cosmere/recipes/nicrosil_block.json +40138f925fd1d9dd859f838868fa459395f57dde data/cosmere/recipes/nicrosil_ingot.json +59d234cc1d7b044997df40551d95ff569cd4c626 data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json +4b480e9c062430c93ed7e71742808e222b7aa6db data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json +c64df0f0d7d9f8de5a655ae16c29dd23b8fa7893 data/cosmere/recipes/pewter_block.json +fc1b7c114ea7191333e4b69e5292c8abaab6ca39 data/cosmere/recipes/pewter_ingot.json +2085068e3a7b8ddb79b2f1b27d083167fd48180c data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json +ee86481c3116a4cddcc7cacfe2dedc2aad8166d2 data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json +fc4621e0a40c3f1aef1320b12ef04519d7254eb9 data/cosmere/recipes/silver_block.json +42ea21d5ec6d542d5746034f1a461ebf1e5d9157 data/cosmere/recipes/silver_ingot.json +c398956cfd827a6a7e7e766d44f0e27e84ceb50a data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json +5bce0b2fabb68c82170173dfb80f377fa8cbfa82 data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json +cfd314b1d0294d23f1545f3afe4f1b2c22d307fa data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json +dcb6545d1df08255abbd12fbfb68a96382222b44 data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json +6cdb252aab237c2f3f7c52b2a0d0913cf7faadb8 data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json +f377765b5c6b6e50fb98ea8df3369f5682289a28 data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json +14654cb6898862c9e5cf50230874c7290324583c data/cosmere/recipes/steel_block.json +0cda67fd19aaa09961dc9af6911957c72626d467 data/cosmere/recipes/steel_ingot.json +d0efe2ce0e33b1f99869a2ea3e0fcb52b5a4ad50 data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json +76276d4d16a4bc5870b53b5361a5d74da364523d data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json +69241571c0f61f90c8aa7207d09c051f36471943 data/cosmere/recipes/tin_block.json +e3839ab564d4d1c21db572bf8c43f0920ec20385 data/cosmere/recipes/tin_ingot.json +8291e4b307a9005b0d02a4e656d0b54a9e164d4b data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json +cac474f08a7a57baa4ba1f9474a56aa483e7a8a9 data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json +e52446610202fcb25985e1f6574407f667824f3c data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json +046df9fa810ae2271bdeaa641bfd0b70bd26e08a data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json +d6f761f6af46a103aa611658b721982aec86cf03 data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json +e4a11fc599ec2bd566c30f810d43ea4f4767610a data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json +297682130904f9b165c72c9d9b75a4693aac992c data/cosmere/recipes/zinc_block.json +344f6331f796201422a364267a6bdf93e8082d5a data/cosmere/recipes/zinc_ingot.json +c16d658f898f54e1c49834aa1ad19b430637079d data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json +c02ae4590e276c41986af6d3b3ba05ea62aa1016 data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json +2ec98c2e3d7317550785f22d6f16dd397b494f51 data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json +65b6bb07fc78de141c264b93fe176dc8d50a8504 data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json +62e4be71d4d5d4ba3cb893040ed76f411d15b1c8 data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json +ed93bd06609013926ddd3429d4c59bd1c266dc07 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json diff --git a/src/datagen/generated/cosmere/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 b/src/datagen/generated/cosmere/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 deleted file mode 100644 index 8927c7aa9..000000000 --- a/src/datagen/generated/cosmere/.cache/a2c6b3dcb5eefab370df8fe38d91af50718936d2 +++ /dev/null @@ -1,9 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.078076 cosmere Biome Modifiers -73daa89e4513be564bb9edb0ecdc3030066896ed data/cosmere/forge/biome_modifier/aluminum_ore.json -7da37fe3ce058ff270d3f3502a928e53f9349056 data/cosmere/forge/biome_modifier/cadmium_ore.json -8c86ba52ef5c3cb6f6205b5434c0ee5cbfb9f2c0 data/cosmere/forge/biome_modifier/chromium_ore.json -8ba7edd4b0665ce820d549e92fddc41742349931 data/cosmere/forge/biome_modifier/lead_ore.json -fb4dfb499d7e848e7763fa2df5edc8b39a90fb73 data/cosmere/forge/biome_modifier/nickel_ore.json -20ef9701a1fb11eb430bafe0461b64a29fe61e3b data/cosmere/forge/biome_modifier/silver_ore.json -88c481e4f088b514a40ba1c7d69e3a62f3664303 data/cosmere/forge/biome_modifier/tin_ore.json -3cca8b0bc0c5c4281dcca416034557929e0144c3 data/cosmere/forge/biome_modifier/zinc_ore.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 261043cde..eb88b536c 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-22T22:01:35.981637 Languages: en_us +// 1.20.1 2024-10-09T14:02:55.7775178 Languages: en_us 3158b38f29da8dddc5e5d8ea2522ca3292c06c37 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_block.json index f84ac807b..7d634a4f2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/aluminum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:aluminum_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_ingot.json index 32b8bd554..5c7e7d459 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/aluminum_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:aluminum_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_block.json index 6cb6652db..6983212ca 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/atium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:atium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json index c4ccf4f21..abb83a88d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:atium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_block.json index 897f4e62f..8d78f4406 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bendalloy_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:bendalloy_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json index 43bf40bbb..72072164d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:bendalloy_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_block.json index 3db004e57..4157c81ca 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/brass_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:brass_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_ingot.json index aa8efa052..22137ae6b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/brass_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:brass_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_block.json index 21ec4f5a0..fbe48a421 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/bronze_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:bronze_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_ingot.json index 62306bb04..b99518ad9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/bronze_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:bronze_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_block.json index f6f090d11..f4b5de12e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/cadmium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:cadmium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_ingot.json index 36b6dc33a..7cc869758 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/cadmium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:cadmium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_block.json index 35811e598..525f65584 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/chromium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:chromium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_ingot.json index 0fae6635f..30a4215b5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/chromium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:chromium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json index 188316bda..11f531c79 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/copper_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:copper_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json index 100ae8a6f..2f4fd5c32 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/copper_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:copper_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_block.json index ac274ec92..309332825 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/duralumin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:duralumin_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_ingot.json index 277b6337b..996a1cadc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/duralumin_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:duralumin_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_block.json index a706e2051..6bc9c6803 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/electrum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:electrum_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_ingot.json index 4b77249be..6ebc5b33e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/electrum_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:electrum_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_block.json index 18d1baee9..3fc4fe6ba 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/harmonium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:harmonium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json index 60c3a90e0..cd1c4e9a2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:harmonium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_block.json index 075656c12..9c91d2579 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lead_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lead_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_ingot.json index 21fb71aa9..46226c60d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lead_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lead_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_block.json index d1d0c8015..9bd75ad70 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lerasatium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json index 1db20c8ae..ac87104d7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lerasatium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_block.json index e7bad7c6c..f5f1de554 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/lerasium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lerasium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json index 2485cd2b6..26dcdef69 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:lerasium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_block.json index 1cf7df96c..1c83ac5bc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/malatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:malatium_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_ingot.json index f71e0e7ad..1daf1fdf5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/malatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/malatium_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:malatium_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/metalworking_table.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/metalworking_table.json index 1d5562919..44855dd85 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/metalworking_table.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:metalworking_table" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_block.json index c03def551..9e13b21c3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nickel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:nickel_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_ingot.json index 01a0cf45a..219d24d77 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nickel_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:nickel_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_block.json index d207dabfa..cebee28d8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/nicrosil_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:nicrosil_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_ingot.json index 8c4c3d232..0681723ff 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/nicrosil_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:nicrosil_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_block.json index 938592a20..a5f77b6bd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/pewter_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:pewter_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_ingot.json index c3ae01389..40e819b6e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/pewter_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:pewter_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_block.json index 23fbf6df9..f08102966 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/silver_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:silver_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_ingot.json index b0727ce43..7ae28b81b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/silver_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:silver_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_block.json index 051668110..8221ab423 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/steel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:steel_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_ingot.json index a88487881..57d8efb9e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/steel_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:steel_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_block.json index 9f525e885..a848309ae 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/tin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:tin_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_ingot.json index aebc68ff9..127b5d8da 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/tin_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:tin_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_block.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_block.json index c30c30cc2..32f76e109 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.blocks/zinc_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_block.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:zinc_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_ingot.json similarity index 93% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_ingot.json index 93e81172a..3f35aa556 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/zinc_ingot.json @@ -28,5 +28,6 @@ "recipes": [ "cosmere:zinc_ingot" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bendalloy.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bendalloy.json index 8611ace73..069c133ad 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bendalloy.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/bendalloy" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/brass.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/brass.json index 4aada781c..b739ee55e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/brass.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/brass" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bronze.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bronze.json index 28c8b5cfd..0ff672253 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/bronze.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/bronze" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/duralumin.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/duralumin.json index c64b793ec..855ec59b0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/duralumin.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/duralumin" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/electrum.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/electrum.json index e186fd91c..f3ff244e1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/electrum.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/electrum" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/nicrosil.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/nicrosil.json index 16b844afb..d18338489 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/nicrosil.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/nicrosil" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/pewter.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/pewter.json index 7602f8080..aa636eda0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/pewter.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/pewter" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/steel.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/steel.json index 24f503837..db8c67be6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/dust_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/dust_blend/steel.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/dust_blend/steel" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bendalloy.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bendalloy.json index 9fed0516d..25d8a0294 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bendalloy.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/bendalloy" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/brass.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/brass.json index 5476484f4..5b4a1263b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/brass.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/brass" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bronze.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bronze.json index dd7b3fc7b..164d1e3dc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/bronze.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/bronze" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/duralumin.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/duralumin.json index fe4959725..c4bd666b8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/duralumin.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/duralumin" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/electrum.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/electrum.json index 1b822f88d..eb589477e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/electrum.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/electrum" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/nicrosil.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/nicrosil.json index ea5fdf996..5151a625a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/nicrosil.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/nicrosil" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/pewter.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/pewter.json index 51aac04e2..2257e1f92 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/pewter.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/pewter" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/steel.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/steel.json index cfe40303f..51e6c5afa 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/ingot_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/ingot_blend/steel.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/ingot_blend/steel" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bendalloy.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bendalloy.json index b261356b4..be33e1240 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bendalloy.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/bendalloy" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/brass.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/brass.json index 737c83929..fd7a048c6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/brass.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/brass" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bronze.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bronze.json index 1435af19d..550831174 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/bronze.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/bronze" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/duralumin.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/duralumin.json index 314fc4f6a..e96bcabcf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/duralumin.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/duralumin" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/electrum.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/electrum.json index bcd498db9..cbc361a59 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/electrum.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/electrum" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/nicrosil.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/nicrosil.json index 6769c0cbf..409b89cd7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/nicrosil.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/nicrosil" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/pewter.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/pewter.json index 86ec97b15..0d75d2955 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/pewter.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/pewter" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/steel.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/steel.json index b0675e515..865ab53c9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/alloying/raw_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/alloying/raw_blend/steel.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:alloying/raw_blend/steel" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_aluminum_ore.json index 6bd0d9885..74be44066 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_blasting_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json index 1c3dbf281..7759b4c3b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_blasting_deepslate_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_raw_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_raw_aluminum_ore.json index 173c8dfae..1ae39e108 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_blasting_raw_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_blasting_raw_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json index b80cb8654..f503e5b6e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_smelting_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json index 25902a779..cc68f2138 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_smelting_deepslate_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json index 844a3e70a..c0cda3a73 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/aluminum_ingot_from_smelting_raw_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:aluminum_ingot_from_smelting_raw_aluminum_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json index 27a6ef5d8..a974da054 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_blasting_bendalloy_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:bendalloy_ingot_from_blasting_bendalloy_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json index 6355fea0f..1fcb0db78 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bendalloy_ingot_from_smelting_bendalloy_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:bendalloy_ingot_from_smelting_bendalloy_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json index 90fbf0505..9d013a8d8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_blasting_brass_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:brass_ingot_from_blasting_brass_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_smelting_brass_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_smelting_brass_blend.json index 81382874f..92f767ef7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/brass_ingot_from_smelting_brass_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/brass_ingot_from_smelting_brass_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:brass_ingot_from_smelting_brass_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_blasting_bronze_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_blasting_bronze_blend.json index 15239b8d0..b93a3d448 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_blasting_bronze_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_blasting_bronze_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:bronze_ingot_from_blasting_bronze_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_smelting_bronze_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_smelting_bronze_blend.json index e3f4be4b2..ffdd35adb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/bronze_ingot_from_smelting_bronze_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/bronze_ingot_from_smelting_bronze_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:bronze_ingot_from_smelting_bronze_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_cadmium_ore.json index 26a3111d5..1eac539e3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_blasting_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json index cd1078c99..e6a57067b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_blasting_deepslate_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_raw_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_raw_cadmium_ore.json index 036fd9996..0dab22b25 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_blasting_raw_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_blasting_raw_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_blasting_raw_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_cadmium_ore.json index d35356468..647f9d96a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_smelting_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json index ec09b3072..73da6b920 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_smelting_deepslate_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_raw_cadmium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_raw_cadmium_ore.json index 07a020e92..3e81051c2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/cadmium_ingot_from_smelting_raw_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/cadmium_ingot_from_smelting_raw_cadmium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:cadmium_ingot_from_smelting_raw_cadmium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_chromium_ore.json index 88b1ab595..28bb59bdc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_blasting_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_deepslate_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_deepslate_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_deepslate_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_deepslate_chromium_ore.json index 5bc9da45e..dfefab5c9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_deepslate_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_blasting_deepslate_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_raw_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_raw_chromium_ore.json index c0d091a7f..3dd362428 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_blasting_raw_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_blasting_raw_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_blasting_raw_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_chromium_ore.json index 014c7569a..29ab5c53b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_smelting_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_deepslate_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_deepslate_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_deepslate_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_deepslate_chromium_ore.json index 85c399efa..f9b2a54d7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_deepslate_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_smelting_deepslate_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_raw_chromium_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_raw_chromium_ore.json index e78061492..7935b40e7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/chromium_ingot_from_smelting_raw_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/chromium_ingot_from_smelting_raw_chromium_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:chromium_ingot_from_smelting_raw_chromium_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json index 467ff5759..b4a0b0f6e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/aluminum_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json index 245da390d..a95a93f35 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/aluminum_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/aluminum_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json index f3f4679b0..103bdb8e8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/atium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json index e3cb28dfa..3e6564eb8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/atium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/atium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json index 964f22ad5..706f9e0ac 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/bendalloy_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json index e5b7e04e5..c2bd7599c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bendalloy_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/bendalloy_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json index 184dd9ca7..d258c3505 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/brass_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_item_deconstruct.json index 6fdfcda0f..674e14772 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/brass_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/brass_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/brass_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_block_deconstruct.json index f5363c970..b5dbda331 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/bronze_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_item_deconstruct.json index 139ddd2ea..28902740f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/bronze_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/bronze_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/bronze_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_block_deconstruct.json index 9e27db19a..68b0536b2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/cadmium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_item_deconstruct.json index e55d4922f..8df08ae66 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/cadmium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/cadmium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/cadmium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_block_deconstruct.json index 171a9c41b..325aa5c0f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/chromium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_item_deconstruct.json index c2b3a02bf..56d525711 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/chromium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/chromium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/chromium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json index b83d041e6..2e06847ec 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/copper_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_item_deconstruct.json index 8a003f73d..433f8a12b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/copper_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/copper_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_block_deconstruct.json index eb617944c..e3c9a2c15 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/duralumin_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_item_deconstruct.json index 02d78b25c..62c71bf33 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/duralumin_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/duralumin_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/duralumin_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json index f15faeddb..c1c10c6db 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/electrum_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json index cebf9fdac..417adc116 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/electrum_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/electrum_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json index ba774af7c..bd185780f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/harmonium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json index 2ad433dc6..043ed9623 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/harmonium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/harmonium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json index 7f44bbf9d..f1b738b3d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lead_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json index 1015ad617..3d1a16200 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lead_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lead_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json index 21e8ab449..1668043a4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lerasatium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json index 741d88e54..934d28c2c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lerasatium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json index 3cb0f0dde..524e5d86b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lerasium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json index 97b649854..294732a20 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/lerasium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/lerasium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json index a3de85564..177deb31a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/malatium_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json index 8e6b3b9b8..b6a46ebab 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/malatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/malatium_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json index 9eaab4df1..75ccd71a0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/nickel_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_item_deconstruct.json index a0356e9a7..d69b3f403 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nickel_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nickel_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/nickel_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_block_deconstruct.json index 98e0c0dbd..320117c4a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/nicrosil_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_item_deconstruct.json index 4b2ed9c82..cc9c79bf7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/nicrosil_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/nicrosil_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/nicrosil_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_block_deconstruct.json index 5a972e7e4..a65116dcc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/pewter_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_item_deconstruct.json index 481b22c66..23b4f679e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/pewter_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/pewter_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/pewter_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_block_deconstruct.json index 01eb22ab4..36cd1e8b9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/silver_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_item_deconstruct.json index 7644fcaea..a273c66b5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/silver_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/silver_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/silver_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_block_deconstruct.json index b03838512..94e5c6566 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/steel_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_item_deconstruct.json index 336e736ea..e6d0a7b52 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/steel_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/steel_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/steel_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_block_deconstruct.json index 0345917ab..b3686fd9c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/tin_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_item_deconstruct.json index aa5f56875..913e34507 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/tin_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/tin_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/tin_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_block_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_block_deconstruct.json index e752fb4e2..83fea75bf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/zinc_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_item_deconstruct.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_item_deconstruct.json index 57cd6a416..12cfd32d2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/conversions/zinc_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/zinc_item_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/zinc_item_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_blasting_duralumin_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_blasting_duralumin_blend.json index 164f779b0..555b98120 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_blasting_duralumin_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_blasting_duralumin_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:duralumin_ingot_from_blasting_duralumin_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json index 56e320798..8fdd91f94 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/duralumin_ingot_from_smelting_duralumin_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:duralumin_ingot_from_smelting_duralumin_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json index 427af19cf..93aaa18d6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_blasting_electrum_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:electrum_ingot_from_blasting_electrum_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json index e9699635e..653049338 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/electrum_ingot_from_smelting_electrum_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:electrum_ingot_from_smelting_electrum_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_deepslate_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_deepslate_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json index c24a204e8..bd5c89728 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_blasting_deepslate_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json index 788138c28..bba67b292 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_blasting_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json index d3b91b63a..ed98c742b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_blasting_raw_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_blasting_raw_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_deepslate_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_deepslate_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json index fb684ebb8..cc28c86bf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_smelting_deepslate_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json index efa5a5e9e..4f1a202ed 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_smelting_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json index 215463dcd..95c466fe0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/lead_ingot_from_smelting_raw_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:lead_ingot_from_smelting_raw_lead_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_deepslate_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_deepslate_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json index be369ae94..fd370d548 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_blasting_deepslate_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json index c8990a75b..f0cb8a29b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_blasting_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json index aabf58ad0..b0b473075 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_blasting_raw_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_blasting_raw_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_deepslate_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_deepslate_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_deepslate_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_deepslate_nickel_ore.json index ab2483cc7..f6d3bc73f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_deepslate_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_smelting_deepslate_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_nickel_ore.json index 392d88362..723b31468 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_smelting_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_raw_nickel_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_raw_nickel_ore.json index 0443da92c..13a113875 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nickel_ingot_from_smelting_raw_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nickel_ingot_from_smelting_raw_nickel_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nickel_ingot_from_smelting_raw_nickel_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_blasting_nicrosil_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_blasting_nicrosil_blend.json index 3ca1e94f2..248b5acee 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_blasting_nicrosil_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_blasting_nicrosil_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nicrosil_ingot_from_blasting_nicrosil_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_smelting_nicrosil_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_smelting_nicrosil_blend.json index 618cabba5..f3ad6cb1d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/nicrosil_ingot_from_smelting_nicrosil_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/nicrosil_ingot_from_smelting_nicrosil_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:nicrosil_ingot_from_smelting_nicrosil_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_blasting_pewter_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_blasting_pewter_blend.json index 00d2abad4..7d883b3f0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_blasting_pewter_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_blasting_pewter_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:pewter_ingot_from_blasting_pewter_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_smelting_pewter_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_smelting_pewter_blend.json index bdcd13e19..4872dc955 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/pewter_ingot_from_smelting_pewter_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/pewter_ingot_from_smelting_pewter_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:pewter_ingot_from_smelting_pewter_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_deepslate_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_deepslate_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_deepslate_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_deepslate_silver_ore.json index 165fd1780..8b6134c6a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_deepslate_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_blasting_deepslate_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_raw_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_raw_silver_ore.json index d2f31eaa3..0537b39a5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_raw_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_raw_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_blasting_raw_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_silver_ore.json index 0edfde715..adfa6e832 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_blasting_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_blasting_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_blasting_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_deepslate_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_deepslate_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_deepslate_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_deepslate_silver_ore.json index e047aa957..3024f4437 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_deepslate_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_smelting_deepslate_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_raw_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_raw_silver_ore.json index c084f0456..6f58947e9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_raw_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_raw_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_smelting_raw_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_silver_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_silver_ore.json index 94fc57cf7..3e1954764 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/silver_ingot_from_smelting_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/silver_ingot_from_smelting_silver_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:silver_ingot_from_smelting_silver_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_blasting_steel_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_blasting_steel_blend.json index e68c9352e..3c8f60a2a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_blasting_steel_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_blasting_steel_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:steel_ingot_from_blasting_steel_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_smelting_steel_blend.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_smelting_steel_blend.json index 367471a1f..77a45c5e8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/steel_ingot_from_smelting_steel_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/steel_ingot_from_smelting_steel_blend.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:steel_ingot_from_smelting_steel_blend" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_deepslate_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_deepslate_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_deepslate_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_deepslate_tin_ore.json index 40f023e98..14e0d5060 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_deepslate_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_blasting_deepslate_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_raw_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_raw_tin_ore.json index bdb1f55da..0030ae5ac 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_raw_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_raw_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_blasting_raw_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_tin_ore.json index 54c346c2f..1d340ecd3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_blasting_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_blasting_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_blasting_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_deepslate_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_deepslate_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_deepslate_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_deepslate_tin_ore.json index a93ea7c5a..cdb45c941 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_deepslate_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_smelting_deepslate_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_raw_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_raw_tin_ore.json index 1eadcd6f5..71f49309d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_raw_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_raw_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_smelting_raw_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_tin_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_tin_ore.json index e8b97d033..a3f144a8a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/tin_ingot_from_smelting_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/tin_ingot_from_smelting_tin_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:tin_ingot_from_smelting_tin_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_deepslate_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_deepslate_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_deepslate_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_deepslate_zinc_ore.json index fc44a8b2f..d8a17f6e1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_deepslate_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_blasting_deepslate_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_raw_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_raw_zinc_ore.json index a5216054b..f3a16de63 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_raw_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_raw_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_blasting_raw_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_zinc_ore.json index 711d3801f..8cfe70ec5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_blasting_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_blasting_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_blasting_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_deepslate_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_deepslate_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_deepslate_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_deepslate_zinc_ore.json index f5f8614d5..949be4aa4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_deepslate_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_smelting_deepslate_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_raw_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_raw_zinc_ore.json index e006f02bd..542823903 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_raw_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_raw_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_smelting_raw_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_zinc_ore.json similarity index 94% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_zinc_ore.json index f17c2fb84..b19b5e514 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/cosmere.items/zinc_ingot_from_smelting_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/zinc_ingot_from_smelting_zinc_ore.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:zinc_ingot_from_smelting_zinc_ore" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum_ore.json deleted file mode 100644 index ba0db8104..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:aluminum_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_aluminum_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium_ore.json deleted file mode 100644 index 354d22f57..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:cadmium_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_cadmium_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium_ore.json deleted file mode 100644 index d1f89e0a0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:chromium_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_chromium_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead_ore.json deleted file mode 100644 index 18cdb82f2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:lead_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_lead_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel_ore.json deleted file mode 100644 index 75836fbeb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:nickel_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_nickel_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver_ore.json deleted file mode 100644 index 0991ab77a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:silver_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_silver_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin_ore.json deleted file mode 100644 index 5b106ab74..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:tin_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_tin_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc_ore.json deleted file mode 100644 index 0ba3c7ffd..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc_ore.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "type": "cosmere:ores", - "biomes": { - "type": "forge:or", - "values": [ - "#minecraft:is_overworld", - "#surgebinding:is_roshar" - ] - }, - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "cosmere:zinc_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "cosmere:deepslate_zinc_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 10 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "absolute": 150 - }, - "min_inclusive": { - "absolute": -32 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_block.json index dbea6e4a6..c5ad04aa9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_block.json @@ -14,7 +14,9 @@ "name": "cosmere:aluminum_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/aluminum_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_ore.json index 5616b1ed0..5409d947e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/aluminum_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/aluminum_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/atium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/atium_block.json index c9d20d4d3..b80c65472 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/atium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/atium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:atium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/atium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bendalloy_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bendalloy_block.json index 50f50ec67..ff1fc71c2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bendalloy_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bendalloy_block.json @@ -14,7 +14,9 @@ "name": "cosmere:bendalloy_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/bendalloy_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/brass_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/brass_block.json index 7c2c059ed..395741ecc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/brass_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/brass_block.json @@ -14,7 +14,9 @@ "name": "cosmere:brass_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/brass_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bronze_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bronze_block.json index 40b269d72..6e4891c9a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bronze_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/bronze_block.json @@ -14,7 +14,9 @@ "name": "cosmere:bronze_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/bronze_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_block.json index 0ff3e7333..7a9653800 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:cadmium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/cadmium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_ore.json index aac739510..514436496 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/cadmium_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/cadmium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_block.json index 53a98118a..ef012ccc2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:chromium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/chromium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_ore.json index 64a908219..4bac503ae 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/chromium_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/chromium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json index 4ce483ed1..0ce593353 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json @@ -14,7 +14,9 @@ "name": "cosmere:copper_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/copper_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json index 4a8b0f919..bfbb95f49 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_aluminum_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json index d9401cee0..71b28b572 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_cadmium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json index 76515e61a..f57621e60 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_chromium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json index 09e51f6dd..20052dcaf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_lead_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json index 6716a0a4a..452a26ade 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_nickel_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json index b3400d8eb..907170d05 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_silver_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json index 6679851e6..6a45bac65 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_tin_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json index fb9ed3dc4..0b5963b88 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/deepslate_zinc_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/duralumin_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/duralumin_block.json index 0e9eff9bf..9e6edf165 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/duralumin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/duralumin_block.json @@ -14,7 +14,9 @@ "name": "cosmere:duralumin_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/duralumin_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/electrum_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/electrum_block.json index 95c97837a..ce0691e1c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/electrum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/electrum_block.json @@ -14,7 +14,9 @@ "name": "cosmere:electrum_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/electrum_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/harmonium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/harmonium_block.json index cf051b3fe..06ecf9b32 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/harmonium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/harmonium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:harmonium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/harmonium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_block.json index 349fd1d09..18d7e915b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_block.json @@ -14,7 +14,9 @@ "name": "cosmere:lead_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/lead_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_ore.json index 1158b9e64..806d3658b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lead_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/lead_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasatium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasatium_block.json index e2b1aa51a..86191d831 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasatium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:lerasatium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/lerasatium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasium_block.json index b21257ef4..1d81ad898 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/lerasium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:lerasium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/lerasium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/malatium_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/malatium_block.json index 3851d8c4c..f48794fd5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/malatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/malatium_block.json @@ -14,7 +14,9 @@ "name": "cosmere:malatium_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/malatium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/metalworking_table.json index 8ec6a2e32..99ebbd4d5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/metalworking_table.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/metalworking_table.json @@ -14,7 +14,9 @@ "name": "cosmere:metalworking_table" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/metalworking_table" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_block.json index c49688eab..bc43f966b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_block.json @@ -14,7 +14,9 @@ "name": "cosmere:nickel_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/nickel_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_ore.json index be3b30b84..a27f7afd7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nickel_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/nickel_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nicrosil_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nicrosil_block.json index 16d2f32b6..8d6f6aea4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nicrosil_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/nicrosil_block.json @@ -14,7 +14,9 @@ "name": "cosmere:nicrosil_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/nicrosil_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/pewter_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/pewter_block.json index 0849f95da..8d7011b23 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/pewter_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/pewter_block.json @@ -14,7 +14,9 @@ "name": "cosmere:pewter_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/pewter_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_block.json index 5323aa5c7..a493d305b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_block.json @@ -14,7 +14,9 @@ "name": "cosmere:silver_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/silver_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_ore.json index e0c9d22d8..57485826e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/silver_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/silver_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/steel_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/steel_block.json index 8a2c2975e..a6d835c81 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/steel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/steel_block.json @@ -14,7 +14,9 @@ "name": "cosmere:steel_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/steel_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_block.json index d433bad81..81948eb95 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_block.json @@ -14,7 +14,9 @@ "name": "cosmere:tin_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/tin_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_ore.json index fa60dfaea..39d7e3b32 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/tin_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/tin_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_block.json index 8c5c2fcdb..2b29d70fc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_block.json @@ -14,7 +14,9 @@ "name": "cosmere:zinc_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/zinc_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_ore.json index 0876de7ac..e4c60e091 100644 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/zinc_ore.json @@ -43,7 +43,9 @@ ] } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/zinc_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bendalloy.json index fb7d3cf68..8277613bb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bendalloy.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/cadmium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/brass.json index 853d2dda6..1ceb9386d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/brass.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/zinc" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bronze.json index 3ad6648d5..a3372526f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/bronze.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/copper" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/duralumin.json index a963f4ea2..0161a2992 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/duralumin.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/aluminum" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/electrum.json index caee358ed..3d0024c18 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/electrum.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/gold" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/nicrosil.json index d6fe06a40..c7dfbc410 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/nicrosil.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/chromium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/pewter.json index cbac9693f..faebdc687 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/pewter.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/tin" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/steel.json index 4f2e45813..4efe759a3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/dust_blend/steel.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:dusts/iron" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json index 56a36af66..647dabf76 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bendalloy.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/cadmium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/brass.json index 21a687be1..061844097 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/brass.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/zinc" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bronze.json index 4a8546c4d..1e2561c82 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/bronze.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/copper" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/duralumin.json index e6214c5d3..e2f8caad6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/duralumin.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/aluminum" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/electrum.json index d1b00b4cc..d7bd9b592 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/electrum.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/gold" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json index f13945fb9..560e68496 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/nicrosil.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/chromium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/pewter.json index 27ddbac4d..d9f054ac4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/pewter.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/tin" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/steel.json index 0f238c184..ea99d0ef2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/ingot_blend/steel.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/iron" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bendalloy.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bendalloy.json index d51bd6ed6..f7988d388 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bendalloy.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bendalloy.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/cadmium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/brass.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/brass.json index 6fd3c93f2..fa27665ae 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/brass.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/brass.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/zinc" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bronze.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bronze.json index 77c45b39d..4cfd80fcb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bronze.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/bronze.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/copper" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/duralumin.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/duralumin.json index dbed4a7bb..b0d58ca21 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/duralumin.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/duralumin.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/aluminum" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/electrum.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/electrum.json index 084dfb083..7f81be921 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/electrum.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/electrum.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/gold" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/nicrosil.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/nicrosil.json index bae32a28f..0aa82fdfd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/nicrosil.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/nicrosil.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/chromium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/pewter.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/pewter.json index 229254998..c82bdf763 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/pewter.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/pewter.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/tin" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/steel.json b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/steel.json index 40307b780..5daa16d00 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/steel.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/alloying/raw_blend/steel.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:raw_materials/iron" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_block.json index 838bb3f08..da3c64bba 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/aluminum" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:aluminum_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot.json index b8789d996..90aad1cd2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/aluminum" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:aluminum_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json index fddd2dd81..95f848462 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json index faaad5a34..d6d5fca69 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_deepslate_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json index a422f572c..89b16bcf6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_blasting_raw_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json index 5b05b4852..75dd75a27 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json index 2117d5b8a..75a01bd01 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json index 161e3f538..eb46f329a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_block.json index 78e0503ac..b1e308fbf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/atium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:atium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json index 60af989bf..964b03ae7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/atium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:atium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_block.json index 77a717bb7..1bbe6cfc5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/bendalloy" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:bendalloy_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot.json index b1d82c324..2a2018755 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/bendalloy" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:bendalloy_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json index 4d10ddc2c..4bf4645d8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json index 589e72daa..cb4de6460 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bendalloy_ingot_from_smelting_bendalloy_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_block.json index 3c97a01d2..95eb207ea 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/brass" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:brass_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot.json index a3c2e3cf0..277fcb75a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/brass" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:brass_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json index bf6530f93..731342bae 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_blasting_brass_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json index 34cd7d22e..0a50cbcf5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/brass_ingot_from_smelting_brass_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_block.json index 657d3f4d0..d685d3ad5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/bronze" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:bronze_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot.json index a3a01442c..0bf825c8f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/bronze" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:bronze_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json index 758d8d3b6..72e418fea 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_blasting_bronze_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json index f609d4611..2de52b61a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/bronze_ingot_from_smelting_bronze_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_block.json index 632afcba4..775e9e233 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/cadmium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:cadmium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot.json index dc38a9eb4..35cf59c92 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/cadmium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:cadmium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json index 70e8bbcc3..db3b80a53 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json index 86efa7d2d..d1dd4393d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_deepslate_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json index bfe953e5d..8903007ec 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_blasting_raw_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json index 920db2c64..dec0f2f0c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json index 8bb077614..dd9ee501b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_deepslate_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json index 5e687d56d..72310bf04 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/cadmium_ingot_from_smelting_raw_cadmium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_block.json index 8ecdd55bb..c5ff92247 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/chromium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:chromium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot.json index 5a1bdf98b..48706723c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/chromium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:chromium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json index 52fc1dac6..53db07c12 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json index 9a8ec9ad1..bb378125f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_deepslate_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json index a46248e36..96512cad9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_blasting_raw_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json index 935a06441..c436cf7d5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json index 90b318e63..f32aa6e90 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_deepslate_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json index 2aef6cc20..c2ed9dc20 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/chromium_ingot_from_smelting_raw_chromium_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json index d001b77b3..62624d162 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:aluminum_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json index e6debeba2..ed2a61077 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/aluminum_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/aluminum" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_block_deconstruct.json index 739fc0fb8..2cbad47bf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:atium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json index 591bc154b..98b1da5b8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/atium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json index 0b08cf93e..0b9485eda 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:bendalloy_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json index dae7a41f3..84e7a023a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/bendalloy" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_block_deconstruct.json index 800d406f3..ce4d9e0e0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:brass_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_item_deconstruct.json index 05528cc81..7a51d5808 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/brass_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/brass" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_block_deconstruct.json index 16a7da77d..850f67d5c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:bronze_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_item_deconstruct.json index 9d898a872..630470521 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/bronze_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/bronze" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json index a6fa2daf0..2b98078f7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:cadmium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json index 085d1d3d3..9bf0feeba 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/cadmium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/cadmium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_block_deconstruct.json index c0caffed8..ad050e78b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:chromium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_item_deconstruct.json index ee4f2e41c..ea2c1912b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/chromium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/chromium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json index 7cb53cbb8..e74607195 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:copper_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_item_deconstruct.json index 505b7cd9f..379027d43 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/copper" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json index aca932686..34cf1fc55 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:duralumin_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json index 651bf92f0..60744c001 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/duralumin_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/duralumin" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_block_deconstruct.json index 5b14e03a0..a69fc8cb7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:electrum_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_item_deconstruct.json index 64d7eedc7..314d6fe67 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/electrum_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/electrum" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json index 5297570d3..bb2a919c1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:harmonium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json index f1d1e9534..bb56af95f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/harmonium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_block_deconstruct.json index 039c034f7..b10e2d8ab 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:lead_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_item_deconstruct.json index 60593e78a..2e0627841 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lead_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/lead" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json index 140a4756c..96033c3c6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:lerasatium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json index 38a39431d..308d2c87d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/lerasatium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json index 829500e30..7c8cda9ec 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:lerasium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json index f0fc299ee..2c2201b56 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/lerasium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_block_deconstruct.json index 0fcabed17..4fc94c552 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:malatium_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_item_deconstruct.json index 3d3d52992..ce1699970 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/malatium_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/malatium" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_block_deconstruct.json index 30c2fdb98..7b87a02e3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:nickel_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_item_deconstruct.json index abf2e1c73..cb7a4de63 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nickel_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/nickel" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json index 6ce47df12..2a1911e15 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:nicrosil_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json index 9f76c1895..c659cb967 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/nicrosil_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/nicrosil" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_block_deconstruct.json index 70cdac7ef..d9b4dfc26 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:pewter_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_item_deconstruct.json index 438667843..b54c10217 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/pewter_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/pewter" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_block_deconstruct.json index 4874f0b7b..e867cc39d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:silver_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_item_deconstruct.json index bec462d7e..a38ffa07d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/silver_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/silver" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_block_deconstruct.json index 9d78cfe38..2a15a9b3d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:steel_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_item_deconstruct.json index 3b84f69e3..cefaf668d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/steel_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/steel" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_block_deconstruct.json index 28df17527..91c3483c0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:tin_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_item_deconstruct.json index 68af059dd..727086249 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/tin_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/tin" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_block_deconstruct.json index b5e0fc6e4..01fe20d29 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_block_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "cosmere:zinc_block" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_item_deconstruct.json index aa72878a6..dfabc7435 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/zinc_item_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "tag": "forge:ingots/zinc" diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json index 016d42058..6305dcd2b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/copper" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:copper_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json index 057b0985d..542752d22 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/copper" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:copper_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_block.json index 987e6e582..e6eaf3727 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/duralumin" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:duralumin_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot.json index c120a9565..841a0f3aa 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/duralumin" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:duralumin_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json index 80d343ce1..6266ff248 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json index de916af14..46a526869 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/duralumin_ingot_from_smelting_duralumin_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_block.json index 11cb1c190..826122706 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/electrum" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:electrum_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot.json index f98c14693..ab0ebc30b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/electrum" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:electrum_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json index 4a88ebcbe..8ec10b1d9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json index 72ff1a978..781fb898d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_block.json index 5e6125cba..52e243ee3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/harmonium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:harmonium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json index 2403cf1a0..f39747934 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/harmonium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:harmonium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_block.json index 341ced887..d47a31660 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/lead" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lead_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot.json index afc398b5d..8372f897c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/lead" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lead_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json index febf82313..3c3974316 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json index 90f4f3639..2949c38cf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json index 1342505ca..74d168a70 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_blasting_raw_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json index 1c157c69e..5244ffc2a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json index e6a96ba4e..3688fe76b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json index e2cf5f7b1..c6120b10b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_block.json index c829b91b1..58a016a2a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/lerasatium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lerasatium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json index f654e6332..9c9acb019 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/lerasatium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lerasatium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_block.json index a9cc08e14..e5a77fc4b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/lerasium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lerasium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json index 508fef3dc..d4ba9b9ff 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/lerasium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:lerasium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_block.json index 7a5b6766e..d2975dd93 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/malatium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:malatium_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_ingot.json index 8452ab431..c03dab030 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/malatium_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/malatium" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:malatium_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/metalworking_table.json b/src/datagen/generated/cosmere/data/cosmere/recipes/metalworking_table.json index d8cbfa37d..27bbd4019 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/metalworking_table.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/metalworking_table.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "X": { "item": "cosmere:steel_ingot" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:metalworking_table" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_block.json index 8333ed885..00184ce76 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/nickel" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:nickel_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot.json index 06570af8f..24ad69896 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/nickel" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:nickel_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json index 1dd996f43..26ecd646b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_deepslate_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json index 256b6710d..ed21bb907 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json index 503b4d41d..9fa85105d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json index c922a48b6..2c799f74d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_deepslate_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json index 7d1c7f2a1..e9335cc91 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json index 831a38906..0cd038b59 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nickel_ingot_from_smelting_raw_nickel_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_block.json index 08b069fd2..0a4c8ed17 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/nicrosil" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:nicrosil_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot.json index c08813a20..7af7e2137 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/nicrosil" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:nicrosil_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json index 02fde670c..0f314f1de 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_blasting_nicrosil_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json index 1175256a4..dbbcc69a8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/nicrosil_ingot_from_smelting_nicrosil_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_block.json index 388a9244f..521e7f292 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/pewter" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:pewter_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot.json index 454b323c6..4239e980c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/pewter" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:pewter_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json index baa43ea08..7ac71ac52 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_blasting_pewter_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json index 88e939ab3..e74b6e82c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/pewter_ingot_from_smelting_pewter_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_block.json index 02b1b42e2..bf68aef78 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/silver" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:silver_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot.json index 445352dc1..eaefd7ef9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/silver" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:silver_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json index 4f55a95eb..60323e1d1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_deepslate_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json index 05fcb5a23..c6caa8dd3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_raw_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json index 062bab858..461649aee 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_blasting_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json index e9aa11623..28553b173 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_deepslate_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json index 46abae8f2..8ae13492f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_raw_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json index b5c9daf6f..65ab6843d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/silver_ingot_from_smelting_silver_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_block.json index 2d971d664..790efe2f6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/steel" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:steel_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot.json index 5a1600263..dfc931148 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/steel" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:steel_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json index 0dfe23798..12b01f238 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_blasting_steel_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json index c4b54ff46..ac708fd09 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/steel_ingot_from_smelting_steel_blend.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_block.json index 702cfa070..a26862df4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/tin" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:tin_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot.json index 387abf026..6cf790ef6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/tin" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:tin_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json index d2f4dd6c3..1a1cf0465 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_deepslate_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json index fe69fdf5d..7a1444bec 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_raw_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json index 9e7d1dfe1..e49f19880 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_blasting_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json index 3af062072..6eb3005de 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_deepslate_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json index ab3c4402b..101ee244c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_raw_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json index 991383657..bb52ec629 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/tin_ingot_from_smelting_tin_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_block.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_block.json index 3c7ab9fa3..fddd05bc5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_block.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:ingots/zinc" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:zinc_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot.json index 4e0fca854..a0ee414b2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:nuggets/zinc" @@ -15,5 +16,6 @@ ], "result": { "item": "cosmere:zinc_ingot" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json index b1474a1a1..4a92ee70f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_deepslate_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json index 0794cb5e0..58ae4bdbf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_raw_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json index 5ba24027a..9ec4ac744 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_blasting_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json index 1dd978709..1aa8d7159 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json index 0bf719677..4dd1ca922 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json index ef19ff045..277e80697 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/worldgen/biome/spawn_ores.json b/src/datagen/generated/cosmere/data/cosmere/tags/worldgen/biome/spawn_ores.json new file mode 100644 index 000000000..d3152c5b0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/tags/worldgen/biome/spawn_ores.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#minecraft:is_overworld" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 b/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 index 6992570da..296dbe383 100644 --- a/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 +++ b/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 @@ -1,3 +1,3 @@ -// 1.19.2 2024-03-23T13:46:02.8111669 Tools PatchouliGeneration -8d56456e5d842ea525ab3c7ea1e6fbc8a1caf9a5 data/cosmeretools/patchouli_books/guide/en_us/categories/tools.json -6c5b46f6132b9b2b6062eac1b11dd2a999faa987 data/cosmeretools/patchouli_books/guide/en_us/entries/tools/tools_basics.json +// 1.20.1 2024-10-09T13:38:50.2014549 Tools PatchouliGeneration +d2fd40ccfff9153efb80f6d6e71bee9cb3b2fdfd assets/cosmere/patchouli_books/guide/en_us/categories/tools.json +a9cbc7d917e1dee48d14f71d414858abb5927575 assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json diff --git a/src/datagen/generated/cosmeretools/.cache/545a26d0656f5ce884cbfae350c3577a108baac0 b/src/datagen/generated/cosmeretools/.cache/545a26d0656f5ce884cbfae350c3577a108baac0 deleted file mode 100644 index aa1e0f294..000000000 --- a/src/datagen/generated/cosmeretools/.cache/545a26d0656f5ce884cbfae350c3577a108baac0 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2024-03-22T18:45:22.5065001 Tools Advancements diff --git a/src/datagen/generated/cosmeretools/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/cosmeretools/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..152c709dc --- /dev/null +++ b/src/datagen/generated/cosmeretools/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.220748 Loot Tables diff --git a/src/datagen/generated/cosmeretools/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/cosmeretools/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index ecdf45b27..000000000 --- a/src/datagen/generated/cosmeretools/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2024-03-22T18:45:22.5085023 LootTables diff --git a/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 2623c34b2..6c3abc369 100644 --- a/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2024-03-22T18:45:22.5075016 Recipes +// 1.20.1 2024-10-09T13:22:13.2237503 Recipes diff --git a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index ecaf54a85..804c802f6 100644 --- a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2024-04-03T11:50:06.3413548 Languages: en_us -90f76d2eefba46a592e1e66c353391f71a47da3c assets/cosmeretools/lang/en_us.json +// 1.20.1 2024-10-09T14:02:55.8260756 Languages: en_us +7abefe2bf35f1e418c378cfed0d9249e423e6116 assets/cosmeretools/lang/en_us.json diff --git a/src/datagen/generated/cosmeretools/.cache/dd0552f4815307fa79918bc7fddf7e3ebb5df25c b/src/datagen/generated/cosmeretools/.cache/dd0552f4815307fa79918bc7fddf7e3ebb5df25c index 595713a7d..2214fe6b0 100644 --- a/src/datagen/generated/cosmeretools/.cache/dd0552f4815307fa79918bc7fddf7e3ebb5df25c +++ b/src/datagen/generated/cosmeretools/.cache/dd0552f4815307fa79918bc7fddf7e3ebb5df25c @@ -1 +1 @@ -// 1.19.2 2024-03-23T13:46:02.8121678 Tags: cosmeretools +// 1.20.1 2024-10-09T13:22:13.2247512 Tags: cosmeretools diff --git a/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 b/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 index 6c1b7d708..c9a37c8c7 100644 --- a/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 +++ b/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-24T13:47:50.2977186 Item Models: cosmeretools +// 1.20.1 2024-10-09T13:22:13.2227496 Item Models: cosmeretools 9689a584a402d6edb9bb8fcb52769136d5a4443c assets/cosmeretools/models/item/aluminum_axe.json e5bc83f1ddd7b2aa51f247a6b4df2197190944b9 assets/cosmeretools/models/item/aluminum_boots.json 2fd89eb4599fb537b1d4d0dfb3d12745a3a284fb assets/cosmeretools/models/item/aluminum_chestplate.json diff --git a/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json index 1fac2e0da..43409f4ca 100644 --- a/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json +++ b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/categories/tools.json @@ -1,6 +1,6 @@ { - "description": "Tools description that says some stuff.", - "icon": "minecraft:paper", + "description": "Metalworkers recently discovered that other metals besides iron and gold can be worked to make tools and armor.", + "icon": "cosmere:pewter_pickaxe", "name": "Tools", "secret": true, "sortnum": 99 diff --git a/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json index ccc8d3cba..d1d7b7330 100644 --- a/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json +++ b/src/datagen/generated/cosmeretools/assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json @@ -1,6 +1,6 @@ { "category": "cosmere:tools", - "icon": "minecraft:paper", + "icon": "cosmere:pewter_pickaxe", "name": "Tools (For Dummies)", "pages": [ { diff --git a/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json b/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json index 131e74f4c..082cfd57e 100644 --- a/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json +++ b/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json @@ -197,5 +197,5 @@ "item.cosmeretools.zinc_pickaxe": "Zinc Pickaxe", "item.cosmeretools.zinc_shovel": "Zinc Shovel", "item.cosmeretools.zinc_sword": "Zinc Sword", - "itemGroup.cosmeretools.tools": "Cosmere tools" + "itemGroup.cosmeretools.tools": "Cosmere Tools" } \ No newline at end of file diff --git a/src/datagen/generated/example/.cache/1fa0b7e761d1385d265c3e6fc16617fbb79d24b6 b/src/datagen/generated/example/.cache/1fa0b7e761d1385d265c3e6fc16617fbb79d24b6 deleted file mode 100644 index d117ff222..000000000 --- a/src/datagen/generated/example/.cache/1fa0b7e761d1385d265c3e6fc16617fbb79d24b6 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-17T21:13:57.073818 Example Advancements diff --git a/src/datagen/generated/example/.cache/4256cb056fbe91aad6656efb50983fdfb19e7569 b/src/datagen/generated/example/.cache/4256cb056fbe91aad6656efb50983fdfb19e7569 index 2ee286e45..788b6d5ae 100644 --- a/src/datagen/generated/example/.cache/4256cb056fbe91aad6656efb50983fdfb19e7569 +++ b/src/datagen/generated/example/.cache/4256cb056fbe91aad6656efb50983fdfb19e7569 @@ -1 +1 @@ -// 1.19.2 2023-11-17T21:13:57.0728168 Item Models: example +// 1.20.1 2024-10-09T13:22:13.4177346 Item Models: example diff --git a/src/datagen/generated/example/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/example/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..c94a796f4 --- /dev/null +++ b/src/datagen/generated/example/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.4177346 Loot Tables diff --git a/src/datagen/generated/example/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/example/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 75dbbc636..000000000 --- a/src/datagen/generated/example/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-17T21:30:24.1858004 LootTables diff --git a/src/datagen/generated/example/.cache/9adbaa29e00bdcd402d9c6d9c3e37d562b53ee0b b/src/datagen/generated/example/.cache/9adbaa29e00bdcd402d9c6d9c3e37d562b53ee0b index 1d0b25a23..bb01b2154 100644 --- a/src/datagen/generated/example/.cache/9adbaa29e00bdcd402d9c6d9c3e37d562b53ee0b +++ b/src/datagen/generated/example/.cache/9adbaa29e00bdcd402d9c6d9c3e37d562b53ee0b @@ -1,3 +1,3 @@ -// 1.19.2 2023-11-22T13:35:41.0202487 Example PatchouliGeneration -04c3501728b65392de200993fb294f3acdf421d5 data/example/patchouli_books/guide/en_us/categories/example.json -46ec0430ba03835cf96895151a94cdc37bdd8b18 data/example/patchouli_books/guide/en_us/entries/example/example_basics.json +// 1.20.1 2024-10-09T13:38:50.3211153 Example PatchouliGeneration +04c3501728b65392de200993fb294f3acdf421d5 assets/cosmere/patchouli_books/guide/en_us/categories/example.json +4d3c3d21460d107c3ac2aa5c500ad14f7decb1cf assets/cosmere/patchouli_books/guide/en_us/entries/example/example_basics.json diff --git a/src/datagen/generated/example/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/example/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 4678c5dcf..a3a97faff 100644 --- a/src/datagen/generated/example/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/example/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2023-11-17T21:13:57.0718159 Recipes +// 1.20.1 2024-10-09T13:22:13.4177346 Recipes diff --git a/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index c81cc6cba..569a60ac7 100644 --- a/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1 @@ -// 1.19.2 2023-11-17T21:13:57.0748189 Languages: en_us +// 1.20.1 2024-10-09T13:22:13.4187353 Languages: en_us diff --git a/src/datagen/generated/example/.cache/fd7181717ee34e9c72543275cac97813daa42620 b/src/datagen/generated/example/.cache/fd7181717ee34e9c72543275cac97813daa42620 index 047d9b52b..b2d0bd20b 100644 --- a/src/datagen/generated/example/.cache/fd7181717ee34e9c72543275cac97813daa42620 +++ b/src/datagen/generated/example/.cache/fd7181717ee34e9c72543275cac97813daa42620 @@ -1 +1 @@ -// 1.19.2 2023-11-17T21:13:57.0728168 Tags: example +// 1.20.1 2024-10-09T13:22:13.4167427 Tags: example diff --git a/src/datagen/generated/feruchemy/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 b/src/datagen/generated/feruchemy/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 deleted file mode 100644 index 0b0961a66..000000000 --- a/src/datagen/generated/feruchemy/.cache/0da09c3765e69584f28b8eb99ea0d5489f661122 +++ /dev/null @@ -1,19 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.9149829 Cosmere Advancements -b345a1f4827be9c0fe7341dccd3b3e22eba2819d data/feruchemy/advancements/feruchemy/aluminum.json -84b50be2c1db1878fbdcc3d71f39510ea11e8756 data/feruchemy/advancements/feruchemy/atium.json -d3c25f4a8de5b24e277a729b2ede9c8e4ceb5085 data/feruchemy/advancements/feruchemy/bendalloy.json -264eb417c290297db475e379a6cd5dcdfeff2c6f data/feruchemy/advancements/feruchemy/brass.json -c22a214cc20a82ec25da7b2a3a94d9d33a31f43d data/feruchemy/advancements/feruchemy/bronze.json -01605095c2a936416f56d41407ea17b836e0407b data/feruchemy/advancements/feruchemy/cadmium.json -6b2df4601d9cb0c67f4d529156f5433efb292ccd data/feruchemy/advancements/feruchemy/chromium.json -a93680b16609a4b97f00652ad2f4eaa0099b037e data/feruchemy/advancements/feruchemy/copper.json -9969ca1789e99e8fb258049857a59c17751f5dd9 data/feruchemy/advancements/feruchemy/duralumin.json -b44b7fe734053f17a17c6d8620547c635e233be0 data/feruchemy/advancements/feruchemy/electrum.json -2f79a26a895dfa8edb3435064010a744fe54767d data/feruchemy/advancements/feruchemy/gold.json -2c2213c77b429d4e7a9322cdf3e60371de123344 data/feruchemy/advancements/feruchemy/iron.json -929e18a401d3072cce1ad630f70bfd28f22ec399 data/feruchemy/advancements/feruchemy/nicrosil.json -8a49755068511dc217346d33b5f72b42ec92629c data/feruchemy/advancements/feruchemy/pewter.json -078af6d41c13ea817a8988d35226acabdd7e1e2c data/feruchemy/advancements/feruchemy/root.json -d565bab2858604f6d26ac9d532e0824ae356ad8e data/feruchemy/advancements/feruchemy/steel.json -a17b49ea0d26d5f438402e7b96d694001fd2186d data/feruchemy/advancements/feruchemy/tin.json -de917417ff28905554eba34097d247f8a3b162b5 data/feruchemy/advancements/feruchemy/zinc.json diff --git a/src/datagen/generated/feruchemy/.cache/378e5163db565cdb690d66f27a88cc18d663d22f b/src/datagen/generated/feruchemy/.cache/378e5163db565cdb690d66f27a88cc18d663d22f index 59020bfd0..34e600b4e 100644 --- a/src/datagen/generated/feruchemy/.cache/378e5163db565cdb690d66f27a88cc18d663d22f +++ b/src/datagen/generated/feruchemy/.cache/378e5163db565cdb690d66f27a88cc18d663d22f @@ -1,4 +1,4 @@ -// 1.19.2 2023-11-21T17:11:54.0776788 Tags: feruchemy +// 1.20.1 2024-10-09T13:22:13.3756835 Tags: feruchemy b3c591c9bd1a93a8df13a35778bfeb18e5f221a8 data/curios/tags/items/bracelet.json f606fee81ffd164b0b3a99a40f91f5d102218208 data/curios/tags/items/necklace.json b2fb51cc89f870630a9028e6a9d0bd1e9ba80b6e data/curios/tags/items/ring.json diff --git a/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 index abfd7558c..bad87acc7 100644 --- a/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,21 +1,21 @@ -// 1.19.2 2023-10-02T12:37:11.1870244 PatchouliGeneration -9ea74965ee52ee3a9e5b7dd62822fc2e5959498e data/feruchemy/patchouli_books/guide/en_us/categories/feruchemy.json -d81d6c75d18eb1665f8a0201c8faeaa59dbe1350 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/compounding.json -ea20297801857799c0b6c4149b4a53c3b63b471b data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json -9f4f8d39ee8b77e44d97b9c249f1fa392965dc0f data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json -3a9fad94dc0d0f6e5aabe47fa9b640f9229b4994 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json -78491b07255ae75d00fffa99f08c59dba1c555e8 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json -4b29e18c74725addb2b464e6a398f0f8d8bcd60e data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json -8fa23485e023853a086241d1d313339e079db4b4 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json -c20bcdc529c3ebdc85f07ed4e37a70ccc769487b data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json -953ac2931353bba2866fa1bbf74634bdb6981663 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json -5157bf46b4c2ca034e5d03197d3d6c55891005df data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json -de72eb0cfb091723766842ffed2d611d230eccbc data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json -bf4d8e806b474ca78a9a7a88da5c1b3c14db3ed8 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json -36dbc09d9719f3350022df82fc88c8328999ca08 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json -ef4437c8cb2a31fe5e731a6c2c04d4e2b87b7844 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json -a7a960e582794cc90ce6bfee3f295e7255f7fd6a data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json -74952a9fb01600ff380c38daaf30b9ce7eed9c48 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json -b3dc451871ef853f2f8cb08e083843fc0c95ddbe data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json -6f6387692a8b4aba816da6bfc13f04e3c5523aaf data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json -4459799301ee3eeb046c17502c4adbbba07939d8 data/feruchemy/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +// 1.20.1 2024-10-09T13:38:50.2962519 PatchouliGeneration +9ea74965ee52ee3a9e5b7dd62822fc2e5959498e assets/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json +f275c49e55ff5d7da8766b3adae1313ce2031fc0 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json +eea98ac4f00464bce87b03192ef20965c2937eb9 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json +b2f7a7cf0b5aac604ec6b14e2de95acfeae69267 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_atium.json +fa7d768031555a70bbc802dd499fc3490f0b6303 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bendalloy.json +73ee607e285bf57e7613d3e1788866b404f6eee5 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_brass.json +e7e59f1d36a21c2f6b90cc9ab1ebbb4bc45cce9c assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_bronze.json +2a6df0eac2c3efd50a7b02f36afe02f2708910ff assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +e0dc317d3f7e5f3a661edab88bbb14b7db319843 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_chromium.json +ae6ebeba0fb2869a2a4f039f5d99530fad2e0a73 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_copper.json +a1680702d85fbd566360383540f7cbe1a6c1f755 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_duralumin.json +846e279cdb41934549e4bcef3a850303cca3af03 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_electrum.json +a96244e92b63d2cf5710cf7b73a8877491c14b59 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_gold.json +cdbaf5d9ad34fa0bf1d16644ca758debd91ceb52 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_iron.json +fbd392269f07bf654547f18bf63ac1857eacc18f assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_nicrosil.json +030449482ce8b9cc84563a149114267a20f74024 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_pewter.json +dc1048c641b59bbd66a8cd1cbc1485d02141c393 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json +f3c00939b3f652b20a14621259bbae69be041c2a assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json +f47f302616e239fcee62e209392711ef03a6db2b assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json +f4aa73c874839519e898d2bd360f24b388e0d9e5 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json diff --git a/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 b/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 index 7ab88a47c..ce05d8ba1 100644 --- a/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 +++ b/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 @@ -1,4 +1,4 @@ -// 1.19.2 2022-11-20T19:09:29.9199843 Item Models: feruchemy +// 1.20.1 2024-10-09T13:22:13.3746832 Item Models: feruchemy d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/aluminum_bracelet_metalmind.json 8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/aluminum_necklace_metalmind.json 74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/aluminum_ring_metalmind.json diff --git a/src/datagen/generated/feruchemy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/feruchemy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index d2fd6d94f..541fe5e71 100644 --- a/src/datagen/generated/feruchemy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/feruchemy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,103 +1,103 @@ -// 1.19.2 2022-11-20T19:09:29.9179881 Recipes -deef6383a1e555267dec42663883ee51f80bf809 data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_bracelet_metalmind.json -762f49a915bb9f6fa4145a7b077af8df35f7e4b8 data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_necklace_metalmind.json -b0921bda0b74adee674b9bf7b1a20813f344e793 data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_ring_metalmind.json -b9ace9186c22c1b68b51db2d398c0d40c2b5b7f1 data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_bracelet_metalmind.json -cfa4fb351a8785405a302a558cad3f7bf2f9752c data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_necklace_metalmind.json -b036a0a1c7cfa38cd699159c43b3a0acd03f6eb6 data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_ring_metalmind.json -dec0e42b9a41713628b3d1568eb18d49661e353b data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_bracelet_metalmind.json -f61e41e47882aeb603e7b3b38b4fcdaa02158bbf data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_necklace_metalmind.json -beb44703b4eec9d09d9037052110db142d46ae78 data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_ring_metalmind.json -43709eeeeaf5f074281db29a372c263c2bd119ec data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_bracelet_metalmind.json -6791d4a75298e35610e8e202894803af3048dccc data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_necklace_metalmind.json -20fa94b0612835032bebf23d2607a96fd657ab67 data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_ring_metalmind.json -0c00f3cf5f1690ff94a07b3ecd6763e20cc4a2bb data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_bracelet_metalmind.json -819e575e062df2c69f99083de925a26b75a73c12 data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_necklace_metalmind.json -c2ee3886b21a79ef0119aeb97b5e59a7d1aa118d data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_ring_metalmind.json -64aa309d9b65a01ea998786fc03e041e0b1c5f71 data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_bracelet_metalmind.json -8abe55da23ae39e86e2c3bfd54827b0245d493d4 data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_necklace_metalmind.json -9fd88cad0a579370cb6692661d3b15d5a332f600 data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_ring_metalmind.json -fccf90a35f0859a601ffe7b6fe088287257b5c1b data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_bracelet_metalmind.json -a9ed86bbfd4a7b13f94ea06b74187d5964f4ee2e data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_necklace_metalmind.json -101bef83d5215d2047b11ab1b3725dc0f354fd33 data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_ring_metalmind.json -7761c8a8d472796466d08099b47061c70da73372 data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_bracelet_metalmind.json -9436a9ad403c0a30daa246a8381e748a4d01aafa data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_necklace_metalmind.json -ff0ab0745bb59d675ab6d6252f18ca5600eca33c data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_ring_metalmind.json -c35079ceac16bfac0fd434ea07170606f924c006 data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_bracelet_metalmind.json -1a09cf4fc95bea0b5db54c9d3b47dd54558742cf data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_necklace_metalmind.json -3061af3cf68d33a20e858d9c40bc7f6b4e1af999 data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_ring_metalmind.json -9ae608e8eaba4100f28cebe830bc9bd05f124821 data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_bracelet_metalmind.json -7459fbbb11be40348715f09490ba457c3251715f data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_necklace_metalmind.json -5361676c7a6fe39e2e196cefe7480d919dba27df data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_ring_metalmind.json -966c804b41d77938f6d7edb42b5cdb4e0e910f53 data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_bracelet_metalmind.json -f6f5c7e51a154b567472f8f7a1532f2639c59612 data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_necklace_metalmind.json -f99ded91640023352c933453833f7d7032f43854 data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_ring_metalmind.json -90795eaa5e479001bdb8a216cb6d370f523425ef data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_bracelet_metalmind.json -5794fc1c3fb39f9e70428bbced817895ad9884d0 data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_necklace_metalmind.json -8471d6d06a404936d0b4621ac277ad6eab1ffad7 data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_ring_metalmind.json -af394588f1be3bbdea0d468796e722e2f0990e82 data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_bracelet_metalmind.json -c068c8818d8a63e42538bdc75b9a90bbf298a2f9 data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_necklace_metalmind.json -e87c866deca8fc7b296e753b00d8506576f250e8 data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_ring_metalmind.json -4f5199603997a634ab962d34a57683eb638c1918 data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_bracelet_metalmind.json -0c4858e5b57aa525d7dd284be60d2552d710ed1c data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_necklace_metalmind.json -ba6b963dbd4c1932b956a5f96cf020185edbc153 data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_ring_metalmind.json -8e5c0f5a901651d57a006b106d6f7229358e7188 data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_bracelet_metalmind.json -ccdc6951a5182d4bd7fe49ce86c9c533eefa1bcd data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_necklace_metalmind.json -59ec737b6996023bd82b8d4ea594a1c944755eda data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_ring_metalmind.json -77a7884a5cb227c35e7bca5393e33b21218e921c data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_bracelet_metalmind.json -a5076a0831cbdb111f22fcb1ef6a0cbaff25ced6 data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_necklace_metalmind.json -6acda4ec007e558372326dbfd60dc18a7231827b data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_ring_metalmind.json -5a1c9df3378b5ea18488235baf76fbe3d40f09b3 data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_bracelet_metalmind.json -72143b93c5860faed0f2bd0a830a31134d90ea91 data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_necklace_metalmind.json -31145789a10c021d4feec907da29c94d9e344f4c data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_ring_metalmind.json -fae4e8009a3b9256c6cd7275bece4779edbb2d09 data/feruchemy/recipes/aluminum_bracelet_metalmind.json -c8c1ef10fd52a1d4264630e71940dad15428b125 data/feruchemy/recipes/aluminum_necklace_metalmind.json -c19787d09118378fcf2ba7f7e8d8ecd596adc788 data/feruchemy/recipes/aluminum_ring_metalmind.json -6239f3885733b26c3fc69a9440793519cef612ea data/feruchemy/recipes/atium_bracelet_metalmind.json -a412ebec90b518241bd9453955c1c596a57a4ade data/feruchemy/recipes/atium_necklace_metalmind.json -eba78e8d6b26243d0e8fadf1ea90eda30f2cdf5b data/feruchemy/recipes/atium_ring_metalmind.json -15c5f3fa5de9f19d0bc81ec9106ded8f779caa35 data/feruchemy/recipes/bendalloy_bracelet_metalmind.json -b01c945707bacdf42cb63aa3f88b8d1f01e4ad90 data/feruchemy/recipes/bendalloy_necklace_metalmind.json -60f89615ebb66bb469ff2d6b88dd874289b0597a data/feruchemy/recipes/bendalloy_ring_metalmind.json -44e45aca437db1e7d988831eb7d5b7237dd48db9 data/feruchemy/recipes/brass_bracelet_metalmind.json -2e6fd8652f554ea63c5e6cb4b6c7b2c2f44dde56 data/feruchemy/recipes/brass_necklace_metalmind.json -796450bd7f6c7b21d77ed5b1149fd4b48c8f1eef data/feruchemy/recipes/brass_ring_metalmind.json -abfe240c8ac40c17425b7398d6272828776dad24 data/feruchemy/recipes/bronze_bracelet_metalmind.json -170ede575cb9a99e5c7d726f8343b5a28b1d77f4 data/feruchemy/recipes/bronze_necklace_metalmind.json -04840a027e852e8acdd0636149be753b4245da2f data/feruchemy/recipes/bronze_ring_metalmind.json -98e76893e06d1759edc67094c820b01c02018e12 data/feruchemy/recipes/cadmium_bracelet_metalmind.json -9c4ec042e7e300e69c23ca7656e9ba83680aefed data/feruchemy/recipes/cadmium_necklace_metalmind.json -d797f8cb0d31cb21d62fd20133e7398da9416cc6 data/feruchemy/recipes/cadmium_ring_metalmind.json -d2aafaf91baf49f8b340702ef8ea6c09d137e4df data/feruchemy/recipes/chromium_bracelet_metalmind.json -5fedbe96a4d4dc651f954871bc3049f336f2fb22 data/feruchemy/recipes/chromium_necklace_metalmind.json -e0709ce54e3ec30bd2dba55e6ade924e56980475 data/feruchemy/recipes/chromium_ring_metalmind.json -18bac1ae7361879bae39b81445f46a4f73098a61 data/feruchemy/recipes/copper_bracelet_metalmind.json -a239db0c29774a28b942a9c60e15580d4ec6d705 data/feruchemy/recipes/copper_necklace_metalmind.json -ae7877fdb9b6d7e604cb4fd6d7858a3824c307df data/feruchemy/recipes/copper_ring_metalmind.json -c45da1e5106c743478937e19681af63109dd5669 data/feruchemy/recipes/duralumin_bracelet_metalmind.json -3d5fbbaa78cf13fd84b99ecfaff0c836072ac839 data/feruchemy/recipes/duralumin_necklace_metalmind.json -66d21c637c57f2d91e7135d755cbb2dd832dca84 data/feruchemy/recipes/duralumin_ring_metalmind.json -6a4a425d8550d90e131e8144770f44c9c5837f31 data/feruchemy/recipes/electrum_bracelet_metalmind.json -cf3821f9fb7d77641c2dc6633d5d8893cd0a128a data/feruchemy/recipes/electrum_necklace_metalmind.json -d7532140856bb9b8b88a5321471ee52ce3467946 data/feruchemy/recipes/electrum_ring_metalmind.json -9000c73da38abb197d848440d139dda85c4930a9 data/feruchemy/recipes/gold_bracelet_metalmind.json -278bebd5cf4884f5c1022fe691e711c5bb8054bb data/feruchemy/recipes/gold_necklace_metalmind.json -ffc9802dff95121972af6a5feeef3fd4a954cd86 data/feruchemy/recipes/gold_ring_metalmind.json -575bda4ebdaca4e7fb2de7953d81765025f3d03a data/feruchemy/recipes/iron_bracelet_metalmind.json -7cfb9d9c959c6ce13fd6a48747bd3bae1651e193 data/feruchemy/recipes/iron_necklace_metalmind.json -6590d57b0da03197e4b1c66410f8b65ed495203d data/feruchemy/recipes/iron_ring_metalmind.json -eee15d6e9d51aa0a125e281b5dc9f8e8959678b8 data/feruchemy/recipes/nicrosil_bracelet_metalmind.json -cbb9c87a345c392b9e5cb195338ce8b6557da189 data/feruchemy/recipes/nicrosil_necklace_metalmind.json -5eb5899d89190cf7b6c5f88ba60b6e94595d094a data/feruchemy/recipes/nicrosil_ring_metalmind.json -3d620865d66a0bb114053635a185683c76046d69 data/feruchemy/recipes/pewter_bracelet_metalmind.json -c8253e40aa836510803b0505c1c2ffc40a218186 data/feruchemy/recipes/pewter_necklace_metalmind.json -70df72061af544fe58023769dd9a293d78a01595 data/feruchemy/recipes/pewter_ring_metalmind.json -d5e9ebdd56b37bfae2e3a84e432b19eeb35b241b data/feruchemy/recipes/steel_bracelet_metalmind.json -a5a1c11074e3cf7eee1b43739ce1f32672d9778d data/feruchemy/recipes/steel_necklace_metalmind.json -84703044365c5e4793d888c394c4bff7e7b2fece data/feruchemy/recipes/steel_ring_metalmind.json -0854d60eaafc95c8119df8364153f9f62f4f1eb7 data/feruchemy/recipes/tin_bracelet_metalmind.json -28d0dc5756a6315f7b4dbf684b664dec5dd8f54f data/feruchemy/recipes/tin_necklace_metalmind.json -c7d75006c647cb9248e2eb5f322cb807f3f39560 data/feruchemy/recipes/tin_ring_metalmind.json -efde7d476dcee6a6430331a79b7cc573793c912b data/feruchemy/recipes/zinc_bracelet_metalmind.json -783b49094add96f7a7f17b946358d0ad12c843bd data/feruchemy/recipes/zinc_necklace_metalmind.json -1309f6a23a047e7a39203123cccf7b80067dc6ae data/feruchemy/recipes/zinc_ring_metalmind.json +// 1.20.1 2024-10-09T13:22:13.3756835 Recipes +b504c331ba025516b9585ca99f428ba41e8cb6dc data/feruchemy/advancements/recipes/tools/aluminum_bracelet_metalmind.json +81222d13d16c275a43d5b457452d8b8b882f4d3a data/feruchemy/advancements/recipes/tools/aluminum_necklace_metalmind.json +21951c706c32c4bd9e7615336cdc5f618896c24a data/feruchemy/advancements/recipes/tools/aluminum_ring_metalmind.json +25b109cd34944d1c57949effe8c8f93063226f58 data/feruchemy/advancements/recipes/tools/atium_bracelet_metalmind.json +0c4965318237f11fc044b40aecd127f29b285ba1 data/feruchemy/advancements/recipes/tools/atium_necklace_metalmind.json +6df5609a567d2c18f85f9f5ed8e0ea0d24898c3a data/feruchemy/advancements/recipes/tools/atium_ring_metalmind.json +e29a3464f281289deee3754209d5b4acaa595524 data/feruchemy/advancements/recipes/tools/bendalloy_bracelet_metalmind.json +43d69e5fc3c1468ef5d8c761e3822d7546bdf033 data/feruchemy/advancements/recipes/tools/bendalloy_necklace_metalmind.json +f3efbeb451744409a30adfd35bf40f712d5e0c53 data/feruchemy/advancements/recipes/tools/bendalloy_ring_metalmind.json +80d7dffb4c25f436df07ae8ceda397ce1da7e207 data/feruchemy/advancements/recipes/tools/brass_bracelet_metalmind.json +8bd95d26eed9824b72057f01f0a92c8d255425ab data/feruchemy/advancements/recipes/tools/brass_necklace_metalmind.json +3f31ed06cd6e8073e7ee03e2a9ab8e8cd8c3d0c5 data/feruchemy/advancements/recipes/tools/brass_ring_metalmind.json +b3c2bf25c101c0c10abf5184a20253b204303715 data/feruchemy/advancements/recipes/tools/bronze_bracelet_metalmind.json +8259d5a0561385bb8cf92d744fa63b129fc4301d data/feruchemy/advancements/recipes/tools/bronze_necklace_metalmind.json +afa5022c1ab248a163b86f09bc0af72caa718c1c data/feruchemy/advancements/recipes/tools/bronze_ring_metalmind.json +fcaf8166bf63120c8ec55d0e1fde4b8c84e58189 data/feruchemy/advancements/recipes/tools/cadmium_bracelet_metalmind.json +1868b1b35c575defef2cae5a4088134549bbf637 data/feruchemy/advancements/recipes/tools/cadmium_necklace_metalmind.json +8aff755413b897815c79219ebeca15e03a544bf5 data/feruchemy/advancements/recipes/tools/cadmium_ring_metalmind.json +0900668a5475f0766218b5a8c7f5e2811f358947 data/feruchemy/advancements/recipes/tools/chromium_bracelet_metalmind.json +8fe7437cf682be682260717ed29561140c4484ba data/feruchemy/advancements/recipes/tools/chromium_necklace_metalmind.json +29d27a00ee9afacd462379c9616c21889daa3a4c data/feruchemy/advancements/recipes/tools/chromium_ring_metalmind.json +83ec2c1725573394fba356531a237eb9f78fcb87 data/feruchemy/advancements/recipes/tools/copper_bracelet_metalmind.json +cfa4b950f680aeac1ea0b053dc4dafcce2bbc01c data/feruchemy/advancements/recipes/tools/copper_necklace_metalmind.json +f202f54c9f91f409350d79f067b16aef3df7fcaf data/feruchemy/advancements/recipes/tools/copper_ring_metalmind.json +f1d57e4893fc04c38c05face4dee345db578ee95 data/feruchemy/advancements/recipes/tools/duralumin_bracelet_metalmind.json +4740aff9e574b50a5565a20947f30d7e563c19a3 data/feruchemy/advancements/recipes/tools/duralumin_necklace_metalmind.json +ec71e2bf06ac4b71514d42cb28d0d496250406e5 data/feruchemy/advancements/recipes/tools/duralumin_ring_metalmind.json +da28b98b86f9ebb50c3a9d84a9ad778214073c04 data/feruchemy/advancements/recipes/tools/electrum_bracelet_metalmind.json +43e0b93cec19c1230e23bd29a9b494fa0988a79e data/feruchemy/advancements/recipes/tools/electrum_necklace_metalmind.json +d686293b3b5c037f1778b0b2912d3bf01b6fcc92 data/feruchemy/advancements/recipes/tools/electrum_ring_metalmind.json +1942c7224e30b1fac213c5e7f96fd162877edd7d data/feruchemy/advancements/recipes/tools/gold_bracelet_metalmind.json +4906f2b68af5baa4cfecf7ae3de0dc6a70f9566f data/feruchemy/advancements/recipes/tools/gold_necklace_metalmind.json +aea6bc4842de5db883823d8c3d33f2c7f667aa34 data/feruchemy/advancements/recipes/tools/gold_ring_metalmind.json +beb7fcb475ca666260fb35755a8823176aea293c data/feruchemy/advancements/recipes/tools/iron_bracelet_metalmind.json +095bd27ef1ded74b8abd0cf64c7e4d305d61a91f data/feruchemy/advancements/recipes/tools/iron_necklace_metalmind.json +0df9296b500d5caaac287adb90027c9434a4cd1c data/feruchemy/advancements/recipes/tools/iron_ring_metalmind.json +1d21c712bf4e9e0bf4bda2dd5458a153b787e71d data/feruchemy/advancements/recipes/tools/nicrosil_bracelet_metalmind.json +6b2acc0ae9971ca2ce9b787ee91eaaf3d7dd2831 data/feruchemy/advancements/recipes/tools/nicrosil_necklace_metalmind.json +cfa3cc96bbbc0794da8706fa19b8d70109789000 data/feruchemy/advancements/recipes/tools/nicrosil_ring_metalmind.json +886ba4e4da632c4270f8bad6c83b373af979d24b data/feruchemy/advancements/recipes/tools/pewter_bracelet_metalmind.json +6e842bd6a833bf3febaaf5bf351fa6bcacf79c80 data/feruchemy/advancements/recipes/tools/pewter_necklace_metalmind.json +c1105b1e32c1327e60877073e8efe6ccef2caa1b data/feruchemy/advancements/recipes/tools/pewter_ring_metalmind.json +aa6e7c1033f2dab7ed132325acf09806c64f06a3 data/feruchemy/advancements/recipes/tools/steel_bracelet_metalmind.json +3b7bfa44508d7db55f03d2bb2ba321c7104a52af data/feruchemy/advancements/recipes/tools/steel_necklace_metalmind.json +54123a2a5967a31f26c6eefe75108affc9a5c341 data/feruchemy/advancements/recipes/tools/steel_ring_metalmind.json +740a10f3e79cfe5f17ecea7eed69c15b2dd0a894 data/feruchemy/advancements/recipes/tools/tin_bracelet_metalmind.json +ec1fdb5c4a490991ab92ee5da34f82a439346218 data/feruchemy/advancements/recipes/tools/tin_necklace_metalmind.json +0af4ef72e9034ee399aa73e54624cb8a8b89f9d0 data/feruchemy/advancements/recipes/tools/tin_ring_metalmind.json +6144dc0274b6dda0debb4c2039faef2470cda261 data/feruchemy/advancements/recipes/tools/zinc_bracelet_metalmind.json +74239846089091e4b705cfdca4046e11ba2b28fb data/feruchemy/advancements/recipes/tools/zinc_necklace_metalmind.json +0a4f4cf57f9b2b4b0ce768f3e3c7017390da6f73 data/feruchemy/advancements/recipes/tools/zinc_ring_metalmind.json +1002e1d247830ccb290944eb267d9e6e0f5a6e4f data/feruchemy/recipes/aluminum_bracelet_metalmind.json +1393da3950b87c66a8b29cadf91a3074344e18a3 data/feruchemy/recipes/aluminum_necklace_metalmind.json +f4c6455cd60fc5b2b8627ed71ee1d0eb685cda59 data/feruchemy/recipes/aluminum_ring_metalmind.json +4f10174d11e72824e5e64c270d98fd5516627d60 data/feruchemy/recipes/atium_bracelet_metalmind.json +527a0a2978e15cd56f8e4c1e949bb10a0543d6dc data/feruchemy/recipes/atium_necklace_metalmind.json +f400e4f24ce863cdaf8f9bdd2a915f20b59346d8 data/feruchemy/recipes/atium_ring_metalmind.json +d6df87e48d27385778b09fae1a7c0fee691c7614 data/feruchemy/recipes/bendalloy_bracelet_metalmind.json +f02079bcb0788384bbb64a0978be67f102c10a07 data/feruchemy/recipes/bendalloy_necklace_metalmind.json +6e47464f74b415ffc6aa2a839bdf88df2ccfd970 data/feruchemy/recipes/bendalloy_ring_metalmind.json +849768368dedb3eca4110e1a31de4c70cdd44127 data/feruchemy/recipes/brass_bracelet_metalmind.json +eac4defdcf7e78c23b9c3e0f9d536ae43d4d327c data/feruchemy/recipes/brass_necklace_metalmind.json +78993c01640ce73705007e1706fd9943bc5c3544 data/feruchemy/recipes/brass_ring_metalmind.json +6e07da74776fe29712d82df33c660d70ccb21ead data/feruchemy/recipes/bronze_bracelet_metalmind.json +57ba8ad73582b09d916c5b2a31aeffe76b3a467d data/feruchemy/recipes/bronze_necklace_metalmind.json +44c874c1e8f00efe58a03387913661f7741ec87f data/feruchemy/recipes/bronze_ring_metalmind.json +bb99225665658a6edb0d8d0c19ad7765d5f73120 data/feruchemy/recipes/cadmium_bracelet_metalmind.json +77b1e5e954fdcef27d068e4d01d65276650e5ccd data/feruchemy/recipes/cadmium_necklace_metalmind.json +b4fe47270dedc316a02067846abc71b8bdfc6072 data/feruchemy/recipes/cadmium_ring_metalmind.json +c1d632b89df98250acce6e39c809cb01f13a2421 data/feruchemy/recipes/chromium_bracelet_metalmind.json +5cd33f82f760a80893ea8008aea47ca3e9812ea5 data/feruchemy/recipes/chromium_necklace_metalmind.json +d55387fefad85863c14035d2916889a642041bd8 data/feruchemy/recipes/chromium_ring_metalmind.json +1e15d5269b51d2fb393e11d51730b0722ca7b5ce data/feruchemy/recipes/copper_bracelet_metalmind.json +8a8078f8fecad7647a54736f8a9d530525665939 data/feruchemy/recipes/copper_necklace_metalmind.json +669fc4c285e6ee0217a516d07da092f48f107349 data/feruchemy/recipes/copper_ring_metalmind.json +844aad671b8504835a7c3bb65e1fdeaef626a0b1 data/feruchemy/recipes/duralumin_bracelet_metalmind.json +e54d8de25c2aa1ca7f534ab97da5b3a0edd12e90 data/feruchemy/recipes/duralumin_necklace_metalmind.json +89b7874179a5cdd16624cc5f83b43acbe0589690 data/feruchemy/recipes/duralumin_ring_metalmind.json +6edf8d677f4e28544a3dfcf4032af0e71dd259ca data/feruchemy/recipes/electrum_bracelet_metalmind.json +ab1d33609668e83ea621738e02355187edf03681 data/feruchemy/recipes/electrum_necklace_metalmind.json +0489b37762f53fa30d8aa158b850988a6c73e1f8 data/feruchemy/recipes/electrum_ring_metalmind.json +662412b62176477449c243a207f55c2f71010c72 data/feruchemy/recipes/gold_bracelet_metalmind.json +80952ba5ceb07070e691aa1f905620cb2b723468 data/feruchemy/recipes/gold_necklace_metalmind.json +2c1385cb471e585634777452b94e9725c5c6fa9e data/feruchemy/recipes/gold_ring_metalmind.json +a8fe519f0f45fa3d86e661dce031ed3b6da1e0eb data/feruchemy/recipes/iron_bracelet_metalmind.json +c912ee2935df6162599b2ced1f9895c80499ded9 data/feruchemy/recipes/iron_necklace_metalmind.json +3a79203a12f8494c9ee39976cc913849ac245587 data/feruchemy/recipes/iron_ring_metalmind.json +ec2488b79d63c2a0972f3e644aed8cbd42f85a2a data/feruchemy/recipes/nicrosil_bracelet_metalmind.json +0124ac3ce74e0cfcfe48109de9bf628a8f389295 data/feruchemy/recipes/nicrosil_necklace_metalmind.json +3ecd97a66c5cc4aa2d2707cfb42bc388172a4999 data/feruchemy/recipes/nicrosil_ring_metalmind.json +7c12021b93a0a6ed992929b328aa0d9071e5000d data/feruchemy/recipes/pewter_bracelet_metalmind.json +2ddbc6d98fe40cdd84f8209a0341d2b5a18d187c data/feruchemy/recipes/pewter_necklace_metalmind.json +a5129d51e6c414bf948465c9e2abd2827d72b74c data/feruchemy/recipes/pewter_ring_metalmind.json +8295c366f838d3a154feca7e58c3cf1c887a65f0 data/feruchemy/recipes/steel_bracelet_metalmind.json +1cba9e96129437fb41bacf89084a232925b29bd8 data/feruchemy/recipes/steel_necklace_metalmind.json +1b8aa942559aa1c6893cdf5756a085041cc1e2ca data/feruchemy/recipes/steel_ring_metalmind.json +edb61bf80640653bf7603bae2650303133eb9aab data/feruchemy/recipes/tin_bracelet_metalmind.json +7e4eb6434061ff5565bf43dd8986d2f9a030d464 data/feruchemy/recipes/tin_necklace_metalmind.json +fa581b93d958a06973e8a5fb0d557623875d11dd data/feruchemy/recipes/tin_ring_metalmind.json +8dada3de80d71e322b8d7fcda665d5a6fc3e2657 data/feruchemy/recipes/zinc_bracelet_metalmind.json +49db6d06bd3f5aa61ff3020fec7bfa7e176f8a54 data/feruchemy/recipes/zinc_necklace_metalmind.json +225a8037bc45cf552ac075519f1b4f85eb4b16bd data/feruchemy/recipes/zinc_ring_metalmind.json diff --git a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 51505a6f4..2f86722ec 100644 --- a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-07T19:59:03.7737553 Languages: en_us +// 1.20.1 2024-10-09T14:02:55.9281059 Languages: en_us 20efa59c22e34bc9c8b7d1c6cec326aa281b1301 assets/feruchemy/lang/en_us.json diff --git a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json index 26eed5f88..0dd4b6852 100644 --- a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json @@ -9,7 +9,7 @@ }, { "type": "text", - "text": "This is activated by setting your allomantic power to a negative mode called Compounding and Flared Compounding, which spends allomantic charges to gain feruchemical stores quickly." + "text": "This is activated by setting your allomantic power to a negative mode called Compounding and Flared Compounding, which spends allomantic charges to gain feruchemical stores quickly. This is only accessible to Twinborn who have the same Allomantic and Feruchemic metals." } ], "priority": false, diff --git a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json index 4cfb472ea..3831bce01 100644 --- a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_cadmium.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "A ferring who taps $(thing)cadmium$() is known as a \"$(thing)Gasper$()\", and stores Breaths. While storing, a Gasper will find it difficult to breath. Storing too much may make them suffocate. tapping allows them to hold their breath for far longer periods of time." + "text": "A ferring who taps $(thing)cadmium$() is known as a \"$(thing)Gasper$()\", and stores Breaths. While storing, a Gasper will find it difficult to breathe. Storing too much may make them suffocate. tapping allows them to hold their breath for far longer periods of time." }, { "type": "patchouli:crafting", diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/aluminum.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/aluminum.json deleted file mode 100644 index 2e8783d8e..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/aluminum.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:aluminum_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.aluminum.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:aluminum_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.aluminum.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/atium.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/atium.json deleted file mode 100644 index cff9749c8..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/atium.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:atium_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.atium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:atium_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.atium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bendalloy.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bendalloy.json deleted file mode 100644 index 7010de799..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bendalloy.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:bendalloy_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.bendalloy.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:bendalloy_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.bendalloy.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/brass.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/brass.json deleted file mode 100644 index f1984467b..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/brass.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:brass_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.brass.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:brass_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.brass.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bronze.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bronze.json deleted file mode 100644 index 4a3972f24..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/bronze.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:bronze_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.bronze.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:bronze_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.bronze.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/cadmium.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/cadmium.json deleted file mode 100644 index e3aeafd08..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/cadmium.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:cadmium_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.cadmium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:cadmium_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.cadmium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/chromium.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/chromium.json deleted file mode 100644 index 991ba1b33..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/chromium.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:chromium_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.chromium.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:chromium_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.chromium.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/copper.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/copper.json deleted file mode 100644 index 3bdb00d3d..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/copper.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:copper_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.copper.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:copper_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.copper.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/duralumin.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/duralumin.json deleted file mode 100644 index ea1f13e6b..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/duralumin.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:duralumin_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.duralumin.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:duralumin_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.duralumin.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/electrum.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/electrum.json deleted file mode 100644 index f5b37d052..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/electrum.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:electrum_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.electrum.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:electrum_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.electrum.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/gold.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/gold.json deleted file mode 100644 index 1504e2fab..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/gold.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:gold_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.gold.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:gold_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.gold.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/iron.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/iron.json deleted file mode 100644 index 8fc67ad11..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/iron.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:iron_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.iron.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:iron_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.iron.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/nicrosil.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/nicrosil.json deleted file mode 100644 index 8aa66f53a..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/nicrosil.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:nicrosil_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.nicrosil.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:nicrosil_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.nicrosil.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/pewter.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/pewter.json deleted file mode 100644 index 86262c39b..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/pewter.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:pewter_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.pewter.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:pewter_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.pewter.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/root.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/root.json deleted file mode 100644 index 0b865bc2d..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/root.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "criteria": { - "tick": { - "conditions": { - "items": [ - null - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", - "description": { - "translate": "advancements.feruchemy.feruchemy.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:iron_ring_metalmind" - }, - "show_toast": false, - "title": { - "translate": "advancements.feruchemy.feruchemy.title" - } - }, - "requirements": [ - [ - "tick" - ] - ] -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/steel.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/steel.json deleted file mode 100644 index da18d9c8e..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/steel.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:steel_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.steel.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:steel_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.steel.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/tin.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/tin.json deleted file mode 100644 index eda2687d5..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/tin.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:tin_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.tin.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:tin_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.tin.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/zinc.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/zinc.json deleted file mode 100644 index e82f3f4e1..000000000 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/feruchemy/zinc.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "feruchemy:feruchemy/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "feruchemy:zinc_ring_metalmind" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "description": { - "translate": "advancements.feruchemy.feruchemy.zinc.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "feruchemy:zinc_ring_metalmind" - }, - "show_toast": true, - "title": { - "translate": "advancements.feruchemy.feruchemy.zinc.title" - } - }, - "requirements": [ - [ - "has_item" - ] - ], - "rewards": { - "experience": 50 - } -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_bracelet_metalmind.json index d4e75e632..e6ae6f8c9 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:aluminum_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_necklace_metalmind.json index 51f097af9..7b51c6700 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:aluminum_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_ring_metalmind.json index db6298b94..94bbe0272 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/aluminum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/aluminum_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:aluminum_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_bracelet_metalmind.json index c08c832f1..260055feb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:atium_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_necklace_metalmind.json index 497bc3554..daf4627f0 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:atium_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_ring_metalmind.json index 2277423f8..f54db6710 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/atium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/atium_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:atium_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_bracelet_metalmind.json similarity index 94% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_bracelet_metalmind.json index 492b39d65..37be9e7a5 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bendalloy_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_necklace_metalmind.json similarity index 94% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_necklace_metalmind.json index 244d77bfc..109acdd7e 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bendalloy_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_ring_metalmind.json index a5c9bab9c..16b639948 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bendalloy_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bendalloy_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bendalloy_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_bracelet_metalmind.json index a394d8470..5bfe8da7f 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:brass_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_necklace_metalmind.json index d4af9bb1c..7d998ab07 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:brass_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_ring_metalmind.json index e2ffffea4..f1a82ed67 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/brass_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/brass_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:brass_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_bracelet_metalmind.json index 72178605f..a290151b5 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bronze_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_necklace_metalmind.json index 0c83fb1a7..b93bdc5ef 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bronze_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_ring_metalmind.json index fb2eaa4f1..3e9393542 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/bronze_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/bronze_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:bronze_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_bracelet_metalmind.json index ea9d46e7c..464b2186f 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:cadmium_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_necklace_metalmind.json index f5fb97e66..befae2bdc 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:cadmium_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_ring_metalmind.json index 15e1d3486..934ea976d 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/cadmium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/cadmium_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:cadmium_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_bracelet_metalmind.json index 3c6c221f6..ac2e5d2d0 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:chromium_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_necklace_metalmind.json index b3f5fd15b..3068cf45a 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:chromium_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_ring_metalmind.json index e7e69ac76..65e3a3306 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/chromium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/chromium_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:chromium_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_bracelet_metalmind.json index 79a7e8eee..da222b91e 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:copper_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_necklace_metalmind.json index b38ff5ede..8f1922429 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:copper_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_ring_metalmind.json index 84c0d3c48..87053eb07 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/copper_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/copper_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:copper_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_bracelet_metalmind.json similarity index 94% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_bracelet_metalmind.json index 5cc5d5491..6487121da 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:duralumin_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_necklace_metalmind.json similarity index 94% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_necklace_metalmind.json index 204565c41..416484ca9 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:duralumin_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_ring_metalmind.json index be22319af..8dacb8e56 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/duralumin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/duralumin_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:duralumin_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_bracelet_metalmind.json index c462e1655..0c24c4a18 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:electrum_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_necklace_metalmind.json index f637605fa..0e2c7adf9 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:electrum_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_ring_metalmind.json index 253e08955..7189e1bd6 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/electrum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/electrum_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:electrum_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_bracelet_metalmind.json index 501080253..a6ed5450c 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:gold_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_necklace_metalmind.json index 6c68bf6b6..c9113b099 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:gold_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_ring_metalmind.json index 608c33397..2b95d3162 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/gold_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/gold_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:gold_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_bracelet_metalmind.json index 382d8cce0..60c00eca4 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:iron_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_necklace_metalmind.json index 5bbd7e7a7..7b52ea0d6 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:iron_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_ring_metalmind.json index c1b376965..6a2e11e72 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/iron_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/iron_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:iron_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_bracelet_metalmind.json index c363d347b..c4ff1673c 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:nicrosil_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_necklace_metalmind.json index a2620cd14..5dc91c9da 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:nicrosil_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_ring_metalmind.json index 9ff3ebe28..45ce7e570 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/nicrosil_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/nicrosil_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:nicrosil_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_bracelet_metalmind.json index 5964fe5b8..456632494 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:pewter_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_necklace_metalmind.json index 75187ff95..3faf963ed 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:pewter_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_ring_metalmind.json index 0dcff182f..bc0c370cb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/pewter_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/pewter_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:pewter_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_bracelet_metalmind.json index 99a77ef4b..5df887db3 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:steel_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_necklace_metalmind.json index ea8a83623..70f9e17a8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:steel_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_ring_metalmind.json index a727975a9..65e281162 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/steel_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/steel_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:steel_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_bracelet_metalmind.json index c05a89b52..ebec8dcc0 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:tin_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_necklace_metalmind.json index 94f69bd40..d593a9471 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:tin_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_ring_metalmind.json index 3665b06d4..bc392d048 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/tin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/tin_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:tin_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_bracelet_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_bracelet_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_bracelet_metalmind.json index 6af4138bd..635469339 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_bracelet_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:zinc_bracelet_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_necklace_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_necklace_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_necklace_metalmind.json index b9d59c09a..a49c6d80b 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_necklace_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:zinc_necklace_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_ring_metalmind.json similarity index 93% rename from src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_ring_metalmind.json rename to src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_ring_metalmind.json index 041a12535..4c3b41a8f 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/feruchemy.metalminds/zinc_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/advancements/recipes/tools/zinc_ring_metalmind.json @@ -28,5 +28,6 @@ "recipes": [ "feruchemy:zinc_ring_metalmind" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_bracelet_metalmind.json index 49d65168b..fa2c0f52e 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:aluminum_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_necklace_metalmind.json index 73dbfdf24..1c603cc53 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:aluminum_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_ring_metalmind.json index cc36f90bc..92020ff46 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/aluminum_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:aluminum_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_bracelet_metalmind.json index 86063bc97..90d5e5855 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:atium_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_necklace_metalmind.json index ab9fb07c5..799ed7f10 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:atium_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_ring_metalmind.json index 30134103d..be6916f53 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/atium_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:atium_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_bracelet_metalmind.json index b20513429..cafea2c52 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bendalloy_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_necklace_metalmind.json index 81c7dd4ac..033d079ca 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bendalloy_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_ring_metalmind.json index f1f2979b1..17dbf9042 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bendalloy_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bendalloy_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_bracelet_metalmind.json index 6ca4f2a2b..2d8c9ff0d 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:brass_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_necklace_metalmind.json index 3b2e57d9d..8a2f89dbf 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:brass_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_ring_metalmind.json index f187d454a..fd92ea7c6 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/brass_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:brass_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_bracelet_metalmind.json index 862fbb44f..92dd0c0ff 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bronze_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_necklace_metalmind.json index 1e745ef91..6209d21b8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bronze_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_ring_metalmind.json index cbc5f88b8..c88a8d215 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/bronze_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:bronze_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_bracelet_metalmind.json index 61d290be9..d7f0cdfa6 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:cadmium_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_necklace_metalmind.json index 0402242be..d5e52cf18 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:cadmium_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_ring_metalmind.json index 425906358..7d79ba500 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/cadmium_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:cadmium_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_bracelet_metalmind.json index 8c4209dd3..9ab5429e2 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:chromium_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_necklace_metalmind.json index 9989fee71..27455c559 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:chromium_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_ring_metalmind.json index a44d91fc1..cb49ba4b7 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/chromium_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:chromium_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_bracelet_metalmind.json index 18b17d63e..a9bd1331a 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:copper_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_necklace_metalmind.json index 9dbb108eb..c35e8250e 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:copper_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_ring_metalmind.json index 0309f00ac..0ca327d40 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/copper_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:copper_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_bracelet_metalmind.json index bc623c622..88ee0c0ff 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:duralumin_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_necklace_metalmind.json index ac566c2c4..b06420481 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:duralumin_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_ring_metalmind.json index 09ef3f7d9..1ea9be6ea 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/duralumin_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:duralumin_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_bracelet_metalmind.json index 9f6a2951b..b36b6f007 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:electrum_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_necklace_metalmind.json index 167e573d2..a8a894fa0 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:electrum_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_ring_metalmind.json index 467c16eda..f13b8f15e 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/electrum_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:electrum_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_bracelet_metalmind.json index 0d25c07fc..781ca147b 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:gold_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_necklace_metalmind.json index 9cf3ed0f8..a6521bf61 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:gold_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_ring_metalmind.json index 52be73cb6..b69c529e2 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/gold_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:gold_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_bracelet_metalmind.json index a5a97f694..87e7cb5d3 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:iron_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_necklace_metalmind.json index 391e305a6..7c9679e14 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:iron_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_ring_metalmind.json index accd37ec2..ebb2af1e7 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/iron_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:iron_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_bracelet_metalmind.json index 77c2d47c3..8268d3c1b 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:nicrosil_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_necklace_metalmind.json index 3c6b560b4..892287b47 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:nicrosil_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_ring_metalmind.json index 6c656418e..ca1c4ffff 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/nicrosil_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:nicrosil_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_bracelet_metalmind.json index 04d97e10a..f6cd4cd4c 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:pewter_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_necklace_metalmind.json index cfb50b640..4d8e81e29 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:pewter_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_ring_metalmind.json index 68efb45b0..31bc5afa9 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/pewter_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:pewter_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_bracelet_metalmind.json index fa0fe6066..e5213ea23 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:steel_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_necklace_metalmind.json index e66e21745..2c03ce6d6 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:steel_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_ring_metalmind.json index 9e6f93569..612dcc74c 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/steel_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:steel_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_bracelet_metalmind.json index a7fc1f986..2b7feeb39 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:tin_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_necklace_metalmind.json index c78008088..fdc52543c 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:tin_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_ring_metalmind.json index 6d80a7f52..59edf9ac9 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/tin_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:tin_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_bracelet_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_bracelet_metalmind.json index d81d73953..7e281d1f7 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_bracelet_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "bracelet", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:zinc_bracelet_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_necklace_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_necklace_metalmind.json index a0e88ad18..31258608a 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_necklace_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "necklace", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:zinc_necklace_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_ring_metalmind.json b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_ring_metalmind.json index b6086ea4d..7af9c6b43 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/recipes/zinc_ring_metalmind.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "ring", "key": { "X": { @@ -13,5 +14,6 @@ ], "result": { "item": "feruchemy:zinc_ring_metalmind" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/.cache/14cfc8c609bc90dfaf9edf7b39a40affae5154fe b/src/datagen/generated/hemalurgy/.cache/14cfc8c609bc90dfaf9edf7b39a40affae5154fe deleted file mode 100644 index 4362cc4bd..000000000 --- a/src/datagen/generated/hemalurgy/.cache/14cfc8c609bc90dfaf9edf7b39a40affae5154fe +++ /dev/null @@ -1,2 +0,0 @@ -// 1.19.2 2022-11-20T19:09:30.0439786 Hemalurgy Advancements -fe8e40927c7ca67fb875c84ac2b2d48a97b53693 data/hemalurgy/advancements/hemalurgy/root.json diff --git a/src/datagen/generated/hemalurgy/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/hemalurgy/.cache/3b2a435655541c92d690318b57013336949ed348 index 8d73a84c8..040ed23c2 100644 --- a/src/datagen/generated/hemalurgy/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/hemalurgy/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,23 +1,23 @@ -// 1.19.2 2023-10-02T12:37:11.2160485 PatchouliGeneration -9516c2b8a514480edc542cd9898644520d8d3bb6 data/hemalurgy/patchouli_books/guide/en_us/categories/hemalurgy.json -60467dbfce7e96fb1dc842b23cf8b474fad95a5b data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json -16cba4fcca98a93f4f5613946605c6e02d77968f data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json -99148e638abde2ccb863170b5ee8887202ac4dfc data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json -ca6ce1ebfab782f5eea90a0a8616b3eacf1ade1a data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json -557c9a1b0531ac2746814cef437d562e4e910bae data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json -d62758e9bbc5060dc5505686a97045797154bc0f data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json -2ab9f37d036b9c9c55ab7aea9db6a87e50a1c2e0 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json -206b88e7ce57aa4d03db2bee78760daa36316dc5 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json -fdd598a7f35de52bf3143c37af163dbd8521648c data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json -0b3fb248f79867355c71a1cf0d2b72ab1222cc59 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json -aba9c2cd43c0228c23c25ee2d0acb9d31134c287 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json -d42d2f2dc7ef4e17eb487d78705b5c889cd23f71 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json -83b66384d80775e690a68e9b8751f1ab54c650dc data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json -1b6c997517ea5312380531f19ec86d1de7b4ac7f data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json -f8f6f39b7558ad27df684362ae156afbbd4dbb4f data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json -3161ca2061fb982f6dfbc4be02d570a6102a81a6 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json -3f5aa6b41b4fe1aac42ad70b28e70dba77a865cf data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json -fc9d23f0eb1f2997a99a290e745acd706e79e3b5 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json -379fecf317ebca845ad5d53ca6fe07485c0c399b data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json -22773b1bfb3b4f1d2010a689128c104047de1f11 data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json -479d5406e3c64320198e98337d2f1fd0b4f73f1e data/hemalurgy/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json +// 1.20.1 2024-10-09T13:38:50.3433899 PatchouliGeneration +9516c2b8a514480edc542cd9898644520d8d3bb6 assets/cosmere/patchouli_books/guide/en_us/categories/hemalurgy.json +d16afdd6d98a888c575602cf252a85d7ec3c7c72 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_aluminum.json +dbf0550ef6b1bcdf3e5692796743eae3a332a015 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_atium.json +ceac6ac0db29eab74b487ba82200d70be87764f3 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bendalloy.json +9ef3c49a391b4d82effa8b9f6b63cedd2de4d4d8 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_brass.json +6353cb8c19bdf8302150fa7ced3ff65f700e9d65 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_bronze.json +9f7f732f0076281912cf4c2f936d128ab25c85c8 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_cadmium.json +a7edac5acb541ce3e8b7f97cbb6d64fe90be7404 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_chromium.json +2b420f7acf116d812247bb38bdc0a045b03cc30e assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_copper.json +2abaccabaa85b36205516f704214b6af571c1fb3 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_duralumin.json +e41154cc7d0770b02c6dcddb17a9290c32007164 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_electrum.json +fe3a1bebbe6c0639018788b23645f7ca20e938f9 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_gold.json +0229d66ad0b027f3919bc135f335381daafdf778 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_iron.json +8ea9f684decccced1bf6c35fdf9a5667b09842d5 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasatium.json +4e946d383b9f6811bb08842218fb19562375d6c1 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_lerasium.json +c79cd4ff2003c9d5b036fd432204a47213c7586d assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_nicrosil.json +8ab26e06b2858f54b2c753625f8921535dba74c0 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_pewter.json +d4ff5097498c48f41d50734e9ad576f40f76a9e1 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_steel.json +53b5a2614ffda1505baadc368772640df1cac747 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_tin.json +34b470016131cad201f7061991651a60e5475ccd assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgic_zinc.json +42f0bd27ba248c1c51027ede72007e178e44b4e6 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/hemalurgy_basics.json +cce661deef763d9150a6397ac616f1df73228bc3 assets/cosmere/patchouli_books/guide/en_us/entries/hemalurgy/koloss.json diff --git a/src/datagen/generated/hemalurgy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/hemalurgy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index ccffa9d18..e80f5bd6b 100644 --- a/src/datagen/generated/hemalurgy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/hemalurgy/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,43 +1,43 @@ -// 1.19.2 2022-11-20T19:09:30.0489701 Recipes -d9c5dbc67d9181c71db359f459f646178d60e3a5 data/hemalurgy/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json -45137ff4aa080afb40c75cd4da48877ce2824ca7 data/hemalurgy/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json -6da574ac62a8a9a61c8f33fa6c90a615d79b0c95 data/hemalurgy/advancements/recipes/hemalurgy.spikes/aluminum_spike.json -996bfb5d5f932fdb2317bd09e5796671c1e4ca0f data/hemalurgy/advancements/recipes/hemalurgy.spikes/atium_spike.json -3339af6b6d5e22282c1ca96e88880bb535190e21 data/hemalurgy/advancements/recipes/hemalurgy.spikes/bendalloy_spike.json -7c2299e219ebb38f316b2b6f1b484d766b5ee044 data/hemalurgy/advancements/recipes/hemalurgy.spikes/brass_spike.json -852ef38016199cbeafe71dbf905fe47bc060b096 data/hemalurgy/advancements/recipes/hemalurgy.spikes/bronze_spike.json -18a9af283295587be0b00a35271bb54fe6ce99ae data/hemalurgy/advancements/recipes/hemalurgy.spikes/cadmium_spike.json -e5a6f5e81150a67aa2c36610846279a7592bedc5 data/hemalurgy/advancements/recipes/hemalurgy.spikes/chromium_spike.json -77e0eb83a6f27b9ef21fc0dcc52e58131e5b4ea4 data/hemalurgy/advancements/recipes/hemalurgy.spikes/copper_spike.json -97833103144c5220c7054d4640868bd05f9f5cea data/hemalurgy/advancements/recipes/hemalurgy.spikes/duralumin_spike.json -6b650f11514eea40005416a031949c98b69d8c9f data/hemalurgy/advancements/recipes/hemalurgy.spikes/electrum_spike.json -48ba5b75e74744bb2b445ba6668b48a1c520751a data/hemalurgy/advancements/recipes/hemalurgy.spikes/gold_spike.json -a2735d96a552a094c6d4aa461834f762dc2d2c1d data/hemalurgy/advancements/recipes/hemalurgy.spikes/iron_spike.json -18518613cb00e3616d91bb49c7a1c1e26c93aff1 data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasatium_spike.json -197fb7aabedc203c2e53af38682b20b97f723a61 data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasium_spike.json -9a55844470d0f2fd508882b81d4e311c7c840de2 data/hemalurgy/advancements/recipes/hemalurgy.spikes/nicrosil_spike.json -a2e28eba7fcd03da69dc8a56a381f5eaf48ee4ae data/hemalurgy/advancements/recipes/hemalurgy.spikes/pewter_spike.json -9bfb7ea580c89f77625a75deb42ad5b37ffc7205 data/hemalurgy/advancements/recipes/hemalurgy.spikes/steel_spike.json -2e6078daee633d7f26b7bb4ef15c150ff8c0e5bc data/hemalurgy/advancements/recipes/hemalurgy.spikes/tin_spike.json -91eb0f40d16ab8ade99294a0d43e04dbca2fff5d data/hemalurgy/advancements/recipes/hemalurgy.spikes/zinc_spike.json -0873e61bface4a545beefe3093cec2710428a9d7 data/hemalurgy/recipes/aluminum_spike.json -4f32ee7e2330650025e2e4aa76ad9bc5600fcc5b data/hemalurgy/recipes/atium_spike.json -d7a710495109d36e0edb00fcd33f7e18c898d63e data/hemalurgy/recipes/bendalloy_spike.json -775cc595774a417349503af76ed9c895dfaead7d data/hemalurgy/recipes/brass_spike.json -f2b7fbe871b99c9255a6fe6860d7876aabfe2fed data/hemalurgy/recipes/bronze_spike.json -6c5184ef7e5eb3fe0ffefa7d2d5c2278241a2771 data/hemalurgy/recipes/cadmium_spike.json -3fe06db3e58d20226281a5dd5e26d4c4c7109e11 data/hemalurgy/recipes/chromium_spike.json -686fe324ca815b9577ce00a550ea5b8a3f14f231 data/hemalurgy/recipes/copper_spike.json -fcdb310a2439f30b58d2ad1500730c5f065fdc3f data/hemalurgy/recipes/duralumin_spike.json -e110a9ea59a34d927fdc248e53cfd473f15679ad data/hemalurgy/recipes/electrum_spike.json -bcf948e6c4453a657b2d01ff0156d97cbb0d90b6 data/hemalurgy/recipes/gold_spike.json -77b8caee0f61c3e545b57877550e913e3cfb0eea data/hemalurgy/recipes/guide_from_blasting_iron_spike.json -fd7e8726194b4bf9417fbcb45783dca7d4c1b070 data/hemalurgy/recipes/guide_from_smelting_iron_spike.json -29fcbcf29cfd8f01fafbb3e0b97261617bd8f21e data/hemalurgy/recipes/iron_spike.json -80c11af53f95853a5484ed5e8cf4ea448d16a9a8 data/hemalurgy/recipes/lerasatium_spike.json -bd06dc456ffa35c0bef460f81c70333ceca28a8e data/hemalurgy/recipes/lerasium_spike.json -22666200bbe2be20b9cf575631382112455f5f0b data/hemalurgy/recipes/nicrosil_spike.json -63459c0b086bfb9e4b043f71f49a33e3709a0ca3 data/hemalurgy/recipes/pewter_spike.json -3838b1a714d882cf79c906560a594caa84a98c94 data/hemalurgy/recipes/steel_spike.json -92db02bf1e95250bd5ba6ac57b628a503f320a4e data/hemalurgy/recipes/tin_spike.json -e7d5379b9de88309df8c601d365efcff4e7d48a2 data/hemalurgy/recipes/zinc_spike.json +// 1.20.1 2024-10-09T13:22:13.4517406 Recipes +98f979b3a149a46f4dafe5f7f6248dd4f72f0447 data/hemalurgy/advancements/recipes/misc/guide_from_blasting_iron_spike.json +29d1aaa685502a30f293458c541ddbb26de2bbb5 data/hemalurgy/advancements/recipes/misc/guide_from_smelting_iron_spike.json +e7ce4ed54b63f1d3710bc42be14b501f49bee4ea data/hemalurgy/advancements/recipes/tools/aluminum_spike.json +740cac97d2b5fa3d380aa0aa79a1f6b60a89e305 data/hemalurgy/advancements/recipes/tools/atium_spike.json +a001d1b5f36b7accc2dd983721695568cc86ec4a data/hemalurgy/advancements/recipes/tools/bendalloy_spike.json +e0a39b068f29a7573676bbb683ee6872babee807 data/hemalurgy/advancements/recipes/tools/brass_spike.json +f1b48a82dc9f0b19e44e818d12f29ca68e6194e4 data/hemalurgy/advancements/recipes/tools/bronze_spike.json +160789b41f229a7d6e5af70cecdb00a0189c4a07 data/hemalurgy/advancements/recipes/tools/cadmium_spike.json +1f05435fa9872dac9099868c3ee62c1e06c99216 data/hemalurgy/advancements/recipes/tools/chromium_spike.json +f0d174b6e1e1cfad6e7dd436493a98e9919f7e34 data/hemalurgy/advancements/recipes/tools/copper_spike.json +e19c072f1af6b74e553722aece30fc9f8d34ad2d data/hemalurgy/advancements/recipes/tools/duralumin_spike.json +a4342407131d96b7c6725dca02a8d3c403ed531d data/hemalurgy/advancements/recipes/tools/electrum_spike.json +dcadfd61ca4fffb2251e4a4d1f0c1a1a6c0aa937 data/hemalurgy/advancements/recipes/tools/gold_spike.json +1ca933bf5711d923a360d4edf8afcaf1de9e5b91 data/hemalurgy/advancements/recipes/tools/iron_spike.json +03112752848202c563dd7aa5dc3f0cfda7753b87 data/hemalurgy/advancements/recipes/tools/lerasatium_spike.json +fad55c448974d599b9ab0c801e4d536b1a57cb4e data/hemalurgy/advancements/recipes/tools/lerasium_spike.json +67370cd6112d00db61968eaa9e9a2cf4a03d4feb data/hemalurgy/advancements/recipes/tools/nicrosil_spike.json +868f51441adf0e06b6b0b48f07c1db572ff7dad8 data/hemalurgy/advancements/recipes/tools/pewter_spike.json +2d462e4fd4ec680e699a01ec3428c7f0ad28e9a5 data/hemalurgy/advancements/recipes/tools/steel_spike.json +d250767106633443cd98e8290e8080be73374b73 data/hemalurgy/advancements/recipes/tools/tin_spike.json +eef90a9917856c21858086126b6815fb35efe783 data/hemalurgy/advancements/recipes/tools/zinc_spike.json +e6d26b0cb9de2f190504c3d31d279be2eff96abc data/hemalurgy/recipes/aluminum_spike.json +e311c847a43529d69d0796fe29c81ed7e9c7a48b data/hemalurgy/recipes/atium_spike.json +a61cdf11fa624c67fcc561d9dfa8591d43b44318 data/hemalurgy/recipes/bendalloy_spike.json +1467b1a96b78bd5f48e8d01413c8e7b499a8c56f data/hemalurgy/recipes/brass_spike.json +6691fe06f59fca33ed61ed394f571af7ad71b9a1 data/hemalurgy/recipes/bronze_spike.json +f33bed5c7d275c124f45baeed875043ad06de639 data/hemalurgy/recipes/cadmium_spike.json +227f861beb3145488a723fe1f1c40f3e3ab5670f data/hemalurgy/recipes/chromium_spike.json +d0315f955e7526a70ab35745863f5948e19dd044 data/hemalurgy/recipes/copper_spike.json +3fc14828dbec40bd2ae875fdb0f17a284d68ab38 data/hemalurgy/recipes/duralumin_spike.json +942e238d691266e18eff0aed9778900e964402be data/hemalurgy/recipes/electrum_spike.json +f4c1c779d38365dfecc8bccfe640a6b7db4f656b data/hemalurgy/recipes/gold_spike.json +6a3d45515c10a079be19885167cf916f1e5635ea data/hemalurgy/recipes/guide_from_blasting_iron_spike.json +00e00e9d5e353535aba6b003f4ccc29afc2e5760 data/hemalurgy/recipes/guide_from_smelting_iron_spike.json +258c8290bac7f5efb262fb1bef11975d3e9a8d3b data/hemalurgy/recipes/iron_spike.json +b75729fce6268a09e3ae4261eee32f90f41cba93 data/hemalurgy/recipes/lerasatium_spike.json +7a8655150aaf338a305e13580dbcdb27717eb23b data/hemalurgy/recipes/lerasium_spike.json +e77c2bc90438d6c1eda9bf10f1fad59c7cc0d4df data/hemalurgy/recipes/nicrosil_spike.json +dbd9075d9393c3c76a2e6b5eb32025ba943837f6 data/hemalurgy/recipes/pewter_spike.json +1903f8b04a2a76ce8cd4122670363991d65a1bff data/hemalurgy/recipes/steel_spike.json +59efaab72badcde8b02419d57d78aa753f0c69f6 data/hemalurgy/recipes/tin_spike.json +2fda663c5f21a4f43495908438190c2a57f3ef68 data/hemalurgy/recipes/zinc_spike.json diff --git a/src/datagen/generated/hemalurgy/.cache/c3f80e268d2cfd3bbfc23cd1cc3b922ec14bcac1 b/src/datagen/generated/hemalurgy/.cache/c3f80e268d2cfd3bbfc23cd1cc3b922ec14bcac1 index b0d937ce3..ae2179d63 100644 --- a/src/datagen/generated/hemalurgy/.cache/c3f80e268d2cfd3bbfc23cd1cc3b922ec14bcac1 +++ b/src/datagen/generated/hemalurgy/.cache/c3f80e268d2cfd3bbfc23cd1cc3b922ec14bcac1 @@ -1,4 +1,4 @@ -// 1.19.2 2023-11-21T17:11:54.1277212 Tags: hemalurgy +// 1.20.1 2024-10-09T13:22:13.4527411 Tags: hemalurgy 1347b9ed44283073c6bfce1e1580938f6bd21ff6 data/cosmere/tags/items/spike.json af2e2857d9a96d22c837ecd93c7a138ef4da6d42 data/curios/tags/items/eyes.json 75fcd4a6d5c9bf2b6c54b32af01fca4ef8635b14 data/curios/tags/items/linchpin.json diff --git a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 04f52bb52..acb5a4a38 100644 --- a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-12T00:44:38.9263438 Languages: en_us +// 1.20.1 2024-10-09T14:04:49.2219046 Languages: en_us ca3e83394cc1207f3d199a991ceb5eec451aa93f assets/hemalurgy/lang/en_us.json diff --git a/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 b/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 index 2e67856da..472397038 100644 --- a/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 +++ b/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 @@ -1,4 +1,4 @@ -// 1.19.2 2023-11-21T17:11:54.1297226 Item Models: hemalurgy +// 1.20.1 2024-10-09T13:22:13.4507398 Item Models: hemalurgy b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/aluminum_spike.json b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/atium_spike.json b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/bendalloy_spike.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/hemalurgy/root.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/hemalurgy/root.json deleted file mode 100644 index 3981d8614..000000000 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/hemalurgy/root.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "criteria": { - "spike": { - "conditions": { - "items": [ - { - "tag": "cosmere:spike" - } - ] - }, - "trigger": "minecraft:inventory_changed" - } - }, - "display": { - "announce_to_chat": false, - "background": "minecraft:textures/gui/advancements/backgrounds/stone.png", - "description": { - "translate": "advancements.hemalurgy.hemalurgy.description" - }, - "frame": "task", - "hidden": false, - "icon": { - "item": "hemalurgy:iron_spike" - }, - "show_toast": false, - "title": { - "translate": "advancements.hemalurgy.hemalurgy.title" - } - }, - "requirements": [ - [ - "spike" - ] - ] -} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_blasting_iron_spike.json similarity index 94% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_blasting_iron_spike.json index 625ac36c6..db7c4bdf4 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_blasting_iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_blasting_iron_spike.json @@ -30,5 +30,6 @@ "recipes": [ "hemalurgy:guide_from_blasting_iron_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_smelting_iron_spike.json similarity index 94% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_smelting_iron_spike.json index 64ab72b50..92da2baa2 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/cosmere.items/guide_from_smelting_iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/misc/guide_from_smelting_iron_spike.json @@ -30,5 +30,6 @@ "recipes": [ "hemalurgy:guide_from_smelting_iron_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/aluminum_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/aluminum_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/aluminum_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/aluminum_spike.json index 388a3c4fa..61d388a89 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/aluminum_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/aluminum_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:aluminum_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/atium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/atium_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/atium_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/atium_spike.json index 43c791018..e11711714 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/atium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/atium_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:atium_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bendalloy_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bendalloy_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bendalloy_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bendalloy_spike.json index b8fb9dc84..b16b83571 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bendalloy_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bendalloy_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:bendalloy_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/brass_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/brass_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/brass_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/brass_spike.json index 61a43c939..0d0f685de 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/brass_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/brass_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:brass_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bronze_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bronze_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bronze_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bronze_spike.json index ddd9457a8..be3ab6afb 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/bronze_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/bronze_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:bronze_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/cadmium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/cadmium_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/cadmium_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/cadmium_spike.json index 44989cb50..05747bea0 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/cadmium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/cadmium_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:cadmium_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/chromium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/chromium_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/chromium_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/chromium_spike.json index db15e46af..77323f1ed 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/chromium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/chromium_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:chromium_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/copper_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/copper_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/copper_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/copper_spike.json index 04baebc13..50e475e89 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/copper_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/copper_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:copper_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/duralumin_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/duralumin_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/duralumin_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/duralumin_spike.json index 757abb735..5214cfcba 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/duralumin_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/duralumin_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:duralumin_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/electrum_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/electrum_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/electrum_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/electrum_spike.json index 4e67aa0ab..5f58414ee 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/electrum_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/electrum_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:electrum_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/gold_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/gold_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/gold_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/gold_spike.json index c998cb1ae..ec5664682 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/gold_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/gold_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:gold_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/iron_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/iron_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/iron_spike.json index 2ba81f4c5..57b3d0a9e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/iron_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:iron_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasatium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasatium_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasatium_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasatium_spike.json index 1705c26a3..0a604af02 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasatium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasatium_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:lerasatium_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasium_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasium_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasium_spike.json index ec1dd0a74..51e516bae 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/lerasium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/lerasium_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:lerasium_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/nicrosil_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/nicrosil_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/nicrosil_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/nicrosil_spike.json index 8a01538f0..260e69f48 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/nicrosil_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/nicrosil_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:nicrosil_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/pewter_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/pewter_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/pewter_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/pewter_spike.json index 1fb3b479f..b73a7e073 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/pewter_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/pewter_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:pewter_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/steel_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/steel_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/steel_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/steel_spike.json index d5392eb5c..958fa2414 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/steel_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/steel_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:steel_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/tin_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/tin_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/tin_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/tin_spike.json index 45c53722f..b513c298b 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/tin_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/tin_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:tin_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/zinc_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/zinc_spike.json similarity index 93% rename from src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/zinc_spike.json rename to src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/zinc_spike.json index c5126d4be..5adcb9114 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/hemalurgy.spikes/zinc_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/advancements/recipes/tools/zinc_spike.json @@ -28,5 +28,6 @@ "recipes": [ "hemalurgy:zinc_spike" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/aluminum_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/aluminum_spike.json index 47c496a10..ed97b8258 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/aluminum_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/aluminum_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:aluminum_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/atium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/atium_spike.json index 23d0655b2..e70b94d19 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/atium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/atium_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:atium_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bendalloy_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bendalloy_spike.json index 700d7f996..ae4b17341 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bendalloy_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bendalloy_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:bendalloy_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/brass_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/brass_spike.json index 1e23bf69a..ee3187392 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/brass_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/brass_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:brass_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bronze_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bronze_spike.json index fae474578..bb10b6869 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bronze_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/bronze_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:bronze_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/cadmium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/cadmium_spike.json index c2b9cc009..926cd85c1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/cadmium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/cadmium_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:cadmium_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/chromium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/chromium_spike.json index 0423f4b6e..11296590e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/chromium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/chromium_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:chromium_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/copper_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/copper_spike.json index eb7f860a2..fb36af745 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/copper_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/copper_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:copper_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/duralumin_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/duralumin_spike.json index 779e73a49..cc73cf6cb 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/duralumin_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/duralumin_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:duralumin_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/electrum_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/electrum_spike.json index b6fec37e1..d620e367b 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/electrum_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/electrum_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:electrum_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/gold_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/gold_spike.json index 710a6e834..2ee5223e7 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/gold_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/gold_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:gold_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_blasting_iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_blasting_iron_spike.json index 3153849d4..2db6609cf 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_blasting_iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_blasting_iron_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:blasting", + "category": "misc", "cookingtime": 100, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_smelting_iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_smelting_iron_spike.json index 175fdfa1f..90fa0a932 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_smelting_iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/guide_from_smelting_iron_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:smelting", + "category": "misc", "cookingtime": 200, "experience": 1.0, "ingredient": { diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/iron_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/iron_spike.json index b5084299e..dedffcb4f 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/iron_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/iron_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:iron_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasatium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasatium_spike.json index c9e125aa9..726cac1be 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasatium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasatium_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:lerasatium_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasium_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasium_spike.json index c13cb5a77..ef7811ea0 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasium_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/lerasium_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:lerasium_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/nicrosil_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/nicrosil_spike.json index f23245e63..0b47167fc 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/nicrosil_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/nicrosil_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:nicrosil_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/pewter_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/pewter_spike.json index b270bf31b..432fc7f0f 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/pewter_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/pewter_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:pewter_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/steel_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/steel_spike.json index a1a54b3e3..2dd4bfd76 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/steel_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/steel_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:steel_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/tin_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/tin_spike.json index 0947cf29e..fda586538 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/tin_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/tin_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:tin_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/zinc_spike.json b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/zinc_spike.json index b734ee671..1c08bd4df 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/zinc_spike.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/recipes/zinc_spike.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "group": "spike", "key": { "X": { @@ -12,5 +13,6 @@ ], "result": { "item": "hemalurgy:zinc_spike" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b b/src/datagen/generated/sandmastery/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b deleted file mode 100644 index e6973e2e4..000000000 --- a/src/datagen/generated/sandmastery/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b +++ /dev/null @@ -1,2 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.557282 Tags for minecraft:item -6205c5ba49e68fd4a380fc1fa0a23dfaf1abf1ed data/curios/tags/items/belt.json diff --git a/src/datagen/generated/sandmastery/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 b/src/datagen/generated/sandmastery/.cache/053b3b118f91e8b4c0c2e2484a0c644a0c507099 similarity index 72% rename from src/datagen/generated/sandmastery/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 rename to src/datagen/generated/sandmastery/.cache/053b3b118f91e8b4c0c2e2484a0c644a0c507099 index fffc890ef..f423487d3 100644 --- a/src/datagen/generated/sandmastery/.cache/75bcd4dba6ca7d365462b0ec45e291d1056349c4 +++ b/src/datagen/generated/sandmastery/.cache/053b3b118f91e8b4c0c2e2484a0c644a0c507099 @@ -1,4 +1,5 @@ -// 1.19.2 2023-08-03T18:38:29.6600601 Tags for minecraft:block +// 1.20.1 2024-10-09T13:22:13.5113112 Tags: sandmastery +6205c5ba49e68fd4a380fc1fa0a23dfaf1abf1ed data/curios/tags/items/belt.json e2c7dd5d476d3dd82874cf633080dada23af4e39 data/minecraft/tags/blocks/mineable/axe.json d71e1c86ea323cc9e10e8f6e6d61282a39ad0d78 data/minecraft/tags/blocks/mineable/pickaxe.json ba6089c769031193100293d0e1ea9b8cfa26d324 data/minecraft/tags/blocks/mineable/shovel.json diff --git a/src/datagen/generated/sandmastery/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/sandmastery/.cache/3b2a435655541c92d690318b57013336949ed348 index a089ad033..4af0340c4 100644 --- a/src/datagen/generated/sandmastery/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/sandmastery/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,7 +1,7 @@ -// 1.19.2 2023-11-11T21:09:02.792878 PatchouliGeneration -d4771d73d38f6e1c6d6980c5ed56d11dddcb3f61 data/sandmastery/patchouli_books/guide/en_us/categories/sandmastery.json -7240c0a0233cff9fa51f236fbe1e102a3c8a7ab8 data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/qido.json -50046cc055e45dae1f5b753f5f51ce6a7490886e data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json -231a4f7164669bdf1384ca3f79c4bb861f2f1e11 data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json -42c91fd18b4d15fde03a5bd25178f9d8724c682b data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json -4c7cb35822ccaa0eece380af3a880566f27d60ce data/sandmastery/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json +// 1.20.1 2024-10-09T13:38:50.3827137 PatchouliGeneration +d4771d73d38f6e1c6d6980c5ed56d11dddcb3f61 assets/cosmere/patchouli_books/guide/en_us/categories/sandmastery.json +c6bb595d95b73133724fe97bde7e671baa336525 assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/qido.json +8329a991b86a27abcc9f10aa07b41e0e276c52d8 assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sandmastery_basics.json +d59855771168beaa3cc8075a9f049a67f6e0a704 assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_jar.json +fec6b64740f851af7757b9b917236d47bba73397 assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_pouch.json +b13afbb7d55e5ca2304454b746503b7d40bedccc assets/cosmere/patchouli_books/guide/en_us/entries/sandmastery/sand_spreader.json diff --git a/src/datagen/generated/sandmastery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/sandmastery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..0ce84f9f9 --- /dev/null +++ b/src/datagen/generated/sandmastery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1,8 @@ +// 1.20.1 2024-10-09T13:22:13.5113112 Loot Tables +1686aa213ebffefac29d0d9ea580e131359a4525 data/sandmastery/loot_tables/blocks/charged_taldain_sand.json +155d61477e31d683b045173b2441f2f4bb4317f7 data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json +19ae457431c5a58439ea662bf0d9c7c5040e256c data/sandmastery/loot_tables/blocks/sand_jar_block.json +9c568b900e26d6efaad17a1f1293914132cfb6b4 data/sandmastery/loot_tables/blocks/sand_spreading_tub.json +8ad723a0359e4d63ce1016202819e7caf4a3db1b data/sandmastery/loot_tables/blocks/taldain_sand.json +ea6b291e6d76187961999fafd495950f00c0c6f1 data/sandmastery/loot_tables/blocks/taldain_sand_layer.json +5cbecbb1808908186276061f31a44bc20b155b6e data/sandmastery/loot_tables/blocks/temporary_sand_block.json diff --git a/src/datagen/generated/sandmastery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/sandmastery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 20136b094..000000000 --- a/src/datagen/generated/sandmastery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1,8 +0,0 @@ -// 1.19.2 2023-11-22T15:59:28.2439155 LootTables -a4f19e6641619da5a5ce5d264a22ca3435d3a0c2 data/sandmastery/loot_tables/blocks/charged_taldain_sand.json -d8518b407d56839cf21643fbdfa6551974299895 data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json -6fce3be489666c689565e320da6552a31f0e119c data/sandmastery/loot_tables/blocks/sand_jar_block.json -acf29fe54bb26c83c092694f8c8be01f701928ab data/sandmastery/loot_tables/blocks/sand_spreading_tub.json -e8eb1066cde54d9eed9ad91650db67ed35f57948 data/sandmastery/loot_tables/blocks/taldain_sand.json -18be8450e65285a0c91459985622cb8d1c578615 data/sandmastery/loot_tables/blocks/taldain_sand_layer.json -2b2a4bde1a1c86393b28fa3ff9b81ef1ddeed22d data/sandmastery/loot_tables/blocks/temporary_sand_block.json diff --git a/src/datagen/generated/sandmastery/.cache/70bedf271fa6bf3021ea6203463defec8ff35d9e b/src/datagen/generated/sandmastery/.cache/70bedf271fa6bf3021ea6203463defec8ff35d9e index 1870ec619..143cd1893 100644 --- a/src/datagen/generated/sandmastery/.cache/70bedf271fa6bf3021ea6203463defec8ff35d9e +++ b/src/datagen/generated/sandmastery/.cache/70bedf271fa6bf3021ea6203463defec8ff35d9e @@ -1,4 +1,4 @@ -// 1.19.2 2023-02-07T01:15:39.0215449 Item Models: sandmastery +// 1.20.1 2024-10-09T13:22:13.5123127 Item Models: sandmastery 0ce803e6b78b24b7c26b25096a8a67ae2be4f229 assets/sandmastery/models/item/jar.json 710a49a979abf527c182fee1215de7f3a2b4c07e assets/sandmastery/models/item/qido.json cf8d0e920c9b273201abb280fbb7a1d442f715aa assets/sandmastery/models/item/sand_pouch.json diff --git a/src/datagen/generated/sandmastery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/sandmastery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 9015fa5aa..d305a8bf0 100644 --- a/src/datagen/generated/sandmastery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/sandmastery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,13 +1,13 @@ -// 1.19.2 2023-02-22T10:55:52.5524754 Recipes -e1977557702477a26dc890211eac132769ca8076 data/sandmastery/advancements/recipes/cosmere.blocks/sand_jar_block.json -88dece6461db7302399c1da0cb29237fc8f42023 data/sandmastery/advancements/recipes/cosmere.blocks/sand_spreading_tub.json -ec5bf101a9ad0945c2c2049e5d60c4cb3ca8b10a data/sandmastery/advancements/recipes/sandmastery/jar.json -b629bda5977cfebea35ad7c99637c15a898b7e81 data/sandmastery/advancements/recipes/sandmastery/qido.json -be3759a5e4338fb7ac5f06a77c6ad9dddaadac3a data/sandmastery/advancements/recipes/sandmastery/sand_jar.json -163d85ffaf8245d6d35e0ac986e148150fc7a619 data/sandmastery/advancements/recipes/sandmastery/sand_pouch.json -2b4a56924d8fe8c7548bff7cc1c7d7fa7fee5dad data/sandmastery/recipes/jar.json -5010ccc0e0cd6e459c86e52c81308e2be94b2108 data/sandmastery/recipes/qido.json -96f2616e4d28c49e45bfd79af63aac4b36aaebc3 data/sandmastery/recipes/sand_jar.json -2556ee8f849d29dc58d3351893674f2560979caf data/sandmastery/recipes/sand_jar_block.json -ed128fd7b4193c1a257950564d2f5d58e47c5c32 data/sandmastery/recipes/sand_pouch.json -2e1824fcd5105e13b581e7816f9072b6f21e52e6 data/sandmastery/recipes/sand_spreading_tub.json +// 1.20.1 2024-10-09T13:22:13.5123127 Recipes +f38c73d4b6ba8b751be2f8df20e596a490083f23 data/sandmastery/advancements/recipes/decorations/sand_jar_block.json +b2d268ce5608d9b36176f30e9fec1e5cb85e5e61 data/sandmastery/advancements/recipes/decorations/sand_spreading_tub.json +3ef3f8320c7fc971a67df645238dd79b05ffcc19 data/sandmastery/advancements/recipes/redstone/jar.json +67bac790c607520218ef45e186dd933596d70ebc data/sandmastery/advancements/recipes/redstone/sand_jar.json +315bd37ecf3e7a21b9e093f9d3e5ccd56a9a005e data/sandmastery/advancements/recipes/tools/qido.json +8d1343fd0792cb1173e06cf88ca6b3fe8a912459 data/sandmastery/advancements/recipes/tools/sand_pouch.json +1a1e92195e7ef7196b4cf05ed5055588535c0b98 data/sandmastery/recipes/jar.json +631f351444422abd8c1b4f58b0338ade6de7300e data/sandmastery/recipes/qido.json +dd7eba6eea0fb012355983c6d0a34ecffbd180dd data/sandmastery/recipes/sand_jar.json +3748e78858b9a3008749268e8c07f782998d46d8 data/sandmastery/recipes/sand_jar_block.json +17ff1d7a10324498290d8b35e28432485ea2e9a5 data/sandmastery/recipes/sand_pouch.json +4dfbc8477c492b7644587e1dccfc9ae7959d2a57 data/sandmastery/recipes/sand_spreading_tub.json diff --git a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 5f9076a17..a7d3274f3 100644 --- a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-22T15:35:21.1657884 Languages: en_us +// 1.20.1 2024-10-09T13:22:13.5123127 Languages: en_us 0f20d07f4f803b6a1b38122a496bd01d92710e6b assets/sandmastery/lang/en_us.json diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_jar_block.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_jar_block.json similarity index 94% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_jar_block.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_jar_block.json index 29d020fa0..6759f2062 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_jar_block.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_jar_block.json @@ -30,5 +30,6 @@ "recipes": [ "sandmastery:sand_jar_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_spreading_tub.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_spreading_tub.json similarity index 93% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_spreading_tub.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_spreading_tub.json index 9dcc7e131..abd7a587a 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/cosmere.blocks/sand_spreading_tub.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/decorations/sand_spreading_tub.json @@ -28,5 +28,6 @@ "recipes": [ "sandmastery:sand_spreading_tub" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/jar.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/jar.json similarity index 93% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/jar.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/jar.json index b592ea46a..0550f15ee 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/jar.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/jar.json @@ -28,5 +28,6 @@ "recipes": [ "sandmastery:jar" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_jar.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/sand_jar.json similarity index 93% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_jar.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/sand_jar.json index 496583b38..0ec3c84fc 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_jar.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/redstone/sand_jar.json @@ -30,5 +30,6 @@ "recipes": [ "sandmastery:sand_jar" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/qido.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/qido.json similarity index 93% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/qido.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/qido.json index 8241f6147..8a7ba4c7a 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/qido.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/qido.json @@ -30,5 +30,6 @@ "recipes": [ "sandmastery:qido" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_pouch.json b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/sand_pouch.json similarity index 94% rename from src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_pouch.json rename to src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/sand_pouch.json index 15be8120e..520b0aa04 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/sandmastery/sand_pouch.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/advancements/recipes/tools/sand_pouch.json @@ -30,5 +30,6 @@ "recipes": [ "sandmastery:sand_pouch" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand.json index 72c7ff176..500b4c861 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand.json @@ -14,7 +14,9 @@ "name": "sandmastery:charged_taldain_sand" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/charged_taldain_sand" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json index 672cf2349..b02ca8f55 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/charged_taldain_sand_layer.json @@ -179,5 +179,6 @@ ], "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/charged_taldain_sand_layer" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_jar_block.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_jar_block.json index 8e25f8148..c691ffac1 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_jar_block.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_jar_block.json @@ -14,7 +14,9 @@ "name": "sandmastery:sand_jar" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/sand_jar_block" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_spreading_tub.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_spreading_tub.json index 575e9f4ac..8c3798c87 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_spreading_tub.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/sand_spreading_tub.json @@ -14,7 +14,9 @@ "name": "sandmastery:sand_spreading_tub" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/sand_spreading_tub" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand.json index 99311c61f..299f9eb99 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand.json @@ -14,7 +14,9 @@ "name": "sandmastery:taldain_sand" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/taldain_sand" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand_layer.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand_layer.json index c05caaf14..9bd04d318 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand_layer.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/taldain_sand_layer.json @@ -179,5 +179,6 @@ ], "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/taldain_sand_layer" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/temporary_sand_block.json b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/temporary_sand_block.json index 38fe9914a..ebde3fa7e 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/temporary_sand_block.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/loot_tables/blocks/temporary_sand_block.json @@ -14,7 +14,9 @@ "name": "minecraft:air" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "sandmastery:blocks/temporary_sand_block" } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/jar.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/jar.json index 644fc4ba2..5a342b67a 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/jar.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/jar.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "redstone", "key": { "G": { "tag": "forge:glass" @@ -12,5 +13,6 @@ ], "result": { "item": "sandmastery:jar" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/qido.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/qido.json index 786a4ec72..5f5c48f9b 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/qido.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/qido.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "key": { "H": { "item": "minecraft:goat_horn" @@ -15,5 +16,6 @@ ], "result": { "item": "sandmastery:qido" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar.json index b85c05aea..03675eb5a 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "redstone", "ingredients": [ { "item": "sandmastery:sand_jar_block" diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar_block.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar_block.json index 25f4bfe40..9c36058bb 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar_block.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_jar_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "sandmastery:sand_jar" diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_pouch.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_pouch.json index c52df98b4..7e9df3c0a 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_pouch.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_pouch.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "equipment", "key": { "B": { "item": "minecraft:lead" @@ -18,5 +19,6 @@ ], "result": { "item": "sandmastery:sand_pouch" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_spreading_tub.json b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_spreading_tub.json index 6bd926310..6bccb7226 100644 --- a/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_spreading_tub.json +++ b/src/datagen/generated/sandmastery/data/sandmastery/recipes/sand_spreading_tub.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "W": { "tag": "minecraft:wooden_slabs" @@ -11,5 +12,6 @@ ], "result": { "item": "sandmastery:sand_spreading_tub" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/soulforgery/.cache/048958a2bfc6e32adf0697478597f5ab7e7fbb24 b/src/datagen/generated/soulforgery/.cache/048958a2bfc6e32adf0697478597f5ab7e7fbb24 deleted file mode 100644 index 85ae930e4..000000000 --- a/src/datagen/generated/soulforgery/.cache/048958a2bfc6e32adf0697478597f5ab7e7fbb24 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0082382 Soulforgery Advancements diff --git a/src/datagen/generated/soulforgery/.cache/0596c3d7e5592bcf0093791e94a8655dfa8477d2 b/src/datagen/generated/soulforgery/.cache/0596c3d7e5592bcf0093791e94a8655dfa8477d2 index 7607e50af..edad6fb91 100644 --- a/src/datagen/generated/soulforgery/.cache/0596c3d7e5592bcf0093791e94a8655dfa8477d2 +++ b/src/datagen/generated/soulforgery/.cache/0596c3d7e5592bcf0093791e94a8655dfa8477d2 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0102405 Tags: soulforgery +// 1.20.1 2024-10-09T13:22:13.4096249 Tags: soulforgery diff --git a/src/datagen/generated/soulforgery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/soulforgery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..d9632ffe3 --- /dev/null +++ b/src/datagen/generated/soulforgery/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1 @@ +// 1.20.1 2024-10-09T13:22:13.4096249 Loot Tables diff --git a/src/datagen/generated/soulforgery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/soulforgery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index 1b451d573..000000000 --- a/src/datagen/generated/soulforgery/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1 +0,0 @@ -// 1.19.2 2023-11-22T13:35:41.0112413 LootTables diff --git a/src/datagen/generated/soulforgery/.cache/85d298822a7ae20512882a6cadee381ab6d5f104 b/src/datagen/generated/soulforgery/.cache/85d298822a7ae20512882a6cadee381ab6d5f104 index 7c095fd25..162f0ea80 100644 --- a/src/datagen/generated/soulforgery/.cache/85d298822a7ae20512882a6cadee381ab6d5f104 +++ b/src/datagen/generated/soulforgery/.cache/85d298822a7ae20512882a6cadee381ab6d5f104 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0102405 Item Models: soulforgery +// 1.20.1 2024-10-09T13:22:13.4086248 Item Models: soulforgery diff --git a/src/datagen/generated/soulforgery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/soulforgery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index e48779a91..450cac6c5 100644 --- a/src/datagen/generated/soulforgery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/soulforgery/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0102405 Recipes +// 1.20.1 2024-10-09T13:22:13.4106256 Recipes diff --git a/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 5ba34287f..589e3e1af 100644 --- a/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1 @@ -// 1.19.2 2023-11-22T13:35:41.0112413 Languages: en_us +// 1.20.1 2024-10-09T13:22:13.4106256 Languages: en_us diff --git a/src/datagen/generated/soulforgery/.cache/fd1874cfe95a30de0d4cf8b0ec1f36bca0fef150 b/src/datagen/generated/soulforgery/.cache/fd1874cfe95a30de0d4cf8b0ec1f36bca0fef150 index 64122e4ca..96deefa46 100644 --- a/src/datagen/generated/soulforgery/.cache/fd1874cfe95a30de0d4cf8b0ec1f36bca0fef150 +++ b/src/datagen/generated/soulforgery/.cache/fd1874cfe95a30de0d4cf8b0ec1f36bca0fef150 @@ -1,3 +1,3 @@ -// 1.19.2 2023-11-22T13:35:41.0092396 Soulforgery PatchouliGeneration -b87de045efe4049f73fddc91726251ab76c63b02 data/soulforgery/patchouli_books/guide/en_us/categories/soulforgery.json -91eec1017eae7b47671b3e8be065f98fe5551b23 data/soulforgery/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json +// 1.20.1 2024-10-09T13:38:50.3159405 Soulforgery PatchouliGeneration +b87de045efe4049f73fddc91726251ab76c63b02 assets/cosmere/patchouli_books/guide/en_us/categories/soulforgery.json +e0f904574d1adcf0f63dce615c7fe7250a341ba8 assets/cosmere/patchouli_books/guide/en_us/entries/soulforgery/soulforgery_basics.json diff --git a/src/datagen/generated/surgebinding/.cache/0bcb30cabd5f2de093260c224c11c3eb66c313fd b/src/datagen/generated/surgebinding/.cache/0bcb30cabd5f2de093260c224c11c3eb66c313fd index e4eb86981..dc9485215 100644 --- a/src/datagen/generated/surgebinding/.cache/0bcb30cabd5f2de093260c224c11c3eb66c313fd +++ b/src/datagen/generated/surgebinding/.cache/0bcb30cabd5f2de093260c224c11c3eb66c313fd @@ -1,64 +1,22 @@ -// 1.19.2 2022-11-20T19:09:29.498451 Block States: surgebinding +// 1.20.1 2024-10-09T13:22:13.2767832 Block States: surgebinding e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/amethyst_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/amethyst_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_amethyst_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_diamond_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_emerald_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_garnet_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_heliodor_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_ruby_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_sapphire_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_smokestone_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_topaz_ore.json -b901c1d214cc96d7e3a4c14accb6c83ea99add35 assets/surgebinding/blockstates/deepslate_zircon_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/diamond_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/diamond_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/emerald_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/emerald_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/garnet_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/garnet_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/heliodor_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/heliodor_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/ruby_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/ruby_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/sapphire_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/sapphire_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/smokestone_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/smokestone_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/topaz_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/topaz_ore.json e5624d66807078615ca5990f126f894a4c159a85 assets/surgebinding/blockstates/zircon_block.json -b81ea933dc8b0e65f22b74cf1f297dc14250adc1 assets/surgebinding/blockstates/zircon_ore.json 0094772fbb9c43bb5962086cabddbe7cab71206c assets/surgebinding/models/block/gem_block.json -cfb4051766ae813372c39d4d416cfebdf6f7cb07 assets/surgebinding/models/block/gem_ore_block.json -e616894d6a9efe8bcd64497be0971a0f1b911ed8 assets/surgebinding/models/block/gem_ore_block_deepslate.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/amethyst_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/amethyst_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_amethyst_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_diamond_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_emerald_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_garnet_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_heliodor_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_ruby_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_sapphire_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_smokestone_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_topaz_ore.json -2ce57a89a4434e0895ec9368c962c102f02540fc assets/surgebinding/models/item/deepslate_zircon_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/diamond_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/diamond_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/emerald_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/emerald_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/garnet_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/garnet_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/heliodor_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/heliodor_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/ruby_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/ruby_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/sapphire_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/sapphire_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/smokestone_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/smokestone_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/topaz_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/topaz_ore.json 9262c6a8b3a879ce2dafa91c33ef441a654cc0cc assets/surgebinding/models/item/zircon_block.json -62cb3c0957efcb4a6f039b898c7c60ade977865c assets/surgebinding/models/item/zircon_ore.json diff --git a/src/datagen/generated/surgebinding/.cache/109f316ce3b77a5a02bbf6e9c200027075e14620 b/src/datagen/generated/surgebinding/.cache/109f316ce3b77a5a02bbf6e9c200027075e14620 index 3d5afc15e..2ffd929db 100644 --- a/src/datagen/generated/surgebinding/.cache/109f316ce3b77a5a02bbf6e9c200027075e14620 +++ b/src/datagen/generated/surgebinding/.cache/109f316ce3b77a5a02bbf6e9c200027075e14620 @@ -1,14 +1,5 @@ -// 1.19.2 2023-11-17T21:15:31.5666777 Tags: surgebinding -4a68d2739dea5e3aa1c7e950b8a049a6e2abf791 data/forge/tags/blocks/ores/amethyst.json -ee96541e7c1246fe42744a55885833ba8af85b6f data/forge/tags/blocks/ores/diamond.json -82e6c8ac1f6c5ef9d95d79a14db847694f6a5894 data/forge/tags/blocks/ores/emerald.json -535ffd326e438b4244fa9119ac3fc325a55e6769 data/forge/tags/blocks/ores/garnet.json -1f7903a2e11f5238538de7da1ab2946070c410a9 data/forge/tags/blocks/ores/heliodor.json -fddfc217c748332f34e8602149e67d66c19525a2 data/forge/tags/blocks/ores/ruby.json -dd03f8860ebb03c5d4c4986a0602e0e13fb640c1 data/forge/tags/blocks/ores/sapphire.json -7ffdd9e88bf56d3f794e79c9ae05bc91f15325f6 data/forge/tags/blocks/ores/smokestone.json -6dca2386f961b8fbee3dc7c6a4536a1c53eafd48 data/forge/tags/blocks/ores/topaz.json -4e4c8234d53c2b066461d445609ca6cdbecb5e1c data/forge/tags/blocks/ores/zircon.json +// 1.20.1 2024-10-09T13:22:13.2757907 Tags: surgebinding +1f4a893d33327a86f361b3e38f9dcf2af46287fc data/cosmere/tags/worldgen/biome/spawn_ores.json dc8ed69b241d772a977e7c0c34320929d00ab4fa data/forge/tags/blocks/storage_blocks.json e65d9a5c24c24dc049cce37538918e39cdeac5f8 data/forge/tags/blocks/storage_blocks/amethyst.json c9686858daba30ebceb8af773a05f2f597efe509 data/forge/tags/blocks/storage_blocks/diamond.json @@ -43,8 +34,9 @@ aeaede227bae14370d9c20b5fa1fde9a29521ebb data/forge/tags/items/storage_blocks/he 538b3e977ed89fbf5346bda5d9c2a31519709789 data/forge/tags/items/storage_blocks/topaz.json 5ce6a2023aa95ada658bb30be3a2bf1a1ab729a3 data/forge/tags/items/storage_blocks/zircon.json f2b573e168f559409f9630291f07d290870822ad data/minecraft/tags/blocks/beacon_base_blocks.json -7729d5097895bf6cadd82f791e864f42f6a6b538 data/minecraft/tags/blocks/dragon_immune.json +f2b573e168f559409f9630291f07d290870822ad data/minecraft/tags/blocks/dragon_immune.json 0fbe76a3ddfbc63868c74a6b5cabf897deea3795 data/minecraft/tags/blocks/mineable/axe.json -82db041be3ec8c38e608b57082a1258cfcb93952 data/minecraft/tags/blocks/mineable/pickaxe.json +22365aa2d53aa418dd7a0d8d3414afa4e65fe3d4 data/minecraft/tags/blocks/mineable/pickaxe.json 0fbe76a3ddfbc63868c74a6b5cabf897deea3795 data/minecraft/tags/blocks/mineable/shovel.json -7729d5097895bf6cadd82f791e864f42f6a6b538 data/minecraft/tags/blocks/needs_iron_tool.json +f2b573e168f559409f9630291f07d290870822ad data/minecraft/tags/blocks/needs_iron_tool.json +4bde5ce1e288cb84a5e6b1f49d60868cbb1fb7a0 data/surgebinding/tags/worldgen/biome/is_roshar.json diff --git a/src/datagen/generated/surgebinding/.cache/36b7f816b5f8b042235228566873c711db2c5319 b/src/datagen/generated/surgebinding/.cache/36b7f816b5f8b042235228566873c711db2c5319 index 336cb1f1c..43284754b 100644 --- a/src/datagen/generated/surgebinding/.cache/36b7f816b5f8b042235228566873c711db2c5319 +++ b/src/datagen/generated/surgebinding/.cache/36b7f816b5f8b042235228566873c711db2c5319 @@ -1,4 +1,4 @@ -// 1.19.2 2023-10-02T12:37:11.0859388 Surgebinding PatchouliGeneration -297b263fd7587254dc36dd2c24ba67a4227b5616 data/surgebinding/patchouli_books/guide/en_us/categories/surgebinding.json -5b19c49df6fbf1704423e3180cae591e8828ac55 data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/chull.json -f88aa1cd1f252d740b616e02db969f82dd1f327e data/surgebinding/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json +// 1.20.1 2024-10-09T13:38:50.237255 Surgebinding PatchouliGeneration +297b263fd7587254dc36dd2c24ba67a4227b5616 assets/cosmere/patchouli_books/guide/en_us/categories/surgebinding.json +68e618712b476910666bc2bcbced96e48f6adecd assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/chull.json +2d8b8601eefb0f6bcf8adfee0f29e907d10dcdd2 assets/cosmere/patchouli_books/guide/en_us/entries/surgebinding/surgebinding_basics.json diff --git a/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d new file mode 100644 index 000000000..dbaea17c2 --- /dev/null +++ b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -0,0 +1,41 @@ +// 1.20.1 2024-10-09T13:22:13.2777841 Loot Tables +1440a509cd4375633c42e39a73c393fac55bc5b5 data/cosmere/loot_tables/blocks/aluminum_block.json +7854c60cbd630700b8e8b09d03884e3d8bea1071 data/cosmere/loot_tables/blocks/aluminum_ore.json +cd731279bd267f94d0afd47ad08ae376ed5a9f88 data/cosmere/loot_tables/blocks/atium_block.json +56a2e680d379b39e2c6c3a3880b03054d0f12aa2 data/cosmere/loot_tables/blocks/bendalloy_block.json +7c6f0158470b2c13bf5a944fe4b405f2d271490f data/cosmere/loot_tables/blocks/brass_block.json +15931a1d5cf53294314934deae3b318f5ebee6e9 data/cosmere/loot_tables/blocks/bronze_block.json +b23765f334dad8db8a5ee67557013adaaf56aa49 data/cosmere/loot_tables/blocks/cadmium_block.json +f1d6bbd3d03214d40b2f627e7d1d9497637b66dc data/cosmere/loot_tables/blocks/cadmium_ore.json +158625ad82a7f3412e2d8fe8ba5865ac45ea632a data/cosmere/loot_tables/blocks/chromium_block.json +8c92c3ddeb8026e2a8e06683c3858d175d2fd591 data/cosmere/loot_tables/blocks/chromium_ore.json +68c5f9187043df0179e5f770d9bb9b5bb6d92489 data/cosmere/loot_tables/blocks/copper_block.json +f26338cd2feb44a55fe17b0a90ec95b114529122 data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json +10416896689350ded50137c72c82798c7d9bf532 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json +a21fc0d65776ae4e1587c3e4b91d25179173aa7f data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json +57452fd03dfa0ba863d881f6deacc2c7cfc10028 data/cosmere/loot_tables/blocks/deepslate_lead_ore.json +683c3a6ba57565d1b27e49a216c618cadbd0bc91 data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json +7617381383104e5d6d51c33a3fa034e411f70244 data/cosmere/loot_tables/blocks/deepslate_silver_ore.json +684a3e3f76742dd24f37014e79eb8cbfe0d0e8ef data/cosmere/loot_tables/blocks/deepslate_tin_ore.json +3795516a64e2bae0cbfaf579c1d13a1bbcfbf0e1 data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json +15855f9da5b35eb4abf691bbe910bb7262e14219 data/cosmere/loot_tables/blocks/duralumin_block.json +79bddf7f0ec076e19359a73e3a30d168bbe9125f data/cosmere/loot_tables/blocks/electrum_block.json +8180e3fc3f58b48b298df6a42ac4ada19c9318b7 data/cosmere/loot_tables/blocks/harmonium_block.json +beb28ea68984cc7dfb369d5702be6691285c20bf data/cosmere/loot_tables/blocks/lead_block.json +6c842debbd3f95e310e2556ae7a3055ff45a4f0c data/cosmere/loot_tables/blocks/lead_ore.json +055789ab56e620938e54e1740bab19bda7af019c data/cosmere/loot_tables/blocks/lerasatium_block.json +56c34b3fb3a6bcf4bb161e597e9959b2c039e7be data/cosmere/loot_tables/blocks/lerasium_block.json +e4aecb93364a450379e522040319a7f515bd35a3 data/cosmere/loot_tables/blocks/malatium_block.json +b2ecd38ab0f9269aa7e995579634007d10dcb32b data/cosmere/loot_tables/blocks/metalworking_table.json +96db278cdb580a714b53b4f819bb32d98f76e708 data/cosmere/loot_tables/blocks/nickel_block.json +4c8d17247ddd803714c02849905bcc82a9b8ddf9 data/cosmere/loot_tables/blocks/nickel_ore.json +119d0773f16fb3e3d612879db0535b0e7393a102 data/cosmere/loot_tables/blocks/nicrosil_block.json +52470d0e26fedc08affe611737ee8b377f6e6063 data/cosmere/loot_tables/blocks/pewter_block.json +21387fc249c02b926f4e3f8688d4bce78cb82d8b data/cosmere/loot_tables/blocks/silver_block.json +71e73cac32c9d4f2f1fa9fc01d0ad33b1d6dff7b data/cosmere/loot_tables/blocks/silver_ore.json +06b119096f6ae9abd898d00d193fa5423776e34b data/cosmere/loot_tables/blocks/steel_block.json +d53cea7faa3f4ab1cadba5b03fe7c51aac443aa9 data/cosmere/loot_tables/blocks/tin_block.json +75c135cf3e18e8c387d42dd5d059bd72ce852ba8 data/cosmere/loot_tables/blocks/tin_ore.json +bc7d9b87a09b899f9d9a2a67ff93e6ea048179d3 data/cosmere/loot_tables/blocks/zinc_block.json +76550bc4e88494ff0feb209652e29d273c9afdb6 data/cosmere/loot_tables/blocks/zinc_ore.json +a7207bc09011db262ecf6c434f3d94cac58c0fce data/surgebinding/loot_tables/entities/chull.json diff --git a/src/datagen/generated/surgebinding/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 b/src/datagen/generated/surgebinding/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 deleted file mode 100644 index b77d6cacc..000000000 --- a/src/datagen/generated/surgebinding/.cache/67cce32b1c3cbbcb1f646605f4914e3f196986c2 +++ /dev/null @@ -1,35 +0,0 @@ -// 1.19.2 2023-08-08T20:39:33.909463733 LootTables -d4fa5b2b7edd3d25217621102fb35cc643f5d432 data/surgebinding/loot_tables/blocks/amethyst_block.json -0f8dd0d71c0a75802134fe2f7adc6d42bad4b21b data/surgebinding/loot_tables/blocks/amethyst_ore.json -4f4e6c92b46d8288fe5049b699e1ae64458017a4 data/surgebinding/loot_tables/blocks/deepslate_amethyst_ore.json -48631f5f8865e95450cefe3691eb117de44f949c data/surgebinding/loot_tables/blocks/deepslate_diamond_ore.json -9f727245e65b06666f9e9406281303eebf1aaff5 data/surgebinding/loot_tables/blocks/deepslate_emerald_ore.json -34463cff6e40e96a01e18f5749b3aa45a01ade34 data/surgebinding/loot_tables/blocks/deepslate_garnet_ore.json -37cd4ab4f04a7d84cf7bffed57f59a39abacdb1e data/surgebinding/loot_tables/blocks/deepslate_heliodor_ore.json -8eed4b8a6453a8c154dc67459d0b048b9b513581 data/surgebinding/loot_tables/blocks/deepslate_ruby_ore.json -2eeb5739bf7f185765590947c7bfc4c790cd6ee7 data/surgebinding/loot_tables/blocks/deepslate_sapphire_ore.json -ed606de1777efc406bd97e410ca772c6991ea750 data/surgebinding/loot_tables/blocks/deepslate_smokestone_ore.json -eecdafc9a50c984b3c1ad95caedaace85de66770 data/surgebinding/loot_tables/blocks/deepslate_topaz_ore.json -9473d73aea8cb9a74567e411ee5290a000a81c10 data/surgebinding/loot_tables/blocks/deepslate_zircon_ore.json -5bc2427bcd13af8b7c5fd6de1e9caf0acfb840da data/surgebinding/loot_tables/blocks/diamond_block.json -440caeec7d6ec9c4976b2d0fe78e2392b51e5289 data/surgebinding/loot_tables/blocks/diamond_ore.json -b09a3f25de18aeb50408be3cd1f3b55276556529 data/surgebinding/loot_tables/blocks/emerald_block.json -5bbdde1e94912f9485d8213beac338f01fcd0865 data/surgebinding/loot_tables/blocks/emerald_ore.json -7ef53c89e11017f4ff3bfdf13bbab1af2af83b9c data/surgebinding/loot_tables/blocks/garnet_block.json -1bf3f31e88aef620574c0df79079e6a8d9c5b0e9 data/surgebinding/loot_tables/blocks/garnet_ore.json -0b7f600aa290cfb6cfedd5ee9c2f3f254e38694a data/surgebinding/loot_tables/blocks/heliodor_block.json -4b3b7c45da7fe5d49f282aa34c251142c45e95be data/surgebinding/loot_tables/blocks/heliodor_ore.json -8f7bee40a930228bef214969a3d39d8ab861cd81 data/surgebinding/loot_tables/blocks/lavis_polyp.json -70b2777e7bcd11ef9dd93c59982a6ba449271dc3 data/surgebinding/loot_tables/blocks/prickletac.json -1bb6a1390170695e68b14ad8d582ca0077e50434 data/surgebinding/loot_tables/blocks/rockbud_variant.json -e03acaaf68f9862cf83eb763d822a6935fe6c9cf data/surgebinding/loot_tables/blocks/ruby_block.json -4d57d06d62da2879656244b58e0fbe06866ff5cf data/surgebinding/loot_tables/blocks/ruby_ore.json -038432972e227007ac8a5df159d3aa7722421e6c data/surgebinding/loot_tables/blocks/sapphire_block.json -5f31353ded4bcdfc78a89ed40aebd37b477021de data/surgebinding/loot_tables/blocks/sapphire_ore.json -4df53e4f9dcfbc952da8923533ab26c89582b29c data/surgebinding/loot_tables/blocks/smokestone_block.json -15f867a9e154a38c5fb9a70c54d27be59fa08722 data/surgebinding/loot_tables/blocks/smokestone_ore.json -06b73e504eff91d997cc150e1bd2a9707ec562eb data/surgebinding/loot_tables/blocks/topaz_block.json -3519891d59b5b687c740dfd23d99101ff9a995ca data/surgebinding/loot_tables/blocks/topaz_ore.json -7315bf58ba044433afe464d80e38bbafb117f609 data/surgebinding/loot_tables/blocks/vinebud.json -db7a8027f4ff591685b1a75af335bc54f601ff42 data/surgebinding/loot_tables/blocks/zircon_block.json -58a8ef916cbac9b88809c4f71fff2508a3822099 data/surgebinding/loot_tables/blocks/zircon_ore.json diff --git a/src/datagen/generated/surgebinding/.cache/6f1794b6807b6703b7ba76414acccaba2dae1f14 b/src/datagen/generated/surgebinding/.cache/6f1794b6807b6703b7ba76414acccaba2dae1f14 deleted file mode 100644 index 5c75df2fa..000000000 --- a/src/datagen/generated/surgebinding/.cache/6f1794b6807b6703b7ba76414acccaba2dae1f14 +++ /dev/null @@ -1,11 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.5066086 surgebinding Biome Modifiers -7a9782187d3c1229e525f1f2ccdc79e610a3ed58 data/surgebinding/forge/biome_modifier/amethyst_ore.json -930af643e1c3a5044e2bca0815fcda45a6fb7b2c data/surgebinding/forge/biome_modifier/diamond_ore.json -a6f8d156521b931eeec09a1016f0b35bc7b17a17 data/surgebinding/forge/biome_modifier/emerald_ore.json -a41e1c4ba806a08f26644576fb344851bf7dd0c6 data/surgebinding/forge/biome_modifier/garnet_ore.json -798e3b9b5b0e5c7d8a3424b0c354b18bba3139e4 data/surgebinding/forge/biome_modifier/heliodor_ore.json -1a09f85464f40e90ea7604cded5072faf7202bb5 data/surgebinding/forge/biome_modifier/ruby_ore.json -85f987af3f59cec1f576fd2201777379f6a6363b data/surgebinding/forge/biome_modifier/sapphire_ore.json -92d4e20babbae6835b9cecb0eefb167cf15013d2 data/surgebinding/forge/biome_modifier/smokestone_ore.json -06b6909582bacedbc71c2b7efff8fcfd019cc083 data/surgebinding/forge/biome_modifier/topaz_ore.json -11ab4a407fddae889d37cb5275a7b5490a358f6f data/surgebinding/forge/biome_modifier/zircon_ore.json diff --git a/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 5c2695158..c04836d2b 100644 --- a/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,121 +1,41 @@ -// 1.19.2 2022-11-20T19:09:29.5006008 Recipes -88d05393ab0f73f58e51faaba1968421bf32a385 data/cosmere/advancements/recipes/cosmere.items/conversions/amethyst_block_deconstruct.json -c6ed9f2b6810e59cab37dc3147e5bbd3908da112 data/cosmere/advancements/recipes/cosmere.items/conversions/diamond_block_deconstruct.json -eadc7182f3df58db07ead824e0d70a7666e9f8d7 data/cosmere/advancements/recipes/cosmere.items/conversions/emerald_block_deconstruct.json -fbb7334f1896ea9afadea8295610c573ebd31f32 data/cosmere/advancements/recipes/cosmere.items/conversions/garnet_block_deconstruct.json -5b7d15eb58e8c75313ae949068eec11f2454afcf data/cosmere/advancements/recipes/cosmere.items/conversions/heliodor_block_deconstruct.json -e115facf21b4839489120f75d766c7e82a25ff54 data/cosmere/advancements/recipes/cosmere.items/conversions/ruby_block_deconstruct.json -b9f543335f51bf648293e0e622ae9bd31d70e72a data/cosmere/advancements/recipes/cosmere.items/conversions/sapphire_block_deconstruct.json -d7c9231a0d6f6ad1b99e9ad24f24b7e230808f6b data/cosmere/advancements/recipes/cosmere.items/conversions/smokestone_block_deconstruct.json -fc890dccae422f0c954c1d85bce6f7db2e080b28 data/cosmere/advancements/recipes/cosmere.items/conversions/topaz_block_deconstruct.json -009e4765fee6c4bc9f0b9c9e97e1cbb824933bc6 data/cosmere/advancements/recipes/cosmere.items/conversions/zircon_block_deconstruct.json -2724cf1b2d2aa920dc136c73021b753ed1a23fae data/cosmere/recipes/conversions/amethyst_block_deconstruct.json -d96ce9b43663755a1fbd964f8bea99b241639bd7 data/cosmere/recipes/conversions/diamond_block_deconstruct.json -1fb3a9dad7f2df903d037380d134134263619bab data/cosmere/recipes/conversions/emerald_block_deconstruct.json -75bc4ca95c8012508998d0e247dbfcdb5c246513 data/cosmere/recipes/conversions/garnet_block_deconstruct.json -8515c63524f7b617d8db575e0e85234be886502e data/cosmere/recipes/conversions/heliodor_block_deconstruct.json -7702ae1dd496d04753868befc13446fc646ac065 data/cosmere/recipes/conversions/ruby_block_deconstruct.json -c1c94c57baa97de2b5ca5bbc0689cc71974ed531 data/cosmere/recipes/conversions/sapphire_block_deconstruct.json -ebd281df0c16f96c36e4b6eb7341032c46f89483 data/cosmere/recipes/conversions/smokestone_block_deconstruct.json -fb70c6ef6ed0a99b51ca77e23f47ca60dae0b31a data/cosmere/recipes/conversions/topaz_block_deconstruct.json -65c255b49cff48462f0ad11f9586ec427332d1c4 data/cosmere/recipes/conversions/zircon_block_deconstruct.json -f3ea66baf5d4f976b87bfb72339a152935f56195 data/surgebinding/advancements/recipes/cosmere.blocks/amethyst_block.json -4e1bde5f096da347e60915a17efa7f9ec36013b7 data/surgebinding/advancements/recipes/cosmere.blocks/diamond_block.json -13d0207775e8271884051edfc7463bff03cac0b7 data/surgebinding/advancements/recipes/cosmere.blocks/emerald_block.json -c7701cdd6320262ee79bf5687cf081cfda3e593e data/surgebinding/advancements/recipes/cosmere.blocks/garnet_block.json -01201efccc38454e583271e1355d7ba7e5092084 data/surgebinding/advancements/recipes/cosmere.blocks/heliodor_block.json -481ba90ba3396681992c1c7a41be46bd8fc5e6dc data/surgebinding/advancements/recipes/cosmere.blocks/ruby_block.json -ce7e98421020c42df8bf0a4bef5317adf32e3fe1 data/surgebinding/advancements/recipes/cosmere.blocks/sapphire_block.json -a9c6002892c6189b8a2c0035e17db7cc211dddc9 data/surgebinding/advancements/recipes/cosmere.blocks/smokestone_block.json -74e212dc49f7336e859111c0e642bbaa69641aa4 data/surgebinding/advancements/recipes/cosmere.blocks/topaz_block.json -b40c68b8d87dce673a6ff93a9639cd4ab0dc489b data/surgebinding/advancements/recipes/cosmere.blocks/zircon_block.json -1a77ff58a701bdd463acbb595ddde8fbdbf7e64a data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_blasting_deepslate_amethyst_ore.json -4dd13ad9864d391c9d924b3f596d0f5ce606634f data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_smelting_deepslate_amethyst_ore.json -38d3ec441485acc990552537c2f3f1c764fabeb6 data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_blasting_amethyst_ore.json -82ea1980e69da575ff0ee739a53c7e51637f0031 data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_smelting_amethyst_ore.json -812b5c9d85377806a3fde6a8ed9b0a86edbf8d59 data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_blasting_deepslate_diamond_ore.json -b15be439d419253cf2ec1c2653f2f5cef9ef347f data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_smelting_deepslate_diamond_ore.json -e4b6ca3be1a4d29fb9f77340f1fe00d5e61fe64c data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_blasting_diamond_ore.json -b06f28136bb93deda098b5dbcb08bb8b979991c7 data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_smelting_diamond_ore.json -64950e7abf2123d315a5755398e109c510be205b data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_blasting_deepslate_emerald_ore.json -c03461d073dc0f88c9b9a05c2d99e5f4605d58d8 data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_smelting_deepslate_emerald_ore.json -9d4dd604f73c1fa0bd2cd5c98f881747b956aef0 data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_blasting_emerald_ore.json -1bf78b383b5ee6f5eee625f4e3faf2423e6cc060 data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_smelting_emerald_ore.json -9d000900ef5ff7b82a8a2100c49209c33ed267f4 data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_blasting_deepslate_garnet_ore.json -a86e06f93d3578c1fe35b0360ecf28a2dbd545fe data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_smelting_deepslate_garnet_ore.json -73e4ac41a2a6e6607845b807ee2068c94ecc193c data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_blasting_garnet_ore.json -51911b16b4b039690850ea7db8ac1fb7f4c645b8 data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_smelting_garnet_ore.json -08b481ceba9c99c5f81ae81ad5d400dedfbb6788 data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_blasting_deepslate_heliodor_ore.json -0ddfce87a278c3353184830596abf9a736b8a61b data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_smelting_deepslate_heliodor_ore.json -32b3b68275ade2ae33b4e91e247f229a4d0f65fb data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_blasting_heliodor_ore.json -a23165c611873ac546d0c6d38c6e9a82bb114175 data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_smelting_heliodor_ore.json -c671b5738f9b13de23bbb165ad9b89fb1d93677b data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_blasting_deepslate_ruby_ore.json -649f12ae1fd242f7d64322c8d817ffe07b2be7d1 data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_smelting_deepslate_ruby_ore.json -a11ed5b7b1ea5d7a510fb4790e555190ca4ccac6 data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_blasting_ruby_ore.json -66cbbd3825985c7ca2f1429b3adabd6cd992cb58 data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_smelting_ruby_ore.json -12bb994e784a380de928e918763cb29f373f4eb5 data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_blasting_deepslate_sapphire_ore.json -4f43df94e9924304cd4cc862640d9e1c4307c4e1 data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_smelting_deepslate_sapphire_ore.json -b4d98e201e1335e13bae40e08b837007cdd6b449 data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_blasting_sapphire_ore.json -79a4df968fb457474ad26476c7796e7290799b17 data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_smelting_sapphire_ore.json -25294154c3561b4e231924e15d9c21902a3cc691 data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_blasting_deepslate_smokestone_ore.json -cdedf6f97408543d9cb8dec97230653b45d3139f data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_smelting_deepslate_smokestone_ore.json -ca232998eed2e888b1ff85f4a7948d1337bd769f data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_blasting_smokestone_ore.json -b410b2831e731049dd78c282dc7ff194c7c66bbe data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_smelting_smokestone_ore.json -399e88fc5fb3b909f3b6226d8cf7ae2bca8044a4 data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_blasting_deepslate_topaz_ore.json -dbeaa8e3d22e542b2ebaf9ead2201093c91d57b0 data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_smelting_deepslate_topaz_ore.json -5161dea680139f13c2f6d25b0ac3aaee0749ab94 data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_blasting_topaz_ore.json -e1601d8bd147def22be8f0ff717d922051558494 data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_smelting_topaz_ore.json -302f57e92cd3ee8365b49d893c6294c25d8a9342 data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_blasting_deepslate_zircon_ore.json -03b78f2ed2f6a3057d670480e44282b70307d7f1 data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_smelting_deepslate_zircon_ore.json -51e9eb5f6822e02f3b84dfaf820ba4b4d431866f data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_blasting_zircon_ore.json -ae6dd47a0b55c4826f1e9c0b83149c2caf868156 data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_smelting_zircon_ore.json -37c519dd29b42927e07e604b48f4ea1b073f4fe9 data/surgebinding/recipes/amethyst_block.json -9f0adadf330d9e4f998daee464944e865ab64902 data/surgebinding/recipes/amethyst_broam_from_blasting_deepslate_amethyst_ore.json -950d4224d50ba32c8fa64ab52a1ad2f8573a882f data/surgebinding/recipes/amethyst_broam_from_smelting_deepslate_amethyst_ore.json -c81491764a893ad28628995a50e5a1cfcefc1950 data/surgebinding/recipes/amethyst_mark_from_blasting_amethyst_ore.json -fb731fe8f332047590265dcc4ebffada57c74931 data/surgebinding/recipes/amethyst_mark_from_smelting_amethyst_ore.json -7a153e882937be9ddd37e04ed1d583fc7744cb4c data/surgebinding/recipes/diamond_block.json -b9a7779692bec4eda3c2ca71582fa754814434a0 data/surgebinding/recipes/diamond_broam_from_blasting_deepslate_diamond_ore.json -97d5c22bcaf36831f4ceb5c82e3546ac60875bf2 data/surgebinding/recipes/diamond_broam_from_smelting_deepslate_diamond_ore.json -e2eb91e8f221edfafb3b257cf09ef2a1f0166485 data/surgebinding/recipes/diamond_mark_from_blasting_diamond_ore.json -acc257399b631fe1e654d56cf4486ed7314ec43d data/surgebinding/recipes/diamond_mark_from_smelting_diamond_ore.json -785a15878c4adefabffeb5cf44c91f41aeb51375 data/surgebinding/recipes/emerald_block.json -38932f9cd081843984c2b6d6150ac75e85af3bea data/surgebinding/recipes/emerald_broam_from_blasting_deepslate_emerald_ore.json -b09db931098f066cdf8ef0b02de6b3cf3e73ba4e data/surgebinding/recipes/emerald_broam_from_smelting_deepslate_emerald_ore.json -896ac4af558930b73a0b01f74ee2ceb126e2a325 data/surgebinding/recipes/emerald_mark_from_blasting_emerald_ore.json -023cbe4c9a84523de90f4eb53638a1c5323c0169 data/surgebinding/recipes/emerald_mark_from_smelting_emerald_ore.json -55392ed5d34ad53d31cdcd1774c989c1ae200f7a data/surgebinding/recipes/garnet_block.json -39ecf6c28de814ebddec9901d2cec2d39ddfbb33 data/surgebinding/recipes/garnet_broam_from_blasting_deepslate_garnet_ore.json -791fc44ef027557db0996838aa69fc8fd9546e7e data/surgebinding/recipes/garnet_broam_from_smelting_deepslate_garnet_ore.json -95cdcfba2f30bbc8be1b6c3f1b14d58f95e9956e data/surgebinding/recipes/garnet_mark_from_blasting_garnet_ore.json -b602e13c32f505b8075a284fff8c8d6c83c22583 data/surgebinding/recipes/garnet_mark_from_smelting_garnet_ore.json -6f47f50a319eb22b8493f7baf51edab66c60a1d3 data/surgebinding/recipes/heliodor_block.json -60bf4a9cdccbaa68003c8ddfe6253498b65c3238 data/surgebinding/recipes/heliodor_broam_from_blasting_deepslate_heliodor_ore.json -8d84b10808b389ff339228f107a305ae3f393b00 data/surgebinding/recipes/heliodor_broam_from_smelting_deepslate_heliodor_ore.json -227d3c197f5e66cac2f04aca158099e4b05b075b data/surgebinding/recipes/heliodor_mark_from_blasting_heliodor_ore.json -12688ee5722b9bb8aca10ebc6d611d5ed8c17be9 data/surgebinding/recipes/heliodor_mark_from_smelting_heliodor_ore.json -6a7f5e860123da3960b230d3cbacb61721f7497d data/surgebinding/recipes/ruby_block.json -ba7554d92689cf0aef19950af33de1848fcbda30 data/surgebinding/recipes/ruby_broam_from_blasting_deepslate_ruby_ore.json -f8719bc33e778fa97a9a9dd8af10a44e9dcc2403 data/surgebinding/recipes/ruby_broam_from_smelting_deepslate_ruby_ore.json -1f6e376b51a1beff0787ea99d11475eaa2fd6897 data/surgebinding/recipes/ruby_mark_from_blasting_ruby_ore.json -98fc5c2f00062e40e6ca699f5ec061440161bbef data/surgebinding/recipes/ruby_mark_from_smelting_ruby_ore.json -112c4856c43b3ee98250dd8dbbb394689f853532 data/surgebinding/recipes/sapphire_block.json -ab824914a2b7746dd622d36698cef3cfb36e1d2f data/surgebinding/recipes/sapphire_broam_from_blasting_deepslate_sapphire_ore.json -58535f10a7e0c01719436f70a8e560b283220b3e data/surgebinding/recipes/sapphire_broam_from_smelting_deepslate_sapphire_ore.json -921e01c527f080304fb52401919cd8c866a8f68e data/surgebinding/recipes/sapphire_mark_from_blasting_sapphire_ore.json -4de4ab9879e7e36b902d25d10c1d23a426c287a7 data/surgebinding/recipes/sapphire_mark_from_smelting_sapphire_ore.json -6f515132749e2ac479c4637c606d7be81fba47a2 data/surgebinding/recipes/smokestone_block.json -11c038b8c9cbae441f22f814fa3a03c70292719e data/surgebinding/recipes/smokestone_broam_from_blasting_deepslate_smokestone_ore.json -390fe9a303d21c5b4ccfc78837f661002374bbfd data/surgebinding/recipes/smokestone_broam_from_smelting_deepslate_smokestone_ore.json -3304977ece3a3c0b1d4745bacc7a1a0e157bdee4 data/surgebinding/recipes/smokestone_mark_from_blasting_smokestone_ore.json -c80a6ef0ce204e3f6596d9687898c42e7ead1d6b data/surgebinding/recipes/smokestone_mark_from_smelting_smokestone_ore.json -d6b1e0383201563c7931dc0a2f9348a9178c06a9 data/surgebinding/recipes/topaz_block.json -22a834e8b35066e1099c7392948079118d90275e data/surgebinding/recipes/topaz_broam_from_blasting_deepslate_topaz_ore.json -5c986bb45e48eaa596d5cd7ccc7049e5067022c4 data/surgebinding/recipes/topaz_broam_from_smelting_deepslate_topaz_ore.json -9846e6ba751f2eb6b50d20c75dece64cacfc0486 data/surgebinding/recipes/topaz_mark_from_blasting_topaz_ore.json -1f56a323b8b7dc5fe93c67130df4f47ad317a43d data/surgebinding/recipes/topaz_mark_from_smelting_topaz_ore.json -7d1d35ba35755f6e8a0920c7e6de014a83428d70 data/surgebinding/recipes/zircon_block.json -5fe4e50f8ca0fd0f89bcc29a46e77cf1296faf77 data/surgebinding/recipes/zircon_broam_from_blasting_deepslate_zircon_ore.json -5bb8f3f77016583fd7993122cc4880baa68d3131 data/surgebinding/recipes/zircon_broam_from_smelting_deepslate_zircon_ore.json -5f5df62bf670e505affd92cf097faebc11554a7b data/surgebinding/recipes/zircon_mark_from_blasting_zircon_ore.json -288ca303d19ee8a7a3ece23220d3ef6441a89aee data/surgebinding/recipes/zircon_mark_from_smelting_zircon_ore.json +// 1.20.1 2024-10-09T13:22:13.2787851 Recipes +054e1124c1824221d7ae37ec2fcc9bee658563b1 data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json +93ba35e348052da0c609685fb426dfd4790a85da data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json +5d1fb6e83cdab431b525c8b1dee6318058ee5da1 data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json +4938597a99d3378771df7108d1110b8bf4a7c77b data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json +22662e331fd99c3e38446cde5a42f95178ef540d data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json +29d4a8115f167438c29784aecb10017334ee6a37 data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json +9a6423ab5fdde8e5a57c0be3c119cb2d7b40c3ea data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json +439b8a89e5957dd7e79ffcaac577a9a7469f9304 data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json +ca44cd3c282df6a81527607ecfe3c1d75a5acda7 data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json +d3447037d99bceb6c9ca3bee8281c3ee6be5209e data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json +f8b706c6b2f95940b386533e430d39c2c42043d5 data/cosmere/recipes/conversions/amethyst_block_deconstruct.json +5181afe6575a3be6c1b35ad422dce4c87ab2954e data/cosmere/recipes/conversions/diamond_block_deconstruct.json +2e3932b2533cf74f559602619726705575dc8c45 data/cosmere/recipes/conversions/emerald_block_deconstruct.json +f6814952d513b3db2e87381c2959b3e8a07d8f76 data/cosmere/recipes/conversions/garnet_block_deconstruct.json +130febea47fc7e63e434cd625c5fd488b1bcb656 data/cosmere/recipes/conversions/heliodor_block_deconstruct.json +7362741f87d5d8a9e8f2761d6a278a1dbf6d4899 data/cosmere/recipes/conversions/ruby_block_deconstruct.json +60e62d340585d58c087a61ba81a9efda4cb714fb data/cosmere/recipes/conversions/sapphire_block_deconstruct.json +9d8450a99dd7cbf445c765e5624d214d5dbf45d6 data/cosmere/recipes/conversions/smokestone_block_deconstruct.json +e47ace5f1e03ea1701519febfe100070fefe305b data/cosmere/recipes/conversions/topaz_block_deconstruct.json +1c43f1e8c24072f510cef52ecda43b33945d5e52 data/cosmere/recipes/conversions/zircon_block_deconstruct.json +f86b7818b6bb7ac5af53f3f3b414422f4e54a663 data/surgebinding/advancements/recipes/decorations/amethyst_block.json +cc3d924329dbcd7a0ab1be4ee4a00ac8ceaa1444 data/surgebinding/advancements/recipes/decorations/diamond_block.json +22b1bf29f26c81d9763059cdbf36c9f5709daf52 data/surgebinding/advancements/recipes/decorations/emerald_block.json +4ebeacd19b99940c676635403acd4610c4e7f4d7 data/surgebinding/advancements/recipes/decorations/garnet_block.json +97de2c363add0e60ad632195528ca26ae5c96e54 data/surgebinding/advancements/recipes/decorations/heliodor_block.json +7ef03d10272191205c176bd09bd98412a1a5f9ed data/surgebinding/advancements/recipes/decorations/ruby_block.json +afd07df991e24e37d8cabd6b422a6b7a06369ae9 data/surgebinding/advancements/recipes/decorations/sapphire_block.json +2a43b435ee9159408c3807d29f871aacae520423 data/surgebinding/advancements/recipes/decorations/smokestone_block.json +c76d48448dc6bda3a834ca502134d33af101e5ed data/surgebinding/advancements/recipes/decorations/topaz_block.json +3b73478ef61f7fa5db803a45cef0b18c732628c8 data/surgebinding/advancements/recipes/decorations/zircon_block.json +2bd34a2581e7a8dcd1ea05969aaf4f1e4caee3eb data/surgebinding/recipes/amethyst_block.json +19d8fc7784d7b8fa5e7063b7213ef57e2383d847 data/surgebinding/recipes/diamond_block.json +1da9e250d0e68aa6a8f5724990c772f1c797aa42 data/surgebinding/recipes/emerald_block.json +8ecebabe5a19c476284a9ee90e4d9b9ac252b152 data/surgebinding/recipes/garnet_block.json +56cab856c8cb2b4fe0c6ca930548ffe1b73e50fd data/surgebinding/recipes/heliodor_block.json +8ef2087c48fec60effd4a2d4c32f3c6477571a04 data/surgebinding/recipes/ruby_block.json +baa1016fee7b4d27d60195b0458c8455ba566d4c data/surgebinding/recipes/sapphire_block.json +2c914eb0060c71b825b8b0106b0d871e90db0faa data/surgebinding/recipes/smokestone_block.json +d6c2fae95bfa724c9235ebd5d12f8ab22a8bd3a2 data/surgebinding/recipes/topaz_block.json +fde3d83ff6ce7390302380264fee58f4c7e4917b data/surgebinding/recipes/zircon_block.json diff --git a/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 b/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 index f2b9cff50..d24d933b7 100644 --- a/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 +++ b/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 @@ -1,4 +1,4 @@ -// 1.19.2 2023-11-21T17:11:53.9295524 Item Models: surgebinding +// 1.20.1 2024-10-09T13:22:13.2807868 Item Models: surgebinding 2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/amethyst_broam.json 809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/amethyst_chip.json 1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/amethyst_mark.json diff --git a/src/datagen/generated/surgebinding/.cache/b050c542600f026370b74c0cf389e51d9c95f74e b/src/datagen/generated/surgebinding/.cache/b050c542600f026370b74c0cf389e51d9c95f74e deleted file mode 100644 index f30758268..000000000 --- a/src/datagen/generated/surgebinding/.cache/b050c542600f026370b74c0cf389e51d9c95f74e +++ /dev/null @@ -1,2 +0,0 @@ -// 1.19.2 2022-11-20T19:09:29.4994464 Surgebinding Biome Tags -4bde5ce1e288cb84a5e6b1f49d60868cbb1fb7a0 data/surgebinding/tags/worldgen/biome/is_roshar.json diff --git a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 35e42ec39..f32880def 100644 --- a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.19.2 2023-11-12T00:43:58.8659619 Languages: en_us -4357bf2b71b6bd36d0bcd2b30b650c402ff68d17 assets/surgebinding/lang/en_us.json +// 1.20.1 2024-10-09T14:02:55.8621349 Languages: en_us +fd175af731b9923629c8abcff49555c15b2ce18f assets/surgebinding/lang/en_us.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/amethyst_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/amethyst_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/amethyst_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_amethyst_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_amethyst_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_diamond_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_diamond_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_emerald_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_emerald_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_garnet_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_garnet_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_heliodor_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_heliodor_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_ruby_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_ruby_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_sapphire_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_sapphire_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_smokestone_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_smokestone_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_topaz_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_topaz_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_zircon_ore.json deleted file mode 100644 index 38f7b2daf..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/deepslate_zircon_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block_deepslate" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/diamond_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/diamond_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/diamond_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/emerald_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/emerald_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/emerald_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/garnet_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/garnet_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/garnet_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/heliodor_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/heliodor_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/heliodor_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/ruby_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/ruby_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/ruby_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/sapphire_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/sapphire_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/sapphire_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/smokestone_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/smokestone_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/smokestone_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/topaz_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/topaz_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/topaz_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/zircon_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/zircon_ore.json deleted file mode 100644 index 9b3055c59..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/blockstates/zircon_ore.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "surgebinding:block/gem_ore_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json index 5ea991e07..5a7a347c9 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json @@ -22,39 +22,19 @@ "advancements.surgebinding.surgebinding.transportation.description": "Test description: Transportation", "advancements.surgebinding.surgebinding.transportation.title": "Transportation", "block.surgebinding.amethyst_block": "Amethyst Block", - "block.surgebinding.amethyst_ore": "Amethyst Ore", - "block.surgebinding.deepslate_amethyst_ore": "Deepslate Amethyst Ore", - "block.surgebinding.deepslate_diamond_ore": "Deepslate Diamond Ore", - "block.surgebinding.deepslate_emerald_ore": "Deepslate Emerald Ore", - "block.surgebinding.deepslate_garnet_ore": "Deepslate Garnet Ore", - "block.surgebinding.deepslate_heliodor_ore": "Deepslate Heliodor Ore", - "block.surgebinding.deepslate_ruby_ore": "Deepslate Ruby Ore", - "block.surgebinding.deepslate_sapphire_ore": "Deepslate Sapphire Ore", - "block.surgebinding.deepslate_smokestone_ore": "Deepslate Smokestone Ore", - "block.surgebinding.deepslate_topaz_ore": "Deepslate Topaz Ore", - "block.surgebinding.deepslate_zircon_ore": "Deepslate Zircon Ore", "block.surgebinding.diamond_block": "Diamond Block", - "block.surgebinding.diamond_ore": "Diamond Ore", "block.surgebinding.emerald_block": "Emerald Block", - "block.surgebinding.emerald_ore": "Emerald Ore", "block.surgebinding.garnet_block": "Garnet Block", - "block.surgebinding.garnet_ore": "Garnet Ore", "block.surgebinding.heliodor_block": "Heliodor Block", - "block.surgebinding.heliodor_ore": "Heliodor Ore", "block.surgebinding.lavis_polyp": "Lavis Polyp", "block.surgebinding.prickletac": "Prickletac", "block.surgebinding.rockbud_variant": "Rockbud Variant", "block.surgebinding.ruby_block": "Ruby Block", - "block.surgebinding.ruby_ore": "Ruby Ore", "block.surgebinding.sapphire_block": "Sapphire Block", - "block.surgebinding.sapphire_ore": "Sapphire Ore", "block.surgebinding.smokestone_block": "Smokestone Block", - "block.surgebinding.smokestone_ore": "Smokestone Ore", "block.surgebinding.topaz_block": "Topaz Block", - "block.surgebinding.topaz_ore": "Topaz Ore", "block.surgebinding.vinebud": "Vinebud", "block.surgebinding.zircon_block": "Zircon Block", - "block.surgebinding.zircon_ore": "Zircon Ore", "entity.surgebinding.chull": "Chull", "entity.surgebinding.cryptic": "Cryptic", "item.surgebinding.amethyst_broam": "Amethyst Broam", @@ -106,6 +86,7 @@ "item.surgebinding.zircon_broam": "Zircon Broam", "item.surgebinding.zircon_chip": "Zircon Chip", "item.surgebinding.zircon_mark": "Zircon Mark", + "itemGroup.surgebinding.items": "Surgebinding Items", "key.cosmere.stormlight.shardblade": "Summon/Dismiss Shardblade", "manifestation.surgebinding.abrasion": "Abrasion", "manifestation.surgebinding.abrasion.description": "Needs description", diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block.json deleted file mode 100644 index 4c7c4c2cb..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "cosmere:block/shapes/cube_with_tint_overlay", - "textures": { - "all": "surgebinding:block/gem_ore_block", - "overlay": "surgebinding:block/gem_ore_block_tint_overlay" - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block_deepslate.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block_deepslate.json deleted file mode 100644 index d9633b458..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/block/gem_ore_block_deepslate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "cosmere:block/shapes/cube_with_tint_overlay", - "textures": { - "all": "surgebinding:block/gem_ore_block_deepslate", - "overlay": "surgebinding:block/gem_ore_block_tint_overlay" - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_amethyst_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_amethyst_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_diamond_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_diamond_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_emerald_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_emerald_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_garnet_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_garnet_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_heliodor_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_heliodor_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_ruby_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_ruby_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_sapphire_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_sapphire_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_smokestone_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_smokestone_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_topaz_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_topaz_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_zircon_ore.json deleted file mode 100644 index d1b684762..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/deepslate_zircon_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block_deepslate" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_ore.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_ore.json deleted file mode 100644 index 74512c5ad..000000000 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_ore.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "surgebinding:block/gem_ore_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/amethyst_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/amethyst_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json index 8d2fbd937..ae2e95e14 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/amethyst_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/amethyst_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/diamond_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/diamond_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json index 425eaebf2..e4ce1ea59 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/diamond_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/diamond_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/emerald_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/emerald_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json index 85bbe4778..303f90cfd 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/emerald_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/emerald_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/garnet_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/garnet_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json index e64559464..54f839c0c 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/garnet_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/garnet_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/heliodor_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/heliodor_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json index b5e57b28e..626a9b093 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/heliodor_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/heliodor_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/ruby_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/ruby_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json index 282354c55..af03234a9 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/ruby_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/ruby_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/sapphire_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/sapphire_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json index acf61fb82..fdf369248 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/sapphire_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/sapphire_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/smokestone_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/smokestone_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json index 2f74a4f71..02e68102b 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/smokestone_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/smokestone_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/topaz_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/topaz_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json index da1b0e063..b60e1fee6 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/topaz_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/topaz_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/zircon_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json similarity index 94% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/zircon_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json index 305ae44fd..44c37cb2c 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/cosmere.items/conversions/zircon_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json @@ -30,5 +30,6 @@ "recipes": [ "cosmere:conversions/zircon_block_deconstruct" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json new file mode 100644 index 000000000..c5ad04aa9 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:aluminum_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/aluminum_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json new file mode 100644 index 000000000..bb280360f --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:aluminum_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/aluminum_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json new file mode 100644 index 000000000..b80c65472 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:atium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/atium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json new file mode 100644 index 000000000..ff1fc71c2 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:bendalloy_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/bendalloy_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json new file mode 100644 index 000000000..395741ecc --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:brass_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/brass_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json new file mode 100644 index 000000000..6e4891c9a --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:bronze_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/bronze_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json new file mode 100644 index 000000000..7a9653800 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:cadmium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/cadmium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json new file mode 100644 index 000000000..00405c07b --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:cadmium_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/cadmium_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json new file mode 100644 index 000000000..ef012ccc2 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:chromium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/chromium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json new file mode 100644 index 000000000..929b4b805 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:chromium_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/chromium_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json new file mode 100644 index 000000000..0ce593353 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:copper_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/copper_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json new file mode 100644 index 000000000..2352edca2 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_aluminum_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_aluminum_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json new file mode 100644 index 000000000..3c70e8cea --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_cadmium_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_cadmium_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json new file mode 100644 index 000000000..ea8188ae0 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_chromium_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_chromium_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json new file mode 100644 index 000000000..0a032d74c --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_lead_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_lead_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json new file mode 100644 index 000000000..8445a6719 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_nickel_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_nickel_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json new file mode 100644 index 000000000..0190badc7 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_silver_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_silver_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json new file mode 100644 index 000000000..beb5457f9 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_tin_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_tin_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json new file mode 100644 index 000000000..e3b2c6782 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:deepslate_zinc_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/deepslate_zinc_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json new file mode 100644 index 000000000..9e6edf165 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:duralumin_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/duralumin_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json new file mode 100644 index 000000000..ce0691e1c --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:electrum_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/electrum_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json new file mode 100644 index 000000000..06ecf9b32 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:harmonium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/harmonium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json new file mode 100644 index 000000000..18d7e915b --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lead_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/lead_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json similarity index 72% rename from src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json rename to src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json index b09507630..a7ff12665 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json @@ -11,10 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "surgebinding:diamond_block" + "name": "cosmere:lead_ore" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/lead_ore" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json new file mode 100644 index 000000000..86191d831 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasatium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/lerasatium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json new file mode 100644 index 000000000..1d81ad898 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:lerasium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/lerasium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json new file mode 100644 index 000000000..f48794fd5 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:malatium_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/malatium_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json new file mode 100644 index 000000000..99ebbd4d5 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:metalworking_table" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/metalworking_table" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json new file mode 100644 index 000000000..bc43f966b --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:nickel_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/nickel_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json new file mode 100644 index 000000000..4be4dd7dd --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:nickel_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/nickel_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json new file mode 100644 index 000000000..8d6f6aea4 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:nicrosil_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/nicrosil_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json new file mode 100644 index 000000000..8d7011b23 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:pewter_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/pewter_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json new file mode 100644 index 000000000..a493d305b --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:silver_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/silver_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json new file mode 100644 index 000000000..b877d2e05 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:silver_ore" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/silver_ore" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json new file mode 100644 index 000000000..a6d835c81 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:steel_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/steel_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json similarity index 72% rename from src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json rename to src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json index c60907d7f..81948eb95 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json @@ -11,10 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "surgebinding:amethyst_block" + "name": "cosmere:tin_block" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/tin_block" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json similarity index 72% rename from src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json rename to src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json index e9c15d6e3..da1824c04 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json @@ -11,10 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "surgebinding:garnet_block" + "name": "cosmere:tin_ore" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/tin_ore" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json new file mode 100644 index 000000000..2b29d70fc --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "cosmere:zinc_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "cosmere:blocks/zinc_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json similarity index 72% rename from src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json rename to src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json index 195089522..a4c19cbc7 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json +++ b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json @@ -11,10 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "surgebinding:emerald_block" + "name": "cosmere:zinc_ore" } ], + "name": "main", "rolls": 1.0 } - ] + ], + "random_sequence": "cosmere:blocks/zinc_ore" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json index 2fb8a70f2..054212da4 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:amethyst_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json index 8c5a8d817..dc7a5f8a8 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:diamond_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json index 93da8c673..3f497b9dc 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:emerald_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json index f7d75a900..ed3fc3a34 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:garnet_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json index a89aa5102..90aec8f33 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:heliodor_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json index 3c19d3a16..b83706be8 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:ruby_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json index e8572da12..1b3626df3 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:sapphire_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json index 2f0165b51..51a9c0cda 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:smokestone_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json index 77bb26774..b632938a9 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:topaz_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json index 54bf512d2..fc694820f 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shapeless", + "category": "misc", "ingredients": [ { "item": "surgebinding:zircon_block" diff --git a/src/datagen/generated/surgebinding/data/cosmere/tags/worldgen/biome/spawn_ores.json b/src/datagen/generated/surgebinding/data/cosmere/tags/worldgen/biome/spawn_ores.json new file mode 100644 index 000000000..7ae3ecfe6 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/cosmere/tags/worldgen/biome/spawn_ores.json @@ -0,0 +1,5 @@ +{ + "values": [ + "#surgebinding:is_roshar" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/amethyst.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/amethyst.json deleted file mode 100644 index 0f9017b38..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/amethyst.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:amethyst_ore", - "surgebinding:deepslate_amethyst_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/diamond.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/diamond.json deleted file mode 100644 index 9f69f9c56..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/diamond.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:diamond_ore", - "surgebinding:deepslate_diamond_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/emerald.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/emerald.json deleted file mode 100644 index e70049fa4..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/emerald.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:emerald_ore", - "surgebinding:deepslate_emerald_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/garnet.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/garnet.json deleted file mode 100644 index 9adc1f5b3..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/garnet.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:garnet_ore", - "surgebinding:deepslate_garnet_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/heliodor.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/heliodor.json deleted file mode 100644 index 5d010b6c3..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/heliodor.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:heliodor_ore", - "surgebinding:deepslate_heliodor_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/ruby.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/ruby.json deleted file mode 100644 index a08bcc99f..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/ruby.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:ruby_ore", - "surgebinding:deepslate_ruby_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/sapphire.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/sapphire.json deleted file mode 100644 index e10e7c639..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/sapphire.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:sapphire_ore", - "surgebinding:deepslate_sapphire_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/smokestone.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/smokestone.json deleted file mode 100644 index 903d6aad5..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/smokestone.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:smokestone_ore", - "surgebinding:deepslate_smokestone_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/topaz.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/topaz.json deleted file mode 100644 index 63d5b10ab..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/topaz.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:topaz_ore", - "surgebinding:deepslate_topaz_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/zircon.json b/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/zircon.json deleted file mode 100644 index 600445edd..000000000 --- a/src/datagen/generated/surgebinding/data/forge/tags/blocks/ores/zircon.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "values": [ - "surgebinding:zircon_ore", - "surgebinding:deepslate_zircon_ore" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/dragon_immune.json b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/dragon_immune.json index e1a708991..27e70c920 100644 --- a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/dragon_immune.json +++ b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/dragon_immune.json @@ -1,34 +1,14 @@ { "values": [ "surgebinding:sapphire_block", - "surgebinding:sapphire_ore", - "surgebinding:deepslate_sapphire_ore", "surgebinding:smokestone_block", - "surgebinding:smokestone_ore", - "surgebinding:deepslate_smokestone_ore", "surgebinding:ruby_block", - "surgebinding:ruby_ore", - "surgebinding:deepslate_ruby_ore", "surgebinding:diamond_block", - "surgebinding:diamond_ore", - "surgebinding:deepslate_diamond_ore", "surgebinding:emerald_block", - "surgebinding:emerald_ore", - "surgebinding:deepslate_emerald_ore", "surgebinding:garnet_block", - "surgebinding:garnet_ore", - "surgebinding:deepslate_garnet_ore", "surgebinding:zircon_block", - "surgebinding:zircon_ore", - "surgebinding:deepslate_zircon_ore", "surgebinding:amethyst_block", - "surgebinding:amethyst_ore", - "surgebinding:deepslate_amethyst_ore", "surgebinding:topaz_block", - "surgebinding:topaz_ore", - "surgebinding:deepslate_topaz_ore", - "surgebinding:heliodor_block", - "surgebinding:heliodor_ore", - "surgebinding:deepslate_heliodor_ore" + "surgebinding:heliodor_block" ] } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/mineable/pickaxe.json index e33a83ec4..c85253fef 100644 --- a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -1,35 +1,15 @@ { "values": [ "surgebinding:sapphire_block", - "surgebinding:sapphire_ore", - "surgebinding:deepslate_sapphire_ore", "surgebinding:smokestone_block", - "surgebinding:smokestone_ore", - "surgebinding:deepslate_smokestone_ore", "surgebinding:ruby_block", - "surgebinding:ruby_ore", - "surgebinding:deepslate_ruby_ore", "surgebinding:diamond_block", - "surgebinding:diamond_ore", - "surgebinding:deepslate_diamond_ore", "surgebinding:emerald_block", - "surgebinding:emerald_ore", - "surgebinding:deepslate_emerald_ore", "surgebinding:garnet_block", - "surgebinding:garnet_ore", - "surgebinding:deepslate_garnet_ore", "surgebinding:zircon_block", - "surgebinding:zircon_ore", - "surgebinding:deepslate_zircon_ore", "surgebinding:amethyst_block", - "surgebinding:amethyst_ore", - "surgebinding:deepslate_amethyst_ore", "surgebinding:topaz_block", - "surgebinding:topaz_ore", - "surgebinding:deepslate_topaz_ore", "surgebinding:heliodor_block", - "surgebinding:heliodor_ore", - "surgebinding:deepslate_heliodor_ore", "surgebinding:lavis_polyp", "surgebinding:prickletac", "surgebinding:rockbud_variant", diff --git a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/needs_iron_tool.json b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/needs_iron_tool.json index e1a708991..27e70c920 100644 --- a/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/datagen/generated/surgebinding/data/minecraft/tags/blocks/needs_iron_tool.json @@ -1,34 +1,14 @@ { "values": [ "surgebinding:sapphire_block", - "surgebinding:sapphire_ore", - "surgebinding:deepslate_sapphire_ore", "surgebinding:smokestone_block", - "surgebinding:smokestone_ore", - "surgebinding:deepslate_smokestone_ore", "surgebinding:ruby_block", - "surgebinding:ruby_ore", - "surgebinding:deepslate_ruby_ore", "surgebinding:diamond_block", - "surgebinding:diamond_ore", - "surgebinding:deepslate_diamond_ore", "surgebinding:emerald_block", - "surgebinding:emerald_ore", - "surgebinding:deepslate_emerald_ore", "surgebinding:garnet_block", - "surgebinding:garnet_ore", - "surgebinding:deepslate_garnet_ore", "surgebinding:zircon_block", - "surgebinding:zircon_ore", - "surgebinding:deepslate_zircon_ore", "surgebinding:amethyst_block", - "surgebinding:amethyst_ore", - "surgebinding:deepslate_amethyst_ore", "surgebinding:topaz_block", - "surgebinding:topaz_ore", - "surgebinding:deepslate_topaz_ore", - "surgebinding:heliodor_block", - "surgebinding:heliodor_ore", - "surgebinding:deepslate_heliodor_ore" + "surgebinding:heliodor_block" ] } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_blasting_deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_blasting_deepslate_amethyst_ore.json deleted file mode 100644 index 336ba733f..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_blasting_deepslate_amethyst_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_amethyst_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:amethyst_broam_from_blasting_deepslate_amethyst_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:amethyst_broam_from_blasting_deepslate_amethyst_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_smelting_deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_smelting_deepslate_amethyst_ore.json deleted file mode 100644 index e5a0c481b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_broam_from_smelting_deepslate_amethyst_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_amethyst_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:amethyst_broam_from_smelting_deepslate_amethyst_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:amethyst_broam_from_smelting_deepslate_amethyst_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_blasting_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_blasting_amethyst_ore.json deleted file mode 100644 index fac5c2a8c..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_blasting_amethyst_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:amethyst_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:amethyst_mark_from_blasting_amethyst_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:amethyst_mark_from_blasting_amethyst_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_smelting_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_smelting_amethyst_ore.json deleted file mode 100644 index b884de2ce..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/amethyst_mark_from_smelting_amethyst_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:amethyst_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:amethyst_mark_from_smelting_amethyst_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:amethyst_mark_from_smelting_amethyst_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_blasting_deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_blasting_deepslate_diamond_ore.json deleted file mode 100644 index b5140d1ae..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_blasting_deepslate_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_diamond_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:diamond_broam_from_blasting_deepslate_diamond_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:diamond_broam_from_blasting_deepslate_diamond_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_smelting_deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_smelting_deepslate_diamond_ore.json deleted file mode 100644 index ed162059c..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_broam_from_smelting_deepslate_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_diamond_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:diamond_broam_from_smelting_deepslate_diamond_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:diamond_broam_from_smelting_deepslate_diamond_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_blasting_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_blasting_diamond_ore.json deleted file mode 100644 index 94aa1fe2b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_blasting_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:diamond_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:diamond_mark_from_blasting_diamond_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:diamond_mark_from_blasting_diamond_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_smelting_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_smelting_diamond_ore.json deleted file mode 100644 index b0200506e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/diamond_mark_from_smelting_diamond_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:diamond_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:diamond_mark_from_smelting_diamond_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:diamond_mark_from_smelting_diamond_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_blasting_deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_blasting_deepslate_emerald_ore.json deleted file mode 100644 index 81ad00f07..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_blasting_deepslate_emerald_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_emerald_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:emerald_broam_from_blasting_deepslate_emerald_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:emerald_broam_from_blasting_deepslate_emerald_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_smelting_deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_smelting_deepslate_emerald_ore.json deleted file mode 100644 index a01830f2d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_broam_from_smelting_deepslate_emerald_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_emerald_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:emerald_broam_from_smelting_deepslate_emerald_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:emerald_broam_from_smelting_deepslate_emerald_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_blasting_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_blasting_emerald_ore.json deleted file mode 100644 index 90aa5b783..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_blasting_emerald_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:emerald_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:emerald_mark_from_blasting_emerald_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:emerald_mark_from_blasting_emerald_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_smelting_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_smelting_emerald_ore.json deleted file mode 100644 index 16752d365..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/emerald_mark_from_smelting_emerald_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:emerald_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:emerald_mark_from_smelting_emerald_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:emerald_mark_from_smelting_emerald_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_blasting_deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_blasting_deepslate_garnet_ore.json deleted file mode 100644 index 4cd2b6145..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_blasting_deepslate_garnet_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_garnet_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:garnet_broam_from_blasting_deepslate_garnet_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:garnet_broam_from_blasting_deepslate_garnet_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_smelting_deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_smelting_deepslate_garnet_ore.json deleted file mode 100644 index b6e7e084a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_broam_from_smelting_deepslate_garnet_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_garnet_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:garnet_broam_from_smelting_deepslate_garnet_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:garnet_broam_from_smelting_deepslate_garnet_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_blasting_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_blasting_garnet_ore.json deleted file mode 100644 index c858be692..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_blasting_garnet_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:garnet_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:garnet_mark_from_blasting_garnet_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:garnet_mark_from_blasting_garnet_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_smelting_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_smelting_garnet_ore.json deleted file mode 100644 index abd8668c5..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/garnet_mark_from_smelting_garnet_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:garnet_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:garnet_mark_from_smelting_garnet_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:garnet_mark_from_smelting_garnet_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_blasting_deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_blasting_deepslate_heliodor_ore.json deleted file mode 100644 index f063de7f6..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_blasting_deepslate_heliodor_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_heliodor_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:heliodor_broam_from_blasting_deepslate_heliodor_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:heliodor_broam_from_blasting_deepslate_heliodor_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_smelting_deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_smelting_deepslate_heliodor_ore.json deleted file mode 100644 index ab3cba677..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_broam_from_smelting_deepslate_heliodor_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_heliodor_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:heliodor_broam_from_smelting_deepslate_heliodor_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:heliodor_broam_from_smelting_deepslate_heliodor_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_blasting_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_blasting_heliodor_ore.json deleted file mode 100644 index dd6a7148b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_blasting_heliodor_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:heliodor_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:heliodor_mark_from_blasting_heliodor_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:heliodor_mark_from_blasting_heliodor_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_smelting_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_smelting_heliodor_ore.json deleted file mode 100644 index 67a036fb6..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/heliodor_mark_from_smelting_heliodor_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:heliodor_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:heliodor_mark_from_smelting_heliodor_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:heliodor_mark_from_smelting_heliodor_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_blasting_deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_blasting_deepslate_ruby_ore.json deleted file mode 100644 index 8100e4d81..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_blasting_deepslate_ruby_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_ruby_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:ruby_broam_from_blasting_deepslate_ruby_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:ruby_broam_from_blasting_deepslate_ruby_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_smelting_deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_smelting_deepslate_ruby_ore.json deleted file mode 100644 index c00ccffe7..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_broam_from_smelting_deepslate_ruby_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_ruby_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:ruby_broam_from_smelting_deepslate_ruby_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:ruby_broam_from_smelting_deepslate_ruby_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_blasting_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_blasting_ruby_ore.json deleted file mode 100644 index b2f59ef24..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_blasting_ruby_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:ruby_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:ruby_mark_from_blasting_ruby_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:ruby_mark_from_blasting_ruby_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_smelting_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_smelting_ruby_ore.json deleted file mode 100644 index 349409818..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/ruby_mark_from_smelting_ruby_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:ruby_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:ruby_mark_from_smelting_ruby_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:ruby_mark_from_smelting_ruby_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_blasting_deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_blasting_deepslate_sapphire_ore.json deleted file mode 100644 index d132c80e5..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_blasting_deepslate_sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_sapphire_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:sapphire_broam_from_blasting_deepslate_sapphire_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:sapphire_broam_from_blasting_deepslate_sapphire_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_smelting_deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_smelting_deepslate_sapphire_ore.json deleted file mode 100644 index 0012e0885..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_broam_from_smelting_deepslate_sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_sapphire_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:sapphire_broam_from_smelting_deepslate_sapphire_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:sapphire_broam_from_smelting_deepslate_sapphire_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_blasting_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_blasting_sapphire_ore.json deleted file mode 100644 index a2fa6a92e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_blasting_sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:sapphire_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:sapphire_mark_from_blasting_sapphire_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:sapphire_mark_from_blasting_sapphire_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_smelting_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_smelting_sapphire_ore.json deleted file mode 100644 index b87f0efb1..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/sapphire_mark_from_smelting_sapphire_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:sapphire_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:sapphire_mark_from_smelting_sapphire_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:sapphire_mark_from_smelting_sapphire_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_blasting_deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_blasting_deepslate_smokestone_ore.json deleted file mode 100644 index 0bcc3bfc5..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_blasting_deepslate_smokestone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_smokestone_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:smokestone_broam_from_blasting_deepslate_smokestone_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:smokestone_broam_from_blasting_deepslate_smokestone_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_smelting_deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_smelting_deepslate_smokestone_ore.json deleted file mode 100644 index 9fcf9b38a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_broam_from_smelting_deepslate_smokestone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_smokestone_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:smokestone_broam_from_smelting_deepslate_smokestone_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:smokestone_broam_from_smelting_deepslate_smokestone_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_blasting_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_blasting_smokestone_ore.json deleted file mode 100644 index 201706cfa..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_blasting_smokestone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:smokestone_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:smokestone_mark_from_blasting_smokestone_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:smokestone_mark_from_blasting_smokestone_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_smelting_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_smelting_smokestone_ore.json deleted file mode 100644 index 788444754..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/smokestone_mark_from_smelting_smokestone_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:smokestone_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:smokestone_mark_from_smelting_smokestone_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:smokestone_mark_from_smelting_smokestone_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_blasting_deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_blasting_deepslate_topaz_ore.json deleted file mode 100644 index 4c1af9a32..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_blasting_deepslate_topaz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_topaz_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:topaz_broam_from_blasting_deepslate_topaz_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:topaz_broam_from_blasting_deepslate_topaz_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_smelting_deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_smelting_deepslate_topaz_ore.json deleted file mode 100644 index d3dc80242..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_broam_from_smelting_deepslate_topaz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_topaz_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:topaz_broam_from_smelting_deepslate_topaz_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:topaz_broam_from_smelting_deepslate_topaz_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_blasting_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_blasting_topaz_ore.json deleted file mode 100644 index b62d759bd..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_blasting_topaz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:topaz_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:topaz_mark_from_blasting_topaz_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:topaz_mark_from_blasting_topaz_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_smelting_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_smelting_topaz_ore.json deleted file mode 100644 index 046ff1804..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/topaz_mark_from_smelting_topaz_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:topaz_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:topaz_mark_from_smelting_topaz_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:topaz_mark_from_smelting_topaz_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_blasting_deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_blasting_deepslate_zircon_ore.json deleted file mode 100644 index 4277dc41a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_blasting_deepslate_zircon_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_zircon_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:zircon_broam_from_blasting_deepslate_zircon_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:zircon_broam_from_blasting_deepslate_zircon_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_smelting_deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_smelting_deepslate_zircon_ore.json deleted file mode 100644 index 5ce47c2e5..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_broam_from_smelting_deepslate_zircon_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:deepslate_zircon_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:zircon_broam_from_smelting_deepslate_zircon_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:zircon_broam_from_smelting_deepslate_zircon_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_blasting_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_blasting_zircon_ore.json deleted file mode 100644 index 66ff7a997..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_blasting_zircon_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:zircon_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:zircon_mark_from_blasting_zircon_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:zircon_mark_from_blasting_zircon_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_smelting_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_smelting_zircon_ore.json deleted file mode 100644 index 1504d798b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.items/zircon_mark_from_smelting_zircon_ore.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_ore": { - "conditions": { - "items": [ - { - "items": [ - "surgebinding:zircon_ore" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "surgebinding:zircon_mark_from_smelting_zircon_ore" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_ore", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "surgebinding:zircon_mark_from_smelting_zircon_ore" - ] - } -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/amethyst_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/amethyst_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/amethyst_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/amethyst_block.json index 9da22340b..bb78af387 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/amethyst_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/amethyst_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:amethyst_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/diamond_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/diamond_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/diamond_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/diamond_block.json index 8e8fa0dd9..f5c9907e1 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/diamond_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/diamond_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:diamond_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/emerald_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/emerald_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/emerald_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/emerald_block.json index c0e94e3b8..6e5cb6700 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/emerald_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/emerald_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:emerald_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/garnet_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/garnet_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/garnet_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/garnet_block.json index 25307b474..6515059a9 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/garnet_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/garnet_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:garnet_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/heliodor_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/heliodor_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/heliodor_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/heliodor_block.json index 866b58b19..cbc96de7d 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/heliodor_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/heliodor_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:heliodor_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/ruby_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/ruby_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/ruby_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/ruby_block.json index 8f5deafb1..908ec848f 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/ruby_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/ruby_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:ruby_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/sapphire_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/sapphire_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/sapphire_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/sapphire_block.json index 12e4417d3..6fc68755f 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/sapphire_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/sapphire_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:sapphire_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/smokestone_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/smokestone_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/smokestone_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/smokestone_block.json index 1956389f3..999af8b25 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/smokestone_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/smokestone_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:smokestone_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/topaz_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/topaz_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/topaz_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/topaz_block.json index b09a8190d..e83a6db39 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/topaz_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/topaz_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:topaz_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/zircon_block.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/zircon_block.json similarity index 93% rename from src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/zircon_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/zircon_block.json index 99ebcf949..229b8e8e8 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/cosmere.blocks/zircon_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/decorations/zircon_block.json @@ -28,5 +28,6 @@ "recipes": [ "surgebinding:zircon_block" ] - } + }, + "sends_telemetry_event": false } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/amethyst_ore.json deleted file mode 100644 index 1a03579c9..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/amethyst_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:amethyst_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_amethyst_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/diamond_ore.json deleted file mode 100644 index db9761c91..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/diamond_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:diamond_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_diamond_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/emerald_ore.json deleted file mode 100644 index 7a34b8b23..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/emerald_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:emerald_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_emerald_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/garnet_ore.json deleted file mode 100644 index dc3ddf126..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/garnet_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:garnet_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_garnet_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/heliodor_ore.json deleted file mode 100644 index ffe88af3d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/heliodor_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:heliodor_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_heliodor_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/ruby_ore.json deleted file mode 100644 index 35a32a861..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/ruby_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:ruby_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_ruby_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/sapphire_ore.json deleted file mode 100644 index 556202b86..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/sapphire_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:sapphire_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_sapphire_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/smokestone_ore.json deleted file mode 100644 index 14f0a358c..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/smokestone_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:smokestone_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_smokestone_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/topaz_ore.json deleted file mode 100644 index fa3d7660a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/topaz_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:topaz_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_topaz_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/zircon_ore.json deleted file mode 100644 index cea959df6..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/forge/biome_modifier/zircon_ore.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "type": "surgebinding:ores", - "biomes": "#surgebinding:is_roshar", - "features": { - "feature": { - "type": "minecraft:ore", - "config": { - "discard_chance_on_air_exposure": 0.0, - "size": 9, - "targets": [ - { - "state": { - "Name": "surgebinding:zircon_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:stone_ore_replaceables" - } - }, - { - "state": { - "Name": "surgebinding:deepslate_zircon_ore" - }, - "target": { - "predicate_type": "minecraft:tag_match", - "tag": "minecraft:deepslate_ore_replaceables" - } - } - ] - } - }, - "placement": [ - { - "type": "minecraft:count", - "count": 8 - }, - { - "type": "minecraft:in_square" - }, - { - "type": "minecraft:height_range", - "height": { - "type": "minecraft:trapezoid", - "max_inclusive": { - "above_bottom": 80 - }, - "min_inclusive": { - "above_bottom": -80 - } - } - }, - { - "type": "minecraft:biome" - } - ] - }, - "generation_stage": "UNDERGROUND_ORES" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_ore.json deleted file mode 100644 index a4a34f229..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:amethyst_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:amethyst_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_amethyst_ore.json deleted file mode 100644 index b7bc22647..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_amethyst_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_amethyst_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:amethyst_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_diamond_ore.json deleted file mode 100644 index 83cdc175d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_diamond_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_diamond_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:diamond_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_emerald_ore.json deleted file mode 100644 index 56e12a3bc..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_emerald_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_emerald_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:emerald_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_garnet_ore.json deleted file mode 100644 index 9da56c0ef..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_garnet_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_garnet_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:garnet_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_heliodor_ore.json deleted file mode 100644 index d9a8c8f53..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_heliodor_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_heliodor_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:heliodor_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_ruby_ore.json deleted file mode 100644 index 2e708fcf3..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_ruby_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_ruby_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:ruby_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_sapphire_ore.json deleted file mode 100644 index 22cf0930a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_sapphire_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_sapphire_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:sapphire_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_smokestone_ore.json deleted file mode 100644 index 24860fe42..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_smokestone_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_smokestone_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:smokestone_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_topaz_ore.json deleted file mode 100644 index c36128e6d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_topaz_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_topaz_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:topaz_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_zircon_ore.json deleted file mode 100644 index 062bceb34..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/deepslate_zircon_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:deepslate_zircon_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:zircon_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_ore.json deleted file mode 100644 index 84293d3d2..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:diamond_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:diamond_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_ore.json deleted file mode 100644 index 65f72b483..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:emerald_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:emerald_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_ore.json deleted file mode 100644 index 8a55e2abd..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:garnet_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:garnet_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json deleted file mode 100644 index 28b125e07..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:heliodor_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_ore.json deleted file mode 100644 index c6071e566..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:heliodor_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:heliodor_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json deleted file mode 100644 index e4f9b94ed..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:lavis_polyp" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json deleted file mode 100644 index daa66eb98..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:prickletac" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json deleted file mode 100644 index a510e4b2e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:rockbud_variant" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json deleted file mode 100644 index 6302473a5..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:ruby_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_ore.json deleted file mode 100644 index 6189c47c9..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:ruby_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:ruby_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json deleted file mode 100644 index 579671793..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:sapphire_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_ore.json deleted file mode 100644 index ecf434846..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:sapphire_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:sapphire_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json deleted file mode 100644 index 19748bce3..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:smokestone_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_ore.json deleted file mode 100644 index ff0b8365f..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:smokestone_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:smokestone_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json deleted file mode 100644 index 9d05ac095..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:topaz_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_ore.json deleted file mode 100644 index e9fc6198a..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:topaz_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:topaz_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json deleted file mode 100644 index 86e5269c0..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:vinebud" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json deleted file mode 100644 index 40dc61a2d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "surgebinding:zircon_block" - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_ore.json deleted file mode 100644 index b97cac069..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_ore.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "entries": [ - { - "type": "minecraft:alternatives", - "children": [ - { - "type": "minecraft:item", - "conditions": [ - { - "condition": "minecraft:match_tool", - "predicate": { - "enchantments": [ - { - "enchantment": "minecraft:silk_touch", - "levels": { - "min": 1 - } - } - ] - } - } - ], - "name": "surgebinding:zircon_ore" - }, - { - "type": "minecraft:item", - "functions": [ - { - "enchantment": "minecraft:fortune", - "formula": "minecraft:ore_drops", - "function": "minecraft:apply_bonus" - }, - { - "function": "minecraft:explosion_decay" - } - ], - "name": "surgebinding:zircon_chip" - } - ] - } - ], - "rolls": 1.0 - } - ] -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/entities/chull.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/entities/chull.json new file mode 100644 index 000000000..255067008 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/entities/chull.json @@ -0,0 +1,633 @@ +{ + "type": "minecraft:entity", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:killed_by_player" + }, + { + "chance": 0.1, + "condition": "minecraft:random_chance_with_looting", + "looting_multiplier": 0.05 + } + ], + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:sapphire_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:sapphire_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:sapphire_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:smokestone_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:smokestone_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:smokestone_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:ruby_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:ruby_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:ruby_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:diamond_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:diamond_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:diamond_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:emerald_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:emerald_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:emerald_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:garnet_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:garnet_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:garnet_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:zircon_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:zircon_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:zircon_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:amethyst_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:amethyst_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:amethyst_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:topaz_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:topaz_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:topaz_chip" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + } + ], + "name": "surgebinding:heliodor_broam" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 2.0, + "min": -1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:heliodor_mark" + }, + { + "type": "minecraft:item", + "functions": [ + { + "add": false, + "count": { + "type": "minecraft:uniform", + "max": 3.0, + "min": 1.0 + }, + "function": "minecraft:set_count" + }, + { + "count": { + "type": "minecraft:uniform", + "max": 1.0, + "min": 0.0 + }, + "function": "minecraft:looting_enchant" + } + ], + "name": "surgebinding:heliodor_chip" + } + ], + "name": "gems", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:entities/chull" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_block.json index 04ee01889..495cf97d4 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/amethyst" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:amethyst_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_blasting_deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_blasting_deepslate_amethyst_ore.json deleted file mode 100644 index 913b40e9e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_blasting_deepslate_amethyst_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_amethyst_ore" - }, - "result": "surgebinding:amethyst_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_smelting_deepslate_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_smelting_deepslate_amethyst_ore.json deleted file mode 100644 index 4541810ae..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_broam_from_smelting_deepslate_amethyst_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_amethyst_ore" - }, - "result": "surgebinding:amethyst_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_blasting_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_blasting_amethyst_ore.json deleted file mode 100644 index 042635434..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_blasting_amethyst_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:amethyst_ore" - }, - "result": "surgebinding:amethyst_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_smelting_amethyst_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_smelting_amethyst_ore.json deleted file mode 100644 index 85202c95b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/amethyst_mark_from_smelting_amethyst_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:amethyst_ore" - }, - "result": "surgebinding:amethyst_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_block.json index 0af17e7f7..6589bc9a1 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/diamond" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:diamond_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_blasting_deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_blasting_deepslate_diamond_ore.json deleted file mode 100644 index d05a60cc8..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_blasting_deepslate_diamond_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_diamond_ore" - }, - "result": "surgebinding:diamond_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_smelting_deepslate_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_smelting_deepslate_diamond_ore.json deleted file mode 100644 index 6e6389fb6..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_broam_from_smelting_deepslate_diamond_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_diamond_ore" - }, - "result": "surgebinding:diamond_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_blasting_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_blasting_diamond_ore.json deleted file mode 100644 index e9a87e032..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_blasting_diamond_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:diamond_ore" - }, - "result": "surgebinding:diamond_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_smelting_diamond_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_smelting_diamond_ore.json deleted file mode 100644 index f566ca4f7..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/diamond_mark_from_smelting_diamond_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:diamond_ore" - }, - "result": "surgebinding:diamond_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_block.json index 0edd9533e..37265954a 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/emerald" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:emerald_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_blasting_deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_blasting_deepslate_emerald_ore.json deleted file mode 100644 index 94dad1311..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_blasting_deepslate_emerald_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_emerald_ore" - }, - "result": "surgebinding:emerald_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_smelting_deepslate_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_smelting_deepslate_emerald_ore.json deleted file mode 100644 index 6830f3044..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_broam_from_smelting_deepslate_emerald_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_emerald_ore" - }, - "result": "surgebinding:emerald_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_blasting_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_blasting_emerald_ore.json deleted file mode 100644 index f015f004f..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_blasting_emerald_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:emerald_ore" - }, - "result": "surgebinding:emerald_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_smelting_emerald_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_smelting_emerald_ore.json deleted file mode 100644 index 205650579..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/emerald_mark_from_smelting_emerald_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:emerald_ore" - }, - "result": "surgebinding:emerald_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_block.json index 2a067120e..ee3e718f5 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/garnet" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:garnet_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_blasting_deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_blasting_deepslate_garnet_ore.json deleted file mode 100644 index d970bc84e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_blasting_deepslate_garnet_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_garnet_ore" - }, - "result": "surgebinding:garnet_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_smelting_deepslate_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_smelting_deepslate_garnet_ore.json deleted file mode 100644 index 099de788e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_broam_from_smelting_deepslate_garnet_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_garnet_ore" - }, - "result": "surgebinding:garnet_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_blasting_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_blasting_garnet_ore.json deleted file mode 100644 index b14e88adb..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_blasting_garnet_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:garnet_ore" - }, - "result": "surgebinding:garnet_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_smelting_garnet_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_smelting_garnet_ore.json deleted file mode 100644 index 6ddb27a5d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/garnet_mark_from_smelting_garnet_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:garnet_ore" - }, - "result": "surgebinding:garnet_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_block.json index 253b75e51..68f694415 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/heliodor" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:heliodor_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_blasting_deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_blasting_deepslate_heliodor_ore.json deleted file mode 100644 index 483cca5e4..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_blasting_deepslate_heliodor_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_heliodor_ore" - }, - "result": "surgebinding:heliodor_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_smelting_deepslate_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_smelting_deepslate_heliodor_ore.json deleted file mode 100644 index 9afdd86ef..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_broam_from_smelting_deepslate_heliodor_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_heliodor_ore" - }, - "result": "surgebinding:heliodor_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_blasting_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_blasting_heliodor_ore.json deleted file mode 100644 index 2b08b6d7b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_blasting_heliodor_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:heliodor_ore" - }, - "result": "surgebinding:heliodor_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_smelting_heliodor_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_smelting_heliodor_ore.json deleted file mode 100644 index a8665db1d..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/heliodor_mark_from_smelting_heliodor_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:heliodor_ore" - }, - "result": "surgebinding:heliodor_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_block.json index 94947238a..f4317eb43 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/ruby" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:ruby_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_blasting_deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_blasting_deepslate_ruby_ore.json deleted file mode 100644 index 3071a1abb..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_blasting_deepslate_ruby_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_ruby_ore" - }, - "result": "surgebinding:ruby_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_smelting_deepslate_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_smelting_deepslate_ruby_ore.json deleted file mode 100644 index 50a656a3e..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_broam_from_smelting_deepslate_ruby_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_ruby_ore" - }, - "result": "surgebinding:ruby_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_blasting_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_blasting_ruby_ore.json deleted file mode 100644 index 1c1dc0964..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_blasting_ruby_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:ruby_ore" - }, - "result": "surgebinding:ruby_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_smelting_ruby_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_smelting_ruby_ore.json deleted file mode 100644 index 6e424e453..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/ruby_mark_from_smelting_ruby_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:ruby_ore" - }, - "result": "surgebinding:ruby_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_block.json index 58bd006b2..0a7c794c5 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/sapphire" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:sapphire_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_blasting_deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_blasting_deepslate_sapphire_ore.json deleted file mode 100644 index f8a95e366..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_blasting_deepslate_sapphire_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_sapphire_ore" - }, - "result": "surgebinding:sapphire_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_smelting_deepslate_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_smelting_deepslate_sapphire_ore.json deleted file mode 100644 index 0359bc0ff..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_broam_from_smelting_deepslate_sapphire_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_sapphire_ore" - }, - "result": "surgebinding:sapphire_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_blasting_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_blasting_sapphire_ore.json deleted file mode 100644 index 678df61c3..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_blasting_sapphire_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:sapphire_ore" - }, - "result": "surgebinding:sapphire_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_smelting_sapphire_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_smelting_sapphire_ore.json deleted file mode 100644 index fda767f2c..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/sapphire_mark_from_smelting_sapphire_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:sapphire_ore" - }, - "result": "surgebinding:sapphire_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_block.json index f7f829bf5..0a541dfe1 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/smokestone" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:smokestone_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_blasting_deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_blasting_deepslate_smokestone_ore.json deleted file mode 100644 index 232e3ffac..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_blasting_deepslate_smokestone_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_smokestone_ore" - }, - "result": "surgebinding:smokestone_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_smelting_deepslate_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_smelting_deepslate_smokestone_ore.json deleted file mode 100644 index e1fb9c994..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_broam_from_smelting_deepslate_smokestone_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_smokestone_ore" - }, - "result": "surgebinding:smokestone_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_blasting_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_blasting_smokestone_ore.json deleted file mode 100644 index 0059c4ae4..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_blasting_smokestone_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:smokestone_ore" - }, - "result": "surgebinding:smokestone_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_smelting_smokestone_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_smelting_smokestone_ore.json deleted file mode 100644 index 9d17a077c..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/smokestone_mark_from_smelting_smokestone_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:smokestone_ore" - }, - "result": "surgebinding:smokestone_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_block.json index f90e59289..3a81ce1dc 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/topaz" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:topaz_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_blasting_deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_blasting_deepslate_topaz_ore.json deleted file mode 100644 index c9d249123..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_blasting_deepslate_topaz_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_topaz_ore" - }, - "result": "surgebinding:topaz_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_smelting_deepslate_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_smelting_deepslate_topaz_ore.json deleted file mode 100644 index b766f8ec6..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_broam_from_smelting_deepslate_topaz_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_topaz_ore" - }, - "result": "surgebinding:topaz_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_blasting_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_blasting_topaz_ore.json deleted file mode 100644 index 35f1809a1..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_blasting_topaz_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:topaz_ore" - }, - "result": "surgebinding:topaz_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_smelting_topaz_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_smelting_topaz_ore.json deleted file mode 100644 index 0713975c3..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/topaz_mark_from_smelting_topaz_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:topaz_ore" - }, - "result": "surgebinding:topaz_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_block.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_block.json index 19688c6c1..f113f9e74 100644 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_block.json @@ -1,5 +1,6 @@ { "type": "minecraft:crafting_shaped", + "category": "misc", "key": { "I": { "tag": "forge:gems/zircon" @@ -15,5 +16,6 @@ ], "result": { "item": "surgebinding:zircon_block" - } + }, + "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_blasting_deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_blasting_deepslate_zircon_ore.json deleted file mode 100644 index ddf016371..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_blasting_deepslate_zircon_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_zircon_ore" - }, - "result": "surgebinding:zircon_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_smelting_deepslate_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_smelting_deepslate_zircon_ore.json deleted file mode 100644 index fdb4a3edc..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_broam_from_smelting_deepslate_zircon_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:deepslate_zircon_ore" - }, - "result": "surgebinding:zircon_broam" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_blasting_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_blasting_zircon_ore.json deleted file mode 100644 index 3031a06cd..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_blasting_zircon_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:blasting", - "cookingtime": 500, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:zircon_ore" - }, - "result": "surgebinding:zircon_mark" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_smelting_zircon_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_smelting_zircon_ore.json deleted file mode 100644 index 48c677e2b..000000000 --- a/src/datagen/generated/surgebinding/data/surgebinding/recipes/zircon_mark_from_smelting_zircon_ore.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "type": "minecraft:smelting", - "cookingtime": 1000, - "experience": 1.0, - "ingredient": { - "item": "surgebinding:zircon_ore" - }, - "result": "surgebinding:zircon_mark" -} \ No newline at end of file From effa35b017a3bfb246c252e9dfd8b2137eaa0f64 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 10 Oct 2024 11:42:25 +1300 Subject: [PATCH 0919/1090] [Patchouli] data gen fixes --- .../allomancy/patchouli/PatchouliAllomancyCategory.java | 8 ++++---- .../.cache/3b2a435655541c92d690318b57013336949ed348 | 6 +++--- .../guide/en_us/entries/allomancy/allomantic_steel.json | 5 ++--- .../guide/en_us/entries/allomancy/coin_pouch.json | 6 ++++++ 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index 7fc5ef470..cd0b4feb6 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -1,5 +1,5 @@ /* - * File updated ~ 16 - 3 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.patchouli; @@ -9,7 +9,6 @@ import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.StringHelper; -import leaf.cosmere.client.Keybindings; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; @@ -70,6 +69,7 @@ public static void collect(List categories, List categories, List Date: Thu, 10 Oct 2024 11:43:44 +1300 Subject: [PATCH 0920/1090] [Port] Eating nuggets/spiking gives small exhaustion --- .../cosmere/data/cosmere/damage_type/eat_metal.json | 2 +- .../cosmere/common/registry/CosmereDamageTypesRegistry.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json b/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json index 6b0079c12..335ce876a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json @@ -1,5 +1,5 @@ { - "exhaustion": 0.0, + "exhaustion": 0.1, "message_id": "cosmere.eat_metal", "scaling": "when_caused_by_living_non_player" } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java index 9d3697c39..44cb4c110 100644 --- a/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CosmereDamageTypesRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -24,8 +24,8 @@ public class CosmereDamageTypesRegistry private static final Map INTERNAL_DAMAGE_TYPES = new HashMap<>(); public static final Map DAMAGE_TYPES = Collections.unmodifiableMap(INTERNAL_DAMAGE_TYPES); - public static final CosmereDamageType EAT_METAL = new CosmereDamageType("eat_metal"); - public static final CosmereDamageType SPIKED = new CosmereDamageType("spiked"); + public static final CosmereDamageType EAT_METAL = new CosmereDamageType("eat_metal", 0.1f); + public static final CosmereDamageType SPIKED = new CosmereDamageType("spiked", 0.1f); public record CosmereDamageType(ResourceKey key, float exhaustion) implements IHasTranslationKey { From 2681e9e557a98f0743de6ecc14aa2853e4408dbc Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 10 Oct 2024 12:01:46 +1300 Subject: [PATCH 0921/1090] [Port] Fix vial mixing --- .../cosmere/allomancy/common/Allomancy.java | 4 ++-- .../common/recipes/VialMixingRecipe.java | 17 ++++++----------- .../common/registries/AllomancyRecipes.java | 11 +++++------ .../cosmere/allomancy/AllomancyRecipeGen.java | 6 ++---- .../impl/RecipeSerializerDeferredRegister.java | 7 ++++++- .../impl/RecipeSerializerRegistryObject.java | 9 +++++++-- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java b/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java index b07b52311..982d0f473 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/Allomancy.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common; @@ -51,7 +51,7 @@ public Allomancy() AllomancyEntityTypes.ENTITY_TYPES.register(modBus); AllomancyManifestations.MANIFESTATIONS.register(modBus); AllomancyMenuTypes.MENU_TYPES.register(modBus); - AllomancyRecipes.SPECIAL_RECIPES.register(modBus); + AllomancyRecipes.RECIPE_SERIALIZERS.register(modBus); AllomancyStats.STATS.register(modBus); AllomancyCreativeTabs.CREATIVE_TABS.register(modBus); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java index d518496ef..d03544744 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.recipes; @@ -16,7 +16,10 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.*; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; import net.minecraftforge.common.Tags; @@ -160,16 +163,8 @@ public boolean canCraftInDimensions(int width, int height) @Override public @Nonnull RecipeSerializer getSerializer() { - return AllomancyRecipes.VIAL_RECIPE_SERIALIZER.get(); + return AllomancyRecipes.VIAL_MIX.get(); } - public static class Serializer extends SimpleCraftingRecipeSerializer - { - public Serializer() - { - super(VialMixingRecipe::new); - } - } - } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java index 7c8cf682e..f74c55660 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyRecipes.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; @@ -8,14 +8,13 @@ import leaf.cosmere.allomancy.common.recipes.VialMixingRecipe; import leaf.cosmere.common.registration.impl.RecipeSerializerDeferredRegister; import leaf.cosmere.common.registration.impl.RecipeSerializerRegistryObject; -import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; // for the non-json based recipes public class AllomancyRecipes { - public static final RecipeSerializerDeferredRegister SPECIAL_RECIPES = new RecipeSerializerDeferredRegister(Allomancy.MODID); - - public static final RecipeSerializerRegistryObject> VIAL_RECIPE_SERIALIZER = - SPECIAL_RECIPES.register("crafting_vial_mix", VialMixingRecipe.Serializer::new); + public static final RecipeSerializerDeferredRegister RECIPE_SERIALIZERS = new RecipeSerializerDeferredRegister(Allomancy.MODID); + public static final RecipeSerializerRegistryObject VIAL_MIX = + RECIPE_SERIALIZERS.register("crafting_vial_mix", () -> new SimpleCraftingRecipeSerializer<>(VialMixingRecipe::new)); } diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java index 0571784f7..c63613e77 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -12,8 +12,6 @@ import net.minecraft.data.recipes.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.CraftingRecipe; -import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; import net.minecraftforge.common.data.ExistingFileHelper; @@ -39,7 +37,7 @@ protected void addRecipes(Consumer consumer) .save(consumer); SpecialRecipeBuilder - .special((RecipeSerializer) AllomancyRecipes.VIAL_RECIPE_SERIALIZER.get()) + .special(AllomancyRecipes.VIAL_MIX.get()) .save(consumer, Allomancy.rl("vial_mixing").toString()); } diff --git a/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerDeferredRegister.java index f187494c4..8da0ee518 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerDeferredRegister.java @@ -1,6 +1,11 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + package leaf.cosmere.common.registration.impl; import leaf.cosmere.common.registration.WrappedDeferredRegister; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraftforge.registries.ForgeRegistries; @@ -14,7 +19,7 @@ public RecipeSerializerDeferredRegister(String modid) super(modid, ForgeRegistries.RECIPE_SERIALIZERS); } - public RecipeSerializerRegistryObject> register(String name, Supplier> sup) + public > RecipeSerializerRegistryObject register(String name, Supplier> sup) { return register(name, sup, RecipeSerializerRegistryObject::new); } diff --git a/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerRegistryObject.java b/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerRegistryObject.java index 96f37f51e..89587d600 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerRegistryObject.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/RecipeSerializerRegistryObject.java @@ -1,12 +1,17 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + package leaf.cosmere.common.registration.impl; import leaf.cosmere.common.registration.WrappedRegistryObject; +import net.minecraft.world.item.crafting.Recipe; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraftforge.registries.RegistryObject; -public class RecipeSerializerRegistryObject> extends WrappedRegistryObject +public class RecipeSerializerRegistryObject> extends WrappedRegistryObject> { - public RecipeSerializerRegistryObject(RegistryObject registryObject) + public RecipeSerializerRegistryObject(RegistryObject> registryObject) { super(registryObject); } From 5717eac66f64f1a25a419256cbfedcb4624185e2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 10 Oct 2024 13:03:16 +1300 Subject: [PATCH 0922/1090] [Port] Curios --- gradle.properties | 5 +- .../feruchemy/FeruchemyCuriosProvider.java | 43 ++++++++++ .../feruchemy/FeruchemyDataGenerator.java | 7 +- .../0091ba631176854276c2a1c4a58a7dfb77cb24a4 | 6 +- .../60c035799f578be828205f75035ce4e4976d0466 | 5 ++ .../curios/entities/feruchemists.json | 11 +++ .../data/feruchemy/curios/slots/bracelet.json | 4 + .../data/feruchemy/curios/slots/necklace.json | 4 + .../data/feruchemy/curios/slots/ring.json | 4 + .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 8 ++ .../curios/entities/hemalurgists.json | 14 ++++ .../data/hemalurgy/curios/slots/eyes.json | 7 ++ .../data/hemalurgy/curios/slots/linchpin.json | 7 ++ .../data/hemalurgy/curios/slots/mental.json | 7 ++ .../data/hemalurgy/curios/slots/physical.json | 7 ++ .../hemalurgy/curios/slots/spiritual.json | 7 ++ .../data/hemalurgy/curios/slots/temporal.json | 7 ++ .../hemalurgy/HemalurgyCuriosProvider.java | 78 +++++++++++++++++ .../hemalurgy/HemalurgyDataGenerator.java | 9 +- .../leaf/cosmere/CosmereDataGenerator.java | 2 +- .../common/compat/curios/CuriosCompat.java | 83 +------------------ 21 files changed, 237 insertions(+), 88 deletions(-) create mode 100644 src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java create mode 100644 src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 create mode 100644 src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json create mode 100644 src/datagen/generated/feruchemy/data/feruchemy/curios/slots/bracelet.json create mode 100644 src/datagen/generated/feruchemy/data/feruchemy/curios/slots/necklace.json create mode 100644 src/datagen/generated/feruchemy/data/feruchemy/curios/slots/ring.json create mode 100644 src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/eyes.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/linchpin.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/mental.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/physical.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/spiritual.json create mode 100644 src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/temporal.json create mode 100644 src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java diff --git a/gradle.properties b/gradle.properties index ede5c6972..40d477fd6 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # -# File updated ~ 2 - 10 - 2024 ~ Leaf +# File updated ~ 10 - 10 - 2024 ~ Leaf # org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false @@ -22,7 +22,8 @@ curios_version_range=[5.2.0+1.20.1,) jei_version_range=[15.2.0.20,) jade_version_range=[11.2.2,) #Mod dependencies -curios_version=5.3.2+1.20.1 +# https://maven.theillusivec4.top/top/theillusivec4/curios/curios-forge/ +curios_version=5.10.0+1.20.1 patchouli_version=1.20.1-84 jade_api_id=4712550 jade_id=4711195 diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java new file mode 100644 index 000000000..2e1db5871 --- /dev/null +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java @@ -0,0 +1,43 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.feruchemy; + +import leaf.cosmere.feruchemy.common.Feruchemy; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.world.entity.EntityType; +import net.minecraftforge.common.data.ExistingFileHelper; +import top.theillusivec4.curios.api.CuriosDataProvider; +import top.theillusivec4.curios.api.type.capability.ICurio; + +import java.util.concurrent.CompletableFuture; + +public class FeruchemyCuriosProvider extends CuriosDataProvider +{ + public FeruchemyCuriosProvider(PackOutput output, + ExistingFileHelper fileHelper, + CompletableFuture registries) + { + super(Feruchemy.MODID, output, fileHelper, registries); + } + + @Override + public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHelper) + { + this.createSlot("necklace") + .size(2) + .dropRule(ICurio.DropRule.ALWAYS_KEEP); + this.createSlot("bracelet") + .size(6) + .dropRule(ICurio.DropRule.ALWAYS_KEEP); + this.createSlot("ring") + .size(8) + .dropRule(ICurio.DropRule.ALWAYS_KEEP); + + this.createEntities("feruchemists") + .addEntities(EntityType.PLAYER, EntityType.ARMOR_STAND) // todo inquisitors + .addSlots("necklace", "bracelet", "ring"); + } +} diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java index 88800716a..4ccaa9ce3 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyDataGenerator.java @@ -1,11 +1,12 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.patchouli.FeruchemyPatchouliGen; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; @@ -14,6 +15,8 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; +import java.util.concurrent.CompletableFuture; + @EventBusSubscriber(modid = Feruchemy.MODID, bus = Bus.MOD) public class FeruchemyDataGenerator { @@ -23,12 +26,14 @@ public static void gatherData(GatherDataEvent event) DataGenerator generator = event.getGenerator(); PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + final CompletableFuture lookupProvider = event.getLookupProvider(); generator.addProvider(true, new FeruchemyEngLangGen(packOutput)); generator.addProvider(true, new FeruchemyItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new FeruchemyTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new FeruchemyRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new FeruchemyPatchouliGen(packOutput)); + generator.addProvider(event.includeServer(), new FeruchemyCuriosProvider(packOutput, existingFileHelper, lookupProvider)); } } \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 b/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 index 296dbe383..f8dc57bd8 100644 --- a/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 +++ b/src/datagen/generated/cosmeretools/.cache/0091ba631176854276c2a1c4a58a7dfb77cb24a4 @@ -1,3 +1,3 @@ -// 1.20.1 2024-10-09T13:38:50.2014549 Tools PatchouliGeneration -d2fd40ccfff9153efb80f6d6e71bee9cb3b2fdfd assets/cosmere/patchouli_books/guide/en_us/categories/tools.json -a9cbc7d917e1dee48d14f71d414858abb5927575 assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json +// 1.20.1 2024-10-10T13:01:59.1710912 Tools PatchouliGeneration +821147cb62ce79213665275e84b8454922bb2209 assets/cosmere/patchouli_books/guide/en_us/categories/tools.json +21c4777db7ffca2bf8762b7f4eb91d8bd84f7c08 assets/cosmere/patchouli_books/guide/en_us/entries/tools/tools_basics.json diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 new file mode 100644 index 000000000..33573ad91 --- /dev/null +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -0,0 +1,5 @@ +// 1.20.1 2024-10-10T12:53:21.7466348 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json +50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json +15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json new file mode 100644 index 000000000..da81b44bb --- /dev/null +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -0,0 +1,11 @@ +{ + "entities": [ + "minecraft:player", + "minecraft:armor_stand" + ], + "slots": [ + "ring", + "necklace", + "bracelet" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/bracelet.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/bracelet.json new file mode 100644 index 000000000..dadf8b099 --- /dev/null +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/bracelet.json @@ -0,0 +1,4 @@ +{ + "drop_rule": "ALWAYS_KEEP", + "size": 6 +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/necklace.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/necklace.json new file mode 100644 index 000000000..e59c13610 --- /dev/null +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/necklace.json @@ -0,0 +1,4 @@ +{ + "drop_rule": "ALWAYS_KEEP", + "size": 2 +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/ring.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/ring.json new file mode 100644 index 000000000..910eebdb7 --- /dev/null +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/slots/ring.json @@ -0,0 +1,4 @@ +{ + "drop_rule": "ALWAYS_KEEP", + "size": 8 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 new file mode 100644 index 000000000..a14d9af70 --- /dev/null +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -0,0 +1,8 @@ +// 1.20.1 2024-10-10T12:53:21.7872714 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json +169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json +becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json +fcb5048eb6f2e53241e9f3fe8efac5bbf4c570d5 data/hemalurgy/curios/slots/physical.json +001a233ff3397a1ff5d2919b81933f82b28db5f5 data/hemalurgy/curios/slots/spiritual.json +b7d74ab168a980633bbcc6b1421ab1d7096c89f7 data/hemalurgy/curios/slots/temporal.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json new file mode 100644 index 000000000..61647c56e --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -0,0 +1,14 @@ +{ + "entities": [ + "minecraft:player", + "minecraft:armor_stand" + ], + "slots": [ + "linchpin", + "spiritual", + "mental", + "physical", + "eyes", + "temporal" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/eyes.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/eyes.json new file mode 100644 index 000000000..5288f5746 --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/eyes.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "minecraft:item/empty_armor_slot_helmet", + "order": 0, + "size": 2 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/linchpin.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/linchpin.json new file mode 100644 index 000000000..53ea7a44b --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/linchpin.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "curios:slot/spike_icon", + "order": 1, + "size": 1 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/mental.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/mental.json new file mode 100644 index 000000000..40a174247 --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/mental.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "curios:slot/spike_icon", + "order": 502, + "size": 10 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/physical.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/physical.json new file mode 100644 index 000000000..f6059a0e1 --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/physical.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "curios:slot/spike_icon", + "order": 501, + "size": 8 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/spiritual.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/spiritual.json new file mode 100644 index 000000000..6cdc6560c --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/spiritual.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "curios:slot/spike_icon", + "order": 503, + "size": 4 +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/temporal.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/temporal.json new file mode 100644 index 000000000..a4d0c64c6 --- /dev/null +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/slots/temporal.json @@ -0,0 +1,7 @@ +{ + "add_cosmetic": true, + "drop_rule": "ALWAYS_KEEP", + "icon": "curios:slot/spike_icon", + "order": 504, + "size": 16 +} \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java new file mode 100644 index 000000000..9d629e9e7 --- /dev/null +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java @@ -0,0 +1,78 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.hemalurgy; + +import leaf.cosmere.hemalurgy.common.Hemalurgy; +import net.minecraft.core.HolderLookup; +import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.inventory.InventoryMenu; +import net.minecraftforge.common.data.ExistingFileHelper; +import top.theillusivec4.curios.api.CuriosDataProvider; +import top.theillusivec4.curios.api.type.capability.ICurio; + +import java.util.concurrent.CompletableFuture; + +public class HemalurgyCuriosProvider extends CuriosDataProvider +{ + public static final ResourceLocation EMPTY_SPIKE_SLOT = new ResourceLocation("curios:slot/spike_icon"); + + public HemalurgyCuriosProvider(PackOutput output, + ExistingFileHelper fileHelper, + CompletableFuture registries) + { + super(Hemalurgy.MODID, output, fileHelper, registries); + } + + @Override + public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHelper) + { + this.createSlot("eyes") + .size(2) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET) + .order(0) + .addCosmetic(true); + this.createSlot("linchpin") + .size(1) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(EMPTY_SPIKE_SLOT) + .order(1) + .addCosmetic(true); + + this.createSlot("physical") + .size(8) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(EMPTY_SPIKE_SLOT) + .order(501) + .addCosmetic(true); + + this.createSlot("mental") + .size(10) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(EMPTY_SPIKE_SLOT) + .order(502) + .addCosmetic(true); + + this.createSlot("spiritual") + .size(4) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(EMPTY_SPIKE_SLOT) + .order(503) + .addCosmetic(true); + + this.createSlot("temporal") + .size(16) + .dropRule(ICurio.DropRule.ALWAYS_KEEP) + .icon(EMPTY_SPIKE_SLOT) + .order(504) + .addCosmetic(true); + + this.createEntities("hemalurgists") + .addEntities(EntityType.PLAYER, EntityType.ARMOR_STAND) // todo inquisitors + .addSlots("eyes", "linchpin", "physical", "mental", "spiritual", "temporal"); + } +} diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java index 402fa1029..1822a8633 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyDataGenerator.java @@ -1,11 +1,12 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.patchouli.HemalurgyPatchouliGen; +import net.minecraft.core.HolderLookup; import net.minecraft.data.DataGenerator; import net.minecraft.data.PackOutput; import net.minecraftforge.common.data.ExistingFileHelper; @@ -14,6 +15,8 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber; import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; +import java.util.concurrent.CompletableFuture; + @EventBusSubscriber(modid = Hemalurgy.MODID, bus = Bus.MOD) public class HemalurgyDataGenerator { @@ -23,12 +26,14 @@ public static void gatherData(GatherDataEvent event) DataGenerator generator = event.getGenerator(); PackOutput packOutput = generator.getPackOutput(); ExistingFileHelper existingFileHelper = event.getExistingFileHelper(); + final CompletableFuture lookupProvider = event.getLookupProvider(); generator.addProvider(true, new HemalurgyEngLangGen(packOutput)); - generator.addProvider(true, new HemalurgyTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); + generator.addProvider(true, new HemalurgyTagsProvider(packOutput, lookupProvider, existingFileHelper)); generator.addProvider(true, new HemalurgyItemModelsGen(packOutput, existingFileHelper)); generator.addProvider(true, new HemalurgyRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new HemalurgyPatchouliGen(packOutput)); + generator.addProvider(event.includeServer(), new HemalurgyCuriosProvider(packOutput, existingFileHelper, lookupProvider)); } } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index f3e931218..75fe48de8 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere; diff --git a/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java b/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java index e32e8dac2..83be18270 100644 --- a/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java +++ b/src/main/java/leaf/cosmere/common/compat/curios/CuriosCompat.java @@ -1,22 +1,14 @@ /* - * File updated ~ 11 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.compat.curios; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.InventoryMenu; -import net.minecraftforge.eventbus.api.IEventBus; -import net.minecraftforge.fml.InterModComms; import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent; -import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import top.theillusivec4.curios.api.*; public class CuriosCompat { - - public static final ResourceLocation EMPTY_SPIKE_SLOT = new ResourceLocation("curios:slot/spike_icon"); private static boolean curiosModDetected; @@ -34,12 +26,12 @@ public static void init() return; } - IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); - modBus.addListener(CuriosCompat::onEnqueueIMC); + //IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); + //modBus.addListener(CuriosCompat::registerSlots); } - private static void onEnqueueIMC(InterModEnqueueEvent event) + private static void registerSlots(InterModEnqueueEvent event) { if (!curiosModDetected) { @@ -48,72 +40,5 @@ private static void onEnqueueIMC(InterModEnqueueEvent event) // Handled in datapacks now, leaving this code commented out and this comment in case this breaks in the future and we come looking // Docs: https://docs.illusivesoulworks.com/curios/slots/slot-register - - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.NECKLACE.getMessageBuilder().size(2).build()); - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.BRACELET.getMessageBuilder().size(6).build()); - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> SlotTypePreset.RING.getMessageBuilder().size(8).build()); - - ////custom slots - - ////physical - ////2 eyes, 1 linchpin, 2 top ribs, 2 center chest, 2 upper top leg - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("eyes").priority(0).size(2).icon(InventoryMenu.EMPTY_ARMOR_SLOT_HELMET).build()); - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("linchpin").priority(1).size(1).icon(EMPTY_SPIKE_SLOT).build()); - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("physical").priority(501).size(8).icon(EMPTY_SPIKE_SLOT).build()); - - ////mental - ////4 upper arm, 4 upper rib?, 4 middle leg - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("mental").priority(502).size(10).icon(EMPTY_SPIKE_SLOT).build()); - - ////spiritual - ////4 lower leg, 4 lower arm, 4 lower ribs - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("spiritual").priority(503).size(4).icon(EMPTY_SPIKE_SLOT).build()); - - ////temporal - ////4 middle ribs, 4 middle arm, 2 lower middle leg, 2 upper lower leg - //InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("temporal").priority(504).size(16).icon(EMPTY_SPIKE_SLOT).build()); - -/* - - // Physical 1 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("back").priority(2).size(4).icon(EMPTY_SPIKE_SLOT).build()); - // Mental 4 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("chest").priority(3).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Physical 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("shoulders_top").priority(4).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Physical 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("shoulders_back").priority(5).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("upper_arms_back").priority(6).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("shoulders_side").priority(7).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Spiritual 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("upper_arms").priority(8).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Mental 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("middle_arms").priority(9).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("lower_arms").priority(10).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Spiritual 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("hands").priority(11).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("ribs_top").priority(12).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Physical 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("ribs_top_middle").priority(13).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Mental 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("ribs_bottom_middle").priority(14).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("ribs_bottom").priority(15).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Spiritual 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("upper_legs").priority(16).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Physical 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("upper_middle_legs").priority(17).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Mental 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("lower_middle_legs").priority(18).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Temporal 2 - InterModComms.sendTo(CuriosApi.MODID, SlotTypeMessage.REGISTER_TYPE, () -> new SlotTypeMessage.Builder("lower_legs").priority(19).size(2).icon(EMPTY_SPIKE_SLOT).build()); - // Spiritual 2 -*/ - - } } From 803ca2a04924d8aa9cd14920286faf9ec9f8eba4 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 10 Oct 2024 13:03:32 +1300 Subject: [PATCH 0923/1090] [Port] patchouli fix invalid tools icon --- .../leaf/cosmere/tools/patchouli/PatchouliToolsCategory.java | 4 ++-- .../cosmere/patchouli_books/guide/en_us/categories/tools.json | 2 +- .../guide/en_us/entries/tools/tools_basics.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/PatchouliToolsCategory.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/PatchouliToolsCategory.java index 99defc8b0..c55d6ae28 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/PatchouliToolsCategory.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/patchouli/PatchouliToolsCategory.java @@ -1,5 +1,5 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.patchouli; @@ -16,7 +16,7 @@ public static void collect(List categories, List Date: Thu, 10 Oct 2024 14:28:36 +1300 Subject: [PATCH 0924/1090] [Port] Creative tabs for tools/surgebinding --- .../cosmere/tools/common/CosmereTools.java | 3 +- .../common/registries/ToolsCreativeTabs.java | 107 ++++++++++++++++++ .../tools/common/registries/ToolsItems.java | 25 ++-- .../surgebinding/common/Surgebinding.java | 3 +- .../registries/SurgebindingCreativeTabs.java | 92 +++++++++++++++ 5 files changed, 215 insertions(+), 15 deletions(-) create mode 100644 src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/CosmereTools.java b/src/cosmeretools/java/leaf/cosmere/tools/common/CosmereTools.java index 661fbec0f..6b003c519 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/CosmereTools.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/CosmereTools.java @@ -1,5 +1,5 @@ /* - * File updated ~ 23 - 3 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.common; @@ -57,6 +57,7 @@ public CosmereTools() ToolsMenuTypes.MENU_TYPES.register(modBus); ToolsRecipes.SPECIAL_RECIPES.register(modBus); ToolsStats.STATS.register(modBus); + ToolsCreativeTabs.CREATIVE_TABS.register(modBus); versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); } diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java new file mode 100644 index 000000000..291014314 --- /dev/null +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java @@ -0,0 +1,107 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.tools.common.registries; + +import leaf.cosmere.api.Metals; +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.tools.common.CosmereTools; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class ToolsCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(CosmereTools.MODID, ToolsCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("tabs." + CosmereTools.MODID + ".items"), + ToolsItems.METAL_PICKAXES.entrySet().stream().findAny().get().getValue(), + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(ToolsItems.ITEMS, output); + //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + for (var metalType : Metals.MetalType.values()) + { + if (!metalType.hasMaterialItem()) + { + continue; + } + + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_PICKAXES.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_SHOVEL.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_AXES.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_HOE.get(metalType)); + } + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + for (var metalType : Metals.MetalType.values()) + { + if (!metalType.hasMaterialItem()) + { + continue; + } + + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_SWORDS.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_HELMETS.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_CHESTPLATES.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_LEGGINGS.get(metalType)); + CreativeTabDeferredRegister.addToDisplay(event, ToolsItems.METAL_BOOTS.get(metalType)); + } + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java index 46db60bf2..3aea3419d 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java @@ -1,5 +1,5 @@ /* - * File updated ~ 3 - 4 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools.common.registries; @@ -9,19 +9,19 @@ import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.items.*; -import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import java.util.Arrays; import java.util.Map; import java.util.function.Function; +import java.util.function.Supplier; import java.util.stream.Collectors; public class ToolsItems { public static final ItemDeferredRegister ITEMS = new ItemDeferredRegister(CosmereTools.MODID); - + public static final Supplier TOOL = () -> new Item.Properties(); public static final Map> METAL_PICKAXES = Arrays.stream(Metals.MetalType.values()) @@ -34,11 +34,10 @@ public class ToolsItems type, 1, -2.8F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()) + TOOL.get().rarity(type.getRarity()) ) ))); - public static final Map> METAL_AXES = Arrays.stream(Metals.MetalType.values()) .filter(Metals.MetalType::hasMaterialItem) @@ -50,7 +49,7 @@ public class ToolsItems type, 5, -3.1F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()) + TOOL.get().rarity(type.getRarity()) ) ))); @@ -66,7 +65,7 @@ public class ToolsItems type, 1.5f, -3.0F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()) + TOOL.get().rarity(type.getRarity()) ) ))); @@ -82,7 +81,7 @@ public class ToolsItems type, 0, -3.0F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()) + TOOL.get().rarity(type.getRarity()) ) ))); @@ -98,7 +97,7 @@ public class ToolsItems type, 3, -2.4F, - ToolsItemGroups.TOOL.get().rarity(type.getRarity()) + TOOL.get().rarity(type.getRarity()) ) ))); @@ -111,7 +110,7 @@ public class ToolsItems type -> ITEMS.register( type.getName() + "_helmet", () -> new TArmorItem(type, ArmorItem.Type.HELMET, (new Item.Properties()).rarity(type.getRarity()) - )))); + )))); public static final Map> METAL_CHESTPLATES = @@ -122,7 +121,7 @@ public class ToolsItems type -> ITEMS.register( type.getName() + "_chestplate", () -> new TArmorItem(type, ArmorItem.Type.CHESTPLATE, (new Item.Properties()).rarity(type.getRarity()) - )))); + )))); public static final Map> METAL_LEGGINGS = @@ -133,7 +132,7 @@ public class ToolsItems type -> ITEMS.register( type.getName() + "_leggings", () -> new TArmorItem(type, ArmorItem.Type.LEGGINGS, (new Item.Properties()).rarity(type.getRarity()) - )))); + )))); public static final Map> METAL_BOOTS = @@ -144,7 +143,7 @@ public class ToolsItems type -> ITEMS.register( type.getName() + "_boots", () -> new TArmorItem(type, ArmorItem.Type.BOOTS, (new Item.Properties()).rarity(type.getRarity()) - )))); + )))); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java index 91b0f5346..be2e2f9d7 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 11 - 2023 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common; @@ -59,6 +59,7 @@ public Surgebinding() SurgebindingFeatures.CONFIGURED_FEATURES.register(modBus); SurgebindingFeatures.PLACED_FEATURES.register(modBus); + SurgebindingCreativeTabs.CREATIVE_TABS.register(modBus); SurgebindingDimensions.register(); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java new file mode 100644 index 000000000..9c6d17ce2 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -0,0 +1,92 @@ +/* + * File updated ~ 10 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.registries; + +import leaf.cosmere.api.Roshar; +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import leaf.cosmere.surgebinding.common.Surgebinding; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class SurgebindingCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Surgebinding.MODID, SurgebindingCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("tabs." + Surgebinding.MODID + ".items"), + SurgebindingItems.HONORBLADES.get(Roshar.Gemstone.SAPPHIRE), + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(SurgebindingItems.ITEMS, output); + //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + for (var gemstone : Roshar.Gemstone.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.HONORBLADES.get(gemstone)); + } + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.CHULL_EGG, SurgebindingItems.CRYPTIC_EGG); + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + for (var gemstone : Roshar.Gemstone.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.GEMSTONE_CHIPS.get(gemstone)); + CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.GEMSTONE_MARKS.get(gemstone)); + CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.GEMSTONE_BROAMS.get(gemstone)); + } + } + } + +} From 651727aecfab36c4e2c20e36c5c0a96b09a1e996 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 10 Oct 2024 14:34:38 +1300 Subject: [PATCH 0925/1090] [Port] Creative tab strings fixed --- .../registries/AllomancyCreativeTabs.java | 6 ++-- .../tools/common/items/ToolsItemGroups.java | 28 ------------------- .../allomancy/AllomancyEngLangGen.java | 4 +-- .../leaf/cosmere/aondor/AonDorEngLangGen.java | 5 ++-- .../leaf/cosmere/aviar/AviarEngLangGen.java | 4 +-- .../awakening/AwakeningEngLangGen.java | 4 +-- .../leaf/cosmere/tools/ToolsEngLangGen.java | 5 ++-- .../cosmere/example/ExampleEngLangGen.java | 4 +-- .../feruchemy/FeruchemyCuriosProvider.java | 2 ++ .../feruchemy/FeruchemyEngLangGen.java | 5 ++-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/allomancy/lang/en_us.json | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../aondor/assets/aondor/lang/en_us.json | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../aviar/assets/aviar/lang/en_us.json | 3 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 3 +- .../assets/awakening/lang/en_us.json | 3 ++ .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../cosmere/assets/cosmere/lang/en_us.json | 3 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/cosmeretools/lang/en_us.json | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 3 +- .../example/assets/example/lang/en_us.json | 3 ++ .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/feruchemy/lang/en_us.json | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/hemalurgy/lang/en_us.json | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/sandmastery/lang/en_us.json | 4 +-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 3 +- .../assets/soulforgery/lang/en_us.json | 3 ++ .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +-- .../assets/surgebinding/lang/en_us.json | 4 +-- .../hemalurgy/HemalurgyCuriosProvider.java | 2 ++ .../hemalurgy/HemalurgyEngLangGen.java | 5 ++-- .../main/java/leaf/cosmere/EngLangGen.java | 5 ++-- .../sandmastery/SandmasteryEngLangGen.java | 4 +-- .../soulforgery/SoulforgeryEngLangGen.java | 4 +-- .../surgebinding/SurgebindingEngLangGen.java | 5 ++-- .../registries/ExampleCreativeTabs.java | 4 +-- .../registries/FeruchemyCreativeTabs.java | 4 +-- .../registries/HemalurgyCreativeTabs.java | 4 +-- .../common/registry/CreativeTabsRegistry.java | 16 ++--------- .../registries/SandmasteryCreativeTabs.java | 4 +-- .../registries/SurgebindingCreativeTabs.java | 2 +- 48 files changed, 89 insertions(+), 119 deletions(-) delete mode 100644 src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java create mode 100644 src/datagen/generated/awakening/assets/awakening/lang/en_us.json create mode 100644 src/datagen/generated/example/assets/example/lang/en_us.json create mode 100644 src/datagen/generated/soulforgery/assets/soulforgery/lang/en_us.json diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java index d2ea40ec4..3d5450519 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; @@ -20,8 +20,8 @@ public class AllomancyCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Allomancy.MODID + ".items"), - AllomancyItems.METAL_VIAL, + Component.translatable("tabs." + Allomancy.MODID + ".items"), + AllomancyItems.COIN_POUCH, builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java b/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java deleted file mode 100644 index f76f8677f..000000000 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/items/ToolsItemGroups.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * File updated ~ 23 - 3 - 2024 ~ Leaf - */ - -package leaf.cosmere.tools.common.items; - -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.tools.common.CosmereTools; -import leaf.cosmere.tools.common.registries.ToolsItems; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.registries.DeferredRegister; - -import java.util.function.Supplier; - -public class ToolsItemGroups -{ - public static final Supplier TOOL = () -> new Item.Properties(); - - public static CreativeModeTab TOOLS_TAB = CreativeModeTab.builder() - .icon(() -> new ItemStack(ToolsItems.METAL_PICKAXES.entrySet().stream().findAny().get().getValue().get())) - // todo: populate with .displayItems() - .build(); - -} diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index 89fe153ad..be37d324c 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -177,7 +177,7 @@ private void addTooltips() private void addCreativeTabs() { //ItemGroups/Tabs - add("itemGroup.allomancy.items", "Allomancy Items"); + add("tabs.allomancy.items", "Allomancy"); } private void addDamageSources() diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java index 1325b263e..a4838e8f1 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aondor; @@ -90,8 +90,7 @@ private void addPatchouli() private void addCreativeTabs() { //ItemGroups/Tabs - // "itemGroup.aondor.items": "Aon Dor Items", - add("itemGroup.aondor.items", "Aon Dor Items"); + add("tabs.aondor.items", "Aon Dor"); } diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java index 492029db8..2169cdbd2 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.aviar; @@ -94,7 +94,7 @@ private void addTooltips() private void addItemGroups() { //ItemGroups/Tabs - //add("itemGroup." + AviarItemGroups.GROUP.getRecipeFolderName(), "Aviar Group"); + add("tabs.aviar.items", "Aviar"); } private void addDamageSources() diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java index 7d735829c..4342840b2 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.awakening; @@ -94,7 +94,7 @@ private void addTooltips() private void addItemGroups() { //ItemGroups/Tabs - //add("itemGroup." + AwakeningItemGroups.GROUP.getRecipeFolderName(), "Awakening Group"); + add("tabs.awakening.items", "Awakening"); } private void addDamageSources() diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java index 0dfbde16d..8ec5b3f2e 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.tools; @@ -89,8 +89,7 @@ private void addPatchouli() private void addCreativeTabs() { //ItemGroups/Tabs - //"itemGroup.cosmeretools.tools": "Cosmere tools" - add("itemGroup.cosmeretools.tools", "Cosmere Tools"); + add("tabs.cosmeretools.items", "Cosmere Tools"); } diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java index be514f9e7..8fb4cfadb 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example; @@ -94,7 +94,7 @@ private void addTooltips() private void addItemGroups() { //ItemGroups/Tabs - //add("itemGroup." + ExampleItemGroups.GROUP.getRecipeFolderName(), "Example Group"); + add("tabs.example.items", "Example"); } private void addDamageSources() diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java index 2e1db5871..70d96e559 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java @@ -26,6 +26,8 @@ public FeruchemyCuriosProvider(PackOutput output, @Override public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHelper) { + //https://docs.illusivesoulworks.com/curios/slots/data-generation + this.createSlot("necklace") .size(2) .dropRule(ICurio.DropRule.ALWAYS_KEEP); diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index 32c095788..f6d698248 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -184,8 +184,7 @@ private void addPatchouli() private void addCreativeTabs() { //ItemGroups/Tabs - // "itemGroup.feruchemy.metalminds": "Feruchemical Metalminds", - add("itemGroup.feruchemy.metalminds", "Feruchemical Metalminds"); + add("tabs.feruchemy.items", "Feruchemy"); } diff --git a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 0529fc505..3792ce978 100644 --- a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:04:49.1493018 Languages: en_us -28430e7d470aeff4a7185ba71e4489a659c9f1bb assets/allomancy/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.8294557 Languages: en_us +e2d754dfdb4cdc9411fdf3f6d3de989b174b401c assets/allomancy/lang/en_us.json diff --git a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json index 292d8cc96..5d16c9dd9 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json +++ b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json @@ -87,7 +87,6 @@ "item.allomancy.coin_pouch": "Coin Pouch", "item.allomancy.metal_vial": "Metal Vial", "item.allomancy.mistcloak": "Mistcloak", - "itemGroup.allomancy.items": "Allomancy Items", "key.cosmere.allomancy.pull": "Pull", "key.cosmere.allomancy.push": "Push", "key.cosmere.allomancy.riot": "Riot", @@ -143,5 +142,6 @@ "stat.minecraft.time_since_started_burning_steel": "Time since started burning steel", "stat.minecraft.time_since_started_burning_tin": "Time since started burning tin", "stat.minecraft.time_since_started_burning_zinc": "Time since started burning zinc", + "tabs.allomancy.items": "Allomancy", "tooltip.cosmere.metals.contained": "Contained Metals:" } \ No newline at end of file diff --git a/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 8fc04dec4..790392e33 100644 --- a/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/aondor/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:02:55.9602511 Languages: en_us -0edf704ff48d71a6be69ba2f2d03a67e538fc738 assets/aondor/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.8945106 Languages: en_us +dd68b8bf52dfd9413d2c1b710c9000e2eb97a0cb assets/aondor/lang/en_us.json diff --git a/src/datagen/generated/aondor/assets/aondor/lang/en_us.json b/src/datagen/generated/aondor/assets/aondor/lang/en_us.json index 1b6ff4660..9c818210e 100644 --- a/src/datagen/generated/aondor/assets/aondor/lang/en_us.json +++ b/src/datagen/generated/aondor/assets/aondor/lang/en_us.json @@ -1,3 +1,3 @@ { - "itemGroup.aondor.items": "Aon Dor Items" + "tabs.aondor.items": "Aon Dor" } \ No newline at end of file diff --git a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index b4fcc89e8..47f2521ab 100644 --- a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T13:22:13.4016179 Languages: en_us -fc9b807f85e395e0e1947b2f107b3094bf0ce335 assets/aviar/lang/en_us.json +// 1.20.1 2024-10-10T14:18:48.1020168 Languages: en_us +b3c9c653ab9668c66c6d3fba24bde9ac52f7a70c assets/aviar/lang/en_us.json diff --git a/src/datagen/generated/aviar/assets/aviar/lang/en_us.json b/src/datagen/generated/aviar/assets/aviar/lang/en_us.json index 146e941c9..2405a794f 100644 --- a/src/datagen/generated/aviar/assets/aviar/lang/en_us.json +++ b/src/datagen/generated/aviar/assets/aviar/lang/en_us.json @@ -1,5 +1,6 @@ { "entity.aviar.aviar": "Aviar", "item.aviar.aviar_spawn_egg": "Aviar Spawn Egg", - "item.aviar.fruit_of_patji": "Fruit Of Patji" + "item.aviar.fruit_of_patji": "Fruit Of Patji", + "tabs.aviar.items": "Aviar" } \ No newline at end of file diff --git a/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index f8385829e..b108f5e6d 100644 --- a/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/awakening/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1,2 @@ -// 1.20.1 2024-10-09T13:22:13.4698811 Languages: en_us +// 1.20.1 2024-10-10T14:18:48.147055 Languages: en_us +a69a5aef23ecaf721c59e770da0fe0216deb8a35 assets/awakening/lang/en_us.json diff --git a/src/datagen/generated/awakening/assets/awakening/lang/en_us.json b/src/datagen/generated/awakening/assets/awakening/lang/en_us.json new file mode 100644 index 000000000..6122da50b --- /dev/null +++ b/src/datagen/generated/awakening/assets/awakening/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "tabs.awakening.items": "Awakening" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index eb88b536c..8f514280a 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:02:55.7775178 Languages: en_us -3158b38f29da8dddc5e5d8ea2522ca3292c06c37 assets/cosmere/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.7223651 Languages: en_us +3bcf3fcc70f0bd9d02fa84df08210d8f17a3476d assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 2e03bbeed..d7facdec4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -117,8 +117,6 @@ "item.cosmere.tin_nugget": "Tin Nugget", "item.cosmere.zinc_ingot": "Zinc Ingot", "item.cosmere.zinc_nugget": "Zinc Nugget", - "itemGroup.cosmere.blocks": "Cosmere Blocks", - "itemGroup.cosmere.items": "Cosmere Items", "key.cosmere.powers.menu": "Powers Menu", "key.cosmere.powers.mode.decrease": "Mode Decrease", "key.cosmere.powers.mode.increase": "Mode Increase", @@ -131,6 +129,7 @@ "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", + "tabs.cosmere.items": "Cosmere", "tooltip.cosmere.patchouli.not_installed": "Patchouli is not installed. Documentation is not available.", "tooltip.item.info.control": "§7Hold §8[§eControl§8]", "tooltip.item.info.shift": "§7Hold §8[§eShift§8]", diff --git a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 804c802f6..c9ee9576e 100644 --- a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:02:55.8260756 Languages: en_us -7abefe2bf35f1e418c378cfed0d9249e423e6116 assets/cosmeretools/lang/en_us.json +// 1.20.1 2024-10-10T14:18:47.9999305 Languages: en_us +8d1dc9fb8d0ada62d1e2c55c6be7cf8e82a460cd assets/cosmeretools/lang/en_us.json diff --git a/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json b/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json index 082cfd57e..e5c3e5d08 100644 --- a/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json +++ b/src/datagen/generated/cosmeretools/assets/cosmeretools/lang/en_us.json @@ -197,5 +197,5 @@ "item.cosmeretools.zinc_pickaxe": "Zinc Pickaxe", "item.cosmeretools.zinc_shovel": "Zinc Shovel", "item.cosmeretools.zinc_sword": "Zinc Sword", - "itemGroup.cosmeretools.tools": "Cosmere Tools" + "tabs.cosmeretools.items": "Cosmere Tools" } \ No newline at end of file diff --git a/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 569a60ac7..f2113b398 100644 --- a/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/example/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1,2 @@ -// 1.20.1 2024-10-09T13:22:13.4187353 Languages: en_us +// 1.20.1 2024-10-10T14:18:48.1160288 Languages: en_us +9ba5568445018d7960a71f25c98289f6c7163497 assets/example/lang/en_us.json diff --git a/src/datagen/generated/example/assets/example/lang/en_us.json b/src/datagen/generated/example/assets/example/lang/en_us.json new file mode 100644 index 000000000..df3aee916 --- /dev/null +++ b/src/datagen/generated/example/assets/example/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "tabs.example.items": "Example" +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 33573ad91..01a7f4cde 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-10T12:53:21.7466348 Curios for feruchemy +// 1.20.1 2024-10-10T14:25:43.8624847 Curios for feruchemy 6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 2f86722ec..c3782cc29 100644 --- a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:02:55.9281059 Languages: en_us -20efa59c22e34bc9c8b7d1c6cec326aa281b1301 assets/feruchemy/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.8634857 Languages: en_us +30e43707af5fed23faac27e4d046d6a5252c8afe assets/feruchemy/lang/en_us.json diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json b/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json index 053dc7c0d..062ae72e3 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json @@ -214,7 +214,6 @@ "item.feruchemy.zinc_necklace_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", "item.feruchemy.zinc_ring_metalmind": "Zinc Ring Metalmind", "item.feruchemy.zinc_ring_metalmind.tooltip": "Stores Mental Speed. A Sparker Ferring storing zinc will gain experience very slowly in exchange for gaining experience faster later.", - "itemGroup.feruchemy.metalminds": "Feruchemical Metalminds", "manifestation.feruchemy.aluminum": "Feruchemical Aluminum", "manifestation.feruchemy.aluminum.description": "Users can tap aluminum", "manifestation.feruchemy.atium": "Feruchemical Atium", @@ -249,6 +248,7 @@ "manifestation.feruchemy.tin.description": "Users can tap tin", "manifestation.feruchemy.zinc": "Feruchemical Zinc", "manifestation.feruchemy.zinc.description": "Users can tap zinc", + "tabs.feruchemy.items": "Feruchemy", "tooltip.cosmere.attribute.chromium": "%s%s Luck", "tooltip.cosmere.attribute.copper": "%s%s%% XP", "tooltip.cosmere.attribute.duralumin": "", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index a14d9af70..899d42591 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-10T12:53:21.7872714 Curios for hemalurgy +// 1.20.1 2024-10-10T14:25:43.9125261 Curios for hemalurgy 2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index acb5a4a38..700912363 100644 --- a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:04:49.2219046 Languages: en_us -ca3e83394cc1207f3d199a991ceb5eec451aa93f assets/hemalurgy/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.9125261 Languages: en_us +e677e5d852116803388f5c615265f04527fc493a assets/hemalurgy/lang/en_us.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json index 35bd048bd..4d09c7b50 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json @@ -76,7 +76,7 @@ "item.hemalurgy.tin_spike.tooltip": "Steals senses.", "item.hemalurgy.zinc_spike": "Zinc Spike", "item.hemalurgy.zinc_spike.tooltip": "Steals emotional fortitude.", - "itemGroup.hemalurgy.spikes": "Hemalurgic Spikes", + "tabs.hemalurgy.items": "Hemalurgy", "tooltip.cosmere.attribute.chromium": "%s%s Luck", "tooltip.cosmere.attribute.copper": "%s%s%% XP", "tooltip.cosmere.attribute.duralumin": "", diff --git a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index a7d3274f3..4e94ace89 100644 --- a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T13:22:13.5123127 Languages: en_us -0f20d07f4f803b6a1b38122a496bd01d92710e6b assets/sandmastery/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.9515597 Languages: en_us +2dac8ecfdd2afacf3c73015c7e385231576f3e1b assets/sandmastery/lang/en_us.json diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json index fc4aee9b2..cf22c53a4 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json +++ b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json @@ -13,7 +13,6 @@ "item.sandmastery.qido": "Qido", "item.sandmastery.sand_jar": "Sand Jar", "item.sandmastery.sand_pouch": "Sand Pouch", - "itemGroup.sandmastery": "Sandmastery Items", "key.cosmere.sandmastery.elevate": "Use Elevate Mastery", "key.cosmere.sandmastery.launch": "Use Launch Mastery", "key.cosmere.sandmastery.platform": "Use Platform Mastery", @@ -27,5 +26,6 @@ "manifestation.sandmastery.platform": "Sand Mastery Platform", "manifestation.sandmastery.platform.description": "Masters can use platform", "manifestation.sandmastery.projectile": "Sand Mastery Projectile", - "manifestation.sandmastery.projectile.description": "Masters can use projectile" + "manifestation.sandmastery.projectile.description": "Masters can use projectile", + "tabs.sandmastery.items": "Sandmastery" } \ No newline at end of file diff --git a/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 589e3e1af..fa1026a46 100644 --- a/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/soulforgery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1 +1,2 @@ -// 1.20.1 2024-10-09T13:22:13.4106256 Languages: en_us +// 1.20.1 2024-10-10T14:25:43.8815 Languages: en_us +bf3cfa9062ed66d1be266cef7a0fb40d089ed919 assets/soulforgery/lang/en_us.json diff --git a/src/datagen/generated/soulforgery/assets/soulforgery/lang/en_us.json b/src/datagen/generated/soulforgery/assets/soulforgery/lang/en_us.json new file mode 100644 index 000000000..f88990308 --- /dev/null +++ b/src/datagen/generated/soulforgery/assets/soulforgery/lang/en_us.json @@ -0,0 +1,3 @@ +{ + "tabs.soulforgery.items": "Soulforgery" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index f32880def..cb2fe835c 100644 --- a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-09T14:02:55.8621349 Languages: en_us -fd175af731b9923629c8abcff49555c15b2ce18f assets/surgebinding/lang/en_us.json +// 1.20.1 2024-10-10T14:25:43.8034336 Languages: en_us +d1b12393cdf710e4fc0b8c0e206eeb813512b1db assets/surgebinding/lang/en_us.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json index 5a7a347c9..4b3a79171 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json @@ -86,7 +86,6 @@ "item.surgebinding.zircon_broam": "Zircon Broam", "item.surgebinding.zircon_chip": "Zircon Chip", "item.surgebinding.zircon_mark": "Zircon Mark", - "itemGroup.surgebinding.items": "Surgebinding Items", "key.cosmere.stormlight.shardblade": "Summon/Dismiss Shardblade", "manifestation.surgebinding.abrasion": "Abrasion", "manifestation.surgebinding.abrasion.description": "Needs description", @@ -107,5 +106,6 @@ "manifestation.surgebinding.transformation": "Transformation", "manifestation.surgebinding.transformation.description": "Needs description", "manifestation.surgebinding.transportation": "Transportation", - "manifestation.surgebinding.transportation.description": "Needs description" + "manifestation.surgebinding.transportation.description": "Needs description", + "tabs.surgebinding.items": "Surgebinding" } \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java index 9d629e9e7..cafa63546 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java @@ -30,6 +30,8 @@ public HemalurgyCuriosProvider(PackOutput output, @Override public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHelper) { + //https://docs.illusivesoulworks.com/curios/slots/data-generation + this.createSlot("eyes") .size(2) .dropRule(ICurio.DropRule.ALWAYS_KEEP) diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 1b07acf00..252160c75 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -108,8 +108,7 @@ private void addPatchouli() private void addCreativeTabs() { //ItemGroups/Tabs - // "itemGroup.hemalurgy.spikes": "Hemalurgic Spikes", - add("itemGroup.hemalurgy.spikes", "Hemalurgic Spikes"); + add("tabs.hemalurgy.items", "Hemalurgy"); } diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 891d109e5..25fc0dcef 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere; @@ -146,8 +146,7 @@ private void addCreativeTabs() { //ItemGroups/Tabs //CreativeTabsRegistry.ITEMS.get().getDisplayName() - add("itemGroup.cosmere.items", "Cosmere Items"); - add("itemGroup.cosmere.blocks", "Cosmere Blocks"); + add("tabs.cosmere.items", "Cosmere"); } private void addTooltips() diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java index 7ac13c441..90f2155ff 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery; @@ -138,7 +138,7 @@ private void addTooltips() private void addItemGroups() { - add("itemGroup.sandmastery", "Sandmastery Items"); + add("tabs.sandmastery.items", "Sandmastery"); } private void addDamageSources() diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java index 61f03cfb5..6747b2131 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -94,7 +94,7 @@ private void addTooltips() private void addItemGroups() { //ItemGroups/Tabs - //add("itemGroup." + SoulforgeryItemGroups.GROUP.getRecipeFolderName(), "Soulforgery Group"); + add("tabs.soulforgery.items", "Soulforgery"); } private void addDamageSources() diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java index a995893ed..0cca093da 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -141,8 +141,7 @@ private void addPatchouli() private void addCreativeTabs() { //ItemGroups/Tabs - // "itemGroup.surgebinding.items": "Surgebinding Items", - add("itemGroup.surgebinding.items", "Surgebinding Items"); + add("tabs.surgebinding.items", "Surgebinding"); } diff --git a/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java b/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java index 940b750b5..e7c1afaae 100644 --- a/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java +++ b/src/example/java/leaf/cosmere/example/common/registries/ExampleCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.example.common.registries; @@ -21,7 +21,7 @@ public class ExampleCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Example.MODID + ".items"), + Component.translatable("tabs." + Example.MODID + ".items"), ItemsRegistry.GUIDE,//ExampleItems.ITEMS., builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java index a224cfa5f..632f78731 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; @@ -23,7 +23,7 @@ public class FeruchemyCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Feruchemy.MODID + ".items"), + Component.translatable("tabs." + Feruchemy.MODID + ".items"), FeruchemyItems.BANDS_OF_MOURNING, builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java index 9694aa43c..e289d8583 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.registries; @@ -21,7 +21,7 @@ public class HemalurgyCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Hemalurgy.MODID + ".items"), + Component.translatable("tabs." + Hemalurgy.MODID + ".items"), HemalurgyItems.METAL_SPIKE.entrySet().stream().findAny().get().getValue(), builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 4c27f9390..fe9b0dbf8 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -23,25 +23,13 @@ public class CreativeTabsRegistry public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Cosmere.MODID + ".items"), + Component.translatable("tabs." + Cosmere.MODID + ".items"), ItemsRegistry.GUIDE, builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> { CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); - }) - ); - - public static final CreativeTabRegistryObject BLOCKS = - CREATIVE_TABS.register( - "cosmere.blocks", - Component.translatable("itemGroups." + Cosmere.MODID + ".blocks"), - BlocksRegistry.METAL_ORE.entrySet().stream().findAny().get().getValue().stone(), - builder -> - builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes - .displayItems((displayParameters, output) -> - { CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); }) ); diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java index 9d7f9ff1b..cc637d4ce 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/registries/SandmasteryCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.registries; @@ -20,7 +20,7 @@ public class SandmasteryCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( - Component.translatable("itemGroups." + Sandmastery.MODID + ".items"), + Component.translatable("tabs." + Sandmastery.MODID + ".items"), SandmasteryItems.QIDO_ITEM, builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java index 9c6d17ce2..2468bd93d 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -22,7 +22,7 @@ public class SurgebindingCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( Component.translatable("tabs." + Surgebinding.MODID + ".items"), - SurgebindingItems.HONORBLADES.get(Roshar.Gemstone.SAPPHIRE), + SurgebindingItems.HONORBLADES.get(Roshar.Gemstone.SMOKESTONE), builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> From b3f58e1108d6ee446411e078ce86c49a8eb80ef9 Mon Sep 17 00:00:00 2001 From: DiceOf20 <168097510+DiceOf20@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:09:31 +0100 Subject: [PATCH 0926/1090] First pass on doccumentation Aviar is done, allomancy needs some touch ups and general QC --- .vscode/launch.json | 66 +++++++++++++++ .vscode/tasks.json | 37 +++++++++ .../patchouli/PatchouliAllomancyCategory.java | 80 ++++++++++++------- .../patchouli/PatchouliAviarCategory.java | 16 ++-- .../3b2a435655541c92d690318b57013336949ed348 | 40 +++++----- .../entries/allomancy/allomancy_basics.json | 2 +- .../allomancy/allomantic_aluminum.json | 2 +- .../entries/allomancy/allomantic_atium.json | 2 +- .../allomancy/allomantic_bendalloy.json | 2 +- .../entries/allomancy/allomantic_brass.json | 2 +- .../entries/allomancy/allomantic_bronze.json | 6 +- .../entries/allomancy/allomantic_cadmium.json | 2 +- .../allomancy/allomantic_chromium.json | 2 +- .../entries/allomancy/allomantic_copper.json | 2 +- .../allomancy/allomantic_duralumin.json | 2 +- .../allomancy/allomantic_electrum.json | 2 +- .../entries/allomancy/allomantic_gold.json | 2 +- .../entries/allomancy/allomantic_iron.json | 10 ++- .../allomancy/allomantic_nicrosil.json | 2 +- .../entries/allomancy/allomantic_pewter.json | 2 +- .../entries/allomancy/allomantic_steel.json | 2 +- .../entries/allomancy/allomantic_tin.json | 2 +- .../entries/allomancy/allomantic_zinc.json | 2 +- .../en_us/entries/allomancy/coin_pouch.json | 2 +- .../db13d68236ce24768410ad17bbad099c91fec9a8 | 8 +- .../en_us/entries/aviar/aviar_basics.json | 4 +- .../en_us/entries/aviar/breed_abilities.json | 6 +- .../en_us/entries/aviar/how_to_get_aviar.json | 2 +- .../data/cosmere/damage_type/eat_metal.json | 5 -- .../data/cosmere/damage_type/spiked.json | 5 -- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- 32 files changed, 226 insertions(+), 97 deletions(-) create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 000000000..668f2fe71 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,66 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "java", + "name": "runClient", + "request": "launch", + "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher", + "projectName": "cosmere", + "cwd": "${workspaceFolder}/run", + "vmArgs": "-DlegacyClassPath.file\u003d/home/diceof20/Documents/GitHub/cosmere/build/classpath/runClient_minecraftClasspath.txt -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -Dnet.minecraftforge.gradle.GradleStart.srg.srg-mcp\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -DignoreList\u003dbootstraplauncher,securejarhandler,asm-commons,asm-util,asm-analysis,asm-tree,asm,JarJarFileSystems,client-extra,fmlcore,javafmllanguage,lowcodelanguage,mclanguage,forge- -DmergeModules\u003djna-5.10.0.jar,jna-platform-5.10.0.jar -Dforge.enabledGameTestNamespaces\u003dcosmere,allomancy,feruchemy,hemalurgy,surgebinding,sandmastery,cosmeretools -Dforge.enableGameTest\u003dtrue -Djava.net.preferIPv6Addresses\u003dsystem -p /home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/bootstraplauncher/1.1.2/c546e00443d8432cda6baa1c860346980742628/bootstraplauncher-1.1.2.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/securejarhandler/2.1.10/51e6a22c6c716beb11e244bf5b8be480f51dd6b5/securejarhandler-2.1.10.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.7/e86dda4696d3c185fcc95d8d311904e7ce38a53f/asm-commons-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.7/c0655519f24d92af2202cb681cd7c1569df6ead6/asm-util-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.7/e4a258b7eb96107106c0599f0061cfc1832fe07a/asm-analysis-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.7/e446a17b175bfb733b87c5c2560ccb4e57d69f1a/asm-tree-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.7/73d7b3086e14beb604ced229c302feff6449723/asm-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/net.minecraftforge/JarJarFileSystems/0.3.19/2464eb7d6b9ddb9db36a82cf8a95193e5c6fe020/JarJarFileSystems-0.3.19.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar\u003dcpw.mods.securejarhandler --add-opens java.base/java.lang.invoke\u003dcpw.mods.securejarhandler --add-exports java.base/sun.security.util\u003dcpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns\u003djava.naming", + "args": "--launchTarget forgeclientuserdev --version MOD_DEV --assetIndex 5 --assetsDir /home/diceof20/.gradle/caches/forge_gradle/assets --gameDir . --fml.forgeVersion 47.3.0 --fml.mcVersion 1.20.1 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20230612.114412 --mixin.config cosmere.mixins.json --mixin.config allomancy.mixins.json --mixin.config feruchemy.mixins.json --mixin.config hemalurgy.mixins.json --mixin.config surgebinding.mixins.json --mixin.config sandmastery.mixins.json --mixin.config aviar.mixins.json --mixin.config awakening.mixins.json --mixin.config aondor.mixins.json --mixin.config soulforgery.mixins.json --mixin.config cosmeretools.mixins.json", + "env": { + "MOD_CLASSES": "allomancy%%${workspaceFolder}/build/resources/allomancy:allomancy%%${workspaceFolder}/build/classes/java/allomancy:allomancy%%${workspaceFolder}/build/resources/gameTestAllomancy:allomancy%%${workspaceFolder}/build/classes/java/gameTestAllomancy:aondor%%${workspaceFolder}/build/resources/aondor:aondor%%${workspaceFolder}/build/classes/java/aondor:aondor%%${workspaceFolder}/build/resources/gameTestAondor:aondor%%${workspaceFolder}/build/classes/java/gameTestAondor:aviar%%${workspaceFolder}/build/resources/aviar:aviar%%${workspaceFolder}/build/classes/java/aviar:aviar%%${workspaceFolder}/build/resources/gameTestAviar:aviar%%${workspaceFolder}/build/classes/java/gameTestAviar:awakening%%${workspaceFolder}/build/resources/awakening:awakening%%${workspaceFolder}/build/classes/java/awakening:awakening%%${workspaceFolder}/build/resources/gameTestAwakening:awakening%%${workspaceFolder}/build/classes/java/gameTestAwakening:cosmere%%${workspaceFolder}/build/resources/main:cosmere%%${workspaceFolder}/build/classes/java/main:cosmere%%${workspaceFolder}/build/resources/api:cosmere%%${workspaceFolder}/build/classes/java/api:cosmere%%${workspaceFolder}/build/resources/gameTestMain:cosmere%%${workspaceFolder}/build/classes/java/gameTestMain:cosmeretools%%${workspaceFolder}/build/resources/cosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/cosmeretools:cosmeretools%%${workspaceFolder}/build/resources/gameTestCosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/gameTestCosmeretools:example%%${workspaceFolder}/build/resources/example:example%%${workspaceFolder}/build/classes/java/example:example%%${workspaceFolder}/build/resources/gameTestExample:example%%${workspaceFolder}/build/classes/java/gameTestExample:feruchemy%%${workspaceFolder}/build/resources/feruchemy:feruchemy%%${workspaceFolder}/build/classes/java/feruchemy:feruchemy%%${workspaceFolder}/build/resources/gameTestFeruchemy:feruchemy%%${workspaceFolder}/build/classes/java/gameTestFeruchemy:hemalurgy%%${workspaceFolder}/build/resources/hemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/hemalurgy:hemalurgy%%${workspaceFolder}/build/resources/gameTestHemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/gameTestHemalurgy:sandmastery%%${workspaceFolder}/build/resources/sandmastery:sandmastery%%${workspaceFolder}/build/classes/java/sandmastery:sandmastery%%${workspaceFolder}/build/resources/gameTestSandmastery:sandmastery%%${workspaceFolder}/build/classes/java/gameTestSandmastery:soulforgery%%${workspaceFolder}/build/resources/soulforgery:soulforgery%%${workspaceFolder}/build/classes/java/soulforgery:soulforgery%%${workspaceFolder}/build/resources/gameTestSoulforgery:soulforgery%%${workspaceFolder}/build/classes/java/gameTestSoulforgery:surgebinding%%${workspaceFolder}/build/resources/surgebinding:surgebinding%%${workspaceFolder}/build/classes/java/surgebinding:surgebinding%%${workspaceFolder}/build/resources/gameTestSurgebinding:surgebinding%%${workspaceFolder}/build/classes/java/gameTestSurgebinding", + "MCP_MAPPINGS": "parchment_2023.09.03-1.20.1" + }, + "preLaunchTask": "prepareRunClientCompile" + }, + { + "type": "java", + "name": "runData", + "request": "launch", + "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher", + "projectName": "cosmere", + "cwd": "${workspaceFolder}/run", + "vmArgs": "-DlegacyClassPath.file\u003d/home/diceof20/Documents/GitHub/cosmere/build/classpath/runData_minecraftClasspath.txt -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -Dnet.minecraftforge.gradle.GradleStart.srg.srg-mcp\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -DignoreList\u003dbootstraplauncher,securejarhandler,asm-commons,asm-util,asm-analysis,asm-tree,asm,JarJarFileSystems,client-extra,fmlcore,javafmllanguage,lowcodelanguage,mclanguage,forge- -DmergeModules\u003djna-5.10.0.jar,jna-platform-5.10.0.jar -Djava.net.preferIPv6Addresses\u003dsystem -p /home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/bootstraplauncher/1.1.2/c546e00443d8432cda6baa1c860346980742628/bootstraplauncher-1.1.2.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/securejarhandler/2.1.10/51e6a22c6c716beb11e244bf5b8be480f51dd6b5/securejarhandler-2.1.10.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.7/e86dda4696d3c185fcc95d8d311904e7ce38a53f/asm-commons-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.7/c0655519f24d92af2202cb681cd7c1569df6ead6/asm-util-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.7/e4a258b7eb96107106c0599f0061cfc1832fe07a/asm-analysis-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.7/e446a17b175bfb733b87c5c2560ccb4e57d69f1a/asm-tree-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.7/73d7b3086e14beb604ced229c302feff6449723/asm-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/net.minecraftforge/JarJarFileSystems/0.3.19/2464eb7d6b9ddb9db36a82cf8a95193e5c6fe020/JarJarFileSystems-0.3.19.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar\u003dcpw.mods.securejarhandler --add-opens java.base/java.lang.invoke\u003dcpw.mods.securejarhandler --add-exports java.base/sun.security.util\u003dcpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns\u003djava.naming", + "args": "--launchTarget forgedatauserdev --assetIndex 5 --assetsDir /home/diceof20/.gradle/caches/forge_gradle/assets --gameDir . --fml.forgeVersion 47.3.0 --fml.mcVersion 1.20.1 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20230612.114412 --all --output /home/diceof20/Documents/GitHub/cosmere/src/datagen/generated --mod cosmere --existing /home/diceof20/Documents/GitHub/cosmere/src/main/resources --mod allomancy --existing /home/diceof20/Documents/GitHub/cosmere/src/allomancy/resources --mod feruchemy --existing /home/diceof20/Documents/GitHub/cosmere/src/feruchemy/resources --mod hemalurgy --existing /home/diceof20/Documents/GitHub/cosmere/src/hemalurgy/resources --mod surgebinding --existing /home/diceof20/Documents/GitHub/cosmere/src/surgebinding/resources --mod sandmastery --existing /home/diceof20/Documents/GitHub/cosmere/src/sandmastery/resources --mod awakening --existing /home/diceof20/Documents/GitHub/cosmere/src/awakening/resources --mod aondor --existing /home/diceof20/Documents/GitHub/cosmere/src/aondor/resources --mod aviar --existing /home/diceof20/Documents/GitHub/cosmere/src/aviar/resources --mod soulforgery --existing /home/diceof20/Documents/GitHub/cosmere/src/soulforgery/resources --mod example --existing /home/diceof20/Documents/GitHub/cosmere/src/example/resources --mod cosmeretools --existing /home/diceof20/Documents/GitHub/cosmere/src/cosmeretools/resources --mixin.config cosmere.mixins.json --mixin.config allomancy.mixins.json --mixin.config feruchemy.mixins.json --mixin.config hemalurgy.mixins.json --mixin.config surgebinding.mixins.json --mixin.config sandmastery.mixins.json --mixin.config aviar.mixins.json --mixin.config awakening.mixins.json --mixin.config aondor.mixins.json --mixin.config soulforgery.mixins.json --mixin.config cosmeretools.mixins.json", + "env": { + "MOD_CLASSES": "allomancy%%${workspaceFolder}/build/resources/allomancy:allomancy%%${workspaceFolder}/build/classes/java/allomancy:allomancy%%${workspaceFolder}/build/resources/datagenAllomancy:allomancy%%${workspaceFolder}/build/classes/java/datagenAllomancy:aondor%%${workspaceFolder}/build/resources/aondor:aondor%%${workspaceFolder}/build/classes/java/aondor:aondor%%${workspaceFolder}/build/resources/datagenAondor:aondor%%${workspaceFolder}/build/classes/java/datagenAondor:aviar%%${workspaceFolder}/build/resources/aviar:aviar%%${workspaceFolder}/build/classes/java/aviar:aviar%%${workspaceFolder}/build/resources/datagenAviar:aviar%%${workspaceFolder}/build/classes/java/datagenAviar:awakening%%${workspaceFolder}/build/resources/awakening:awakening%%${workspaceFolder}/build/classes/java/awakening:awakening%%${workspaceFolder}/build/resources/datagenAwakening:awakening%%${workspaceFolder}/build/classes/java/datagenAwakening:cosmere%%${workspaceFolder}/build/resources/main:cosmere%%${workspaceFolder}/build/classes/java/main:cosmere%%${workspaceFolder}/build/resources/api:cosmere%%${workspaceFolder}/build/classes/java/api:cosmere%%${workspaceFolder}/build/resources/datagenMain:cosmere%%${workspaceFolder}/build/classes/java/datagenMain:cosmeretools%%${workspaceFolder}/build/resources/cosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/cosmeretools:cosmeretools%%${workspaceFolder}/build/resources/datagenCosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/datagenCosmeretools:example%%${workspaceFolder}/build/resources/example:example%%${workspaceFolder}/build/classes/java/example:example%%${workspaceFolder}/build/resources/datagenExample:example%%${workspaceFolder}/build/classes/java/datagenExample:feruchemy%%${workspaceFolder}/build/resources/feruchemy:feruchemy%%${workspaceFolder}/build/classes/java/feruchemy:feruchemy%%${workspaceFolder}/build/resources/datagenFeruchemy:feruchemy%%${workspaceFolder}/build/classes/java/datagenFeruchemy:hemalurgy%%${workspaceFolder}/build/resources/hemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/hemalurgy:hemalurgy%%${workspaceFolder}/build/resources/datagenHemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/datagenHemalurgy:sandmastery%%${workspaceFolder}/build/resources/sandmastery:sandmastery%%${workspaceFolder}/build/classes/java/sandmastery:sandmastery%%${workspaceFolder}/build/resources/datagenSandmastery:sandmastery%%${workspaceFolder}/build/classes/java/datagenSandmastery:soulforgery%%${workspaceFolder}/build/resources/soulforgery:soulforgery%%${workspaceFolder}/build/classes/java/soulforgery:soulforgery%%${workspaceFolder}/build/resources/datagenSoulforgery:soulforgery%%${workspaceFolder}/build/classes/java/datagenSoulforgery:surgebinding%%${workspaceFolder}/build/resources/surgebinding:surgebinding%%${workspaceFolder}/build/classes/java/surgebinding:surgebinding%%${workspaceFolder}/build/resources/datagenSurgebinding:surgebinding%%${workspaceFolder}/build/classes/java/datagenSurgebinding", + "MCP_MAPPINGS": "parchment_2023.09.03-1.20.1", + "target": "fmluserdevdata" + }, + "preLaunchTask": "prepareRunDataCompile" + }, + { + "type": "java", + "name": "runGameTestServer", + "request": "launch", + "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher", + "projectName": "cosmere", + "cwd": "${workspaceFolder}/runGameTests", + "vmArgs": "-DlegacyClassPath.file\u003d/home/diceof20/Documents/GitHub/cosmere/build/classpath/runGameTestServer_minecraftClasspath.txt -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -Dnet.minecraftforge.gradle.GradleStart.srg.srg-mcp\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -DignoreList\u003dbootstraplauncher,securejarhandler,asm-commons,asm-util,asm-analysis,asm-tree,asm,JarJarFileSystems,client-extra,fmlcore,javafmllanguage,lowcodelanguage,mclanguage,forge- -DmergeModules\u003djna-5.10.0.jar,jna-platform-5.10.0.jar -Dforge.enabledGameTestNamespaces\u003dcosmere,allomancy,feruchemy,hemalurgy,surgebinding,sandmastery,cosmeretools -Djava.net.preferIPv6Addresses\u003dsystem -p /home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/bootstraplauncher/1.1.2/c546e00443d8432cda6baa1c860346980742628/bootstraplauncher-1.1.2.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/securejarhandler/2.1.10/51e6a22c6c716beb11e244bf5b8be480f51dd6b5/securejarhandler-2.1.10.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.7/e86dda4696d3c185fcc95d8d311904e7ce38a53f/asm-commons-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.7/c0655519f24d92af2202cb681cd7c1569df6ead6/asm-util-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.7/e4a258b7eb96107106c0599f0061cfc1832fe07a/asm-analysis-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.7/e446a17b175bfb733b87c5c2560ccb4e57d69f1a/asm-tree-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.7/73d7b3086e14beb604ced229c302feff6449723/asm-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/net.minecraftforge/JarJarFileSystems/0.3.19/2464eb7d6b9ddb9db36a82cf8a95193e5c6fe020/JarJarFileSystems-0.3.19.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar\u003dcpw.mods.securejarhandler --add-opens java.base/java.lang.invoke\u003dcpw.mods.securejarhandler --add-exports java.base/sun.security.util\u003dcpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns\u003djava.naming", + "args": "--launchTarget forgegametestserveruserdev --gameDir . --fml.forgeVersion 47.3.0 --fml.mcVersion 1.20.1 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20230612.114412 --mixin.config cosmere.mixins.json --mixin.config allomancy.mixins.json --mixin.config feruchemy.mixins.json --mixin.config hemalurgy.mixins.json --mixin.config surgebinding.mixins.json --mixin.config sandmastery.mixins.json --mixin.config aviar.mixins.json --mixin.config awakening.mixins.json --mixin.config aondor.mixins.json --mixin.config soulforgery.mixins.json --mixin.config cosmeretools.mixins.json", + "env": { + "MOD_CLASSES": "allomancy%%${workspaceFolder}/build/resources/allomancy:allomancy%%${workspaceFolder}/build/classes/java/allomancy:allomancy%%${workspaceFolder}/build/resources/gameTestAllomancy:allomancy%%${workspaceFolder}/build/classes/java/gameTestAllomancy:aondor%%${workspaceFolder}/build/resources/aondor:aondor%%${workspaceFolder}/build/classes/java/aondor:aondor%%${workspaceFolder}/build/resources/gameTestAondor:aondor%%${workspaceFolder}/build/classes/java/gameTestAondor:aviar%%${workspaceFolder}/build/resources/aviar:aviar%%${workspaceFolder}/build/classes/java/aviar:aviar%%${workspaceFolder}/build/resources/gameTestAviar:aviar%%${workspaceFolder}/build/classes/java/gameTestAviar:awakening%%${workspaceFolder}/build/resources/awakening:awakening%%${workspaceFolder}/build/classes/java/awakening:awakening%%${workspaceFolder}/build/resources/gameTestAwakening:awakening%%${workspaceFolder}/build/classes/java/gameTestAwakening:cosmere%%${workspaceFolder}/build/resources/main:cosmere%%${workspaceFolder}/build/classes/java/main:cosmere%%${workspaceFolder}/build/resources/api:cosmere%%${workspaceFolder}/build/classes/java/api:cosmere%%${workspaceFolder}/build/resources/gameTestMain:cosmere%%${workspaceFolder}/build/classes/java/gameTestMain:cosmeretools%%${workspaceFolder}/build/resources/cosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/cosmeretools:cosmeretools%%${workspaceFolder}/build/resources/gameTestCosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/gameTestCosmeretools:example%%${workspaceFolder}/build/resources/example:example%%${workspaceFolder}/build/classes/java/example:example%%${workspaceFolder}/build/resources/gameTestExample:example%%${workspaceFolder}/build/classes/java/gameTestExample:feruchemy%%${workspaceFolder}/build/resources/feruchemy:feruchemy%%${workspaceFolder}/build/classes/java/feruchemy:feruchemy%%${workspaceFolder}/build/resources/gameTestFeruchemy:feruchemy%%${workspaceFolder}/build/classes/java/gameTestFeruchemy:hemalurgy%%${workspaceFolder}/build/resources/hemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/hemalurgy:hemalurgy%%${workspaceFolder}/build/resources/gameTestHemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/gameTestHemalurgy:sandmastery%%${workspaceFolder}/build/resources/sandmastery:sandmastery%%${workspaceFolder}/build/classes/java/sandmastery:sandmastery%%${workspaceFolder}/build/resources/gameTestSandmastery:sandmastery%%${workspaceFolder}/build/classes/java/gameTestSandmastery:soulforgery%%${workspaceFolder}/build/resources/soulforgery:soulforgery%%${workspaceFolder}/build/classes/java/soulforgery:soulforgery%%${workspaceFolder}/build/resources/gameTestSoulforgery:soulforgery%%${workspaceFolder}/build/classes/java/gameTestSoulforgery:surgebinding%%${workspaceFolder}/build/resources/surgebinding:surgebinding%%${workspaceFolder}/build/classes/java/surgebinding:surgebinding%%${workspaceFolder}/build/resources/gameTestSurgebinding:surgebinding%%${workspaceFolder}/build/classes/java/gameTestSurgebinding", + "MCP_MAPPINGS": "parchment_2023.09.03-1.20.1" + }, + "preLaunchTask": "prepareRunGameTestServerCompile" + }, + { + "type": "java", + "name": "runServer", + "request": "launch", + "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher", + "projectName": "cosmere", + "cwd": "${workspaceFolder}/run", + "vmArgs": "-DlegacyClassPath.file\u003d/home/diceof20/Documents/GitHub/cosmere/build/classpath/runServer_minecraftClasspath.txt -Dmixin.env.remapRefMap\u003dtrue -Dmixin.env.refMapRemappingFile\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -Dnet.minecraftforge.gradle.GradleStart.srg.srg-mcp\u003d/home/diceof20/Documents/GitHub/cosmere/build/createSrgToMcp/output.srg -DignoreList\u003dbootstraplauncher,securejarhandler,asm-commons,asm-util,asm-analysis,asm-tree,asm,JarJarFileSystems,client-extra,fmlcore,javafmllanguage,lowcodelanguage,mclanguage,forge- -DmergeModules\u003djna-5.10.0.jar,jna-platform-5.10.0.jar -Dforge.enabledGameTestNamespaces\u003dcosmere,allomancy,feruchemy,hemalurgy,surgebinding,sandmastery,cosmeretools -Dforge.enableGameTest\u003dtrue -Djava.net.preferIPv6Addresses\u003dsystem -p /home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/bootstraplauncher/1.1.2/c546e00443d8432cda6baa1c860346980742628/bootstraplauncher-1.1.2.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/cpw.mods/securejarhandler/2.1.10/51e6a22c6c716beb11e244bf5b8be480f51dd6b5/securejarhandler-2.1.10.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-commons/9.7/e86dda4696d3c185fcc95d8d311904e7ce38a53f/asm-commons-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-util/9.7/c0655519f24d92af2202cb681cd7c1569df6ead6/asm-util-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-analysis/9.7/e4a258b7eb96107106c0599f0061cfc1832fe07a/asm-analysis-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm-tree/9.7/e446a17b175bfb733b87c5c2560ccb4e57d69f1a/asm-tree-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/org.ow2.asm/asm/9.7/73d7b3086e14beb604ced229c302feff6449723/asm-9.7.jar:/home/diceof20/.gradle/caches/modules-2/files-2.1/net.minecraftforge/JarJarFileSystems/0.3.19/2464eb7d6b9ddb9db36a82cf8a95193e5c6fe020/JarJarFileSystems-0.3.19.jar --add-modules ALL-MODULE-PATH --add-opens java.base/java.util.jar\u003dcpw.mods.securejarhandler --add-opens java.base/java.lang.invoke\u003dcpw.mods.securejarhandler --add-exports java.base/sun.security.util\u003dcpw.mods.securejarhandler --add-exports jdk.naming.dns/com.sun.jndi.dns\u003djava.naming", + "args": "--launchTarget forgeserveruserdev --gameDir . --fml.forgeVersion 47.3.0 --fml.mcVersion 1.20.1 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20230612.114412 --mixin.config cosmere.mixins.json --mixin.config allomancy.mixins.json --mixin.config feruchemy.mixins.json --mixin.config hemalurgy.mixins.json --mixin.config surgebinding.mixins.json --mixin.config sandmastery.mixins.json --mixin.config aviar.mixins.json --mixin.config awakening.mixins.json --mixin.config aondor.mixins.json --mixin.config soulforgery.mixins.json --mixin.config cosmeretools.mixins.json", + "env": { + "MOD_CLASSES": "allomancy%%${workspaceFolder}/build/resources/allomancy:allomancy%%${workspaceFolder}/build/classes/java/allomancy:allomancy%%${workspaceFolder}/build/resources/gameTestAllomancy:allomancy%%${workspaceFolder}/build/classes/java/gameTestAllomancy:aondor%%${workspaceFolder}/build/resources/aondor:aondor%%${workspaceFolder}/build/classes/java/aondor:aondor%%${workspaceFolder}/build/resources/gameTestAondor:aondor%%${workspaceFolder}/build/classes/java/gameTestAondor:aviar%%${workspaceFolder}/build/resources/aviar:aviar%%${workspaceFolder}/build/classes/java/aviar:aviar%%${workspaceFolder}/build/resources/gameTestAviar:aviar%%${workspaceFolder}/build/classes/java/gameTestAviar:awakening%%${workspaceFolder}/build/resources/awakening:awakening%%${workspaceFolder}/build/classes/java/awakening:awakening%%${workspaceFolder}/build/resources/gameTestAwakening:awakening%%${workspaceFolder}/build/classes/java/gameTestAwakening:cosmere%%${workspaceFolder}/build/resources/main:cosmere%%${workspaceFolder}/build/classes/java/main:cosmere%%${workspaceFolder}/build/resources/api:cosmere%%${workspaceFolder}/build/classes/java/api:cosmere%%${workspaceFolder}/build/resources/gameTestMain:cosmere%%${workspaceFolder}/build/classes/java/gameTestMain:cosmeretools%%${workspaceFolder}/build/resources/cosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/cosmeretools:cosmeretools%%${workspaceFolder}/build/resources/gameTestCosmeretools:cosmeretools%%${workspaceFolder}/build/classes/java/gameTestCosmeretools:example%%${workspaceFolder}/build/resources/example:example%%${workspaceFolder}/build/classes/java/example:example%%${workspaceFolder}/build/resources/gameTestExample:example%%${workspaceFolder}/build/classes/java/gameTestExample:feruchemy%%${workspaceFolder}/build/resources/feruchemy:feruchemy%%${workspaceFolder}/build/classes/java/feruchemy:feruchemy%%${workspaceFolder}/build/resources/gameTestFeruchemy:feruchemy%%${workspaceFolder}/build/classes/java/gameTestFeruchemy:hemalurgy%%${workspaceFolder}/build/resources/hemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/hemalurgy:hemalurgy%%${workspaceFolder}/build/resources/gameTestHemalurgy:hemalurgy%%${workspaceFolder}/build/classes/java/gameTestHemalurgy:sandmastery%%${workspaceFolder}/build/resources/sandmastery:sandmastery%%${workspaceFolder}/build/classes/java/sandmastery:sandmastery%%${workspaceFolder}/build/resources/gameTestSandmastery:sandmastery%%${workspaceFolder}/build/classes/java/gameTestSandmastery:soulforgery%%${workspaceFolder}/build/resources/soulforgery:soulforgery%%${workspaceFolder}/build/classes/java/soulforgery:soulforgery%%${workspaceFolder}/build/resources/gameTestSoulforgery:soulforgery%%${workspaceFolder}/build/classes/java/gameTestSoulforgery:surgebinding%%${workspaceFolder}/build/resources/surgebinding:surgebinding%%${workspaceFolder}/build/classes/java/surgebinding:surgebinding%%${workspaceFolder}/build/resources/gameTestSurgebinding:surgebinding%%${workspaceFolder}/build/classes/java/gameTestSurgebinding", + "MCP_MAPPINGS": "parchment_2023.09.03-1.20.1" + }, + "preLaunchTask": "prepareRunServerCompile" + } + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 000000000..5423194b2 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,37 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "prepareRunClientCompile", + "type": "shell", + "command": "./gradlew prepareRunClientCompile", + "options": { + "cwd": "${workspaceFolder}" + } + }, + { + "label": "prepareRunDataCompile", + "type": "shell", + "command": "./gradlew prepareRunDataCompile", + "options": { + "cwd": "${workspaceFolder}" + } + }, + { + "label": "prepareRunGameTestServerCompile", + "type": "shell", + "command": "./gradlew prepareRunGameTestServerCompile", + "options": { + "cwd": "${workspaceFolder}" + } + }, + { + "label": "prepareRunServerCompile", + "type": "shell", + "command": "./gradlew prepareRunServerCompile", + "options": { + "cwd": "${workspaceFolder}" + } + } + ] +} \ No newline at end of file diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index cd0b4feb6..d0fd93f57 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -13,6 +13,7 @@ import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; +import java.awt.print.Book; import java.util.ArrayList; import java.util.List; @@ -45,7 +46,8 @@ public static void collect(List categories, List categories, List categories, List categories, List categories, List categories, List Date: Fri, 11 Oct 2024 07:57:46 +1300 Subject: [PATCH 0927/1090] [Port] Curio spike icon colour matches other curio icons --- .../curios/textures/slot/spike_icon.png | Bin 2824 -> 2879 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/curios/textures/slot/spike_icon.png b/src/main/resources/assets/curios/textures/slot/spike_icon.png index 5a3fc65dd0ce3d6aba02796d0e388a40f7199a82..442e707bfd4dc46af2914593b14eff29fcca68f2 100644 GIT binary patch delta 2872 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 From 98a99c9bfb50a9e8c3a59cfff05e11f2373cccaf Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 11 Oct 2024 08:16:35 +1300 Subject: [PATCH 0928/1090] [Port] BaseDatapackRegistryProvider and implementation for CosmereDataGenerator. Adds damage types to data gen. Fixes #115 --- .../cosmere/BaseDatapackRegistryProvider.java | 82 +++++++++++++++++++ .../leaf/cosmere/CosmereDataGenerator.java | 2 + .../CosmereDatapackRegistryProvider.java | 36 ++++++++ 3 files changed, 120 insertions(+) create mode 100644 src/datagen/main/java/leaf/cosmere/BaseDatapackRegistryProvider.java create mode 100644 src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java diff --git a/src/datagen/main/java/leaf/cosmere/BaseDatapackRegistryProvider.java b/src/datagen/main/java/leaf/cosmere/BaseDatapackRegistryProvider.java new file mode 100644 index 000000000..8cb845b4b --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/BaseDatapackRegistryProvider.java @@ -0,0 +1,82 @@ +/* + * File updated ~ 11 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere; + +import it.unimi.dsi.fastutil.booleans.Boolean2ObjectFunction; +import net.minecraft.core.Holder.Reference; +import net.minecraft.core.HolderGetter; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.data.worldgen.BootstapContext; +import net.minecraft.resources.ResourceKey; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.placement.PlacedFeature; +import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider; +import net.minecraftforge.common.world.BiomeModifier; +import net.minecraftforge.common.world.StructureModifier; +import net.minecraftforge.registries.ForgeRegistries; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.CompletableFuture; + +public abstract class BaseDatapackRegistryProvider extends DatapackBuiltinEntriesProvider +{ + + private final String modid; + + protected BaseDatapackRegistryProvider(PackOutput output, CompletableFuture registries, RegistrySetBuilder registrySetBuilder, String modid) + { + super(output, registries, registrySetBuilder, Set.of(modid)); + this.modid = modid; + } + + @NotNull + @Override + public String getName() + { + return "Datapack registries: " + modid; + } + + protected static PlacedFeaturesHolder registerPlacedFeature(BootstapContext context, ResourceLocation name, + Boolean2ObjectFunction> placementModifiers) + { + HolderGetter> configuredFeatures = context.lookup(Registries.CONFIGURED_FEATURE); + Reference> configuredFeature = configuredFeatures.getOrThrow(configuredFeature(name)); + return new PlacedFeaturesHolder( + context.register(placedFeature(name), new PlacedFeature(configuredFeature, placementModifiers.get(false))) + ); + } + + protected static ResourceKey> configuredFeature(ResourceLocation name) + { + return ResourceKey.create(Registries.CONFIGURED_FEATURE, name); + } + + protected static ResourceKey placedFeature(ResourceLocation name) + { + return ResourceKey.create(Registries.PLACED_FEATURE, name); + } + + protected static ResourceKey biomeModifier(ResourceLocation name) + { + return ResourceKey.create(ForgeRegistries.Keys.BIOME_MODIFIERS, name); + } + + protected static ResourceKey structureModifier(ResourceLocation name) + { + return ResourceKey.create(ForgeRegistries.Keys.STRUCTURE_MODIFIERS, name); + } + + protected record PlacedFeaturesHolder(Reference feature) + { + + } +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java index 75fe48de8..77ca42002 100644 --- a/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java +++ b/src/datagen/main/java/leaf/cosmere/CosmereDataGenerator.java @@ -5,6 +5,7 @@ package leaf.cosmere; import leaf.cosmere.biome.BiomeTagsProvider; +import leaf.cosmere.biome.CosmereDatapackRegistryProvider; import leaf.cosmere.blocks.BlockModelsGen; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registry.BiomeRegistry; @@ -45,6 +46,7 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new PatchouliGen(packOutput)); + generator.addProvider(true, new CosmereDatapackRegistryProvider(packOutput, event.getLookupProvider())); generator.addProvider(true, new BiomeTagsProvider(packOutput, event.getLookupProvider(), existingFileHelper)); generator.addProvider(true, new CosmereTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); diff --git a/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java new file mode 100644 index 000000000..7d68c832f --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java @@ -0,0 +1,36 @@ +/* + * File updated ~ 11 - 10 - 2024 ~ Leaf + */ + +package leaf.cosmere.biome; + + +import leaf.cosmere.BaseDatapackRegistryProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.world.damagesource.DamageType; + +import java.util.concurrent.CompletableFuture; + +public class CosmereDatapackRegistryProvider extends BaseDatapackRegistryProvider +{ + public CosmereDatapackRegistryProvider(PackOutput output, CompletableFuture lookupProvider) + { + super(output, lookupProvider, BUILDER, Cosmere.MODID); + } + + + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + + .add(Registries.DAMAGE_TYPE, context -> + { + for (CosmereDamageTypesRegistry.CosmereDamageType damageType : CosmereDamageTypesRegistry.DAMAGE_TYPES.values()) + { + context.register(damageType.key(), new DamageType(damageType.getMsgId(), damageType.exhaustion())); + } + }); +} \ No newline at end of file From 667efd31dccabac604895f224474b7c719db6d06 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Fri, 11 Oct 2024 13:51:07 +0200 Subject: [PATCH 0929/1090] [Port] Fixed iron/steel line selection --- .../client/metalScanning/IronSteelLinesThread.java | 10 +++++----- .../allomancy/client/metalScanning/ScanResult.java | 2 ++ .../capabilities/AllomancySpiritwebSubmodule.java | 6 ++++-- .../common/manifestation/AllomancyIronSteel.java | 8 +++++++- src/api/java/leaf/cosmere/api/helpers/DrawHelper.java | 8 ++++---- 5 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index cd1fd50b3..ddb8a924a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -40,7 +40,7 @@ public class IronSteelLinesThread implements Runnable private static Thread t; private static final Lock lock = new ReentrantLock(); private static ScanResult scanResult = new ScanResult(); - private static Vec3i closestMetalObjectInLookVector; + private static Vec3 closestMetalObjectInLookVector; private final double tolerance = 1.8D; private static int scanRange = 0; private static boolean isStopping = false; @@ -113,15 +113,15 @@ public void setScanRange(int range) scanRange = range; } - public Vec3i getClosestMetalObject() + public Vec3 getClosestMetalObject() { if (closestMetalObjectInLookVector == null) { return null; } - // return copy - return new Vec3i(closestMetalObjectInLookVector.getX(), closestMetalObjectInLookVector.getY(), closestMetalObjectInLookVector.getZ()); + // return copy adjusted for center + return new Vec3(closestMetalObjectInLookVector.x(), closestMetalObjectInLookVector.y(), closestMetalObjectInLookVector.z()); } public void start() @@ -150,7 +150,7 @@ private void setScanResult(ScanResult result) private void setClosestMetalObject(Vec3 vector) { - closestMetalObjectInLookVector = toVec3i(vector); + closestMetalObjectInLookVector = vector; } private Vec3i toVec3i(Vec3 vector) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java index 37c5eaa4d..c5f811fc4 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java @@ -4,6 +4,8 @@ package leaf.cosmere.allomancy.client.metalScanning; +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.common.Cosmere; import net.minecraft.core.BlockPos; import net.minecraft.world.phys.Vec3; diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 82024090b..ffc1b9815 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -13,6 +13,7 @@ import leaf.cosmere.allomancy.common.manifestation.*; import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; @@ -21,6 +22,7 @@ import leaf.cosmere.api.helpers.PlayerHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.Cosmere; import net.minecraft.client.Minecraft; import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; @@ -234,7 +236,7 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event //todo - does this mean it's wrong on the first check? probably doesn't matter IronSteelLinesThread.getInstance().setScanRange(range); ScanResult scanResult = IronSteelLinesThread.getInstance().requestScanResult(); - Vec3i closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); + Vec3 closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); Vec3 originPoint = spiritweb.getLiving().getLightProbePosition(Minecraft.getInstance().getFrameTime()).add(0, -1, 0); @@ -249,7 +251,7 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event } if (AllomancyConfigs.CLIENT.drawMetalBoxes.get() && !scanResult.foundBlocks.isEmpty()) { - if (scanResult.hasTargetedCluster && scanResult.targetedCluster.getPosition().equals(closestMetalObject)) + if (scanResult.hasTargetedCluster) { DrawHelper.drawBlocksAtPoint(viewModelStack, Color.BLUE, scanResult.foundBlocks, closestMetalObject, scanResult.targetedCluster.getBlocks()); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index b095eeae4..9900aeec0 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -155,7 +155,13 @@ private void performEffectClient(ISpiritweb cap) boolean hitEntity = false; Entity entityHitResult = null; - Vec3i closestMetalObject = IronSteelLinesThread.getInstance().getClosestMetalObject(); + Vec3 closestMetalObjectVec3 = IronSteelLinesThread.getInstance().getClosestMetalObject(); + Vec3i closestMetalObject = null; + if (closestMetalObjectVec3 != null) + { + closestMetalObject = new Vec3i((int) closestMetalObjectVec3.x(), (int) closestMetalObjectVec3.y(), (int) closestMetalObjectVec3.z()); + } + if (closestMetalObject != null) { BlockState blockAtPos = level.getBlockState(new BlockPos(closestMetalObject)); diff --git a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java index b899b3481..cf833cc96 100644 --- a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java @@ -38,7 +38,7 @@ public class DrawHelper { //Draw our allomancy lines - public static void drawLinesFromPoint(PoseStack poseStack, Vec3 originPoint, float range, Color color, List lineEndPositions, Vec3i highlightVector) + public static void drawLinesFromPoint(PoseStack poseStack, Vec3 originPoint, float range, Color color, List lineEndPositions, Vec3 highlightVector) { poseStack.pushPose(); @@ -169,7 +169,7 @@ private static void squareTexVertex(VertexConsumer vertexConsumer, Matrix4f matr .endVertex(); } - public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, Vec3i highlightVector, ArrayList targetedClusterBlockList) + public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, Vec3 highlightVector, ArrayList targetedClusterBlockList) { poseStack.pushPose(); @@ -193,11 +193,11 @@ public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List Date: Fri, 11 Oct 2024 15:15:01 +0100 Subject: [PATCH 0930/1090] Allomancy complete and QCed --- .../patchouli/PatchouliAllomancyCategory.java | 80 +++++++++++++------ .../patchouli/PatchouliFeruchemyCategory.java | 2 +- .../3b2a435655541c92d690318b57013336949ed348 | 36 ++++----- .../allomancy/allomantic_aluminum.json | 12 ++- .../entries/allomancy/allomantic_atium.json | 6 +- .../allomancy/allomantic_bendalloy.json | 12 ++- .../entries/allomancy/allomantic_brass.json | 12 ++- .../entries/allomancy/allomantic_bronze.json | 14 +++- .../entries/allomancy/allomantic_cadmium.json | 12 ++- .../allomancy/allomantic_chromium.json | 12 ++- .../entries/allomancy/allomantic_copper.json | 12 ++- .../allomancy/allomantic_duralumin.json | 16 +++- .../allomancy/allomantic_electrum.json | 12 ++- .../entries/allomancy/allomantic_gold.json | 12 ++- .../entries/allomancy/allomantic_iron.json | 8 +- .../allomancy/allomantic_nicrosil.json | 12 ++- .../entries/allomancy/allomantic_pewter.json | 12 ++- .../entries/allomancy/allomantic_steel.json | 10 +++ .../entries/allomancy/allomantic_tin.json | 10 +++ .../entries/allomancy/allomantic_zinc.json | 12 ++- .../57823f1d1ffdc78dae2209031097364f4ed6372b | 3 + .../data/cosmere/damage_type/eat_metal.json | 5 ++ .../data/cosmere/damage_type/spiked.json | 5 ++ .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- 25 files changed, 270 insertions(+), 61 deletions(-) create mode 100644 src/datagen/generated/cosmere/.cache/57823f1d1ffdc78dae2209031097364f4ed6372b create mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/eat_metal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/damage_type/spiked.json diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index d0fd93f57..be283c407 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -13,7 +13,6 @@ import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; -import java.awt.print.Book; import java.util.ArrayList; import java.util.List; @@ -102,7 +101,30 @@ public static void collect(List categories, List categories, List categories, List categories, List categories, List categories, List Date: Wed, 16 Oct 2024 20:28:06 +0200 Subject: [PATCH 0931/1090] [Port] Fixed(?) iron and steel lines not accounting for resistance properly on Z and Y axes. Also I ran 'optimise imports' on the allomancy project, hence the other updates files --- .../metalScanning/IronSteelLinesThread.java | 21 ++++++++++++------- .../client/metalScanning/ScanResult.java | 4 +--- .../AllomancySpiritwebSubmodule.java | 3 --- .../common/manifestation/AllomancyPewter.java | 2 -- .../common/manifestation/AllomancyTin.java | 6 ++++-- .../common/manifestation/AllomancyZinc.java | 1 - .../leaf/cosmere/api/helpers/DrawHelper.java | 4 ++-- 7 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index ddb8a924a..a93ae4126 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -32,7 +32,8 @@ import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; -import static leaf.cosmere.allomancy.common.manifestation.AllomancyIronSteel.*; +import static leaf.cosmere.allomancy.common.manifestation.AllomancyIronSteel.containsMetal; +import static leaf.cosmere.allomancy.common.manifestation.AllomancyIronSteel.entityContainsMetal; public class IronSteelLinesThread implements Runnable { @@ -266,7 +267,9 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) { boolean isObscured; Vec3 currVec = player.getEyePosition(); - Vec3 endPos = new Vec3(blockPos.getX() + 0.5F, blockPos.getY() + 0.5F, blockPos.getZ() + 0.5F); + currVec = currVec.add(-0.75D, 0D, 0D); + Vec3 endPos = blockPos.getCenter(); + endPos = endPos.add(-0.75D, 0D, 0D); Vec3 endFloorVec = new Vec3(Math.floor(endPos.x), Math.floor(endPos.y), Math.floor(endPos.z)); double resistance = 0.0F; @@ -282,7 +285,7 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) break; } - Block currBlock = level.getBlockState(new BlockPos(toVec3i(currVec))).getBlock(); + Block currBlock = bState.getBlock(); if (bState.is(aluminumOre) || bState.is(aluminumStorage) @@ -312,7 +315,9 @@ private boolean isEntityObscured(Entity entity, Player player, Level level) try { Vec3 currVec = player.getEyePosition(); - Vec3 endPos = new Vec3(entity.getX(), entity.getY(), entity.getZ()); + currVec = currVec.add(-0.75D, 0D, 0D); + Vec3 endPos = entity.position(); + endPos = endPos.add(-0.75D, 0D, 0D); // linear interpolation to see if the entity is obscured by blocks int loopTimes = (int) Math.ceil(currVec.distanceTo(endPos)); @@ -363,17 +368,17 @@ private boolean isEntityObscured(Entity entity, Player player, Level level) private Vec3 compareVectors(BlockPos blockPos, Player player, Vec3 currentClosestMetalObject) { Vec3 lookVector = player.getLookAngle(); - Vec3 vectorToPos = new Vec3(blockPos.getX() + 0.5, blockPos.getY() + 0.5, blockPos.getZ() + 0.5).subtract(player.getEyePosition()); + Vec3 vectorToPos = blockPos.getCenter().subtract(player.getEyePosition()); Vec3 playerPos = player.getEyePosition(); vectorToPos = vectorToPos.normalize(); - double dynamicTolerance = tolerance / playerPos.distanceTo(new Vec3(blockPos.getX(), blockPos.getY(), blockPos.getZ())); + double dynamicTolerance = tolerance / playerPos.distanceTo(blockPos.getCenter()); if (vectorToPos.distanceTo(lookVector) < dynamicTolerance) { if (currentClosestMetalObject == null) { - return new Vec3(blockPos.getX(), blockPos.getY(), blockPos.getZ()); + return blockPos.getCenter(); } Vec3 currentVector = currentClosestMetalObject.subtract(player.getEyePosition()); @@ -385,7 +390,7 @@ private Vec3 compareVectors(BlockPos blockPos, Player player, Vec3 currentCloses } else { - return new Vec3(blockPos.getX(), blockPos.getY(), blockPos.getZ()); + return blockPos.getCenter(); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java index c5f811fc4..204b54409 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java @@ -4,8 +4,6 @@ package leaf.cosmere.allomancy.client.metalScanning; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.common.Cosmere; import net.minecraft.core.BlockPos; import net.minecraft.world.phys.Vec3; @@ -103,7 +101,7 @@ private boolean tryAddToCluster(final Map clusters, f if (root != null) { - if (new Vec3(pos.getX(), pos.getY(), pos.getZ()).equals(currentClosestMetalObject)) + if (pos.getCenter().equals(currentClosestMetalObject)) { targetedCluster = root; hasTargetedCluster = true; diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index ffc1b9815..69ef301b8 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -13,7 +13,6 @@ import leaf.cosmere.allomancy.common.manifestation.*; import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; -import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; @@ -22,9 +21,7 @@ import leaf.cosmere.api.helpers.PlayerHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.common.Cosmere; import net.minecraft.client.Minecraft; -import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java index 09bd99807..731d009ba 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java @@ -13,8 +13,6 @@ import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import net.minecraft.client.Minecraft; -import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingHurtEvent; diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java index d90b940ab..fe380fa45 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyTin.java @@ -13,7 +13,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.player.LocalPlayer; import net.minecraft.client.resources.sounds.SoundInstance; -import net.minecraft.core.particles.*; +import net.minecraft.core.particles.VibrationParticleOption; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; @@ -25,7 +25,9 @@ import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.sound.PlaySoundEvent; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Optional; public class AllomancyTin extends AllomancyManifestation { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java index 79349ba73..31f9ada0e 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java @@ -8,7 +8,6 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.network.packets.EntityAllomancyActivateMessage; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.api.helpers.PlayerHelper; diff --git a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java index cf833cc96..1d76f3f7e 100644 --- a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java @@ -62,7 +62,7 @@ public static void drawLinesFromPoint(PoseStack poseStack, Vec3 originPoint, flo if (highlightVector != null) { - if (new Vec3(endPos.x - 0.5, endPos.y - 0.5, endPos.z - 0.5).equals(highlightVector) || endPos.equals(highlightVector)) + if (endPos.equals(highlightVector)) { finalColor = Color.decode("#66b2ff"); } @@ -197,7 +197,7 @@ public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List Date: Sun, 3 Nov 2024 15:43:16 +0100 Subject: [PATCH 0932/1090] [Port] Fixed F-chromium not adding fortune on tap --- .../common/eventHandlers/FeruchemyEntityEventHandler.java | 2 +- .../data/feruchemy/loot_modifiers/fortune_bonus.json | 5 ----- .../resources/data/cosmere/loot_modifiers/fortune_bonus.json | 5 +++++ .../data/forge/loot_modifiers/global_loot_modifiers.json | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) delete mode 100644 src/feruchemy/resources/data/feruchemy/loot_modifiers/fortune_bonus.json create mode 100644 src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json rename src/{feruchemy => main}/resources/data/forge/loot_modifiers/global_loot_modifiers.json (58%) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 28e46cd0c..11970b6a4 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -113,7 +113,7 @@ public static void onLivingHurtEvent(LivingHurtEvent event) @SubscribeEvent(priority = EventPriority.LOWEST) - public void onBreakBlock(BlockEvent.BreakEvent evt) + public static void onBreakBlock(BlockEvent.BreakEvent evt) { Player player = evt.getPlayer(); diff --git a/src/feruchemy/resources/data/feruchemy/loot_modifiers/fortune_bonus.json b/src/feruchemy/resources/data/feruchemy/loot_modifiers/fortune_bonus.json deleted file mode 100644 index 2424c31e4..000000000 --- a/src/feruchemy/resources/data/feruchemy/loot_modifiers/fortune_bonus.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "feruchemy:fortune_bonus", - "conditions": [], - "function": "feruchemy:fortune_bonus" -} \ No newline at end of file diff --git a/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json b/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json new file mode 100644 index 000000000..c2052f742 --- /dev/null +++ b/src/main/resources/data/cosmere/loot_modifiers/fortune_bonus.json @@ -0,0 +1,5 @@ +{ + "type": "cosmere:fortune_bonus", + "conditions": [], + "function": "cosmere:fortune_bonus" +} \ No newline at end of file diff --git a/src/feruchemy/resources/data/forge/loot_modifiers/global_loot_modifiers.json b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json similarity index 58% rename from src/feruchemy/resources/data/forge/loot_modifiers/global_loot_modifiers.json rename to src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json index 90a1ffbf7..136769860 100644 --- a/src/feruchemy/resources/data/forge/loot_modifiers/global_loot_modifiers.json +++ b/src/main/resources/data/forge/loot_modifiers/global_loot_modifiers.json @@ -1,6 +1,6 @@ { "replace": false, "entries": [ - "feruchemy:fortune_bonus" + "cosmere:fortune_bonus" ] } From d6f08a427550198d5abae4d2e44a26c19c9cd8d4 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sun, 3 Nov 2024 20:05:11 +0100 Subject: [PATCH 0933/1090] [Port] Finally fixed oxidized copper not being pushable --- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 6 +- .../cosmere/tags/blocks/contains_metal.json | 30 +++++++- .../cosmere/tags/items/contains_metal.json | 30 +++++++- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 71 +++++++++++++++++++ 8 files changed, 140 insertions(+), 13 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 0c7b0044d..4571015fa 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,7 +1,7 @@ -// 1.20.1 2024-10-09T13:22:13.1297614 Tags: cosmere -22892348b7c9b1ae120b0d154815212882db2906 data/cosmere/tags/blocks/contains_metal.json +// 1.20.1 2024-11-03T19:40:11.1984442 Tags: cosmere +7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json 29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json -09dea08ab07afd676fd127be1ad67dd3fcb25f55 data/cosmere/tags/items/contains_metal.json +d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ores.json 2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json 8a55b8e8e7325d8a829173ccfc5afe9c8962ffcc data/forge/tags/blocks/ores/cadmium.json diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/blocks/contains_metal.json b/src/datagen/generated/cosmere/data/cosmere/tags/blocks/contains_metal.json index 1cefe817d..fd5bac057 100644 --- a/src/datagen/generated/cosmere/data/cosmere/tags/blocks/contains_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/tags/blocks/contains_metal.json @@ -32,6 +32,34 @@ "#forge:ores/lead", "#forge:storage_blocks/lead", "#forge:ores/silver", - "#forge:storage_blocks/silver" + "#forge:storage_blocks/silver", + "minecraft:exposed_copper", + "minecraft:exposed_cut_copper", + "minecraft:exposed_cut_copper_slab", + "minecraft:exposed_cut_copper_stairs", + "minecraft:waxed_exposed_copper", + "minecraft:waxed_exposed_cut_copper", + "minecraft:waxed_exposed_cut_copper_slab", + "minecraft:waxed_exposed_cut_copper_stairs", + "minecraft:weathered_copper", + "minecraft:weathered_cut_copper", + "minecraft:weathered_cut_copper_slab", + "minecraft:weathered_cut_copper_stairs", + "minecraft:waxed_weathered_copper", + "minecraft:waxed_weathered_cut_copper", + "minecraft:waxed_weathered_cut_copper_slab", + "minecraft:waxed_weathered_cut_copper_stairs", + "minecraft:oxidized_copper", + "minecraft:oxidized_cut_copper", + "minecraft:oxidized_cut_copper_slab", + "minecraft:oxidized_cut_copper_stairs", + "minecraft:waxed_oxidized_copper", + "minecraft:waxed_oxidized_cut_copper", + "minecraft:waxed_oxidized_cut_copper_slab", + "minecraft:waxed_oxidized_cut_copper_stairs", + "minecraft:waxed_copper_block", + "minecraft:waxed_cut_copper", + "minecraft:waxed_cut_copper_slab", + "minecraft:waxed_cut_copper_stairs" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/items/contains_metal.json b/src/datagen/generated/cosmere/data/cosmere/tags/items/contains_metal.json index d394fb123..7a6a3685d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/tags/items/contains_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/tags/items/contains_metal.json @@ -90,6 +90,34 @@ "#forge:raw_materials/silver", "#forge:nuggets/silver", "#forge:ingots/silver", - "#forge:storage_blocks/silver" + "#forge:storage_blocks/silver", + "minecraft:exposed_copper", + "minecraft:exposed_cut_copper", + "minecraft:exposed_cut_copper_slab", + "minecraft:exposed_cut_copper_stairs", + "minecraft:waxed_exposed_copper", + "minecraft:waxed_exposed_cut_copper", + "minecraft:waxed_exposed_cut_copper_slab", + "minecraft:waxed_exposed_cut_copper_stairs", + "minecraft:weathered_copper", + "minecraft:weathered_cut_copper", + "minecraft:weathered_cut_copper_slab", + "minecraft:weathered_cut_copper_stairs", + "minecraft:waxed_weathered_copper", + "minecraft:waxed_weathered_cut_copper", + "minecraft:waxed_weathered_cut_copper_slab", + "minecraft:waxed_weathered_cut_copper_stairs", + "minecraft:oxidized_copper", + "minecraft:oxidized_cut_copper", + "minecraft:oxidized_cut_copper_slab", + "minecraft:oxidized_cut_copper_stairs", + "minecraft:waxed_oxidized_copper", + "minecraft:waxed_oxidized_cut_copper", + "minecraft:waxed_oxidized_cut_copper_slab", + "minecraft:waxed_oxidized_cut_copper_stairs", + "minecraft:waxed_copper_block", + "minecraft:waxed_cut_copper", + "minecraft:waxed_cut_copper_slab", + "minecraft:waxed_cut_copper_stairs" ] } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 01a7f4cde..2c992ac8d 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2024-10-10T14:25:43.8624847 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2024-11-03T15:24:01.0450491 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 899d42591..2e3c78691 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2024-10-10T14:25:43.9125261 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2024-11-03T15:24:01.0985693 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 3507c091e..79b9cf9a7 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -24,7 +24,9 @@ import net.minecraft.world.entity.EntityType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; import net.minecraftforge.common.data.ExistingFileHelper; import org.jetbrains.annotations.Nullable; @@ -234,7 +236,76 @@ private void addContainsMetal() blockTagBuilder.add(storageBlockTag); } + addCopperBlockVariations(itemTagBuilder, blockTagBuilder); + //entities entityTagBuilder.add(EntityType.IRON_GOLEM); } + + private void addCopperBlockVariations(IntrinsicCosmereTagBuilder itemTagBuilder, IntrinsicCosmereTagBuilder blockTagBuilder) + { + itemTagBuilder.add(Items.EXPOSED_COPPER); + itemTagBuilder.add(Items.EXPOSED_CUT_COPPER); + itemTagBuilder.add(Items.EXPOSED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.EXPOSED_CUT_COPPER_STAIRS); + itemTagBuilder.add(Items.WAXED_EXPOSED_COPPER); + itemTagBuilder.add(Items.WAXED_EXPOSED_CUT_COPPER); + itemTagBuilder.add(Items.WAXED_EXPOSED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.WAXED_EXPOSED_CUT_COPPER_STAIRS); + + itemTagBuilder.add(Items.WEATHERED_COPPER); + itemTagBuilder.add(Items.WEATHERED_CUT_COPPER); + itemTagBuilder.add(Items.WEATHERED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.WEATHERED_CUT_COPPER_STAIRS); + itemTagBuilder.add(Items.WAXED_WEATHERED_COPPER); + itemTagBuilder.add(Items.WAXED_WEATHERED_CUT_COPPER); + itemTagBuilder.add(Items.WAXED_WEATHERED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.WAXED_WEATHERED_CUT_COPPER_STAIRS); + + itemTagBuilder.add(Items.OXIDIZED_COPPER); + itemTagBuilder.add(Items.OXIDIZED_CUT_COPPER); + itemTagBuilder.add(Items.OXIDIZED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.OXIDIZED_CUT_COPPER_STAIRS); + itemTagBuilder.add(Items.WAXED_OXIDIZED_COPPER); + itemTagBuilder.add(Items.WAXED_OXIDIZED_CUT_COPPER); + itemTagBuilder.add(Items.WAXED_OXIDIZED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.WAXED_OXIDIZED_CUT_COPPER_STAIRS); + + itemTagBuilder.add(Items.WAXED_COPPER_BLOCK); + itemTagBuilder.add(Items.WAXED_CUT_COPPER); + itemTagBuilder.add(Items.WAXED_CUT_COPPER_SLAB); + itemTagBuilder.add(Items.WAXED_CUT_COPPER_STAIRS); + + blockTagBuilder.add(Blocks.EXPOSED_COPPER); + blockTagBuilder.add(Blocks.EXPOSED_CUT_COPPER); + blockTagBuilder.add(Blocks.EXPOSED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.EXPOSED_CUT_COPPER_STAIRS); + blockTagBuilder.add(Blocks.WAXED_EXPOSED_COPPER); + blockTagBuilder.add(Blocks.WAXED_EXPOSED_CUT_COPPER); + blockTagBuilder.add(Blocks.WAXED_EXPOSED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.WAXED_EXPOSED_CUT_COPPER_STAIRS); + + blockTagBuilder.add(Blocks.WEATHERED_COPPER); + blockTagBuilder.add(Blocks.WEATHERED_CUT_COPPER); + blockTagBuilder.add(Blocks.WEATHERED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.WEATHERED_CUT_COPPER_STAIRS); + blockTagBuilder.add(Blocks.WAXED_WEATHERED_COPPER); + blockTagBuilder.add(Blocks.WAXED_WEATHERED_CUT_COPPER); + blockTagBuilder.add(Blocks.WAXED_WEATHERED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.WAXED_WEATHERED_CUT_COPPER_STAIRS); + + blockTagBuilder.add(Blocks.OXIDIZED_COPPER); + blockTagBuilder.add(Blocks.OXIDIZED_CUT_COPPER); + blockTagBuilder.add(Blocks.OXIDIZED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.OXIDIZED_CUT_COPPER_STAIRS); + blockTagBuilder.add(Blocks.WAXED_OXIDIZED_COPPER); + blockTagBuilder.add(Blocks.WAXED_OXIDIZED_CUT_COPPER); + blockTagBuilder.add(Blocks.WAXED_OXIDIZED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.WAXED_OXIDIZED_CUT_COPPER_STAIRS); + + blockTagBuilder.add(Blocks.WAXED_COPPER_BLOCK); + blockTagBuilder.add(Blocks.WAXED_CUT_COPPER); + blockTagBuilder.add(Blocks.WAXED_CUT_COPPER_SLAB); + blockTagBuilder.add(Blocks.WAXED_CUT_COPPER_STAIRS); + } } \ No newline at end of file From 751c03e8f5b6f29a65b951c2eb318daacc649682 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 4 Nov 2024 19:11:55 +0100 Subject: [PATCH 0934/1090] [Port] Removed cosmere:copper Also apparently CosmereTools had no recipes so I fixed that --- src/api/java/leaf/cosmere/api/Metals.java | 6 +- .../leaf/cosmere/tools/ToolsRecipeGen.java | 2 +- .../3b2a435655541c92d690318b57013336949ed348 | 2 +- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 17 +- .../44623903f0365d3c95d129c2cab3e32a7eda1dc7 | 4 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 3 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 3 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 10 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/blockstates/copper_block.json | 7 - .../cosmere/assets/cosmere/lang/en_us.json | 1 + .../cosmere/models/item/copper_block.json | 3 - .../cosmere/models/item/copper_ingot.json | 6 - .../loot_tables/blocks/copper_block.json | 22 - .../conversions/copper_block_deconstruct.json | 13 - .../forge/tags/blocks/storage_blocks.json | 1 - .../tags/blocks/storage_blocks/copper.json | 5 - .../cosmere/data/forge/tags/items/ingots.json | 1 - .../data/forge/tags/items/ingots/copper.json | 5 - .../data/forge/tags/items/nuggets.json | 1 - .../data/forge/tags/items/storage_blocks.json | 1 - .../tags/items/storage_blocks/copper.json | 5 - .../recipes/decorations/copper_ingot.json | 4 +- .../recipes/copper_ingot.json | 2 +- .../tags/blocks/beacon_base_blocks.json | 1 - .../tags/blocks/mineable/pickaxe.json | 1 - .../tags/blocks/needs_iron_tool.json | 1 - .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 398 +++++++++++++++++- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 2 +- .../e97825cad1b7db91061ba52571a61f8715113ce1 | 2 +- .../recipes/combat/aluminum_boots.json} | 12 +- .../recipes/combat/aluminum_chestplate.json | 33 ++ .../recipes/combat/aluminum_helmet.json | 33 ++ .../recipes/combat/aluminum_leggings.json | 33 ++ .../recipes/combat/aluminum_sword.json | 33 ++ .../recipes/combat/atium_boots.json | 33 ++ .../recipes/combat/atium_chestplate.json | 33 ++ .../recipes/combat/atium_helmet.json | 33 ++ .../recipes/combat/atium_leggings.json | 33 ++ .../recipes/combat/atium_sword.json | 33 ++ .../recipes/combat/bendalloy_boots.json | 33 ++ .../recipes/combat/bendalloy_chestplate.json | 33 ++ .../recipes/combat/bendalloy_helmet.json | 33 ++ .../recipes/combat/bendalloy_leggings.json | 33 ++ .../recipes/combat/bendalloy_sword.json | 33 ++ .../recipes/combat/brass_boots.json | 33 ++ .../recipes/combat/brass_chestplate.json | 33 ++ .../recipes/combat/brass_helmet.json | 33 ++ .../recipes/combat/brass_leggings.json | 33 ++ .../recipes/combat/brass_sword.json | 33 ++ .../recipes/combat/bronze_boots.json | 33 ++ .../recipes/combat/bronze_chestplate.json | 33 ++ .../recipes/combat/bronze_helmet.json | 33 ++ .../recipes/combat/bronze_leggings.json | 33 ++ .../recipes/combat/bronze_sword.json | 33 ++ .../recipes/combat/cadmium_boots.json | 33 ++ .../recipes/combat/cadmium_chestplate.json | 33 ++ .../recipes/combat/cadmium_helmet.json | 33 ++ .../recipes/combat/cadmium_leggings.json | 33 ++ .../recipes/combat/cadmium_sword.json | 33 ++ .../recipes/combat/chromium_boots.json | 33 ++ .../recipes/combat/chromium_chestplate.json | 33 ++ .../recipes/combat/chromium_helmet.json | 33 ++ .../recipes/combat/chromium_leggings.json | 33 ++ .../recipes/combat/chromium_sword.json | 33 ++ .../recipes/combat/copper_boots.json | 33 ++ .../recipes/combat/copper_chestplate.json | 33 ++ .../recipes/combat/copper_helmet.json | 33 ++ .../recipes/combat/copper_leggings.json | 33 ++ .../recipes/combat/copper_sword.json | 33 ++ .../recipes/combat/duralumin_boots.json | 33 ++ .../recipes/combat/duralumin_chestplate.json | 33 ++ .../recipes/combat/duralumin_helmet.json | 33 ++ .../recipes/combat/duralumin_leggings.json | 33 ++ .../recipes/combat/duralumin_sword.json | 33 ++ .../recipes/combat/electrum_boots.json | 33 ++ .../recipes/combat/electrum_chestplate.json | 33 ++ .../recipes/combat/electrum_helmet.json | 33 ++ .../recipes/combat/electrum_leggings.json | 33 ++ .../recipes/combat/electrum_sword.json | 33 ++ .../recipes/combat/harmonium_boots.json | 33 ++ .../recipes/combat/harmonium_chestplate.json | 33 ++ .../recipes/combat/harmonium_helmet.json | 33 ++ .../recipes/combat/harmonium_leggings.json | 33 ++ .../recipes/combat/harmonium_sword.json | 33 ++ .../recipes/combat/lead_boots.json | 33 ++ .../recipes/combat/lead_chestplate.json | 33 ++ .../recipes/combat/lead_helmet.json | 33 ++ .../recipes/combat/lead_leggings.json | 33 ++ .../recipes/combat/lead_sword.json | 33 ++ .../recipes/combat/lerasatium_boots.json | 33 ++ .../recipes/combat/lerasatium_chestplate.json | 33 ++ .../recipes/combat/lerasatium_helmet.json | 33 ++ .../recipes/combat/lerasatium_leggings.json | 33 ++ .../recipes/combat/lerasatium_sword.json | 33 ++ .../recipes/combat/lerasium_boots.json | 33 ++ .../recipes/combat/lerasium_chestplate.json | 33 ++ .../recipes/combat/lerasium_helmet.json | 33 ++ .../recipes/combat/lerasium_leggings.json | 33 ++ .../recipes/combat/lerasium_sword.json | 33 ++ .../recipes/combat/malatium_boots.json | 33 ++ .../recipes/combat/malatium_chestplate.json | 33 ++ .../recipes/combat/malatium_helmet.json | 33 ++ .../recipes/combat/malatium_leggings.json | 33 ++ .../recipes/combat/malatium_sword.json | 33 ++ .../recipes/combat/nickel_boots.json | 33 ++ .../recipes/combat/nickel_chestplate.json | 33 ++ .../recipes/combat/nickel_helmet.json | 33 ++ .../recipes/combat/nickel_leggings.json | 33 ++ .../recipes/combat/nickel_sword.json | 33 ++ .../recipes/combat/nicrosil_boots.json | 33 ++ .../recipes/combat/nicrosil_chestplate.json | 33 ++ .../recipes/combat/nicrosil_helmet.json | 33 ++ .../recipes/combat/nicrosil_leggings.json | 33 ++ .../recipes/combat/nicrosil_sword.json | 33 ++ .../recipes/combat/pewter_boots.json | 33 ++ .../recipes/combat/pewter_chestplate.json | 33 ++ .../recipes/combat/pewter_helmet.json | 33 ++ .../recipes/combat/pewter_leggings.json | 33 ++ .../recipes/combat/pewter_sword.json | 33 ++ .../recipes/combat/silver_boots.json | 33 ++ .../recipes/combat/silver_chestplate.json | 33 ++ .../recipes/combat/silver_helmet.json | 33 ++ .../recipes/combat/silver_leggings.json | 33 ++ .../recipes/combat/silver_sword.json | 33 ++ .../recipes/combat/steel_boots.json | 33 ++ .../recipes/combat/steel_chestplate.json | 33 ++ .../recipes/combat/steel_helmet.json | 33 ++ .../recipes/combat/steel_leggings.json | 33 ++ .../recipes/combat/steel_sword.json | 33 ++ .../recipes/combat/tin_boots.json | 33 ++ .../recipes/combat/tin_chestplate.json | 33 ++ .../recipes/combat/tin_helmet.json | 33 ++ .../recipes/combat/tin_leggings.json | 33 ++ .../recipes/combat/tin_sword.json | 33 ++ .../recipes/combat/zinc_boots.json | 33 ++ .../recipes/combat/zinc_chestplate.json | 33 ++ .../recipes/combat/zinc_helmet.json | 33 ++ .../recipes/combat/zinc_leggings.json | 33 ++ .../recipes/combat/zinc_sword.json | 33 ++ .../recipes/tools/aluminum_axe.json | 33 ++ .../recipes/tools/aluminum_hoe.json | 33 ++ .../recipes/tools/aluminum_pickaxe.json | 33 ++ .../recipes/tools/aluminum_shovel.json | 33 ++ .../advancements/recipes/tools/atium_axe.json | 33 ++ .../advancements/recipes/tools/atium_hoe.json | 33 ++ .../recipes/tools/atium_pickaxe.json | 33 ++ .../recipes/tools/atium_shovel.json | 33 ++ .../recipes/tools/bendalloy_axe.json | 33 ++ .../recipes/tools/bendalloy_hoe.json | 33 ++ .../recipes/tools/bendalloy_pickaxe.json | 33 ++ .../recipes/tools/bendalloy_shovel.json | 33 ++ .../advancements/recipes/tools/brass_axe.json | 33 ++ .../advancements/recipes/tools/brass_hoe.json | 33 ++ .../recipes/tools/brass_pickaxe.json | 33 ++ .../recipes/tools/brass_shovel.json | 33 ++ .../recipes/tools/bronze_axe.json | 33 ++ .../recipes/tools/bronze_hoe.json | 33 ++ .../recipes/tools/bronze_pickaxe.json | 33 ++ .../recipes/tools/bronze_shovel.json | 33 ++ .../recipes/tools/cadmium_axe.json | 33 ++ .../recipes/tools/cadmium_hoe.json | 33 ++ .../recipes/tools/cadmium_pickaxe.json | 33 ++ .../recipes/tools/cadmium_shovel.json | 33 ++ .../recipes/tools/chromium_axe.json | 33 ++ .../recipes/tools/chromium_hoe.json | 33 ++ .../recipes/tools/chromium_pickaxe.json | 33 ++ .../recipes/tools/chromium_shovel.json | 33 ++ .../recipes/tools/copper_axe.json} | 8 +- .../recipes/tools/copper_hoe.json | 33 ++ .../recipes/tools/copper_pickaxe.json | 33 ++ .../recipes/tools/copper_shovel.json | 33 ++ .../recipes/tools/duralumin_axe.json | 33 ++ .../recipes/tools/duralumin_hoe.json | 33 ++ .../recipes/tools/duralumin_pickaxe.json | 33 ++ .../recipes/tools/duralumin_shovel.json | 33 ++ .../recipes/tools/electrum_axe.json | 33 ++ .../recipes/tools/electrum_hoe.json | 33 ++ .../recipes/tools/electrum_pickaxe.json | 33 ++ .../recipes/tools/electrum_shovel.json | 33 ++ .../recipes/tools/harmonium_axe.json | 33 ++ .../recipes/tools/harmonium_hoe.json | 33 ++ .../recipes/tools/harmonium_pickaxe.json | 33 ++ .../recipes/tools/harmonium_shovel.json | 33 ++ .../advancements/recipes/tools/lead_axe.json | 33 ++ .../advancements/recipes/tools/lead_hoe.json | 33 ++ .../recipes/tools/lead_pickaxe.json | 33 ++ .../recipes/tools/lead_shovel.json | 33 ++ .../recipes/tools/lerasatium_axe.json | 33 ++ .../recipes/tools/lerasatium_hoe.json | 33 ++ .../recipes/tools/lerasatium_pickaxe.json | 33 ++ .../recipes/tools/lerasatium_shovel.json | 33 ++ .../recipes/tools/lerasium_axe.json | 33 ++ .../recipes/tools/lerasium_hoe.json | 33 ++ .../recipes/tools/lerasium_pickaxe.json | 33 ++ .../recipes/tools/lerasium_shovel.json | 33 ++ .../recipes/tools/malatium_axe.json | 33 ++ .../recipes/tools/malatium_hoe.json | 33 ++ .../recipes/tools/malatium_pickaxe.json | 33 ++ .../recipes/tools/malatium_shovel.json | 33 ++ .../recipes/tools/nickel_axe.json | 33 ++ .../recipes/tools/nickel_hoe.json | 33 ++ .../recipes/tools/nickel_pickaxe.json | 33 ++ .../recipes/tools/nickel_shovel.json | 33 ++ .../recipes/tools/nicrosil_axe.json | 33 ++ .../recipes/tools/nicrosil_hoe.json | 33 ++ .../recipes/tools/nicrosil_pickaxe.json | 33 ++ .../recipes/tools/nicrosil_shovel.json | 33 ++ .../recipes/tools/pewter_axe.json | 33 ++ .../recipes/tools/pewter_hoe.json | 33 ++ .../recipes/tools/pewter_pickaxe.json | 33 ++ .../recipes/tools/pewter_shovel.json | 33 ++ .../recipes/tools/silver_axe.json | 33 ++ .../recipes/tools/silver_hoe.json | 33 ++ .../recipes/tools/silver_pickaxe.json | 33 ++ .../recipes/tools/silver_shovel.json | 33 ++ .../advancements/recipes/tools/steel_axe.json | 33 ++ .../advancements/recipes/tools/steel_hoe.json | 33 ++ .../recipes/tools/steel_pickaxe.json | 33 ++ .../recipes/tools/steel_shovel.json | 33 ++ .../advancements/recipes/tools/tin_axe.json | 33 ++ .../advancements/recipes/tools/tin_hoe.json | 33 ++ .../recipes/tools/tin_pickaxe.json | 33 ++ .../recipes/tools/tin_shovel.json | 33 ++ .../advancements/recipes/tools/zinc_axe.json | 33 ++ .../advancements/recipes/tools/zinc_hoe.json | 33 ++ .../recipes/tools/zinc_pickaxe.json | 33 ++ .../recipes/tools/zinc_shovel.json | 33 ++ .../cosmeretools/recipes/aluminum_axe.json | 22 + .../cosmeretools/recipes/aluminum_boots.json | 18 + .../recipes/aluminum_chestplate.json | 19 + .../cosmeretools/recipes/aluminum_helmet.json | 18 + .../cosmeretools/recipes/aluminum_hoe.json | 22 + .../recipes/aluminum_leggings.json | 19 + .../recipes/aluminum_pickaxe.json | 22 + .../cosmeretools/recipes/aluminum_shovel.json | 22 + .../cosmeretools/recipes/aluminum_sword.json | 22 + .../data/cosmeretools/recipes/atium_axe.json | 22 + .../cosmeretools/recipes/atium_boots.json | 18 + .../recipes/atium_chestplate.json | 19 + .../cosmeretools/recipes/atium_helmet.json | 18 + .../data/cosmeretools/recipes/atium_hoe.json | 22 + .../cosmeretools/recipes/atium_leggings.json | 19 + .../cosmeretools/recipes/atium_pickaxe.json | 22 + .../cosmeretools/recipes/atium_shovel.json | 22 + .../cosmeretools/recipes/atium_sword.json | 22 + .../cosmeretools/recipes/bendalloy_axe.json | 22 + .../cosmeretools/recipes/bendalloy_boots.json | 18 + .../recipes/bendalloy_chestplate.json | 19 + .../recipes/bendalloy_helmet.json | 18 + .../cosmeretools/recipes/bendalloy_hoe.json | 22 + .../recipes/bendalloy_leggings.json | 19 + .../recipes/bendalloy_pickaxe.json | 22 + .../recipes/bendalloy_shovel.json | 22 + .../cosmeretools/recipes/bendalloy_sword.json | 22 + .../data/cosmeretools/recipes/brass_axe.json | 22 + .../cosmeretools/recipes/brass_boots.json | 18 + .../recipes/brass_chestplate.json | 19 + .../cosmeretools/recipes/brass_helmet.json | 18 + .../data/cosmeretools/recipes/brass_hoe.json | 22 + .../cosmeretools/recipes/brass_leggings.json | 19 + .../cosmeretools/recipes/brass_pickaxe.json | 22 + .../cosmeretools/recipes/brass_shovel.json | 22 + .../cosmeretools/recipes/brass_sword.json | 22 + .../data/cosmeretools/recipes/bronze_axe.json | 22 + .../cosmeretools/recipes/bronze_boots.json | 18 + .../recipes/bronze_chestplate.json | 19 + .../cosmeretools/recipes/bronze_helmet.json | 18 + .../data/cosmeretools/recipes/bronze_hoe.json | 22 + .../cosmeretools/recipes/bronze_leggings.json | 19 + .../cosmeretools/recipes/bronze_pickaxe.json | 22 + .../cosmeretools/recipes/bronze_shovel.json | 22 + .../cosmeretools/recipes/bronze_sword.json | 22 + .../cosmeretools/recipes/cadmium_axe.json | 22 + .../cosmeretools/recipes/cadmium_boots.json | 18 + .../recipes/cadmium_chestplate.json | 19 + .../cosmeretools/recipes/cadmium_helmet.json | 18 + .../cosmeretools/recipes/cadmium_hoe.json | 22 + .../recipes/cadmium_leggings.json | 19 + .../cosmeretools/recipes/cadmium_pickaxe.json | 22 + .../cosmeretools/recipes/cadmium_shovel.json | 22 + .../cosmeretools/recipes/cadmium_sword.json | 22 + .../cosmeretools/recipes/chromium_axe.json | 22 + .../cosmeretools/recipes/chromium_boots.json | 18 + .../recipes/chromium_chestplate.json | 19 + .../cosmeretools/recipes/chromium_helmet.json | 18 + .../cosmeretools/recipes/chromium_hoe.json | 22 + .../recipes/chromium_leggings.json | 19 + .../recipes/chromium_pickaxe.json | 22 + .../cosmeretools/recipes/chromium_shovel.json | 22 + .../cosmeretools/recipes/chromium_sword.json | 22 + .../data/cosmeretools/recipes/copper_axe.json | 22 + .../cosmeretools/recipes/copper_boots.json} | 15 +- .../recipes/copper_chestplate.json | 19 + .../cosmeretools/recipes/copper_helmet.json | 18 + .../data/cosmeretools/recipes/copper_hoe.json | 22 + .../cosmeretools/recipes/copper_leggings.json | 19 + .../cosmeretools/recipes/copper_pickaxe.json | 22 + .../cosmeretools/recipes/copper_shovel.json | 22 + .../cosmeretools/recipes/copper_sword.json | 22 + .../cosmeretools/recipes/duralumin_axe.json | 22 + .../cosmeretools/recipes/duralumin_boots.json | 18 + .../recipes/duralumin_chestplate.json | 19 + .../recipes/duralumin_helmet.json | 18 + .../cosmeretools/recipes/duralumin_hoe.json | 22 + .../recipes/duralumin_leggings.json | 19 + .../recipes/duralumin_pickaxe.json | 22 + .../recipes/duralumin_shovel.json | 22 + .../cosmeretools/recipes/duralumin_sword.json | 22 + .../cosmeretools/recipes/electrum_axe.json | 22 + .../cosmeretools/recipes/electrum_boots.json | 18 + .../recipes/electrum_chestplate.json | 19 + .../cosmeretools/recipes/electrum_helmet.json | 18 + .../cosmeretools/recipes/electrum_hoe.json | 22 + .../recipes/electrum_leggings.json | 19 + .../recipes/electrum_pickaxe.json | 22 + .../cosmeretools/recipes/electrum_shovel.json | 22 + .../cosmeretools/recipes/electrum_sword.json | 22 + .../cosmeretools/recipes/harmonium_axe.json | 22 + .../cosmeretools/recipes/harmonium_boots.json | 18 + .../recipes/harmonium_chestplate.json | 19 + .../recipes/harmonium_helmet.json | 18 + .../cosmeretools/recipes/harmonium_hoe.json | 22 + .../recipes/harmonium_leggings.json | 19 + .../recipes/harmonium_pickaxe.json | 22 + .../recipes/harmonium_shovel.json | 22 + .../cosmeretools/recipes/harmonium_sword.json | 22 + .../data/cosmeretools/recipes/lead_axe.json | 22 + .../data/cosmeretools/recipes/lead_boots.json | 18 + .../cosmeretools/recipes/lead_chestplate.json | 19 + .../cosmeretools/recipes/lead_helmet.json | 18 + .../data/cosmeretools/recipes/lead_hoe.json | 22 + .../cosmeretools/recipes/lead_leggings.json | 19 + .../cosmeretools/recipes/lead_pickaxe.json | 22 + .../cosmeretools/recipes/lead_shovel.json | 22 + .../data/cosmeretools/recipes/lead_sword.json | 22 + .../cosmeretools/recipes/lerasatium_axe.json | 22 + .../recipes/lerasatium_boots.json | 18 + .../recipes/lerasatium_chestplate.json | 19 + .../recipes/lerasatium_helmet.json | 18 + .../cosmeretools/recipes/lerasatium_hoe.json | 22 + .../recipes/lerasatium_leggings.json | 19 + .../recipes/lerasatium_pickaxe.json | 22 + .../recipes/lerasatium_shovel.json | 22 + .../recipes/lerasatium_sword.json | 22 + .../cosmeretools/recipes/lerasium_axe.json | 22 + .../cosmeretools/recipes/lerasium_boots.json | 18 + .../recipes/lerasium_chestplate.json | 19 + .../cosmeretools/recipes/lerasium_helmet.json | 18 + .../cosmeretools/recipes/lerasium_hoe.json | 22 + .../recipes/lerasium_leggings.json | 19 + .../recipes/lerasium_pickaxe.json | 22 + .../cosmeretools/recipes/lerasium_shovel.json | 22 + .../cosmeretools/recipes/lerasium_sword.json | 22 + .../cosmeretools/recipes/malatium_axe.json | 22 + .../cosmeretools/recipes/malatium_boots.json | 18 + .../recipes/malatium_chestplate.json | 19 + .../cosmeretools/recipes/malatium_helmet.json | 18 + .../cosmeretools/recipes/malatium_hoe.json | 22 + .../recipes/malatium_leggings.json | 19 + .../recipes/malatium_pickaxe.json | 22 + .../cosmeretools/recipes/malatium_shovel.json | 22 + .../cosmeretools/recipes/malatium_sword.json | 22 + .../data/cosmeretools/recipes/nickel_axe.json | 22 + .../cosmeretools/recipes/nickel_boots.json | 18 + .../recipes/nickel_chestplate.json | 19 + .../cosmeretools/recipes/nickel_helmet.json | 18 + .../data/cosmeretools/recipes/nickel_hoe.json | 22 + .../cosmeretools/recipes/nickel_leggings.json | 19 + .../cosmeretools/recipes/nickel_pickaxe.json | 22 + .../cosmeretools/recipes/nickel_shovel.json | 22 + .../cosmeretools/recipes/nickel_sword.json | 22 + .../cosmeretools/recipes/nicrosil_axe.json | 22 + .../cosmeretools/recipes/nicrosil_boots.json | 18 + .../recipes/nicrosil_chestplate.json | 19 + .../cosmeretools/recipes/nicrosil_helmet.json | 18 + .../cosmeretools/recipes/nicrosil_hoe.json | 22 + .../recipes/nicrosil_leggings.json | 19 + .../recipes/nicrosil_pickaxe.json | 22 + .../cosmeretools/recipes/nicrosil_shovel.json | 22 + .../cosmeretools/recipes/nicrosil_sword.json | 22 + .../data/cosmeretools/recipes/pewter_axe.json | 22 + .../cosmeretools/recipes/pewter_boots.json | 18 + .../recipes/pewter_chestplate.json | 19 + .../cosmeretools/recipes/pewter_helmet.json | 18 + .../data/cosmeretools/recipes/pewter_hoe.json | 22 + .../cosmeretools/recipes/pewter_leggings.json | 19 + .../cosmeretools/recipes/pewter_pickaxe.json | 22 + .../cosmeretools/recipes/pewter_shovel.json | 22 + .../cosmeretools/recipes/pewter_sword.json | 22 + .../data/cosmeretools/recipes/silver_axe.json | 22 + .../cosmeretools/recipes/silver_boots.json | 18 + .../recipes/silver_chestplate.json | 19 + .../cosmeretools/recipes/silver_helmet.json | 18 + .../data/cosmeretools/recipes/silver_hoe.json | 22 + .../cosmeretools/recipes/silver_leggings.json | 19 + .../cosmeretools/recipes/silver_pickaxe.json | 22 + .../cosmeretools/recipes/silver_shovel.json | 22 + .../cosmeretools/recipes/silver_sword.json | 22 + .../data/cosmeretools/recipes/steel_axe.json | 22 + .../cosmeretools/recipes/steel_boots.json | 18 + .../recipes/steel_chestplate.json | 19 + .../cosmeretools/recipes/steel_helmet.json | 18 + .../data/cosmeretools/recipes/steel_hoe.json | 22 + .../cosmeretools/recipes/steel_leggings.json | 19 + .../cosmeretools/recipes/steel_pickaxe.json | 22 + .../cosmeretools/recipes/steel_shovel.json | 22 + .../cosmeretools/recipes/steel_sword.json | 22 + .../data/cosmeretools/recipes/tin_axe.json | 22 + .../data/cosmeretools/recipes/tin_boots.json | 18 + .../cosmeretools/recipes/tin_chestplate.json | 19 + .../data/cosmeretools/recipes/tin_helmet.json | 18 + .../data/cosmeretools/recipes/tin_hoe.json | 22 + .../cosmeretools/recipes/tin_leggings.json | 19 + .../cosmeretools/recipes/tin_pickaxe.json | 22 + .../data/cosmeretools/recipes/tin_shovel.json | 22 + .../data/cosmeretools/recipes/tin_sword.json | 22 + .../data/cosmeretools/recipes/zinc_axe.json | 22 + .../data/cosmeretools/recipes/zinc_boots.json | 18 + .../cosmeretools/recipes/zinc_chestplate.json | 19 + .../cosmeretools/recipes/zinc_helmet.json | 18 + .../data/cosmeretools/recipes/zinc_hoe.json | 22 + .../cosmeretools/recipes/zinc_leggings.json | 19 + .../cosmeretools/recipes/zinc_pickaxe.json | 22 + .../cosmeretools/recipes/zinc_shovel.json | 22 + .../data/cosmeretools/recipes/zinc_sword.json | 22 + .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 3 +- .../loot_tables/blocks/copper_block.json | 22 - .../main/java/leaf/cosmere/EngLangGen.java | 12 +- .../main/java/leaf/cosmere/RecipeGen.java | 8 + .../leaf/cosmere/tag/CosmereTagProvider.java | 19 +- .../common/registry/BlocksRegistry.java | 2 +- .../common/registry/ItemsRegistry.java | 4 +- 433 files changed, 10971 insertions(+), 165 deletions(-) delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/blockstates/copper_block.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/copper_block.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/copper_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks/copper.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/ingots/copper.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks/copper.json rename src/datagen/generated/cosmere/data/{cosmere => minecraft}/advancements/recipes/decorations/copper_ingot.json (87%) rename src/datagen/generated/cosmere/data/{cosmere => minecraft}/recipes/copper_ingot.json (88%) rename src/datagen/generated/{cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json => cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_boots.json} (65%) create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_shovel.json rename src/datagen/generated/{cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json => cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_axe.json} (80%) create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_axe.json rename src/datagen/generated/{cosmere/data/cosmere/recipes/copper_block.json => cosmeretools/data/cosmeretools/recipes/copper_boots.json} (51%) create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_sword.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_axe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_boots.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_chestplate.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_helmet.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_hoe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_leggings.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_pickaxe.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_shovel.json create mode 100644 src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_sword.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 6e0202b08..1c1783876 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -60,7 +60,7 @@ public enum MetalType implements Tier, ArmorMaterial //Mental/Cognitive ZINC(4, 2, 276, 16f, 0.5f, 12), BRASS(5, 2, 142, 10f, 0f, 16),//alloy of zinc and copper 50/50 ? - COPPER(6, 2, 131, 9f, 2.0f, 32), + COPPER(6, 0, 0, 0, 0, 0),//ignore tier data BRONZE(7, 2, 400, 8f, 1.8f, 16),//alloy of copper and tin? 3/1 ? //Enhancement/spiritual @@ -300,14 +300,14 @@ public boolean isAlloy() } //Used for metals that exist in the base minecraft - //todo add copper in 1.18 + //note: copper can't be here, too many exceptions public boolean hasMaterialItem() { switch (this) { case IRON: case GOLD: - //case COPPER: + //case COPPER: return false; default: return true; diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java index 3360c1828..539eb4aba 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java @@ -38,7 +38,7 @@ protected void addRecipes(Consumer consumer) { if (!metalType.hasMaterialItem()) { - return; + continue; } addPickaxeRecipe(consumer, ToolsItems.METAL_PICKAXES.get(metalType), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType)); diff --git a/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 index ec83fbdb0..1985b4c23 100644 --- a/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/allomancy/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-10T11:39:07.5437521 PatchouliGeneration +// 1.20.1 2024-11-04T19:03:34.6831199 PatchouliGeneration 9a35dabf30aea20c86f3776639599f4c047a8992 assets/cosmere/patchouli_books/guide/en_us/categories/allomancy.json 34f94c3f6f0be01f4f1062c85d0b416f5f1046e8 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomancy_basics.json 08a74ce8a2609a4cd81c5245950f78146c8c64e6 assets/cosmere/patchouli_books/guide/en_us/entries/allomancy/allomantic_aluminum.json diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 4571015fa..5f3bffaef 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-03T19:40:11.1984442 Tags: cosmere +// 1.20.1 2024-11-04T18:26:44.0674115 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json 29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -11,7 +11,7 @@ b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ bf15df3859cfb24abdf9c50475ea436bb9527b90 data/forge/tags/blocks/ores/silver.json f6158edb21c3a84db0cab4708e1f0b053b84611c data/forge/tags/blocks/ores/tin.json a27c0172d736de07c8d51c7c2a4908565de80834 data/forge/tags/blocks/ores/zinc.json -b7d064e2151d5cd1e9b8defadc782f142ae240d8 data/forge/tags/blocks/storage_blocks.json +5ac052c5e6c3d60c719087891e3f2fa00220c040 data/forge/tags/blocks/storage_blocks.json 9079d45393bba22e2b2061d1f6eb588c46ee7346 data/forge/tags/blocks/storage_blocks/aluminum.json 8fe1f17a4eb16ada9285bedf30fb598edf113e5f data/forge/tags/blocks/storage_blocks/atium.json 1eccb19f0c1fe5f19a6bdeaa14037aa8e7eeb959 data/forge/tags/blocks/storage_blocks/bendalloy.json @@ -19,7 +19,6 @@ b7d064e2151d5cd1e9b8defadc782f142ae240d8 data/forge/tags/blocks/storage_blocks.j cb95af58ea489974ff1d66f2786c5ddfda52c789 data/forge/tags/blocks/storage_blocks/bronze.json 3d56499024b4a14434474e46d8f2b69192d46ee2 data/forge/tags/blocks/storage_blocks/cadmium.json 255ac6518c4487670978a4328e9863a36fee50d6 data/forge/tags/blocks/storage_blocks/chromium.json -224bfdd99d8cf23d363de895c7ff1a97583bb023 data/forge/tags/blocks/storage_blocks/copper.json b41a04c1f7f5a9ee2c8de45c3ebdc092c1b5b274 data/forge/tags/blocks/storage_blocks/duralumin.json 48a29eed7bc75b67c2c7545457c0e00f47268c5d data/forge/tags/blocks/storage_blocks/electrum.json 90317483f1fa9a4fcb4e76bef622ea503b7f44f8 data/forge/tags/blocks/storage_blocks/harmonium.json @@ -42,7 +41,7 @@ d3c6aea87270e6a14a81d073165dc4e68acc9368 data/forge/tags/items/dusts/electrum.js 6b3f41494cbfbe11ad847477d7b719f25b767d99 data/forge/tags/items/dusts/nicrosil.json 37fd2d6f6d310b25099a5e905249c0d008e4fbf4 data/forge/tags/items/dusts/pewter.json f225195803f1415a4b6ba68ff770bb67fa1e53d0 data/forge/tags/items/dusts/steel.json -ce3d99ae4d8fcf46777f84066491153ea80d97a9 data/forge/tags/items/ingots.json +3da8daa1bc9de8dbf391f92903bb6547b20de660 data/forge/tags/items/ingots.json 45b26fa18eddb33ca9cb55959717696bbf61f818 data/forge/tags/items/ingots/aluminum.json a722ca59d260a3b0affcd7aff582c8d562bb6962 data/forge/tags/items/ingots/atium.json 59cebf4da98b0a57a01d91e3180cee289595f0e0 data/forge/tags/items/ingots/bendalloy.json @@ -50,7 +49,6 @@ a722ca59d260a3b0affcd7aff582c8d562bb6962 data/forge/tags/items/ingots/atium.json 5e69bdc82871946f266ec4f246ea11337cd053b3 data/forge/tags/items/ingots/bronze.json c162b7f94f6ea2fc1a880e6c493424d1245ed683 data/forge/tags/items/ingots/cadmium.json 0ba50a99c9244dfd4ef980a4ba60a07438625846 data/forge/tags/items/ingots/chromium.json -4fc40de2f71167f6511fbe5d285a2feca298a76b data/forge/tags/items/ingots/copper.json 071137605127d406546f7980f4b7796d83774313 data/forge/tags/items/ingots/duralumin.json cb3df3e788ecfdbc6114f2ab380972c995b803ba data/forge/tags/items/ingots/electrum.json a117d096b41c112406043a446078d0916d7da6b3 data/forge/tags/items/ingots/harmonium.json @@ -96,7 +94,7 @@ a8ecda7d56fa1b838d47ed4d0c0423b85e8e81ce data/forge/tags/items/raw_materials/nic 8f973b03988ae06d72f224704e6c69c28b68861e data/forge/tags/items/raw_materials/silver.json 5399d4dc7d03dadbc0ff52718d2d1a53fcb27d0a data/forge/tags/items/raw_materials/tin.json ed48136c06f3a6a200f954e99ccef4dcece821b0 data/forge/tags/items/raw_materials/zinc.json -b7d064e2151d5cd1e9b8defadc782f142ae240d8 data/forge/tags/items/storage_blocks.json +5ac052c5e6c3d60c719087891e3f2fa00220c040 data/forge/tags/items/storage_blocks.json 9079d45393bba22e2b2061d1f6eb588c46ee7346 data/forge/tags/items/storage_blocks/aluminum.json 8fe1f17a4eb16ada9285bedf30fb598edf113e5f data/forge/tags/items/storage_blocks/atium.json 1eccb19f0c1fe5f19a6bdeaa14037aa8e7eeb959 data/forge/tags/items/storage_blocks/bendalloy.json @@ -104,7 +102,6 @@ b7d064e2151d5cd1e9b8defadc782f142ae240d8 data/forge/tags/items/storage_blocks.js cb95af58ea489974ff1d66f2786c5ddfda52c789 data/forge/tags/items/storage_blocks/bronze.json 3d56499024b4a14434474e46d8f2b69192d46ee2 data/forge/tags/items/storage_blocks/cadmium.json 255ac6518c4487670978a4328e9863a36fee50d6 data/forge/tags/items/storage_blocks/chromium.json -224bfdd99d8cf23d363de895c7ff1a97583bb023 data/forge/tags/items/storage_blocks/copper.json b41a04c1f7f5a9ee2c8de45c3ebdc092c1b5b274 data/forge/tags/items/storage_blocks/duralumin.json 48a29eed7bc75b67c2c7545457c0e00f47268c5d data/forge/tags/items/storage_blocks/electrum.json 90317483f1fa9a4fcb4e76bef622ea503b7f44f8 data/forge/tags/items/storage_blocks/harmonium.json @@ -119,10 +116,10 @@ b41a04c1f7f5a9ee2c8de45c3ebdc092c1b5b274 data/forge/tags/items/storage_blocks/du 111cd9089f8b7afe88830102207124d8648b7039 data/forge/tags/items/storage_blocks/steel.json ba66a11a92fb155d8de179f3a24e01ea3a763255 data/forge/tags/items/storage_blocks/tin.json 15f37fc42e91a2576f74d58e17e68ec24def1505 data/forge/tags/items/storage_blocks/zinc.json -b7d064e2151d5cd1e9b8defadc782f142ae240d8 data/minecraft/tags/blocks/beacon_base_blocks.json +5ac052c5e6c3d60c719087891e3f2fa00220c040 data/minecraft/tags/blocks/beacon_base_blocks.json d3a86f2ebc65cb1002d7b7bf25b64d7716ca748c data/minecraft/tags/blocks/mineable/axe.json -b1a303c42d404ef8fcce687b447a375205c62729 data/minecraft/tags/blocks/mineable/pickaxe.json -856989bd55316d86fc143d02386ba36eaa744d26 data/minecraft/tags/blocks/needs_iron_tool.json +aa1455f74d106d8636e039dcd11b9f364f603234 data/minecraft/tags/blocks/mineable/pickaxe.json +acc52727279f24a6209e4fd41825c55ebf8db795 data/minecraft/tags/blocks/needs_iron_tool.json a392c38fde2e886f438ad7289b3cdec3ad7875f6 data/minecraft/tags/blocks/needs_stone_tool.json 189ad22331d159102eee28a57ebe9bfee7ff8a46 data/minecraft/tags/game_events/vibrations.json 189ad22331d159102eee28a57ebe9bfee7ff8a46 data/minecraft/tags/game_events/warden_can_listen.json diff --git a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 index 50116eb7b..de84cb910 100644 --- a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 +++ b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.1407708 Block States: cosmere +// 1.20.1 2024-11-04T18:26:44.0754925 Block States: cosmere 83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/aluminum_block.json 9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/aluminum_ore.json 83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/atium_block.json @@ -9,7 +9,6 @@ 9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/cadmium_ore.json 83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/chromium_block.json 9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/chromium_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/copper_block.json 022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_aluminum_ore.json 022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_cadmium_ore.json 022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_chromium_ore.json @@ -52,7 +51,6 @@ c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/cadmium_bloc bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/cadmium_ore.json c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/chromium_block.json bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/chromium_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/copper_block.json a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_aluminum_ore.json a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_cadmium_ore.json a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_chromium_ore.json diff --git a/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index 3bca4af0a..f52588bce 100644 --- a/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/datagen/generated/cosmere/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.1357663 Loot Tables +// 1.20.1 2024-11-04T18:26:44.0719647 Loot Tables 1440a509cd4375633c42e39a73c393fac55bc5b5 data/cosmere/loot_tables/blocks/aluminum_block.json b11f02392d505e4d09ad5b4d2ae886a9d6ec9f23 data/cosmere/loot_tables/blocks/aluminum_ore.json cd731279bd267f94d0afd47ad08ae376ed5a9f88 data/cosmere/loot_tables/blocks/atium_block.json @@ -9,7 +9,6 @@ b23765f334dad8db8a5ee67557013adaaf56aa49 data/cosmere/loot_tables/blocks/cadmium 0bbacdb84127d0788045d6c0c95c73bf2246929c data/cosmere/loot_tables/blocks/cadmium_ore.json 158625ad82a7f3412e2d8fe8ba5865ac45ea632a data/cosmere/loot_tables/blocks/chromium_block.json 9c2ceb3734a131a37b3d8b7f09f933d0123b1746 data/cosmere/loot_tables/blocks/chromium_ore.json -68c5f9187043df0179e5f770d9bb9b5bb6d92489 data/cosmere/loot_tables/blocks/copper_block.json abb8e67ed41500f08a74b4eaf8712c217359973c data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json a67fb03d8402fcc8af36c5cc18de613ae80ec1b3 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json 3b98ebb6b759abc221bb03d1df0375efef0cb5a8 data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 13ad25caa..406ddd03c 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.1347657 Item Models: cosmere +// 1.20.1 2024-11-04T18:26:44.070954 Item Models: cosmere c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json @@ -16,7 +16,6 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/cadmium_ingo 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/cadmium_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/chromium_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/chromium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/copper_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/copper_nugget.json 8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/duralumin_blend.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/duralumin_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index f6edba5b1..c0653e228 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.1367673 Recipes +// 1.20.1 2024-11-04T18:26:44.0719647 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -13,8 +13,6 @@ dc040358290d35dfd6adfab76930f17d096aaa10 data/cosmere/advancements/recipes/decor 9912b201e66a6106bd6f29ad78ab4423d66c7988 data/cosmere/advancements/recipes/decorations/cadmium_ingot.json 38b683af77d34e6a427b7c2c04cc083b8b6c5d98 data/cosmere/advancements/recipes/decorations/chromium_block.json f65fbb945ce9617744bd8294cd8443de09d378fc data/cosmere/advancements/recipes/decorations/chromium_ingot.json -182da45fefe9e8d5b80bd17f9350394f016b2864 data/cosmere/advancements/recipes/decorations/copper_block.json -b10aaa33eb08332e15298e9a8e4ef37e130f561d data/cosmere/advancements/recipes/decorations/copper_ingot.json 490ae23bc04bc0a9207c34098c990677aff227fc data/cosmere/advancements/recipes/decorations/duralumin_block.json c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decorations/duralumin_ingot.json 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json @@ -106,7 +104,6 @@ b70611b765caed1df9458a40ea36b80d7e18f791 data/cosmere/advancements/recipes/misc/ edd649debcc61d9de30b18a9507a7fc3fdc37bd2 data/cosmere/advancements/recipes/misc/conversions/cadmium_item_deconstruct.json 5cc899f38e772555b5b4f4a7eaad8396ec981089 data/cosmere/advancements/recipes/misc/conversions/chromium_block_deconstruct.json ac26d2d5577a16c67e42c855a46c20c73f8b4aa8 data/cosmere/advancements/recipes/misc/conversions/chromium_item_deconstruct.json -b305c1b61f1f453d39d1f080280cb3f19f7f7462 data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json 96d06c0eb7c7b4104022e5adf20841b5244f92af data/cosmere/advancements/recipes/misc/conversions/copper_item_deconstruct.json 5e73ff7e74ba57b88043f66ed1a26affa3db9afc data/cosmere/advancements/recipes/misc/conversions/duralumin_block_deconstruct.json 760eb4df0dd4e40ce4673da1cb51c2c06503ea36 data/cosmere/advancements/recipes/misc/conversions/duralumin_item_deconstruct.json @@ -252,7 +249,6 @@ fa5a8654f1945037d77510f8ebbd8d8bc07cca3c data/cosmere/recipes/conversions/cadmiu c4f16c1dabbdf3deda2650b98f2272f448f4f01b data/cosmere/recipes/conversions/cadmium_item_deconstruct.json a0bf45a47386b68325b4e1984fd8626c5f87e309 data/cosmere/recipes/conversions/chromium_block_deconstruct.json 1b67ce39eb539a3e3f84a96159f1cf2602b25b5e data/cosmere/recipes/conversions/chromium_item_deconstruct.json -bf484944fcc3aae456ce7f1064fce34cd519eef8 data/cosmere/recipes/conversions/copper_block_deconstruct.json 0084357fac5c24594265f91687d85d3ef237a9f7 data/cosmere/recipes/conversions/copper_item_deconstruct.json 7f26451ae0f641c45a865a4c5427f4e23d8c0ab3 data/cosmere/recipes/conversions/duralumin_block_deconstruct.json ece851d4f1b9da48bee3133be5aba10f3d72ae8e data/cosmere/recipes/conversions/duralumin_item_deconstruct.json @@ -282,8 +278,6 @@ f5cfb9a18ba62978b92bff60dc506b147476367b data/cosmere/recipes/conversions/steel_ 1bb3b1c7751740d881003c713ab35b81a6f4c5a6 data/cosmere/recipes/conversions/tin_item_deconstruct.json c88dc59d28af370757edcceb5e2b7d7725bda629 data/cosmere/recipes/conversions/zinc_block_deconstruct.json cc80cff2c8c790e49086d36e267878fa952275c6 data/cosmere/recipes/conversions/zinc_item_deconstruct.json -b9f08f56cd3524a9ed31ca4d8b23d597c888f01a data/cosmere/recipes/copper_block.json -5534b6b338eb6f0b47858934a2d74fce8d776e19 data/cosmere/recipes/copper_ingot.json 40cc2403498dbf72ad1969d2a4fcce3b06629dc3 data/cosmere/recipes/duralumin_block.json ce0a4b09393b1ee9a95e2180d3e4d2ec22beb9a5 data/cosmere/recipes/duralumin_ingot.json d41c016a9203e5fa4698b8095cb13699cbce1b7d data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json @@ -353,3 +347,5 @@ c02ae4590e276c41986af6d3b3ba05ea62aa1016 data/cosmere/recipes/zinc_ingot_from_bl 65b6bb07fc78de141c264b93fe176dc8d50a8504 data/cosmere/recipes/zinc_ingot_from_smelting_deepslate_zinc_ore.json 62e4be71d4d5d4ba3cb893040ed76f411d15b1c8 data/cosmere/recipes/zinc_ingot_from_smelting_raw_zinc_ore.json ed93bd06609013926ddd3429d4c59bd1c266dc07 data/cosmere/recipes/zinc_ingot_from_smelting_zinc_ore.json +34477b0d5dfe800d16590e061fbf848f14e9f21e data/minecraft/advancements/recipes/decorations/copper_ingot.json +955a690412068c5a0e43351529c4cae3f0c4502a data/minecraft/recipes/copper_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 8f514280a..3679273fe 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.7223651 Languages: en_us -3bcf3fcc70f0bd9d02fa84df08210d8f17a3476d assets/cosmere/lang/en_us.json +// 1.20.1 2024-11-04T18:26:44.0754925 Languages: en_us +e0e015a4eee1cdefaa0f7cc2506cac51bc014241 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/copper_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/copper_block.json deleted file mode 100644 index cc4caa40d..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/copper_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "variants": { - "": { - "model": "cosmere:block/metal_block" - } - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index d7facdec4..4bd2a8673 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -67,6 +67,7 @@ "item.cosmere.cadmium_nugget": "Cadmium Nugget", "item.cosmere.chromium_ingot": "Chromium Ingot", "item.cosmere.chromium_nugget": "Chromium Nugget", + "item.cosmere.copper_block": "Copper Block", "item.cosmere.copper_ingot": "Copper Ingot", "item.cosmere.copper_nugget": "Copper Nugget", "item.cosmere.duralumin_blend": "Duralumin Blend", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_block.json deleted file mode 100644 index 2e23b3488..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "cosmere:block/metal_block" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_ingot.json deleted file mode 100644 index 5c9389bbb..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_ingot.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/metal_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json b/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json deleted file mode 100644 index 0ce593353..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/loot_tables/blocks/copper_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:copper_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/copper_block" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json deleted file mode 100644 index e74607195..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/copper_block_deconstruct.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "item": "cosmere:copper_block" - } - ], - "result": { - "count": 9, - "item": "cosmere:copper_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks.json b/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks.json index 9f711d05d..64451809c 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks.json +++ b/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks.json @@ -5,7 +5,6 @@ "#forge:storage_blocks/pewter", "#forge:storage_blocks/zinc", "#forge:storage_blocks/brass", - "#forge:storage_blocks/copper", "#forge:storage_blocks/bronze", "#forge:storage_blocks/aluminum", "#forge:storage_blocks/duralumin", diff --git a/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks/copper.json b/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks/copper.json deleted file mode 100644 index 665550ca3..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/blocks/storage_blocks/copper.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:copper_block" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/ingots.json b/src/datagen/generated/cosmere/data/forge/tags/items/ingots.json index 9195efd26..58b39cd64 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/ingots.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/ingots.json @@ -5,7 +5,6 @@ "#forge:ingots/pewter", "#forge:ingots/zinc", "#forge:ingots/brass", - "#forge:ingots/copper", "#forge:ingots/bronze", "#forge:ingots/aluminum", "#forge:ingots/duralumin", diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/ingots/copper.json b/src/datagen/generated/cosmere/data/forge/tags/items/ingots/copper.json deleted file mode 100644 index a12449945..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/ingots/copper.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:copper_ingot" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index 1863b2893..73595e362 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -5,7 +5,6 @@ "#forge:nuggets/pewter", "#forge:nuggets/zinc", "#forge:nuggets/brass", - "#forge:nuggets/copper", "#forge:nuggets/bronze", "#forge:nuggets/aluminum", "#forge:nuggets/duralumin", diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks.json b/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks.json index 9f711d05d..64451809c 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks.json @@ -5,7 +5,6 @@ "#forge:storage_blocks/pewter", "#forge:storage_blocks/zinc", "#forge:storage_blocks/brass", - "#forge:storage_blocks/copper", "#forge:storage_blocks/bronze", "#forge:storage_blocks/aluminum", "#forge:storage_blocks/duralumin", diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks/copper.json b/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks/copper.json deleted file mode 100644 index 665550ca3..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/storage_blocks/copper.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:copper_block" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json b/src/datagen/generated/cosmere/data/minecraft/advancements/recipes/decorations/copper_ingot.json similarity index 87% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json rename to src/datagen/generated/cosmere/data/minecraft/advancements/recipes/decorations/copper_ingot.json index 2f4fd5c32..4e1efc0c7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_ingot.json +++ b/src/datagen/generated/cosmere/data/minecraft/advancements/recipes/decorations/copper_ingot.json @@ -13,7 +13,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:copper_ingot" + "recipe": "minecraft:copper_ingot" }, "trigger": "minecraft:recipe_unlocked" } @@ -26,7 +26,7 @@ ], "rewards": { "recipes": [ - "cosmere:copper_ingot" + "minecraft:copper_ingot" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json b/src/datagen/generated/cosmere/data/minecraft/recipes/copper_ingot.json similarity index 88% rename from src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json rename to src/datagen/generated/cosmere/data/minecraft/recipes/copper_ingot.json index 542752d22..1d609fd18 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_ingot.json +++ b/src/datagen/generated/cosmere/data/minecraft/recipes/copper_ingot.json @@ -15,7 +15,7 @@ "III" ], "result": { - "item": "cosmere:copper_ingot" + "item": "minecraft:copper_ingot" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/beacon_base_blocks.json index 9f711d05d..64451809c 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/beacon_base_blocks.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/beacon_base_blocks.json @@ -5,7 +5,6 @@ "#forge:storage_blocks/pewter", "#forge:storage_blocks/zinc", "#forge:storage_blocks/brass", - "#forge:storage_blocks/copper", "#forge:storage_blocks/bronze", "#forge:storage_blocks/aluminum", "#forge:storage_blocks/duralumin", diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json index 056d99355..2c2f9d067 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -9,7 +9,6 @@ "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", - "cosmere:copper_block", "cosmere:bronze_block", "cosmere:aluminum_ore", "cosmere:deepslate_aluminum_ore", diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json index 4ac62a4a5..844ca09ea 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json @@ -7,7 +7,6 @@ "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", - "cosmere:copper_block", "cosmere:bronze_block", "cosmere:deepslate_aluminum_ore", "cosmere:aluminum_block", diff --git a/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 6c3abc369..ac4987808 100644 --- a/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmeretools/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1 +1,397 @@ -// 1.20.1 2024-10-09T13:22:13.2237503 Recipes +// 1.20.1 2024-11-04T19:09:38.4260348 Recipes +48956c54a7651ad4f7128120d765291c03b8b8b2 data/cosmeretools/advancements/recipes/combat/aluminum_boots.json +ac52d3bd0ffcf53003915d2dd4817b58d92aeff9 data/cosmeretools/advancements/recipes/combat/aluminum_chestplate.json +3afccfbd6ac6f578c0c14b8c68a17607bf9a019a data/cosmeretools/advancements/recipes/combat/aluminum_helmet.json +9318a9028041dd4a322374e48c7125cb5ef3fecd data/cosmeretools/advancements/recipes/combat/aluminum_leggings.json +9fcf755918a45f351a636767682c4f1c8731f6d6 data/cosmeretools/advancements/recipes/combat/aluminum_sword.json +309ff5adf7a1d4afeeb2fc8f970f45e6aa5510ad data/cosmeretools/advancements/recipes/combat/atium_boots.json +86ecaba4732446f83ab8a900f87e4fe18d766dc7 data/cosmeretools/advancements/recipes/combat/atium_chestplate.json +262f154d0e3bfc2e45111bf248cf71a45c60391e data/cosmeretools/advancements/recipes/combat/atium_helmet.json +f14b299119b3f5d7194992d8a2de239aff0037f7 data/cosmeretools/advancements/recipes/combat/atium_leggings.json +52313660c1b96304904814c112253db7a245ceeb data/cosmeretools/advancements/recipes/combat/atium_sword.json +3edee0a03c249674b421d3fb8e8deefd8bb78bbd data/cosmeretools/advancements/recipes/combat/bendalloy_boots.json +dcfd764c815e5a55636d5331f958d64381d3bc6b data/cosmeretools/advancements/recipes/combat/bendalloy_chestplate.json +e84a30fb66a0592732deaa506f3cfed2bece5b78 data/cosmeretools/advancements/recipes/combat/bendalloy_helmet.json +4cc636861e7db9fd14f60896866580e27711a70f data/cosmeretools/advancements/recipes/combat/bendalloy_leggings.json +10affdb5bcf1cf5dcc804eea660a75129f8e96ee data/cosmeretools/advancements/recipes/combat/bendalloy_sword.json +a0548da0d898387655258756068a855460d92075 data/cosmeretools/advancements/recipes/combat/brass_boots.json +76c96d0da9b9268932ad5dd2ccbb0b926e084404 data/cosmeretools/advancements/recipes/combat/brass_chestplate.json +f03dc0512d67f6b78ded094850ec718eeadafcca data/cosmeretools/advancements/recipes/combat/brass_helmet.json +b0d0d34b752a1afb5649310c41bac87fd20abd4f data/cosmeretools/advancements/recipes/combat/brass_leggings.json +71a2b3ad721ca215fcfe3e16489461c78f979fcc data/cosmeretools/advancements/recipes/combat/brass_sword.json +7fdcde3825c95c69f8f605f3ba26eec51faf83d1 data/cosmeretools/advancements/recipes/combat/bronze_boots.json +ebbd0d59b9e63dd367eb521c492e8a5c80eb3bf1 data/cosmeretools/advancements/recipes/combat/bronze_chestplate.json +056547e26036064035ac83dac599bc7acc1d0210 data/cosmeretools/advancements/recipes/combat/bronze_helmet.json +ebb1a83c0d94cdc7144d3f9175f55eb54d7775e5 data/cosmeretools/advancements/recipes/combat/bronze_leggings.json +8ac255825bde8aca80e2e5d4bbbf3ba6a6683728 data/cosmeretools/advancements/recipes/combat/bronze_sword.json +6541953d93ef5cf3f2568215720e4a8ba859e31c data/cosmeretools/advancements/recipes/combat/cadmium_boots.json +2473c6ba865d31c67c1c6b587a01c4bb5817909b data/cosmeretools/advancements/recipes/combat/cadmium_chestplate.json +dde257b42689baf6be1b51d97ffe8b85a49c26b9 data/cosmeretools/advancements/recipes/combat/cadmium_helmet.json +70234b098fee1572daa55c24194563f997b6fab2 data/cosmeretools/advancements/recipes/combat/cadmium_leggings.json +f0fbe4c6b66e80d5374b60d05ebcbd591ccb7c57 data/cosmeretools/advancements/recipes/combat/cadmium_sword.json +3b9fd6cc17a133dfb59e4d234e217575a9b5c5a1 data/cosmeretools/advancements/recipes/combat/chromium_boots.json +1abc133cd4770c03f40f92690d32b45372c21fad data/cosmeretools/advancements/recipes/combat/chromium_chestplate.json +1c6cad0c351727364dfdc8d00289501140439b75 data/cosmeretools/advancements/recipes/combat/chromium_helmet.json +3408d5fd9561737360ae4125ec2c2f17f0de67c9 data/cosmeretools/advancements/recipes/combat/chromium_leggings.json +7e69236db18de3fb4c633db40ecf19ee7c528c8f data/cosmeretools/advancements/recipes/combat/chromium_sword.json +7c5c9e0579b83973a96ab190ba2864a72a6e61cf data/cosmeretools/advancements/recipes/combat/copper_boots.json +608d6ea1b5e998ab36a9d4900951059fe4a6140f data/cosmeretools/advancements/recipes/combat/copper_chestplate.json +3ea787e22c972b35c43d71b370bbb39bb5112da0 data/cosmeretools/advancements/recipes/combat/copper_helmet.json +f1d6b1dc3b6197d080d865f696e9c356f5e1a717 data/cosmeretools/advancements/recipes/combat/copper_leggings.json +bc534732bc3a64374455d00b8a81092f35f1d653 data/cosmeretools/advancements/recipes/combat/copper_sword.json +def16d97d81b91f7ed99e2fe5a113a83d5ff6c32 data/cosmeretools/advancements/recipes/combat/duralumin_boots.json +e4a93be9b4adfc050462dd17a52d75004c753f0e data/cosmeretools/advancements/recipes/combat/duralumin_chestplate.json +59b2f8e54ffe6547e94aabfa3e710caf66a0e8f4 data/cosmeretools/advancements/recipes/combat/duralumin_helmet.json +70fd5ec4e5ad0796f33bcaad9d7ba0ec067769ed data/cosmeretools/advancements/recipes/combat/duralumin_leggings.json +d970dfc6d0a5c7a0815d88cda194dc3a1687a050 data/cosmeretools/advancements/recipes/combat/duralumin_sword.json +df1f94480d3919e519adc72d26991f580826be2e data/cosmeretools/advancements/recipes/combat/electrum_boots.json +a1480134ecb48a20503ffafa62a627372740d91b data/cosmeretools/advancements/recipes/combat/electrum_chestplate.json +ec7517351398abcb707afa2a7d34f7a7286bec6f data/cosmeretools/advancements/recipes/combat/electrum_helmet.json +9962f390abd53f8b49212137fbfaa2d31ded5229 data/cosmeretools/advancements/recipes/combat/electrum_leggings.json +c065b1bf3033681f5a06457f1516aa0b22f01f00 data/cosmeretools/advancements/recipes/combat/electrum_sword.json +16c27775db455f30abd59ca6b904f93dbd8f4227 data/cosmeretools/advancements/recipes/combat/harmonium_boots.json +9b5a4f72dd7b4497c7ed2d1105a4e67f0f2b65e5 data/cosmeretools/advancements/recipes/combat/harmonium_chestplate.json +d434ba2e7a292062e7c93f0ab4a17edec1a7f383 data/cosmeretools/advancements/recipes/combat/harmonium_helmet.json +a6ee5899d24e18adcf007f4159d880cc86e068ab data/cosmeretools/advancements/recipes/combat/harmonium_leggings.json +43fae46ccdfc59cabf58ed61c229bfcec28165f0 data/cosmeretools/advancements/recipes/combat/harmonium_sword.json +a9b721eeb0a80d226eb3525f1702dc97c11930e9 data/cosmeretools/advancements/recipes/combat/lead_boots.json +450fa1670050f9da31d0d427d6bc522a3c180339 data/cosmeretools/advancements/recipes/combat/lead_chestplate.json +05f92cf238731dbed0de8203fc69e9b220d21a53 data/cosmeretools/advancements/recipes/combat/lead_helmet.json +cb6b0e5a4145b220426cf01b197f7b8006483cf4 data/cosmeretools/advancements/recipes/combat/lead_leggings.json +db2be6585769b681071a54a339ac3c0555bb0186 data/cosmeretools/advancements/recipes/combat/lead_sword.json +c0e7cb2be85121d785b85148ca3926350bcbe992 data/cosmeretools/advancements/recipes/combat/lerasatium_boots.json +a8c1f44a6eadb9baa813d7616236df84b0624f08 data/cosmeretools/advancements/recipes/combat/lerasatium_chestplate.json +3c0fc8db83e074e7b4e086422f1c04cad193fbc3 data/cosmeretools/advancements/recipes/combat/lerasatium_helmet.json +0963bcc97657207fbc9649c7fe129a0737de8fa8 data/cosmeretools/advancements/recipes/combat/lerasatium_leggings.json +7b62a7b2def0a781116bb96046fa402d00c956cf data/cosmeretools/advancements/recipes/combat/lerasatium_sword.json +9ecdd35240016275b879712ee29d9ed01e0aa559 data/cosmeretools/advancements/recipes/combat/lerasium_boots.json +4719fa3e84785d9cbddf7db8844b0143001f9dbb data/cosmeretools/advancements/recipes/combat/lerasium_chestplate.json +d55e098728d2e2bf806a0f0002887546a73d1bbd data/cosmeretools/advancements/recipes/combat/lerasium_helmet.json +ff1bfa945190a7a5ffc5619d61e5843eee9d9922 data/cosmeretools/advancements/recipes/combat/lerasium_leggings.json +4f2fe4e8618a3380b5f41cad4a966aa1924be594 data/cosmeretools/advancements/recipes/combat/lerasium_sword.json +ed18f266a1f591bcab83b35aaae47d9608e741b4 data/cosmeretools/advancements/recipes/combat/malatium_boots.json +255ae7d0ccf7f781024173eca7bd3ddbfbc7a693 data/cosmeretools/advancements/recipes/combat/malatium_chestplate.json +d40985dd39fe8901c16e34eb9a9aee1decccc76e data/cosmeretools/advancements/recipes/combat/malatium_helmet.json +c95b698fc71af587cdf55f6428a812fe856dced1 data/cosmeretools/advancements/recipes/combat/malatium_leggings.json +bd63d44f264181013f92a0ae4e6df75f95034b5e data/cosmeretools/advancements/recipes/combat/malatium_sword.json +4148204261e3c7091ee7c04544174920c726bc68 data/cosmeretools/advancements/recipes/combat/nickel_boots.json +24219668c78217c52458a9a2809a65f57c2901f6 data/cosmeretools/advancements/recipes/combat/nickel_chestplate.json +b6e8579d0778faa0c406600826e69e8f576585ec data/cosmeretools/advancements/recipes/combat/nickel_helmet.json +7873bbfaea68d8341ad0694dda3d07e36a064d08 data/cosmeretools/advancements/recipes/combat/nickel_leggings.json +c074a4cff0db6ddd798d88c4bef162cf3a43e6cd data/cosmeretools/advancements/recipes/combat/nickel_sword.json +8caa8a2dd022a161d8bcdd6e2bf4cbb051288764 data/cosmeretools/advancements/recipes/combat/nicrosil_boots.json +6cfeee7d7a688828ee5af8cb6788ca824f5c638e data/cosmeretools/advancements/recipes/combat/nicrosil_chestplate.json +8a6af33e5bc01b96a737276ba54842cce62479a5 data/cosmeretools/advancements/recipes/combat/nicrosil_helmet.json +5d8360aea78d0451196403b17bf7de65f96b357f data/cosmeretools/advancements/recipes/combat/nicrosil_leggings.json +c4629ab8906ddb2a7669d0680f720f7b66768ae5 data/cosmeretools/advancements/recipes/combat/nicrosil_sword.json +b392f1fee87ee43a06cacccfd916dc61ee86b148 data/cosmeretools/advancements/recipes/combat/pewter_boots.json +e7e78db28f47168c1a257282c08db7ced6168e83 data/cosmeretools/advancements/recipes/combat/pewter_chestplate.json +487dbfcb60754ad2ddd2ad6e98e5b80f483c9178 data/cosmeretools/advancements/recipes/combat/pewter_helmet.json +9aa3bd63d11ea600959c8b01cd22175305bcc4f7 data/cosmeretools/advancements/recipes/combat/pewter_leggings.json +741bd727514219c0c00cb5d868d8df64f9f9e6e5 data/cosmeretools/advancements/recipes/combat/pewter_sword.json +7fe170142578e159514124ccfcb5352047220f2b data/cosmeretools/advancements/recipes/combat/silver_boots.json +18ad476b66ee52a89f5f8ddc8d2762fd674b0d9f data/cosmeretools/advancements/recipes/combat/silver_chestplate.json +889d0cab75f16c122abaed5ad3f2d6a34c417875 data/cosmeretools/advancements/recipes/combat/silver_helmet.json +75f9adc51c36f3524ccb06e5157813e6e98635ed data/cosmeretools/advancements/recipes/combat/silver_leggings.json +8f4376ca199c8197e06b9dc000723c598e451dd3 data/cosmeretools/advancements/recipes/combat/silver_sword.json +3a8370ab08ae5bf13dffe8f6346346f0b44f522b data/cosmeretools/advancements/recipes/combat/steel_boots.json +cede3b6d42942643621f099fe684f8fa5c4ea8d9 data/cosmeretools/advancements/recipes/combat/steel_chestplate.json +44eb74f181db3400c407b1263e4c9bbcecedd8a3 data/cosmeretools/advancements/recipes/combat/steel_helmet.json +38f778ca84710c1f6d306cd81589a4f4424f1842 data/cosmeretools/advancements/recipes/combat/steel_leggings.json +c61c21afe4e37bd7e2469749837dd13cc5226f37 data/cosmeretools/advancements/recipes/combat/steel_sword.json +0da202c26825d0ea01b123d3c4da0e183f822263 data/cosmeretools/advancements/recipes/combat/tin_boots.json +eb011beba87f6bf040a10a93c3d569fad864dacd data/cosmeretools/advancements/recipes/combat/tin_chestplate.json +478857608925865d961b8a5c750ec6ad1c4a151b data/cosmeretools/advancements/recipes/combat/tin_helmet.json +2cb226598a644bf86a8cdc0d77346c68ab35c5d4 data/cosmeretools/advancements/recipes/combat/tin_leggings.json +5f3e84cc33972074ec05f6aaec6b7c6ebeea95d8 data/cosmeretools/advancements/recipes/combat/tin_sword.json +1db663b83dcd262e84b9e715521ffad581a82d2e data/cosmeretools/advancements/recipes/combat/zinc_boots.json +b7258c3a91def720340326321fecd6bdbdaffd8f data/cosmeretools/advancements/recipes/combat/zinc_chestplate.json +4d34d9b6f670bce2fa1e3159c21d0611d31f4725 data/cosmeretools/advancements/recipes/combat/zinc_helmet.json +fed7e1e94af3176994e7577f369168ddb147f11c data/cosmeretools/advancements/recipes/combat/zinc_leggings.json +cdd71a60b736f771f8c4788cd650e9850863c721 data/cosmeretools/advancements/recipes/combat/zinc_sword.json +3813560d591b48afdb5e7998452b5b14f2ff0249 data/cosmeretools/advancements/recipes/tools/aluminum_axe.json +22266c8d6afc826028abd3095bb386debf829e1e data/cosmeretools/advancements/recipes/tools/aluminum_hoe.json +b886b56ad4081302895c61eda9baea846d6010fa data/cosmeretools/advancements/recipes/tools/aluminum_pickaxe.json +8836abba73b0bd5f8868ff4674263ea0dd9cefca data/cosmeretools/advancements/recipes/tools/aluminum_shovel.json +5fef967690d673d4d40ccc5169ca38ac38fca7a7 data/cosmeretools/advancements/recipes/tools/atium_axe.json +010ce0782c0345d8d75d14000e369ccd4f036dfc data/cosmeretools/advancements/recipes/tools/atium_hoe.json +84cc6cedacd533ff2c12255c5a7c32036b9a74c7 data/cosmeretools/advancements/recipes/tools/atium_pickaxe.json +e3969a05d7401caa935bf282893a10946ed906da data/cosmeretools/advancements/recipes/tools/atium_shovel.json +8efdfa75bb4ee7f784dc0f45b5a36b5c40edd1af data/cosmeretools/advancements/recipes/tools/bendalloy_axe.json +ad924cc814c4de50b23876879883bc2c590cc782 data/cosmeretools/advancements/recipes/tools/bendalloy_hoe.json +0b06891d9525523cc1aa7ba5ac04955e70bed9ad data/cosmeretools/advancements/recipes/tools/bendalloy_pickaxe.json +aa4f2c552d5083e82f0f6a1b74eb6192c31e6910 data/cosmeretools/advancements/recipes/tools/bendalloy_shovel.json +43b4f65a92ff1b1635b812749b52a9850687fef6 data/cosmeretools/advancements/recipes/tools/brass_axe.json +13fc3da4170ad34836f95fdd48c82096baf8ac00 data/cosmeretools/advancements/recipes/tools/brass_hoe.json +85550ea5e191708aaae48e181672bfc6f39ef87f data/cosmeretools/advancements/recipes/tools/brass_pickaxe.json +52e53ae1a8ec1d8046c1cd2cbb2f546792b81bc3 data/cosmeretools/advancements/recipes/tools/brass_shovel.json +dd27ad54f30a12b78bc5bffc369a0bf3656187fd data/cosmeretools/advancements/recipes/tools/bronze_axe.json +3f09f73b6508d0f042ea41625e42b46084d8d3e1 data/cosmeretools/advancements/recipes/tools/bronze_hoe.json +328f0e6e3885535fe1d8c4b374e320b9e3490abb data/cosmeretools/advancements/recipes/tools/bronze_pickaxe.json +c5bd17b359be4f24d592365189b8f7a3b0b9a233 data/cosmeretools/advancements/recipes/tools/bronze_shovel.json +8e27c8a5988dc848adfe351273ed553538730073 data/cosmeretools/advancements/recipes/tools/cadmium_axe.json +14da56003d75ef838c65046d9e0aba5aec525d1f data/cosmeretools/advancements/recipes/tools/cadmium_hoe.json +0bc85a00a5beea7e0b9b288c9bfec08c3ef3db08 data/cosmeretools/advancements/recipes/tools/cadmium_pickaxe.json +b8a33743094833817ebf325de3f24b3abe373a7e data/cosmeretools/advancements/recipes/tools/cadmium_shovel.json +647d6764eb426a074efb983708683b52bdb79abb data/cosmeretools/advancements/recipes/tools/chromium_axe.json +1e4df181c317be8ce0e5aed7e008fee2b5599446 data/cosmeretools/advancements/recipes/tools/chromium_hoe.json +ef067b24ebf525fb01b49d63d825f39458a1fb5f data/cosmeretools/advancements/recipes/tools/chromium_pickaxe.json +d442716b38e62c1ec338a9e588004eec69115b44 data/cosmeretools/advancements/recipes/tools/chromium_shovel.json +c50db3ee76d50860c5d8ec6e5b31bf73d870f973 data/cosmeretools/advancements/recipes/tools/copper_axe.json +5a2d5806a7dc4360bbcd34455ef80a4a3581396e data/cosmeretools/advancements/recipes/tools/copper_hoe.json +b6f7f44210018da0283babf0c965c3e4ef665d4a data/cosmeretools/advancements/recipes/tools/copper_pickaxe.json +1cf8e847989530c478280f9b7e8a29159ddd9dc0 data/cosmeretools/advancements/recipes/tools/copper_shovel.json +04340175a28d6f37ddb5bb0cae60d188ee5e3460 data/cosmeretools/advancements/recipes/tools/duralumin_axe.json +31c2d5e85e892d693a1b8b7fb3c5eaa656c756c0 data/cosmeretools/advancements/recipes/tools/duralumin_hoe.json +afd1980c3f15c45f3e56af0d06e0af901ab3292c data/cosmeretools/advancements/recipes/tools/duralumin_pickaxe.json +e48ff4ee5d743a99597c79ef8e93d981bde792d8 data/cosmeretools/advancements/recipes/tools/duralumin_shovel.json +915e93f879f5dd8ec76391a5fb4fe116032fe839 data/cosmeretools/advancements/recipes/tools/electrum_axe.json +d4d666fa9d3d6614405906cef7b38324ccaa6860 data/cosmeretools/advancements/recipes/tools/electrum_hoe.json +063416ec0f66c8ad4c354e56cc1fd5f02593fa2f data/cosmeretools/advancements/recipes/tools/electrum_pickaxe.json +14ea9d01be102ae7112b3fc728df0cb7e4672b3d data/cosmeretools/advancements/recipes/tools/electrum_shovel.json +fef32b29f04c5800755454ec30a45e238f36c611 data/cosmeretools/advancements/recipes/tools/harmonium_axe.json +9e2743fbd67ffcc5072f8f4feef948a3f9853fa5 data/cosmeretools/advancements/recipes/tools/harmonium_hoe.json +8e0ae6a582e5fe64e400721a867843384d0ca9f0 data/cosmeretools/advancements/recipes/tools/harmonium_pickaxe.json +816b03124169575d2cad91e58691605354f72cd0 data/cosmeretools/advancements/recipes/tools/harmonium_shovel.json +114438f35f4a7300e2e9db8f82267d14c92defaf data/cosmeretools/advancements/recipes/tools/lead_axe.json +e2aed32fbf9260817f7026bf0060dd610a6076e1 data/cosmeretools/advancements/recipes/tools/lead_hoe.json +5154c658d8f523c25d99c3a2a7413ef333debbcd data/cosmeretools/advancements/recipes/tools/lead_pickaxe.json +d1684a1464778fb2953e04db8d0ae721a3ee6f14 data/cosmeretools/advancements/recipes/tools/lead_shovel.json +a806d89a7bc9f8653ec06bf6ac4034a9817a0cfa data/cosmeretools/advancements/recipes/tools/lerasatium_axe.json +fefdd4cdfd8ac57db995952da3bd3645be75d472 data/cosmeretools/advancements/recipes/tools/lerasatium_hoe.json +df66f72c4140f4ef14a0f48a5bf6d4f0b438f528 data/cosmeretools/advancements/recipes/tools/lerasatium_pickaxe.json +a2a9446db2848c6a173009b7e6d167a04d783377 data/cosmeretools/advancements/recipes/tools/lerasatium_shovel.json +88b32af379212490c86e8ee5c16fb5a4532a2489 data/cosmeretools/advancements/recipes/tools/lerasium_axe.json +5f1d566aed6e984ca84d2066148f31629ab20a81 data/cosmeretools/advancements/recipes/tools/lerasium_hoe.json +010ddacb74d6a340d62951ec7a9d2b3475e87d0f data/cosmeretools/advancements/recipes/tools/lerasium_pickaxe.json +3f4a1f9f91735f79cf78124f077819bc36cade81 data/cosmeretools/advancements/recipes/tools/lerasium_shovel.json +191a66963ea2d86cdc3beec1db25bad37c18e0bf data/cosmeretools/advancements/recipes/tools/malatium_axe.json +8951332eee92f048bb87f20ac02c831badbe012e data/cosmeretools/advancements/recipes/tools/malatium_hoe.json +5a26a35401a5fedf6cb6b623d5fde354ebe3da92 data/cosmeretools/advancements/recipes/tools/malatium_pickaxe.json +0ae15256401c68c8ad422c4ad253d78863739125 data/cosmeretools/advancements/recipes/tools/malatium_shovel.json +793ef5866c2ecece2a052da0f73dbdfc8e211862 data/cosmeretools/advancements/recipes/tools/nickel_axe.json +5bdf3394a4ac5bc725d654693423a31c52926301 data/cosmeretools/advancements/recipes/tools/nickel_hoe.json +0844a7259771c6adfe6af36e8e7b7879e644169e data/cosmeretools/advancements/recipes/tools/nickel_pickaxe.json +ac2da7e3bb5248e180f62344841533869f1a73e0 data/cosmeretools/advancements/recipes/tools/nickel_shovel.json +42b0ae93ef961fd811c21b17d870b8dbace730d0 data/cosmeretools/advancements/recipes/tools/nicrosil_axe.json +7d091d08ae2e9ae5177b2a83d1422e0a06306dde data/cosmeretools/advancements/recipes/tools/nicrosil_hoe.json +c1b682927fea6f4643f8a95bdc050b283b0be51d data/cosmeretools/advancements/recipes/tools/nicrosil_pickaxe.json +51ae3f27b9ebe6ba399d137db7766fc41728c744 data/cosmeretools/advancements/recipes/tools/nicrosil_shovel.json +057871969ad6fcbc669cf2890cb04dd98192aa11 data/cosmeretools/advancements/recipes/tools/pewter_axe.json +955bce05592d4d0f6b022b84b8d00bc749ea13ef data/cosmeretools/advancements/recipes/tools/pewter_hoe.json +3b98a5fdb780cc8b77781faa018e004694c5c104 data/cosmeretools/advancements/recipes/tools/pewter_pickaxe.json +7502b4ce223404264710cdb0b901abb046714279 data/cosmeretools/advancements/recipes/tools/pewter_shovel.json +393173aa101f1d9b01a8fa24255a329a450b8632 data/cosmeretools/advancements/recipes/tools/silver_axe.json +f3a6da9ebfbf21fbaf78149ce411648dff9a9fb9 data/cosmeretools/advancements/recipes/tools/silver_hoe.json +e1c95d34ff9360c9c5413cfbe8352c3d8cbd2a1a data/cosmeretools/advancements/recipes/tools/silver_pickaxe.json +16a6d28f7d918b98a651d10e2f09968fba1923aa data/cosmeretools/advancements/recipes/tools/silver_shovel.json +deb12153e1beffc304d2283ab247ae674806e45c data/cosmeretools/advancements/recipes/tools/steel_axe.json +d6b983590c35a270b3805a3cad8ded4f60fb67f4 data/cosmeretools/advancements/recipes/tools/steel_hoe.json +fd5e156a08336c76aaca10b1b9dc57cddfa4397c data/cosmeretools/advancements/recipes/tools/steel_pickaxe.json +9668e5dd3d9232a6c4632a949be94f2e98691606 data/cosmeretools/advancements/recipes/tools/steel_shovel.json +877bfdb440f37c78b1b49aa82a473544480a0ddb data/cosmeretools/advancements/recipes/tools/tin_axe.json +7c0b885ecc9b786faebe4d75130377e525b9b5bd data/cosmeretools/advancements/recipes/tools/tin_hoe.json +e0dc0cbcb3afb43246a282fbc758c51c049af8e9 data/cosmeretools/advancements/recipes/tools/tin_pickaxe.json +ede3e0e9c0ff7a750d0193207cf4d3e28e9a93e8 data/cosmeretools/advancements/recipes/tools/tin_shovel.json +373995c9f1dfe667f803a23ad9fbedc99ae9bc2e data/cosmeretools/advancements/recipes/tools/zinc_axe.json +b83f81a95a504b5f5e4374589e1d9e77dbcbb23a data/cosmeretools/advancements/recipes/tools/zinc_hoe.json +ffcb9d49ac29359eb8fa4710b770b02f4026c1d9 data/cosmeretools/advancements/recipes/tools/zinc_pickaxe.json +9bb4d3d031d514f30fd065143c5497198f27dccf data/cosmeretools/advancements/recipes/tools/zinc_shovel.json +8d3030d4a55342f03ee45e54ba4a5ccbb06032be data/cosmeretools/recipes/aluminum_axe.json +47f443bc2e6cdd5636c4dadf98132148dce9d2b0 data/cosmeretools/recipes/aluminum_boots.json +7deadb39e590f1bbd56b6f2a3649610d06e053cd data/cosmeretools/recipes/aluminum_chestplate.json +3b00b0811438b6837a4b33b1707aacc28ccfb510 data/cosmeretools/recipes/aluminum_helmet.json +923583df69d1f090af76c53e9be0e64feb814548 data/cosmeretools/recipes/aluminum_hoe.json +13ac84f0d72c5e3ec7332876fc47e3882cd3f1b0 data/cosmeretools/recipes/aluminum_leggings.json +c071cbd8d1f0e1a42ceb0c61bedc455f64d11a26 data/cosmeretools/recipes/aluminum_pickaxe.json +a4e26d02a69bb8f2a044b895766b812e01cabfff data/cosmeretools/recipes/aluminum_shovel.json +72b75ccd2d142614d9316072755351e06ff1fca2 data/cosmeretools/recipes/aluminum_sword.json +e2ca5eaf36b085b2211ebb03660b2a830a168aea data/cosmeretools/recipes/atium_axe.json +db6ace334f8d5caf242b2c9444da6ef5986322c8 data/cosmeretools/recipes/atium_boots.json +3ac4d634ef4917b8017bee06c9fb412aee5d7b2e data/cosmeretools/recipes/atium_chestplate.json +2647fc8b2adff4962068c56e4294e4723b2b0367 data/cosmeretools/recipes/atium_helmet.json +3ed6977f2f5b6c8979bb4a4e722525552c56f197 data/cosmeretools/recipes/atium_hoe.json +d5c698264c603933d769e85ca33bd2f26e88d028 data/cosmeretools/recipes/atium_leggings.json +c6666f9f7aa170d2000119db52ccf6b08f6abba9 data/cosmeretools/recipes/atium_pickaxe.json +83098c63e082a9771be2b39e006b76f2e4e56b32 data/cosmeretools/recipes/atium_shovel.json +e395a2a15c5f7bff11c1f31bc397341f37f1a1d1 data/cosmeretools/recipes/atium_sword.json +9c0d0873f34d504b554b0c7bce40d08af22e74cc data/cosmeretools/recipes/bendalloy_axe.json +de1ee988c8136e46dca81cc359da70c644eb0ff0 data/cosmeretools/recipes/bendalloy_boots.json +f0564e0b761d98bc73475f0d0b2eb3a17bfdce78 data/cosmeretools/recipes/bendalloy_chestplate.json +85fe89eaac6006257b1ae0135be61ffe4c78215c data/cosmeretools/recipes/bendalloy_helmet.json +aad3241a3c46a9ed08bee9b5bcef49150ff9a2b0 data/cosmeretools/recipes/bendalloy_hoe.json +18e10b820795eaa51447b0f0b94df010fc36c57e data/cosmeretools/recipes/bendalloy_leggings.json +3f9b68d50407fde961fa85ac2b41e9fc5aad3ea5 data/cosmeretools/recipes/bendalloy_pickaxe.json +d4f9d28930b42635205cdd1d8799e3210254e4d2 data/cosmeretools/recipes/bendalloy_shovel.json +9c107df552d4321d96e2db47afe388eda463b316 data/cosmeretools/recipes/bendalloy_sword.json +5a1a64934a21cfe6d039c4e0ece709a03476e0af data/cosmeretools/recipes/brass_axe.json +84d9d496ecd3a117afef8b46ff0b341ca8839369 data/cosmeretools/recipes/brass_boots.json +6eef0f37ffc5f7d928d98466eeff2a53d6a90352 data/cosmeretools/recipes/brass_chestplate.json +db5d8303ae68eaa0d5fd745cd604ed1b41b4bae4 data/cosmeretools/recipes/brass_helmet.json +2a206e7ad5aaa3bc6fc05e67959e65b87301bfe9 data/cosmeretools/recipes/brass_hoe.json +16a08e5add98715ac560ca2f3169f5f468438774 data/cosmeretools/recipes/brass_leggings.json +8d9413d96ea6bd91ae0439afa01b24d47770d912 data/cosmeretools/recipes/brass_pickaxe.json +1c525aef9efb19ef53eb26dec230fdb41822d3de data/cosmeretools/recipes/brass_shovel.json +f8c2ba918ff5ea713ed9b189386e341b466dd89a data/cosmeretools/recipes/brass_sword.json +0c54db9c45674757848f25b6ec15451813f7117a data/cosmeretools/recipes/bronze_axe.json +803d23ac219323e955bda2f33b9c4747811759d1 data/cosmeretools/recipes/bronze_boots.json +b5268f2430a92cf6bb888b53009e52961c994f14 data/cosmeretools/recipes/bronze_chestplate.json +28e6c2212ce64abc6b59f575b84c2a30e08d9adb data/cosmeretools/recipes/bronze_helmet.json +1711da29ae70321439ea3791b31fced9eb7cc3bb data/cosmeretools/recipes/bronze_hoe.json +b3b71645a1c673c58136dae3cf9cabb219e6ba3a data/cosmeretools/recipes/bronze_leggings.json +0264780f73efe51a40d26a5cc5c967ccf9f1f01a data/cosmeretools/recipes/bronze_pickaxe.json +071893a21eba818f329080d3be58704e4892a1d7 data/cosmeretools/recipes/bronze_shovel.json +a00a0b39dba7010b5ee03bdc1b48e257286ac6b3 data/cosmeretools/recipes/bronze_sword.json +dabc8292a19198cf53fd87fa2c0e6abdf2d329e6 data/cosmeretools/recipes/cadmium_axe.json +367b84801df354a3d04852d467c3351825ee61e4 data/cosmeretools/recipes/cadmium_boots.json +085cf4dba04c5a9b0f6af61e78c23cef99521823 data/cosmeretools/recipes/cadmium_chestplate.json +4f4780ded27c127835f601ade188a140ee6c2b09 data/cosmeretools/recipes/cadmium_helmet.json +244a6b21f5c06f290252b9eed3cdb278140cf132 data/cosmeretools/recipes/cadmium_hoe.json +b86b7b7d47100114fff912ac93c00c9481bc6010 data/cosmeretools/recipes/cadmium_leggings.json +e9421b55d0c21fdd6a50599d6448667741adcb35 data/cosmeretools/recipes/cadmium_pickaxe.json +21b684087b7f706e7441aa6acfb56b694592c93f data/cosmeretools/recipes/cadmium_shovel.json +8021caad068b7c787e36b8ee665375a20ce5b542 data/cosmeretools/recipes/cadmium_sword.json +ff950e52ecd55d40728b1c661cce93ccff9f236e data/cosmeretools/recipes/chromium_axe.json +5c0c7f26021b4f94ebc8f0e160407255a0a0ba1f data/cosmeretools/recipes/chromium_boots.json +46f697df4e5887dd6bba21819171bbc2983c3b61 data/cosmeretools/recipes/chromium_chestplate.json +b949fed858f731ca7499d1499f1296cbdcb68fbe data/cosmeretools/recipes/chromium_helmet.json +49b49bfec59eac2b7be57776926df66b88c4d02d data/cosmeretools/recipes/chromium_hoe.json +68b73fa526ae90382cd8ade8692eee0e8f066fbf data/cosmeretools/recipes/chromium_leggings.json +adcbbd81c3d3f7544e01be6e733906eb7f9a9ab0 data/cosmeretools/recipes/chromium_pickaxe.json +814cbd1545b496b51494b83cb412fca018007f85 data/cosmeretools/recipes/chromium_shovel.json +3e748496c6c7992d4a91ce19a810c9c5bcbd0248 data/cosmeretools/recipes/chromium_sword.json +f3d700c0309c205ffb6b04ff16695850d57f2d6d data/cosmeretools/recipes/copper_axe.json +00f7721d7c0b6ad5dd578a8075533ec84bdd544f data/cosmeretools/recipes/copper_boots.json +74b6fe965ef79de562b1853f6dc4d723a8931985 data/cosmeretools/recipes/copper_chestplate.json +5705d6788b0f9abd5ad6fae565777c85eb8a6675 data/cosmeretools/recipes/copper_helmet.json +a5f6ae0d7ab879c4e78bd9e2b9d6f3ed45d11397 data/cosmeretools/recipes/copper_hoe.json +1e4d60ce224c1a89d6495c788bc74cad0f357a39 data/cosmeretools/recipes/copper_leggings.json +02dc5d4fc6180c582d9c80945375d2964c881844 data/cosmeretools/recipes/copper_pickaxe.json +5574df457cddd73b267d590fb1046733fc6df24c data/cosmeretools/recipes/copper_shovel.json +cdb8fad5c1863f01368f5f73ac911b8dd11c4432 data/cosmeretools/recipes/copper_sword.json +b494551be5bb1e676289525eaad59c3ab1a40fc2 data/cosmeretools/recipes/duralumin_axe.json +98a5342a17ee8a8ddd8a7edf566673859615e517 data/cosmeretools/recipes/duralumin_boots.json +1edb16172242839943cb978d6504be75522bc7c4 data/cosmeretools/recipes/duralumin_chestplate.json +504114a721e6562d6b14c489c7a629a35c6656fa data/cosmeretools/recipes/duralumin_helmet.json +57a576eaeaed4addcc1916addbbfd1d5cf080d9f data/cosmeretools/recipes/duralumin_hoe.json +326cbe8d81f358372377f2c2654ad31488bbf7d3 data/cosmeretools/recipes/duralumin_leggings.json +ba541fa12efc3874c0d937b7356fdff6eeb86681 data/cosmeretools/recipes/duralumin_pickaxe.json +3ee54be7e4e43f54abab7d4a90a2f5dc11ec69df data/cosmeretools/recipes/duralumin_shovel.json +6665b72480757e704062ad4e7a664c513c3d6f96 data/cosmeretools/recipes/duralumin_sword.json +ba59f4cbdc545657befa8aed008ebcf78b4709c4 data/cosmeretools/recipes/electrum_axe.json +1ffcd415948dffe984820e8fdd8f89bfb030a20b data/cosmeretools/recipes/electrum_boots.json +4e2607bee1001a55ba3a8d19d735ffcd304ef41a data/cosmeretools/recipes/electrum_chestplate.json +4c35e2c962322875ec8f57f068daf9ae4937077d data/cosmeretools/recipes/electrum_helmet.json +5a248941b04df0a04eb8e3f50c81ecae19c8ff2d data/cosmeretools/recipes/electrum_hoe.json +4d3eee1ed99ce06e4bfc8a62e00f4c788d6969fd data/cosmeretools/recipes/electrum_leggings.json +8495d26ca40f2a69c68af53241ab54d4edba81b4 data/cosmeretools/recipes/electrum_pickaxe.json +6b5b81f18e09d2eef57ff4f19de895226affd3d0 data/cosmeretools/recipes/electrum_shovel.json +51f4f927b3426e7ef156732a8c1e2cf07277a0a6 data/cosmeretools/recipes/electrum_sword.json +88f96bb4c2babf773d258ad59d4d8f674ab2a76c data/cosmeretools/recipes/harmonium_axe.json +2266881b51cf782c0672fd708329aad431bbf450 data/cosmeretools/recipes/harmonium_boots.json +2a40376b3cd5149767b1346c0ad1baa758c18d85 data/cosmeretools/recipes/harmonium_chestplate.json +da189a851049d276e69a2b33ab7f9db89348392a data/cosmeretools/recipes/harmonium_helmet.json +2b8397c5ef7c6b201b43b4c15a167ebf93f36740 data/cosmeretools/recipes/harmonium_hoe.json +b9fece1e67df8749633c7b02a1fed750a6cb8146 data/cosmeretools/recipes/harmonium_leggings.json +b610c79acb66743e5688f1db34e080101732316e data/cosmeretools/recipes/harmonium_pickaxe.json +f9ce3fc6fc871d5c1c0689eeab20d47e9f87c749 data/cosmeretools/recipes/harmonium_shovel.json +14fa062f5e41396d09374f420378eb862cb827b2 data/cosmeretools/recipes/harmonium_sword.json +069a4023c216c1f2a201760cc7ea6f32f29abb54 data/cosmeretools/recipes/lead_axe.json +a1d4f014f0d3fb105f13de7271aebf2195d45789 data/cosmeretools/recipes/lead_boots.json +c7f61add99e329a440f49c99a9dcfa7ae016a162 data/cosmeretools/recipes/lead_chestplate.json +b2e485708e5a64803e916418015976f8b191d67b data/cosmeretools/recipes/lead_helmet.json +d54138691885fc08a747292beafa2b8761650054 data/cosmeretools/recipes/lead_hoe.json +17c42a1b0860ef9f8932200a031bf24638050c65 data/cosmeretools/recipes/lead_leggings.json +bae40b43029c05d9144f5b51d447faadb18cbd77 data/cosmeretools/recipes/lead_pickaxe.json +08bdc9728e6837923d19225c7e4e4decc675ac73 data/cosmeretools/recipes/lead_shovel.json +0fe771471523ec7cd6631ea0dca52f914bd8f047 data/cosmeretools/recipes/lead_sword.json +46d418f43ae882eadbcb758772d8135fdc62cda9 data/cosmeretools/recipes/lerasatium_axe.json +dfde0a029d645d7243990470b2dd24465f056f21 data/cosmeretools/recipes/lerasatium_boots.json +3c8414a96fb0036116cd9ddd8a401dbd3510e745 data/cosmeretools/recipes/lerasatium_chestplate.json +12deb860878859a5ab9069f61cb4069320b2d375 data/cosmeretools/recipes/lerasatium_helmet.json +d44e2eec5bff140b3880887105200f6de55edef1 data/cosmeretools/recipes/lerasatium_hoe.json +e93f2d31e2f4603abc4dbcff722e90d80de8cddf data/cosmeretools/recipes/lerasatium_leggings.json +12d1775aae28383c2b8a23ed834380ad35321808 data/cosmeretools/recipes/lerasatium_pickaxe.json +9e607a818ea5a9aa45a0e59ecc6bf55c33ec6fd6 data/cosmeretools/recipes/lerasatium_shovel.json +8055dc95bcc0e160ca15f9c0938c1db404ddfd2a data/cosmeretools/recipes/lerasatium_sword.json +0f93e5eb0123eac25f51d582c99f61de2fd21671 data/cosmeretools/recipes/lerasium_axe.json +502053bc352f6e9d04912c411e76a0284de18c59 data/cosmeretools/recipes/lerasium_boots.json +9127357322d4a206d377b1ae60a6e8b2ff82fbaf data/cosmeretools/recipes/lerasium_chestplate.json +02e03d879d51e7d2d9ed79ef3ee60c9f03220631 data/cosmeretools/recipes/lerasium_helmet.json +f4c5cfb5529ba50e543040dec4ead99b3f2e30a3 data/cosmeretools/recipes/lerasium_hoe.json +ba3986bf12a952c07b8050189fc31c9c3dee800a data/cosmeretools/recipes/lerasium_leggings.json +17a499826cbede26d9c01f620b68ab4944dd364d data/cosmeretools/recipes/lerasium_pickaxe.json +59eefd2d8c4a2ebadf96c1d64eb19757b503d0ce data/cosmeretools/recipes/lerasium_shovel.json +7c3b62e5dba8a7760aed8b2029ef019d667d8c48 data/cosmeretools/recipes/lerasium_sword.json +b240f2f8e2c3922317dbbc214308382558b0ac2d data/cosmeretools/recipes/malatium_axe.json +23c3aa2de8a69774db54ec273eb9d1c163bbcbeb data/cosmeretools/recipes/malatium_boots.json +000a3f4bef415008a075e8adbd448d7bec6ca42c data/cosmeretools/recipes/malatium_chestplate.json +f1d056f781eca17c8c61a99bbe617108f5ff3821 data/cosmeretools/recipes/malatium_helmet.json +608f690d38f9b753c0e6213804f65a2563641228 data/cosmeretools/recipes/malatium_hoe.json +43d9c5d0c5d328fed8e39653b9f60eda9fa866a5 data/cosmeretools/recipes/malatium_leggings.json +c1e3139888dc4939220f2511512e58eb16bf31b6 data/cosmeretools/recipes/malatium_pickaxe.json +2adfa5dcc438cb90df49853f3894aafb602943da data/cosmeretools/recipes/malatium_shovel.json +9f6e747f99ad340c1e2cae32f5891d0bccd5720b data/cosmeretools/recipes/malatium_sword.json +4e44125b20474f504404310d18d3101cc2b8b819 data/cosmeretools/recipes/nickel_axe.json +cc81d86552011647fed9e4f9bcbb9d6ab7f07c62 data/cosmeretools/recipes/nickel_boots.json +53eccd47a7a9f39255eb0e10d83e57eeb1a7de24 data/cosmeretools/recipes/nickel_chestplate.json +44c6959bd04e4c5d664600e05d18613a2162faf4 data/cosmeretools/recipes/nickel_helmet.json +78e3ac3076a907d5351f0b3252cd267f5263dc97 data/cosmeretools/recipes/nickel_hoe.json +55621684498257d51a3e317c51fcd74355098343 data/cosmeretools/recipes/nickel_leggings.json +e2d8fc9129265e1c692a4b2c1fef3dea78916e4e data/cosmeretools/recipes/nickel_pickaxe.json +d489702cbeccd87af54e62cb9fd87cf7cb8649e7 data/cosmeretools/recipes/nickel_shovel.json +2926b0893d809177e52353f9cc24976fe0aa5c19 data/cosmeretools/recipes/nickel_sword.json +5a4410cd60aab4d598a8957a4c25c56a09df48d8 data/cosmeretools/recipes/nicrosil_axe.json +8cde36e0473a840cae036aaa8f533eb890d15f19 data/cosmeretools/recipes/nicrosil_boots.json +78a7f7068ae6ae652c7e0d33e49af96a92cfd69f data/cosmeretools/recipes/nicrosil_chestplate.json +b67b740a7e465472aba3849303088a988510904e data/cosmeretools/recipes/nicrosil_helmet.json +e0e1779a66625619219a4b03c9ad6cfaa01b32ed data/cosmeretools/recipes/nicrosil_hoe.json +b2bc257f9bcb57867dd8fe4166ec9a55b33c335e data/cosmeretools/recipes/nicrosil_leggings.json +2bcbf12b6804c5eea6d802f1905dfa0e872fe9e4 data/cosmeretools/recipes/nicrosil_pickaxe.json +280183859be2a0a3eb30e117d8329363fe24d7f9 data/cosmeretools/recipes/nicrosil_shovel.json +73d934d39387f4c56e4bb74908fd9f950da5a203 data/cosmeretools/recipes/nicrosil_sword.json +d5a3efe28e98284e29d7542b3eba173bdcd37026 data/cosmeretools/recipes/pewter_axe.json +7f4f7dc067a80c8c870325698828cd0f78c787d3 data/cosmeretools/recipes/pewter_boots.json +1ad8f34ada575e3a82d6d787437787f370d42343 data/cosmeretools/recipes/pewter_chestplate.json +7b93ca1bbd312b6d66ffe917cf3cd7db08caacad data/cosmeretools/recipes/pewter_helmet.json +cf98cf976316307f627d16e783a27381518f564c data/cosmeretools/recipes/pewter_hoe.json +08f2160c1c644f86d7137a3580e3e4302457e02e data/cosmeretools/recipes/pewter_leggings.json +ec3d940f49799bf738869697baa7c6865a0ed8f2 data/cosmeretools/recipes/pewter_pickaxe.json +f378480ca56ac75679f942a4946d4a5c81096234 data/cosmeretools/recipes/pewter_shovel.json +16f7edb15b25dbef88ab19ee1945c9e8bf75a0b2 data/cosmeretools/recipes/pewter_sword.json +eeba05d48ae82c4cb61a58ad762dc5f697ffe9a1 data/cosmeretools/recipes/silver_axe.json +4d3927a5557e5867688fce1baab3268be4164909 data/cosmeretools/recipes/silver_boots.json +59642f6c0e0fd57d4f108abe84289c6259c2364b data/cosmeretools/recipes/silver_chestplate.json +b52270674d1cb2e9e818ba9432c7d0d8de0ce1a0 data/cosmeretools/recipes/silver_helmet.json +146da8a4b72c777740716569e511fbab60332067 data/cosmeretools/recipes/silver_hoe.json +e0faedada23fcbb2216cf580da0f0d511665502b data/cosmeretools/recipes/silver_leggings.json +d0ff7e88e402812da5de28f1ba90a5dfda695274 data/cosmeretools/recipes/silver_pickaxe.json +fa3cb0403071f978da7e37b7d3429cffbd608bea data/cosmeretools/recipes/silver_shovel.json +317445892e6cba559c829a534008d75bb21b1600 data/cosmeretools/recipes/silver_sword.json +6d3f0c056c9873d74d055c2dd8bf45d8e67585d4 data/cosmeretools/recipes/steel_axe.json +64a6486250c48164e6acc06453760a458f50e40c data/cosmeretools/recipes/steel_boots.json +170e3e77f8364911ef3011c5c6654d28101e1da2 data/cosmeretools/recipes/steel_chestplate.json +8a2596e7de65ab5360afd40936a3a73cec99e7ce data/cosmeretools/recipes/steel_helmet.json +490c5218df59cca6b98ae2f90c0c8c37aaf632c3 data/cosmeretools/recipes/steel_hoe.json +54f6846a17917fb4fa8cb7ac2ea08de76536892f data/cosmeretools/recipes/steel_leggings.json +d027df49cc1b3643ec18693e6deaa5394ecec2f1 data/cosmeretools/recipes/steel_pickaxe.json +057aa3a251fbb6e1e5335b91f113276ddf45be0e data/cosmeretools/recipes/steel_shovel.json +04755e8ebfe12fa5fb9befd1bf429f0932e03e87 data/cosmeretools/recipes/steel_sword.json +a676ee20e8c09fa0c68ff6736bc7d8707439ca07 data/cosmeretools/recipes/tin_axe.json +7d21efa2bccb39dbaf838da117fa43b04fc32e90 data/cosmeretools/recipes/tin_boots.json +488e68d53a7555f0e6a282852308cf7014fa7cda data/cosmeretools/recipes/tin_chestplate.json +93b10e57fbbef4f2dc832b0410f75d6edee903f6 data/cosmeretools/recipes/tin_helmet.json +e2da12b54e054d90ea933e9a1f1b81832a022195 data/cosmeretools/recipes/tin_hoe.json +5c7cf0c67f8fb4e2dfc4fc9ab44eca22d2330b0f data/cosmeretools/recipes/tin_leggings.json +d3359c5e3e0187445d65ea3cffad0666a249cf0d data/cosmeretools/recipes/tin_pickaxe.json +fb6389731995f93df4549603239c3a139fbb0e42 data/cosmeretools/recipes/tin_shovel.json +f7111f824d50b76f043bd2e699de61b5c5edcba9 data/cosmeretools/recipes/tin_sword.json +c481fae51fbc68035a69e85a5d737bb54510640b data/cosmeretools/recipes/zinc_axe.json +d889a93e5b0f5806c5e3a5d0d056ce8cf4225f34 data/cosmeretools/recipes/zinc_boots.json +3c49d91811a2dd64454a766a7bececd33f4fbf24 data/cosmeretools/recipes/zinc_chestplate.json +35c3b39a6d32459e098859fcfc176b996b39bb57 data/cosmeretools/recipes/zinc_helmet.json +8368535c9fab6e30f7c0ca98a002efd7b5d737af data/cosmeretools/recipes/zinc_hoe.json +395de3df01e261ecbb2106a1475a5ab0a87993c4 data/cosmeretools/recipes/zinc_leggings.json +85169a3ff7d9e1bd3676e7de0404110c301373bc data/cosmeretools/recipes/zinc_pickaxe.json +25fd54c42a0d8194e56bdf11de87c7728d3c0827 data/cosmeretools/recipes/zinc_shovel.json +3ecfd4ae20e0fb16620fbe196617993a853a142d data/cosmeretools/recipes/zinc_sword.json diff --git a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index c9ee9576e..3b074ce89 100644 --- a/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmeretools/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:18:47.9999305 Languages: en_us +// 1.20.1 2024-11-04T19:03:34.6221485 Languages: en_us 8d1dc9fb8d0ada62d1e2c55c6be7cf8e82a460cd assets/cosmeretools/lang/en_us.json diff --git a/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 b/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 index c9a37c8c7..b896765cb 100644 --- a/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 +++ b/src/datagen/generated/cosmeretools/.cache/e97825cad1b7db91061ba52571a61f8715113ce1 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.2227496 Item Models: cosmeretools +// 1.20.1 2024-11-04T19:03:34.6190144 Item Models: cosmeretools 9689a584a402d6edb9bb8fcb52769136d5a4443c assets/cosmeretools/models/item/aluminum_axe.json e5bc83f1ddd7b2aa51f247a6b4df2197190944b9 assets/cosmeretools/models/item/aluminum_boots.json 2fd89eb4599fb537b1d4d0dfb3d12745a3a284fb assets/cosmeretools/models/item/aluminum_chestplate.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_boots.json similarity index 65% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json rename to src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_boots.json index 2e06847ec..6f75918c7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/copper_block_deconstruct.json +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_boots.json @@ -1,13 +1,11 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_item": { + "has_material": { "conditions": { "items": [ { - "items": [ - "cosmere:copper_ingot" - ] + "tag": "forge:ingots/aluminum" } ] }, @@ -15,20 +13,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/copper_block_deconstruct" + "recipe": "cosmeretools:aluminum_boots" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_item", + "has_material", "has_the_recipe" ] ], "rewards": { "recipes": [ - "cosmere:conversions/copper_block_deconstruct" + "cosmeretools:aluminum_boots" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_chestplate.json new file mode 100644 index 000000000..6a189d27a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_helmet.json new file mode 100644 index 000000000..a48a209ef --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_leggings.json new file mode 100644 index 000000000..c09b713f4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_sword.json new file mode 100644 index 000000000..3a8f35dcd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/aluminum_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_boots.json new file mode 100644 index 000000000..ed612800d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_chestplate.json new file mode 100644 index 000000000..552f0de85 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_helmet.json new file mode 100644 index 000000000..40db271a6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_leggings.json new file mode 100644 index 000000000..bcadf30f0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_sword.json new file mode 100644 index 000000000..1eb4c8c75 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/atium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_boots.json new file mode 100644 index 000000000..be7501904 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_chestplate.json new file mode 100644 index 000000000..08cedea2b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_helmet.json new file mode 100644 index 000000000..223600ffc --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_leggings.json new file mode 100644 index 000000000..6ce7b168b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_sword.json new file mode 100644 index 000000000..8f0e659a0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bendalloy_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_boots.json new file mode 100644 index 000000000..477eb263d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_chestplate.json new file mode 100644 index 000000000..93a041292 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_helmet.json new file mode 100644 index 000000000..f4cef59b3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_leggings.json new file mode 100644 index 000000000..61675c709 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_sword.json new file mode 100644 index 000000000..b6e40c992 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/brass_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_boots.json new file mode 100644 index 000000000..215348bb4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_chestplate.json new file mode 100644 index 000000000..90f998f1b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_helmet.json new file mode 100644 index 000000000..a84fe22be --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_leggings.json new file mode 100644 index 000000000..378bb1f1e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_sword.json new file mode 100644 index 000000000..cbf91ae4a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/bronze_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_boots.json new file mode 100644 index 000000000..b26df97b7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_chestplate.json new file mode 100644 index 000000000..6177c4fe0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_helmet.json new file mode 100644 index 000000000..01ab3f162 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_leggings.json new file mode 100644 index 000000000..b3bac1163 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_sword.json new file mode 100644 index 000000000..1ef5083c1 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/cadmium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_boots.json new file mode 100644 index 000000000..4dd7c0229 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_chestplate.json new file mode 100644 index 000000000..ee180d893 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_helmet.json new file mode 100644 index 000000000..6d7e4d7a2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_leggings.json new file mode 100644 index 000000000..49f78ff89 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_sword.json new file mode 100644 index 000000000..4350de0c3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/chromium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_boots.json new file mode 100644 index 000000000..66528305b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_chestplate.json new file mode 100644 index 000000000..dbe6679ba --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_helmet.json new file mode 100644 index 000000000..bde657f46 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_leggings.json new file mode 100644 index 000000000..28d0a2e34 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_sword.json new file mode 100644 index 000000000..58c66e6c9 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/copper_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_boots.json new file mode 100644 index 000000000..b074a96eb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_chestplate.json new file mode 100644 index 000000000..19e8f0263 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_helmet.json new file mode 100644 index 000000000..7c532bb15 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_leggings.json new file mode 100644 index 000000000..c027451e5 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_sword.json new file mode 100644 index 000000000..58731ce1e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/duralumin_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_boots.json new file mode 100644 index 000000000..e451844a3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_chestplate.json new file mode 100644 index 000000000..2a41b511a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_helmet.json new file mode 100644 index 000000000..edd608430 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_leggings.json new file mode 100644 index 000000000..79a8efc5b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_sword.json new file mode 100644 index 000000000..d9b28eb84 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/electrum_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_boots.json new file mode 100644 index 000000000..6af065279 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_chestplate.json new file mode 100644 index 000000000..d925bc236 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_helmet.json new file mode 100644 index 000000000..790260880 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_leggings.json new file mode 100644 index 000000000..591623fcb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_sword.json new file mode 100644 index 000000000..3ea23f40c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/harmonium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_boots.json new file mode 100644 index 000000000..dffe5e060 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_chestplate.json new file mode 100644 index 000000000..f840fa7a3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_helmet.json new file mode 100644 index 000000000..d8aef6ff2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_leggings.json new file mode 100644 index 000000000..0ea2a427e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_sword.json new file mode 100644 index 000000000..dd754a0fe --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lead_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_boots.json new file mode 100644 index 000000000..0355c695c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_chestplate.json new file mode 100644 index 000000000..be3f27987 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_helmet.json new file mode 100644 index 000000000..c9e301bfa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_leggings.json new file mode 100644 index 000000000..e703b08c2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_sword.json new file mode 100644 index 000000000..fff1e00b0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasatium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_boots.json new file mode 100644 index 000000000..a52d809c7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_chestplate.json new file mode 100644 index 000000000..29d65b983 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_helmet.json new file mode 100644 index 000000000..5663a2307 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_leggings.json new file mode 100644 index 000000000..52c238575 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_sword.json new file mode 100644 index 000000000..a4ffe1e82 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/lerasium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_boots.json new file mode 100644 index 000000000..8f2d64398 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_chestplate.json new file mode 100644 index 000000000..8164f9691 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_helmet.json new file mode 100644 index 000000000..8080d96a7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_leggings.json new file mode 100644 index 000000000..59557e9c6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_sword.json new file mode 100644 index 000000000..fb10f502b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/malatium_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_boots.json new file mode 100644 index 000000000..16b2d9a67 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_chestplate.json new file mode 100644 index 000000000..cecf575aa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_helmet.json new file mode 100644 index 000000000..d1f02c18f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_leggings.json new file mode 100644 index 000000000..1b63d4a44 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_sword.json new file mode 100644 index 000000000..eea89170a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nickel_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_boots.json new file mode 100644 index 000000000..5d2c5c9ab --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_chestplate.json new file mode 100644 index 000000000..f59dcb392 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_helmet.json new file mode 100644 index 000000000..523ff2c94 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_leggings.json new file mode 100644 index 000000000..5fa2aeb9f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_sword.json new file mode 100644 index 000000000..d0609c112 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/nicrosil_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_boots.json new file mode 100644 index 000000000..89b601226 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_chestplate.json new file mode 100644 index 000000000..7d975d2b3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_helmet.json new file mode 100644 index 000000000..1353058aa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_leggings.json new file mode 100644 index 000000000..27e9acb8b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_sword.json new file mode 100644 index 000000000..5a3048829 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/pewter_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_boots.json new file mode 100644 index 000000000..a5ecba27a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_chestplate.json new file mode 100644 index 000000000..183b811a7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_helmet.json new file mode 100644 index 000000000..1e827be9e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_leggings.json new file mode 100644 index 000000000..cc3edc6ff --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_sword.json new file mode 100644 index 000000000..517929894 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/silver_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_boots.json new file mode 100644 index 000000000..02b3b0b07 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_chestplate.json new file mode 100644 index 000000000..8d7464f16 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_helmet.json new file mode 100644 index 000000000..ec3994d7d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_leggings.json new file mode 100644 index 000000000..ea8201126 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_sword.json new file mode 100644 index 000000000..747afabd2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/steel_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_boots.json new file mode 100644 index 000000000..8a30188c2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_chestplate.json new file mode 100644 index 000000000..0ddb37e03 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_helmet.json new file mode 100644 index 000000000..f7021284d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_leggings.json new file mode 100644 index 000000000..57b51d934 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_sword.json new file mode 100644 index 000000000..93f8674ea --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/tin_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_boots.json new file mode 100644 index 000000000..b3c91f530 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_boots.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_boots" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_boots" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_chestplate.json new file mode 100644 index 000000000..d85096b22 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_chestplate.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_chestplate" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_chestplate" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_helmet.json new file mode 100644 index 000000000..88ecbd394 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_helmet.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_helmet" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_helmet" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_leggings.json new file mode 100644 index 000000000..7453baff4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_leggings.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_leggings" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_leggings" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_sword.json new file mode 100644 index 000000000..fbe2ce01a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/combat/zinc_sword.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_sword" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_sword" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_axe.json new file mode 100644 index 000000000..2a2520947 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_hoe.json new file mode 100644 index 000000000..8db2729cf --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_pickaxe.json new file mode 100644 index 000000000..89255fed3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_shovel.json new file mode 100644 index 000000000..ebc10d486 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/aluminum_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/aluminum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:aluminum_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:aluminum_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_axe.json new file mode 100644 index 000000000..c7930416a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_hoe.json new file mode 100644 index 000000000..b19336cdd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_pickaxe.json new file mode 100644 index 000000000..516f53c7e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_shovel.json new file mode 100644 index 000000000..b2415e36c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/atium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:atium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:atium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_axe.json new file mode 100644 index 000000000..5202072cc --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_hoe.json new file mode 100644 index 000000000..efc4cd009 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_pickaxe.json new file mode 100644 index 000000000..61cc5ca09 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_shovel.json new file mode 100644 index 000000000..4d3bfd71a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bendalloy_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bendalloy" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bendalloy_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bendalloy_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_axe.json new file mode 100644 index 000000000..ad4c1dc00 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_hoe.json new file mode 100644 index 000000000..804a882a0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_pickaxe.json new file mode 100644 index 000000000..552173bfd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_shovel.json new file mode 100644 index 000000000..157b7d7a3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/brass_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/brass" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:brass_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:brass_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_axe.json new file mode 100644 index 000000000..788f96ab7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_hoe.json new file mode 100644 index 000000000..a311a81eb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_pickaxe.json new file mode 100644 index 000000000..d2137512a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_shovel.json new file mode 100644 index 000000000..f1f907079 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/bronze_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/bronze" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:bronze_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:bronze_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_axe.json new file mode 100644 index 000000000..8f5c14279 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_hoe.json new file mode 100644 index 000000000..53609e9c3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_pickaxe.json new file mode 100644 index 000000000..6a3d70eaa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_shovel.json new file mode 100644 index 000000000..12170fdeb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/cadmium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/cadmium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:cadmium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:cadmium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_axe.json new file mode 100644 index 000000000..b5af2e413 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_hoe.json new file mode 100644 index 000000000..1d9e6d3da --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_pickaxe.json new file mode 100644 index 000000000..7cf623b72 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_shovel.json new file mode 100644 index 000000000..2d6995df4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/chromium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/chromium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:chromium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:chromium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_axe.json similarity index 80% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json rename to src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_axe.json index 11f531c79..f3eb0bba0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/copper_block.json +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_axe.json @@ -1,7 +1,7 @@ { "parent": "minecraft:recipes/root", "criteria": { - "has_item": { + "has_material": { "conditions": { "items": [ { @@ -13,20 +13,20 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:copper_block" + "recipe": "cosmeretools:copper_axe" }, "trigger": "minecraft:recipe_unlocked" } }, "requirements": [ [ - "has_item", + "has_material", "has_the_recipe" ] ], "rewards": { "recipes": [ - "cosmere:copper_block" + "cosmeretools:copper_axe" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_hoe.json new file mode 100644 index 000000000..9d97a1930 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_pickaxe.json new file mode 100644 index 000000000..f89cee2fe --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_shovel.json new file mode 100644 index 000000000..21a4e339a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/copper_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/copper" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:copper_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:copper_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_axe.json new file mode 100644 index 000000000..ba8dc9224 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_hoe.json new file mode 100644 index 000000000..3f603e749 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_pickaxe.json new file mode 100644 index 000000000..50734ea1f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_shovel.json new file mode 100644 index 000000000..d3221853f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/duralumin_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/duralumin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:duralumin_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:duralumin_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_axe.json new file mode 100644 index 000000000..8771d4dc9 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_hoe.json new file mode 100644 index 000000000..16f27c2ab --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_pickaxe.json new file mode 100644 index 000000000..c6b68cf33 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_shovel.json new file mode 100644 index 000000000..ed9d92ed0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/electrum_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/electrum" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:electrum_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:electrum_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_axe.json new file mode 100644 index 000000000..9db3ef62a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_hoe.json new file mode 100644 index 000000000..59aa48f3d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_pickaxe.json new file mode 100644 index 000000000..b2b05c968 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_shovel.json new file mode 100644 index 000000000..70f344c17 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/harmonium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:harmonium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:harmonium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_axe.json new file mode 100644 index 000000000..a803d819e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_hoe.json new file mode 100644 index 000000000..83d759d64 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_pickaxe.json new file mode 100644 index 000000000..616fa0ddb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_shovel.json new file mode 100644 index 000000000..71a091515 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lead_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lead" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lead_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lead_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_axe.json new file mode 100644 index 000000000..72ca3512b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_hoe.json new file mode 100644 index 000000000..b01de0c68 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_pickaxe.json new file mode 100644 index 000000000..9d7d2d4fe --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_shovel.json new file mode 100644 index 000000000..3b2629269 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasatium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasatium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasatium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_axe.json new file mode 100644 index 000000000..5a1f20d30 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_hoe.json new file mode 100644 index 000000000..33184c37b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_pickaxe.json new file mode 100644 index 000000000..8c4eca161 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_shovel.json new file mode 100644 index 000000000..50b3c0679 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/lerasium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:lerasium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:lerasium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_axe.json new file mode 100644 index 000000000..4024eea56 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_hoe.json new file mode 100644 index 000000000..6eba1222e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_pickaxe.json new file mode 100644 index 000000000..e34b72416 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_shovel.json new file mode 100644 index 000000000..ceab28e6f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/malatium_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/malatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:malatium_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:malatium_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_axe.json new file mode 100644 index 000000000..e0b62d08b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_hoe.json new file mode 100644 index 000000000..6dd6be175 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_pickaxe.json new file mode 100644 index 000000000..39691d603 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_shovel.json new file mode 100644 index 000000000..358061f0a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nickel_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nickel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nickel_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nickel_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_axe.json new file mode 100644 index 000000000..822a90570 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_hoe.json new file mode 100644 index 000000000..9ecbab654 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_pickaxe.json new file mode 100644 index 000000000..c3083f0fa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_shovel.json new file mode 100644 index 000000000..3a500716f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/nicrosil_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/nicrosil" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:nicrosil_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:nicrosil_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_axe.json new file mode 100644 index 000000000..031064db6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_hoe.json new file mode 100644 index 000000000..c906807cd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_pickaxe.json new file mode 100644 index 000000000..035af1197 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_shovel.json new file mode 100644 index 000000000..b35d1cdda --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/pewter_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/pewter" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:pewter_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:pewter_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_axe.json new file mode 100644 index 000000000..c9124c730 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_hoe.json new file mode 100644 index 000000000..88383d7c7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_pickaxe.json new file mode 100644 index 000000000..974e15c09 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_shovel.json new file mode 100644 index 000000000..a27888a84 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/silver_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/silver" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:silver_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:silver_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_axe.json new file mode 100644 index 000000000..e4ae55cc6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_hoe.json new file mode 100644 index 000000000..33bc7637a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_pickaxe.json new file mode 100644 index 000000000..f6cd9d86d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_shovel.json new file mode 100644 index 000000000..8e3103577 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/steel_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/steel" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:steel_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:steel_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_axe.json new file mode 100644 index 000000000..9200c6b46 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_hoe.json new file mode 100644 index 000000000..f5eec92e0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_pickaxe.json new file mode 100644 index 000000000..aa3fd118b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_shovel.json new file mode 100644 index 000000000..a8f064ddb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/tin_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/tin" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:tin_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:tin_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_axe.json new file mode 100644 index 000000000..edeedbab9 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_axe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_axe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_axe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_hoe.json new file mode 100644 index 000000000..2991048d7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_hoe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_hoe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_hoe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_pickaxe.json new file mode 100644 index 000000000..75d35cd75 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_pickaxe.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_pickaxe" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_pickaxe" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_shovel.json new file mode 100644 index 000000000..136d998d8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/advancements/recipes/tools/zinc_shovel.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_material": { + "conditions": { + "items": [ + { + "tag": "forge:ingots/zinc" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmeretools:zinc_shovel" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_material", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmeretools:zinc_shovel" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_axe.json new file mode 100644 index 000000000..541070664 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:aluminum_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_boots.json new file mode 100644 index 000000000..9d361775d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:aluminum_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_chestplate.json new file mode 100644 index 000000000..0315ed87b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:aluminum_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_helmet.json new file mode 100644 index 000000000..c62064b41 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:aluminum_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_hoe.json new file mode 100644 index 000000000..7eb9c3eef --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:aluminum_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_leggings.json new file mode 100644 index 000000000..c4c4df927 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:aluminum_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_pickaxe.json new file mode 100644 index 000000000..e444e61d8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:aluminum_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_shovel.json new file mode 100644 index 000000000..1f5b6548c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:aluminum_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_sword.json new file mode 100644 index 000000000..155c793e6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/aluminum_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/aluminum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:aluminum_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_axe.json new file mode 100644 index 000000000..d595b6094 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/atium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:atium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_boots.json new file mode 100644 index 000000000..dee327043 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/atium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:atium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_chestplate.json new file mode 100644 index 000000000..e2d43b4f3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/atium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:atium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_helmet.json new file mode 100644 index 000000000..49b7b1d19 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/atium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:atium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_hoe.json new file mode 100644 index 000000000..ac98a3569 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/atium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:atium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_leggings.json new file mode 100644 index 000000000..899ee69a4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/atium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:atium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_pickaxe.json new file mode 100644 index 000000000..d39750540 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/atium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:atium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_shovel.json new file mode 100644 index 000000000..c849345b2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/atium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:atium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_sword.json new file mode 100644 index 000000000..abde91c51 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/atium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/atium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:atium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_axe.json new file mode 100644 index 000000000..4db8d2703 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:bendalloy_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_boots.json new file mode 100644 index 000000000..8ce476169 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:bendalloy_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_chestplate.json new file mode 100644 index 000000000..6ad8cf9e8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:bendalloy_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_helmet.json new file mode 100644 index 000000000..1872dfe86 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:bendalloy_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_hoe.json new file mode 100644 index 000000000..53631cf93 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:bendalloy_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_leggings.json new file mode 100644 index 000000000..a58b69121 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:bendalloy_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_pickaxe.json new file mode 100644 index 000000000..fd7131430 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:bendalloy_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_shovel.json new file mode 100644 index 000000000..4de3daa05 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:bendalloy_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_sword.json new file mode 100644 index 000000000..a6e297bad --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bendalloy_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/bendalloy" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:bendalloy_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_axe.json new file mode 100644 index 000000000..a736651f5 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/brass" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:brass_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_boots.json new file mode 100644 index 000000000..be13b93fd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/brass" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:brass_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_chestplate.json new file mode 100644 index 000000000..b9fac8e7b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/brass" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:brass_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_helmet.json new file mode 100644 index 000000000..74456a85e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/brass" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:brass_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_hoe.json new file mode 100644 index 000000000..4cbaa4e5b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/brass" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:brass_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_leggings.json new file mode 100644 index 000000000..c50e3b50b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/brass" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:brass_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_pickaxe.json new file mode 100644 index 000000000..f4ade045b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/brass" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:brass_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_shovel.json new file mode 100644 index 000000000..0888079bb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/brass" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:brass_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_sword.json new file mode 100644 index 000000000..768e7bad4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/brass_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/brass" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:brass_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_axe.json new file mode 100644 index 000000000..3e3c76fc0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/bronze" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:bronze_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_boots.json new file mode 100644 index 000000000..a8cb53dc7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/bronze" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:bronze_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_chestplate.json new file mode 100644 index 000000000..a88f6e85d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/bronze" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:bronze_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_helmet.json new file mode 100644 index 000000000..b9db0ae93 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/bronze" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:bronze_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_hoe.json new file mode 100644 index 000000000..e2cceca4e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/bronze" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:bronze_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_leggings.json new file mode 100644 index 000000000..9b34d39fc --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/bronze" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:bronze_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_pickaxe.json new file mode 100644 index 000000000..9b3af4589 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/bronze" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:bronze_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_shovel.json new file mode 100644 index 000000000..e6420a1a8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/bronze" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:bronze_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_sword.json new file mode 100644 index 000000000..9bb3b724c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/bronze_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/bronze" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:bronze_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_axe.json new file mode 100644 index 000000000..7381390d1 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:cadmium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_boots.json new file mode 100644 index 000000000..1b4436e1f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:cadmium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_chestplate.json new file mode 100644 index 000000000..4172bef8e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:cadmium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_helmet.json new file mode 100644 index 000000000..a281e508d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:cadmium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_hoe.json new file mode 100644 index 000000000..77a0d2928 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:cadmium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_leggings.json new file mode 100644 index 000000000..a080f1d9b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:cadmium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_pickaxe.json new file mode 100644 index 000000000..ebf852d47 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:cadmium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_shovel.json new file mode 100644 index 000000000..1802050d3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:cadmium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_sword.json new file mode 100644 index 000000000..de70f0d6a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/cadmium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/cadmium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:cadmium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_axe.json new file mode 100644 index 000000000..819d21335 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/chromium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:chromium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_boots.json new file mode 100644 index 000000000..d816e5529 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/chromium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:chromium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_chestplate.json new file mode 100644 index 000000000..02f173912 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/chromium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:chromium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_helmet.json new file mode 100644 index 000000000..0f019a0db --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/chromium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:chromium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_hoe.json new file mode 100644 index 000000000..cccbefb2f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/chromium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:chromium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_leggings.json new file mode 100644 index 000000000..8a7186a52 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/chromium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:chromium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_pickaxe.json new file mode 100644 index 000000000..2e40e03fa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/chromium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:chromium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_shovel.json new file mode 100644 index 000000000..cdfa81ab3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/chromium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:chromium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_sword.json new file mode 100644 index 000000000..8bec8c948 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/chromium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/chromium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:chromium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_axe.json new file mode 100644 index 000000000..553dcf9a4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/copper" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:copper_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_boots.json similarity index 51% rename from src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json rename to src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_boots.json index 6305dcd2b..c659469eb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/copper_block.json +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_boots.json @@ -1,21 +1,18 @@ { "type": "minecraft:crafting_shaped", - "category": "misc", + "category": "equipment", + "group": "boots", "key": { - "I": { + "X": { "tag": "forge:ingots/copper" - }, - "J": { - "item": "cosmere:copper_ingot" } }, "pattern": [ - "III", - "IJI", - "III" + "X X", + "X X" ], "result": { - "item": "cosmere:copper_block" + "item": "cosmeretools:copper_boots" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_chestplate.json new file mode 100644 index 000000000..a92dcecb6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/copper" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:copper_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_helmet.json new file mode 100644 index 000000000..87b015f3d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/copper" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:copper_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_hoe.json new file mode 100644 index 000000000..301fdfe21 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/copper" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:copper_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_leggings.json new file mode 100644 index 000000000..cdba8546c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/copper" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:copper_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_pickaxe.json new file mode 100644 index 000000000..4b5975ac4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/copper" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:copper_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_shovel.json new file mode 100644 index 000000000..08b2cbee5 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/copper" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:copper_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_sword.json new file mode 100644 index 000000000..fecea7ea2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/copper_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/copper" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:copper_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_axe.json new file mode 100644 index 000000000..a62f1b8e4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:duralumin_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_boots.json new file mode 100644 index 000000000..582105503 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:duralumin_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_chestplate.json new file mode 100644 index 000000000..df8a3b782 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:duralumin_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_helmet.json new file mode 100644 index 000000000..e5c0bd436 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:duralumin_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_hoe.json new file mode 100644 index 000000000..2e89b4467 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:duralumin_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_leggings.json new file mode 100644 index 000000000..2d3784542 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:duralumin_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_pickaxe.json new file mode 100644 index 000000000..dcb31dc1a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:duralumin_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_shovel.json new file mode 100644 index 000000000..84f58224a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:duralumin_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_sword.json new file mode 100644 index 000000000..f5f6405af --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/duralumin_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/duralumin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:duralumin_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_axe.json new file mode 100644 index 000000000..e3b12af89 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/electrum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:electrum_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_boots.json new file mode 100644 index 000000000..6c205ccec --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/electrum" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:electrum_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_chestplate.json new file mode 100644 index 000000000..b2480886d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/electrum" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:electrum_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_helmet.json new file mode 100644 index 000000000..c430964f3 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/electrum" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:electrum_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_hoe.json new file mode 100644 index 000000000..9bad27401 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/electrum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:electrum_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_leggings.json new file mode 100644 index 000000000..9d201362a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/electrum" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:electrum_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_pickaxe.json new file mode 100644 index 000000000..910f3b5bf --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/electrum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:electrum_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_shovel.json new file mode 100644 index 000000000..31b57ee51 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/electrum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:electrum_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_sword.json new file mode 100644 index 000000000..ff306f04e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/electrum_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/electrum" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:electrum_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_axe.json new file mode 100644 index 000000000..426a360f4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:harmonium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_boots.json new file mode 100644 index 000000000..d1b248e7f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:harmonium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_chestplate.json new file mode 100644 index 000000000..f8343f02c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:harmonium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_helmet.json new file mode 100644 index 000000000..0f922563a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:harmonium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_hoe.json new file mode 100644 index 000000000..f1236371b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:harmonium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_leggings.json new file mode 100644 index 000000000..77df78b40 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:harmonium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_pickaxe.json new file mode 100644 index 000000000..06a246e6d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:harmonium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_shovel.json new file mode 100644 index 000000000..85e5ae6f5 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:harmonium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_sword.json new file mode 100644 index 000000000..a7f342b2a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/harmonium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/harmonium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:harmonium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_axe.json new file mode 100644 index 000000000..0f54f8e9e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/lead" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:lead_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_boots.json new file mode 100644 index 000000000..3eca84e29 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/lead" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lead_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_chestplate.json new file mode 100644 index 000000000..c822a8c2a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/lead" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:lead_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_helmet.json new file mode 100644 index 000000000..b483d446e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/lead" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:lead_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_hoe.json new file mode 100644 index 000000000..b6186f224 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/lead" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:lead_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_leggings.json new file mode 100644 index 000000000..ef0805933 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/lead" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lead_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_pickaxe.json new file mode 100644 index 000000000..5f7dea6fa --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/lead" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:lead_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_shovel.json new file mode 100644 index 000000000..3fb282bdf --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/lead" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:lead_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_sword.json new file mode 100644 index 000000000..ebacd579e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lead_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/lead" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:lead_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_axe.json new file mode 100644 index 000000000..e49e66782 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:lerasatium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_boots.json new file mode 100644 index 000000000..43edde79f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lerasatium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_chestplate.json new file mode 100644 index 000000000..a06e0da62 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:lerasatium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_helmet.json new file mode 100644 index 000000000..7ad46936e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:lerasatium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_hoe.json new file mode 100644 index 000000000..f99d5b3dd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:lerasatium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_leggings.json new file mode 100644 index 000000000..f5f83ccca --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lerasatium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_pickaxe.json new file mode 100644 index 000000000..503744703 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:lerasatium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_shovel.json new file mode 100644 index 000000000..32be69982 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:lerasatium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_sword.json new file mode 100644 index 000000000..6cae50320 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasatium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/lerasatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:lerasatium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_axe.json new file mode 100644 index 000000000..fc723e084 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:lerasium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_boots.json new file mode 100644 index 000000000..fab566eae --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lerasium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_chestplate.json new file mode 100644 index 000000000..adb3069c7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:lerasium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_helmet.json new file mode 100644 index 000000000..27ff221a2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:lerasium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_hoe.json new file mode 100644 index 000000000..337d93151 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:lerasium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_leggings.json new file mode 100644 index 000000000..0eaca07e4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:lerasium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_pickaxe.json new file mode 100644 index 000000000..fa62b16ee --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:lerasium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_shovel.json new file mode 100644 index 000000000..104b44259 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:lerasium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_sword.json new file mode 100644 index 000000000..bd83bde6a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/lerasium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/lerasium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:lerasium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_axe.json new file mode 100644 index 000000000..06960bf4e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/malatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:malatium_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_boots.json new file mode 100644 index 000000000..f4f935bd7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/malatium" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:malatium_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_chestplate.json new file mode 100644 index 000000000..b082ae1a6 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/malatium" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:malatium_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_helmet.json new file mode 100644 index 000000000..443430382 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/malatium" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:malatium_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_hoe.json new file mode 100644 index 000000000..244a37ca4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/malatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:malatium_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_leggings.json new file mode 100644 index 000000000..c16be84eb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/malatium" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:malatium_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_pickaxe.json new file mode 100644 index 000000000..691f338f8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/malatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:malatium_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_shovel.json new file mode 100644 index 000000000..4494ede06 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/malatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:malatium_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_sword.json new file mode 100644 index 000000000..322481d86 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/malatium_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/malatium" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:malatium_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_axe.json new file mode 100644 index 000000000..fb2b52790 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/nickel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:nickel_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_boots.json new file mode 100644 index 000000000..9be8e3592 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/nickel" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:nickel_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_chestplate.json new file mode 100644 index 000000000..0fcb54f7d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/nickel" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:nickel_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_helmet.json new file mode 100644 index 000000000..3c9f91559 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/nickel" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:nickel_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_hoe.json new file mode 100644 index 000000000..829ae0d75 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/nickel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:nickel_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_leggings.json new file mode 100644 index 000000000..2f51078d9 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/nickel" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:nickel_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_pickaxe.json new file mode 100644 index 000000000..a0258bb70 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/nickel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:nickel_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_shovel.json new file mode 100644 index 000000000..a025118bc --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/nickel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:nickel_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_sword.json new file mode 100644 index 000000000..f61c67646 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nickel_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/nickel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:nickel_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_axe.json new file mode 100644 index 000000000..76956f349 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:nicrosil_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_boots.json new file mode 100644 index 000000000..873f6edbf --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:nicrosil_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_chestplate.json new file mode 100644 index 000000000..28420ab23 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:nicrosil_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_helmet.json new file mode 100644 index 000000000..f806c6a91 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:nicrosil_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_hoe.json new file mode 100644 index 000000000..88985d221 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:nicrosil_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_leggings.json new file mode 100644 index 000000000..65fd4ac94 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:nicrosil_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_pickaxe.json new file mode 100644 index 000000000..489add672 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:nicrosil_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_shovel.json new file mode 100644 index 000000000..7b7b09fbf --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:nicrosil_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_sword.json new file mode 100644 index 000000000..f904c69c4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/nicrosil_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/nicrosil" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:nicrosil_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_axe.json new file mode 100644 index 000000000..2d6bb925a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/pewter" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:pewter_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_boots.json new file mode 100644 index 000000000..d1c129181 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/pewter" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:pewter_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_chestplate.json new file mode 100644 index 000000000..c4c2fdfb4 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/pewter" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:pewter_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_helmet.json new file mode 100644 index 000000000..6cc5bc091 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/pewter" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:pewter_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_hoe.json new file mode 100644 index 000000000..9ed1c341b --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/pewter" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:pewter_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_leggings.json new file mode 100644 index 000000000..b056e23b0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/pewter" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:pewter_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_pickaxe.json new file mode 100644 index 000000000..8b151da90 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/pewter" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:pewter_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_shovel.json new file mode 100644 index 000000000..e4ccec135 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/pewter" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:pewter_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_sword.json new file mode 100644 index 000000000..70c3003cd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/pewter_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/pewter" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:pewter_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_axe.json new file mode 100644 index 000000000..174b2d97a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/silver" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:silver_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_boots.json new file mode 100644 index 000000000..a316e5be7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/silver" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:silver_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_chestplate.json new file mode 100644 index 000000000..6cf4862a9 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/silver" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:silver_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_helmet.json new file mode 100644 index 000000000..a423a13d0 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/silver" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:silver_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_hoe.json new file mode 100644 index 000000000..cad433c0a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/silver" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:silver_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_leggings.json new file mode 100644 index 000000000..43ddef38d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/silver" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:silver_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_pickaxe.json new file mode 100644 index 000000000..64002cffb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/silver" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:silver_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_shovel.json new file mode 100644 index 000000000..b3df4f56e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/silver" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:silver_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_sword.json new file mode 100644 index 000000000..dde297f37 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/silver_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/silver" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:silver_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_axe.json new file mode 100644 index 000000000..0fef5585f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/steel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:steel_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_boots.json new file mode 100644 index 000000000..c7f97de51 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/steel" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:steel_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_chestplate.json new file mode 100644 index 000000000..49476dff8 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/steel" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:steel_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_helmet.json new file mode 100644 index 000000000..c81cfb512 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/steel" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:steel_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_hoe.json new file mode 100644 index 000000000..ba244c748 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/steel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:steel_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_leggings.json new file mode 100644 index 000000000..3fb35e42a --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/steel" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:steel_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_pickaxe.json new file mode 100644 index 000000000..3b41a338c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/steel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:steel_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_shovel.json new file mode 100644 index 000000000..abe0d864d --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/steel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:steel_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_sword.json new file mode 100644 index 000000000..07a46c7c2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/steel_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/steel" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:steel_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_axe.json new file mode 100644 index 000000000..d45821b2c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/tin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:tin_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_boots.json new file mode 100644 index 000000000..9e1e20e0c --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/tin" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:tin_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_chestplate.json new file mode 100644 index 000000000..e867774ac --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/tin" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:tin_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_helmet.json new file mode 100644 index 000000000..1aca5f8ab --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/tin" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:tin_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_hoe.json new file mode 100644 index 000000000..0651acb94 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/tin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:tin_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_leggings.json new file mode 100644 index 000000000..a7f064319 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/tin" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:tin_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_pickaxe.json new file mode 100644 index 000000000..e8fc1bf00 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/tin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:tin_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_shovel.json new file mode 100644 index 000000000..6a99c9ba1 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/tin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:tin_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_sword.json new file mode 100644 index 000000000..e0b7790bb --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/tin_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/tin" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:tin_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_axe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_axe.json new file mode 100644 index 000000000..c69f9b3a7 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_axe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "axe", + "key": { + "X": { + "tag": "forge:ingots/zinc" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + "XY", + " Y" + ], + "result": { + "item": "cosmeretools:zinc_axe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_boots.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_boots.json new file mode 100644 index 000000000..854c3868f --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_boots.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "boots", + "key": { + "X": { + "tag": "forge:ingots/zinc" + } + }, + "pattern": [ + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:zinc_boots" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_chestplate.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_chestplate.json new file mode 100644 index 000000000..71ba6bcde --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_chestplate.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "chestplate", + "key": { + "X": { + "tag": "forge:ingots/zinc" + } + }, + "pattern": [ + "X X", + "XXX", + "XXX" + ], + "result": { + "item": "cosmeretools:zinc_chestplate" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_helmet.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_helmet.json new file mode 100644 index 000000000..d807e8f01 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_helmet.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "helmet", + "key": { + "X": { + "tag": "forge:ingots/zinc" + } + }, + "pattern": [ + "XXX", + "X X" + ], + "result": { + "item": "cosmeretools:zinc_helmet" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_hoe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_hoe.json new file mode 100644 index 000000000..83d09368e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_hoe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "hoe", + "key": { + "X": { + "tag": "forge:ingots/zinc" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XX", + " Y", + " Y" + ], + "result": { + "item": "cosmeretools:zinc_hoe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_leggings.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_leggings.json new file mode 100644 index 000000000..0d0a8eec2 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_leggings.json @@ -0,0 +1,19 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "leggings", + "key": { + "X": { + "tag": "forge:ingots/zinc" + } + }, + "pattern": [ + "XXX", + "X X", + "X X" + ], + "result": { + "item": "cosmeretools:zinc_leggings" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_pickaxe.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_pickaxe.json new file mode 100644 index 000000000..8b296796e --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_pickaxe.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "pickaxe", + "key": { + "X": { + "tag": "forge:ingots/zinc" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "XXX", + " Y ", + " Y " + ], + "result": { + "item": "cosmeretools:zinc_pickaxe" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_shovel.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_shovel.json new file mode 100644 index 000000000..b8ffc3ecd --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_shovel.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "shovel", + "key": { + "X": { + "tag": "forge:ingots/zinc" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "Y", + "Y" + ], + "result": { + "item": "cosmeretools:zinc_shovel" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_sword.json b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_sword.json new file mode 100644 index 000000000..e7226c470 --- /dev/null +++ b/src/datagen/generated/cosmeretools/data/cosmeretools/recipes/zinc_sword.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "equipment", + "group": "sword", + "key": { + "X": { + "tag": "forge:ingots/zinc" + }, + "Y": { + "tag": "forge:rods/wooden" + } + }, + "pattern": [ + "X", + "X", + "Y" + ], + "result": { + "item": "cosmeretools:zinc_sword" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index dbaea17c2..eba3b3a6e 100644 --- a/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.2777841 Loot Tables +// 1.20.1 2024-11-04T18:26:44.1668204 Loot Tables 1440a509cd4375633c42e39a73c393fac55bc5b5 data/cosmere/loot_tables/blocks/aluminum_block.json 7854c60cbd630700b8e8b09d03884e3d8bea1071 data/cosmere/loot_tables/blocks/aluminum_ore.json cd731279bd267f94d0afd47ad08ae376ed5a9f88 data/cosmere/loot_tables/blocks/atium_block.json @@ -9,7 +9,6 @@ b23765f334dad8db8a5ee67557013adaaf56aa49 data/cosmere/loot_tables/blocks/cadmium f1d6bbd3d03214d40b2f627e7d1d9497637b66dc data/cosmere/loot_tables/blocks/cadmium_ore.json 158625ad82a7f3412e2d8fe8ba5865ac45ea632a data/cosmere/loot_tables/blocks/chromium_block.json 8c92c3ddeb8026e2a8e06683c3858d175d2fd591 data/cosmere/loot_tables/blocks/chromium_ore.json -68c5f9187043df0179e5f770d9bb9b5bb6d92489 data/cosmere/loot_tables/blocks/copper_block.json f26338cd2feb44a55fe17b0a90ec95b114529122 data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json 10416896689350ded50137c72c82798c7d9bf532 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json a21fc0d65776ae4e1587c3e4b91d25179173aa7f data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json deleted file mode 100644 index 0ce593353..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/copper_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:copper_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/copper_block" -} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 25fc0dcef..5534a4b27 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -84,19 +84,21 @@ private void addItemsAndBlocks() //work through each metal and generate localisation for related things. for (Metals.MetalType metalType : Metals.MetalType.values()) { - //if a vanilla metal, like iron/gold - if (!metalType.hasMaterialItem()) + //if a vanilla metal, like iron/gold/copper + if (!metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) { final String name = metalType.getName(); //add(item.getDescriptionId(), localisedString); - final String n = name + "_nugget"; + if (metalType != Metals.MetalType.COPPER) // copper specifically has no vanilla nugget, and so we have already made this key + { + final String n = name + "_nugget"; + add("item.cosmere." + n, StringHelper.fixCapitalisation(n)); + } final String i = name + "_ingot"; final String b = name + "_block"; - add("item.cosmere." + n, StringHelper.fixCapitalisation(n)); add("item.cosmere." + i, StringHelper.fixCapitalisation(i)); add("item.cosmere." + b, StringHelper.fixCapitalisation(b)); } - } } diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index b096c5c70..383e6d2a3 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -65,6 +65,14 @@ protected void addRecipes(Consumer consumer) continue; } + // specifically copper has no nuggets, so create nugget and move on + if (metalType == Metals.MetalType.COPPER) + { + compressRecipe(Items.COPPER_INGOT, CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), Tags.Items.INGOTS_COPPER, metalType.getName() + "_item_deconstruct"); + continue; + } + compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).getBlock(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), ItemsRegistry.METAL_INGOTS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), BlocksRegistry.METAL_BLOCKS.get(metalType), metalType.getName() + "_block_deconstruct"); diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 79b9cf9a7..8909c5937 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -66,7 +66,7 @@ private void addItems() for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (metalType.hasMaterialItem()) + if (metalType.hasMaterialItem() && metalType != Metals.MetalType.COPPER) { MetalIngotItem ingotItem = ItemsRegistry.METAL_INGOTS.get(metalType).asItem(); @@ -95,6 +95,19 @@ private void addItems() } + // copper needs a nugget + if (metalType == Metals.MetalType.COPPER) + { + //tell the nuggets that our nugget tags are part of them + final TagKey metalNuggetTag = metalType.getMetalNuggetTag(); + getItemBuilder(Tags.Items.NUGGETS).add(metalNuggetTag); + + // tell the Nugget that our Nuggets are related + Item nuggetItem = ItemsRegistry.METAL_NUGGETS.get(metalType).asItem(); + + addToTag(metalNuggetTag, nuggetItem); + } + if (metalType.hasOre()) { Item item = ItemsRegistry.METAL_RAW_ORE.get(metalType).asItem(); @@ -119,7 +132,7 @@ private void addBlocks() for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (!metalType.hasMaterialItem()) + if (!metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) { continue; } @@ -172,7 +185,7 @@ private void addStorageBlocks() for (Metals.MetalType metalType : Metals.MetalType.values()) { - if (!metalType.hasMaterialItem()) + if (!metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) { continue; } diff --git a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java index 233327de3..1939e94ac 100644 --- a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java @@ -33,7 +33,7 @@ public class BlocksRegistry public static final Map> METAL_BLOCKS = Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) + .filter(type -> type.hasMaterialItem() && type != Metals.MetalType.COPPER) .collect(Collectors.toMap( Function.identity(), metalType -> BLOCKS.registerWithRarity( diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 35e4e734e..4ec18c57b 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -57,7 +57,7 @@ public class ItemsRegistry public static final Map> METAL_NUGGETS = Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) + .filter(type -> type.hasMaterialItem() || type == Metals.MetalType.COPPER) // I'm sorry for this Leaf :( >> Gerbagel .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -67,7 +67,7 @@ public class ItemsRegistry public static final Map> METAL_INGOTS = Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasMaterialItem) + .filter(type -> type.hasMaterialItem() && type != Metals.MetalType.COPPER) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( From 6fbcf46d201a9cea5a3b86011875c6a2e17bdc43 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 16 Nov 2024 14:40:53 +0100 Subject: [PATCH 0935/1090] [UI] First round of HUD improvements Replaced red text with an icon and vertical tap/store/burn indicator --- .../cap/entity/SpiritwebCapability.java | 120 ++++++++++++++++-- 1 file changed, 109 insertions(+), 11 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 5a0665012..87f843e86 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -5,13 +5,18 @@ package leaf.cosmere.common.cap.entity; import com.google.common.collect.Maps; +import com.mojang.blaze3d.font.GlyphInfo; import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.shaders.Shader; +import com.mojang.blaze3d.systems.RenderSystem; +import com.mojang.blaze3d.vertex.*; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; +import leaf.cosmere.api.helpers.DrawHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; @@ -21,11 +26,16 @@ import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.util.Mth; @@ -35,6 +45,7 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeMap; +import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderLevelStageEvent; @@ -43,10 +54,13 @@ import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.player.PlayerEvent; +import org.lwjgl.opengl.GL11; import javax.annotation.Nonnull; import javax.annotation.Nullable; +import java.awt.*; import java.util.*; +import java.util.List; /* "The actual outlet of the power is not chosen by the practitioner, but instead is hardwritten into their Spiritweb" @@ -499,12 +513,88 @@ public void renderSelectedHUD(GuiGraphics gg) int y = mainWindow.getGuiScaledHeight() / 5; String stringToDraw = I18n.get(selectedManifestation.getTextComponent().getString()); - gg.drawString(mc.font, stringToDraw, x + 18, y, 0xFF4444); + //gg.drawString(mc.font, stringToDraw, x + 18, y, 0xFF4444); int mode = getMode(selectedManifestation); String stringToDraw2 = ""; + gg.pose().pushPose(); + RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.enableBlend(); + RenderSystem.defaultBlendFunc(); + Tesselator tesselator = Tesselator.getInstance(); + BufferBuilder buffer = tesselator.getBuilder(); + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + + int startX = 10; + int startY = 50; + int size = 40; + + // draw square and manifestation icon + { + int color = 0xEE71797E; + //set first triangle + buffer.vertex(startX, startY, 0).color(color).endVertex(); + buffer.vertex(startX, startY + size, 0).color(color).endVertex(); + //set second triangle + buffer.vertex(startX + size, startY + size, 0).color(color).endVertex(); + buffer.vertex(startX + size, startY, 0).color(color).endVertex(); + } + + tesselator.end(); + gg.pose().popPose(); + + { + // icon + RenderSystem.setShader(GameRenderer::getPositionTexShader); + final StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.setLength(0); + String manifestationTypeName = selectedManifestation.getManifestationType().getName(); + stringBuilder + .append("textures/icon/") + .append(manifestationTypeName) + .append("/"); + switch (selectedManifestation.getManifestationType()) + { + case ALLOMANCY: + case FERUCHEMY: + if (selectedManifestation instanceof IHasMetalType metalType) + { + stringBuilder.append(metalType.getMetalType().getName()); + } + break; + case SURGEBINDING: + stringBuilder.append(selectedManifestation.getName()); + break; + case AON_DOR: + break; + case AWAKENING: + break; + } + stringBuilder.append(".png"); + + final ResourceLocation textureLocation = new ResourceLocation(selectedManifestation.getRegistryName().getNamespace(), stringBuilder.toString()); + RenderSystem.setShaderTexture(0, textureLocation); + int posX = startX + 4; + int posY = startY + 2; + if (selectedManifestation.getManifestationType() != Manifestations.ManifestationTypes.ALLOMANCY && selectedManifestation.getManifestationType() != Manifestations.ManifestationTypes.FERUCHEMY) + { + posX = startX + 2; + } + gg.blit(textureLocation, + posX, + posY, + size-4, + size-4, + 0, + 0, + 18, + 18, + 18, + 18); + } + RenderSystem.disableBlend(); //todo migrate drawing text to manifestation, this shouldn't be in main module. if (selectedManifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY) @@ -512,11 +602,11 @@ public void renderSelectedHUD(GuiGraphics gg) //todo translations if (mode < 0) { - stringToDraw2 = "Mode: " + "Tapping " + mode; + stringToDraw2 = "T" + mode; } else if (mode > 0) { - stringToDraw2 = "Mode: " + "Storing " + mode; + stringToDraw2 = "S" + mode; } else { @@ -530,19 +620,27 @@ else if (selectedManifestation.getManifestationType() == Manifestations.Manifest switch (mode) { - case -2 -> rate = "Flared Compounding!"; - case -1 -> rate = "Compounding"; - default -> rate = "Off"; - case 1 -> rate = "Burning"; - case 2, 3 -> rate = "Flared!";//copper has a 3rd mode for only smoking self + case -2 -> rate = "CF"; + case -1 -> rate = "C"; + default -> rate = ""; + case 1 -> rate = "B"; + case 2, 3 -> rate = "F";//copper has a 3rd mode for only smoking self } - stringToDraw2 = "Mode: " + rate; + stringToDraw2 = rate; } //todo translations if (!stringToDraw2.isEmpty()) { - gg.drawString(mc.font, stringToDraw2, x + 18, y + 10, 0xFF4444); + int yOffset = (size / 2) - (stringToDraw2.length() * mc.font.lineHeight) / 2; // center the text vertically + for (char c : stringToDraw2.toCharArray()) + { + if (c == '-') + c = '|'; + int xOffset = mc.font.width(String.valueOf(c)) / 2 - 4; + gg.drawString(mc.font, String.valueOf(c), startX - xOffset, startY + yOffset, 0xFFFFFF); + yOffset += mc.font.lineHeight; + } } } From 17b1db3ab84f5054d8977a27b9e99f89962cd314 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 18 Nov 2024 23:20:42 +0100 Subject: [PATCH 0936/1090] [UI] New HUD in a functional state Also added config option to turn it off --- .../allomancy/textures/gui/hud_background.png | Bin 0 -> 274 bytes .../feruchemy/textures/gui/hud_background.png | Bin 0 -> 5503 bytes .../cap/entity/SpiritwebCapability.java | 98 +++++++++++++++--- .../common/config/CosmereClientConfig.java | 3 + 4 files changed, 84 insertions(+), 17 deletions(-) create mode 100644 src/allomancy/resources/assets/allomancy/textures/gui/hud_background.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/gui/hud_background.png diff --git a/src/allomancy/resources/assets/allomancy/textures/gui/hud_background.png b/src/allomancy/resources/assets/allomancy/textures/gui/hud_background.png new file mode 100644 index 0000000000000000000000000000000000000000..a2d364d7bc3cdfcfaeb2849ce7a53fd834da8f15 GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+1|-AI^@Rf|#^NA%Cx&(BWL^R}XFOdTLo9mN zUbN+JG7xBZc)g9YBT(FfV{&t1$wzaGpYC^KN-p0#>YLQl-O}PI+YqWQb?UgoYu~p^ zzdxxmzxA#^{-40Lmm8F$*7XRS|GbewZo347J;%>I@f-_uxMvo}h&L#mKY7W;@mV(q z17pH%K8DCy1~boPJnOPyKTsI^N8!yIuaNethY`%eU%NTg7$Q@ePWF`;vaT{)*u2%s z=;)Nh*9mhc@GWyV8~Q3?lXC2u&)I4b*>27o<1#eDT3J8riQjFb`s?12>Bje}4)d3Y W_i{{&oaqAe7lWs(pUXO@geCxiDQ+zQ literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/gui/hud_background.png b/src/feruchemy/resources/assets/feruchemy/textures/gui/hud_background.png new file mode 100644 index 0000000000000000000000000000000000000000..cde8d23e596992c5503e5391f28040bcfe9a0387 GIT binary patch literal 5503 zcmeI0dvFuS9mmfG+eFw2uW<}G<#Nyj;-2oI*Xbe|jO2#`aui#GP1>3Cbhol^Z0UsV zEXhs^7}_*ohSHLf2{1GvkcNRtCM_8<@l1KeLm(t6aXZa4!MHTIuF1nrV-pu#x_5dY z6*?W;&40cb-QE87x1as}zWdu9pSO6bD+_cBbO?eJxT>5r@Ht2Q&B%rKHSce)gO8JK z-g>2mi=v^hzkH7^67uImG+ufEJa(pYgV~(57iu6`@-1^FLy2JZd-ZsFOUCpCtC7)>xlQ=)(cl- zx;L8&uXOC_+5A!6{zv++KIgHW=l9QEbidc}%-Os0+xsp(a&RCrcB-daH$3h1Gq3VD zKiw1f@|}^p=eAT-`=9U1>s>ef&H3%!1C4vvnJ*nFbDS^yN_uqBiG?2@T6@pgZT4po zBe46~$do)Rte^x_`d2nEpd`pXu{&fQCY=kVTROw*NzntFB~CwFw$)%@Vs*6l^RW>sd-ndg0M<$Uw0qXP%( zt3F(Rbn}Mu!wEk@89#Al2K7NY8zZ% zap~EdieUTiOs^g5E3IC%(b)3FQ`3rzvtP^xuSH`~=}GD4K5^vQwBrroE?4#JN?3Fe z5f)dydo{~T0X-*3KA?{ULa^!(#I`&Z;`k<@pgzzb2JP6FoyRd$6zo`?$xXUL4$vr8 zwS_@#TeX*OYvQc}w!Bnli?I+801Ai30?k30joC4c%fffnOkk+yqBPmDdbbC4NMV2) z^+r93m&e2ijg{(9TUhY3HO`6z0=Dc}qoRaZf`~?=`lvxKg&PRUYPAw1P0%zBJ#e`- zsBkenC@)qKafTDfd{_)Aq7+0`Cg+n{6g!5&el!_hAmnzZ@Ig7D0@Qqr5@(6?^0=nY}*$ek5Q3GVDCCr2J2nZ^R(-D;}w)y4FAA*oN&>%C@KI*mWTrUWXcUaNkN3lyU@!`T#c1J7rZki*C@Wl$2Pz7}^&;f> zO-7SoCM`Gv%og0p`8k{e780ioCKKc1&AebuM?4x9VO4U?=~1aD0ip~Bi-Dv#IM&Y? zaif_u<35XDz-a-p1x7GZ46j9_t^-@;2HoC3N~mR>cX%v z9VjiQRw^WGc9;$82m?-$!d^*gwqq(ARgtM~H{4JHr*KYA0dO{wHnJ4OQjC|TSQE{X zObJP`WSYMui2m09<*jZX)D~a#Dp7{>w`!*No~i}w;;neIS=2TYifY?}<@k6CG8X}Y z7AIuIyZA;f*Z|=9kto=tUA#jvkTmZXtY#C=TP$YW$eT!z_Gio>6zbd)qw-l7qXPWnN}>7M64IpINU&mfVa}CU>8H^7o%3%g};J zQ3_|}BGXmE#l8^@R5T|K863WWWW(0T=vc}&bH+67efXO(r2mUi?LB#0to>UA(Z(RU zytt$4G;5~D&akNf^-_WAWOusM$+asTcJ~BeDUeE=3`_$hBbW><712atnlA9Bfs!jR z5m*LDZA=!HN^PRB+agLD#v563oEFi47TH8#snjM4%ZMo1m<%ix(L`a%akqigj`2j6 v1Zi9Sa)107NgD6;{BJ&g>iq{&NX|tDI=8VKzy9cZ>R4BKwe!`LKiu?hP#I~* literal 0 HcmV?d00001 diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 87f843e86..84288d31d 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -38,6 +38,9 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.packs.resources.ReloadableResourceManager; +import net.minecraft.server.packs.resources.Resource; +import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.Mth; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.entity.Entity; @@ -59,6 +62,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.awt.*; +import java.io.FileNotFoundException; import java.util.*; import java.util.List; @@ -507,47 +511,69 @@ public void renderWorldEffects(RenderLevelStageEvent event) public void renderSelectedHUD(GuiGraphics gg) { + if (CosmereConfigs.CLIENT_CONFIG.disableSelectedManifestationHud.get()) + { + return; + } + Minecraft mc = Minecraft.getInstance(); - Window mainWindow = mc.getWindow(); - int x = 10; - int y = mainWindow.getGuiScaledHeight() / 5; + int startX = 10; + int startY = 20; + int size = 40; String stringToDraw = I18n.get(selectedManifestation.getTextComponent().getString()); - //gg.drawString(mc.font, stringToDraw, x + 18, y, 0xFF4444); + int xOffset = -5; + float textScale = size / (float) (mc.font.width(stringToDraw) - 20); + gg.pose().pushPose(); + gg.pose().scale(textScale, textScale, 1f); + gg.drawString(mc.font, stringToDraw, (int) ((startX + xOffset) / textScale), (int) ((startY + size + 5) / textScale), 0xFFFFFF); + gg.pose().popPose(); int mode = getMode(selectedManifestation); String stringToDraw2 = ""; gg.pose().pushPose(); - RenderSystem.setShader(GameRenderer::getPositionColorShader); + RenderSystem.setShader(GameRenderer::getPositionTexShader); RenderSystem.enableBlend(); RenderSystem.defaultBlendFunc(); Tesselator tesselator = Tesselator.getInstance(); BufferBuilder buffer = tesselator.getBuilder(); - buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); - int startX = 10; - int startY = 50; - int size = 40; + // draw square + try { + final ResourceLocation textureLocation = new ResourceLocation(selectedManifestation.getRegistryName().getNamespace(), "textures/gui/hud_background.png"); + mc.getResourceManager().getResourceOrThrow(textureLocation); - // draw square and manifestation icon + RenderSystem.setShaderTexture(0, textureLocation); + gg.blit(textureLocation, + startX, + startY, + size, + size, + 0, + 0, + 18, + 18, + 18, + 18); + } + catch (FileNotFoundException ex) // backup in case no texture { - int color = 0xEE71797E; + RenderSystem.setShader(GameRenderer::getPositionColorShader); + buffer.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR); + int color = 0xCC000000; //set first triangle buffer.vertex(startX, startY, 0).color(color).endVertex(); buffer.vertex(startX, startY + size, 0).color(color).endVertex(); //set second triangle buffer.vertex(startX + size, startY + size, 0).color(color).endVertex(); buffer.vertex(startX + size, startY, 0).color(color).endVertex(); + tesselator.end(); } - tesselator.end(); - gg.pose().popPose(); - + // draw manifestation icon { - // icon - RenderSystem.setShader(GameRenderer::getPositionTexShader); final StringBuilder stringBuilder = new StringBuilder(); stringBuilder.setLength(0); String manifestationTypeName = selectedManifestation.getManifestationType().getName(); @@ -594,6 +620,27 @@ public void renderSelectedHUD(GuiGraphics gg) 18, 18); } + + // todo draw pentagon +// { +// int color = 0xCC000000; +// float centerX = (float) mc.getWindow().getGuiScaledWidth() /2;//startX + (float) size / 2; +// float centerY = (float) mc.getWindow().getGuiScaledHeight() /2;//startY + size + 10; +// float[][] pentagonVertices = calculatePentagonVertices(centerX, centerY, 40, 0.5f); +// +// RenderSystem.setShader(GameRenderer::getPositionColorShader); +// buffer.begin(VertexFormat.Mode.TRIANGLE_FAN, DefaultVertexFormat.POSITION_COLOR); +// +// buffer.vertex(centerX, centerY, 0).color(color).endVertex(); // Center point for triangle fan +// for (float[] vertex : pentagonVertices) +// { +// buffer.vertex(vertex[0], vertex[1], 0).color(color).endVertex(); +// } +// buffer.vertex(pentagonVertices[0][0], pentagonVertices[0][1], 0).color(color).endVertex(); +// tesselator.end(); +// } + + gg.pose().popPose(); RenderSystem.disableBlend(); //todo migrate drawing text to manifestation, this shouldn't be in main module. @@ -637,13 +684,30 @@ else if (selectedManifestation.getManifestationType() == Manifestations.Manifest { if (c == '-') c = '|'; - int xOffset = mc.font.width(String.valueOf(c)) / 2 - 4; + xOffset = mc.font.width(String.valueOf(c)) / 2 - 4; gg.drawString(mc.font, String.valueOf(c), startX - xOffset, startY + yOffset, 0xFFFFFF); yOffset += mc.font.lineHeight; } } } + static float[][] calculatePentagonVertices(float centerX, float centerY, float radius, float scaleY) + { +// for i in range(5): +// angle = 2 * math.pi * i / 5 # Divide 360° into 5 angles (in radians) +// x = cx + radius * math.cos(angle) +// y = cy + radius * math.sin(angle) +// vertices.append((x, y)) +// return vertices + float[][] vertices = new float[5][2]; + for (int i = 0; i < 5; i++) { + double angle = 2 * Math.PI * ((double) i / 5); + vertices[i][0] = centerX + (float) (radius * Math.cos(angle)); + vertices[i][1] = centerY + (float) (radius * Math.sin(angle)); // Scale Y + } + return vertices; + } + @Override public void setSelectedManifestation(Manifestation manifestation) { diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index 48156ec1c..ff4dfdafa 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -11,6 +11,7 @@ public class CosmereClientConfig implements ICosmereConfig { private final ForgeConfigSpec configSpec; public final ForgeConfigSpec.BooleanValue disableItemTinting; + public final ForgeConfigSpec.BooleanValue disableSelectedManifestationHud; CosmereClientConfig() @@ -20,6 +21,8 @@ public class CosmereClientConfig implements ICosmereConfig disableItemTinting = builder.comment("Lets you disable item and block tinting for metal items and blocks").define("disableItemTinting", false); + disableSelectedManifestationHud = builder.comment("Disables the HUD for selected power").define("disableSelectedManifestationHud", false); + builder.pop(); configSpec = builder.build(); } From efce60b47da5b3423bd81456bab408904cdb1e22 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Tue, 19 Nov 2024 22:34:09 +0100 Subject: [PATCH 0937/1090] [UI] Fixed massive None text bug --- .../leaf/cosmere/common/cap/entity/SpiritwebCapability.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 84288d31d..d9ba2ae2d 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -511,7 +511,7 @@ public void renderWorldEffects(RenderLevelStageEvent event) public void renderSelectedHUD(GuiGraphics gg) { - if (CosmereConfigs.CLIENT_CONFIG.disableSelectedManifestationHud.get()) + if (CosmereConfigs.CLIENT_CONFIG.disableSelectedManifestationHud.get() || selectedManifestation.getManifestationType() == Manifestations.ManifestationTypes.NONE) { return; } From 57503a2c827081fc747e57ca7757261f8601d9c9 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 10:52:16 +1300 Subject: [PATCH 0938/1090] [Port] Ore generation --- src/api/java/leaf/cosmere/api/Metals.java | 16 +- .../feruchemy/FeruchemyCuriosProvider.java | 5 +- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 8 +- .../57823f1d1ffdc78dae2209031097364f4ed6372b | 59 +++++ .../forge/biome_modifier/aluminum.json | 10 + .../cosmere/forge/biome_modifier/cadmium.json | 10 + .../forge/biome_modifier/chromium.json | 10 + .../cosmere/forge/biome_modifier/lead.json | 10 + .../cosmere/forge/biome_modifier/nickel.json | 10 + .../cosmere/forge/biome_modifier/silver.json | 10 + .../cosmere/forge/biome_modifier/tin.json | 10 + .../cosmere/forge/biome_modifier/zinc.json | 10 + .../ore_aluminum_buried.json | 29 +++ .../ore_aluminum_medium.json | 29 +++ .../ore_aluminum_small.json | 29 +++ .../ore_cadmium_abundant.json | 29 +++ .../configured_feature/ore_cadmium_deep.json | 29 +++ .../ore_cadmium_normal.json | 29 +++ .../configured_feature/ore_chromium_deep.json | 29 +++ .../ore_chromium_normal.json | 29 +++ .../configured_feature/ore_chromium_rare.json | 29 +++ .../configured_feature/ore_lead_abundant.json | 29 +++ .../configured_feature/ore_lead_deep.json | 29 +++ .../configured_feature/ore_lead_normal.json | 29 +++ .../configured_feature/ore_nickel_middle.json | 29 +++ .../configured_feature/ore_nickel_small.json | 29 +++ .../configured_feature/ore_nickel_upper.json | 29 +++ .../ore_silver_abundant.json | 29 +++ .../configured_feature/ore_silver_normal.json | 29 +++ .../configured_feature/ore_silver_rich.json | 29 +++ .../configured_feature/ore_tin_abundant.json | 29 +++ .../configured_feature/ore_tin_medium.json | 29 +++ .../configured_feature/ore_tin_small.json | 29 +++ .../configured_feature/ore_zinc_deep.json | 29 +++ .../configured_feature/ore_zinc_middle.json | 29 +++ .../configured_feature/ore_zinc_upper.json | 29 +++ .../placed_feature/ore_aluminum_buried.json | 31 +++ .../placed_feature/ore_aluminum_medium.json | 31 +++ .../placed_feature/ore_aluminum_small.json | 31 +++ .../placed_feature/ore_cadmium_abundant.json | 31 +++ .../placed_feature/ore_cadmium_deep.json | 31 +++ .../placed_feature/ore_cadmium_normal.json | 31 +++ .../placed_feature/ore_chromium_deep.json | 31 +++ .../placed_feature/ore_chromium_normal.json | 31 +++ .../placed_feature/ore_chromium_rare.json | 31 +++ .../placed_feature/ore_lead_abundant.json | 31 +++ .../placed_feature/ore_lead_deep.json | 31 +++ .../placed_feature/ore_lead_normal.json | 31 +++ .../placed_feature/ore_nickel_middle.json | 31 +++ .../placed_feature/ore_nickel_small.json | 31 +++ .../placed_feature/ore_nickel_upper.json | 31 +++ .../placed_feature/ore_silver_abundant.json | 31 +++ .../placed_feature/ore_silver_normal.json | 31 +++ .../placed_feature/ore_silver_rich.json | 31 +++ .../placed_feature/ore_tin_abundant.json | 31 +++ .../placed_feature/ore_tin_medium.json | 31 +++ .../placed_feature/ore_tin_small.json | 31 +++ .../placed_feature/ore_zinc_deep.json | 31 +++ .../placed_feature/ore_zinc_middle.json | 31 +++ .../placed_feature/ore_zinc_upper.json | 31 +++ .../tags/blocks/mineable/pickaxe.json | 30 +-- .../tags/blocks/needs_iron_tool.json | 16 +- .../tags/blocks/needs_stone_tool.json | 4 +- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../hemalurgy/HemalurgyCuriosProvider.java | 5 +- .../main/java/leaf/cosmere/RecipeGen.java | 18 +- .../CosmereDatapackRegistryProvider.java | 118 ++++++++- .../cosmere/patchouli/data/BookStuff.java | 4 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 30 +-- .../java/leaf/cosmere/common/Cosmere.java | 7 +- .../cosmere/common/config/CosmereConfigs.java | 4 +- .../common/config/CosmereWorldConfig.java | 144 +++++++++++ .../impl/FeatureDeferredRegister.java | 26 ++ .../impl/FeatureRegistryObject.java | 19 ++ .../HeightProviderTypeDeferredRegister.java | 31 +++ .../HeightProviderTypeRegistryObject.java | 18 ++ .../impl/IntProviderTypeDeferredRegister.java | 32 +++ .../impl/IntProviderTypeRegistryObject.java | 19 ++ .../registry/BiomeModifierRegistry.java | 6 +- .../common/registry/BlocksRegistry.java | 11 +- .../common/registry/FeatureRegistry.java | 89 +------ .../registry/HeightProviderTypesRegistry.java | 17 ++ .../registry/IntProviderTypesRegistry.java | 17 ++ .../common/resource/ore/BaseOreConfig.java | 33 +++ .../common/resource/ore/OreAnchor.java | 29 +++ .../cosmere/common/resource/ore/OreType.java | 126 ++++++++++ .../common/world/ConfigurableConstantInt.java | 86 +++++++ .../world/MetalOreBiomeFeatureModifier.java | 60 ----- .../common/world/ResizableOreFeature.java | 225 ++++++++++++++++++ .../world/ResizableOreFeatureConfig.java | 31 +++ .../common/world/height/AnchorType.java | 34 +++ .../height/ConfigurableHeightProvider.java | 111 +++++++++ .../world/height/ConfigurableHeightRange.java | 59 +++++ .../height/ConfigurableVerticalAnchor.java | 72 ++++++ .../common/world/height/HeightShape.java | 12 + 98 files changed, 2935 insertions(+), 232 deletions(-) create mode 100644 src/datagen/generated/cosmere/.cache/57823f1d1ffdc78dae2209031097364f4ed6372b create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_buried.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_medium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_rare.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_middle.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_upper.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_rich.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_medium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_middle.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_upper.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_buried.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_medium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_rare.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_middle.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_upper.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_normal.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_rich.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_abundant.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_medium.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_small.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_deep.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_middle.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_upper.json create mode 100644 src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/FeatureDeferredRegister.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/FeatureRegistryObject.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeDeferredRegister.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeRegistryObject.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeDeferredRegister.java create mode 100644 src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeRegistryObject.java create mode 100644 src/main/java/leaf/cosmere/common/registry/HeightProviderTypesRegistry.java create mode 100644 src/main/java/leaf/cosmere/common/registry/IntProviderTypesRegistry.java create mode 100644 src/main/java/leaf/cosmere/common/resource/ore/BaseOreConfig.java create mode 100644 src/main/java/leaf/cosmere/common/resource/ore/OreAnchor.java create mode 100644 src/main/java/leaf/cosmere/common/resource/ore/OreType.java create mode 100644 src/main/java/leaf/cosmere/common/world/ConfigurableConstantInt.java delete mode 100644 src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java create mode 100644 src/main/java/leaf/cosmere/common/world/ResizableOreFeature.java create mode 100644 src/main/java/leaf/cosmere/common/world/ResizableOreFeatureConfig.java create mode 100644 src/main/java/leaf/cosmere/common/world/height/AnchorType.java create mode 100644 src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightProvider.java create mode 100644 src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightRange.java create mode 100644 src/main/java/leaf/cosmere/common/world/height/ConfigurableVerticalAnchor.java create mode 100644 src/main/java/leaf/cosmere/common/world/height/HeightShape.java diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 1c1783876..c4e5adee6 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.api; @@ -264,16 +264,16 @@ public boolean hasOre() { switch (this) { + //case IRON: // covered by minecraft + case TIN: + //case COPPER: // covered by minecraft + case ZINC: case ALUMINUM: - case CADMIUM: case CHROMIUM: - //case IRON: // covered by minecraft + //case GOLD: // covered by minecraft + case CADMIUM: case NICKEL: - //case COPPER: // covered by minecraft - case ZINC: case SILVER: - case TIN: - //case GOLD: // covered by minecraft case LEAD: return true; default: @@ -307,7 +307,7 @@ public boolean hasMaterialItem() { case IRON: case GOLD: - //case COPPER: + //case COPPER: return false; default: return true; diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java index 70d96e559..2c2243ec4 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyCuriosProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -39,7 +39,8 @@ public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHe .dropRule(ICurio.DropRule.ALWAYS_KEEP); this.createEntities("feruchemists") - .addEntities(EntityType.PLAYER, EntityType.ARMOR_STAND) // todo inquisitors + .addPlayer() + .addEntities(EntityType.ARMOR_STAND) // todo inquisitors .addSlots("necklace", "bracelet", "ring"); } } diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 5f3bffaef..0ea610f4b 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-04T18:26:44.0674115 Tags: cosmere +// 1.20.1 2024-11-20T10:15:19.8914061 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json 29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -118,8 +118,8 @@ ba66a11a92fb155d8de179f3a24e01ea3a763255 data/forge/tags/items/storage_blocks/ti 15f37fc42e91a2576f74d58e17e68ec24def1505 data/forge/tags/items/storage_blocks/zinc.json 5ac052c5e6c3d60c719087891e3f2fa00220c040 data/minecraft/tags/blocks/beacon_base_blocks.json d3a86f2ebc65cb1002d7b7bf25b64d7716ca748c data/minecraft/tags/blocks/mineable/axe.json -aa1455f74d106d8636e039dcd11b9f364f603234 data/minecraft/tags/blocks/mineable/pickaxe.json -acc52727279f24a6209e4fd41825c55ebf8db795 data/minecraft/tags/blocks/needs_iron_tool.json -a392c38fde2e886f438ad7289b3cdec3ad7875f6 data/minecraft/tags/blocks/needs_stone_tool.json +b9b84c453e69464bbde1c3e928f9195e42104d06 data/minecraft/tags/blocks/mineable/pickaxe.json +6bb4f3252166223dc19ecc5996f9ba2209169a0c data/minecraft/tags/blocks/needs_iron_tool.json +69e4ba1267e904246287f8ef4bd63b79b2ce4e1f data/minecraft/tags/blocks/needs_stone_tool.json 189ad22331d159102eee28a57ebe9bfee7ff8a46 data/minecraft/tags/game_events/vibrations.json 189ad22331d159102eee28a57ebe9bfee7ff8a46 data/minecraft/tags/game_events/warden_can_listen.json diff --git a/src/datagen/generated/cosmere/.cache/57823f1d1ffdc78dae2209031097364f4ed6372b b/src/datagen/generated/cosmere/.cache/57823f1d1ffdc78dae2209031097364f4ed6372b new file mode 100644 index 000000000..3a34f2505 --- /dev/null +++ b/src/datagen/generated/cosmere/.cache/57823f1d1ffdc78dae2209031097364f4ed6372b @@ -0,0 +1,59 @@ +// 1.20.1 2024-11-20T09:55:55.4356553 Datapack registries: cosmere +3c550de803d2cef31d694c8d3dc76fb777ed718b data/cosmere/damage_type/eat_metal.json +a1998d540bb2a50c1e837ec4fb303c9b5b693e58 data/cosmere/damage_type/spiked.json +e88b81d0129261da7edf162f2c11a166cd427840 data/cosmere/forge/biome_modifier/aluminum.json +a5cb11e338001aab9267a284f6ff549c7eda79e8 data/cosmere/forge/biome_modifier/cadmium.json +09a466d03edcf818be6b4615f45d4b180d932650 data/cosmere/forge/biome_modifier/chromium.json +f62820de383655b9bdbab753d187e8cccca56d7a data/cosmere/forge/biome_modifier/lead.json +39e9a9d7cd77fab7f3eac8c1647f24d5a3f9989e data/cosmere/forge/biome_modifier/nickel.json +179a29a35d601bd5dc346d3b7281ae3d631d1cd4 data/cosmere/forge/biome_modifier/silver.json +1b3640012887e6aa2f5ead2217fb386b16c52216 data/cosmere/forge/biome_modifier/tin.json +09894776324aa9d5a8bd79578444c3401a4c5ae0 data/cosmere/forge/biome_modifier/zinc.json +1341f2a847ae3f27c9114f151554e5e41072429a data/cosmere/worldgen/configured_feature/ore_aluminum_buried.json +f0628f328352ed7c7bf38f1b2d62daeb444ea1c6 data/cosmere/worldgen/configured_feature/ore_aluminum_medium.json +62f700b0ce8279c222b459770e0a3c9727bf9c41 data/cosmere/worldgen/configured_feature/ore_aluminum_small.json +5c32d2756eae86e97de1f79cb755ff0848e7e586 data/cosmere/worldgen/configured_feature/ore_cadmium_abundant.json +529305450822518cecc8641b912ff624d529db1c data/cosmere/worldgen/configured_feature/ore_cadmium_deep.json +2374237290c9014ac1416327b1349ef9abd013af data/cosmere/worldgen/configured_feature/ore_cadmium_normal.json +c84474f103bff08413fd00556b4f6de916fec27a data/cosmere/worldgen/configured_feature/ore_chromium_deep.json +5acba3226b7a85178f4f638cb320984858c2f28a data/cosmere/worldgen/configured_feature/ore_chromium_normal.json +9a586ede100a959c2b323ebcff4829adfc507d8a data/cosmere/worldgen/configured_feature/ore_chromium_rare.json +a5cfc4a9f6cc5fd88c2684a19e2d3d35da4e3274 data/cosmere/worldgen/configured_feature/ore_lead_abundant.json +a32987c0fcaafa4bab55aa15e218ef5c42b2246a data/cosmere/worldgen/configured_feature/ore_lead_deep.json +35103c04482a10a74da2a57c298ec780065c708e data/cosmere/worldgen/configured_feature/ore_lead_normal.json +43b74c902ff86e1cf1e1c2ad53699d8879fe8bd2 data/cosmere/worldgen/configured_feature/ore_nickel_middle.json +ad8faf810595b507e49a718b8ce609b431b076cf data/cosmere/worldgen/configured_feature/ore_nickel_small.json +9d8969def2b9a4a1ca59ee4d9f3d0e8a61b416f3 data/cosmere/worldgen/configured_feature/ore_nickel_upper.json +68faa0c948712c49761f73dd4c191d6f82ae8622 data/cosmere/worldgen/configured_feature/ore_silver_abundant.json +682c0eb9b6ab402597d6af059fb0635ea0b2da08 data/cosmere/worldgen/configured_feature/ore_silver_normal.json +478f4089ea9aed261bed8400eda55f4253f58e9e data/cosmere/worldgen/configured_feature/ore_silver_rich.json +110982635d9492b4f99ee5bd01b941db3c715d00 data/cosmere/worldgen/configured_feature/ore_tin_abundant.json +079d1704a6e505ae0c451febe9e52011bc37570d data/cosmere/worldgen/configured_feature/ore_tin_medium.json +25fad11d58d03c1c5d3d2323706184e620522062 data/cosmere/worldgen/configured_feature/ore_tin_small.json +ee2c429dcd3afbbb1fdeefdad72646f488763ba2 data/cosmere/worldgen/configured_feature/ore_zinc_deep.json +d3010f6e3617022174be9865790cf725aaaf80bb data/cosmere/worldgen/configured_feature/ore_zinc_middle.json +aea436f01020e0ccc9455ee1e736eefd6d6fa106 data/cosmere/worldgen/configured_feature/ore_zinc_upper.json +ef22cbb61be0482ed7ab51c884bf37bf0d44a831 data/cosmere/worldgen/placed_feature/ore_aluminum_buried.json +0fc88893b011ec1a513894b3bdf44305cca5f6ea data/cosmere/worldgen/placed_feature/ore_aluminum_medium.json +7281c1d40482f7dcfe32b6cd84598c7fb89ed98c data/cosmere/worldgen/placed_feature/ore_aluminum_small.json +63c1bcb4951d5643f58348e5a74258bffb4676e7 data/cosmere/worldgen/placed_feature/ore_cadmium_abundant.json +f1a2cb62c0edffe6d8d8a43496ed63fe46caa5e7 data/cosmere/worldgen/placed_feature/ore_cadmium_deep.json +659d2fa03441ea3ae99981574fee19253c7128bc data/cosmere/worldgen/placed_feature/ore_cadmium_normal.json +2e54da3fa452539df938af403d560ae68f1d4279 data/cosmere/worldgen/placed_feature/ore_chromium_deep.json +0fddd1254d14643213ee1241f1cf1cd57c360025 data/cosmere/worldgen/placed_feature/ore_chromium_normal.json +997e6d2f3d796250ee2162a0251a348edb1659f8 data/cosmere/worldgen/placed_feature/ore_chromium_rare.json +43d31445ce8752bafe0418ca043bd67532e78222 data/cosmere/worldgen/placed_feature/ore_lead_abundant.json +205ade34e8fa20a6fade2d31b77704b8861c6537 data/cosmere/worldgen/placed_feature/ore_lead_deep.json +05d3e53b5c4c75a8412e543fa62d0ace6e8e7119 data/cosmere/worldgen/placed_feature/ore_lead_normal.json +0d233c2a61341bbb335153c839e8475217ac5f4a data/cosmere/worldgen/placed_feature/ore_nickel_middle.json +ce439568a9517f9ec9d00000659ac510fab7fe47 data/cosmere/worldgen/placed_feature/ore_nickel_small.json +d47c8dc5e082e533cbbe49043b63c46d99493f02 data/cosmere/worldgen/placed_feature/ore_nickel_upper.json +fcf799e662b12d8042383c6dd1d0433acbe06545 data/cosmere/worldgen/placed_feature/ore_silver_abundant.json +c0b72c349c8862d794ca175791d3cd2d141c8301 data/cosmere/worldgen/placed_feature/ore_silver_normal.json +aba95a7af76b7598f7f894e957f71f33342aac53 data/cosmere/worldgen/placed_feature/ore_silver_rich.json +cb29a6efc551894acd99508a9137f337d8eda23f data/cosmere/worldgen/placed_feature/ore_tin_abundant.json +32ec4a91c497debff28c1836d6d6c9ab52916e5e data/cosmere/worldgen/placed_feature/ore_tin_medium.json +a97452f079806a503c9b4dcd7b310a15bdbc7a37 data/cosmere/worldgen/placed_feature/ore_tin_small.json +9af8b0c6f481ca9ef9317967fe5dd4e5b6927b94 data/cosmere/worldgen/placed_feature/ore_zinc_deep.json +d1e7ce7ee461f5fe40776b22f6498eafa0ac1a35 data/cosmere/worldgen/placed_feature/ore_zinc_middle.json +98de00b368be92111859ecad41c68aa24374216f data/cosmere/worldgen/placed_feature/ore_zinc_upper.json diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum.json new file mode 100644 index 000000000..5b0b674f7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/aluminum.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_aluminum_small", + "cosmere:ore_aluminum_medium", + "cosmere:ore_aluminum_buried" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium.json new file mode 100644 index 000000000..7263a1f61 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/cadmium.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_cadmium_normal", + "cosmere:ore_cadmium_abundant", + "cosmere:ore_cadmium_deep" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium.json new file mode 100644 index 000000000..7b4139e93 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/chromium.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_chromium_rare", + "cosmere:ore_chromium_normal", + "cosmere:ore_chromium_deep" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead.json new file mode 100644 index 000000000..d362ff198 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/lead.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_lead_normal", + "cosmere:ore_lead_abundant", + "cosmere:ore_lead_deep" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel.json new file mode 100644 index 000000000..345043515 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/nickel.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_nickel_upper", + "cosmere:ore_nickel_middle", + "cosmere:ore_nickel_small" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver.json new file mode 100644 index 000000000..85c592911 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/silver.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_silver_normal", + "cosmere:ore_silver_abundant", + "cosmere:ore_silver_rich" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin.json new file mode 100644 index 000000000..0155683f8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/tin.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_tin_small", + "cosmere:ore_tin_medium", + "cosmere:ore_tin_abundant" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc.json b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc.json new file mode 100644 index 000000000..a48a5c530 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/forge/biome_modifier/zinc.json @@ -0,0 +1,10 @@ +{ + "type": "forge:add_features", + "biomes": "#cosmere:spawn_ores", + "features": [ + "cosmere:ore_zinc_upper", + "cosmere:ore_zinc_middle", + "cosmere:ore_zinc_deep" + ], + "step": "underground_ores" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_buried.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_buried.json new file mode 100644 index 000000000..405f1fb1b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_buried.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "aluminum", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_medium.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_medium.json new file mode 100644 index 000000000..17c605cae --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_medium.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "aluminum", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_small.json new file mode 100644 index 000000000..99eb66508 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_aluminum_small.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "aluminum", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_aluminum_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_abundant.json new file mode 100644 index 000000000..815b81066 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_abundant.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "cadmium", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_deep.json new file mode 100644 index 000000000..608d370ea --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_deep.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "cadmium", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_normal.json new file mode 100644 index 000000000..85ee817a9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_cadmium_normal.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "cadmium", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_cadmium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_deep.json new file mode 100644 index 000000000..a143eea8a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_deep.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "chromium", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_normal.json new file mode 100644 index 000000000..b7d394a9a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_normal.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "chromium", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_rare.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_rare.json new file mode 100644 index 000000000..1b465370c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_chromium_rare.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "chromium", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_chromium_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_abundant.json new file mode 100644 index 000000000..19696504c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_abundant.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "lead", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_deep.json new file mode 100644 index 000000000..cf390f207 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_deep.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "lead", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_normal.json new file mode 100644 index 000000000..7a7138e52 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_lead_normal.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "lead", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_lead_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_middle.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_middle.json new file mode 100644 index 000000000..999ce3fad --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_middle.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "nickel", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_small.json new file mode 100644 index 000000000..04b7ff2a9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_small.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "nickel", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_upper.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_upper.json new file mode 100644 index 000000000..d7274e63f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_nickel_upper.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "nickel", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_nickel_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_abundant.json new file mode 100644 index 000000000..648cc5b9e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_abundant.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "silver", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_normal.json new file mode 100644 index 000000000..615ab584d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_normal.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "silver", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_rich.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_rich.json new file mode 100644 index 000000000..adaa9a943 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_silver_rich.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "silver", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_silver_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_abundant.json new file mode 100644 index 000000000..3013b6f69 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_abundant.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "tin", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_medium.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_medium.json new file mode 100644 index 000000000..dedcadf8a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_medium.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "tin", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_small.json new file mode 100644 index 000000000..0aad8d6e6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_tin_small.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "tin", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_tin_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_deep.json new file mode 100644 index 000000000..fbcc03886 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_deep.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "zinc", + "index": 2 + }, + "targets": [ + { + "state": { + "Name": "cosmere:zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_middle.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_middle.json new file mode 100644 index 000000000..2188a9cba --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_middle.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "zinc", + "index": 1 + }, + "targets": [ + { + "state": { + "Name": "cosmere:zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_upper.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_upper.json new file mode 100644 index 000000000..62253b605 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/configured_feature/ore_zinc_upper.json @@ -0,0 +1,29 @@ +{ + "type": "cosmere:ore", + "config": { + "oreVeinType": { + "type": "zinc", + "index": 0 + }, + "targets": [ + { + "state": { + "Name": "cosmere:zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:stone_ore_replaceables" + } + }, + { + "state": { + "Name": "cosmere:deepslate_zinc_ore" + }, + "target": { + "predicate_type": "minecraft:tag_match", + "tag": "minecraft:deepslate_ore_replaceables" + } + } + ] + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_buried.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_buried.json new file mode 100644 index 000000000..ce55c42e8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_buried.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_aluminum_buried", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "aluminum", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "aluminum", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_medium.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_medium.json new file mode 100644 index 000000000..9c85f4801 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_medium.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_aluminum_medium", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "aluminum", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "aluminum", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_small.json new file mode 100644 index 000000000..e9f472a73 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_aluminum_small.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_aluminum_small", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "aluminum", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "aluminum", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_abundant.json new file mode 100644 index 000000000..65182fefd --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_abundant.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_cadmium_abundant", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "cadmium", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "cadmium", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_deep.json new file mode 100644 index 000000000..859e616e9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_deep.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_cadmium_deep", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "cadmium", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "cadmium", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_normal.json new file mode 100644 index 000000000..e163d5fa1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_cadmium_normal.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_cadmium_normal", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "cadmium", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "cadmium", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_deep.json new file mode 100644 index 000000000..25fd3ae68 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_deep.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_chromium_deep", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "chromium", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "chromium", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_normal.json new file mode 100644 index 000000000..329bea522 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_normal.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_chromium_normal", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "chromium", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "chromium", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_rare.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_rare.json new file mode 100644 index 000000000..b79ac17af --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_chromium_rare.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_chromium_rare", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "chromium", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "chromium", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_abundant.json new file mode 100644 index 000000000..365d85537 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_abundant.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_lead_abundant", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "lead", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "lead", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_deep.json new file mode 100644 index 000000000..1589d6388 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_deep.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_lead_deep", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "lead", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "lead", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_normal.json new file mode 100644 index 000000000..64aa11e29 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_lead_normal.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_lead_normal", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "lead", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "lead", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_middle.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_middle.json new file mode 100644 index 000000000..ed4096b03 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_middle.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_nickel_middle", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "nickel", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "nickel", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_small.json new file mode 100644 index 000000000..a8103b7d6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_small.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_nickel_small", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "nickel", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "nickel", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_upper.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_upper.json new file mode 100644 index 000000000..4c2ab66f0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_nickel_upper.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_nickel_upper", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "nickel", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "nickel", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_abundant.json new file mode 100644 index 000000000..4d1194b31 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_abundant.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_silver_abundant", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "silver", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "silver", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_normal.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_normal.json new file mode 100644 index 000000000..6f78cf010 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_normal.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_silver_normal", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "silver", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "silver", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_rich.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_rich.json new file mode 100644 index 000000000..85ce2a85e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_silver_rich.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_silver_rich", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "silver", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "silver", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_abundant.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_abundant.json new file mode 100644 index 000000000..79376e363 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_abundant.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_tin_abundant", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "tin", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "tin", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_medium.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_medium.json new file mode 100644 index 000000000..041f6acb4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_medium.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_tin_medium", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "tin", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "tin", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_small.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_small.json new file mode 100644 index 000000000..22e259f49 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_tin_small.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_tin_small", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "tin", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "tin", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_deep.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_deep.json new file mode 100644 index 000000000..e3cc1653d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_deep.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_zinc_deep", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "zinc", + "index": 2 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "zinc", + "index": 2 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_middle.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_middle.json new file mode 100644 index 000000000..1fc4c3a4d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_middle.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_zinc_middle", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "zinc", + "index": 1 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "zinc", + "index": 1 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_upper.json b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_upper.json new file mode 100644 index 000000000..e12467a29 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/worldgen/placed_feature/ore_zinc_upper.json @@ -0,0 +1,31 @@ +{ + "feature": "cosmere:ore_zinc_upper", + "placement": [ + { + "type": "minecraft:count", + "count": { + "type": "cosmere:configurable_constant", + "oreVeinType": { + "type": "zinc", + "index": 0 + } + } + }, + { + "type": "minecraft:in_square" + }, + { + "type": "minecraft:height_range", + "height": { + "type": "cosmere:configurable", + "oreVeinType": { + "type": "zinc", + "index": 0 + } + } + }, + { + "type": "minecraft:biome" + } + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json index 2c2f9d067..b61dd98b9 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -1,25 +1,15 @@ { "values": [ "cosmere:steel_block", - "cosmere:tin_ore", - "cosmere:deepslate_tin_ore", "cosmere:tin_block", "cosmere:pewter_block", - "cosmere:zinc_ore", - "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:bronze_block", - "cosmere:aluminum_ore", - "cosmere:deepslate_aluminum_ore", "cosmere:aluminum_block", "cosmere:duralumin_block", - "cosmere:chromium_ore", - "cosmere:deepslate_chromium_ore", "cosmere:chromium_block", "cosmere:nicrosil_block", - "cosmere:cadmium_ore", - "cosmere:deepslate_cadmium_ore", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -28,14 +18,24 @@ "cosmere:harmonium_block", "cosmere:malatium_block", "cosmere:lerasatium_block", - "cosmere:nickel_ore", - "cosmere:deepslate_nickel_ore", "cosmere:nickel_block", - "cosmere:lead_ore", - "cosmere:deepslate_lead_ore", "cosmere:lead_block", + "cosmere:silver_block", + "cosmere:tin_ore", + "cosmere:deepslate_tin_ore", + "cosmere:zinc_ore", + "cosmere:deepslate_zinc_ore", + "cosmere:aluminum_ore", + "cosmere:deepslate_aluminum_ore", + "cosmere:chromium_ore", + "cosmere:deepslate_chromium_ore", + "cosmere:cadmium_ore", + "cosmere:deepslate_cadmium_ore", + "cosmere:nickel_ore", + "cosmere:deepslate_nickel_ore", "cosmere:silver_ore", "cosmere:deepslate_silver_ore", - "cosmere:silver_block" + "cosmere:lead_ore", + "cosmere:deepslate_lead_ore" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json index 844ca09ea..7990f58df 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_iron_tool.json @@ -1,20 +1,15 @@ { "values": [ "cosmere:steel_block", - "cosmere:deepslate_tin_ore", "cosmere:tin_block", "cosmere:pewter_block", - "cosmere:deepslate_zinc_ore", "cosmere:zinc_block", "cosmere:brass_block", "cosmere:bronze_block", - "cosmere:deepslate_aluminum_ore", "cosmere:aluminum_block", "cosmere:duralumin_block", - "cosmere:deepslate_chromium_ore", "cosmere:chromium_block", "cosmere:nicrosil_block", - "cosmere:deepslate_cadmium_ore", "cosmere:cadmium_block", "cosmere:bendalloy_block", "cosmere:electrum_block", @@ -23,11 +18,16 @@ "cosmere:harmonium_block", "cosmere:malatium_block", "cosmere:lerasatium_block", - "cosmere:deepslate_nickel_ore", "cosmere:nickel_block", - "cosmere:deepslate_lead_ore", "cosmere:lead_block", + "cosmere:silver_block", + "cosmere:deepslate_tin_ore", + "cosmere:deepslate_zinc_ore", + "cosmere:deepslate_aluminum_ore", + "cosmere:deepslate_chromium_ore", + "cosmere:deepslate_cadmium_ore", + "cosmere:deepslate_nickel_ore", "cosmere:deepslate_silver_ore", - "cosmere:silver_block" + "cosmere:deepslate_lead_ore" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_stone_tool.json b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_stone_tool.json index f0bcc3135..e5a091497 100644 --- a/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_stone_tool.json +++ b/src/datagen/generated/cosmere/data/minecraft/tags/blocks/needs_stone_tool.json @@ -7,7 +7,7 @@ "cosmere:chromium_ore", "cosmere:cadmium_ore", "cosmere:nickel_ore", - "cosmere:lead_ore", - "cosmere:silver_ore" + "cosmere:silver_ore", + "cosmere:lead_ore" ] } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 2c992ac8d..416068a99 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-03T15:24:01.0450491 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2024-11-20T10:15:20.0685579 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index 61b319ff8..da81b44bb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 2e3c78691..06f299a08 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-03T15:24:01.0985693 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2024-11-20T10:15:20.1115917 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java index cafa63546..1d3a2b949 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyCuriosProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -74,7 +74,8 @@ public void generate(HolderLookup.Provider registries, ExistingFileHelper fileHe .addCosmetic(true); this.createEntities("hemalurgists") - .addEntities(EntityType.PLAYER, EntityType.ARMOR_STAND) // todo inquisitors + .addPlayer() + .addEntities(EntityType.ARMOR_STAND) // todo inquisitors .addSlots("eyes", "linchpin", "physical", "mental", "spiritual", "temporal"); } } diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 383e6d2a3..ec5cb4bbb 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere; @@ -9,6 +9,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.ItemsRegistry; +import leaf.cosmere.common.resource.ore.OreType; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.FinishedRecipe; import net.minecraft.data.recipes.RecipeCategory; @@ -79,12 +80,6 @@ protected void addRecipes(Consumer consumer) compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - if (metalType.hasOre()) - { - addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(metalType).stone().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); - addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(metalType).deepslate().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); - addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_RAW_ORE.get(metalType).get(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); - } if (metalType.isAlloy()) { @@ -97,6 +92,15 @@ protected void addRecipes(Consumer consumer) } } + + for (OreType oreType : OreType.values()) + { + final Metals.MetalType metalType = oreType.getMetalType(); + addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(oreType).stone().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); + addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(oreType).deepslate().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); + addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_RAW_ORE.get(metalType).get(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); + } + } protected static void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) diff --git a/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java index 7d68c832f..25c9767d4 100644 --- a/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java +++ b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java @@ -1,21 +1,51 @@ /* - * File updated ~ 11 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.biome; import leaf.cosmere.BaseDatapackRegistryProvider; +import leaf.cosmere.api.CosmereTags; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.config.CosmereWorldConfig.OreVeinConfig; +import leaf.cosmere.common.registration.impl.FeatureRegistryObject; +import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.RegistrySetBuilder; +import leaf.cosmere.common.registry.FeatureRegistry; +import leaf.cosmere.common.resource.ore.OreBlockType; +import leaf.cosmere.common.resource.ore.OreType; +import leaf.cosmere.common.resource.ore.OreType.OreVeinType; +import leaf.cosmere.common.world.ConfigurableConstantInt; +import leaf.cosmere.common.world.ResizableOreFeature; +import leaf.cosmere.common.world.ResizableOreFeatureConfig; +import leaf.cosmere.common.world.height.ConfigurableHeightProvider; +import net.minecraft.core.*; import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.BlockTags; import net.minecraft.world.damagesource.DamageType; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.levelgen.GenerationStep; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import net.minecraft.world.level.levelgen.placement.*; +import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; +import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; +import net.minecraftforge.common.world.ForgeBiomeModifiers; +import net.minecraftforge.registries.ForgeRegistries; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Map; import java.util.concurrent.CompletableFuture; + +//based on MekanismDatapackRegistryProvider from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/datagen/main/java/mekanism/common/registries/MekanismDatapackRegistryProvider.java#L62 public class CosmereDatapackRegistryProvider extends BaseDatapackRegistryProvider { public CosmereDatapackRegistryProvider(PackOutput output, CompletableFuture lookupProvider) @@ -23,9 +53,89 @@ public CosmereDatapackRegistryProvider(PackOutput output, CompletableFuture> ORE_STONE_TARGETS = new EnumMap<>(OreType.class); + private static final RuleTest STONE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); + private static final RuleTest DEEPSLATE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); - private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + private static ConfiguredFeature configureOreFeature(OreVeinType oreVeinType, + FeatureRegistryObject featureRO) + { + OreVeinConfig oreVeinConfig = CosmereConfigs.WORLD_CONFIG.getVeinConfig(oreVeinType); + List targetStates = ORE_STONE_TARGETS.computeIfAbsent(oreVeinType.type(), oreType -> + { + OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(oreType); + return List.of( + OreConfiguration.target(STONE_ORE_REPLACEABLES, oreBlockType.stoneBlock().defaultBlockState()), + OreConfiguration.target(DEEPSLATE_ORE_REPLACEABLES, oreBlockType.deepslateBlock().defaultBlockState()) + ); + }); + return new ConfiguredFeature<>( + featureRO.get(), + new ResizableOreFeatureConfig( + targetStates, + oreVeinType, + oreVeinConfig.maxVeinSize(), + oreVeinConfig.discardChanceOnAirExposure() + ) + ); + } + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.CONFIGURED_FEATURE, context -> + { + for (OreType type : OreType.values()) + { + int features = type.getBaseConfigs().size(); + for (int vein = 0; vein < features; vein++) + { + OreVeinType oreVeinType = new OreVeinType(type, vein); + ResourceLocation name = Cosmere.rl(oreVeinType.name()); + context.register(configuredFeature(name), configureOreFeature(oreVeinType, FeatureRegistry.ORE)); + } + } + }) + .add(Registries.PLACED_FEATURE, context -> + { + for (OreType type : OreType.values()) + { + int features = type.getBaseConfigs().size(); + for (int vein = 0; vein < features; vein++) + { + OreVeinType oreVeinType = new OreVeinType(type, vein); + OreVeinConfig oreVeinConfig = CosmereConfigs.WORLD_CONFIG.getVeinConfig(oreVeinType); + ResourceLocation name = Cosmere.rl(oreVeinType.name()); + registerPlacedFeature(context, name, modifiers -> List.of( + CountPlacement.of(new ConfigurableConstantInt(oreVeinType, oreVeinConfig.perChunk())), + InSquarePlacement.spread(), + HeightRangePlacement.of(ConfigurableHeightProvider.of(oreVeinType, oreVeinConfig)), + BiomeFilter.biome() + )); + } + } + }) + .add(ForgeRegistries.Keys.BIOME_MODIFIERS, context -> + { + HolderSet.Named isTaggedCanSpawnOres = context.lookup(Registries.BIOME).getOrThrow(CosmereTags.Biomes.SPAWN_ORES); + HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); + for (OreType type : OreType.values()) + { + int features = type.getBaseConfigs().size(); + List> placedVeins = new ArrayList<>(features); + for (int vein = 0; vein < features; vein++) + { + OreVeinType oreVeinType = new OreVeinType(type, vein); + ResourceLocation name = Cosmere.rl(oreVeinType.name()); + placedVeins.add(placedFeatures.getOrThrow(placedFeature(name))); + } + context.register( + biomeModifier(Cosmere.rl(type.getSerializedName())), + new ForgeBiomeModifiers.AddFeaturesBiomeModifier( + isTaggedCanSpawnOres, + HolderSet.direct(placedVeins), + GenerationStep.Decoration.UNDERGROUND_ORES) + ); + } + }) .add(Registries.DAMAGE_TYPE, context -> { for (CosmereDamageTypesRegistry.CosmereDamageType damageType : CosmereDamageTypesRegistry.DAMAGE_TYPES.values()) diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java b/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java index 2b5466b82..07d7a5326 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/data/BookStuff.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 11 - 10 - 2024 ~ Leaf */ package leaf.cosmere.patchouli.data; @@ -418,7 +418,7 @@ public static class RelationsPage extends Page { public String[] entries; - public RelationsPage(String text, String[] entries) + public RelationsPage(String text, String... entries) { super("relations", text); this.entries = entries; diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 8909c5937..6a323c780 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.tag; @@ -15,6 +15,7 @@ import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.common.resource.ore.OreBlockType; +import leaf.cosmere.common.resource.ore.OreType; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.BiomeTags; @@ -137,19 +138,6 @@ private void addBlocks() continue; } - if (metalType.hasOre()) - { - final OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(metalType); - - final TagKey oreBlockTag = CosmereTags.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType); - addToTag(oreBlockTag, oreBlockType.stone(), oreBlockType.deepslate()); - - addToTag(BlockTags.NEEDS_STONE_TOOL, oreBlockType.stone()); - addToTag(BlockTags.NEEDS_IRON_TOOL, oreBlockType.deepslate()); - - addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, oreBlockType.stone(), oreBlockType.deepslate()); - } - //put metal type tag on block final BlockRegistryObject metalBlock = BlocksRegistry.METAL_BLOCKS.get(metalType); @@ -160,6 +148,20 @@ private void addBlocks() //put beacon tag on block getBlockBuilder(BlockTags.BEACON_BASE_BLOCKS).add(metalBlockTag); } + + for (OreType oreType : OreType.values()) + { + final Metals.MetalType metalType = oreType.getMetalType(); + final OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(oreType); + + final TagKey oreBlockTag = CosmereTags.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType); + addToTag(oreBlockTag, oreBlockType.stone(), oreBlockType.deepslate()); + + addToTag(BlockTags.NEEDS_STONE_TOOL, oreBlockType.stone()); + addToTag(BlockTags.NEEDS_IRON_TOOL, oreBlockType.deepslate()); + + addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, oreBlockType.stone(), oreBlockType.deepslate()); + } } private void addEntityTypes() diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index dfb4eeb14..1f8f29aeb 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common; @@ -74,8 +74,9 @@ public Cosmere() CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); LootModifiersRegistry.LOOT_MODIFIERS.register(modBus); - FeatureRegistry.CONFIGURED_FEATURES.register(modBus); - FeatureRegistry.PLACED_FEATURES.register(modBus); + FeatureRegistry.FEATURES.register(modBus); + IntProviderTypesRegistry.INT_PROVIDER_TYPES.register(modBus); + HeightProviderTypesRegistry.HEIGHT_PROVIDER_TYPES.register(modBus); DimensionRegistry.register(); diff --git a/src/main/java/leaf/cosmere/common/config/CosmereConfigs.java b/src/main/java/leaf/cosmere/common/config/CosmereConfigs.java index 15898d8fe..2452322e4 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereConfigs.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereConfigs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 28 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.config; @@ -11,11 +11,13 @@ public class CosmereConfigs { public static final CosmereClientConfig CLIENT_CONFIG = new CosmereClientConfig(); public static final CosmereServerConfig SERVER_CONFIG = new CosmereServerConfig(); + public static final CosmereWorldConfig WORLD_CONFIG = new CosmereWorldConfig(); public static void registerConfigs(ModLoadingContext modLoadingContext) { ModContainer modContainer = modLoadingContext.getActiveContainer(); CosmereConfigHelper.registerConfig(modContainer, CLIENT_CONFIG); CosmereConfigHelper.registerConfig(modContainer, SERVER_CONFIG); + CosmereConfigHelper.registerConfig(modContainer, WORLD_CONFIG); } } diff --git a/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java new file mode 100644 index 000000000..234e97e0e --- /dev/null +++ b/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java @@ -0,0 +1,144 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.config; + +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; +import leaf.cosmere.common.resource.ore.BaseOreConfig; +import leaf.cosmere.common.resource.ore.OreType; +import leaf.cosmere.common.world.height.ConfigurableHeightRange; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.fml.config.ModConfig.Type; + +import java.util.EnumMap; +import java.util.List; +import java.util.Map; +import java.util.function.BooleanSupplier; + +public class CosmereWorldConfig implements ICosmereConfig +{ + + private final ForgeConfigSpec configSpec; + + private final Map ores = new EnumMap<>(OreType.class); + + + CosmereWorldConfig() + { + ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); + builder.comment("World generation settings for Cosmere. This config is synced from server to client") + .push("world_generation"); + + for (OreType ore : OreType.values()) + { + ores.put(ore, new OreConfig(builder, ore)); + } + + builder.pop(); + configSpec = builder.build(); + } + + @Override + public String getFileName() + { + return "world"; + } + + @Override + public ForgeConfigSpec getConfigSpec() + { + return configSpec; + } + + @Override + public Type getConfigType() + { + return Type.SERVER; + } + + @Override + public boolean addToContainer() + { + return false; + } + + public OreVeinConfig getVeinConfig(OreType.OreVeinType oreVeinType) + { + return ores.get(oreVeinType.type()).veinConfigs.get(oreVeinType.index()); + } + + public record OreVeinConfig(BooleanSupplier shouldGenerate, + ForgeConfigSpec.ConfigValue perChunk, + ForgeConfigSpec.ConfigValue maxVeinSize, + ForgeConfigSpec.ConfigValue discardChanceOnAirExposure, + ConfigurableHeightRange range) + { + } + + private static class OreConfig + { + + private final ForgeConfigSpec.BooleanValue shouldGenerate; + private final List veinConfigs; + + private OreConfig(ForgeConfigSpec.Builder builder, OreType oreType) + { + String ore = oreType.getMetalType().getName(); + + builder.comment("Generation Settings for " + ore + " ore.") + .push(ore); + + this.shouldGenerate = builder + .comment("Determines if " + ore + " ore should be added to world generation.") + .define("shouldGenerate", true); + + Builder veinBuilder = ImmutableList.builder(); + + for (BaseOreConfig baseConfig : oreType.getBaseConfigs()) + { + String veinType = baseConfig.name() + " " + ore + " vein"; + + builder.comment(veinType + " Generation Settings.") + .push(baseConfig.name()); + + ForgeConfigSpec.BooleanValue shouldVeinTypeGenerate = builder + .comment("Determines if " + veinType + "s should be added to world generation. Note: Requires generating " + ore + " ore to be enabled.") + .define("shouldGenerate", true); + + veinBuilder.add( + new OreVeinConfig( + () -> this.shouldGenerate.get() && shouldVeinTypeGenerate.get(), + builder.comment("Chance that " + veinType + "s generates in a chunk.") + .defineInRange("perChunk", baseConfig.perChunk(), 1, 256), + builder.comment("Maximum number of blocks in a " + veinType + ".") + .defineInRange("maxVeinSize", baseConfig.maxVeinSize(), 1, 64), + builder.comment("Chance that blocks that are directly exposed to air in a " + veinType + " are not placed.") + .defineInRange("discardChanceOnAirExposure", baseConfig.discardChanceOnAirExposure(), 0, 1), + ConfigurableHeightRange.create(builder, veinType, baseConfig) + )); + builder.pop(); + } + veinConfigs = veinBuilder.build(); + builder.pop(); + } + } + + @Override + public void clearCache() + { + for (OreType ore : OreType.values()) + { + final OreConfig oreConfig = ores.get(ore); + oreConfig.shouldGenerate.clearCache(); + for (var veinConfig : oreConfig.veinConfigs) + { + veinConfig.discardChanceOnAirExposure.clearCache(); + veinConfig.maxVeinSize.clearCache(); + veinConfig.perChunk.clearCache(); + veinConfig.range.plateau().clearCache(); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/FeatureDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/FeatureDeferredRegister.java new file mode 100644 index 000000000..d43ded9a8 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/FeatureDeferredRegister.java @@ -0,0 +1,26 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.common.registration.WrappedDeferredRegister; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraftforge.registries.ForgeRegistries; + +import java.util.function.Supplier; + +public class FeatureDeferredRegister extends WrappedDeferredRegister> +{ + + public FeatureDeferredRegister(String modid) + { + super(modid, ForgeRegistries.FEATURES); + } + + public > FeatureRegistryObject register(String name, Supplier sup) + { + return register(name, sup, FeatureRegistryObject::new); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/FeatureRegistryObject.java b/src/main/java/leaf/cosmere/common/registration/impl/FeatureRegistryObject.java new file mode 100644 index 000000000..bd6b43e77 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/FeatureRegistryObject.java @@ -0,0 +1,19 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.common.registration.WrappedRegistryObject; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraftforge.registries.RegistryObject; + +public class FeatureRegistryObject> extends WrappedRegistryObject +{ + + public FeatureRegistryObject(RegistryObject registryObject) + { + super(registryObject); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeDeferredRegister.java new file mode 100644 index 000000000..752e93d14 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeDeferredRegister.java @@ -0,0 +1,31 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import com.mojang.serialization.Codec; +import leaf.cosmere.common.registration.WrappedDeferredRegister; +import net.minecraft.core.registries.Registries; +import net.minecraft.world.level.levelgen.heightproviders.HeightProvider; +import net.minecraft.world.level.levelgen.heightproviders.HeightProviderType; + +import java.util.function.Supplier; + +public class HeightProviderTypeDeferredRegister extends WrappedDeferredRegister> +{ + public HeightProviderTypeDeferredRegister(String modid) + { + super(modid, Registries.HEIGHT_PROVIDER_TYPE); + } + + public HeightProviderTypeRegistryObject register(String name, Codec codec) + { + return register(name, () -> () -> codec); + } + + public HeightProviderTypeRegistryObject register(String name, Supplier> sup) + { + return register(name, sup, HeightProviderTypeRegistryObject::new); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeRegistryObject.java b/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeRegistryObject.java new file mode 100644 index 000000000..049192479 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/HeightProviderTypeRegistryObject.java @@ -0,0 +1,18 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.common.registration.WrappedRegistryObject; +import net.minecraft.world.level.levelgen.heightproviders.HeightProvider; +import net.minecraft.world.level.levelgen.heightproviders.HeightProviderType; +import net.minecraftforge.registries.RegistryObject; + +public class HeightProviderTypeRegistryObject extends WrappedRegistryObject> +{ + public HeightProviderTypeRegistryObject(RegistryObject> registryObject) + { + super(registryObject); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeDeferredRegister.java new file mode 100644 index 000000000..469140a45 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeDeferredRegister.java @@ -0,0 +1,32 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import com.mojang.serialization.Codec; +import leaf.cosmere.common.registration.WrappedDeferredRegister; +import net.minecraft.core.registries.Registries; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.IntProviderType; + +import java.util.function.Supplier; + +public class IntProviderTypeDeferredRegister extends WrappedDeferredRegister> +{ + + public IntProviderTypeDeferredRegister(String modid) + { + super(modid, Registries.INT_PROVIDER_TYPE); + } + + public IntProviderTypeRegistryObject register(String name, Codec codec) + { + return register(name, () -> () -> codec); + } + + public IntProviderTypeRegistryObject register(String name, Supplier> sup) + { + return register(name, sup, IntProviderTypeRegistryObject::new); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeRegistryObject.java b/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeRegistryObject.java new file mode 100644 index 000000000..4e80a89a5 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registration/impl/IntProviderTypeRegistryObject.java @@ -0,0 +1,19 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registration.impl; + +import leaf.cosmere.common.registration.WrappedRegistryObject; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.IntProviderType; +import net.minecraftforge.registries.RegistryObject; + +public class IntProviderTypeRegistryObject extends WrappedRegistryObject> +{ + + public IntProviderTypeRegistryObject(RegistryObject> registryObject) + { + super(registryObject); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/BiomeModifierRegistry.java b/src/main/java/leaf/cosmere/common/registry/BiomeModifierRegistry.java index 01f6b417b..790abe572 100644 --- a/src/main/java/leaf/cosmere/common/registry/BiomeModifierRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BiomeModifierRegistry.java @@ -1,19 +1,15 @@ /* - * File updated ~ 3 - 7 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.BiomeModifierSerializerDeferredRegister; -import leaf.cosmere.common.registration.impl.BiomeModifierSerializerRegistryObject; -import leaf.cosmere.common.world.MetalOreBiomeFeatureModifier; public class BiomeModifierRegistry { public static final BiomeModifierSerializerDeferredRegister BIOME_MODIFIER_SERIALIZERS = new BiomeModifierSerializerDeferredRegister(Cosmere.MODID); - public static final BiomeModifierSerializerRegistryObject METAL_ORE_MODIFIER = BIOME_MODIFIER_SERIALIZERS.register("ores", MetalOreBiomeFeatureModifier::makeCodec); - } diff --git a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java index 1939e94ac..5050b6302 100644 --- a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; @@ -13,6 +13,7 @@ import leaf.cosmere.common.registration.impl.BlockDeferredRegister; import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.resource.ore.OreBlockType; +import leaf.cosmere.common.resource.ore.OreType; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; @@ -42,13 +43,13 @@ public class BlocksRegistry metalType.getRarity()))); - public static final Map METAL_ORE = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) + public static final Map METAL_ORE = + Arrays.stream(OreType.values()) .collect(Collectors.toMap( Function.identity(), - metalType -> + oreType -> { + final Metals.MetalType metalType = oreType.getMetalType(); final BlockRegistryObject stoneOre = BLOCKS.registerWithRarity( metalType.getName() + Constants.RegNameStubs.ORE, () -> new MetalOreBlock(metalType), diff --git a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java index ab926dd33..d70e8c751 100644 --- a/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/FeatureRegistry.java @@ -1,95 +1,20 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 10 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.registration.impl.ConfiguredFeatureDeferredRegister; -import leaf.cosmere.common.registration.impl.PlacedFeatureDeferredRegister; -import net.minecraft.tags.BlockTags; -import net.minecraft.world.level.levelgen.placement.*; -import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; -import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; - -import java.util.List; +import leaf.cosmere.common.registration.impl.FeatureDeferredRegister; +import leaf.cosmere.common.registration.impl.FeatureRegistryObject; +import leaf.cosmere.common.world.ResizableOreFeature; +import leaf.cosmere.common.world.ResizableOreFeatureConfig; public class FeatureRegistry { - public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Cosmere.MODID); - public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Cosmere.MODID); - public static final RuleTest STONE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); - public static final RuleTest DEEPSLATE_ORE_REPLACEABLES = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); - - // todo: might need to be redone? ore and placed features are already in the generated jsons, so might be fine - // hard to tell while it doesn't build - /*public static final Map>> CONFIGURED_METAL_ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> CONFIGURED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new ConfiguredFeature<>( - Feature.ORE, - new OreConfiguration( - makeTarget(type), - 9))) - )); - - public static final Map> PLACED_METAL_ORE_FEATURES = - Arrays.stream(Metals.MetalType.values()) - .filter(Metals.MetalType::hasOre) - .collect(Collectors.toMap( - Function.identity(), - type -> - PLACED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new PlacedFeature(Holder.direct(CONFIGURED_METAL_ORE_FEATURES.get(type).get()), - commonOrePlacement( - 10,//width? - HeightRangePlacement.triangle( - VerticalAnchor.absolute(-32), - VerticalAnchor.absolute(150) - ) - ) - ) - ) - )); - - - private static List makeTarget(Metals.MetalType metalType) - { - - return ImmutableList.of( - OreConfiguration.target( - STONE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE.get(metalType).getBlock().defaultBlockState()), - OreConfiguration.target( - DEEPSLATE_ORE_REPLACEABLES, - BlocksRegistry.METAL_ORE_DEEPSLATE.get(metalType).getBlock().defaultBlockState()) - ); - } -*/ - - // The "New Tardis Mod" code says we should register configured versions of the features in FMLCommonSetup - // since it helps prevent mod incompatibility issues. No need to delete other mod's world gen. Thank you 50! - - - //copied from OrePlacements.java, since they're private methods that should really be public - public static List commonOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(CountPlacement.of(pCount), pHeightRange); - } + public static final FeatureDeferredRegister FEATURES = new FeatureDeferredRegister(Cosmere.MODID); - public static List rareOrePlacement(int pCount, PlacementModifier pHeightRange) - { - return orePlacement(RarityFilter.onAverageOnceEvery(pCount), pHeightRange); - } + public static final FeatureRegistryObject ORE = FEATURES.register("ore", ResizableOreFeature::new); - public static List orePlacement(PlacementModifier countPlacement, PlacementModifier heightRange) - { - return List.of(countPlacement, InSquarePlacement.spread(), heightRange, BiomeFilter.biome()); - } } diff --git a/src/main/java/leaf/cosmere/common/registry/HeightProviderTypesRegistry.java b/src/main/java/leaf/cosmere/common/registry/HeightProviderTypesRegistry.java new file mode 100644 index 000000000..0e70d740b --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/HeightProviderTypesRegistry.java @@ -0,0 +1,17 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registry; + +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registration.impl.HeightProviderTypeDeferredRegister; +import leaf.cosmere.common.registration.impl.HeightProviderTypeRegistryObject; +import leaf.cosmere.common.world.height.ConfigurableHeightProvider; + +public class HeightProviderTypesRegistry +{ + public static final HeightProviderTypeDeferredRegister HEIGHT_PROVIDER_TYPES = new HeightProviderTypeDeferredRegister(Cosmere.MODID); + + public static final HeightProviderTypeRegistryObject CONFIGURABLE = HEIGHT_PROVIDER_TYPES.register("configurable", ConfigurableHeightProvider.CODEC); +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/IntProviderTypesRegistry.java b/src/main/java/leaf/cosmere/common/registry/IntProviderTypesRegistry.java new file mode 100644 index 000000000..53e456809 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/IntProviderTypesRegistry.java @@ -0,0 +1,17 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.registry; + +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registration.impl.IntProviderTypeDeferredRegister; +import leaf.cosmere.common.registration.impl.IntProviderTypeRegistryObject; +import leaf.cosmere.common.world.ConfigurableConstantInt; + +public class IntProviderTypesRegistry +{ + public static final IntProviderTypeDeferredRegister INT_PROVIDER_TYPES = new IntProviderTypeDeferredRegister(Cosmere.MODID); + + public static final IntProviderTypeRegistryObject CONFIGURABLE_CONSTANT = INT_PROVIDER_TYPES.register("configurable_constant", ConfigurableConstantInt.CODEC); +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/resource/ore/BaseOreConfig.java b/src/main/java/leaf/cosmere/common/resource/ore/BaseOreConfig.java new file mode 100644 index 000000000..5e04fcbbf --- /dev/null +++ b/src/main/java/leaf/cosmere/common/resource/ore/BaseOreConfig.java @@ -0,0 +1,33 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.resource.ore; + +import leaf.cosmere.common.world.height.HeightShape; + +//based on BaseOreConfig from Mekanism +// https://github.com/mekanism/Mekanism/blob/a11d886aafc01cc67dd23d24b5e9c87909e88c24/src/main/java/mekanism/common/resource/ore/BaseOreConfig.java#L5 +public record BaseOreConfig(String name, + int perChunk, + double discardChanceOnAirExposure, + int maxVeinSize, + HeightShape shape, + OreAnchor min, + OreAnchor max, + int plateau) +{ + + public BaseOreConfig + { + if (plateau > 0 && shape != HeightShape.TRAPEZOID) + { + throw new IllegalArgumentException("Plateau are only supported by trapezoid shape"); + } + } + + public BaseOreConfig(String name, int perChunk, float discardChanceOnAirExposure, int maxVeinSize, HeightShape shape, OreAnchor min, OreAnchor max) + { + this(name, perChunk, discardChanceOnAirExposure, maxVeinSize, shape, min, max, 0); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/resource/ore/OreAnchor.java b/src/main/java/leaf/cosmere/common/resource/ore/OreAnchor.java new file mode 100644 index 000000000..f7ecc754a --- /dev/null +++ b/src/main/java/leaf/cosmere/common/resource/ore/OreAnchor.java @@ -0,0 +1,29 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.resource.ore; + +import leaf.cosmere.common.world.height.AnchorType; + +//anchor types for ore generation +public record OreAnchor(AnchorType type, int value) +{ + //must by y = x + public static OreAnchor absolute(int value) + { + return new OreAnchor(AnchorType.ABSOLUTE, value); + } + + // x above or below the bottom of the generating world + public static OreAnchor aboveBottom(int value) + { + return new OreAnchor(AnchorType.ABOVE_BOTTOM, value); + } + + // x above or below the top of the generating world + public static OreAnchor belowTop(int value) + { + return new OreAnchor(AnchorType.BELOW_TOP, value); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/resource/ore/OreType.java b/src/main/java/leaf/cosmere/common/resource/ore/OreType.java new file mode 100644 index 000000000..08c980800 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/resource/ore/OreType.java @@ -0,0 +1,126 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.resource.ore; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import leaf.cosmere.api.Metals; +import leaf.cosmere.common.world.height.HeightShape; +import net.minecraft.util.StringRepresentable; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + + +//based on OreType from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/resource/ore/OreType.java#L14 +public enum OreType implements StringRepresentable +{ + TIN(Metals.MetalType.TIN, + new BaseOreConfig("small", 14, 0, 4, HeightShape.TRAPEZOID, OreAnchor.absolute(-20), OreAnchor.absolute(94)), + new BaseOreConfig("medium", 12, 0, 7, HeightShape.TRAPEZOID, OreAnchor.absolute(-32), OreAnchor.absolute(72)), + new BaseOreConfig("abundant", 20, 0, 6, HeightShape.UNIFORM, OreAnchor.aboveBottom(-64), OreAnchor.aboveBottom(32)) + ), + ZINC(Metals.MetalType.ZINC, + new BaseOreConfig("upper", 65, 0, 7, HeightShape.TRAPEZOID, OreAnchor.absolute(72), OreAnchor.belowTop(-24), 8), + new BaseOreConfig("middle", 6, 0, 9, HeightShape.TRAPEZOID, OreAnchor.absolute(-32), OreAnchor.absolute(56)), + new BaseOreConfig("deep", 10, 0.2F, 10, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-80), OreAnchor.absolute(-32)) + ), + ALUMINUM(Metals.MetalType.ALUMINUM, + new BaseOreConfig("small", 4, 0, 4, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(0), OreAnchor.absolute(8)), + new BaseOreConfig("medium", 8, 0, 4, HeightShape.UNIFORM, OreAnchor.aboveBottom(-60), OreAnchor.absolute(-50)), + new BaseOreConfig("buried", 13, 0.75F, 9, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-64), OreAnchor.aboveBottom(0), 16) + ), + CHROMIUM(Metals.MetalType.CHROMIUM, + new BaseOreConfig("rare", 4, 0.1F, 6, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-40), OreAnchor.absolute(16)), + new BaseOreConfig("normal", 8, 0.25F, 9, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-24), OreAnchor.absolute(64)), + new BaseOreConfig("deep", 5, 0.3F, 10, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-80), OreAnchor.absolute(-64)) + ), + + CADMIUM(Metals.MetalType.CADMIUM, + new BaseOreConfig("normal", 8, 0.25F, 9, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-24), OreAnchor.absolute(64)), + new BaseOreConfig("abundant", 15, 0, 7, HeightShape.UNIFORM, OreAnchor.aboveBottom(-64), OreAnchor.absolute(-32)), + new BaseOreConfig("deep", 6, 0.2F, 5, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-96), OreAnchor.absolute(-64)) + ), + NICKEL(Metals.MetalType.NICKEL, + new BaseOreConfig("upper", 65, 0, 7, HeightShape.TRAPEZOID, OreAnchor.absolute(80), OreAnchor.absolute(384), 8), + new BaseOreConfig("middle", 6, 0, 9, HeightShape.TRAPEZOID, OreAnchor.absolute(-32), OreAnchor.absolute(56)), + new BaseOreConfig("small", 8, 0, 4, HeightShape.UNIFORM, OreAnchor.absolute(0), OreAnchor.absolute(64)) + ), + + SILVER(Metals.MetalType.SILVER, + new BaseOreConfig("normal", 8, 0.25F, 9, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-24), OreAnchor.absolute(64)), + new BaseOreConfig("abundant", 16, 0, 7, HeightShape.UNIFORM, OreAnchor.aboveBottom(-64), OreAnchor.absolute(16)), + new BaseOreConfig("rich", 12, 0.1F, 10, HeightShape.TRAPEZOID, OreAnchor.absolute(-64), OreAnchor.absolute(-32)) + ), + LEAD(Metals.MetalType.LEAD, + new BaseOreConfig("normal", 8, 0.25F, 9, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-24), OreAnchor.absolute(64)), + new BaseOreConfig("abundant", 15, 0.1F, 7, HeightShape.UNIFORM, OreAnchor.aboveBottom(-64), OreAnchor.absolute(-32)), + new BaseOreConfig("deep", 10, 0.3F, 6, HeightShape.TRAPEZOID, OreAnchor.aboveBottom(-80), OreAnchor.absolute(-48)) + ); + + + public static Codec CODEC = StringRepresentable.fromEnum(OreType::values); + + private final List baseConfigs; + private final Metals.MetalType metalType; + + OreType(Metals.MetalType metalType, BaseOreConfig... configs) + { + this.metalType = metalType; + this.baseConfigs = List.of(configs); + } + + public Metals.MetalType getMetalType() + { + return metalType; + } + + public List getBaseConfigs() + { + return baseConfigs; + } + + public static OreType get(Metals.MetalType resource) + { + for (OreType ore : values()) + { + if (resource == ore.metalType) + { + return ore; + } + } + return null; + } + + @NotNull + @Override + public String getSerializedName() + { + return metalType.getName(); + } + + public record OreVeinType(OreType type, int index) + { + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( + OreType.CODEC.fieldOf("type").forGetter(config -> config.type), + Codec.INT.fieldOf("index").forGetter(config -> config.index) + ).apply(builder, OreVeinType::new)); + + public OreVeinType + { + if (index < 0 || index >= type.getBaseConfigs().size()) + { + throw new IndexOutOfBoundsException("Vein Type index out of range: " + index); + } + } + + public String name() + { + return "ore_" + type.getSerializedName() + "_" + type.getBaseConfigs().get(index).name(); + } + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/ConfigurableConstantInt.java b/src/main/java/leaf/cosmere/common/world/ConfigurableConstantInt.java new file mode 100644 index 000000000..24b3926c1 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/ConfigurableConstantInt.java @@ -0,0 +1,86 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.registry.IntProviderTypesRegistry; +import leaf.cosmere.common.resource.ore.OreType.OreVeinType; +import net.minecraft.util.RandomSource; +import net.minecraft.util.valueproviders.IntProvider; +import net.minecraft.util.valueproviders.IntProviderType; +import net.minecraftforge.common.ForgeConfigSpec; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.Optional; + +//based on ConfigurableConstantInt from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/world/ConfigurableConstantInt.java#L17 +public class ConfigurableConstantInt extends IntProvider +{ + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( + OreVeinType.CODEC.optionalFieldOf("oreVeinType").forGetter(config -> Optional.ofNullable(config.oreVeinType)) + ).apply(builder, oreType -> + { + if (oreType.isPresent()) + { + OreVeinType type = oreType.get(); + return new ConfigurableConstantInt(type, CosmereConfigs.WORLD_CONFIG.getVeinConfig(type).perChunk()); + } + return null;//todo hope null works + })); + + @Nullable + private final OreVeinType oreVeinType; + private final ForgeConfigSpec.ConfigValue value; + + public ConfigurableConstantInt(@Nullable OreVeinType oreVeinType, ForgeConfigSpec.ConfigValue value) + { + this.oreVeinType = oreVeinType; + this.value = value; + } + + public int getValue() + { + //Needs to be getOrDefault so that when IntProvider's range codec validates things in CountPlacement, + // even though how it gets that value doesn't matter for syncing. Our actual value here doesn't really + // matter because we limit our config values at the ranges of CountPlacement + return this.value.getDefault(); + } + + @Override + public int sample(@NotNull RandomSource random) + { + return getValue(); + } + + @Override + public int getMinValue() + { + return getValue(); + } + + @Override + public int getMaxValue() + { + return getValue(); + } + + @NotNull + @Override + public IntProviderType getType() + { + return IntProviderTypesRegistry.CONFIGURABLE_CONSTANT.get(); + } + + @Override + public String toString() + { + return Integer.toString(getValue()); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java b/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java deleted file mode 100644 index d2de4d1c1..000000000 --- a/src/main/java/leaf/cosmere/common/world/MetalOreBiomeFeatureModifier.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * File updated ~ 3 - 7 - 2022 ~ Leaf - */ - -package leaf.cosmere.common.world; - -import com.mojang.serialization.Codec; -import com.mojang.serialization.DataResult; -import com.mojang.serialization.codecs.RecordCodecBuilder; -import leaf.cosmere.common.registry.BiomeModifierRegistry; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderSet; -import net.minecraft.world.level.biome.Biome; -import net.minecraft.world.level.levelgen.GenerationStep; -import net.minecraft.world.level.levelgen.placement.PlacedFeature; -import net.minecraftforge.common.world.BiomeGenerationSettingsBuilder; -import net.minecraftforge.common.world.BiomeModifier; -import net.minecraftforge.common.world.ModifiableBiomeInfo; - -public record MetalOreBiomeFeatureModifier(HolderSet biomes, GenerationStep.Decoration generationStep, - HolderSet features) implements BiomeModifier -{ - - @Override - public Codec codec() - { - return BiomeModifierRegistry.METAL_ORE_MODIFIER.get(); - } - - public static Codec makeCodec() - { - return RecordCodecBuilder.create(builder -> builder.group( - Biome.LIST_CODEC.fieldOf("biomes").forGetter(MetalOreBiomeFeatureModifier::biomes), - Codec.STRING.comapFlatMap(MetalOreBiomeFeatureModifier::generationStageFromString, GenerationStep.Decoration::toString).fieldOf("generation_stage").forGetter(MetalOreBiomeFeatureModifier::generationStep), - PlacedFeature.LIST_CODEC.fieldOf("features").forGetter(MetalOreBiomeFeatureModifier::features) - ).apply(builder, MetalOreBiomeFeatureModifier::new)); - } - - @Override - public void modify(Holder biome, Phase phase, ModifiableBiomeInfo.BiomeInfo.Builder builder) - { - if (phase == Phase.ADD && this.biomes.contains(biome)) - { - BiomeGenerationSettingsBuilder generation = builder.getGenerationSettings(); - this.features.forEach(holder -> generation.addFeature(this.generationStep, holder)); - } - } - - private static DataResult generationStageFromString(String name) - { - try - { - return DataResult.success(GenerationStep.Decoration.valueOf(name)); - } - catch (Exception e) - { - return DataResult.error(() -> "Not a decoration stage: " + name); - } - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/ResizableOreFeature.java b/src/main/java/leaf/cosmere/common/world/ResizableOreFeature.java new file mode 100644 index 000000000..f058c9fcc --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/ResizableOreFeature.java @@ -0,0 +1,225 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.SectionPos; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.chunk.BulkSectionAccess; +import net.minecraft.world.level.chunk.LevelChunkSection; +import net.minecraft.world.level.levelgen.Heightmap; +import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; +import org.jetbrains.annotations.NotNull; + +import java.util.BitSet; +import java.util.function.Function; + +//modified copy of Mekanisms ResizableOreFeature +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/world/ResizableOreFeature.java#L20 +//which itself was a modified copy of vanilla's OreFeature but to support ResizableOreFeatureConfig +public class ResizableOreFeature extends Feature +{ + + public ResizableOreFeature() + { + super(ResizableOreFeatureConfig.CODEC); + } + + protected Heightmap.Types getHeightmapType() + { + return Heightmap.Types.OCEAN_FLOOR_WG; + } + + @Override + public boolean place(@NotNull FeaturePlaceContext context) + { + RandomSource random = context.random(); + BlockPos pos = context.origin(); + WorldGenLevel world = context.level(); + ResizableOreFeatureConfig config = context.config(); + float angle = random.nextFloat() * (float) Math.PI; + float adjustedSize = config.size().get() / 8.0F; + int i = Mth.ceil((adjustedSize + 1.0F) / 2.0F); + double sin = Math.sin(angle) * adjustedSize; + double cos = Math.cos(angle) * adjustedSize; + double xMin = pos.getX() + sin; + double xMax = pos.getX() - sin; + double zMin = pos.getZ() + cos; + double zMax = pos.getZ() - cos; + double yMin = pos.getY() + random.nextInt(3) - 2; + double yMax = pos.getY() + random.nextInt(3) - 2; + int minXStart = pos.getX() - Mth.ceil(adjustedSize) - i; + int minYStart = pos.getY() - 2 - i; + int minZStart = pos.getZ() - Mth.ceil(adjustedSize) - i; + int width = 2 * (Mth.ceil(adjustedSize) + i); + int height = 2 * (2 + i); + for (int x = minXStart; x <= minXStart + width; ++x) + { + for (int z = minZStart; z <= minZStart + width; ++z) + { + if (minYStart <= world.getHeight(getHeightmapType(), x, z)) + { + return doPlace(world, random, config, xMin, xMax, zMin, zMax, yMin, yMax, minXStart, minYStart, minZStart, width, height); + } + } + } + return false; + } + + protected boolean doPlace(WorldGenLevel world, RandomSource random, ResizableOreFeatureConfig config, double xMin, double xMax, double zMin, double zMax, double yMin, + double yMax, int minXStart, int minYStart, int minZStart, int width, int height) + { + BitSet bitset = new BitSet(width * height * width); + BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); + int size = config.size().get(); + double[] adouble = new double[size * 4]; + for (int k = 0; k < size; ++k) + { + float f = k / (float) size; + int k4 = k * 4; + adouble[k4] = Mth.lerp(f, xMin, xMax); + adouble[k4 + 1] = Mth.lerp(f, yMin, yMax); + adouble[k4 + 2] = Mth.lerp(f, zMin, zMax); + double d3 = random.nextDouble() * size / 16D; + adouble[k4 + 3] = ((double) (Mth.sin((float) Math.PI * f) + 1) * d3 + 1) / 2D; + } + for (int i = 0; i < size - 1; ++i) + { + int i4 = i * 4; + if (adouble[i4 + 3] > 0) + { + for (int j = i + 1; j < size; ++j) + { + int j4 = j * 4; + if (adouble[j4 + 3] > 0) + { + double d1 = adouble[i4] - adouble[j4]; + double d2 = adouble[i4 + 1] - adouble[j4 + 1]; + double d3 = adouble[i4 + 2] - adouble[j4 + 2]; + double d4 = adouble[i4 + 3] - adouble[j4 + 3]; + if (d4 * d4 > d1 * d1 + d2 * d2 + d3 * d3) + { + if (d4 > 0) + { + adouble[j4 + 3] = -1; + } + else + { + adouble[i4 + 3] = -1; + } + } + } + } + } + } + int i = 0; + try (BulkSectionAccess bulkSectionAccess = new BulkSectionAccess(world)) + { + double discardChanceOnAirExposure = config.discardChanceOnAirExposure().get(); + for (int j = 0; j < size; ++j) + { + int j4 = j * 4; + double d1 = adouble[j4 + 3]; + if (d1 >= 0) + { + double d2 = adouble[j4]; + double d3 = adouble[j4 + 1]; + double d4 = adouble[j4 + 2]; + int xStart = Math.max(Mth.floor(d2 - d1), minXStart); + int yStart = Math.max(Mth.floor(d3 - d1), minYStart); + int zStart = Math.max(Mth.floor(d4 - d1), minZStart); + int xEnd = Math.max(Mth.floor(d2 + d1), xStart); + int yEnd = Math.max(Mth.floor(d3 + d1), yStart); + int zEnd = Math.max(Mth.floor(d4 + d1), zStart); + for (int x = xStart; x <= xEnd; ++x) + { + double d5 = ((double) x + 0.5D - d2) / d1; + double d5_squared = d5 * d5; + if (d5_squared < 1) + { + for (int y = yStart; y <= yEnd; ++y) + { + double d6 = ((double) y + 0.5D - d3) / d1; + double d6_squared = d6 * d6; + if (d5_squared + d6_squared < 1) + { + for (int z = zStart; z <= zEnd; ++z) + { + double d7 = ((double) z + 0.5D - d4) / d1; + if (d5_squared + d6_squared + d7 * d7 < 1.0D && !world.isOutsideBuildHeight(y)) + { + int l2 = x - minXStart + (y - minYStart) * width + (z - minZStart) * width * height; + if (!bitset.get(l2)) + { + bitset.set(l2); + mutablePos.set(x, y, z); + if (world.ensureCanWrite(mutablePos)) + { + LevelChunkSection section = bulkSectionAccess.getSection(mutablePos); + if (section != null) + { + int sectionX = SectionPos.sectionRelative(x); + int sectionY = SectionPos.sectionRelative(y); + int sectionZ = SectionPos.sectionRelative(z); + BlockState state = section.getBlockState(sectionX, sectionY, sectionZ); + for (TargetBlockState targetState : config.targetStates()) + { + if (canPlaceOre(state, bulkSectionAccess::getBlockState, random, discardChanceOnAirExposure, targetState, mutablePos)) + { + section.setBlockState(sectionX, sectionY, sectionZ, targetState.state, false); + ++i; + break; + } + } + } + } + } + } + } + } + } + } + } + } + } + } + return i > 0; + } + + private static boolean canPlaceOre(BlockState state, Function adjacentStateAccessor, RandomSource random, double discardChanceOnAirExposure, + TargetBlockState targetState, BlockPos.MutableBlockPos mutablePos) + { + if (!targetState.target.test(state, random)) + { + return false; + } + else if (shouldSkipAirCheck(random, discardChanceOnAirExposure)) + { + return true; + } + else + { + return !isAdjacentToAir(adjacentStateAccessor, mutablePos); + } + } + + private static boolean shouldSkipAirCheck(RandomSource random, double discardChanceOnAirExposure) + { + if (discardChanceOnAirExposure <= 0.0F) + { + return true; + } + else if (discardChanceOnAirExposure >= 1.0F) + { + return false; + } + return random.nextFloat() >= discardChanceOnAirExposure; + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/ResizableOreFeatureConfig.java b/src/main/java/leaf/cosmere/common/world/ResizableOreFeatureConfig.java new file mode 100644 index 000000000..6b67a9903 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/ResizableOreFeatureConfig.java @@ -0,0 +1,31 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.config.CosmereWorldConfig; +import leaf.cosmere.common.resource.ore.OreType; +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration.TargetBlockState; +import net.minecraftforge.common.ForgeConfigSpec; + +import java.util.List; + +public record ResizableOreFeatureConfig(List targetStates, OreType.OreVeinType oreVeinType, + ForgeConfigSpec.ConfigValue size, + ForgeConfigSpec.ConfigValue discardChanceOnAirExposure) implements FeatureConfiguration +{ + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( + Codec.list(TargetBlockState.CODEC).fieldOf("targets").forGetter(config -> config.targetStates), + OreType.OreVeinType.CODEC.fieldOf("oreVeinType").forGetter(config -> config.oreVeinType) + ).apply(builder, (targetStates, oreVeinType) -> + { + CosmereWorldConfig.OreVeinConfig veinConfig = CosmereConfigs.WORLD_CONFIG.getVeinConfig(oreVeinType); + return new ResizableOreFeatureConfig(targetStates, oreVeinType, veinConfig.maxVeinSize(), veinConfig.discardChanceOnAirExposure()); + })); +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/height/AnchorType.java b/src/main/java/leaf/cosmere/common/world/height/AnchorType.java new file mode 100644 index 000000000..ff11e43f9 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/height/AnchorType.java @@ -0,0 +1,34 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world.height; + +import net.minecraft.world.level.levelgen.WorldGenerationContext; + +//based on AnchorType from Mekanism +// https://github.com/mekanism/Mekanism/blob/a11d886aafc01cc67dd23d24b5e9c87909e88c24/src/main/java/mekanism/common/world/height/AnchorType.java#L9 +public enum AnchorType +{ + ABSOLUTE((context, value) -> value), + ABOVE_BOTTOM((context, value) -> context.getMinGenY() + value), + BELOW_TOP((context, value) -> context.getGenDepth() - 1 + context.getMinGenY() - value); + + private final YResolver yResolver; + + AnchorType(YResolver yResolver) + { + this.yResolver = yResolver; + } + + public int resolveY(WorldGenerationContext context, int value) + { + return yResolver.resolve(context, value); + } + + @FunctionalInterface + private interface YResolver + { + int resolve(WorldGenerationContext context, int value); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightProvider.java b/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightProvider.java new file mode 100644 index 000000000..bc3390f48 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightProvider.java @@ -0,0 +1,111 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world.height; + +import com.mojang.serialization.Codec; +import com.mojang.serialization.codecs.RecordCodecBuilder; +import it.unimi.dsi.fastutil.longs.LongOpenHashSet; +import it.unimi.dsi.fastutil.longs.LongSet; +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.config.CosmereWorldConfig.OreVeinConfig; +import leaf.cosmere.common.registry.HeightProviderTypesRegistry; +import leaf.cosmere.common.resource.ore.OreType.OreVeinType; +import net.minecraft.util.Mth; +import net.minecraft.util.RandomSource; +import net.minecraft.world.level.levelgen.WorldGenerationContext; +import net.minecraft.world.level.levelgen.heightproviders.HeightProvider; +import net.minecraft.world.level.levelgen.heightproviders.HeightProviderType; +import org.jetbrains.annotations.NotNull; + +//based on ConfigurableHeightProvider from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/world/height/ConfigurableHeightProvider.java#L20 +public class ConfigurableHeightProvider extends HeightProvider +{ + + public static final Codec CODEC = RecordCodecBuilder.create(builder -> builder.group( + OreVeinType.CODEC.fieldOf("oreVeinType").forGetter(config -> config.oreVeinType) + ).apply(builder, type -> new ConfigurableHeightProvider(type, CosmereConfigs.WORLD_CONFIG.getVeinConfig(type)))); + + private final OreVeinType oreVeinType; + private final ConfigurableHeightRange range; + private LongSet warnedFor; + + private ConfigurableHeightProvider(OreVeinType oreVeinType, OreVeinConfig oreConfig) + { + this.oreVeinType = oreVeinType; + this.range = oreConfig.range(); + } + + public static ConfigurableHeightProvider of(OreVeinType type, OreVeinConfig oreConfig) + { + return new ConfigurableHeightProvider(type, oreConfig); + } + + @Override + public int sample(@NotNull RandomSource random, @NotNull WorldGenerationContext context) + { + int min = range.minInclusive().resolveY(context); + int max = range.maxInclusive().resolveY(context); + if (min > max) + { + if (warnedFor == null) + { + warnedFor = new LongOpenHashSet(); + } + if (warnedFor.add((long) min << 32 | (long) max)) + { + CosmereAPI.logger.warn("Empty height range: {}", this); + } + return min; + } + return switch (range.shape().get()) + { + case TRAPEZOID -> sampleTrapezoid(random, min, max); + case UNIFORM -> Mth.randomBetweenInclusive(random, min, max); + }; + } + + private int sampleTrapezoid(@NotNull RandomSource random, int min, int max) + { + int plateau = range.plateau().get(); + int range = max - min; + if (plateau >= range) + { + return Mth.randomBetweenInclusive(random, min, max); + } + int middle = (range - plateau) / 2; + return min + Mth.randomBetweenInclusive(random, 0, range - middle) + Mth.randomBetweenInclusive(random, 0, middle); + } + + @NotNull + @Override + public HeightProviderType getType() + { + return HeightProviderTypesRegistry.CONFIGURABLE.get(); + } + + @Override + public String toString() + { + switch (range.shape().get()) + { + case TRAPEZOID -> + { + int plateau = range.plateau().get(); + if (plateau == 0) + { + return oreVeinType.name() + " triangle [" + range.minInclusive() + "-" + range.maxInclusive() + "]"; + } + return oreVeinType.name() + " trapezoid(" + plateau + ") in [" + range.minInclusive() + "-" + range.maxInclusive() + "]"; + } + case UNIFORM -> + { + return oreVeinType.name() + " uniform [" + range.minInclusive() + "-" + range.maxInclusive() + "]"; + } + } + return oreVeinType.name(); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightRange.java b/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightRange.java new file mode 100644 index 000000000..9cd8afd47 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/height/ConfigurableHeightRange.java @@ -0,0 +1,59 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world.height; + +import leaf.cosmere.common.resource.ore.BaseOreConfig; +import net.minecraftforge.common.ForgeConfigSpec; + +import java.util.function.Supplier; + +//based on ConfigurableHeightRange from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/world/height/ConfigurableHeightRange.java#L13 +public record ConfigurableHeightRange(Supplier shape, + ConfigurableVerticalAnchor minInclusive, + ConfigurableVerticalAnchor maxInclusive, + ForgeConfigSpec.ConfigValue plateau) +{ + + public static ConfigurableHeightRange create(ForgeConfigSpec.Builder builder, String veinType, BaseOreConfig baseConfig) + { + ForgeConfigSpec.EnumValue shape = + builder.comment("Distribution shape for placing " + veinType + "s.") + .defineEnum("shape", baseConfig.shape()); + + ConfigurableVerticalAnchor minInclusive = + ConfigurableVerticalAnchor.create( + builder, + "minInclusive", + "Minimum (inclusive) height anchor for " + veinType + "s.", baseConfig.min(), + null); + + final ForgeConfigSpec.ConfigValue plat = builder.comment("Half length of short side of trapezoid, only used if shape is TRAPEZOID. A value of zero means the shape is a triangle.") + .define("plateau", baseConfig.plateau(), o -> + { + if (o instanceof Integer value) + { + if (value == 0) + { + return true; + } + return value > 0 && shape.get() == HeightShape.TRAPEZOID; + } + return false; + }); + + return new ConfigurableHeightRange( + shape, + minInclusive, + ConfigurableVerticalAnchor.create( + builder, + "maxInclusive", + "Maximum (inclusive) height anchor for " + veinType + "s.", + baseConfig.max(), + minInclusive), + plat + ); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/height/ConfigurableVerticalAnchor.java b/src/main/java/leaf/cosmere/common/world/height/ConfigurableVerticalAnchor.java new file mode 100644 index 000000000..193e83f96 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/height/ConfigurableVerticalAnchor.java @@ -0,0 +1,72 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world.height; + +import leaf.cosmere.common.resource.ore.OreAnchor; +import net.minecraft.world.level.levelgen.WorldGenerationContext; +import net.minecraftforge.common.ForgeConfigSpec; +import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + + +//based on ConfigurableVerticalAnchor from Mekanism +// https://github.com/mekanism/Mekanism/blob/7de496745c721fb15d00d590ddcacf00570f3f1b/src/main/java/mekanism/common/world/height/ConfigurableVerticalAnchor.java#L14 +public record ConfigurableVerticalAnchor(Supplier anchorType, Supplier value) +{ + + public static ConfigurableVerticalAnchor create(ForgeConfigSpec.Builder builder, + String path, + String comment, + OreAnchor defaultAnchor, + @Nullable ConfigurableVerticalAnchor minAnchor) + { + builder.comment(comment).push(path); + ForgeConfigSpec.EnumValue type = builder.comment( + "Type of anchor.", + "Absolute -> y = value", + "Above Bottom -> y = minY + value", + "Below Top -> y = depth - 1 + minY - value") + .defineEnum("type", defaultAnchor.type()); + + ForgeConfigSpec.Builder valueBuilder = builder.comment("Value used for calculating y for the anchor based on the type."); + ConfigValue value; + + if (minAnchor == null) + { + value = valueBuilder.define("value", defaultAnchor.value()); + } + else + { + value = valueBuilder.define("value", defaultAnchor.value(), o -> + { + if (o instanceof Integer v) + { + return minAnchor.anchorType.get() != type.get() || v >= minAnchor.value.get(); + } + return false; + }); + } + builder.pop(); + return new ConfigurableVerticalAnchor(type, value); + } + + public int resolveY(WorldGenerationContext context) + { + return anchorType.get().resolveY(context, value.get()); + } + + @Override + public String toString() + { + return switch (anchorType.get()) + { + case ABSOLUTE -> value.get() + " absolute"; + case ABOVE_BOTTOM -> value.get() + " above bottom"; + case BELOW_TOP -> value.get() + " below top"; + }; + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/world/height/HeightShape.java b/src/main/java/leaf/cosmere/common/world/height/HeightShape.java new file mode 100644 index 000000000..1728cd4e8 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/world/height/HeightShape.java @@ -0,0 +1,12 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.world.height; + +//minecraft ore generation shapes +public enum HeightShape +{ + TRAPEZOID, + UNIFORM +} \ No newline at end of file From 668917cefb0700e3097915301219b67ce10f1bd2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 10:55:32 +1300 Subject: [PATCH 0939/1090] [Port] rename night vision and xp gain rate attributes. --- .../leaf/cosmere/common/registry/AttributesRegistry.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java index 3c3ea769a..f8f4cce88 100644 --- a/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java @@ -1,10 +1,9 @@ /* - * File updated ~ 26 - 10 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; -import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.AttributeDeferredRegister; import leaf.cosmere.common.registration.impl.AttributeRegistryObject; @@ -14,10 +13,10 @@ public class AttributesRegistry { public static final AttributeDeferredRegister ATTRIBUTES = new AttributeDeferredRegister(Cosmere.MODID); - public static final AttributeRegistryObject NIGHT_VISION_ATTRIBUTE = ATTRIBUTES.register(Metals.MetalType.TIN.getName(), Cosmere.MODID, 0, 0, 1); - public static final AttributeRegistryObject XP_RATE_ATTRIBUTE = ATTRIBUTES.register(Metals.MetalType.COPPER.getName(), Cosmere.MODID, 1, 0, 20); + public static final AttributeRegistryObject NIGHT_VISION_ATTRIBUTE = ATTRIBUTES.register("night_vision", Cosmere.MODID, 0, 0, 1); + public static final AttributeRegistryObject XP_RATE_ATTRIBUTE = ATTRIBUTES.register("xp_gain_rate", Cosmere.MODID, 1, 0, 20); - public static final AttributeRegistryObject SIZE_ATTRIBUTE = ATTRIBUTES.register(Metals.MetalType.ATIUM.getName(), Cosmere.MODID, 1, 0.1f, 20); + public static final AttributeRegistryObject SIZE_ATTRIBUTE = ATTRIBUTES.register("size", Cosmere.MODID, 1, 0.1f, 20); //copper clouds, aviaar, light weavers, aluminum cages? From 61857827025efc4493c087a7b5b92643d92e47c1 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 11:03:10 +1300 Subject: [PATCH 0940/1090] [Port] add copper spike to creative menu --- .../common/items/HemalurgicSpikeItem.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index fcaea9bc5..25b9c3978 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.items; @@ -131,9 +131,15 @@ public void addFilled(CreativeModeTab.Output output) } else if (this.getMetalType() == Metals.MetalType.TIN) { - ItemStack filledIronSpike = new ItemStack(this); - Invest(filledIronSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); - output.accept(filledIronSpike); + ItemStack filledSpike = new ItemStack(this); + Invest(filledSpike, this.getMetalType(), 0.25f, UUID.randomUUID()); + output.accept(filledSpike); + } + else if (this.getMetalType() == Metals.MetalType.COPPER) + { + ItemStack filledSpike = new ItemStack(this); + Invest(filledSpike, this.getMetalType(), 0.5f, UUID.randomUUID()); + output.accept(filledSpike); } From c16752bc0c6c76ce0c7c78f9a6b0c60527e87489 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 11:16:02 +1300 Subject: [PATCH 0941/1090] [Port] rerun datagen --- .../feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 | 4 ++-- .../guide/en_us/entries/feruchemy/feruchemy_basics.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 b/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 index bad87acc7..43448cbef 100644 --- a/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 +++ b/src/datagen/generated/feruchemy/.cache/3b2a435655541c92d690318b57013336949ed348 @@ -1,4 +1,4 @@ -// 1.20.1 2024-10-09T13:38:50.2962519 PatchouliGeneration +// 1.20.1 2024-11-20T11:15:09.563266 PatchouliGeneration 9ea74965ee52ee3a9e5b7dd62822fc2e5959498e assets/cosmere/patchouli_books/guide/en_us/categories/feruchemy.json f275c49e55ff5d7da8766b3adae1313ce2031fc0 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/compounding.json eea98ac4f00464bce87b03192ef20965c2937eb9 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_aluminum.json @@ -18,4 +18,4 @@ fbd392269f07bf654547f18bf63ac1857eacc18f assets/cosmere/patchouli_books/guide/en dc1048c641b59bbd66a8cd1cbc1485d02141c393 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_steel.json f3c00939b3f652b20a14621259bbae69be041c2a assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_tin.json f47f302616e239fcee62e209392711ef03a6db2b assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemical_zinc.json -f4aa73c874839519e898d2bd360f24b388e0d9e5 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +43469763353f20c66b8d904859d13951d4bc52a4 assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json diff --git a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json index d5680a8ef..e1ccdc6a7 100644 --- a/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json +++ b/src/datagen/generated/feruchemy/assets/cosmere/patchouli_books/guide/en_us/entries/feruchemy/feruchemy_basics.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "If you entered this world with a feruchemical ability, you're called a $(6)ferring$(). Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap attributes.", + "text": "The art requires storing an attribute in a piece of metal. Depending on what kind of metal you have access to, a metalmind of the corresponding metal will let you store and tap different attributes.", "title": "feruchemy:copper_bracelet_metalmind" }, { From e19b14487898501d813dc67775b928e28b9806f6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 12:19:46 +1300 Subject: [PATCH 0942/1090] [Port] enum utils class for enum arrays --- .../AllomancyModClientEvents.java | 4 +- .../AllomancySpiritwebSubmodule.java | 13 ++--- .../subcommands/FillMetalReservesCommand.java | 5 +- .../common/effects/AllomancyBoostEffect.java | 7 +-- .../AllomancyModBusEventHandler.java | 5 +- .../manifestation/AllomancyAluminum.java | 5 +- .../manifestation/AllomancyChromium.java | 5 +- .../common/recipes/VialMixingRecipe.java | 7 +-- .../registries/AllomancyAttributes.java | 5 +- .../registries/AllomancyManifestations.java | 5 +- .../common/registries/AllomancyStats.java | 5 +- .../java/leaf/cosmere/api/CosmereTags.java | 26 +++++----- src/api/java/leaf/cosmere/api/EnumUtils.java | 22 +++++++++ .../common/registries/ToolsCreativeTabs.java | 8 ++-- .../tools/common/registries/ToolsItems.java | 21 +++++---- .../allomancy/AllomancyEngLangGen.java | 9 ++-- .../leaf/cosmere/tools/ToolsRecipeGen.java | 5 +- .../feruchemy/FeruchemyEngLangGen.java | 7 +-- .../cosmere/feruchemy/FeruchemyRecipeGen.java | 5 +- .../feruchemy/FeruchemyTagProvider.java | 5 +- .../hemalurgy/HemalurgyEngLangGen.java | 5 +- .../cosmere/hemalurgy/HemalurgyRecipeGen.java | 5 +- .../hemalurgy/HemalurgyTagsProvider.java | 5 +- .../patchouli/PatchouliHemalurgyCategory.java | 5 +- .../main/java/leaf/cosmere/EngLangGen.java | 5 +- .../main/java/leaf/cosmere/RecipeGen.java | 6 ++- .../CosmereDatapackRegistryProvider.java | 7 +-- .../leaf/cosmere/tag/CosmereTagProvider.java | 12 +++-- .../surgebinding/SurgebindingRecipeGen.java | 5 +- .../SurgebindingTagsProvider.java | 9 ++-- .../SurgebindingEntityLootTableGen.java | 4 +- .../client/FeruchemyClientSetup.java | 26 +--------- .../common/compat/jei/FeruchemyJEICompat.java | 5 +- .../FeruchemyModBusEventHandler.java | 5 +- .../registries/FeruchemyAttributes.java | 5 +- .../registries/FeruchemyCreativeTabs.java | 9 ++-- .../common/registries/FeruchemyEffects.java | 7 +-- .../common/registries/FeruchemyItems.java | 9 ++-- .../registries/FeruchemyManifestations.java | 5 +- .../common/compat/jei/HemalurgyJEICompat.java | 5 +- .../common/items/IHemalurgicInfo.java | 11 ++--- .../registries/HemalurgyCreativeTabs.java | 5 +- .../common/registries/HemalurgyItems.java | 10 ++-- .../common/config/CosmereWorldConfig.java | 5 +- .../common/registry/BlocksRegistry.java | 6 ++- .../common/registry/ItemsRegistry.java | 14 +++--- .../cosmere/common/util/CosmereEnumUtils.java | 13 +++++ .../common/blocks/TaldainBlackSandBlock.java | 5 +- .../blocks/TaldainBlackSandLayerBlock.java | 5 +- .../common/blocks/TaldainWhiteSandBlock.java | 5 +- .../blocks/TaldainWhiteSandLayerBlock.java | 5 +- .../client/SurgebindingModClientEvents.java | 23 +-------- .../SurgebindingSpiritwebSubmodule.java | 7 ++- .../SurgebindingModBusEventHandler.java | 5 +- .../registries/SurgebindingAttributes.java | 3 +- .../common/registries/SurgebindingBlocks.java | 7 +-- .../registries/SurgebindingCreativeTabs.java | 5 +- .../registries/SurgebindingFeatures.java | 47 +------------------ .../common/registries/SurgebindingItems.java | 11 +++-- .../SurgebindingManifestations.java | 29 ++++++------ 60 files changed, 266 insertions(+), 273 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/EnumUtils.java create mode 100644 src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java index fb5029df5..344f8d170 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/eventHandlers/AllomancyModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.client.eventHandlers; @@ -72,7 +72,7 @@ public static void registerIconTextures(TextureStitchEvent.Pre event) event.addSprite(Allomancy.rl("icon/allomancy")); - for (final Metals.MetalType metalType : Metals.MetalType.values()) + for (final Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasAssociatedManifestation()) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 69ef301b8..7048d8019 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 15 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.capabilities; @@ -13,6 +13,7 @@ import leaf.cosmere.allomancy.common.manifestation.*; import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; @@ -46,7 +47,7 @@ public class AllomancySpiritwebSubmodule implements ISpiritwebSubmodule //metals ingested public final Map METALS_INGESTED = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap(Function.identity(), type -> 0)); private float pewterDelayedDamage = 0; @@ -124,7 +125,7 @@ public void tickServer(ISpiritweb spiritweb) if (spiritweb.getLiving().tickCount % 1200 == 0) { //metals can't stay in your system forever, y'know? - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { Integer metalIngestAmount = METALS_INGESTED.get(metalType); if (metalIngestAmount > 0) @@ -158,7 +159,7 @@ public void deserialize(ISpiritweb spiritweb) ingestedMetals = CompoundNBTHelper.getOrCreate(moduleTag, INGESTED_KEY); } - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { final String metalKey = metalType.getName(); if (ingestedMetals.contains(metalKey)) @@ -183,7 +184,7 @@ public void serialize(ISpiritweb spiritweb) //replace old ingested tag with new one final CompoundTag ingestedMetals = new CompoundTag(); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { final Integer ingestedMetalAmount = METALS_INGESTED.get(metalType); if (ingestedMetalAmount > 0) @@ -278,7 +279,7 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event @OnlyIn(Dist.CLIENT) public void collectMenuInfo(List m_infoText) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { int value = METALS_INGESTED.get(metalType); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/commands/subcommands/FillMetalReservesCommand.java b/src/allomancy/java/leaf/cosmere/allomancy/common/commands/subcommands/FillMetalReservesCommand.java index 0cdfa140a..65dac247c 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/commands/subcommands/FillMetalReservesCommand.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/commands/subcommands/FillMetalReservesCommand.java @@ -1,5 +1,5 @@ /* - * File updated ~ 13 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.commands.subcommands; @@ -9,6 +9,7 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; @@ -43,7 +44,7 @@ private static int fillReserves(CommandContext context) thro { AllomancySpiritwebSubmodule asm = AllomancySpiritwebSubmodule.getSubmodule(spiritweb); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { //I know it's not feruchemy, but it's the same list of metals if (metalType.hasFeruchemicalEffect()) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/effects/AllomancyBoostEffect.java b/src/allomancy/java/leaf/cosmere/allomancy/common/effects/AllomancyBoostEffect.java index 2f1c18142..d5e2ba167 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/effects/AllomancyBoostEffect.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/effects/AllomancyBoostEffect.java @@ -1,11 +1,12 @@ /* - * File updated ~ 8 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.effects; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyAttributes; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.cosmereEffect.CosmereEffect; @@ -18,7 +19,7 @@ public AllomancyBoostEffect() { super(); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasAssociatedManifestation() && AllomancyAttributes.ALLOMANCY_ATTRIBUTES.containsKey(metalType)) { @@ -47,7 +48,7 @@ public void applyEffectTick(ISpiritweb data, double strength) AllomancySpiritwebSubmodule allo = AllomancySpiritwebSubmodule.getSubmodule(data); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasAssociatedManifestation() || metalType == Metals.MetalType.DURALUMIN) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyModBusEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyModBusEventHandler.java index 474d6fc58..ef0e90b09 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyModBusEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyModBusEventHandler.java @@ -1,11 +1,12 @@ /* - * File updated ~ 7 - 10 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.eventHandlers; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.registries.AllomancyAttributes; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.eventHandlers.ModBusEventHandler; import net.minecraft.world.entity.EntityType; @@ -23,7 +24,7 @@ public static void onEntityAttributeModificationEvent(EntityAttributeModificatio { for (EntityType entityType : ModBusEventHandler.ENTITIES_THAT_CAN_HAVE_POWERS) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasAssociatedManifestation() && AllomancyAttributes.ALLOMANCY_ATTRIBUTES.containsKey(metalType)) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java index 25a5b04ca..89d92c6e8 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java @@ -1,10 +1,11 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.spiritweb.ISpiritweb; @@ -26,7 +27,7 @@ protected void applyEffectTick(ISpiritweb data) int drainedCount = 0; //drain all metals - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType == Metals.MetalType.ALUMINUM) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java index 471ede1d4..ec75e5453 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java @@ -1,10 +1,11 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.spiritweb.ISpiritweb; @@ -93,7 +94,7 @@ else if (hitVec != null) if (entity != null) { AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) targetSpiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { float drainAmount = allo.getIngestedMetal(metalType) * 0.1f; allo.adjustIngestedMetal(metalType, (int) -drainAmount, true); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java index d03544744..a2a99ea32 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.recipes; @@ -8,6 +8,7 @@ import leaf.cosmere.allomancy.common.items.MetalVialItem; import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyRecipes; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; @@ -101,7 +102,7 @@ else if (testForViableNugget(stack).isPresent()) private Optional> testForViableNugget(ItemStack stack) { - for (Metals.MetalType value : Metals.MetalType.values()) + for (Metals.MetalType value : EnumUtils.METAL_TYPES) { TagKey metalNuggetTag = value.getMetalNuggetTag(); if (stack.is(metalNuggetTag)) @@ -130,7 +131,7 @@ public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) if (stackInSlot.is(Tags.Items.NUGGETS)) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (stackInSlot.is(metalType.getMetalNuggetTag())) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyAttributes.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyAttributes.java index dc9dca539..caa560dfe 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyAttributes.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyAttributes.java @@ -1,10 +1,11 @@ /* - * File updated ~ 29 - 2 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.AttributeDeferredRegister; import leaf.cosmere.common.registration.impl.AttributeRegistryObject; @@ -20,7 +21,7 @@ public class AllomancyAttributes public static final AttributeDeferredRegister ATTRIBUTES = new AttributeDeferredRegister(Allomancy.MODID); public static final Map> ALLOMANCY_ATTRIBUTES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(metalType -> metalType != Metals.MetalType.ATIUM && metalType.hasAssociatedManifestation()) .collect(Collectors.toMap( Function.identity(), diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyManifestations.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyManifestations.java index 1940c22cf..01a9176a1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyManifestations.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyManifestations.java @@ -1,11 +1,12 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.manifestation.*; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.ManifestationDeferredRegister; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; @@ -22,7 +23,7 @@ public class AllomancyManifestations // Allomancy public static final Map> ALLOMANCY_POWERS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation) .collect(Collectors.toMap( Function.identity(), diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyStats.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyStats.java index 4f6bb3008..e49bbb239 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyStats.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyStats.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.registries; import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.StatDeferredRegister; import leaf.cosmere.common.registration.impl.StatRegistryObject; @@ -21,7 +22,7 @@ public class AllomancyStats public static final StatDeferredRegister STATS = new StatDeferredRegister(Allomancy.MODID); public static final Map ALLOMANCY_BURN_TIME = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation) .collect(Collectors.toMap( Function.identity(), diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index a1ba7d98a..4a1574601 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.api; @@ -51,50 +51,50 @@ public static class Items public static final TagKey METAL_SPIKE = makeItem("cosmere", "spike"); public static final Map> METAL_RAW_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("raw_materials/" + type.getName()))); public static final Map> METAL_ORE_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("ores/" + type.getName()))); public static final Map> METAL_DUST_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("dusts/" + type.getName()))); public static final Map> METAL_NUGGET_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("nuggets/" + type.getName()))); public static final Map> METAL_INGOT_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("ingots/" + type.getName()))); public static final Map> METAL_BLOCK_ITEM_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("storage_blocks/" + type.getName()))); public static final Map> GEM_BLOCK_ITEM_TAGS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("storage_blocks/" + type.getName()))); public static final Map> GEM_TAGS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeItemTag("gems/" + type.getName()))); @@ -126,26 +126,26 @@ public static class Blocks public static final TagKey CONTAINS_METAL = makeBlock("cosmere", "contains_metal"); public static final Map> METAL_ORE_BLOCK_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) //.filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( Function.identity(), type -> forgeTag("ores/" + type.getName()))); public static final Map> METAL_BLOCK_TAGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeTag("storage_blocks/" + type.getName()))); public static final Map> GEM_ORE_BLOCK_TAGS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeTag("ores/" + type.getName()))); public static final Map> GEM_BLOCK_TAGS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> forgeTag("storage_blocks/" + type.getName()))); diff --git a/src/api/java/leaf/cosmere/api/EnumUtils.java b/src/api/java/leaf/cosmere/api/EnumUtils.java new file mode 100644 index 000000000..a458724db --- /dev/null +++ b/src/api/java/leaf/cosmere/api/EnumUtils.java @@ -0,0 +1,22 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.api; + +import net.minecraft.core.Direction; + +//constant static enum arrays for enums in api that get used often. Save memory allocation where possible +public class EnumUtils +{ + //cosmere + public static final Metals.MetalType[] METAL_TYPES = Metals.MetalType.values(); + + //roshar + public static final Roshar.Gemstone[] GEMSTONE_TYPES = Roshar.Gemstone.values(); + public static final Roshar.GemSize[] GEM_SIZES = Roshar.GemSize.values(); + public static final Roshar.Surges[] SURGES = Roshar.Surges.values(); + + //yes I know it's a vanilla enum + public static final Direction[] DIRECTIONS = Direction.values(); +} diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java index 291014314..68ce7eb1b 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsCreativeTabs.java @@ -1,10 +1,10 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.tools.common.registries; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import leaf.cosmere.tools.common.CosmereTools; @@ -61,7 +61,7 @@ else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) } else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) { - for (var metalType : Metals.MetalType.values()) + for (var metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasMaterialItem()) { @@ -76,7 +76,7 @@ else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) } else if (tabKey == CreativeModeTabs.COMBAT) { - for (var metalType : Metals.MetalType.values()) + for (var metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasMaterialItem()) { diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java index 3aea3419d..46c105a06 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/registries/ToolsItems.java @@ -1,9 +1,10 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.tools.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -24,7 +25,7 @@ public class ToolsItems public static final Supplier TOOL = () -> new Item.Properties(); public static final Map> METAL_PICKAXES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -39,7 +40,7 @@ public class ToolsItems ))); public static final Map> METAL_AXES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -55,7 +56,7 @@ public class ToolsItems public static final Map> METAL_SHOVEL = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -71,7 +72,7 @@ public class ToolsItems public static final Map> METAL_HOE = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -87,7 +88,7 @@ public class ToolsItems public static final Map> METAL_SWORDS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -103,7 +104,7 @@ public class ToolsItems public static final Map> METAL_HELMETS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -114,7 +115,7 @@ public class ToolsItems public static final Map> METAL_CHESTPLATES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -125,7 +126,7 @@ public class ToolsItems public static final Map> METAL_LEGGINGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), @@ -136,7 +137,7 @@ public class ToolsItems public static final Map> METAL_BOOTS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasMaterialItem) .collect(Collectors.toMap( Function.identity(), diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index be37d324c..e0120355a 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.allomancy; @@ -10,6 +10,7 @@ import leaf.cosmere.allomancy.common.registries.AllomancyEffects; import leaf.cosmere.allomancy.common.registries.AllomancyEntityTypes; import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; @@ -129,7 +130,7 @@ private void addManifestations() //work through each metal and generate localisation for related things. - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasAssociatedManifestation()) { @@ -158,7 +159,7 @@ private void addAttributes() private void addPatchouli() { //work through each metal and generate localisation for related things. - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { final String name = metalType.getName(); final String mistingName = metalType.getMistingName(); @@ -227,7 +228,7 @@ private void addKeybindings() private void addStats() { //stats - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation).forEach(metalType -> add( "stat.minecraft.time_since_started_burning_" + metalType.getName(), diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java index 539eb4aba..0f32220ca 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java @@ -1,11 +1,12 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.tools; import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.tools.common.CosmereTools; import leaf.cosmere.tools.common.registries.ToolsItems; @@ -34,7 +35,7 @@ protected ResourceLocation makeRL(String path) protected void addRecipes(Consumer consumer) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasMaterialItem()) { diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index f6d698248..584eb8a81 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; @@ -139,7 +140,7 @@ private void addManifestations() } //work through each metal and generate localisation for related things. - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasAssociatedManifestation()) { @@ -168,7 +169,7 @@ private void addAttributes() private void addPatchouli() { //work through each metal and generate localisation for related things. - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { final String name = metalType.getName(); final String ferringName = metalType.getFerringName(); diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java index 572409d09..ee1bcbc70 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; import leaf.cosmere.BaseRecipeProvider; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; @@ -36,7 +37,7 @@ protected ResourceLocation makeRL(String path) @Override protected void addRecipes(Consumer consumer) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { addBasicMetalmindRecipes(consumer, metalType); } diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java index cd31592ad..da2ef0bfb 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyTagProvider.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; @@ -30,7 +31,7 @@ protected void registerTags(HolderLookup.Provider registries) getItemBuilder(CosmereTags.Items.CURIO_BRACELET).add(FeruchemyItems.BANDS_OF_MOURNING.get()); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasFeruchemicalEffect()) { diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 252160c75..6241d3c0b 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IEntityTypeProvider; @@ -96,7 +97,7 @@ private void addAttributes() private void addPatchouli() { //work through each metal and generate localisation for related things. - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { final String name = metalType.getName(); String hKey = "hemalurgic_" + name; diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java index 2becf61fe..13e5ea535 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java @@ -1,10 +1,11 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; import leaf.cosmere.BaseRecipeProvider; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.hemalurgy.common.Hemalurgy; @@ -39,7 +40,7 @@ protected void addRecipes(Consumer consumer) { addOreSmeltingRecipes(consumer, HemalurgyItems.METAL_SPIKE.get(Metals.MetalType.IRON), ItemsRegistry.GUIDE.get(), 1.0f, 200); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { addSpikes(consumer, metalType); } diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java index 4a9c4d2cb..876ababe1 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyTagsProvider.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; @@ -27,7 +28,7 @@ public HemalurgyTagsProvider(PackOutput packOutput, CompletableFuture categories, List consumer) .save(consumer); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { //theres no reason for uss to add ways to recipe blocks/ingots that minecraft already has final Metals.MetalType[] blacklistedTypes = {Metals.MetalType.IRON, Metals.MetalType.GOLD,}; @@ -93,7 +95,7 @@ protected void addRecipes(Consumer consumer) } - for (OreType oreType : OreType.values()) + for (OreType oreType : CosmereEnumUtils.ORE_TYPES) { final Metals.MetalType metalType = oreType.getMetalType(); addOreSmeltingRecipes(consumer, BlocksRegistry.METAL_ORE.get(oreType).stone().getBlock(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); diff --git a/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java index 25c9767d4..6aacccdb5 100644 --- a/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java +++ b/src/datagen/main/java/leaf/cosmere/biome/CosmereDatapackRegistryProvider.java @@ -17,6 +17,7 @@ import leaf.cosmere.common.resource.ore.OreBlockType; import leaf.cosmere.common.resource.ore.OreType; import leaf.cosmere.common.resource.ore.OreType.OreVeinType; +import leaf.cosmere.common.util.CosmereEnumUtils; import leaf.cosmere.common.world.ConfigurableConstantInt; import leaf.cosmere.common.world.ResizableOreFeature; import leaf.cosmere.common.world.ResizableOreFeatureConfig; @@ -83,7 +84,7 @@ private static ConfiguredFeature private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() .add(Registries.CONFIGURED_FEATURE, context -> { - for (OreType type : OreType.values()) + for (OreType type : CosmereEnumUtils.ORE_TYPES) { int features = type.getBaseConfigs().size(); for (int vein = 0; vein < features; vein++) @@ -96,7 +97,7 @@ private static ConfiguredFeature }) .add(Registries.PLACED_FEATURE, context -> { - for (OreType type : OreType.values()) + for (OreType type : CosmereEnumUtils.ORE_TYPES) { int features = type.getBaseConfigs().size(); for (int vein = 0; vein < features; vein++) @@ -117,7 +118,7 @@ private static ConfiguredFeature { HolderSet.Named isTaggedCanSpawnOres = context.lookup(Registries.BIOME).getOrThrow(CosmereTags.Biomes.SPAWN_ORES); HolderGetter placedFeatures = context.lookup(Registries.PLACED_FEATURE); - for (OreType type : OreType.values()) + for (OreType type : CosmereEnumUtils.ORE_TYPES) { int features = type.getBaseConfigs().size(); List> placedVeins = new ArrayList<>(features); diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 6a323c780..059c851e4 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -5,6 +5,7 @@ package leaf.cosmere.tag; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; @@ -16,6 +17,7 @@ import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.common.resource.ore.OreBlockType; import leaf.cosmere.common.resource.ore.OreType; +import leaf.cosmere.common.util.CosmereEnumUtils; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; import net.minecraft.tags.BiomeTags; @@ -64,7 +66,7 @@ protected void registerTags(HolderLookup.Provider registries) private void addItems() { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasMaterialItem() && metalType != Metals.MetalType.COPPER) @@ -131,7 +133,7 @@ private void addBlocks() addToHarvestTag(BlockTags.MINEABLE_WITH_AXE, BlocksRegistry.METALWORKING_TABLE); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) { @@ -149,7 +151,7 @@ private void addBlocks() getBlockBuilder(BlockTags.BEACON_BASE_BLOCKS).add(metalBlockTag); } - for (OreType oreType : OreType.values()) + for (OreType oreType : CosmereEnumUtils.ORE_TYPES) { final Metals.MetalType metalType = oreType.getMetalType(); final OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(oreType); @@ -185,7 +187,7 @@ private void addStorageBlocks() final IntrinsicCosmereTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); final IntrinsicCosmereTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (!metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) { @@ -212,7 +214,7 @@ private void addContainsMetal() itemTagBuilder.addOptionalTag(CosmereTags.Items.METAL_SPIKE); //Our metals - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType == Metals.MetalType.ALUMINUM) { diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java index fca6c0145..129db4ca5 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java @@ -1,11 +1,12 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; import leaf.cosmere.BaseRecipeProvider; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.registries.SurgebindingBlocks; @@ -34,7 +35,7 @@ protected ResourceLocation makeRL(String path) @Override protected void addRecipes(Consumer consumer) { - for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) + for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) { compressRecipe(SurgebindingBlocks.GEM_BLOCKS.get(gemstone).getBlock(), CosmereTags.Items.GEM_TAGS.get(gemstone), SurgebindingItems.GEMSTONE_BROAMS.get(gemstone)).save(consumer); decompressRecipe(consumer, SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get(), SurgebindingBlocks.GEM_BLOCKS.get(gemstone), gemstone.getName() + "_block_deconstruct"); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java index ca5c296cd..a623c1a87 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingTagsProvider.java @@ -1,11 +1,12 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding; import com.google.common.collect.ImmutableList; import leaf.cosmere.api.CosmereTags; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.registration.impl.BlockRegistryObject; @@ -60,7 +61,7 @@ protected void registerTags(HolderLookup.Provider registries) private void addItems() { - for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) + for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) { final ItemRegistryObject broamItem = SurgebindingItems.GEMSTONE_BROAMS.get(gemstone); @@ -75,7 +76,7 @@ private void addItems() private void addBlocks() { - for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) + for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) { final BlockRegistryObject gemBlock = SurgebindingBlocks.GEM_BLOCKS.get(gemstone); //final BlockRegistryObject gemOre = SurgebindingBlocks.GEM_ORE.get(gemstone); @@ -107,7 +108,7 @@ private void addStorageBlocks() final IntrinsicCosmereTagBuilder itemBuilder = getItemBuilder(Tags.Items.STORAGE_BLOCKS); final IntrinsicCosmereTagBuilder blockBuilder = getBlockBuilder(Tags.Blocks.STORAGE_BLOCKS); - for (Roshar.Gemstone gemstone : Roshar.Gemstone.values()) + for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) { final TagKey storageBlockItemTag = CosmereTags.Items.GEM_BLOCK_ITEM_TAGS.get(gemstone); final TagKey storageBlockTag = CosmereTags.Blocks.GEM_BLOCK_TAGS.get(gemstone); diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java index dce167c66..e593cfa31 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingEntityLootTableGen.java @@ -4,7 +4,7 @@ package leaf.cosmere.surgebinding.loottables; -import leaf.cosmere.api.Roshar; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.loottables.BaseEntityLootTables; import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; @@ -32,7 +32,7 @@ public void generate() //gems aren't guaranteed to drop, generally. //The concept that the gems may be damaged while fighting or harvesting. - for (var gemType : Roshar.Gemstone.values()) + for (var gemType : EnumUtils.GEMSTONE_TYPES) { lootPool.add( LootItem.lootTableItem(SurgebindingItems.GEMSTONE_BROAMS.get(gemType)) diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java index 5ca7ab5d8..b45e2fc3b 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyClientSetup.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.client; @@ -34,28 +34,4 @@ public static void init(final FMLClientSetupEvent event) CosmereAPI.logger.info("Feruchemy client setup complete!"); } - /* todo - re setup power icon registration - //special thank you to the chisels and bits team who have an example of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - event.addSprite(Feruchemy.rl("icon/feruchemy")); - - for (final Metals.MetalType metalType : Metals.MetalType.values()) - { - if (!metalType.hasAssociatedManifestation()) - { - continue; - } - - String metalToLower = metalType.toString().toLowerCase(Locale.ROOT); - event.addSprite(Feruchemy.rl("icon/feruchemy/" + metalToLower)); - } - } - */ } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/compat/jei/FeruchemyJEICompat.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/compat/jei/FeruchemyJEICompat.java index 0100239a9..9a4310a2e 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/compat/jei/FeruchemyJEICompat.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/compat/jei/FeruchemyJEICompat.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.compat.jei; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; @@ -27,7 +28,7 @@ public ResourceLocation getPluginUid() @Override public void registerRecipes(IRecipeRegistration reg) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasFeruchemicalEffect()) { diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyModBusEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyModBusEventHandler.java index 9ce6aeb87..9ffc703f2 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyModBusEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyModBusEventHandler.java @@ -1,9 +1,10 @@ /* - * File updated ~ 7 - 10 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.eventHandlers; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.eventHandlers.ModBusEventHandler; import leaf.cosmere.feruchemy.common.Feruchemy; @@ -25,7 +26,7 @@ public static void onEntityAttributeModificationEvent(EntityAttributeModificatio { for (EntityType entityType : ModBusEventHandler.ENTITIES_THAT_CAN_HAVE_POWERS) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasAssociatedManifestation() && FeruchemyAttributes.FERUCHEMY_ATTRIBUTES.containsKey(metalType)) { diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyAttributes.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyAttributes.java index b459dfdfc..c8283cc72 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyAttributes.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyAttributes.java @@ -1,9 +1,10 @@ /* - * File updated ~ 29 - 2 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.AttributeDeferredRegister; import leaf.cosmere.common.registration.impl.AttributeRegistryObject; @@ -20,7 +21,7 @@ public class FeruchemyAttributes public static final AttributeDeferredRegister ATTRIBUTES = new AttributeDeferredRegister(Feruchemy.MODID); public static final Map> FERUCHEMY_ATTRIBUTES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(metalType -> metalType != Metals.MetalType.ATIUM && metalType.hasAssociatedManifestation()) .collect(Collectors.toMap( Function.identity(), diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java index 632f78731..8725ea474 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyCreativeTabs.java @@ -1,9 +1,10 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; @@ -40,7 +41,7 @@ private static void addFilledMetalminds(CreativeModeTab.Output output) //I don't like the multiple for loops, // but this is how we have them ordered nicely in the creative menu - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasFeruchemicalEffect()) { @@ -48,7 +49,7 @@ private static void addFilledMetalminds(CreativeModeTab.Output output) item.addFilled(output); } } - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasFeruchemicalEffect()) { @@ -56,7 +57,7 @@ private static void addFilledMetalminds(CreativeModeTab.Output output) item.addFilled(output); } } - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasFeruchemicalEffect()) { diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyEffects.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyEffects.java index bcb76bbdd..74511c414 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyEffects.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyEffects.java @@ -1,9 +1,10 @@ /* - * File updated ~ 29 - 10 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.common.registration.impl.CosmereEffectDeferredRegister; @@ -24,7 +25,7 @@ public class FeruchemyEffects public static final CosmereEffectDeferredRegister EFFECTS = new CosmereEffectDeferredRegister(Feruchemy.MODID); public static final Map> TAPPING_EFFECTS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( Function.identity(), @@ -35,7 +36,7 @@ public class FeruchemyEffects ); public static final Map> STORING_EFFECTS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( Function.identity(), diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java index b6feb6d6f..5922be629 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyItems.java @@ -1,10 +1,11 @@ /* - * File updated ~ 11 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; import leaf.cosmere.api.Constants.RegNameStubs; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -27,7 +28,7 @@ public class FeruchemyItems public static final ItemRegistryObject BANDS_OF_MOURNING = ITEMS.register("bands_of_mourning", BandsOfMourningItem::new); public static final Map> METAL_RINGS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( Function.identity(), @@ -37,7 +38,7 @@ public class FeruchemyItems ))); public static final Map> METAL_BRACELETS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( Function.identity(), @@ -47,7 +48,7 @@ public class FeruchemyItems ))); public static final Map> METAL_NECKLACES = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasFeruchemicalEffect) .collect(Collectors.toMap( Function.identity(), diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyManifestations.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyManifestations.java index 4ec75f3dd..4bdda7e16 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyManifestations.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/registries/FeruchemyManifestations.java @@ -1,9 +1,10 @@ /* - * File updated ~ 4 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.ManifestationDeferredRegister; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; @@ -22,7 +23,7 @@ public class FeruchemyManifestations // Feruchemy powers public static final Map> FERUCHEMY_POWERS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation) .collect(Collectors.toMap( Function.identity(), diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/compat/jei/HemalurgyJEICompat.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/compat/jei/HemalurgyJEICompat.java index 3acc04c42..99530111f 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/compat/jei/HemalurgyJEICompat.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/compat/jei/HemalurgyJEICompat.java @@ -1,10 +1,11 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.compat.jei; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; @@ -28,7 +29,7 @@ public ResourceLocation getPluginUid() @Override public void registerRecipes(IRecipeRegistration reg) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasHemalurgicEffect()) { diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java index df27a9c2e..bbd2496d7 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java @@ -1,14 +1,11 @@ /* - * File updated ~ 5 - 8 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.items; import com.google.common.collect.Multimap; -import leaf.cosmere.api.Constants; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.*; import leaf.cosmere.api.helpers.CompoundNBTHelper; import leaf.cosmere.api.helpers.StackNBTHelper; import leaf.cosmere.api.manifestation.Manifestation; @@ -184,7 +181,7 @@ private boolean getAttributes(ItemStack stack, Metals.MetalType spikeMetalType, switch (spikeMetalType) { case LERASIUM: - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { //all **attribute** metals EXCEPT lerasium switch (metalType) @@ -429,7 +426,7 @@ default void addInvestitureInformation(ItemStack stack, List tooltip) tooltip.add(TextHelper.createTranslatedText(Constants.Strings.CONTAINED_POWERS_FOUND)); //iterate through all metals, because lerasium spikes steal all attributes - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { //all **attribute** metals EXCEPT lerasium switch (metalType) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java index e289d8583..89a851b39 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyCreativeTabs.java @@ -1,9 +1,10 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; @@ -82,7 +83,7 @@ else if (tabKey == CreativeModeTabs.INGREDIENTS) private static void addFilledSpikes(CreativeModeTab.Output output) { - for (Metals.MetalType metalType : Metals.MetalType.values()) + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { if (metalType.hasHemalurgicEffect()) { diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyItems.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyItems.java index 455563233..b4e8a4b63 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyItems.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/registries/HemalurgyItems.java @@ -1,20 +1,20 @@ /* - * File updated ~ 15 - 6 - 2023 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.hemalurgy.common.registries; import leaf.cosmere.api.Constants.RegNameStubs; -import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; -import net.minecraft.world.item.*; +import net.minecraft.world.item.SwordItem; +import net.minecraft.world.item.Tiers; import net.minecraftforge.common.ForgeSpawnEggItem; -import net.minecraftforge.registries.RegistryObject; import java.util.Arrays; import java.util.Map; @@ -28,7 +28,7 @@ public class HemalurgyItems //public static final ItemRegistryObject JAR_OF_BLOOD = ITEMS.register("jar_of_blood", () -> (new BaseItem(PropTypes.Items.ONE.get().tab(CosmereItemGroups.ITEMS)))); public static final Map> METAL_SPIKE = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasHemalurgicEffect) .collect(Collectors.toMap( Function.identity(), diff --git a/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java index 234e97e0e..e682de9e0 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereWorldConfig.java @@ -8,6 +8,7 @@ import com.google.common.collect.ImmutableList.Builder; import leaf.cosmere.common.resource.ore.BaseOreConfig; import leaf.cosmere.common.resource.ore.OreType; +import leaf.cosmere.common.util.CosmereEnumUtils; import leaf.cosmere.common.world.height.ConfigurableHeightRange; import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.config.ModConfig.Type; @@ -31,7 +32,7 @@ public class CosmereWorldConfig implements ICosmereConfig builder.comment("World generation settings for Cosmere. This config is synced from server to client") .push("world_generation"); - for (OreType ore : OreType.values()) + for (OreType ore : CosmereEnumUtils.ORE_TYPES) { ores.put(ore, new OreConfig(builder, ore)); } @@ -128,7 +129,7 @@ private OreConfig(ForgeConfigSpec.Builder builder, OreType oreType) @Override public void clearCache() { - for (OreType ore : OreType.values()) + for (OreType ore : CosmereEnumUtils.ORE_TYPES) { final OreConfig oreConfig = ores.get(ore); oreConfig.shouldGenerate.clearCache(); diff --git a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java index 5050b6302..8b49c1e1f 100644 --- a/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/BlocksRegistry.java @@ -5,6 +5,7 @@ package leaf.cosmere.common.registry; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; @@ -14,6 +15,7 @@ import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.resource.ore.OreBlockType; import leaf.cosmere.common.resource.ore.OreType; +import leaf.cosmere.common.util.CosmereEnumUtils; import net.minecraft.world.item.BlockItem; import net.minecraft.world.level.block.Block; @@ -33,7 +35,7 @@ public class BlocksRegistry public static final BlockRegistryObject METALWORKING_TABLE = BLOCKS.register("metalworking_table", MetalworkingTableBlock::new); public static final Map> METAL_BLOCKS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() && type != Metals.MetalType.COPPER) .collect(Collectors.toMap( Function.identity(), @@ -44,7 +46,7 @@ public class BlocksRegistry public static final Map METAL_ORE = - Arrays.stream(OreType.values()) + Arrays.stream(CosmereEnumUtils.ORE_TYPES) .collect(Collectors.toMap( Function.identity(), oreType -> diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 4ec18c57b..794f0b2d1 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -1,13 +1,11 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf - * Special thank you to SizableShrimp from the Forge Project discord! - * Java isn't my first programming language, so I didn't know you could collect and set up items like this! - * Makes setting up items for metals a breeze~ + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.common.registry; import leaf.cosmere.api.Constants.RegNameStubs; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.items.GuideItem; @@ -36,7 +34,7 @@ public class ItemsRegistry public static final Map> METAL_RAW_ORE = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasOre) .collect(Collectors.toMap( Function.identity(), @@ -46,7 +44,7 @@ public class ItemsRegistry ))); public static final Map> METAL_RAW_BLEND = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::isAlloy) .collect(Collectors.toMap( Function.identity(), @@ -56,7 +54,7 @@ public class ItemsRegistry ))); public static final Map> METAL_NUGGETS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() || type == Metals.MetalType.COPPER) // I'm sorry for this Leaf :( >> Gerbagel .collect(Collectors.toMap( Function.identity(), @@ -66,7 +64,7 @@ public class ItemsRegistry ))); public static final Map> METAL_INGOTS = - Arrays.stream(Metals.MetalType.values()) + Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() && type != Metals.MetalType.COPPER) .collect(Collectors.toMap( Function.identity(), diff --git a/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java new file mode 100644 index 000000000..e267229c0 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java @@ -0,0 +1,13 @@ +/* + * File updated ~ 20 - 11 - 2024 ~ Leaf + */ + +package leaf.cosmere.common.util; + +import leaf.cosmere.common.resource.ore.OreType; + +public class CosmereEnumUtils +{ + //cosmere + public static final OreType[] ORE_TYPES = OreType.values(); +} diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java index d08fd137a..5f0a541db 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandBlock.java @@ -1,11 +1,12 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; //import leaf.cosmere.allomancy.common.registries.AllomancyEffects; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; @@ -70,7 +71,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta { boolean touching = false; BlockPos.MutableBlockPos blockpos$mutableblockpos = pPos.mutable(); - for (Direction direction : Direction.values()) + for (Direction direction : EnumUtils.DIRECTIONS) { BlockState blockstate = pLevel.getBlockState(blockpos$mutableblockpos); if (direction != Direction.DOWN || state.canBeHydrated(pLevel, pPos, blockstate.getFluidState(), blockpos$mutableblockpos)) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java index 35556458a..0e028eb3b 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainBlackSandLayerBlock.java @@ -1,9 +1,10 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; @@ -197,7 +198,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta { boolean touching = false; BlockPos.MutableBlockPos blockpos$mutableblockpos = pPos.mutable(); - for (Direction direction : Direction.values()) + for (Direction direction : EnumUtils.DIRECTIONS) { BlockState blockstate = pLevel.getBlockState(blockpos$mutableblockpos); if (direction != Direction.DOWN || state.canBeHydrated(pLevel, pPos, blockstate.getFluidState(), blockpos$mutableblockpos)) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java index 63670f10d..24af828ca 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandBlock.java @@ -1,11 +1,12 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; //import leaf.cosmere.allomancy.common.registries.AllomancyEffects; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; @@ -68,7 +69,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta { boolean touching = false; BlockPos.MutableBlockPos blockpos$mutableblockpos = pPos.mutable(); - for (Direction direction : Direction.values()) + for (Direction direction : EnumUtils.DIRECTIONS) { BlockState blockstate = pLevel.getBlockState(blockpos$mutableblockpos); if (direction != Direction.DOWN || state.canBeHydrated(pLevel, pPos, blockstate.getFluidState(), blockpos$mutableblockpos)) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java index 7369c071a..10d0fdc3a 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/blocks/TaldainWhiteSandLayerBlock.java @@ -1,9 +1,10 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.sandmastery.common.blocks; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.common.blocks.BaseFallingBlock; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.sandmastery.common.registries.SandmasteryBlocks; @@ -196,7 +197,7 @@ private static boolean touchesLiquid(BlockGetter pLevel, BlockPos pPos, BlockSta { boolean touching = false; BlockPos.MutableBlockPos blockpos$mutableblockpos = pPos.mutable(); - for (Direction direction : Direction.values()) + for (Direction direction : EnumUtils.DIRECTIONS) { BlockState blockstate = pLevel.getBlockState(blockpos$mutableblockpos); if (direction != Direction.DOWN || state.canBeHydrated(pLevel, pPos, blockstate.getFluidState(), blockpos$mutableblockpos)) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java index 8ad9841e0..d4ec81a40 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.client; @@ -51,25 +51,4 @@ public static void init(final FMLClientSetupEvent event) CosmereAPI.logger.info("Surgebinding client setup complete!"); } - - /* todo - re setup power icon registration - //special thank you to the chisels and bits team who have an example of how to register other sprites - @SubscribeEvent - public static void registerIconTextures(TextureStitchEvent.Pre event) - { - final TextureAtlas map = event.getAtlas(); - if (!map.location().equals(InventoryMenu.BLOCK_ATLAS)) - { - return; - } - - event.addSprite(Surgebinding.rl("icon/surgebinding")); - - for (final Roshar.Surges surge : Roshar.Surges.values()) - { - String toLowerCase = surge.toString().toLowerCase(Locale.ROOT); - event.addSprite(Surgebinding.rl("icon/surgebinding/" + toLowerCase)); - } - }*/ - } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index 261472507..2b8418984 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; @@ -28,6 +28,9 @@ public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule private int stormlightStored = 0; + //a little ew, I'd rather this in an enum utils, but it's the only place that needs it + public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); + @Override public void tickServer(ISpiritweb spiritweb) @@ -111,7 +114,7 @@ else if (livingEntity.isUnderWater()) if (Stream.of(helmet, breastplate, leggings, boots).allMatch(armorStack -> !armorStack.isEmpty() && armorStack.getItem() instanceof ArmorItem)) { //check armor matches same material - for (ShardplateArmorMaterial material : ShardplateArmorMaterial.values()) + for (ShardplateArmorMaterial material : ARMOR_MATERIALS) { if (Stream.of(helmet, breastplate, leggings, boots).allMatch((armorStack -> ((ArmorItem) armorStack.getItem()).getMaterial() == material))) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java index 06bef36ec..965d50d9f 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.entity.Chull; @@ -25,7 +26,7 @@ public class SurgebindingModBusEventHandler @SubscribeEvent(priority = EventPriority.HIGH) public static void onEntityAttributeModificationEvent(EntityAttributeModificationEvent event) { - for (Roshar.Surges surge : Roshar.Surges.values()) + for (Roshar.Surges surge : EnumUtils.SURGES) { event.add(EntityType.PLAYER, SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(surge).getAttribute()); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingAttributes.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingAttributes.java index ecd23c538..c36479426 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingAttributes.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingAttributes.java @@ -4,6 +4,7 @@ package leaf.cosmere.surgebinding.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.registration.impl.AttributeDeferredRegister; import leaf.cosmere.common.registration.impl.AttributeRegistryObject; @@ -20,7 +21,7 @@ public class SurgebindingAttributes public static final AttributeDeferredRegister ATTRIBUTES = new AttributeDeferredRegister(Surgebinding.MODID); public static final Map> SURGEBINDING_ATTRIBUTES = - Arrays.stream(Roshar.Surges.values()) + Arrays.stream(EnumUtils.SURGES) .collect(Collectors.toMap( Function.identity(), surge -> diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java index 7a87f6805..3dcfde4fe 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingBlocks.java @@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableList; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.registration.impl.BlockDeferredRegister; import leaf.cosmere.common.registration.impl.BlockRegistryObject; @@ -24,7 +25,7 @@ public class SurgebindingBlocks public static final BlockDeferredRegister BLOCKS = new BlockDeferredRegister(Surgebinding.MODID); public static final Map> GEM_BLOCKS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), gemstone -> BLOCKS.registerWithRarity( @@ -33,7 +34,7 @@ public class SurgebindingBlocks Rarity.UNCOMMON))); /* public static final Map> GEM_ORE = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), gemstone -> BLOCKS.registerWithRarity( @@ -42,7 +43,7 @@ public class SurgebindingBlocks Rarity.UNCOMMON))); public static final Map> GEM_ORE_DEEPSLATE = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), gemstone -> BLOCKS.registerWithRarity( diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java index 2468bd93d..923d46bb2 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -4,6 +4,7 @@ package leaf.cosmere.surgebinding.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; @@ -65,7 +66,7 @@ else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) } else if (tabKey == CreativeModeTabs.COMBAT) { - for (var gemstone : Roshar.Gemstone.values()) + for (var gemstone : EnumUtils.GEMSTONE_TYPES) { CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.HONORBLADES.get(gemstone)); } @@ -80,7 +81,7 @@ else if (tabKey == CreativeModeTabs.SPAWN_EGGS) } else if (tabKey == CreativeModeTabs.INGREDIENTS) { - for (var gemstone : Roshar.Gemstone.values()) + for (var gemstone : EnumUtils.GEMSTONE_TYPES) { CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.GEMSTONE_CHIPS.get(gemstone)); CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.GEMSTONE_MARKS.get(gemstone)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java index a0325e290..6c5a53af2 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingFeatures.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -13,49 +13,4 @@ public class SurgebindingFeatures public static final ConfiguredFeatureDeferredRegister CONFIGURED_FEATURES = new ConfiguredFeatureDeferredRegister(Surgebinding.MODID); public static final PlacedFeatureDeferredRegister PLACED_FEATURES = new PlacedFeatureDeferredRegister(Surgebinding.MODID); - /*public static final Map>> CONFIGURED_GEM_ORE_FEATURES = - Arrays.stream(Roshar.Gemstone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> CONFIGURED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new ConfiguredFeature<>( - Feature.ORE, - new OreConfiguration( - makeTarget(type), - 9))) - )); - - public static final Map> PLACED_GEM_ORE_FEATURES = - Arrays.stream(Roshar.Gemstone.values()) - .collect(Collectors.toMap( - Function.identity(), - type -> - PLACED_FEATURES.register( - type.getName() + Constants.RegNameStubs.ORE, - () -> new PlacedFeature(Holder.direct(CONFIGURED_GEM_ORE_FEATURES.get(type).get()), - FeatureRegistry.commonOrePlacement( - 8,//width? - HeightRangePlacement.triangle( - VerticalAnchor.aboveBottom(-80), - VerticalAnchor.aboveBottom(80) - ) - ) - ) - ) - )); - - - private static List makeTarget(Roshar.Gemstone type) - { - return ImmutableList.of( - OreConfiguration.target( - FeatureRegistry.STONE_ORE_REPLACEABLES, - SurgebindingBlocks.GEM_ORE.get(type).getBlock().defaultBlockState()), - OreConfiguration.target( - FeatureRegistry.DEEPSLATE_ORE_REPLACEABLES, - SurgebindingBlocks.GEM_ORE_DEEPSLATE.get(type).getBlock().defaultBlockState()) - ); - } -*/ } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java index 66aa3fb54..3456ddde9 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java @@ -1,10 +1,11 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; @@ -43,7 +44,7 @@ private SurgebindingItems() public static final Map> HONORBLADES = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -53,7 +54,7 @@ private SurgebindingItems() public static final Map> GEMSTONE_CHIPS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -63,7 +64,7 @@ private SurgebindingItems() public static final Map> GEMSTONE_MARKS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -73,7 +74,7 @@ private SurgebindingItems() public static final Map> GEMSTONE_BROAMS = - Arrays.stream(Roshar.Gemstone.values()) + Arrays.stream(EnumUtils.GEMSTONE_TYPES) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingManifestations.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingManifestations.java index 6889efbbc..ad9eea742 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingManifestations.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingManifestations.java @@ -1,9 +1,10 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 20 - 11 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.registration.impl.ManifestationDeferredRegister; @@ -22,7 +23,7 @@ public class SurgebindingManifestations public static final Map> SURGEBINDING_POWERS = - Arrays.stream(Roshar.Surges.values()) + Arrays.stream(EnumUtils.SURGES) .collect(Collectors.toMap( Function.identity(), surge -> @@ -35,17 +36,17 @@ public class SurgebindingManifestations private static SurgebindingManifestation makeSurgebindingManifestation(Roshar.Surges surge) { return switch (surge) - { - case ADHESION -> new SurgeAdhesion(surge); - case GRAVITATION -> new SurgeGravitation(surge); - case DIVISION -> new SurgeDivision(surge); - case ABRASION -> new SurgeAbrasion(surge); - case PROGRESSION -> new SurgeProgression(surge); - case ILLUMINATION -> new SurgeIllumination(surge); - case TRANSFORMATION -> new SurgeTransformation(surge); - case TRANSPORTATION -> new SurgeTransportation(surge); - case COHESION -> new SurgeCohesion(surge); - case TENSION -> new SurgeTension(surge); - }; + { + case ADHESION -> new SurgeAdhesion(surge); + case GRAVITATION -> new SurgeGravitation(surge); + case DIVISION -> new SurgeDivision(surge); + case ABRASION -> new SurgeAbrasion(surge); + case PROGRESSION -> new SurgeProgression(surge); + case ILLUMINATION -> new SurgeIllumination(surge); + case TRANSFORMATION -> new SurgeTransformation(surge); + case TRANSPORTATION -> new SurgeTransportation(surge); + case COHESION -> new SurgeCohesion(surge); + case TENSION -> new SurgeTension(surge); + }; } } From 3e6ef26e5151fefc6a846e0105c6ea90c3e6c9b6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 12:26:41 +1300 Subject: [PATCH 0943/1090] [Port] bump version --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 40d477fd6..119c4283e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # -# File updated ~ 10 - 10 - 2024 ~ Leaf +# File updated ~ 20 - 11 - 2024 ~ Leaf # org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false @@ -8,7 +8,7 @@ java_version=17 minecraft_version=1.20.1 forge_version=47.3.0 #mod -mod_version=0.6 +mod_version=0.7 # Mappings mappings_channel=parchment mappings_version=2023.09.03-1.20.1 From c4b9579e37a357eb0fc2079beba398c059aa2e0f Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 20 Nov 2024 15:26:27 +1300 Subject: [PATCH 0944/1090] [Port] bump version for github issue tracker --- .github/ISSUE_TEMPLATE/general_issue.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/general_issue.yml b/.github/ISSUE_TEMPLATE/general_issue.yml index 0d9a85e22..145043a45 100644 --- a/.github/ISSUE_TEMPLATE/general_issue.yml +++ b/.github/ISSUE_TEMPLATE/general_issue.yml @@ -24,7 +24,8 @@ body: label: Minecraft version description: What version of Minecraft are you using? options: - - 1.19.2 (Latest) + - 1.20.1 (Latest) + - 1.19.2 - 1.19.0 or 1.19.1 (No longer being developed) - 1.18.x or earlier (No longer being developed) validations: From 5f834cd524cb678f0aae4c86f11f5433880eafe7 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 20 Nov 2024 20:32:25 +0100 Subject: [PATCH 0945/1090] [Allomancy] Fixed a bug where running out of pewter would crash the game Also wouldn't take delayed pewter damage, same cause --- .../common/manifestation/AllomancyPewter.java | 2 +- .../AllomancyDamageTypesRegistry.java | 66 ++++++++++++++++--- .../allomancy/AllomancyDataGenerator.java | 2 + .../AllomancyDatapackRegistryProvider.java | 29 ++++++++ .../allomancy/AllomancyEngLangGen.java | 4 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cf27fc9bc2e6304092bb5cd54e1f0003bca1e7c0 | 2 + .../assets/allomancy/lang/en_us.json | 4 +- .../damage_type/pewter_delayed_damage.json | 5 ++ .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- 13 files changed, 109 insertions(+), 25 deletions(-) create mode 100644 src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDatapackRegistryProvider.java create mode 100644 src/datagen/generated/allomancy/.cache/cf27fc9bc2e6304092bb5cd54e1f0003bca1e7c0 create mode 100644 src/datagen/generated/allomancy/data/allomancy/damage_type/pewter_delayed_damage.json diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java index 731d009ba..0102614f7 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyPewter.java @@ -62,7 +62,7 @@ public void onModeChange(ISpiritweb data, int lastMode) AllomancySpiritwebSubmodule asm = AllomancySpiritwebSubmodule.getSubmodule(data); float delayedDamage = asm.getPewterDelayedDamage(); - data.getLiving().hurt(AllomancyDamageTypesRegistry.damageSource(data.getLiving().level(), AllomancyDamageTypesRegistry.PEWTER_DELAYED_DAMAGE), delayedDamage); + data.getLiving().hurt(AllomancyDamageTypesRegistry.PEWTER_DELAYED_DAMAGE.source(data.getLiving().level()), delayedDamage); asm.setPewterDelayedDamage(0); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java index eeea5d59e..257188e37 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/registries/AllomancyDamageTypesRegistry.java @@ -1,25 +1,71 @@ package leaf.cosmere.allomancy.common.registries; +import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.api.text.IHasTranslationKey; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; +import net.minecraft.core.RegistryAccess; import net.minecraft.core.registries.Registries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageType; import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; -public class AllomancyDamageTypesRegistry +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +public class AllomancyDamageTypesRegistry extends CosmereDamageTypesRegistry { - public static final ResourceKey PEWTER_DELAYED_DAMAGE = createKey("pewter_delayed_damage"); + public static final Map INTERNAL_DAMAGE_TYPES = new HashMap<>(); + public static final Map DAMAGE_TYPES = Collections.unmodifiableMap(INTERNAL_DAMAGE_TYPES); - // special thanks to the aether mod team for inspiration - private static ResourceKey createKey(String name) - { - return ResourceKey.create(Registries.DAMAGE_TYPE, new ResourceLocation(Cosmere.MODID, name)); - } + public static final AllomancyDamageType PEWTER_DELAYED_DAMAGE = new AllomancyDamageType("pewter_delayed_damage", 0.1f); - public static DamageSource damageSource(Level level, ResourceKey key) + public record AllomancyDamageType(ResourceKey key, float exhaustion) implements IHasTranslationKey { - return new DamageSource(level.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key)); + public AllomancyDamageType + { + INTERNAL_DAMAGE_TYPES.put(key.location().toString(), this); + } + + private AllomancyDamageType(String name) + { + this(name, 0); + } + + private AllomancyDamageType(String name, float exhaustion) + { + this(ResourceKey.create(Registries.DAMAGE_TYPE, Allomancy.rl(name)), exhaustion); + } + + public String getMsgId() + { + return registryName().getNamespace() + "." + registryName().getPath(); + } + + public ResourceLocation registryName() + { + return key.location(); + } + + @NotNull + @Override + public String getTranslationKey() + { + return "death.attack." + getMsgId(); + } + + public DamageSource source(Level level) + { + return source(level.registryAccess()); + } + + public DamageSource source(RegistryAccess registryAccess) + { + return new DamageSource(registryAccess.registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(key)); + } } -} +} \ No newline at end of file diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java index ecb12cb2a..26f54954a 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDataGenerator.java @@ -29,6 +29,8 @@ public static void gatherData(GatherDataEvent event) generator.addProvider(true, new AllomancyRecipeGen(packOutput, existingFileHelper)); generator.addProvider(true, new AllomancyPatchouliGen(packOutput)); generator.addProvider(true, new AllomancyTagProvider(packOutput, event.getLookupProvider(), existingFileHelper)); + + generator.addProvider(true, new AllomancyDatapackRegistryProvider(packOutput, event.getLookupProvider())); } } \ No newline at end of file diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDatapackRegistryProvider.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDatapackRegistryProvider.java new file mode 100644 index 000000000..dc18d659a --- /dev/null +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyDatapackRegistryProvider.java @@ -0,0 +1,29 @@ +package leaf.cosmere.allomancy; + +import leaf.cosmere.BaseDatapackRegistryProvider; +import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.allomancy.common.registries.AllomancyDamageTypesRegistry; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.RegistrySetBuilder; +import net.minecraft.core.registries.Registries; +import net.minecraft.data.PackOutput; +import net.minecraft.world.damagesource.DamageType; + +import java.util.concurrent.CompletableFuture; + +public class AllomancyDatapackRegistryProvider extends BaseDatapackRegistryProvider +{ + protected AllomancyDatapackRegistryProvider(PackOutput output, CompletableFuture lookupProvider) + { + super(output, lookupProvider, BUILDER, Allomancy.MODID); + } + + private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() + .add(Registries.DAMAGE_TYPE, context -> + { + for (AllomancyDamageTypesRegistry.AllomancyDamageType damageType : AllomancyDamageTypesRegistry.DAMAGE_TYPES.values()) + { + context.register(damageType.key(), new DamageType(damageType.getMsgId(), damageType.exhaustion())); + } + }); +} diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index e0120355a..f3bb41b9b 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -184,8 +184,8 @@ private void addCreativeTabs() private void addDamageSources() { //Damage Sources - add("death.attack.pewter_delayed_damage", "%1$s stopped burning pewter and succumbed to their wounds"); - add("death.attack.pewter_delayed_damage.player", "%1$s stopped burning pewter while fighting %2$s and succumbed to their wounds"); + add("death.attack.allomancy.pewter_delayed_damage", "%1$s stopped burning pewter and succumbed to their wounds"); + add("death.attack.allomancy.pewter_delayed_damage.player", "%1$s stopped burning pewter while fighting %2$s and succumbed to their wounds"); } private void addMobEffects() diff --git a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 3792ce978..371e6e96c 100644 --- a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.8294557 Languages: en_us -e2d754dfdb4cdc9411fdf3f6d3de989b174b401c assets/allomancy/lang/en_us.json +// 1.20.1 2024-11-20T20:27:49.46325 Languages: en_us +8c6fb15514a56c014860e156aabda4f5ebdd2ac8 assets/allomancy/lang/en_us.json diff --git a/src/datagen/generated/allomancy/.cache/cf27fc9bc2e6304092bb5cd54e1f0003bca1e7c0 b/src/datagen/generated/allomancy/.cache/cf27fc9bc2e6304092bb5cd54e1f0003bca1e7c0 new file mode 100644 index 000000000..3c26eb343 --- /dev/null +++ b/src/datagen/generated/allomancy/.cache/cf27fc9bc2e6304092bb5cd54e1f0003bca1e7c0 @@ -0,0 +1,2 @@ +// 1.20.1 2024-11-20T20:22:55.8900388 Datapack registries: allomancy +3ceef284419cf1fbabbeef2250c9e0844d0c7e6d data/allomancy/damage_type/pewter_delayed_damage.json diff --git a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json index 5d16c9dd9..0b629adc8 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json +++ b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json @@ -53,8 +53,8 @@ "allomancy.thug": "Thug", "allomancy.tineye": "Tineye", "config.jade.plugin_allomancy.bronze_seeker_tooltip": "Seeker Tooltip", - "death.attack.pewter_delayed_damage": "%1$s stopped burning pewter and succumbed to their wounds", - "death.attack.pewter_delayed_damage.player": "%1$s stopped burning pewter while fighting %2$s and succumbed to their wounds", + "death.attack.allomancy.pewter_delayed_damage": "%1$s stopped burning pewter and succumbed to their wounds", + "death.attack.allomancy.pewter_delayed_damage.player": "%1$s stopped burning pewter while fighting %2$s and succumbed to their wounds", "effect.allomancy.allomancy_boost": "Allomancy Boost", "effect.allomancy.allomantic_brass_stun": "Allomantic Brass Stun", "effect.allomancy.allomantic_pewter": "Allomantic Pewter", diff --git a/src/datagen/generated/allomancy/data/allomancy/damage_type/pewter_delayed_damage.json b/src/datagen/generated/allomancy/data/allomancy/damage_type/pewter_delayed_damage.json new file mode 100644 index 000000000..cc326e172 --- /dev/null +++ b/src/datagen/generated/allomancy/data/allomancy/damage_type/pewter_delayed_damage.json @@ -0,0 +1,5 @@ +{ + "exhaustion": 0.1, + "message_id": "allomancy.pewter_delayed_damage", + "scaling": "when_caused_by_living_non_player" +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 416068a99..38a20c0ac 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-20T10:15:20.0685579 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2024-11-20T20:27:49.4919272 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 06f299a08..493d83b81 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-20T10:15:20.1115917 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2024-11-20T20:27:49.5307583 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", From 1b60c1179e2d1821e173c8782591919aca975d6d Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Thu, 21 Nov 2024 19:13:29 +0100 Subject: [PATCH 0946/1090] [UI] Added config options for the HUD's position and size --- .../cap/entity/SpiritwebCapability.java | 19 +++---------------- .../common/config/CosmereClientConfig.java | 7 +++++++ 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index d9ba2ae2d..d37e55371 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -5,9 +5,6 @@ package leaf.cosmere.common.cap.entity; import com.google.common.collect.Maps; -import com.mojang.blaze3d.font.GlyphInfo; -import com.mojang.blaze3d.platform.Window; -import com.mojang.blaze3d.shaders.Shader; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import leaf.cosmere.api.CosmereAPI; @@ -16,7 +13,6 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; -import leaf.cosmere.api.helpers.DrawHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; @@ -26,11 +22,8 @@ import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ManifestationRegistry; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.GameRenderer; -import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.ShaderInstance; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -38,9 +31,6 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.server.packs.resources.ReloadableResourceManager; -import net.minecraft.server.packs.resources.Resource; -import net.minecraft.server.packs.resources.ResourceManager; import net.minecraft.util.Mth; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.entity.Entity; @@ -48,7 +38,6 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.AttributeMap; -import net.minecraft.world.phys.Vec3; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; import net.minecraftforge.client.event.RenderLevelStageEvent; @@ -57,11 +46,9 @@ import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.player.PlayerEvent; -import org.lwjgl.opengl.GL11; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.awt.*; import java.io.FileNotFoundException; import java.util.*; import java.util.List; @@ -517,9 +504,9 @@ public void renderSelectedHUD(GuiGraphics gg) } Minecraft mc = Minecraft.getInstance(); - int startX = 10; - int startY = 20; - int size = 40; + int startX = CosmereConfigs.CLIENT_CONFIG.hudXCoordinate.get(); + int startY = CosmereConfigs.CLIENT_CONFIG.hudYCoordinate.get(); + int size = CosmereConfigs.CLIENT_CONFIG.hudSize.get(); String stringToDraw = I18n.get(selectedManifestation.getTextComponent().getString()); int xOffset = -5; diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index ff4dfdafa..4539fdf4f 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -12,6 +12,9 @@ public class CosmereClientConfig implements ICosmereConfig private final ForgeConfigSpec configSpec; public final ForgeConfigSpec.BooleanValue disableItemTinting; public final ForgeConfigSpec.BooleanValue disableSelectedManifestationHud; + public final ForgeConfigSpec.IntValue hudXCoordinate; + public final ForgeConfigSpec.IntValue hudYCoordinate; + public final ForgeConfigSpec.IntValue hudSize; CosmereClientConfig() @@ -23,6 +26,10 @@ public class CosmereClientConfig implements ICosmereConfig disableSelectedManifestationHud = builder.comment("Disables the HUD for selected power").define("disableSelectedManifestationHud", false); + hudXCoordinate = builder.comment("X coordinate for the HUD").defineInRange("hudXCoordinate", 10, 0, Integer.MAX_VALUE); + hudYCoordinate = builder.comment("Y coordinate for the HUD").defineInRange("hudXCoordinate", 20, 0, Integer.MAX_VALUE); + hudSize = builder.comment("Size of the icon in the HUD; both width and height").defineInRange("hudSize", 40, 0, Integer.MAX_VALUE); + builder.pop(); configSpec = builder.build(); } From 16b71ab49b6d5d465b7ee198237f45bf90985651 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Thu, 21 Nov 2024 19:16:57 +0100 Subject: [PATCH 0947/1090] [UI] Fixed a typo that merged config options woops --- .../java/leaf/cosmere/common/config/CosmereClientConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index 4539fdf4f..42f9e81fd 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -27,7 +27,7 @@ public class CosmereClientConfig implements ICosmereConfig disableSelectedManifestationHud = builder.comment("Disables the HUD for selected power").define("disableSelectedManifestationHud", false); hudXCoordinate = builder.comment("X coordinate for the HUD").defineInRange("hudXCoordinate", 10, 0, Integer.MAX_VALUE); - hudYCoordinate = builder.comment("Y coordinate for the HUD").defineInRange("hudXCoordinate", 20, 0, Integer.MAX_VALUE); + hudYCoordinate = builder.comment("Y coordinate for the HUD").defineInRange("hudYCoordinate", 20, 0, Integer.MAX_VALUE); hudSize = builder.comment("Size of the icon in the HUD; both width and height").defineInRange("hudSize", 40, 0, Integer.MAX_VALUE); builder.pop(); From 76b0adc23e29fba8dbed1c9ec6833a9656396589 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 14 Dec 2024 13:36:45 +0100 Subject: [PATCH 0948/1090] [Allomancy] Temp fix for copper nuggets not being accepted into coin pouch --- .../allomancy/common/items/CoinPouchItem.java | 3 +- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +-- .../curios/entities/feruchemists.json | 4 +-- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +-- .../curios/entities/hemalurgists.json | 4 +-- .../leaf/cosmere/tag/CosmereTagProvider.java | 36 +++++++------------ .../cosmere/common/properties/PropTypes.java | 6 ++-- 7 files changed, 26 insertions(+), 35 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java index 2ac2aa3c8..4d70ae00b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java @@ -48,7 +48,8 @@ public class CoinPouchItem extends ProjectileWeaponItem { public static final Predicate SUPPORTED_PROJECTILES = (itemStack) -> { - final boolean isNugget = itemStack.is(Tags.Items.NUGGETS); + // todo: fix copper nugget tagging + final boolean isNugget = itemStack.is(Tags.Items.NUGGETS) || itemStack.getItem() == ItemsRegistry.METAL_NUGGETS.get(Metals.MetalType.COPPER).asItem(); // don't know why copper nuggets aren't tagged final boolean containsMetal = itemStack.is(CosmereTags.Items.CONTAINS_METAL); final boolean isUncommonMetal = (itemStack.getItem() instanceof IHasMetalType metalType) && metalType.getMetalType().getRarity() != Rarity.COMMON; return isNugget && containsMetal && !isUncommonMetal; diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 38a20c0ac..2c9b477b2 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-20T20:27:49.4919272 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2024-11-30T13:37:57.7549239 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index 61b319ff8..da81b44bb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 493d83b81..d6e66b732 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2024-11-20T20:27:49.5307583 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2024-11-30T13:37:57.7925373 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 059c851e4..dfb51b013 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -69,19 +69,23 @@ private void addItems() for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { - if (metalType.hasMaterialItem() && metalType != Metals.MetalType.COPPER) + if (metalType.hasMaterialItem()) { - MetalIngotItem ingotItem = ItemsRegistry.METAL_INGOTS.get(metalType).asItem(); + // copper only needs nugget, don't tag ingot + if (metalType != Metals.MetalType.COPPER) + { + MetalIngotItem ingotItem = ItemsRegistry.METAL_INGOTS.get(metalType).asItem(); - //don't need to tell the tag what each individual item is if they're tagged correctly - //add(Tags.Items.INGOTS, ingotItem); + //don't need to tell the tag what each individual item is if they're tagged correctly + //add(Tags.Items.INGOTS, ingotItem); - // tell our ingots what their tags are. - final TagKey metalIngotTag = metalType.getMetalIngotTag(); - addToTag(metalIngotTag, ingotItem); + // tell our ingots what their tags are. + final TagKey metalIngotTag = metalType.getMetalIngotTag(); + addToTag(metalIngotTag, ingotItem); - //tell the ingots that our ingot tags are part of them - getItemBuilder(Tags.Items.INGOTS).add(metalIngotTag); + //tell the ingots that our ingot tags are part of them + getItemBuilder(Tags.Items.INGOTS).add(metalIngotTag); + } //tell the nuggets that our nugget tags are part of them final TagKey metalNuggetTag = metalType.getMetalNuggetTag(); @@ -95,20 +99,6 @@ private void addItems() // tell our nuggets what their tags are. addToTag(metalNuggetTag, nuggetItem); - - } - - // copper needs a nugget - if (metalType == Metals.MetalType.COPPER) - { - //tell the nuggets that our nugget tags are part of them - final TagKey metalNuggetTag = metalType.getMetalNuggetTag(); - getItemBuilder(Tags.Items.NUGGETS).add(metalNuggetTag); - - // tell the Nugget that our Nuggets are related - Item nuggetItem = ItemsRegistry.METAL_NUGGETS.get(metalType).asItem(); - - addToTag(metalNuggetTag, nuggetItem); } if (metalType.hasOre()) diff --git a/src/main/java/leaf/cosmere/common/properties/PropTypes.java b/src/main/java/leaf/cosmere/common/properties/PropTypes.java index e80b67255..010fb7296 100644 --- a/src/main/java/leaf/cosmere/common/properties/PropTypes.java +++ b/src/main/java/leaf/cosmere/common/properties/PropTypes.java @@ -42,8 +42,8 @@ public static class Items .fireResistant() .rarity(Rarity.EPIC); - public static final Supplier ONE = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(1); - public static final Supplier SIXTEEN = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(16); - public static final Supplier SIXTY_FOUR = () -> new Item.Properties()/*.tab(CosmereItemGroups.ITEMS)*/.stacksTo(64); + public static final Supplier ONE = () -> new Item.Properties().stacksTo(1); + public static final Supplier SIXTEEN = () -> new Item.Properties().stacksTo(16); + public static final Supplier SIXTY_FOUR = () -> new Item.Properties().stacksTo(64); } } From 80977cec7d05bedf5af6dbfa7a7b34263fa804c2 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 14 Dec 2024 14:06:58 +0100 Subject: [PATCH 0949/1090] [Allomancy] Fixed coin pouch menu name displaying incorrectly --- .../allomancy/client/gui/CoinPouchContainerScreen.java | 3 ++- .../leaf/cosmere/allomancy/common/items/CoinPouchItem.java | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java index 49490a074..643732269 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/gui/CoinPouchContainerScreen.java @@ -8,6 +8,7 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.coinpouch.CoinPouchContainerMenu; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.client.renderer.GameRenderer; @@ -60,7 +61,7 @@ protected void renderBg(GuiGraphics guiGraphics, float partialTicks, int mouseX, protected void renderLabels(GuiGraphics guiGraphics, int mouseX, int mouseY) { //write the name of the itemstack - guiGraphics.drawString(this.font, this.title.toString(), this.titleLabelX, this.titleLabelY, 4210752); + guiGraphics.drawString(this.font, this.title.getString(), this.titleLabelX, this.titleLabelY, 4210752, false); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java index 4d70ae00b..dc689d6fe 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/CoinPouchItem.java @@ -19,6 +19,7 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -48,7 +49,7 @@ public class CoinPouchItem extends ProjectileWeaponItem { public static final Predicate SUPPORTED_PROJECTILES = (itemStack) -> { - // todo: fix copper nugget tagging + // todo: fix copper nugget tagging final boolean isNugget = itemStack.is(Tags.Items.NUGGETS) || itemStack.getItem() == ItemsRegistry.METAL_NUGGETS.get(Metals.MetalType.COPPER).asItem(); // don't know why copper nuggets aren't tagged final boolean containsMetal = itemStack.is(CosmereTags.Items.CONTAINS_METAL); final boolean isUncommonMetal = (itemStack.getItem() instanceof IHasMetalType metalType) && metalType.getMetalType().getRarity() != Rarity.COMMON; @@ -89,7 +90,7 @@ public InteractionResultHolder use(Level level, Player player, Intera //open inventory if (!player.level().isClientSide && player instanceof ServerPlayer) { - MenuProvider container = new SimpleMenuProvider((windowID, playerInv, plyr) -> new CoinPouchContainerMenu(windowID, playerInv, coinPouchStack), coinPouchStack.getHoverName()); + MenuProvider container = new SimpleMenuProvider((windowID, playerInv, plyr) -> new CoinPouchContainerMenu(windowID, playerInv, coinPouchStack), Component.translatable("item.allomancy.coin_pouch")); NetworkHooks.openScreen((ServerPlayer) player, container, buf -> buf.writeBoolean(true)); } } From 2687af48417b4d73bd788600f4c7e2152bbef0f3 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 18 Dec 2024 20:01:20 +0100 Subject: [PATCH 0950/1090] [Allomancy] Fixed a bug where item entities wouldn't be pushed --- .../allomancy/common/manifestation/AllomancyIronSteel.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 9900aeec0..c5673d6ad 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -298,7 +298,8 @@ private void pushpullEntities(SpiritwebCapability data) //move small things if (targetEntity instanceof ItemEntity itemEntity) { - if (dataLiving instanceof Player player) + // pick up item if pulling + if (dataLiving instanceof Player player && !isPush) { itemEntity.playerTouch(player); } From 2709a93267ed01c83b3f47f70200d5a8af279a5d Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 09:21:28 +1300 Subject: [PATCH 0951/1090] [Port] #124 Setup missing aviar creative tab --- .../java/leaf/cosmere/aviar/common/Aviar.java | 7 +- .../common/registries/AviarCreativeTabs.java | 86 +++++++++++++++++++ 2 files changed, 90 insertions(+), 3 deletions(-) create mode 100644 src/aviar/java/leaf/cosmere/aviar/common/registries/AviarCreativeTabs.java diff --git a/src/aviar/java/leaf/cosmere/aviar/common/Aviar.java b/src/aviar/java/leaf/cosmere/aviar/common/Aviar.java index a686efa23..752e73571 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/Aviar.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/Aviar.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.aviar.common; @@ -8,11 +8,11 @@ import leaf.cosmere.api.IModModule; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Version; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.config.CosmereModConfig; import leaf.cosmere.aviar.common.capabilities.AviarSpiritwebSubmodule; import leaf.cosmere.aviar.common.config.AviarConfigs; import leaf.cosmere.aviar.common.registries.*; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.config.CosmereModConfig; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.ModLoadingContext; @@ -57,6 +57,7 @@ public Aviar() AviarMenuTypes.MENU_TYPES.register(modBus); AviarRecipes.SPECIAL_RECIPES.register(modBus); AviarStats.STATS.register(modBus); + AviarCreativeTabs.CREATIVE_TABS.register(modBus); versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); } diff --git a/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarCreativeTabs.java b/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarCreativeTabs.java new file mode 100644 index 000000000..f791726b4 --- /dev/null +++ b/src/aviar/java/leaf/cosmere/aviar/common/registries/AviarCreativeTabs.java @@ -0,0 +1,86 @@ +/* + * File updated ~ 20 - 12 - 2024 ~ Leaf + */ + +package leaf.cosmere.aviar.common.registries; + +import leaf.cosmere.aviar.common.Aviar; +import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; +import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.CreativeModeTabs; +import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; + +public class AviarCreativeTabs +{ + public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Aviar.MODID, AviarCreativeTabs::addToExistingTabs); + + + public static final CreativeTabRegistryObject ITEMS = + CREATIVE_TABS.registerMain( + Component.translatable("tabs." + Aviar.MODID + ".items"), + AviarItems.PATJIS_FRUIT, + builder -> + builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes + .displayItems((displayParameters, output) -> + { + CreativeTabDeferredRegister.addToDisplay(AviarItems.ITEMS, output); + //AviarItems.METAL_VIAL.get().addFilled(output); + //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + }) + ); + + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) + { + ResourceKey tabKey = event.getTabKey(); + if (tabKey == CreativeModeTabs.BUILDING_BLOCKS) + { + //CreativeTabDeferredRegister.addToDisplay(event, BlocksRegistry.METALWORKING_TABLE); + } + else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) + { + /*for (var ore : BlocksRegistry.METAL_ORE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + } + for (var ore : BlocksRegistry.METAL_ORE_DEEPSLATE.values()) + { + CreativeTabDeferredRegister.addToDisplay(event, ore); + }*/ + } + else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.REDSTONE_BLOCKS) + { + + } + else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) + { + + } + else if (tabKey == CreativeModeTabs.COMBAT) + { + + } + else if (tabKey == CreativeModeTabs.FOOD_AND_DRINKS) + { + //ItemsRegistry.SOME_FOOD.get().addItems(event); + CreativeTabDeferredRegister.addToDisplay(event, AviarItems.PATJIS_FRUIT); + } + else if (tabKey == CreativeModeTabs.SPAWN_EGGS) + { + CreativeTabDeferredRegister.addToDisplay(event, AviarItems.AVIAR_BIRD_EGG); + + } + else if (tabKey == CreativeModeTabs.INGREDIENTS) + { + + } + } + +} From 450c03c774ea5ca18cbe8480c16b54595591c91e Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Thu, 19 Dec 2024 21:26:02 +0100 Subject: [PATCH 0952/1090] [Tools] Fixed copper tools not working --- src/api/java/leaf/cosmere/api/Metals.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index c4e5adee6..70ae51c85 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -60,7 +60,7 @@ public enum MetalType implements Tier, ArmorMaterial //Mental/Cognitive ZINC(4, 2, 276, 16f, 0.5f, 12), BRASS(5, 2, 142, 10f, 0f, 16),//alloy of zinc and copper 50/50 ? - COPPER(6, 0, 0, 0, 0, 0),//ignore tier data + COPPER(6, 2, 131, 9f, 2.0f, 32), BRONZE(7, 2, 400, 8f, 1.8f, 16),//alloy of copper and tin? 3/1 ? //Enhancement/spiritual From 7b2e36d4957edbdd9f5a14e15bb2d2d3ddb441cb Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 09:52:09 +1300 Subject: [PATCH 0953/1090] [Port] aviar appear on shoulder again - fixes #124 --- .../aviar/client/AviarModClientEvents.java | 16 +++++++-------- .../client/render/AviarLayerDefinitions.java | 10 ---------- .../aviar/client/render/AviarRenderers.java | 20 ------------------- .../render/layers/AviarOnShoulderLayer.java | 19 ++++++++++++++---- 4 files changed, 22 insertions(+), 43 deletions(-) delete mode 100644 src/aviar/java/leaf/cosmere/aviar/client/render/AviarLayerDefinitions.java delete mode 100644 src/aviar/java/leaf/cosmere/aviar/client/render/AviarRenderers.java diff --git a/src/aviar/java/leaf/cosmere/aviar/client/AviarModClientEvents.java b/src/aviar/java/leaf/cosmere/aviar/client/AviarModClientEvents.java index fe0cc01b4..8c27c30ae 100644 --- a/src/aviar/java/leaf/cosmere/aviar/client/AviarModClientEvents.java +++ b/src/aviar/java/leaf/cosmere/aviar/client/AviarModClientEvents.java @@ -1,15 +1,17 @@ /* - * File updated ~ 20 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.aviar.client; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.aviar.client.render.AviarRenderers; import leaf.cosmere.aviar.client.render.layers.AviarOnShoulderLayer; import leaf.cosmere.aviar.common.Aviar; +import leaf.cosmere.aviar.common.registries.AviarEntityTypes; import net.minecraft.client.renderer.entity.EntityRenderer; +import net.minecraft.client.renderer.entity.EntityRenderers; import net.minecraft.client.renderer.entity.LivingEntityRenderer; +import net.minecraft.client.renderer.entity.ParrotRenderer; import net.minecraft.world.entity.player.Player; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; @@ -23,19 +25,15 @@ public class AviarModClientEvents @SubscribeEvent public static void init(final FMLClientSetupEvent event) { - AviarRenderers.register(); + //register the parrot as a normal rendering mob entity + EntityRenderers.register(AviarEntityTypes.AVIAR_ENTITY.get(), ParrotRenderer::new); CosmereAPI.logger.info("Cosmere Aviar mod client setup complete!"); } - @SubscribeEvent - public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) - { - //evt.registerLayerDefinition(AviarLayerDefinitions.AVIAR, ParrotModel::createBodyLayer); - } - @SubscribeEvent public static void addLayers(EntityRenderersEvent.AddLayers evt) { + //add parrot layers to the player model addPlayerLayer(evt, "default"); addPlayerLayer(evt, "slim"); } diff --git a/src/aviar/java/leaf/cosmere/aviar/client/render/AviarLayerDefinitions.java b/src/aviar/java/leaf/cosmere/aviar/client/render/AviarLayerDefinitions.java deleted file mode 100644 index 9c13b3a52..000000000 --- a/src/aviar/java/leaf/cosmere/aviar/client/render/AviarLayerDefinitions.java +++ /dev/null @@ -1,10 +0,0 @@ -/* - * File updated ~ 20 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aviar.client.render; - -public class AviarLayerDefinitions -{ - //public static final ModelLayerLocation AVIAR = new ModelLayerLocation(Aviar.rl("aviar_mob_model"), "aviar_mob_model"); -} diff --git a/src/aviar/java/leaf/cosmere/aviar/client/render/AviarRenderers.java b/src/aviar/java/leaf/cosmere/aviar/client/render/AviarRenderers.java deleted file mode 100644 index 3ed5f3157..000000000 --- a/src/aviar/java/leaf/cosmere/aviar/client/render/AviarRenderers.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * File updated ~ 19 - 11 - 2023 ~ Leaf - */ - -package leaf.cosmere.aviar.client.render; - -import leaf.cosmere.aviar.common.registries.AviarEntityTypes; -import net.minecraft.client.renderer.entity.EntityRenderers; -import net.minecraft.client.renderer.entity.ParrotRenderer; - -public class AviarRenderers -{ - - public static void register() - { - EntityRenderers.register(AviarEntityTypes.AVIAR_ENTITY.get(), ParrotRenderer::new); - } - - -} diff --git a/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java b/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java index c20766ee7..047172300 100644 --- a/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java +++ b/src/aviar/java/leaf/cosmere/aviar/client/render/layers/AviarOnShoulderLayer.java @@ -1,7 +1,12 @@ +/* + * File updated ~ 20 - 12 - 2024 ~ Leaf + */ + package leaf.cosmere.aviar.client.render.layers; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; +import leaf.cosmere.aviar.common.registries.AviarEntityTypes; import net.minecraft.client.model.ParrotModel; import net.minecraft.client.model.PlayerModel; import net.minecraft.client.model.geom.EntityModelSet; @@ -37,10 +42,16 @@ public void render(PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPacke private void render(PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPackedLight, T pLivingEntity, float pLimbSwing, float pLimbSwingAmount, float pNetHeadYaw, float pHeadPitch, boolean pLeftShoulder) { - CompoundTag compoundtag = pLeftShoulder ? pLivingEntity.getShoulderEntityLeft() : pLivingEntity.getShoulderEntityRight(); - EntityType.byString(compoundtag.getString("id")).filter((entityType) -> { - return entityType == EntityType.PARROT; - }).ifPresent((entityType) -> { + CompoundTag compoundtag = + pLeftShoulder + ? pLivingEntity.getShoulderEntityLeft() + : pLivingEntity.getShoulderEntityRight(); + + EntityType.byString(compoundtag.getString("id")).filter((entityType) -> + { + return entityType == AviarEntityTypes.AVIAR_ENTITY.get(); + }).ifPresent((entityType) -> + { pMatrixStack.pushPose(); pMatrixStack.translate(pLeftShoulder ? 0.4F : -0.4F, pLivingEntity.isCrouching() ? -1.3F : -1.5F, 0.0F); Parrot.Variant variant = Parrot.Variant.byId(compoundtag.getInt("Variant")); From ecba1ba2363fa0b5d8618e3a715de5c8d0efacf6 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 10:14:08 +1300 Subject: [PATCH 0954/1090] [Port] Colour handler init on client setup - fixes #129 --- src/main/java/leaf/cosmere/common/Cosmere.java | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index 1f8f29aeb..aa719c43d 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.common; @@ -20,8 +20,8 @@ import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.event.config.ModConfigEvent; +import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; -import net.minecraftforge.fml.event.lifecycle.FMLLoadCompleteEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import java.util.HashMap; @@ -47,8 +47,8 @@ public Cosmere() CosmereConfigs.registerConfigs(ModLoadingContext.get()); IEventBus modBus = FMLJavaModLoadingContext.get().getModEventBus(); - modBus.addListener(this::commonSetup); - modBus.addListener(this::loadComplete); + modBus.addListener(this::onCommonSetup); + modBus.addListener(this::onClientSetup); modBus.addListener(this::onAddCaps); modBus.addListener(this::onConfigLoad); modBus.addListener(this::onConfigReload); @@ -151,7 +151,7 @@ public static Map makeSp return spiritwebSubmoduleMap; } - private void commonSetup(FMLCommonSetupEvent event) + private void onCommonSetup(FMLCommonSetupEvent event) { //Initialization notification CosmereAPI.logger.info("Cosmere Version {} initializing...", versionNumber); @@ -182,12 +182,8 @@ private void onAddCaps(RegisterCapabilitiesEvent capabilitiesEvent) capabilitiesEvent.register(SpiritwebCapability.class); } - private void loadComplete(FMLLoadCompleteEvent event) + private void onClientSetup(FMLClientSetupEvent event) { - event.enqueueWork(() -> - { - ColorHandler.init(); - - }); + event.enqueueWork(ColorHandler::init); } } From 9758226c4cdb9b886bd37cb732d7ed7e5e641cff Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 10:35:21 +1300 Subject: [PATCH 0955/1090] [Port] Fix crash related to spectating mobs - fixes #130 --- .../java/leaf/cosmere/allomancy/mixin/EntityMixin.java | 8 ++++++-- src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java | 9 +++++++-- .../java/leaf/cosmere/awakening/common/Awakening.java | 8 ++++---- .../awakening/common/registries/AwakeningEffects.java | 7 ++----- .../leaf/cosmere/feruchemy/mixin/GameRendererMixin.java | 9 +++------ src/main/java/leaf/cosmere/mixin/LightTextureMixin.java | 6 +++--- 6 files changed, 25 insertions(+), 22 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java b/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java index c846ab7cb..053078a60 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/mixin/EntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 21 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.mixin; @@ -32,7 +32,11 @@ private void handleIsGlowing(CallbackInfoReturnable cir) return; } - Player clientPlayer = (Player) Minecraft.getInstance().getCameraEntity(); + if (!(Minecraft.getInstance().getCameraEntity() instanceof Player clientPlayer)) + { + return; + } + LivingEntity target = (LivingEntity) e; SpiritwebCapability.get(clientPlayer).ifPresent(playerSpiritweb -> diff --git a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java index d65577a3d..1d5ebc3ab 100644 --- a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java +++ b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 1 - 5 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.aviar.mixin; @@ -28,7 +28,12 @@ private void handleIsGlowing(CallbackInfoReturnable cir) final boolean isServerSide = !(e.level().isClientSide); final boolean isInanimateEntity = !(e instanceof LivingEntity); - Player clientPlayer = (Player) Minecraft.getInstance().player; + + if (!(Minecraft.getInstance().getCameraEntity() instanceof Player clientPlayer)) + { + return; + } + if (isServerSide || isInanimateEntity || cir.getReturnValue() || clientPlayer == null) { return; diff --git a/src/awakening/java/leaf/cosmere/awakening/common/Awakening.java b/src/awakening/java/leaf/cosmere/awakening/common/Awakening.java index 598420eea..27bce364b 100644 --- a/src/awakening/java/leaf/cosmere/awakening/common/Awakening.java +++ b/src/awakening/java/leaf/cosmere/awakening/common/Awakening.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.awakening.common; @@ -8,11 +8,11 @@ import leaf.cosmere.api.IModModule; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Version; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.config.CosmereModConfig; import leaf.cosmere.awakening.common.capabilities.AwakeningSpiritwebSubmodule; import leaf.cosmere.awakening.common.config.AwakeningConfigs; import leaf.cosmere.awakening.common.registries.*; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.config.CosmereModConfig; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.fml.ModLoadingContext; @@ -48,7 +48,7 @@ public Awakening() AwakeningBiomes.BIOMES.register(modBus); AwakeningBiomeModifiers.BIOME_MODIFIER_SERIALIZERS.register(modBus); AwakeningBlocks.BLOCKS.register(modBus); - AwakeningEffects.EFFECTS.register(modBus); + //AwakeningEffects.EFFECTS.register(modBus); AwakeningFeatures.CONFIGURED_FEATURES.register(modBus); AwakeningFeatures.PLACED_FEATURES.register(modBus); AwakeningEntityTypes.ENTITY_TYPES.register(modBus); diff --git a/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningEffects.java b/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningEffects.java index a0c5d2944..fb66859bf 100644 --- a/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningEffects.java +++ b/src/awakening/java/leaf/cosmere/awakening/common/registries/AwakeningEffects.java @@ -1,16 +1,13 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.awakening.common.registries; -import leaf.cosmere.common.registration.impl.CosmereEffectDeferredRegister; -import leaf.cosmere.awakening.common.Awakening; - public class AwakeningEffects { - public static final CosmereEffectDeferredRegister EFFECTS = new CosmereEffectDeferredRegister(Awakening.MODID); + //public static final CosmereEffectDeferredRegister EFFECTS = new CosmereEffectDeferredRegister(Awakening.MODID); } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java index d5270a736..f704b89b9 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/mixin/GameRendererMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.feruchemy.mixin; @@ -29,9 +29,8 @@ public class GameRendererMixin private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean useFOVSetting, CallbackInfoReturnable info) { double fov = info.getReturnValue(); - Player player = (Player) Minecraft.getInstance().getCameraEntity(); - if (player == null) + if (!(Minecraft.getInstance().getCameraEntity() instanceof Player player)) { return; } @@ -57,9 +56,7 @@ private void getZoomedFov(Camera activeRenderInfoIn, float partialTicks, boolean ) private void getRenderDistance(CallbackInfoReturnable info) { - Player player = (Player) Minecraft.getInstance().getCameraEntity(); - - if (player == null) + if (!(Minecraft.getInstance().getCameraEntity() instanceof Player player)) { return; } diff --git a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java index 44300ba76..5074cf357 100644 --- a/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java +++ b/src/main/java/leaf/cosmere/mixin/LightTextureMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 11 - 2023 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.mixin; @@ -41,8 +41,8 @@ private float updateLightTextureConstant(float prev) { //do stuff final Minecraft mc = Minecraft.getInstance(); - Player clientPlayer = (Player) mc.getCameraEntity(); - if (clientPlayer == null) + + if (!(Minecraft.getInstance().getCameraEntity() instanceof Player clientPlayer)) { return prev; } From 93227916a1faa51d256f746ca3d72836fb457335 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 12:24:09 +1300 Subject: [PATCH 0956/1090] [Port] Fix detection of invalid vial combining recipe items - fixes #54 --- .../allomancy/common/recipes/VialMixingRecipe.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java index a2a99ea32..1d443aeee 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.recipes; @@ -76,6 +76,15 @@ else if (testForViableNugget(stack).isPresent()) hasNugget = true; nuggetTotal++; } + else if (stack.isEmpty()) + { + //ignore empty slots + } + else + { + //if its not a vial, bottle, or nugget, then its not a valid recipe + return false; + } } if (vialStack == null) From fc3e62fd3b0699cba064f7c37fbe683da02059f3 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 12:24:29 +1300 Subject: [PATCH 0957/1090] [Port] update github issue template --- .github/ISSUE_TEMPLATE/general_issue.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/general_issue.yml b/.github/ISSUE_TEMPLATE/general_issue.yml index 145043a45..fb257d186 100644 --- a/.github/ISSUE_TEMPLATE/general_issue.yml +++ b/.github/ISSUE_TEMPLATE/general_issue.yml @@ -32,8 +32,8 @@ body: required: true - type: input attributes: - label: Forge version - description: What version of Forge are you using? + label: Modloader version + description: What version of Neo or Forge are you using? placeholder: e.g. 43.1.3 validations: required: true From dab33779cee70cf51fd9940fc2de0cdec5feeb04 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 13:05:10 +1300 Subject: [PATCH 0958/1090] [Port] Fix breathing in stormlight not draining gem oops - #132 --- .../common/items/GemstoneItem.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java index a6510a37d..49363ad42 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -8,7 +8,6 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Roshar; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.charge.ItemChargeHelper; import leaf.cosmere.common.items.ChargeableItemBase; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; @@ -129,15 +128,20 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte //Get stormlight from gems if (!pPlayer.isCrouching()) { - if (charge + playerStormlight > maxPlayerStormlight) + //if charge is less than max stormlight, put all charge into player. + + final int attemptedTotal = charge + playerStormlight; + if (attemptedTotal <= maxPlayerStormlight) { - sb.adjustStormlight((maxPlayerStormlight - playerStormlight), true); - ItemChargeHelper.requestChargeExact(itemStack, pPlayer, ((charge + playerStormlight) - maxPlayerStormlight), true); + sb.adjustStormlight(charge, true); + setCharge(itemStack, 0); } else { - sb.adjustStormlight(charge, true); - ItemChargeHelper.requestChargeExact(itemStack, pPlayer, 0, true); + int remainder = attemptedTotal - maxPlayerStormlight; + final int chargeLevelUsed = charge - remainder; + sb.adjustStormlight(chargeLevelUsed, true); + adjustCharge(itemStack, -chargeLevelUsed); } } //put remaining stormlight into gem. From d003d0ba136236520873222b45612ac3eebbc130 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 13:05:37 +1300 Subject: [PATCH 0959/1090] [Port] Fix filled gemstones not showing up in creative --- .../common/registries/SurgebindingCreativeTabs.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java index 923d46bb2..813b66af7 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -30,9 +30,19 @@ public class SurgebindingCreativeTabs { CreativeTabDeferredRegister.addToDisplay(SurgebindingItems.ITEMS, output); //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + addFilled(output); }) ); + private static void addFilled(CreativeModeTab.Output output) + { + for (var gemstone : EnumUtils.GEMSTONE_TYPES) + { + SurgebindingItems.GEMSTONE_CHIPS.get(gemstone).get().addFilled(output); + SurgebindingItems.GEMSTONE_MARKS.get(gemstone).get().addFilled(output); + SurgebindingItems.GEMSTONE_BROAMS.get(gemstone).get().addFilled(output); + } + } private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { From bbedc503b31973e6eb365ae1f6f0b85e2128bf85 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 13:19:57 +1300 Subject: [PATCH 0960/1090] [Port] Fix progression particles showing even when affordable health is zero - #132 --- .../surgebinding/common/manifestation/SurgeProgression.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java index ba75d3cb0..97fb6edf1 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 20 - 12 - 2024 ~ Leaf */ package leaf.cosmere.surgebinding.common.manifestation; @@ -62,7 +62,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) else { final int affordableHealth = submodule.getStormlight() / stormlightHealingCostMultiplier; - if (submodule.adjustStormlight(-submodule.getStormlight(), true)) + if (affordableHealth > 0 && submodule.adjustStormlight(-submodule.getStormlight(), true)) { heal(eventTarget, eventTargetHealth + affordableHealth); } From 1f74bf624c481c6e3a806fa724bb12e2665eb63d Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 20 Dec 2024 13:24:53 +1300 Subject: [PATCH 0961/1090] [Port] Fix progression particles on babies showing even when affordable age is zero - #132 --- .../surgebinding/common/manifestation/SurgeProgression.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java index 97fb6edf1..25b43c3bc 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgeProgression.java @@ -92,7 +92,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) else { final int affordableAge = (int) ((float) submodule.getStormlight() / (float) (stormlightAgeUpCostMultiplier)) * ageUpAmount; - if (submodule.adjustStormlight(-submodule.getStormlight(), true)) + if (affordableAge > 0 && submodule.adjustStormlight(-submodule.getStormlight(), true)) { ageUp(ageableMob, affordableAge); } From d0310d1c26be6288e24c74f99d4971fce5478d00 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Fri, 3 Jan 2025 23:47:56 +0100 Subject: [PATCH 0962/1090] =?UTF-8?q?[Port]=C2=A0Fixed=20bug=20where=20ore?= =?UTF-8?q?s=20would=20drop=20an=20ore=20block=20instead=20of=20raw=20ore?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 54 ++++++------------- .../loot_tables/blocks/brass_block.json | 22 -------- .../loot_tables/blocks/cadmium_block.json | 22 -------- .../loot_tables/blocks/cadmium_ore.json | 22 -------- .../loot_tables/blocks/chromium_block.json | 22 -------- .../loot_tables/blocks/chromium_ore.json | 22 -------- .../blocks/deepslate_aluminum_ore.json | 22 -------- .../blocks/deepslate_cadmium_ore.json | 22 -------- .../blocks/deepslate_chromium_ore.json | 22 -------- .../blocks/deepslate_lead_ore.json | 22 -------- .../blocks/deepslate_nickel_ore.json | 22 -------- .../blocks/deepslate_silver_ore.json | 22 -------- .../loot_tables/blocks/deepslate_tin_ore.json | 22 -------- .../blocks/deepslate_zinc_ore.json | 22 -------- .../loot_tables/blocks/duralumin_block.json | 22 -------- .../loot_tables/blocks/electrum_block.json | 22 -------- .../loot_tables/blocks/harmonium_block.json | 22 -------- .../loot_tables/blocks/lead_block.json | 22 -------- .../cosmere/loot_tables/blocks/lead_ore.json | 22 -------- .../loot_tables/blocks/lerasatium_block.json | 22 -------- .../loot_tables/blocks/lerasium_block.json | 22 -------- .../loot_tables/blocks/malatium_block.json | 22 -------- .../blocks/metalworking_table.json | 22 -------- .../loot_tables/blocks/nickel_block.json | 22 -------- .../loot_tables/blocks/nickel_ore.json | 22 -------- .../loot_tables/blocks/nicrosil_block.json | 22 -------- .../loot_tables/blocks/pewter_block.json | 22 -------- .../loot_tables/blocks/silver_block.json | 22 -------- .../loot_tables/blocks/silver_ore.json | 22 -------- .../loot_tables/blocks/steel_block.json | 22 -------- .../cosmere/loot_tables/blocks/tin_block.json | 22 -------- .../cosmere/loot_tables/blocks/tin_ore.json | 22 -------- .../loot_tables/blocks/zinc_block.json | 22 -------- .../cosmere/loot_tables/blocks/zinc_ore.json | 22 -------- .../loot_tables/blocks/amethyst_block.json | 22 ++++++++ .../loot_tables/blocks/diamond_block.json | 22 ++++++++ .../loot_tables/blocks/emerald_block.json | 22 ++++++++ .../loot_tables/blocks/garnet_block.json | 22 ++++++++ .../loot_tables/blocks/heliodor_block.json | 22 ++++++++ .../loot_tables/blocks/lavis_polyp.json} | 4 +- .../loot_tables/blocks/prickletac.json} | 4 +- .../loot_tables/blocks/rockbud_variant.json | 22 ++++++++ .../loot_tables/blocks/ruby_block.json} | 4 +- .../loot_tables/blocks/sapphire_block.json | 22 ++++++++ .../loot_tables/blocks/smokestone_block.json | 22 ++++++++ .../loot_tables/blocks/topaz_block.json} | 4 +- .../loot_tables/blocks/vinebud.json} | 4 +- .../loot_tables/blocks/zircon_block.json | 22 ++++++++ .../SurgebindingBlockLootTableGen.java | 2 +- 51 files changed, 226 insertions(+), 778 deletions(-) delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json delete mode 100644 src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json rename src/datagen/generated/surgebinding/data/{cosmere/loot_tables/blocks/atium_block.json => surgebinding/loot_tables/blocks/lavis_polyp.json} (76%) rename src/datagen/generated/surgebinding/data/{cosmere/loot_tables/blocks/aluminum_block.json => surgebinding/loot_tables/blocks/prickletac.json} (76%) create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json rename src/datagen/generated/surgebinding/data/{cosmere/loot_tables/blocks/aluminum_ore.json => surgebinding/loot_tables/blocks/ruby_block.json} (76%) create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json rename src/datagen/generated/surgebinding/data/{cosmere/loot_tables/blocks/bendalloy_block.json => surgebinding/loot_tables/blocks/topaz_block.json} (76%) rename src/datagen/generated/surgebinding/data/{cosmere/loot_tables/blocks/bronze_block.json => surgebinding/loot_tables/blocks/vinebud.json} (77%) create mode 100644 src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 2c9b477b2..91fb50956 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-30T13:37:57.7549239 Curios for feruchemy +// 1.20.1 2025-01-03T23:43:48.532767 Curios for feruchemy 6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index d6e66b732..4233be686 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-30T13:37:57.7925373 Curios for hemalurgy +// 1.20.1 2025-01-03T23:43:48.5664 Curios for hemalurgy 2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index eba3b3a6e..d83450fd4 100644 --- a/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/datagen/generated/surgebinding/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,40 +1,16 @@ -// 1.20.1 2024-11-04T18:26:44.1668204 Loot Tables -1440a509cd4375633c42e39a73c393fac55bc5b5 data/cosmere/loot_tables/blocks/aluminum_block.json -7854c60cbd630700b8e8b09d03884e3d8bea1071 data/cosmere/loot_tables/blocks/aluminum_ore.json -cd731279bd267f94d0afd47ad08ae376ed5a9f88 data/cosmere/loot_tables/blocks/atium_block.json -56a2e680d379b39e2c6c3a3880b03054d0f12aa2 data/cosmere/loot_tables/blocks/bendalloy_block.json -7c6f0158470b2c13bf5a944fe4b405f2d271490f data/cosmere/loot_tables/blocks/brass_block.json -15931a1d5cf53294314934deae3b318f5ebee6e9 data/cosmere/loot_tables/blocks/bronze_block.json -b23765f334dad8db8a5ee67557013adaaf56aa49 data/cosmere/loot_tables/blocks/cadmium_block.json -f1d6bbd3d03214d40b2f627e7d1d9497637b66dc data/cosmere/loot_tables/blocks/cadmium_ore.json -158625ad82a7f3412e2d8fe8ba5865ac45ea632a data/cosmere/loot_tables/blocks/chromium_block.json -8c92c3ddeb8026e2a8e06683c3858d175d2fd591 data/cosmere/loot_tables/blocks/chromium_ore.json -f26338cd2feb44a55fe17b0a90ec95b114529122 data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json -10416896689350ded50137c72c82798c7d9bf532 data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json -a21fc0d65776ae4e1587c3e4b91d25179173aa7f data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json -57452fd03dfa0ba863d881f6deacc2c7cfc10028 data/cosmere/loot_tables/blocks/deepslate_lead_ore.json -683c3a6ba57565d1b27e49a216c618cadbd0bc91 data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json -7617381383104e5d6d51c33a3fa034e411f70244 data/cosmere/loot_tables/blocks/deepslate_silver_ore.json -684a3e3f76742dd24f37014e79eb8cbfe0d0e8ef data/cosmere/loot_tables/blocks/deepslate_tin_ore.json -3795516a64e2bae0cbfaf579c1d13a1bbcfbf0e1 data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json -15855f9da5b35eb4abf691bbe910bb7262e14219 data/cosmere/loot_tables/blocks/duralumin_block.json -79bddf7f0ec076e19359a73e3a30d168bbe9125f data/cosmere/loot_tables/blocks/electrum_block.json -8180e3fc3f58b48b298df6a42ac4ada19c9318b7 data/cosmere/loot_tables/blocks/harmonium_block.json -beb28ea68984cc7dfb369d5702be6691285c20bf data/cosmere/loot_tables/blocks/lead_block.json -6c842debbd3f95e310e2556ae7a3055ff45a4f0c data/cosmere/loot_tables/blocks/lead_ore.json -055789ab56e620938e54e1740bab19bda7af019c data/cosmere/loot_tables/blocks/lerasatium_block.json -56c34b3fb3a6bcf4bb161e597e9959b2c039e7be data/cosmere/loot_tables/blocks/lerasium_block.json -e4aecb93364a450379e522040319a7f515bd35a3 data/cosmere/loot_tables/blocks/malatium_block.json -b2ecd38ab0f9269aa7e995579634007d10dcb32b data/cosmere/loot_tables/blocks/metalworking_table.json -96db278cdb580a714b53b4f819bb32d98f76e708 data/cosmere/loot_tables/blocks/nickel_block.json -4c8d17247ddd803714c02849905bcc82a9b8ddf9 data/cosmere/loot_tables/blocks/nickel_ore.json -119d0773f16fb3e3d612879db0535b0e7393a102 data/cosmere/loot_tables/blocks/nicrosil_block.json -52470d0e26fedc08affe611737ee8b377f6e6063 data/cosmere/loot_tables/blocks/pewter_block.json -21387fc249c02b926f4e3f8688d4bce78cb82d8b data/cosmere/loot_tables/blocks/silver_block.json -71e73cac32c9d4f2f1fa9fc01d0ad33b1d6dff7b data/cosmere/loot_tables/blocks/silver_ore.json -06b119096f6ae9abd898d00d193fa5423776e34b data/cosmere/loot_tables/blocks/steel_block.json -d53cea7faa3f4ab1cadba5b03fe7c51aac443aa9 data/cosmere/loot_tables/blocks/tin_block.json -75c135cf3e18e8c387d42dd5d059bd72ce852ba8 data/cosmere/loot_tables/blocks/tin_ore.json -bc7d9b87a09b899f9d9a2a67ff93e6ea048179d3 data/cosmere/loot_tables/blocks/zinc_block.json -76550bc4e88494ff0feb209652e29d273c9afdb6 data/cosmere/loot_tables/blocks/zinc_ore.json +// 1.20.1 2025-01-03T23:43:48.469494 Loot Tables +a758c0c893df7df71bdc8aeed2272371ac643703 data/surgebinding/loot_tables/blocks/amethyst_block.json +0c5e26655b60cd0ec811ed23b9e0c7c57a170f4e data/surgebinding/loot_tables/blocks/diamond_block.json +4bba371827bb85e7d575f56ff13594d89e03642f data/surgebinding/loot_tables/blocks/emerald_block.json +998b59b14276e5d63689d832c7177349d42433ae data/surgebinding/loot_tables/blocks/garnet_block.json +9babd02fecbe165e2aee49c9053812b1973fd9ac data/surgebinding/loot_tables/blocks/heliodor_block.json +347c30c45d13db7b9fe5e9d449077264aa0e2992 data/surgebinding/loot_tables/blocks/lavis_polyp.json +835f955eac332284589f056d3a6ca0354d558419 data/surgebinding/loot_tables/blocks/prickletac.json +3491dc31e74f42db8e1bbece963e3da8b62f15a3 data/surgebinding/loot_tables/blocks/rockbud_variant.json +c490882cd758fdb94f600da4440ab3dd9fc4ad82 data/surgebinding/loot_tables/blocks/ruby_block.json +d15b8e9e600e8e005fd6ae60c88233f818224c23 data/surgebinding/loot_tables/blocks/sapphire_block.json +c91329902baa3e7be40bfcfcba3e67dfc38c8ffb data/surgebinding/loot_tables/blocks/smokestone_block.json +5787c840881f70463d2ea51d5936999905e892fe data/surgebinding/loot_tables/blocks/topaz_block.json +fcae433a72ec1367bb00012655e4268e6f5af123 data/surgebinding/loot_tables/blocks/vinebud.json +9f21554bc2aaabf3af589be47f567c4f17275ce4 data/surgebinding/loot_tables/blocks/zircon_block.json a7207bc09011db262ecf6c434f3d94cac58c0fce data/surgebinding/loot_tables/entities/chull.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json deleted file mode 100644 index 395741ecc..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/brass_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:brass_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/brass_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json deleted file mode 100644 index 7a9653800..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:cadmium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/cadmium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json deleted file mode 100644 index 00405c07b..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/cadmium_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:cadmium_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/cadmium_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json deleted file mode 100644 index ef012ccc2..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:chromium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/chromium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json deleted file mode 100644 index 929b4b805..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/chromium_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:chromium_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/chromium_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json deleted file mode 100644 index 2352edca2..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_aluminum_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_aluminum_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_aluminum_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json deleted file mode 100644 index 3c70e8cea..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_cadmium_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_cadmium_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_cadmium_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json deleted file mode 100644 index ea8188ae0..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_chromium_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_chromium_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_chromium_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json deleted file mode 100644 index 0a032d74c..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_lead_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_lead_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_lead_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json deleted file mode 100644 index 8445a6719..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_nickel_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_nickel_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_nickel_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json deleted file mode 100644 index 0190badc7..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_silver_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_silver_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_silver_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json deleted file mode 100644 index beb5457f9..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_tin_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_tin_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_tin_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json deleted file mode 100644 index e3b2c6782..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/deepslate_zinc_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:deepslate_zinc_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/deepslate_zinc_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json deleted file mode 100644 index 9e6edf165..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/duralumin_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:duralumin_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/duralumin_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json deleted file mode 100644 index ce0691e1c..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/electrum_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:electrum_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/electrum_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json deleted file mode 100644 index 06ecf9b32..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/harmonium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:harmonium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/harmonium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json deleted file mode 100644 index 18d7e915b..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:lead_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/lead_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json deleted file mode 100644 index a7ff12665..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lead_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:lead_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/lead_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json deleted file mode 100644 index 86191d831..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasatium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:lerasatium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/lerasatium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json deleted file mode 100644 index 1d81ad898..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/lerasium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:lerasium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/lerasium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json deleted file mode 100644 index f48794fd5..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/malatium_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:malatium_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/malatium_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json deleted file mode 100644 index 99ebbd4d5..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/metalworking_table.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:metalworking_table" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/metalworking_table" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json deleted file mode 100644 index bc43f966b..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:nickel_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/nickel_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json deleted file mode 100644 index 4be4dd7dd..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nickel_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:nickel_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/nickel_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json deleted file mode 100644 index 8d6f6aea4..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/nicrosil_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:nicrosil_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/nicrosil_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json deleted file mode 100644 index 8d7011b23..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/pewter_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:pewter_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/pewter_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json deleted file mode 100644 index a493d305b..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:silver_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/silver_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json deleted file mode 100644 index b877d2e05..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/silver_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:silver_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/silver_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json deleted file mode 100644 index a6d835c81..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/steel_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:steel_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/steel_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json deleted file mode 100644 index 81948eb95..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:tin_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/tin_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json deleted file mode 100644 index da1824c04..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/tin_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:tin_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/tin_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json deleted file mode 100644 index 2b29d70fc..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_block.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:zinc_block" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/zinc_block" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json b/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json deleted file mode 100644 index a4c19cbc7..000000000 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/zinc_ore.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "type": "minecraft:block", - "pools": [ - { - "bonus_rolls": 0.0, - "conditions": [ - { - "condition": "minecraft:survives_explosion" - } - ], - "entries": [ - { - "type": "minecraft:item", - "name": "cosmere:zinc_ore" - } - ], - "name": "main", - "rolls": 1.0 - } - ], - "random_sequence": "cosmere:blocks/zinc_ore" -} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json new file mode 100644 index 000000000..823f5db6e --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/amethyst_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:amethyst_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/amethyst_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json new file mode 100644 index 000000000..80efd0fda --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/diamond_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:diamond_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/diamond_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json new file mode 100644 index 000000000..55b471472 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/emerald_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:emerald_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/emerald_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json new file mode 100644 index 000000000..cf02669f2 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/garnet_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:garnet_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/garnet_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json new file mode 100644 index 000000000..6566660e8 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/heliodor_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:heliodor_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/heliodor_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json similarity index 76% rename from src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json index b80c65472..213509703 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/atium_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/lavis_polyp.json @@ -11,12 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:atium_block" + "name": "surgebinding:lavis_polyp" } ], "name": "main", "rolls": 1.0 } ], - "random_sequence": "cosmere:blocks/atium_block" + "random_sequence": "surgebinding:blocks/lavis_polyp" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json similarity index 76% rename from src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json index c5ad04aa9..fd866f3ac 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/prickletac.json @@ -11,12 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:aluminum_block" + "name": "surgebinding:prickletac" } ], "name": "main", "rolls": 1.0 } ], - "random_sequence": "cosmere:blocks/aluminum_block" + "random_sequence": "surgebinding:blocks/prickletac" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json new file mode 100644 index 000000000..139d2286c --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/rockbud_variant.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:rockbud_variant" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/rockbud_variant" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json similarity index 76% rename from src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json rename to src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json index bb280360f..c8a213987 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/aluminum_ore.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/ruby_block.json @@ -11,12 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:aluminum_ore" + "name": "surgebinding:ruby_block" } ], "name": "main", "rolls": 1.0 } ], - "random_sequence": "cosmere:blocks/aluminum_ore" + "random_sequence": "surgebinding:blocks/ruby_block" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json new file mode 100644 index 000000000..5d2aec80f --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/sapphire_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:sapphire_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/sapphire_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json new file mode 100644 index 000000000..e01559e27 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/smokestone_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:smokestone_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/smokestone_block" +} \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json similarity index 76% rename from src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json index ff1fc71c2..270d4c2eb 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bendalloy_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/topaz_block.json @@ -11,12 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:bendalloy_block" + "name": "surgebinding:topaz_block" } ], "name": "main", "rolls": 1.0 } ], - "random_sequence": "cosmere:blocks/bendalloy_block" + "random_sequence": "surgebinding:blocks/topaz_block" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json similarity index 77% rename from src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json rename to src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json index 6e4891c9a..d4d1d16d8 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/loot_tables/blocks/bronze_block.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/vinebud.json @@ -11,12 +11,12 @@ "entries": [ { "type": "minecraft:item", - "name": "cosmere:bronze_block" + "name": "surgebinding:vinebud" } ], "name": "main", "rolls": 1.0 } ], - "random_sequence": "cosmere:blocks/bronze_block" + "random_sequence": "surgebinding:blocks/vinebud" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json new file mode 100644 index 000000000..5071276f3 --- /dev/null +++ b/src/datagen/generated/surgebinding/data/surgebinding/loot_tables/blocks/zircon_block.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "surgebinding:zircon_block" + } + ], + "name": "main", + "rolls": 1.0 + } + ], + "random_sequence": "surgebinding:blocks/zircon_block" +} \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java index c23f3d253..007c9fcef 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/loottables/SurgebindingBlockLootTableGen.java @@ -28,6 +28,6 @@ protected void generate() } //then make the rest drop themselves. - dropSelf(BlocksRegistry.BLOCKS.getAllBlocks()); + dropSelf(SurgebindingBlocks.BLOCKS.getAllBlocks()); } } From 53da3244b0255f55d0b5a4131290231842719d6e Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 4 Jan 2025 22:51:57 +1300 Subject: [PATCH 0963/1090] [Port] clean up recipe json resourcelocation --- .../cosmere/allomancy/AllomancyRecipeGen.java | 4 +- .../leaf/cosmere/aondor/AonDorRecipeGen.java | 4 +- .../leaf/cosmere/aviar/AviarRecipeGen.java | 4 +- .../cosmere/awakening/AwakeningRecipeGen.java | 4 +- .../leaf/cosmere/tools/ToolsRecipeGen.java | 4 +- .../cosmere/example/ExampleRecipeGen.java | 4 +- .../cosmere/feruchemy/FeruchemyRecipeGen.java | 4 +- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 42 +++++++++---------- .../amethyst_block_deconstruct.json | 4 +- .../diamond_block_deconstruct.json | 4 +- .../emerald_block_deconstruct.json | 4 +- .../conversions/garnet_block_deconstruct.json | 4 +- .../heliodor_block_deconstruct.json | 4 +- .../conversions/ruby_block_deconstruct.json | 4 +- .../sapphire_block_deconstruct.json | 4 +- .../smokestone_block_deconstruct.json | 4 +- .../conversions/topaz_block_deconstruct.json | 4 +- .../conversions/zircon_block_deconstruct.json | 4 +- .../amethyst_block_deconstruct.json | 0 .../diamond_block_deconstruct.json | 0 .../emerald_block_deconstruct.json | 0 .../conversions/garnet_block_deconstruct.json | 0 .../heliodor_block_deconstruct.json | 0 .../conversions/ruby_block_deconstruct.json | 0 .../sapphire_block_deconstruct.json | 0 .../smokestone_block_deconstruct.json | 0 .../conversions/topaz_block_deconstruct.json | 0 .../conversions/zircon_block_deconstruct.json | 0 .../cosmere/hemalurgy/HemalurgyRecipeGen.java | 4 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 17 ++++---- .../main/java/leaf/cosmere/RecipeGen.java | 4 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 16 ++++--- .../sandmastery/SandmasteryRecipeGen.java | 4 +- .../soulforgery/SoulforgeryRecipeGen.java | 4 +- .../surgebinding/SurgebindingRecipeGen.java | 4 +- 39 files changed, 93 insertions(+), 86 deletions(-) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json (80%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/diamond_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/emerald_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/garnet_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json (80%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/ruby_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json (80%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json (80%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/topaz_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/advancements/recipes/misc/conversions/zircon_block_deconstruct.json (81%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/amethyst_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/diamond_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/emerald_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/garnet_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/heliodor_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/ruby_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/sapphire_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/smokestone_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/topaz_block_deconstruct.json (100%) rename src/datagen/generated/surgebinding/data/{cosmere => surgebinding}/recipes/conversions/zircon_block_deconstruct.json (100%) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java index c63613e77..cece80ce1 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.allomancy; @@ -22,7 +22,7 @@ public class AllomancyRecipeGen extends BaseRecipeProvider implements ICondition { public AllomancyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Allomancy.MODID); } @Override diff --git a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java index b5b6ef0c7..198016151 100644 --- a/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java +++ b/src/datagen/aondor/java/leaf/cosmere/aondor/AonDorRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.aondor; @@ -18,7 +18,7 @@ public class AonDorRecipeGen extends BaseRecipeProvider implements IConditionBui { public AonDorRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, AonDor.MODID); } @Override diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java index 89ac43d8f..ba25dbb57 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.aviar; @@ -18,7 +18,7 @@ public class AviarRecipeGen extends BaseRecipeProvider implements IConditionBuil { public AviarRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Aviar.MODID); } @Override diff --git a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java index 2ff21a142..5d26c7682 100644 --- a/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java +++ b/src/datagen/awakening/java/leaf/cosmere/awakening/AwakeningRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.awakening; @@ -18,7 +18,7 @@ public class AwakeningRecipeGen extends BaseRecipeProvider implements ICondition { public AwakeningRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Awakening.MODID); } @Override diff --git a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java index 0f32220ca..e784eec92 100644 --- a/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java +++ b/src/datagen/cosmeretools/java/leaf/cosmere/tools/ToolsRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.tools; @@ -22,7 +22,7 @@ public class ToolsRecipeGen extends BaseRecipeProvider implements IConditionBuil { public ToolsRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, CosmereTools.MODID); } @Override diff --git a/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java b/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java index 1bdeecd1b..579da8cb1 100644 --- a/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java +++ b/src/datagen/example/java/leaf/cosmere/example/ExampleRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.example; @@ -18,7 +18,7 @@ public class ExampleRecipeGen extends BaseRecipeProvider implements IConditionBu { public ExampleRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Example.MODID); } @Override diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java index ee1bcbc70..726bbb0cd 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.feruchemy; @@ -25,7 +25,7 @@ public class FeruchemyRecipeGen extends BaseRecipeProvider implements ICondition { public FeruchemyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Feruchemy.MODID); } @Override diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 91fb50956..f2226e3f7 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-03T23:43:48.532767 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-01-04T22:50:04.0625805 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 4233be686..8cd1a76e6 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-03T23:43:48.5664 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-01-04T22:50:04.1096201 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index c04836d2b..0d1c169ca 100644 --- a/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/surgebinding/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,24 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.2787851 Recipes -054e1124c1824221d7ae37ec2fcc9bee658563b1 data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json -93ba35e348052da0c609685fb426dfd4790a85da data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json -5d1fb6e83cdab431b525c8b1dee6318058ee5da1 data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json -4938597a99d3378771df7108d1110b8bf4a7c77b data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json -22662e331fd99c3e38446cde5a42f95178ef540d data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json -29d4a8115f167438c29784aecb10017334ee6a37 data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json -9a6423ab5fdde8e5a57c0be3c119cb2d7b40c3ea data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json -439b8a89e5957dd7e79ffcaac577a9a7469f9304 data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json -ca44cd3c282df6a81527607ecfe3c1d75a5acda7 data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json -d3447037d99bceb6c9ca3bee8281c3ee6be5209e data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json -f8b706c6b2f95940b386533e430d39c2c42043d5 data/cosmere/recipes/conversions/amethyst_block_deconstruct.json -5181afe6575a3be6c1b35ad422dce4c87ab2954e data/cosmere/recipes/conversions/diamond_block_deconstruct.json -2e3932b2533cf74f559602619726705575dc8c45 data/cosmere/recipes/conversions/emerald_block_deconstruct.json -f6814952d513b3db2e87381c2959b3e8a07d8f76 data/cosmere/recipes/conversions/garnet_block_deconstruct.json -130febea47fc7e63e434cd625c5fd488b1bcb656 data/cosmere/recipes/conversions/heliodor_block_deconstruct.json -7362741f87d5d8a9e8f2761d6a278a1dbf6d4899 data/cosmere/recipes/conversions/ruby_block_deconstruct.json -60e62d340585d58c087a61ba81a9efda4cb714fb data/cosmere/recipes/conversions/sapphire_block_deconstruct.json -9d8450a99dd7cbf445c765e5624d214d5dbf45d6 data/cosmere/recipes/conversions/smokestone_block_deconstruct.json -e47ace5f1e03ea1701519febfe100070fefe305b data/cosmere/recipes/conversions/topaz_block_deconstruct.json -1c43f1e8c24072f510cef52ecda43b33945d5e52 data/cosmere/recipes/conversions/zircon_block_deconstruct.json +// 1.20.1 2025-01-04T22:50:03.9985254 Recipes f86b7818b6bb7ac5af53f3f3b414422f4e54a663 data/surgebinding/advancements/recipes/decorations/amethyst_block.json cc3d924329dbcd7a0ab1be4ee4a00ac8ceaa1444 data/surgebinding/advancements/recipes/decorations/diamond_block.json 22b1bf29f26c81d9763059cdbf36c9f5709daf52 data/surgebinding/advancements/recipes/decorations/emerald_block.json @@ -29,7 +9,27 @@ afd07df991e24e37d8cabd6b422a6b7a06369ae9 data/surgebinding/advancements/recipes/ 2a43b435ee9159408c3807d29f871aacae520423 data/surgebinding/advancements/recipes/decorations/smokestone_block.json c76d48448dc6bda3a834ca502134d33af101e5ed data/surgebinding/advancements/recipes/decorations/topaz_block.json 3b73478ef61f7fa5db803a45cef0b18c732628c8 data/surgebinding/advancements/recipes/decorations/zircon_block.json +1985375f2bc48132435863fd89853f99e5c6fb01 data/surgebinding/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json +f5f117893f62f9474fb2e701cb1ed320af2c78e5 data/surgebinding/advancements/recipes/misc/conversions/diamond_block_deconstruct.json +d1b0f72c0bf02be7368d94f95bd56101443c660d data/surgebinding/advancements/recipes/misc/conversions/emerald_block_deconstruct.json +7911e6bab179a5cadd2c0e935f91f1506953f0ea data/surgebinding/advancements/recipes/misc/conversions/garnet_block_deconstruct.json +0a5a64b51dd4e6350910f0803e80fbcf873be591 data/surgebinding/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json +cbafce9ef6398d38519394e6394f5bf07193c717 data/surgebinding/advancements/recipes/misc/conversions/ruby_block_deconstruct.json +5a8c8fd832755e2f652afabb6c3f663af3186395 data/surgebinding/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json +baa2be7a387f5e863a36927618efe97cf2b219c4 data/surgebinding/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json +bd0ba3f38803b45d9464add06f1794c24262d3a9 data/surgebinding/advancements/recipes/misc/conversions/topaz_block_deconstruct.json +bf1be9b206544f2ee3aae5e3e75794688e6a29ad data/surgebinding/advancements/recipes/misc/conversions/zircon_block_deconstruct.json 2bd34a2581e7a8dcd1ea05969aaf4f1e4caee3eb data/surgebinding/recipes/amethyst_block.json +f8b706c6b2f95940b386533e430d39c2c42043d5 data/surgebinding/recipes/conversions/amethyst_block_deconstruct.json +5181afe6575a3be6c1b35ad422dce4c87ab2954e data/surgebinding/recipes/conversions/diamond_block_deconstruct.json +2e3932b2533cf74f559602619726705575dc8c45 data/surgebinding/recipes/conversions/emerald_block_deconstruct.json +f6814952d513b3db2e87381c2959b3e8a07d8f76 data/surgebinding/recipes/conversions/garnet_block_deconstruct.json +130febea47fc7e63e434cd625c5fd488b1bcb656 data/surgebinding/recipes/conversions/heliodor_block_deconstruct.json +7362741f87d5d8a9e8f2761d6a278a1dbf6d4899 data/surgebinding/recipes/conversions/ruby_block_deconstruct.json +60e62d340585d58c087a61ba81a9efda4cb714fb data/surgebinding/recipes/conversions/sapphire_block_deconstruct.json +9d8450a99dd7cbf445c765e5624d214d5dbf45d6 data/surgebinding/recipes/conversions/smokestone_block_deconstruct.json +e47ace5f1e03ea1701519febfe100070fefe305b data/surgebinding/recipes/conversions/topaz_block_deconstruct.json +1c43f1e8c24072f510cef52ecda43b33945d5e52 data/surgebinding/recipes/conversions/zircon_block_deconstruct.json 19d8fc7784d7b8fa5e7063b7213ef57e2383d847 data/surgebinding/recipes/diamond_block.json 1da9e250d0e68aa6a8f5724990c772f1c797aa42 data/surgebinding/recipes/emerald_block.json 8ecebabe5a19c476284a9ee90e4d9b9ac252b152 data/surgebinding/recipes/garnet_block.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json similarity index 80% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json index ae2e95e14..6b218402e 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/amethyst_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/amethyst_block_deconstruct" + "recipe": "surgebinding:conversions/amethyst_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/amethyst_block_deconstruct" + "surgebinding:conversions/amethyst_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/diamond_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/diamond_block_deconstruct.json index e4ce1ea59..b1fb0ce2c 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/diamond_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/diamond_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/diamond_block_deconstruct" + "recipe": "surgebinding:conversions/diamond_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/diamond_block_deconstruct" + "surgebinding:conversions/diamond_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/emerald_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/emerald_block_deconstruct.json index 303f90cfd..b72fbd11f 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/emerald_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/emerald_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/emerald_block_deconstruct" + "recipe": "surgebinding:conversions/emerald_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/emerald_block_deconstruct" + "surgebinding:conversions/emerald_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/garnet_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/garnet_block_deconstruct.json index 54f839c0c..43a9daf61 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/garnet_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/garnet_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/garnet_block_deconstruct" + "recipe": "surgebinding:conversions/garnet_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/garnet_block_deconstruct" + "surgebinding:conversions/garnet_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json similarity index 80% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json index 626a9b093..26aeb18ed 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/heliodor_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/heliodor_block_deconstruct" + "recipe": "surgebinding:conversions/heliodor_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/heliodor_block_deconstruct" + "surgebinding:conversions/heliodor_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/ruby_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/ruby_block_deconstruct.json index af03234a9..5c8175b08 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/ruby_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/ruby_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/ruby_block_deconstruct" + "recipe": "surgebinding:conversions/ruby_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/ruby_block_deconstruct" + "surgebinding:conversions/ruby_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json similarity index 80% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json index fdf369248..6e6c47309 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/sapphire_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/sapphire_block_deconstruct" + "recipe": "surgebinding:conversions/sapphire_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/sapphire_block_deconstruct" + "surgebinding:conversions/sapphire_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json similarity index 80% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json index 02e68102b..c75109f99 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/smokestone_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/smokestone_block_deconstruct" + "recipe": "surgebinding:conversions/smokestone_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/smokestone_block_deconstruct" + "surgebinding:conversions/smokestone_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/topaz_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/topaz_block_deconstruct.json index b60e1fee6..8560adf05 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/topaz_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/topaz_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/topaz_block_deconstruct" + "recipe": "surgebinding:conversions/topaz_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/topaz_block_deconstruct" + "surgebinding:conversions/topaz_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/zircon_block_deconstruct.json similarity index 81% rename from src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/zircon_block_deconstruct.json index 44c37cb2c..462b6971c 100644 --- a/src/datagen/generated/surgebinding/data/cosmere/advancements/recipes/misc/conversions/zircon_block_deconstruct.json +++ b/src/datagen/generated/surgebinding/data/surgebinding/advancements/recipes/misc/conversions/zircon_block_deconstruct.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:conversions/zircon_block_deconstruct" + "recipe": "surgebinding:conversions/zircon_block_deconstruct" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:conversions/zircon_block_deconstruct" + "surgebinding:conversions/zircon_block_deconstruct" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/amethyst_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/amethyst_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/amethyst_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/diamond_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/diamond_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/diamond_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/emerald_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/emerald_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/emerald_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/garnet_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/garnet_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/garnet_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/heliodor_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/heliodor_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/heliodor_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/ruby_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/ruby_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/ruby_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/sapphire_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/sapphire_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/sapphire_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/smokestone_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/smokestone_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/smokestone_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/topaz_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/topaz_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/topaz_block_deconstruct.json diff --git a/src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json b/src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/zircon_block_deconstruct.json similarity index 100% rename from src/datagen/generated/surgebinding/data/cosmere/recipes/conversions/zircon_block_deconstruct.json rename to src/datagen/generated/surgebinding/data/surgebinding/recipes/conversions/zircon_block_deconstruct.json diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java index 13e5ea535..bf4186b53 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -26,7 +26,7 @@ public class HemalurgyRecipeGen extends BaseRecipeProvider implements ICondition { public HemalurgyRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Hemalurgy.MODID); } @Override diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 4941eb343..479a2b68d 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -1,11 +1,10 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere; import leaf.cosmere.api.helpers.RegistryHelper; -import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; @@ -31,11 +30,13 @@ public abstract class BaseRecipeProvider extends RecipeProvider { private final ExistingFileHelper existingFileHelper; + private final String modid; - protected BaseRecipeProvider(PackOutput output, ExistingFileHelper existingFileHelper) + protected BaseRecipeProvider(PackOutput output, ExistingFileHelper existingFileHelper, String modid) { super(output); this.existingFileHelper = existingFileHelper; + this.modid = modid; } @Override @@ -93,7 +94,7 @@ protected void addCookingRecipes(Consumer consumer, ItemLike inp experience, time) .unlockedBy("has_item", has(inputItem)) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smelting")); + .save(consumer, new ResourceLocation(modid, name + "_from_smelting")); SimpleCookingRecipeBuilder.smoking( Ingredient.of(inputItem), @@ -102,7 +103,7 @@ protected void addCookingRecipes(Consumer consumer, ItemLike inp experience, time / 2) .unlockedBy("has_item", has(inputItem)) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_smoking")); + .save(consumer, new ResourceLocation(modid, name + "_from_smoking")); SimpleCookingRecipeBuilder.campfireCooking( Ingredient.of(inputItem), @@ -111,7 +112,7 @@ protected void addCookingRecipes(Consumer consumer, ItemLike inp experience, time) .unlockedBy("has_item", has(inputItem)) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_from_campfire")); + .save(consumer, new ResourceLocation(modid, name + "_from_campfire")); } protected void addPickaxeRecipe(Consumer consumer, ItemRegistryObject outputItem, TagKey inputMaterial) @@ -240,7 +241,7 @@ protected void decompressRecipe(Consumer consumer, ItemLike outp ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) .unlockedBy("has_item", has(output)) .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); + .save(consumer, new ResourceLocation(modid, "conversions/" + name)); } @@ -249,7 +250,7 @@ protected void decompressRecipe(Consumer consumer, ItemLike outp ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) .unlockedBy("has_item", has(output)) .requires(input) - .save(consumer, Cosmere.rl("conversions/" + name)); + .save(consumer, new ResourceLocation(modid, "conversions/" + name)); } protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index a20569f0f..e81bbf632 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere; @@ -35,7 +35,7 @@ public class RecipeGen extends BaseRecipeProvider implements IConditionBuilder { public RecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Cosmere.MODID); } @Override diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index dfb51b013..92fffd74e 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.tag; @@ -10,6 +10,7 @@ import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; +import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registry.BlocksRegistry; @@ -147,12 +148,17 @@ private void addBlocks() final OreBlockType oreBlockType = BlocksRegistry.METAL_ORE.get(oreType); final TagKey oreBlockTag = CosmereTags.Blocks.METAL_ORE_BLOCK_TAGS.get(metalType); - addToTag(oreBlockTag, oreBlockType.stone(), oreBlockType.deepslate()); + final BlockRegistryObject stone = oreBlockType.stone(); + final BlockRegistryObject deepslate = oreBlockType.deepslate(); + addToTag(oreBlockTag, stone, deepslate); - addToTag(BlockTags.NEEDS_STONE_TOOL, oreBlockType.stone()); - addToTag(BlockTags.NEEDS_IRON_TOOL, oreBlockType.deepslate()); + hasHarvestData(stone.getBlock()); + hasHarvestData(deepslate.getBlock()); - addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, oreBlockType.stone(), oreBlockType.deepslate()); + addToTag(BlockTags.NEEDS_STONE_TOOL, stone); + addToTag(BlockTags.NEEDS_IRON_TOOL, deepslate); + + addToHarvestTag(BlockTags.MINEABLE_WITH_PICKAXE, stone, deepslate); } } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java index 5ec85073b..39081a220 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.sandmastery; @@ -26,7 +26,7 @@ public class SandmasteryRecipeGen extends BaseRecipeProvider implements IConditi { public SandmasteryRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Sandmastery.MODID); } @Override diff --git a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java index 9c434af74..fda353bbf 100644 --- a/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java +++ b/src/datagen/soulforgery/java/leaf/cosmere/soulforgery/SoulforgeryRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 6 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.soulforgery; @@ -18,7 +18,7 @@ public class SoulforgeryRecipeGen extends BaseRecipeProvider implements IConditi { public SoulforgeryRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Soulforgery.MODID); } @Override diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java index 129db4ca5..3da826d33 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingRecipeGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 4 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -23,7 +23,7 @@ public class SurgebindingRecipeGen extends BaseRecipeProvider implements ICondit { public SurgebindingRecipeGen(PackOutput output, ExistingFileHelper existingFileHelper) { - super(output, existingFileHelper); + super(output, existingFileHelper, Surgebinding.MODID); } @Override From 117cade47c7ff69dfe554de086456744e9b13204 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 4 Jan 2025 14:43:20 +0100 Subject: [PATCH 0964/1090] [Cosmere] Fixed a bug where left-clicking while opening the menu would make the game think it's being pressed even when released. Fixes #131 --- .../cosmere/client/gui/SpiritwebMenu.java | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java index 0403230f3..1d85048de 100644 --- a/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java +++ b/src/main/java/leaf/cosmere/client/gui/SpiritwebMenu.java @@ -19,7 +19,6 @@ import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.common.network.packets.SetSelectedManifestationMessage; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.renderer.GameRenderer; @@ -27,7 +26,6 @@ import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; -import net.minecraftforge.client.event.RenderGuiOverlayEvent; import org.jetbrains.annotations.NotNull; import org.lwjgl.opengl.GL11; @@ -59,6 +57,7 @@ public class SpiritwebMenu extends Screen protected SpiritwebMenu() { super(Component.literal("Menu")); + this.minecraft = getMinecraft(); } @Override @@ -91,13 +90,11 @@ public void postRender(SpiritwebCapability spiritweb) { if (Keybindings.MANIFESTATION_MENU.consumeClick()) { - final Minecraft mc = getMinecraft(); - final Window window = mc.getWindow(); - init(mc, window.getGuiScaledWidth(), window.getGuiScaledHeight()); + final Window window = this.minecraft.getWindow(); + init(this.minecraft, window.getGuiScaledWidth(), window.getGuiScaledHeight()); setScaledResolution(window.getGuiScaledWidth(), window.getGuiScaledHeight()); this.spiritweb = spiritweb; - mc.screen = SpiritwebMenu.instance; - mc.mouseHandler.releaseMouse(); + this.minecraft.setScreen(SpiritwebMenu.instance); visibility = 0; lastChange = Stopwatch.createStarted(); @@ -105,7 +102,7 @@ public void postRender(SpiritwebCapability spiritweb) SetupButtons(); } - if (Keybindings.MANIFESTATION_MENU.isDown()) + if (this.minecraft.screen == SpiritwebMenu.instance) { raiseVisibility(); } @@ -165,19 +162,12 @@ else if (sidedMenuButton.action != null) return true; } } - CloseScreen(); return true; } private void CloseScreen() { this.minecraft.setScreen(null); - if (this.minecraft.screen == null) - { - this.minecraft.setWindowActive(true); - this.minecraft.getSoundManager().resume(); - this.minecraft.mouseHandler.grabMouse(); - } } private static class SidedMenuButton From d6f4ea02f83e642d5ce37de2b9d1fe5b9503941a Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 4 Jan 2025 15:06:50 +0100 Subject: [PATCH 0965/1090] [Cosmere] Fixed deactivate all powers keybind only working when crouching --- .../java/leaf/cosmere/client/ClientForgeEvents.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 44478612d..e9de10746 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -68,16 +68,8 @@ public static void onKey(InputEvent.Key event) Manifestation selected = spiritweb.getSelectedManifestation(); if (isKeyPressed(event, Keybindings.MANIFESTATIONS_DEACTIVATE)) { - //if crouching, only turn off. - if (Screen.hasShiftDown()) - { - Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); - } - //otherwise do a normal toggle - else - { - //todo decide if there is an activation state? - } + // just deactivate + Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); } //check keybinds with modifiers first? From f3c3dff241df5711cf3a100c4cf6d72954d80374 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 6 Jan 2025 13:42:38 +0100 Subject: [PATCH 0966/1090] [Allomancy] Added config option for iron/steel range, closes #135 --- .../common/config/AllomancyServerConfig.java | 4 ++++ .../manifestation/AllomancyIronSteel.java | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java index d5f64a2d8..6cd92cd1e 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java @@ -14,6 +14,7 @@ public class AllomancyServerConfig implements ICosmereConfig private final ForgeConfigSpec configSpec; public final ForgeConfigSpec.IntValue GOD_METAL_EAT_STRENGTH_MINIMUM; + public final ForgeConfigSpec.DoubleValue IRON_STEEL_RANGE; // Boost amount for Duralumin and Nicrosil //public final ForgeConfigSpec.DoubleValue boostAmount; @@ -28,6 +29,9 @@ public class AllomancyServerConfig implements ICosmereConfig //can't modify registry objects like that //boostAmount = builder.comment("Boost amount for Duralumin and Nicrosil").defineInRange("boostAmount", 0.334D, 0D, 1D); + // max 10 might seem low, but the scanning thread chugs so hard at 10 that it's unusable and I doubt anyone will try it except for fun >> Gerbagel + IRON_STEEL_RANGE = builder.comment("Multiplier for iron and steel range. At base strength (9) the range is 9 while burning and 18 while flaring").defineInRange("ironSteelRange", 1.0D, 0D, 10.0D); + builder.pop(); configSpec = builder.build(); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index c5673d6ad..0f7fd4790 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -6,6 +6,7 @@ import leaf.cosmere.allomancy.client.metalScanning.IronSteelLinesThread; import leaf.cosmere.allomancy.common.Allomancy; +import leaf.cosmere.allomancy.common.config.AllomancyConfigs; import leaf.cosmere.allomancy.common.entities.CoinProjectile; import leaf.cosmere.allomancy.common.items.CoinPouchItem; import leaf.cosmere.api.CosmereAPI; @@ -25,6 +26,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; +import net.minecraft.util.Mth; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.item.ItemEntity; @@ -626,5 +628,21 @@ public static void CheckRecipeForMetal(TagKey containsMetal, Recipe rec } } } + + @Override + public int getRange(ISpiritweb data) + { + if (!isActive(data)) + { + return 0; + } + + //get allomantic strength + double allomanticStrength = getStrength(data, false); + + //no range if compounding. + final double potentialRange = Math.max(getMode(data), 0) * allomanticStrength; + return Mth.floor(potentialRange * AllomancyConfigs.SERVER.IRON_STEEL_RANGE.get()); + } } From 7b7b9e8862a322055c30fdc4b9417102ad4e984a Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 8 Jan 2025 10:46:54 +1300 Subject: [PATCH 0967/1090] [Cosmere] Determination damage changes refactor. Should fix f-electrum/aviar yellowblue/a-pewter determination based damage reduction --- .../common/effects/PewterBurnEffect.java | 3 +- .../eventHandlers/EntityEventHandler.java | 53 ++++++++----------- .../common/registry/AttributesRegistry.java | 4 +- 3 files changed, 27 insertions(+), 33 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/effects/PewterBurnEffect.java b/src/allomancy/java/leaf/cosmere/allomancy/common/effects/PewterBurnEffect.java index 1f8c1c6b3..e90e947d1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/effects/PewterBurnEffect.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/effects/PewterBurnEffect.java @@ -1,5 +1,5 @@ /* - * File updated ~ 2 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 1 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.effects; @@ -40,6 +40,7 @@ public PewterBurnEffect() AttributeModifier.Operation.ADDITION); //damage resistance + //0.125 * 9 = 1.125 addAttributeModifier( AttributesRegistry.DETERMINATION.get(),//please forgive me for my sins anime god 0.125D, diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 9dab9da97..28abeb217 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 21 - 11 - 2023 ~ Leaf + * File updated ~ 8 - 1 - 2025 ~ Leaf */ package leaf.cosmere.common.eventHandlers; @@ -85,7 +85,7 @@ public static void onEntityJoinWorldEvent(EntityJoinLevelEvent event) String command = "/cosmere choose_metalborn_powers "; MutableComponent instructionComponent = Component.literal("To choose powers, use "); instructionComponent.append(Component.literal("§6§n/cosmere choose_metalborn_powers [allomancy] [feruchemy]") - .setStyle(Style.EMPTY.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command)))); + .setStyle(Style.EMPTY.withClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command)))); player.sendSystemMessage(instructionComponent); } @@ -283,33 +283,26 @@ public static void onLivingHurtEvent(LivingHurtEvent event) return; } - //inverted determination - int total = -(int) EntityHelper.getAttributeValue(event.getEntity(), AttributesRegistry.DETERMINATION.getAttribute()); - - //take less damage when tapping - //always reduce damage by something - //always increase damage by something - final int i = Math.abs(total); - //never able to reduce by 100% - // 76% ish max? eg tap10 / 13 = 0.76 - //store 3 is the max so never able to increase damage to self by more than 23%? - // 23% ish max? eg store3 / 13 = 0.23 - final float v = i / 13f; - // leaving 24% - // 1 - 0.76 = 0.24 - // So we add 76% extra damage - // 1 + 0.23 = 1.23 - final float v1 = total > 0 ? (1 + v) : (1 - v); - - //eg 7 damage at tap 10 would be: - // 7 * 0.24 = 1.68 damage remaining - //eg 7 damage at store 3 would be: - // 7 * 1.23 = 8.61 - - //basically never let them have more than 80% damage reduction - //but also why not let them increase taking damage, that's fine. - final float clampedPercentage = Mth.clamp(v1, 0.2f, 2); - event.setAmount(event.getAmount() * clampedPercentage);//todo convert to config - } + float total = (float) EntityHelper.getAttributeValue(event.getEntity(), AttributesRegistry.DETERMINATION.getAttribute()); + + //ignore if no determination changes, players default to 0 + //should we todo config this? + if (total > 0.1) + { + final float maxDetermination = 23.125f;//can we detect this properly? not really + final float percentageOfMaxDetermination = total / maxDetermination; + //increase damage reduction + float damageReduction = 1 - Mth.lerp(percentageOfMaxDetermination, 0, 0.80f); + event.setAmount(event.getAmount() * damageReduction); + } + else if (total < -0.1) + { + //increase damage taken + final float minDetermination = 3f;//can we detect this properly? not really + final float percentageOfMinDetermination = Math.abs(total) / minDetermination; + float damageIncrease = 1 + Mth.lerp(percentageOfMinDetermination, 0, 0.25f); + event.setAmount(event.getAmount() * damageIncrease); + } + } } diff --git a/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java b/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java index f8f4cce88..e759c711d 100644 --- a/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/AttributesRegistry.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 8 - 1 - 2025 ~ Leaf */ package leaf.cosmere.common.registry; @@ -56,7 +56,7 @@ public class AttributesRegistry ATTRIBUTES.register( "determination", Cosmere.MODID, - 1, + 0, -99, 99); From 78dca42669241655ea32b707c31defd51ab060f2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jan 2025 07:35:24 +1300 Subject: [PATCH 0968/1090] [Cosmere] Bad implementation of powers ancestry --- .../leaf/cosmere/mixin/VillagerMixin.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/leaf/cosmere/mixin/VillagerMixin.java diff --git a/src/main/java/leaf/cosmere/mixin/VillagerMixin.java b/src/main/java/leaf/cosmere/mixin/VillagerMixin.java new file mode 100644 index 000000000..6689a2dc9 --- /dev/null +++ b/src/main/java/leaf/cosmere/mixin/VillagerMixin.java @@ -0,0 +1,53 @@ +/* + * File updated ~ 8 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.mixin; + +import leaf.cosmere.api.math.MathHelper; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.eventHandlers.EntityEventHandler; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.entity.AgeableMob; +import net.minecraft.world.entity.npc.Villager; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(Villager.class) +public class VillagerMixin +{ + @Inject(method = "getBreedOffspring(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/AgeableMob;)Lnet/minecraft/world/entity/npc/Villager;", at = @At("RETURN")) + private void getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent, CallbackInfoReturnable cir) + { + Villager offspring = cir.getReturnValue(); + Villager thisParent = (Villager) (Object) this; + + SpiritwebCapability.get(thisParent).ifPresent(thisParentSW -> + { + final SpiritwebCapability cap = (SpiritwebCapability) thisParentSW; + if (cap.hasAnyPowers()) + { + SpiritwebCapability.get(pOtherParent).ifPresent(pOtherParentSW -> + { + final SpiritwebCapability otherCap = (SpiritwebCapability) pOtherParentSW; + if (otherCap.hasAnyPowers()) + { + SpiritwebCapability.get(offspring).ifPresent(offspringSW -> + { + final SpiritwebCapability offspringCap = (SpiritwebCapability) offspringSW; + offspringCap.clearManifestations(); + offspringCap.setHasBeenInitialized(); + + if (MathHelper.randomBool())//todo config for chance for offspring to also have powers + { + EntityEventHandler.giveEntityStartingManifestation(offspring, offspringCap); + } + }); + } + }); + } + }); + } +} From 8ec788bb21f3f25661b5c495a57160d543b7cd27 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jan 2025 07:55:43 +1300 Subject: [PATCH 0969/1090] [Surgebinding] honorblades grant powers when dismissed --- .../common/items/HonorbladeItem.java | 19 ++++++--- .../network/packets/SummonShardblade.java | 40 ++++++++++++++++++- 2 files changed, 52 insertions(+), 7 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java index 2f890de22..c6319db13 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -12,6 +12,7 @@ import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; @@ -19,7 +20,7 @@ public class HonorbladeItem extends ShardbladeItem { - Roshar.Gemstone gemstone; + public final Roshar.Gemstone gemstone; private final int attackDamageIn; private final float attackSpeedIn; @@ -59,11 +60,17 @@ public Multimap getAttributeModifiers(EquipmentSlo } return switch (equipmentSlot) - { - case MAINHAND, OFFHAND -> this.attributeModifiers; - default -> super.getAttributeModifiers(equipmentSlot, stack); - }; + { + case MAINHAND, OFFHAND -> this.attributeModifiers; + default -> super.getAttributeModifiers(equipmentSlot, stack); + }; } + + public boolean canSummonDismiss(Player player) + { + //honorblades can always be dismissed + return true; + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java index 8f64e0009..c1e042ca2 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java @@ -1,23 +1,30 @@ /* - * File updated ~ 27 - 2 - 2023 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.network.packets; +import leaf.cosmere.api.Roshar; import leaf.cosmere.api.helpers.CompoundNBTHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.network.ICosmerePacket; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.items.HonorbladeItem; import leaf.cosmere.surgebinding.common.items.ShardbladeItem; +import leaf.cosmere.surgebinding.common.registries.SurgebindingAttributes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent; +import java.util.UUID; + public class SummonShardblade implements ICosmerePacket { public SummonShardblade() @@ -55,6 +62,11 @@ public void handle(NetworkEvent.Context context) livingEntity.setItemInHand(InteractionHand.MAIN_HAND, stack); shardblades.remove(pKey); + if (stack.getItem() instanceof HonorbladeItem honorbladeItem) + { + UpdateIntrinsicPowers(honorbladeItem, livingEntity, false); + } + //todo do we actually need to tell the player about changes to their spiritweb here? //cap.syncToClients(sender); break; @@ -74,6 +86,11 @@ else if (itemInHand.getItem() instanceof ShardbladeItem shardbladeItem) shardblades.put(pKey, itemInHand.serializeNBT()); livingEntity.setItemInHand(InteractionHand.MAIN_HAND, ItemStack.EMPTY); + if (shardbladeItem instanceof HonorbladeItem honorbladeItem) + { + UpdateIntrinsicPowers(honorbladeItem, livingEntity, true); + } + //todo do we actually need to tell the player about changes to their spiritweb here? //cap.syncToClients(sender); break; @@ -86,6 +103,27 @@ else if (itemInHand.getItem() instanceof ShardbladeItem shardbladeItem) context.setPacketHandled(true); } + private static void UpdateIntrinsicPowers(HonorbladeItem honorbladeItem, LivingEntity livingEntity, boolean isStoringHonorblade) + { + final Roshar.Gemstone gemstone = honorbladeItem.gemstone; + UUID uuid = UUID.fromString(gemstone.getName()); + Attribute firstSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getFirstSurge()).getAttribute(); + Attribute secondSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getSecondSurge()).getAttribute(); + + if (isStoringHonorblade) + { + //then add the power to the spiritweb + livingEntity.getAttribute(firstSurge).addPermanentModifier(new AttributeModifier(uuid, gemstone.getAssociatedOrder() + "PrimaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); + livingEntity.getAttribute(secondSurge).addPermanentModifier(new AttributeModifier(uuid, gemstone.getAssociatedOrder() + "SecondaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); + } + else + { + //otherwise remove, the power will be granted by having the item in hand + livingEntity.getAttribute(firstSurge).removePermanentModifier(uuid); + livingEntity.getAttribute(secondSurge).removePermanentModifier(uuid); + } + } + @Override public void encode(FriendlyByteBuf buf) { From 693a705406efac8eb64272fcfeb1188c2bd475e2 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jan 2025 10:49:14 +1300 Subject: [PATCH 0970/1090] [Misc] forgot to commit some files with small misc changes --- .../leaf/cosmere/aviar/mixin/EntityMixin.java | 4 ++-- .../eventHandlers/EntityEventHandler.java | 4 ++-- src/main/resources/cosmere.mixins.json | 1 + .../surgebinding/common/entity/Chull.java | 17 ++++++++++++++++- .../common/items/NightbloodItem.java | 5 ++++- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java index 1d5ebc3ab..434f56e16 100644 --- a/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java +++ b/src/aviar/java/leaf/cosmere/aviar/mixin/EntityMixin.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 12 - 2024 ~ Leaf + * File updated ~ 9 - 1 - 2025 ~ Leaf */ package leaf.cosmere.aviar.mixin; @@ -34,7 +34,7 @@ private void handleIsGlowing(CallbackInfoReturnable cir) return; } - if (isServerSide || isInanimateEntity || cir.getReturnValue() || clientPlayer == null) + if (isServerSide || isInanimateEntity || cir.getReturnValue()) { return; } diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 28abeb217..06b3377ab 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 1 - 2025 ~ Leaf + * File updated ~ 9 - 1 - 2025 ~ Leaf */ package leaf.cosmere.common.eventHandlers; @@ -301,7 +301,7 @@ else if (total < -0.1) //increase damage taken final float minDetermination = 3f;//can we detect this properly? not really final float percentageOfMinDetermination = Math.abs(total) / minDetermination; - float damageIncrease = 1 + Mth.lerp(percentageOfMinDetermination, 0, 0.25f); + float damageIncrease = Mth.lerp(percentageOfMinDetermination, 1, 1.25f); event.setAmount(event.getAmount() * damageIncrease); } } diff --git a/src/main/resources/cosmere.mixins.json b/src/main/resources/cosmere.mixins.json index d7602867f..7627d0256 100644 --- a/src/main/resources/cosmere.mixins.json +++ b/src/main/resources/cosmere.mixins.json @@ -5,6 +5,7 @@ "compatibilityLevel": "JAVA_17", "refmap": "mixins.cosmere.refmap.json", "mixins": [ + "VillagerMixin" ], "client": [ "GameRendererMixin", diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java index dbba5ce61..2ecad78db 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java @@ -1,11 +1,12 @@ /* - * File updated ~ 10 - 6 - 2023 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.entity; import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; @@ -54,4 +55,18 @@ public AgeableMob getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent) this.setOffspringAttributes(pOtherParent, abstracthorse); return abstracthorse; } + + @Override + protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean pRecentlyHit) + { + super.dropCustomDeathLoot(pSource, pLooting, pRecentlyHit); + + //chull chests?? + + //gems? + + //this.getAge() + + //todo baby chulls drop chips, adults drop marks + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java index c857e8937..583ef5176 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2022 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -12,6 +12,9 @@ public class NightbloodItem extends ShardbladeItem public NightbloodItem(Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) { super(tier, attackDamageIn, attackSpeedIn, builderIn); + + //todo spoilers! + //todo check a config for whether nightblood has talked to the other shardblades?e } From 73deb7f5dc80c7072604ec6c3b6a2499280e2a32 Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jan 2025 12:02:38 +1300 Subject: [PATCH 0971/1090] [Cosmere] add copper nuggets to nuggets tag, fix #139 --- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 4 +- .../data/forge/tags/items/nuggets.json | 3 ++ .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 42 +++++++++++-------- 7 files changed, 38 insertions(+), 27 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 0ea610f4b..a7b448326 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-20T10:15:19.8914061 Tags: cosmere +// 1.20.1 2025-01-10T11:20:10.7014372 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json 29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,7 +63,7 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -32ec046071709fb6fccd3af07b80e16320db931b data/forge/tags/items/nuggets.json +17ea46c722857735ed9d9f49ea9378791da43f3d data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index 73595e362..828a64c1c 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -1,10 +1,12 @@ { "values": [ + "#forge:nuggets/iron", "#forge:nuggets/steel", "#forge:nuggets/tin", "#forge:nuggets/pewter", "#forge:nuggets/zinc", "#forge:nuggets/brass", + "#forge:nuggets/copper", "#forge:nuggets/bronze", "#forge:nuggets/aluminum", "#forge:nuggets/duralumin", @@ -12,6 +14,7 @@ "#forge:nuggets/nicrosil", "#forge:nuggets/cadmium", "#forge:nuggets/bendalloy", + "#forge:nuggets/gold", "#forge:nuggets/electrum", "#forge:nuggets/atium", "#forge:nuggets/lerasium", diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index f2226e3f7..082153a2c 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-04T22:50:04.0625805 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-01-10T11:20:10.8415547 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index 61b319ff8..da81b44bb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 8cd1a76e6..3023d4854 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-04T22:50:04.1096201 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-01-10T11:20:10.8715812 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 92fffd74e..60a1e814d 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 4 - 1 - 2025 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.tag; @@ -13,6 +13,7 @@ import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.registration.impl.BlockRegistryObject; +import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.common.registry.BlocksRegistry; import leaf.cosmere.common.registry.GameEventRegistry; import leaf.cosmere.common.registry.ItemsRegistry; @@ -70,36 +71,43 @@ private void addItems() for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { - if (metalType.hasMaterialItem()) + //if (metalType.hasMaterialItem()) { // copper only needs nugget, don't tag ingot - if (metalType != Metals.MetalType.COPPER) + //if (metalType != Metals.MetalType.COPPER) { - MetalIngotItem ingotItem = ItemsRegistry.METAL_INGOTS.get(metalType).asItem(); + final ItemRegistryObject ingotRegObj = ItemsRegistry.METAL_INGOTS.get(metalType); + if (ingotRegObj != null) + { + MetalIngotItem ingotItem = ingotRegObj.asItem(); - //don't need to tell the tag what each individual item is if they're tagged correctly - //add(Tags.Items.INGOTS, ingotItem); + //don't need to tell the tag what each individual item is if they're tagged correctly + //add(Tags.Items.INGOTS, ingotItem); - // tell our ingots what their tags are. - final TagKey metalIngotTag = metalType.getMetalIngotTag(); - addToTag(metalIngotTag, ingotItem); + // tell our ingots what their tags are. + final TagKey metalIngotTag = metalType.getMetalIngotTag(); + addToTag(metalIngotTag, ingotItem); - //tell the ingots that our ingot tags are part of them - getItemBuilder(Tags.Items.INGOTS).add(metalIngotTag); + //tell the ingots that our ingot tags are part of them + getItemBuilder(Tags.Items.INGOTS).add(metalIngotTag); + } } //tell the nuggets that our nugget tags are part of them final TagKey metalNuggetTag = metalType.getMetalNuggetTag(); getItemBuilder(Tags.Items.NUGGETS).add(metalNuggetTag); - // tell the Nugget that our Nuggets are related - Item nuggetItem = ItemsRegistry.METAL_NUGGETS.get(metalType).asItem(); + final ItemRegistryObject nugRegObj = ItemsRegistry.METAL_NUGGETS.get(metalType); + if (nugRegObj != null) + {// tell the Nugget that our Nuggets are related + Item nuggetItem = nugRegObj.asItem(); - //don't need to tell the tag what each individual item is if they're tagged correctly - //add(Tags.Items.NUGGETS, nuggetItem); + //don't need to tell the tag what each individual item is if they're tagged correctly + //add(Tags.Items.NUGGETS, nuggetItem); - // tell our nuggets what their tags are. - addToTag(metalNuggetTag, nuggetItem); + // tell our nuggets what their tags are. + addToTag(metalNuggetTag, nuggetItem); + } } if (metalType.hasOre()) From 6312c3b22f1cdb978d56b92cca7a871ad4bb03db Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 10 Jan 2025 17:21:35 +1300 Subject: [PATCH 0972/1090] [Surgebinding] fix bootstrapping incorrect biome file --- .../cosmere/surgebinding/SurgebindingDataGenerator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java index 05112c935..9723238fd 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingDataGenerator.java @@ -1,11 +1,11 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding; -import leaf.cosmere.common.registry.BiomeRegistry; import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.registries.SurgebindingBiomes; import leaf.cosmere.surgebinding.loottables.SurgebindingLootTableGen; import leaf.cosmere.surgebinding.patchouli.SurgebindingPatchouliGen; import net.minecraft.core.RegistrySetBuilder; @@ -22,7 +22,7 @@ public class SurgebindingDataGenerator { private static final RegistrySetBuilder BUILDER = new RegistrySetBuilder() - .add(Registries.BIOME, BiomeRegistry::bootstrapBiomes); + .add(Registries.BIOME, SurgebindingBiomes::bootstrapBiomes); @SubscribeEvent public static void gatherData(GatherDataEvent event) From 88aa6e7b28ef981486c664946f64bd402fec85a0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 12 Jan 2025 18:33:22 +1300 Subject: [PATCH 0973/1090] [Surgebinding] first pass on oaths - scans chat messages for relevant oaths, doesn't actually check if order related requirements are met... because they don't exist yet. --- build.gradle | 2 + .../leaf/cosmere/common/items/GuideItem.java | 7 +- .../cosmere/common/util/TaskQueueManager.java | 158 ++++++++++++ .../SurgebindingSpiritwebSubmodule.java | 224 +++++++++++++++++- .../config/SurgebindingServerConfig.java | 122 +++++++++- ...va => SurgebindingForgeEventsHandler.java} | 22 +- ....java => SurgebindingModEventHandler.java} | 5 +- 7 files changed, 515 insertions(+), 25 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/util/TaskQueueManager.java rename src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/{SurgebindingEventsHandler.java => SurgebindingForgeEventsHandler.java} (68%) rename src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/{SurgebindingModBusEventHandler.java => SurgebindingModEventHandler.java} (94%) diff --git a/build.gradle b/build.gradle index cd8e83ef7..ab8375cde 100644 --- a/build.gradle +++ b/build.gradle @@ -746,6 +746,7 @@ void setGenericCurseArtifactData(UploadArtifact artifact, String changelog, Stri artifact.changelogType = 'text' artifact.releaseType = "${release_type}" artifact.addModLoader("Forge") + artifact.addModLoader("NeoForge") } void uploadSecondaryCurseProject(TaskPublishCurseForge task, long projectId, String changelog, TaskProvider sourceSetJar, String release_type) @@ -811,6 +812,7 @@ if (System.getenv("MODRINTH_API_TOKEN") != null || project.hasProperty('modrinth projectId = "SEABTDiK" versionNumber = "${full_mod_version}" versionType = "${release_type}" + loaders.addAll("forge", "neoforge") gameVersions = ["1.20.1"] // Must be an array, even with only one version changelog = changeLogResolver.call() uploadFile = jar diff --git a/src/main/java/leaf/cosmere/common/items/GuideItem.java b/src/main/java/leaf/cosmere/common/items/GuideItem.java index a269dae89..c0400c30d 100644 --- a/src/main/java/leaf/cosmere/common/items/GuideItem.java +++ b/src/main/java/leaf/cosmere/common/items/GuideItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 11 - 1 - 2025 ~ Leaf */ package leaf.cosmere.common.items; @@ -110,10 +110,7 @@ public InteractionResultHolder use(Level worldIn, Player playerIn, In } else if (playerIn instanceof ServerPlayer player) { - - //UseItemSuccessTrigger.INSTANCE.trigger(player, stack, player.getServerWorld(), player.getPosX(), player.getPosY(), player.getPosZ()); - - PatchouliAPI.get().openBookGUI((ServerPlayer) playerIn, ItemsRegistry.GUIDE.getRegistryName()); + PatchouliAPI.get().openBookGUI(player, ItemsRegistry.GUIDE.getRegistryName()); } return new InteractionResultHolder<>(InteractionResult.SUCCESS, stack); diff --git a/src/main/java/leaf/cosmere/common/util/TaskQueueManager.java b/src/main/java/leaf/cosmere/common/util/TaskQueueManager.java new file mode 100644 index 000000000..6d254c9b9 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/util/TaskQueueManager.java @@ -0,0 +1,158 @@ +/* + * File updated ~ 12 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.common.util; + +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.common.Cosmere; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.event.server.ServerStartedEvent; +import net.minecraftforge.event.server.ServerStoppedEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import org.apache.commons.lang3.tuple.Pair; + +import java.util.ArrayDeque; +import java.util.Iterator; +import java.util.Queue; + +/** + * Helper class for scheduling transient tick-based tasks on the server. + * Obtained 12th jan '25 and then modified by Leaf + * special thanks to shadows-of-fire for the original code + * ... + *

+ * Do not use for critical functionality, since the queue is abandoned entirely if the game closes or crashes. + */ +public class TaskQueueManager +{ + + /** + * Submits a new task for immediate execution. + */ + public static void submitTask(ResourceLocation id, Task task) + { + Impl.TASKS.add(Pair.of(id, task)); + } + + /** + * Submits a new task for delayed execution. + * + * @param delay The delay, in ticks, before the task begins executing. + */ + public static void submitDelayedTask(ResourceLocation id, int delay, Task task) + { + Impl.TASKS.add(Pair.of(id, new DelayedTask(delay, task))); + } + + @FunctionalInterface + public static interface Task + { + + /** + * Executes the task, returning a status specifying if the task finished or not. + * + * @return The completion status, either {@link Status#RUNNING} to continue executing or {@link Status#COMPLETED} to stop. + */ + Status execute(); + } + + public static enum Status + { + RUNNING, + COMPLETED; + + public boolean isCompleted() + { + return this == COMPLETED; + } + } + + private static class DelayedTask implements Task + { + + private int delay; + private Task task; + + private DelayedTask(int delay, Task task) + { + this.delay = delay; + this.task = task; + } + + @Override + public Status execute() + { + if (delay-- > 0) + { + return Status.RUNNING; + } + return this.task.execute(); + } + + } + + public static class OneOffTask implements Task + { + private final Runnable task; + + public OneOffTask(Runnable task) + { + this.task = task; + } + + @Override + public Status execute() + { + task.run(); + return Status.COMPLETED; + } + + } + + @Mod.EventBusSubscriber(modid = Cosmere.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) + public static class Impl + { + + private static final Queue> TASKS = new ArrayDeque<>(); + + @SubscribeEvent + public static void tick(TickEvent.ServerTickEvent e) + { + Iterator> it = TASKS.iterator(); + Pair current = null; + while (it.hasNext()) + { + current = it.next(); + try + { + if (current.getRight().execute().isCompleted()) + { + it.remove(); + } + } + catch (Exception ex) + { + CosmereAPI.logger.error("An exception occurred while running a ticking task with ID {}. It will be terminated.", current.getLeft()); + it.remove(); + ex.printStackTrace(); + } + } + } + + @SubscribeEvent + public static void stopped(ServerStoppedEvent e) + { + TASKS.clear(); + } + + @SubscribeEvent + public static void started(ServerStartedEvent e) + { + TASKS.clear(); + } + } + +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index 2b8418984..3604ab68e 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,35 +1,49 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 12 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; -import leaf.cosmere.api.ISpiritwebSubmodule; -import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.*; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.util.TaskQueueManager; +import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.config.SurgebindingServerConfig; import leaf.cosmere.surgebinding.common.items.tiers.ShardplateArmorMaterial; import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; -import leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations; import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; +import net.minecraftforge.event.ServerChatEvent; +import org.jetbrains.annotations.NotNull; import java.util.stream.Stream; public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule { + //todo move + private static ResourceLocation SWEAR_IDEAL = new ResourceLocation(Surgebinding.MODID, "swear_ideal"); + //stormlight stored private int stormlightStored = 0; //a little ew, I'd rather this in an enum utils, but it's the only place that needs it public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); + private String order = ""; + private int ideal = 0; @Override @@ -38,18 +52,20 @@ public void tickServer(ISpiritweb spiritweb) final LivingEntity livingEntity = spiritweb.getLiving(); final boolean surgebindingActiveTick = (livingEntity.tickCount + Manifestations.ManifestationTypes.SURGEBINDING.getID()) % 20 == 0; - //todo replace with checking an oath boolean or something. - //just not efficient enough. - boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); + //boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); + boolean isOathed = !order.isEmpty(); //tick stormlight - if (anySurges) + if (isOathed) { - if (livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) && livingEntity.level().isThundering() && livingEntity.level().isRainingAt(livingEntity.blockPosition())) + if (livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) + && livingEntity.level().isThundering() + && livingEntity.level().isRainingAt(livingEntity.blockPosition())) { - //todo how much stormlight per tick? - //if player has max of 1000, it will take just under a minute to - stormlightStored += 1; + //if player has max of 1000, it will take just under a minute to spend? + //in the books, it's almost instantly full + final int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); + stormlightStored = maxPlayerStormlight; } if (stormlightStored > 0 && surgebindingActiveTick) @@ -72,6 +88,7 @@ public void tickServer(ISpiritweb spiritweb) if (livingEntity.getCombatTracker().inCombat) { //todo combat effect cost + //todo replace with non-vanilla effects livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DAMAGE_BOOST, 0)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SPEED, 0)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, 0)); @@ -79,6 +96,7 @@ public void tickServer(ISpiritweb spiritweb) } else if (livingEntity.isUnderWater()) { + //todo replace with non-vanilla effects livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.WATER_BREATHING, 0)); //todo waterbreathing stormlight cost adjustStormlight(-10, true); @@ -87,6 +105,7 @@ else if (livingEntity.isUnderWater()) { //todo detect better based on what the player is doing? mining means haste, //travelling means movement etc. Not sure if that's really feasible though + //todo replace with non-vanilla effects livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DIG_SPEED, 0)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SPEED, 0)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, 0)); @@ -103,6 +122,7 @@ else if (livingEntity.isUnderWater()) } //special effects for wearing shardplate. + if (surgebindingActiveTick) { ItemStack helmet = livingEntity.getItemBySlot(EquipmentSlot.HEAD); @@ -121,11 +141,14 @@ else if (livingEntity.isUnderWater()) int amplifier = material == ShardplateArmorMaterial.DEADPLATE ? 0 : 1; //todo make our own effect for wearing shardplate + //todo replace with non-vanilla effects livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SPEED, amplifier)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DIG_SPEED, amplifier)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.DAMAGE_BOOST, amplifier)); livingEntity.addEffect(EffectsHelper.getNewEffect(MobEffects.JUMP, amplifier)); + //todo oathed radiant shardplate stormlight cost + //todo deadplate stormlight cost stormlightStored--; break; } @@ -137,7 +160,10 @@ else if (livingEntity.isUnderWater()) @Override public void deserialize(ISpiritweb spiritweb) { - stormlightStored = spiritweb.getCompoundTag().getInt("stored_stormlight"); + final CompoundTag spiritwebCompoundTag = spiritweb.getCompoundTag(); + stormlightStored = spiritwebCompoundTag.getInt("stored_stormlight"); + order = spiritwebCompoundTag.getString("order"); + ideal = spiritwebCompoundTag.getInt("ideal"); } @Override @@ -146,6 +172,8 @@ public void serialize(ISpiritweb spiritweb) final CompoundTag compoundTag = spiritweb.getCompoundTag(); compoundTag.putInt("stored_stormlight", stormlightStored); + compoundTag.putString("order", order); + compoundTag.putInt("ideal", ideal); } public int getStormlight() @@ -170,4 +198,174 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) return false; } + + public void onChatMessageReceived(@NotNull SpiritwebCapability spiritweb, ServerChatEvent event) + { + //players can swear an ideal by typing a specific message in chat + //it's more efficient to check if a chat message is relevant before checking + // if the player meets any requirements needed to do something with those messages + + //todo maybe we should check if the player is in the right dimension first? + + //todo + { + //a player can potentially bond _two_ spren, not just a single one + //this means they can have two sets of surges, and two sets of ideals + //so maybe it's fine to hard code to only two sets of radiant orders? + //todo config for allowing a second order + //tbd on the conditions required before a player can bond a second spren + } + + String playerMessage = SurgebindingServerConfig.cleanIdeal(event.getRawText()); + int idealToSwear = 0; + String idealOrder = ""; + + //every order's first ideal is the same + + //if it's not the first ideal + + //for each order + //yes its weird to iterate over gems, but gems enum knows what orders are associated with it + for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) + { + //for each ideal + for (int ideal = 1; ideal <= 5; ideal++) + { + String thisIdeal = SurgebindingConfigs.SERVER.getIdeal(ideal, gemstone.getID()); + if (thisIdeal.equals(SurgebindingServerConfig.IDEAL_NOT_IMPLEMENTED)) + { + //skip ideals that are not yet implemented + continue; + } + + if (playerMessage.contains(thisIdeal)) + { + //check if the message matches the ideal + //if it does, set idealToSwear to the ideal's index + //also set which order the ideal belongs to + //break out of the loop + idealToSwear = ideal; + if (idealToSwear != 1) + { + //only the first ideal is universal, + idealOrder = gemstone.getAssociatedOrder(); + } + break; + } + } + } + + if (idealToSwear == 0) + { + //not relevant, exit + return; + } + + if (this.ideal > 2 && this.order.isEmpty()) + { + CosmereAPI.logger.error("Player has sworn a higher ideal but has no order set?? How does this happen. Resetting to zero."); + this.ideal = 0; + } + + //assuming we have found a message that matches trying to qualify for an ideal + boolean successfulSwear = false; + //check the current state of the player's spiritweb + //swearing the first or second ideal + if (this.order.isEmpty()) + { + + //we want to know whether they are unoathed, or have sworn an ideal + //if they have sworn an ideal, we want to know which one + //ideal has to be zero, check if swearing the first ideal. + if (idealToSwear == 1 && this.ideal == 0) + { + this.ideal++; + successfulSwear = true; + } + else if (idealToSwear == 2 && this.ideal == 1) + { + this.ideal++; + this.order = idealOrder; + successfulSwear = true; + } + // else we + + if (successfulSwear) + { + onSuccessfulIdealSworn(spiritweb); + } + + //no need to continue + return; + } + + //else they must be trying to swear a higher ideal + if (this.order.equals(idealOrder)) + { + boolean swearingHigherIdeal = idealToSwear > 2; + //swearing a higher ideal + if (idealToSwear == this.ideal + 1) + { + this.ideal++; + successfulSwear = true; + } + + if (successfulSwear) + { + onSuccessfulIdealSworn(spiritweb); + } + else + { + //only the higher ideas tell you if words are accepted? + //todo translatable + event.setCanceled(true); + event.getPlayer().sendSystemMessage(Component.literal("THESE WORDS ARE NOT ACCEPTED.")); + } + } + } + + private void onSuccessfulIdealSworn(@NotNull SpiritwebCapability spiritweb) + { + //rumble if ideal 2 + if (spiritweb.getLiving() instanceof ServerPlayer player) + { + //todo we should check the configs for whether this should be broadcasted to all players, or just the player themselves + + final Runnable work = () -> + { + //todo translatable + if (this.ideal != 1) + { + player.sendSystemMessage(Component.literal("THESE WORDS ARE ACCEPTED.")); + } + //player.playSound(SoundEvents.LIGHTNING_BOLT_THUNDER, 1000, 0.8F + player.getRandom().nextFloat() * 0.2F); + player.level().playSound( + null,//null so it also sends to triggering player + player.getX(), + player.getY(), + player.getZ(), + SoundEvents.LIGHTNING_BOLT_THUNDER, + SoundSource.WEATHER, + 10000.0F, + 0.8F + player.getRandom().nextFloat() * 0.2F + ); + + + //todo - if the player is trying to swear an ideal, check if they have stormlight nearby to facilitate the process + { + //if they do, we should consume the stormlight and give them the appropriate buffs + } + { + //if they don't, we should inform them that they need more stormlight to swear an ideal? + //or maybe just allow the words to be accepted but don't heal them or give them the buffs + } + + //todo spawn order glyph at player if higher ideal + + }; + + TaskQueueManager.submitDelayedTask(SWEAR_IDEAL, 60, new TaskQueueManager.OneOffTask(work)); + } + } + } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java index ea0ee15d4..a01004902 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 6 - 2023 ~ Leaf + * File updated ~ 12 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.config; @@ -8,9 +8,12 @@ import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.fml.config.ModConfig.Type; +import java.util.List; +import java.util.Locale; +import java.util.function.Predicate; + public class SurgebindingServerConfig implements ICosmereConfig { - private final ForgeConfigSpec configSpec; public final ForgeConfigSpec.IntValue MAX_SHARDBLADES; @@ -21,6 +24,14 @@ public class SurgebindingServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue PROGRESSION_AGE_UP_COST; + //public final ForgeConfigSpec.ConfigValue> FIRST_IDEALS; + public final ForgeConfigSpec.ConfigValue> SECOND_IDEALS; + public final ForgeConfigSpec.ConfigValue> THIRD_IDEALS; + public final ForgeConfigSpec.ConfigValue> FOURTH_IDEALS; + public final ForgeConfigSpec.ConfigValue> FIFTH_IDEALS; + + public static final String IDEAL_NOT_IMPLEMENTED = "notyetimplemented"; + SurgebindingServerConfig() { ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); @@ -33,6 +44,73 @@ public class SurgebindingServerConfig implements ICosmereConfig PROGRESSION_HEAL_COST = builder.comment("How many points of stormlight per half a heart healed").defineInRange("progressionHealStormlightCost", 20, 1, 1000); PROGRESSION_AGE_UP_COST = builder.comment("How many points of stormlight per age up on a baby mob").defineInRange("progressionAgeUpCost", 50, 1, 1000); + final Predicate elementValidator = o -> o instanceof String; + + SECOND_IDEALS = builder.defineList( + "second_ideals", + List.of( + "I will protect those who cannot protect themselves.", //windrunner + "I will put the law before all else.", //skybreaker + "I will seek self-mastery", //dustbringer + "I will remember those who have been forgotten", //edgedancer + "I will seek the truth", //truthwatcher //todo better? + IDEAL_NOT_IMPLEMENTED, //lightweaver + "I will reach my potential", //elsecaller + "I will seek freedom for those in bondage.", //willshaper + "I will stand when others fall.", //stoneward + "I will unite instead of divide." //bondsmith + ), + elementValidator); + + THIRD_IDEALS = builder.defineList( + "third_ideals", + List.of( + "I will protect even those I hate, so long as it is right.", //windrunner + IDEAL_NOT_IMPLEMENTED, //skybreaker + "I will strive to create rather than destroy", //dustbringer + "I will listen to those who have been ignored.", //edgedancer + IDEAL_NOT_IMPLEMENTED, //truthwatcher + IDEAL_NOT_IMPLEMENTED, //lightweaver + "I will achieve my goals, no matter the cost", //elsecaller + IDEAL_NOT_IMPLEMENTED, //willshaper + "I will be the foundation on which others can build.", //stoneward + "I will take responsibility for what I have done. If I must fall, I will rise each time a better" //bondsmith + ), + elementValidator); + + FOURTH_IDEALS = builder.defineList( + "fourth_ideals", + List.of( + "I accept that there will be those I cannot protect.", //windrunner + IDEAL_NOT_IMPLEMENTED, //skybreaker + "I will accept that destruction is sometimes necessary", //dustbringer + IDEAL_NOT_IMPLEMENTED, //edgedancer + IDEAL_NOT_IMPLEMENTED, //truthwatcher + IDEAL_NOT_IMPLEMENTED, //lightweaver + "I will accept that some goals are unobtainable", //elsecaller + IDEAL_NOT_IMPLEMENTED, //willshaper + IDEAL_NOT_IMPLEMENTED, //stoneward + IDEAL_NOT_IMPLEMENTED //bondsmith + ), + elementValidator); + + FIFTH_IDEALS = builder.defineList( + "fifth_ideals", + List.of( + "I will protect myself, so that I may continue to protect others. ", //windrunner + "I am the law", //skybreaker + IDEAL_NOT_IMPLEMENTED, //dustbringer + IDEAL_NOT_IMPLEMENTED, //edgedancer + IDEAL_NOT_IMPLEMENTED, //truthwatcher + IDEAL_NOT_IMPLEMENTED, //lightweaver + IDEAL_NOT_IMPLEMENTED, //elsecaller + IDEAL_NOT_IMPLEMENTED, //willshaper + IDEAL_NOT_IMPLEMENTED, //stoneward + IDEAL_NOT_IMPLEMENTED //bondsmith + ), + elementValidator); + + builder.pop(); configSpec = builder.build(); } @@ -65,4 +143,44 @@ public void clearCache() PROGRESSION_HEAL_COST.clearCache(); PROGRESSION_AGE_UP_COST.clearCache(); } + + public String getIdeal(int ideal, int order) + { + String idealString = null; + + switch (ideal) + { + default: + case 1: + idealString = "life before death, strength before weakness, journey before destination"; + break; + case 2: + idealString = SECOND_IDEALS.get().get(order); + break; + case 3: + idealString = THIRD_IDEALS.get().get(order); + break; + case 4: + idealString = FOURTH_IDEALS.get().get(order); + break; + case 5: + idealString = FIFTH_IDEALS.get().get(order); + break; + } + + return cleanIdeal(idealString); + } + + //todo move this to a utility class + public static String cleanIdeal(String idealString) + { + String cleanedString = idealString + .replace(" ", "") + .replace(",", "") + .replace(".", "") + .replace(";", "") + .toLowerCase(Locale.ROOT); + + return cleanedString; + } } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingEventsHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java similarity index 68% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingEventsHandler.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java index 899d08ecb..af002ebb9 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingEventsHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java @@ -1,20 +1,25 @@ /* - * File updated ~ 26 - 10 - 2022 ~ Leaf + * File updated ~ 12 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; +import leaf.cosmere.api.ISpiritwebSubmodule; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.manifestation.SurgeGravitation; import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = Surgebinding.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) -public class SurgebindingEventsHandler +public class SurgebindingForgeEventsHandler { /* //todo fix roshar not respecting sleep ?? @@ -70,4 +75,17 @@ public static void onLivingAttackEvent(LivingAttackEvent event) SurgeGravitation.onLivingAttackEvent(event); } + + @SubscribeEvent + public static void onServerChatEvent(ServerChatEvent event) + { + SpiritwebCapability.get(event.getPlayer()).ifPresent(spiritweb -> + { + final ISpiritwebSubmodule submodule = spiritweb.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); + if (submodule instanceof SurgebindingSpiritwebSubmodule surgebinding) + { + surgebinding.onChatMessageReceived((SpiritwebCapability) spiritweb, event); + } + }); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java similarity index 94% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java index 965d50d9f..2cc19b481 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModBusEventHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 12 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; @@ -18,9 +18,8 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; - @Mod.EventBusSubscriber(modid = Surgebinding.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class SurgebindingModBusEventHandler +public class SurgebindingModEventHandler { @SubscribeEvent(priority = EventPriority.HIGH) From ff3e3d61e68e860b0fbcafc0c6967ec27688184c Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sun, 12 Jan 2025 13:51:49 +0100 Subject: [PATCH 0974/1090] [Port] Fixed issue with vertical pushing with coin pouch --- .../metalScanning/IronSteelLinesThread.java | 4 ++-- .../manifestation/AllomancyIronSteel.java | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index a93ae4126..b46fad9dd 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -267,9 +267,9 @@ private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) { boolean isObscured; Vec3 currVec = player.getEyePosition(); - currVec = currVec.add(-0.75D, 0D, 0D); + currVec = currVec.add(-1D, 0D, 0D); Vec3 endPos = blockPos.getCenter(); - endPos = endPos.add(-0.75D, 0D, 0D); + endPos = endPos.add(-1D, 0D, 0D); Vec3 endFloorVec = new Vec3(Math.floor(endPos.x), Math.floor(endPos.y), Math.floor(endPos.z)); double resistance = 0.0F; diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 0f7fd4790..5f7dee8a1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -158,21 +158,21 @@ private void performEffectClient(ISpiritweb cap) Entity entityHitResult = null; Vec3 closestMetalObjectVec3 = IronSteelLinesThread.getInstance().getClosestMetalObject(); - Vec3i closestMetalObject = null; + BlockPos closestMetalObject = null; if (closestMetalObjectVec3 != null) { - closestMetalObject = new Vec3i((int) closestMetalObjectVec3.x(), (int) closestMetalObjectVec3.y(), (int) closestMetalObjectVec3.z()); + closestMetalObject = BlockPos.containing(closestMetalObjectVec3); } if (closestMetalObject != null) { - BlockState blockAtPos = level.getBlockState(new BlockPos(closestMetalObject)); + BlockState blockAtPos = level.getBlockState(closestMetalObject); if (blockAtPos.isAir()) { try { - AABB aabb = new AABB(new BlockPos(closestMetalObject)); + AABB aabb = new AABB(closestMetalObject); Entity firstMetalEntity = null; for (Entity ent : level.getEntities(player, aabb, potentialEntityHit -> !potentialEntityHit.isSpectator())) { @@ -203,7 +203,7 @@ private void performEffectClient(ISpiritweb cap) } else { - blocks.add(new BlockPos(closestMetalObject)); + blocks.add(closestMetalObject); if (blocks.size() > 5) { @@ -216,12 +216,12 @@ private void performEffectClient(ISpiritweb cap) else { //clear list - if (blocks.size() > 0) + if (!blocks.isEmpty()) { blocks.clear(); hasChanged = true; } - if (entities.size() > 0) + if (!entities.isEmpty()) { entities.clear(); hasChanged = true; @@ -342,11 +342,11 @@ else if (dataLiving instanceof Player player && targetEntity instanceof CoinProj private void moveEntityTowards(Entity entity, BlockPos toMoveTo) { - Vec3 blockCenter = Vec3.atCenterOf(toMoveTo); + Vec3 blockCenter = toMoveTo.getCenter(); Vec3 direction = VectorHelper.getDirection( blockCenter, - Vec3.atCenterOf(entity.blockPosition()),//use entity block position, so we can do things like hover directly over a block more easily + entity.blockPosition().getCenter(),//use entity block position, so we can do things like hover directly over a block more easily (isPush ? -1f : 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time From 2ca8f696c1bb20ac6335a0446dcb9d45dfdf8946 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 14 Jan 2025 21:10:52 +1300 Subject: [PATCH 0975/1090] [Surgebinding] first pass 2nd ideal req windrunner --- src/api/java/leaf/cosmere/api/EnumUtils.java | 3 +- src/api/java/leaf/cosmere/api/Roshar.java | 223 ++++++++----- .../client/SurgebindingModClientEvents.java | 10 +- .../render/SurgebindingLayerDefinitions.java | 17 +- .../client/render/SurgebindingRenderers.java | 4 +- .../client/render/model/HonorsprenModel.java | 123 +++++++ .../render/renderer/CrypticRenderer.java | 10 +- .../render/renderer/HonorsprenRenderer.java | 39 +++ .../SurgebindingSpiritwebSubmodule.java | 204 +----------- .../capabilities/ideals/IdealsManager.java | 304 ++++++++++++++++++ .../order/WindrunnerIdealValidator.java | 47 +++ .../common/entity/{ => spren}/Cryptic.java | 4 +- .../common/entity/spren/Honorspren.java | 82 +++++ .../SurgebindingForgeEventsHandler.java | 4 +- .../SurgebindingModEventHandler.java | 6 +- .../common/items/HonorbladeItem.java | 14 +- .../common/mixinAccess/RaidMixinAccess.java | 12 + .../network/packets/SummonShardblade.java | 14 +- .../registries/SurgebindingCreativeTabs.java | 6 +- .../registries/SurgebindingEntityTypes.java | 15 +- .../common/registries/SurgebindingItems.java | 8 +- .../cosmere/surgebinding/mixin/RaidMixin.java | 28 ++ .../resources/surgebinding.mixins.json | 3 +- 23 files changed, 858 insertions(+), 322 deletions(-) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/HonorsprenModel.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/HonorsprenRenderer.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java rename src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/{ => spren}/Cryptic.java (98%) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Honorspren.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/mixinAccess/RaidMixinAccess.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java diff --git a/src/api/java/leaf/cosmere/api/EnumUtils.java b/src/api/java/leaf/cosmere/api/EnumUtils.java index a458724db..2475f7376 100644 --- a/src/api/java/leaf/cosmere/api/EnumUtils.java +++ b/src/api/java/leaf/cosmere/api/EnumUtils.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.api; @@ -13,6 +13,7 @@ public class EnumUtils public static final Metals.MetalType[] METAL_TYPES = Metals.MetalType.values(); //roshar + public static final Roshar.RadiantOrder[] RADIANT_ORDERS = Roshar.RadiantOrder.values(); public static final Roshar.Gemstone[] GEMSTONE_TYPES = Roshar.Gemstone.values(); public static final Roshar.GemSize[] GEM_SIZES = Roshar.GemSize.values(); public static final Roshar.Surges[] SURGES = Roshar.Surges.values(); diff --git a/src/api/java/leaf/cosmere/api/Roshar.java b/src/api/java/leaf/cosmere/api/Roshar.java index 3b5ad990d..e068c4069 100644 --- a/src/api/java/leaf/cosmere/api/Roshar.java +++ b/src/api/java/leaf/cosmere/api/Roshar.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.api; @@ -23,11 +23,11 @@ public enum GemSize public float getChargeModifier() { return switch (this) - { - case BROAM -> 1f; - case MARK -> 0.5f; - case CHIP -> 0.1f; - }; + { + case BROAM -> 1f; + case MARK -> 0.5f; + case CHIP -> 0.1f; + }; } } @@ -109,78 +109,21 @@ public String getName() } - public String getAssociatedOrder() + public RadiantOrder getAssociatedOrder() { return switch (this) - { - case SAPPHIRE -> "windrunner"; - case SMOKESTONE -> "skybreaker"; - case RUBY -> "dustbringer"; - case DIAMOND -> "edgedancer"; - case EMERALD -> "truthwatcher"; - case GARNET -> "lightweaver"; - case ZIRCON -> "elsecaller"; - case AMETHYST -> "willshaper"; - case TOPAZ -> "stoneward"; - case HELIODOR -> "bondsmith"; - }; - } - - - public Surges getFirstSurge() - { - switch (this) { - default: - case SAPPHIRE://Adhesion & Gravitation - return Surges.ADHESION; - case SMOKESTONE://Gravitation & Division - return Surges.GRAVITATION; - case RUBY://Division & Abrasion - return Surges.DIVISION; - case DIAMOND://Abrasion & Progression - return Surges.ABRASION; - case EMERALD://Progression & Illumination - return Surges.PROGRESSION; - case GARNET://Illumination & Transformation - return Surges.ILLUMINATION; - case ZIRCON:// Transformation & Transportation - return Surges.TRANSFORMATION; - case AMETHYST://Transportation & Cohesion - return Surges.TRANSPORTATION; - case TOPAZ://Cohesion & Tension - return Surges.COHESION; - case HELIODOR://Tension & Adhesion - return Surges.TENSION; - } - } - - public Surges getSecondSurge() - { - switch (this) - { - default: - case SAPPHIRE://Adhesion & Gravitation - return Surges.GRAVITATION; - case SMOKESTONE://Gravitation & Division - return Surges.DIVISION; - case RUBY://Division & Abrasion - return Surges.ABRASION; - case DIAMOND://Abrasion & Progression - return Surges.PROGRESSION; - case EMERALD://Progression & Illumination - return Surges.ILLUMINATION; - case GARNET://Illumination & Transformation - return Surges.TRANSFORMATION; - case ZIRCON://Transformation & Transportation - return Surges.TRANSPORTATION; - case AMETHYST://Transportation & Cohesion - return Surges.COHESION; - case TOPAZ://Cohesion & Tension - return Surges.TENSION; - case HELIODOR://Tension & Adhesion - return Surges.ADHESION; - } + case SAPPHIRE -> RadiantOrder.WINDRUNNER; + case SMOKESTONE -> RadiantOrder.SKYBREAKER; + case RUBY -> RadiantOrder.DUSTBRINGER; + case DIAMOND -> RadiantOrder.EDGEDANCER; + case EMERALD -> RadiantOrder.TRUTHWATCHER; + case GARNET -> RadiantOrder.LIGHTWEAVER; + case ZIRCON -> RadiantOrder.ELSECALLER; + case AMETHYST -> RadiantOrder.WILLSHAPER; + case TOPAZ -> RadiantOrder.STONEWARD; + case HELIODOR -> RadiantOrder.BONDSMITH; + }; } public int getColorValue() @@ -191,18 +134,18 @@ public int getColorValue() public Color getColor() { return switch (this) - { - case SAPPHIRE -> GemColours.SAPPHIRE; - case SMOKESTONE -> GemColours.SMOKESTONE; - case RUBY -> GemColours.RUBY; - case DIAMOND -> GemColours.DIAMOND; - case EMERALD -> GemColours.EMERALD; - case GARNET -> GemColours.GARNET; - case ZIRCON -> GemColours.ZIRCON; - case AMETHYST -> GemColours.AMETHYST; - case TOPAZ -> GemColours.TOPAZ; - case HELIODOR -> GemColours.HELIODOR; - }; + { + case SAPPHIRE -> GemColours.SAPPHIRE; + case SMOKESTONE -> GemColours.SMOKESTONE; + case RUBY -> GemColours.RUBY; + case DIAMOND -> GemColours.DIAMOND; + case EMERALD -> GemColours.EMERALD; + case GARNET -> GemColours.GARNET; + case ZIRCON -> GemColours.ZIRCON; + case AMETHYST -> GemColours.AMETHYST; + case TOPAZ -> GemColours.TOPAZ; + case HELIODOR -> GemColours.HELIODOR; + }; } @@ -257,4 +200,110 @@ private static class GemColours public static final Color TOPAZ = Color.decode("#e3681a"); public static final Color HELIODOR = Color.decode("#f3dd25"); } + + + public enum RadiantOrder + { + WINDRUNNER(Gemstone.SAPPHIRE), + SKYBREAKER(Gemstone.SMOKESTONE), + DUSTBRINGER(Gemstone.RUBY), + EDGEDANCER(Gemstone.DIAMOND), + TRUTHWATCHER(Gemstone.EMERALD), + LIGHTWEAVER(Gemstone.GARNET), + ELSECALLER(Gemstone.ZIRCON), + WILLSHAPER(Gemstone.AMETHYST), + STONEWARD(Gemstone.TOPAZ), + BONDSMITH(Gemstone.HELIODOR); + + + private final Gemstone gemstone; + + RadiantOrder(Gemstone gemstone) + { + this.gemstone = gemstone; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(EnumUtils.RADIANT_ORDERS) + .filter(order -> order.getID() == value) + .findFirst(); + } + + public int getID() + { + return gemstone.getID(); + } + + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } + + public Surges getFirstSurge() + { + switch (this) + { + default: + case WINDRUNNER://Adhesion & Gravitation + return Surges.ADHESION; + case SKYBREAKER://Gravitation & Division + return Surges.GRAVITATION; + case DUSTBRINGER://Division & Abrasion + return Surges.DIVISION; + case EDGEDANCER://Abrasion & Progression + return Surges.ABRASION; + case TRUTHWATCHER://Progression & Illumination + return Surges.PROGRESSION; + case LIGHTWEAVER://Illumination & Transformation + return Surges.ILLUMINATION; + case ELSECALLER:// Transformation & Transportation + return Surges.TRANSFORMATION; + case WILLSHAPER://Transportation & Cohesion + return Surges.TRANSPORTATION; + case STONEWARD://Cohesion & Tension + return Surges.COHESION; + case BONDSMITH://Tension & Adhesion + return Surges.TENSION; + } + } + + public Surges getSecondSurge() + { + switch (this) + { + default: + case WINDRUNNER://Adhesion & Gravitation + return Surges.GRAVITATION; + case SKYBREAKER://Gravitation & Division + return Surges.DIVISION; + case DUSTBRINGER://Division & Abrasion + return Surges.ABRASION; + case EDGEDANCER://Abrasion & Progression + return Surges.PROGRESSION; + case TRUTHWATCHER://Progression & Illumination + return Surges.ILLUMINATION; + case LIGHTWEAVER://Illumination & Transformation + return Surges.TRANSFORMATION; + case ELSECALLER://Transformation & Transportation + return Surges.TRANSPORTATION; + case WILLSHAPER://Transportation & Cohesion + return Surges.COHESION; + case STONEWARD://Cohesion & Tension + return Surges.TENSION; + case BONDSMITH://Tension & Adhesion + return Surges.ADHESION; + } + } + + public int getColorValue() + { + return getColor().getRGB(); + } + + public Color getColor() + { + return gemstone.getColor(); + } + } } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java index d4ec81a40..479e9079f 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingModClientEvents.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client; @@ -7,9 +7,6 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.surgebinding.client.render.SurgebindingLayerDefinitions; import leaf.cosmere.surgebinding.client.render.SurgebindingRenderers; -import leaf.cosmere.surgebinding.client.render.model.ChullModel; -import leaf.cosmere.surgebinding.client.render.model.CrypticModel; -import leaf.cosmere.surgebinding.client.render.model.ShardplateModel; import leaf.cosmere.surgebinding.common.Surgebinding; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; @@ -36,10 +33,7 @@ public static void registerGuiOverlays(RegisterGuiOverlaysEvent guiOverlaysEvent @SubscribeEvent public static void registerLayers(final EntityRenderersEvent.RegisterLayerDefinitions evt) { - //shardplate - evt.registerLayerDefinition(SurgebindingLayerDefinitions.SHARDPLATE, ShardplateModel::createBodyLayer); - evt.registerLayerDefinition(SurgebindingLayerDefinitions.CHULL, ChullModel::createBodyLayer); - evt.registerLayerDefinition(SurgebindingLayerDefinitions.CRYPTIC, CrypticModel::createBodyLayer); + SurgebindingLayerDefinitions.register(evt); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java index 36135dcbf..bb3846296 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java @@ -1,11 +1,16 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client.render; +import leaf.cosmere.surgebinding.client.render.model.ChullModel; +import leaf.cosmere.surgebinding.client.render.model.CrypticModel; +import leaf.cosmere.surgebinding.client.render.model.HonorsprenModel; +import leaf.cosmere.surgebinding.client.render.model.ShardplateModel; import leaf.cosmere.surgebinding.common.Surgebinding; import net.minecraft.client.model.geom.ModelLayerLocation; +import net.minecraftforge.client.event.EntityRenderersEvent; public class SurgebindingLayerDefinitions { @@ -14,4 +19,14 @@ public class SurgebindingLayerDefinitions // TODO This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor public static final ModelLayerLocation CRYPTIC = new ModelLayerLocation(Surgebinding.rl("cryptic"), "cryptic"); + public static final ModelLayerLocation HONORSPREN = new ModelLayerLocation(Surgebinding.rl("honorspren"), "honorspren"); + + public static void register(EntityRenderersEvent.RegisterLayerDefinitions evt) + { + //shardplate + evt.registerLayerDefinition(SurgebindingLayerDefinitions.SHARDPLATE, ShardplateModel::createBodyLayer); + evt.registerLayerDefinition(SurgebindingLayerDefinitions.CHULL, ChullModel::createBodyLayer); + evt.registerLayerDefinition(SurgebindingLayerDefinitions.CRYPTIC, CrypticModel::createBodyLayer); + evt.registerLayerDefinition(SurgebindingLayerDefinitions.HONORSPREN, HonorsprenModel::createBodyLayer); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingRenderers.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingRenderers.java index 09fbca919..3281f3521 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingRenderers.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingRenderers.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2022 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client.render; @@ -8,6 +8,7 @@ import leaf.cosmere.surgebinding.client.render.renderer.ArmorRenderer; import leaf.cosmere.surgebinding.client.render.renderer.ChullRenderer; import leaf.cosmere.surgebinding.client.render.renderer.CrypticRenderer; +import leaf.cosmere.surgebinding.client.render.renderer.HonorsprenRenderer; import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; import net.minecraft.client.renderer.entity.EntityRenderers; @@ -28,6 +29,7 @@ public static void register() EntityRenderers.register(SurgebindingEntityTypes.CHULL.get(), ChullRenderer::new); EntityRenderers.register(SurgebindingEntityTypes.CRYPTIC.get(), CrypticRenderer::new); + EntityRenderers.register(SurgebindingEntityTypes.HONORSPREN.get(), HonorsprenRenderer::new); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/HonorsprenModel.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/HonorsprenModel.java new file mode 100644 index 000000000..a778b38aa --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/HonorsprenModel.java @@ -0,0 +1,123 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.client.render.model; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.math.Axis; +import leaf.cosmere.surgebinding.common.entity.spren.Honorspren; +import net.minecraft.client.model.ArmedModel; +import net.minecraft.client.model.HierarchicalModel; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.HumanoidArm; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class HonorsprenModel extends HierarchicalModel implements ArmedModel +{ + private final ModelPart root; + private final ModelPart head; + private final ModelPart body; + private final ModelPart right_arm; + private final ModelPart left_arm; + //private final ModelPart right_wing; + //private final ModelPart left_wing; + private static final float FLYING_ANIMATION_X_ROT = ((float) Math.PI / 4F); + private static final float MAX_HAND_HOLDING_ITEM_X_ROT_RAD = -1.134464F; + private static final float MIN_HAND_HOLDING_ITEM_X_ROT_RAD = (-(float) Math.PI / 3F); + + public HonorsprenModel(ModelPart pRoot) + { + super(RenderType::entityTranslucent); + this.root = pRoot.getChild("root"); + this.head = this.root.getChild("head"); + this.body = this.root.getChild("body"); + this.right_arm = this.body.getChild("right_arm"); + this.left_arm = this.body.getChild("left_arm"); + //this.right_wing = this.body.getChild("right_wing"); + //this.left_wing = this.body.getChild("left_wing"); + } + + public ModelPart root() + { + return this.root; + } + + public static LayerDefinition createBodyLayer() + { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + PartDefinition partdefinition1 = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offset(0.0F, 23.5F, 0.0F)); + partdefinition1.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-2.5F, -5.0F, -2.5F, 5.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -3.99F, 0.0F)); + PartDefinition partdefinition2 = partdefinition1.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 10).addBox(-1.5F, 0.0F, -1.0F, 3.0F, 4.0F, 2.0F, new CubeDeformation(0.0F)).texOffs(0, 16).addBox(-1.5F, 0.0F, -1.0F, 3.0F, 5.0F, 2.0F, new CubeDeformation(-0.2F)), PartPose.offset(0.0F, -4.0F, 0.0F)); + partdefinition2.addOrReplaceChild("right_arm", CubeListBuilder.create().texOffs(23, 0).addBox(-0.75F, -0.5F, -1.0F, 1.0F, 4.0F, 2.0F, new CubeDeformation(-0.01F)), PartPose.offset(-1.75F, 0.5F, 0.0F)); + partdefinition2.addOrReplaceChild("left_arm", CubeListBuilder.create().texOffs(23, 6).addBox(-0.25F, -0.5F, -1.0F, 1.0F, 4.0F, 2.0F, new CubeDeformation(-0.01F)), PartPose.offset(1.75F, 0.5F, 0.0F)); + //partdefinition2.addOrReplaceChild("right_wing", CubeListBuilder.create().texOffs(16, 14).addBox(0.0F, 1.0F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(-0.5F, 0.0F, 0.6F)); + //partdefinition2.addOrReplaceChild("left_wing", CubeListBuilder.create().texOffs(16, 14).addBox(0.0F, 1.0F, 0.0F, 0.0F, 5.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offset(0.5F, 0.0F, 0.6F)); + return LayerDefinition.create(meshdefinition, 32, 32); + } + + /** + * Sets this entity's model rotation angles + */ + public void setupAnim(Honorspren pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) + { + this.root().getAllParts().forEach(ModelPart::resetPose); + float f = pAgeInTicks * 20.0F * ((float) Math.PI / 180F) + pLimbSwing; + float f1 = Mth.cos(f) * (float) Math.PI * 0.15F + pLimbSwingAmount; + float f2 = pAgeInTicks - (float) pEntity.tickCount; + float f3 = pAgeInTicks * 9.0F * ((float) Math.PI / 180F); + float f4 = Math.min(pLimbSwingAmount / 0.3F, 1.0F); + float f5 = 1.0F - f4; + float f6 = pEntity.getHoldingItemAnimationProgress(f2); + if (pEntity.isDancing()) + { + float f7 = pAgeInTicks * 8.0F * ((float) Math.PI / 180F) + pLimbSwingAmount; + float f8 = Mth.cos(f7) * 16.0F * ((float) Math.PI / 180F); + float f9 = pEntity.getSpinningProgress(f2); + float f10 = Mth.cos(f7) * 14.0F * ((float) Math.PI / 180F); + float f11 = Mth.cos(f7) * 30.0F * ((float) Math.PI / 180F); + this.root.yRot = pEntity.isSpinning() ? 12.566371F * f9 : this.root.yRot; + this.root.zRot = f8 * (1.0F - f9); + this.head.yRot = f11 * (1.0F - f9); + this.head.zRot = f10 * (1.0F - f9); + } + else + { + this.head.xRot = pHeadPitch * ((float) Math.PI / 180F); + this.head.yRot = pNetHeadYaw * ((float) Math.PI / 180F); + } + + //this.right_wing.xRot = 0.43633232F * (1.0F - f4); + //this.right_wing.yRot = (-(float) Math.PI / 4F) + f1; + //this.left_wing.xRot = 0.43633232F * (1.0F - f4); + //this.left_wing.yRot = FLYING_ANIMATION_X_ROT - f1; + this.body.xRot = f4 * FLYING_ANIMATION_X_ROT; + float f12 = f6 * Mth.lerp(f4, MIN_HAND_HOLDING_ITEM_X_ROT_RAD, MAX_HAND_HOLDING_ITEM_X_ROT_RAD); + this.root.y += (float) Math.cos((double) f3) * 0.25F * f5; + this.right_arm.xRot = f12; + this.left_arm.xRot = f12; + float f13 = f5 * (1.0F - f6); + float f14 = 0.43633232F - Mth.cos(f3 + ((float) Math.PI * 1.5F)) * (float) Math.PI * 0.075F * f13; + this.left_arm.zRot = -f14; + this.right_arm.zRot = f14; + this.right_arm.yRot = 0.27925268F * f6; + this.left_arm.yRot = -0.27925268F * f6; + } + + public void translateToHand(HumanoidArm pSide, PoseStack pPoseStack) + { + this.root.translateAndRotate(pPoseStack); + this.body.translateAndRotate(pPoseStack); + pPoseStack.translate(0.0F, 0.0625F, 0.1875F); + pPoseStack.mulPose(Axis.XP.rotation(this.right_arm.xRot)); + pPoseStack.scale(0.7F, 0.7F, 0.7F); + pPoseStack.translate(0.0625F, 0.0F, 0.0F); + } +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/CrypticRenderer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/CrypticRenderer.java index fd0f8c9bb..fc9de2038 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/CrypticRenderer.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/CrypticRenderer.java @@ -1,5 +1,5 @@ /* - * File updated ~ 26 - 2 - 2023 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client.render.renderer; @@ -8,7 +8,7 @@ import leaf.cosmere.surgebinding.client.render.SurgebindingLayerDefinitions; import leaf.cosmere.surgebinding.client.render.model.CrypticModel; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.entity.Cryptic; +import leaf.cosmere.surgebinding.common.entity.spren.Cryptic; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.entity.EntityRendererProvider; import net.minecraft.client.renderer.entity.MobRenderer; @@ -24,12 +24,14 @@ public CrypticRenderer(EntityRendererProvider.Context context) } @Override - public ResourceLocation getTextureLocation(Cryptic pEntity) { + public ResourceLocation getTextureLocation(Cryptic pEntity) + { return TEXTURE; } @Override - public void render(Cryptic pEntity, float pEntityYaw, float pPartialTicks, PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPackedLight) { + public void render(Cryptic pEntity, float pEntityYaw, float pPartialTicks, PoseStack pMatrixStack, MultiBufferSource pBuffer, int pPackedLight) + { super.render(pEntity, pEntityYaw, pPartialTicks, pMatrixStack, pBuffer, pPackedLight); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/HonorsprenRenderer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/HonorsprenRenderer.java new file mode 100644 index 000000000..255055a4a --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/HonorsprenRenderer.java @@ -0,0 +1,39 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.client.render.renderer; + +import leaf.cosmere.surgebinding.client.render.model.HonorsprenModel; +import leaf.cosmere.surgebinding.common.entity.spren.Honorspren; +import net.minecraft.client.model.geom.ModelLayers; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.client.renderer.entity.MobRenderer; +import net.minecraft.client.renderer.entity.layers.ItemInHandLayer; +import net.minecraft.core.BlockPos; +import net.minecraft.resources.ResourceLocation; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +@OnlyIn(Dist.CLIENT) +public class HonorsprenRenderer extends MobRenderer +{ + private static final ResourceLocation ALLAY_TEXTURE = new ResourceLocation("textures/entity/allay/allay.png"); + + public HonorsprenRenderer(EntityRendererProvider.Context p_234551_) + { + super(p_234551_, new HonorsprenModel(p_234551_.bakeLayer(ModelLayers.ALLAY)), 0.4F); + this.addLayer(new ItemInHandLayer<>(this, p_234551_.getItemInHandRenderer())); + } + + @Override + public ResourceLocation getTextureLocation(Honorspren pEntity) + { + return ALLAY_TEXTURE; + } + + protected int getBlockLightLevel(Honorspren pEntity, BlockPos blockPos) + { + return 15; + } +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index 3604ab68e..bf0834aca 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,40 +1,30 @@ /* - * File updated ~ 12 - 1 - 2025 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; -import leaf.cosmere.api.*; +import leaf.cosmere.api.ISpiritwebSubmodule; +import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.util.TaskQueueManager; -import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.capabilities.ideals.IdealsManager; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; -import leaf.cosmere.surgebinding.common.config.SurgebindingServerConfig; import leaf.cosmere.surgebinding.common.items.tiers.ShardplateArmorMaterial; import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.ServerChatEvent; -import org.jetbrains.annotations.NotNull; import java.util.stream.Stream; public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule { - //todo move - private static ResourceLocation SWEAR_IDEAL = new ResourceLocation(Surgebinding.MODID, "swear_ideal"); //stormlight stored @@ -42,8 +32,8 @@ public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule //a little ew, I'd rather this in an enum utils, but it's the only place that needs it public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); - private String order = ""; - private int ideal = 0; + IdealsManager idealsManager = new IdealsManager(); + private ISpiritweb spiritweb; @Override @@ -53,13 +43,13 @@ public void tickServer(ISpiritweb spiritweb) final boolean surgebindingActiveTick = (livingEntity.tickCount + Manifestations.ManifestationTypes.SURGEBINDING.getID()) % 20 == 0; //boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); - boolean isOathed = !order.isEmpty(); + boolean isOathed = idealsManager.getOrder() != null; //tick stormlight if (isOathed) { - if (livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) - && livingEntity.level().isThundering() + if (livingEntity.level().isThundering() + && livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) && livingEntity.level().isRainingAt(livingEntity.blockPosition())) { //if player has max of 1000, it will take just under a minute to spend? @@ -160,10 +150,10 @@ else if (livingEntity.isUnderWater()) @Override public void deserialize(ISpiritweb spiritweb) { + this.spiritweb = spiritweb; final CompoundTag spiritwebCompoundTag = spiritweb.getCompoundTag(); stormlightStored = spiritwebCompoundTag.getInt("stored_stormlight"); - order = spiritwebCompoundTag.getString("order"); - ideal = spiritwebCompoundTag.getInt("ideal"); + idealsManager.deserialize(spiritweb); } @Override @@ -172,8 +162,7 @@ public void serialize(ISpiritweb spiritweb) final CompoundTag compoundTag = spiritweb.getCompoundTag(); compoundTag.putInt("stored_stormlight", stormlightStored); - compoundTag.putString("order", order); - compoundTag.putInt("ideal", ideal); + idealsManager.serialize(spiritweb); } public int getStormlight() @@ -199,173 +188,8 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) return false; } - public void onChatMessageReceived(@NotNull SpiritwebCapability spiritweb, ServerChatEvent event) + public void onChatMessageReceived(ServerChatEvent event) { - //players can swear an ideal by typing a specific message in chat - //it's more efficient to check if a chat message is relevant before checking - // if the player meets any requirements needed to do something with those messages - - //todo maybe we should check if the player is in the right dimension first? - - //todo - { - //a player can potentially bond _two_ spren, not just a single one - //this means they can have two sets of surges, and two sets of ideals - //so maybe it's fine to hard code to only two sets of radiant orders? - //todo config for allowing a second order - //tbd on the conditions required before a player can bond a second spren - } - - String playerMessage = SurgebindingServerConfig.cleanIdeal(event.getRawText()); - int idealToSwear = 0; - String idealOrder = ""; - - //every order's first ideal is the same - - //if it's not the first ideal - - //for each order - //yes its weird to iterate over gems, but gems enum knows what orders are associated with it - for (Roshar.Gemstone gemstone : EnumUtils.GEMSTONE_TYPES) - { - //for each ideal - for (int ideal = 1; ideal <= 5; ideal++) - { - String thisIdeal = SurgebindingConfigs.SERVER.getIdeal(ideal, gemstone.getID()); - if (thisIdeal.equals(SurgebindingServerConfig.IDEAL_NOT_IMPLEMENTED)) - { - //skip ideals that are not yet implemented - continue; - } - - if (playerMessage.contains(thisIdeal)) - { - //check if the message matches the ideal - //if it does, set idealToSwear to the ideal's index - //also set which order the ideal belongs to - //break out of the loop - idealToSwear = ideal; - if (idealToSwear != 1) - { - //only the first ideal is universal, - idealOrder = gemstone.getAssociatedOrder(); - } - break; - } - } - } - - if (idealToSwear == 0) - { - //not relevant, exit - return; - } - - if (this.ideal > 2 && this.order.isEmpty()) - { - CosmereAPI.logger.error("Player has sworn a higher ideal but has no order set?? How does this happen. Resetting to zero."); - this.ideal = 0; - } - - //assuming we have found a message that matches trying to qualify for an ideal - boolean successfulSwear = false; - //check the current state of the player's spiritweb - //swearing the first or second ideal - if (this.order.isEmpty()) - { - - //we want to know whether they are unoathed, or have sworn an ideal - //if they have sworn an ideal, we want to know which one - //ideal has to be zero, check if swearing the first ideal. - if (idealToSwear == 1 && this.ideal == 0) - { - this.ideal++; - successfulSwear = true; - } - else if (idealToSwear == 2 && this.ideal == 1) - { - this.ideal++; - this.order = idealOrder; - successfulSwear = true; - } - // else we - - if (successfulSwear) - { - onSuccessfulIdealSworn(spiritweb); - } - - //no need to continue - return; - } - - //else they must be trying to swear a higher ideal - if (this.order.equals(idealOrder)) - { - boolean swearingHigherIdeal = idealToSwear > 2; - //swearing a higher ideal - if (idealToSwear == this.ideal + 1) - { - this.ideal++; - successfulSwear = true; - } - - if (successfulSwear) - { - onSuccessfulIdealSworn(spiritweb); - } - else - { - //only the higher ideas tell you if words are accepted? - //todo translatable - event.setCanceled(true); - event.getPlayer().sendSystemMessage(Component.literal("THESE WORDS ARE NOT ACCEPTED.")); - } - } + idealsManager.onChatMessageReceived(event); } - - private void onSuccessfulIdealSworn(@NotNull SpiritwebCapability spiritweb) - { - //rumble if ideal 2 - if (spiritweb.getLiving() instanceof ServerPlayer player) - { - //todo we should check the configs for whether this should be broadcasted to all players, or just the player themselves - - final Runnable work = () -> - { - //todo translatable - if (this.ideal != 1) - { - player.sendSystemMessage(Component.literal("THESE WORDS ARE ACCEPTED.")); - } - //player.playSound(SoundEvents.LIGHTNING_BOLT_THUNDER, 1000, 0.8F + player.getRandom().nextFloat() * 0.2F); - player.level().playSound( - null,//null so it also sends to triggering player - player.getX(), - player.getY(), - player.getZ(), - SoundEvents.LIGHTNING_BOLT_THUNDER, - SoundSource.WEATHER, - 10000.0F, - 0.8F + player.getRandom().nextFloat() * 0.2F - ); - - - //todo - if the player is trying to swear an ideal, check if they have stormlight nearby to facilitate the process - { - //if they do, we should consume the stormlight and give them the appropriate buffs - } - { - //if they don't, we should inform them that they need more stormlight to swear an ideal? - //or maybe just allow the words to be accepted but don't heal them or give them the buffs - } - - //todo spawn order glyph at player if higher ideal - - }; - - TaskQueueManager.submitDelayedTask(SWEAR_IDEAL, 60, new TaskQueueManager.OneOffTask(work)); - } - } - } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java new file mode 100644 index 000000000..03f5bff00 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java @@ -0,0 +1,304 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.capabilities.ideals; + +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Roshar; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.util.TaskQueueManager; +import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.capabilities.ideals.order.WindrunnerIdealValidator; +import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.config.SurgebindingServerConfig; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraftforge.event.ServerChatEvent; +import org.jetbrains.annotations.NotNull; + +public class IdealsManager +{ + private static ResourceLocation SWEAR_IDEAL = new ResourceLocation(Surgebinding.MODID, "swear_ideal"); + + private SpiritwebCapability spiritweb; + private Roshar.RadiantOrder order = null; + private int ideal = 0; + + //todo change string to enum + public Roshar.RadiantOrder getOrder() + { + return order; + } + + public int getIdeal() + { + return ideal; + } + + public void serialize(ISpiritweb spiritweb) + { + final CompoundTag compoundTag = spiritweb.getCompoundTag(); + + if (order != null) + { + compoundTag.putInt("order", order.getID()); + } + else if (compoundTag.contains("order")) //remove tracking of order if it's null + { + compoundTag.remove("order"); + } + + compoundTag.putInt("ideal", ideal); + } + + public void deserialize(ISpiritweb spiritweb) + { + this.spiritweb = (SpiritwebCapability) spiritweb; + final CompoundTag spiritwebCompoundTag = spiritweb.getCompoundTag(); + this.order = Roshar.RadiantOrder.valueOf(spiritwebCompoundTag.getInt("order")).orElse(null); + this.ideal = spiritwebCompoundTag.getInt("ideal"); + } + + + public void onChatMessageReceived(ServerChatEvent event) + { + //players can swear an ideal by typing a specific message in chat + //it's more efficient to check if a chat message is relevant before checking + // if the player meets any requirements needed to do something with those messages + + //todo maybe we should check if the player is in the right dimension first? + + //todo + { + //a player can potentially bond _two_ spren, not just a single one + //this means they can have two sets of surges, and two sets of ideals + //so maybe it's fine to hard code to only two sets of radiant orders? + //todo config for allowing a second order + //tbd on the conditions required before a player can bond a second spren + } + + String playerMessage = SurgebindingServerConfig.cleanIdeal(event.getRawText()); + int idealToSwear = 0; + Roshar.RadiantOrder idealOrder = null; + + //every order's first ideal is the same + + boolean foundAssociatedIdeal = false; + + if (idealToSwear <= this.ideal) + { + return; + } + + //for each order + for (Roshar.RadiantOrder radiantOrder : EnumUtils.RADIANT_ORDERS) + { + if (foundAssociatedIdeal) + { + break; + } + + //for each ideal + for (int ideal = 1; ideal <= 5; ideal++) + { + String thisIdeal = SurgebindingConfigs.SERVER.getIdeal(ideal, radiantOrder.getID()); + if (thisIdeal.equals(SurgebindingServerConfig.IDEAL_NOT_IMPLEMENTED)) + { + //skip ideals that are not yet implemented + continue; + } + + if (playerMessage.contains(thisIdeal)) + { + //check if the message matches the ideal + //if it does, set idealToSwear to the ideal's index + //also set which order the ideal belongs to + //break out of the loop + idealToSwear = ideal; + + //if it's not the first ideal + if (idealToSwear != 1) + { + //only the first ideal is universal, + idealOrder = radiantOrder; + } + + foundAssociatedIdeal = true; + break; + } + } + } + + if (idealToSwear == 0) + { + //not relevant, exit + return; + } + + if (this.ideal > 2 && this.order == null) + { + CosmereAPI.logger.error("Player has sworn a higher ideal but has no order set?? How does this happen. Resetting to zero."); + this.ideal = 0; + } + + if (this.ideal == 0 && this.order != null) + { + CosmereAPI.logger.error("Player has an order despite swearing no oaths?. Resetting."); + this.order = null; + } + + //assuming we have found a message that matches trying to qualify for an ideal + boolean successfulSwear = false; + //check the current state of the player's spiritweb + //swearing the first or second ideal + if (this.order == null) + { + + //we want to know whether they are unoathed, or have sworn an ideal + //if they have sworn an ideal, we want to know which one + //ideal has to be zero, check if swearing the first ideal. + if (idealToSwear == 1 && this.ideal == 0) + { + successfulSwear = onTrySuccessfulSwear(idealToSwear, null); + } + else if (idealToSwear == 2 && this.ideal == 1) + { + successfulSwear = onTrySuccessfulSwear(idealToSwear, idealOrder); + } + // else we + + if (successfulSwear) + { + this.ideal++; + this.order = idealOrder; + onSuccessfulIdealSworn(spiritweb); + } + + //no need to continue + return; + } + + //else they must be trying to swear a higher ideal + if (this.order.equals(idealOrder)) + { + boolean swearingHigherIdeal = idealToSwear > 2; + //swearing a higher ideal + if (idealToSwear == this.ideal + 1) + { + successfulSwear = onTrySuccessfulSwear(idealToSwear, idealOrder); + } + + if (successfulSwear) + { + this.ideal++; + onSuccessfulIdealSworn(spiritweb); + } + else + { + //only the higher ideas tell you if words are accepted? + //todo translatable + event.setCanceled(true); + event.getPlayer().sendSystemMessage(Component.literal("THESE WORDS ARE NOT ACCEPTED.")); + } + } + } + + private boolean onTrySuccessfulSwear(int idealToSwear, Roshar.RadiantOrder idealOrder) + { + if (idealToSwear == 1 && idealOrder == null) + { + //swearing the first ideal + return true; + } + + switch (idealOrder) + { + case WINDRUNNER -> + { + return WindrunnerIdealValidator.validateIdeal(spiritweb, idealToSwear); + } + case SKYBREAKER -> + { + } + case DUSTBRINGER -> + { + } + case EDGEDANCER -> + { + } + case TRUTHWATCHER -> + { + } + case LIGHTWEAVER -> + { + } + case ELSECALLER -> + { + } + case WILLSHAPER -> + { + } + case STONEWARD -> + { + } + case BONDSMITH -> + { + } + } + + + return false; + } + + + private void onSuccessfulIdealSworn(@NotNull SpiritwebCapability spiritweb) + { + //rumble if ideal 2 + if (spiritweb.getLiving() instanceof ServerPlayer player) + { + //todo we should check the configs for whether this should be broadcasted to all players, or just the player themselves + + final Runnable work = () -> + { + //todo translatable + if (this.ideal != 1) + { + player.sendSystemMessage(Component.literal("THESE WORDS ARE ACCEPTED.")); + } + //player.playSound(SoundEvents.LIGHTNING_BOLT_THUNDER, 1000, 0.8F + player.getRandom().nextFloat() * 0.2F); + player.level().playSound( + null,//null so it also sends to triggering player + player.getX(), + player.getY(), + player.getZ(), + SoundEvents.LIGHTNING_BOLT_THUNDER, + SoundSource.WEATHER, + 10000.0F, + 0.8F + player.getRandom().nextFloat() * 0.2F + ); + + + //todo - if the player is trying to swear an ideal, check if they have stormlight nearby to facilitate the process + { + //if they do, we should consume the stormlight and give them the appropriate buffs + } + { + //if they don't, we should inform them that they need more stormlight to swear an ideal? + //or maybe just allow the words to be accepted but don't heal them or give them the buffs + } + + //todo spawn particle order glyph at player if higher ideal + + }; + + TaskQueueManager.submitDelayedTask(SWEAR_IDEAL, 60, new TaskQueueManager.OneOffTask(work)); + } + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java new file mode 100644 index 000000000..e0d3cb9c0 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java @@ -0,0 +1,47 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.capabilities.ideals.order; + +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.surgebinding.common.mixinAccess.RaidMixinAccess; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; + +public class WindrunnerIdealValidator +{ + public static boolean validateIdeal(SpiritwebCapability spiritweb, int ideal) + { + switch (ideal) + { + default: + case 1: + return true; + case 2: + return ProtectThoseWhoCannotProtectThemselves(spiritweb); + case 3: + case 4: + case 5: + return false; + } + } + + private static boolean ProtectThoseWhoCannotProtectThemselves(SpiritwebCapability spiritweb) + { + final LivingEntity living = spiritweb.getLiving(); + + RaidMixinAccess raid = (RaidMixinAccess) ((ServerLevel) living.level()).getRaidAt(living.blockPosition()); + + if (raid != null && raid._cosmere$isHero((Player) living)) + { + return true; + } + + MobEffectInstance isHero = living.getEffect(MobEffects.HERO_OF_THE_VILLAGE); + return isHero != null; + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Cryptic.java similarity index 98% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Cryptic.java index 93a23f53e..6a7698fc9 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Cryptic.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Cryptic.java @@ -1,8 +1,8 @@ /* - * File updated ~ 13 - 5 - 2024 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ -package leaf.cosmere.surgebinding.common.entity; +package leaf.cosmere.surgebinding.common.entity.spren; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; import net.minecraft.nbt.CompoundTag; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Honorspren.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Honorspren.java new file mode 100644 index 000000000..66d39ced9 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/spren/Honorspren.java @@ -0,0 +1,82 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.entity.spren; + +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.animal.allay.Allay; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +public class Honorspren extends Allay +{ + public Honorspren(EntityType pEntityType, Level pLevel) + { + super(pEntityType, pLevel); + } + + @Override + public boolean canBeAffected(MobEffectInstance pEffectInstance) + { + return false; + } + + @Override + public boolean canBeHitByProjectile() + { + return false; + } + + @Override + public boolean canBeSeenByAnyone() + { + //TODO: make this only visible to the player it is bonded to? + return super.canBeSeenByAnyone(); + } + + @Override + public boolean canCollideWith(Entity pEntity) + { + return false; + } + + @Override + public boolean canBeSeenAsEnemy() + { + return false; + } + + @Override + public boolean canBeLeashed(Player pPlayer) + { + return false; + } + + @Override + public boolean canBeCollidedWith() + { + //todo: make this only collide with the player it is bonded to? + return false; + } + + @Override + public boolean canTakeItem(ItemStack pItemstack) + { + //return super.canTakeItem(pItemstack); + //TODO: make this only take items from the player it is bonded to? + //todo make it only able to take things once bond has progressed? + return false; + } + + @Override + public boolean hurt(DamageSource pSource, float pAmount) + { + //todo make this only damage from a very specific type of damage type, you know the one. + return false; + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java index af002ebb9..de454426b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 1 - 2025 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; @@ -84,7 +84,7 @@ public static void onServerChatEvent(ServerChatEvent event) final ISpiritwebSubmodule submodule = spiritweb.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); if (submodule instanceof SurgebindingSpiritwebSubmodule surgebinding) { - surgebinding.onChatMessageReceived((SpiritwebCapability) spiritweb, event); + surgebinding.onChatMessageReceived(event); } }); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java index 2cc19b481..016dd721a 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingModEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 1 - 2025 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; @@ -8,7 +8,8 @@ import leaf.cosmere.api.Roshar; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.entity.Chull; -import leaf.cosmere.surgebinding.common.entity.Cryptic; +import leaf.cosmere.surgebinding.common.entity.spren.Cryptic; +import leaf.cosmere.surgebinding.common.entity.spren.Honorspren; import leaf.cosmere.surgebinding.common.registries.SurgebindingAttributes; import leaf.cosmere.surgebinding.common.registries.SurgebindingEntityTypes; import net.minecraft.world.entity.EntityType; @@ -37,5 +38,6 @@ public static void entityAttributeEvent(EntityAttributeCreationEvent event) { event.put(SurgebindingEntityTypes.CHULL.get(), Chull.createAttributes().build()); event.put(SurgebindingEntityTypes.CRYPTIC.get(), Cryptic.createAttributes().build()); + event.put(SurgebindingEntityTypes.HONORSPREN.get(), Honorspren.createAttributes().build()); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java index c6319db13..a34759658 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -20,7 +20,7 @@ public class HonorbladeItem extends ShardbladeItem { - public final Roshar.Gemstone gemstone; + public final Roshar.RadiantOrder radiantOrder; private final int attackDamageIn; private final float attackSpeedIn; @@ -30,14 +30,14 @@ public class HonorbladeItem extends ShardbladeItem private Multimap attributeModifiers = null; // having primary and secondary means that theoretically a player could - // hold two shards that share a surge and be twice as strong in that surge + // hold two shards that share a surge and be twice as strong in that surge // todo more strength shouldn't really matter much in surgebinding protected static final UUID PRIMARY_HONORBLADE_SURGE_UUID = UUID.fromString("CB3F55D3-4865-4180-A497-9C13A33DB5CF"); protected static final UUID SECONDARY_HONORBLADE_SURGE_UUID = UUID.fromString("FA233E1C-4180-4865-A497-BCCE9785ACA3"); - public HonorbladeItem(Roshar.Gemstone gemstone, Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) + public HonorbladeItem(Roshar.RadiantOrder gemstone, Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) { super(tier, attackDamageIn, attackSpeedIn, builderIn); - this.gemstone = gemstone; + this.radiantOrder = gemstone; this.attackDamageIn = attackDamageIn; this.attackSpeedIn = attackSpeedIn; } @@ -54,8 +54,8 @@ public Multimap getAttributeModifiers(EquipmentSlo ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamageIn, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", attackSpeedIn, AttributeModifier.Operation.ADDITION)); - builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getFirstSurge()).getAttribute(), new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); - builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getSecondSurge()).getAttribute(), new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getFirstSurge()).getAttribute(), new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); + builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getSecondSurge()).getAttribute(), new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); this.attributeModifiers = builder.build(); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/mixinAccess/RaidMixinAccess.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/mixinAccess/RaidMixinAccess.java new file mode 100644 index 000000000..22a18754e --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/mixinAccess/RaidMixinAccess.java @@ -0,0 +1,12 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.mixinAccess; + +import net.minecraft.world.entity.player.Player; + +public interface RaidMixinAccess +{ + boolean _cosmere$isHero(Player player); +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java index c1e042ca2..adb31faaa 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/SummonShardblade.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.network.packets; @@ -105,16 +105,16 @@ else if (itemInHand.getItem() instanceof ShardbladeItem shardbladeItem) private static void UpdateIntrinsicPowers(HonorbladeItem honorbladeItem, LivingEntity livingEntity, boolean isStoringHonorblade) { - final Roshar.Gemstone gemstone = honorbladeItem.gemstone; - UUID uuid = UUID.fromString(gemstone.getName()); - Attribute firstSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getFirstSurge()).getAttribute(); - Attribute secondSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(gemstone.getSecondSurge()).getAttribute(); + final Roshar.RadiantOrder radiantOrder = honorbladeItem.radiantOrder; + UUID uuid = UUID.fromString(radiantOrder.getName()); + Attribute firstSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getFirstSurge()).getAttribute(); + Attribute secondSurge = SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getSecondSurge()).getAttribute(); if (isStoringHonorblade) { //then add the power to the spiritweb - livingEntity.getAttribute(firstSurge).addPermanentModifier(new AttributeModifier(uuid, gemstone.getAssociatedOrder() + "PrimaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); - livingEntity.getAttribute(secondSurge).addPermanentModifier(new AttributeModifier(uuid, gemstone.getAssociatedOrder() + "SecondaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); + livingEntity.getAttribute(firstSurge).addPermanentModifier(new AttributeModifier(uuid, radiantOrder.getName() + "PrimaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); + livingEntity.getAttribute(secondSurge).addPermanentModifier(new AttributeModifier(uuid, radiantOrder.getName() + "SecondaryHonorbladeSurge", 5, AttributeModifier.Operation.ADDITION)); } else { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java index 813b66af7..72bfa7df1 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 12 - 2024 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -23,7 +23,7 @@ public class SurgebindingCreativeTabs public static final CreativeTabRegistryObject ITEMS = CREATIVE_TABS.registerMain( Component.translatable("tabs." + Surgebinding.MODID + ".items"), - SurgebindingItems.HONORBLADES.get(Roshar.Gemstone.SMOKESTONE), + SurgebindingItems.HONORBLADES.get(Roshar.RadiantOrder.SKYBREAKER), builder -> builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> @@ -76,7 +76,7 @@ else if (tabKey == CreativeModeTabs.TOOLS_AND_UTILITIES) } else if (tabKey == CreativeModeTabs.COMBAT) { - for (var gemstone : EnumUtils.GEMSTONE_TYPES) + for (var gemstone : EnumUtils.RADIANT_ORDERS) { CreativeTabDeferredRegister.addToDisplay(event, SurgebindingItems.HONORBLADES.get(gemstone)); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingEntityTypes.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingEntityTypes.java index ff846c442..20df1ca36 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingEntityTypes.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingEntityTypes.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 6 - 2023 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -8,7 +8,8 @@ import leaf.cosmere.common.registration.impl.EntityTypeRegistryObject; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.entity.Chull; -import leaf.cosmere.surgebinding.common.entity.Cryptic; +import leaf.cosmere.surgebinding.common.entity.spren.Cryptic; +import leaf.cosmere.surgebinding.common.entity.spren.Honorspren; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobCategory; @@ -38,4 +39,14 @@ public class SurgebindingEntityTypes .sized(0.75f, 0.75f) ); + public static final EntityTypeRegistryObject HONORSPREN = + ENTITY_TYPES.register( + "honorspren", + EntityType.Builder.of(Honorspren::new, MobCategory.CREATURE) + .updateInterval(2) + .clientTrackingRange(8) + .sized(0.35F, 0.6F) + ); + + } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java index 3456ddde9..0b13bd564 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 14 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -43,12 +43,12 @@ private SurgebindingItems() public static final ItemRegistryObject SHARDPLATE_BOOTS = ITEMS.register("shardplate_boots", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.BOOTS, PropTypes.Items.SHARDBLADE.get())); - public static final Map> HONORBLADES = - Arrays.stream(EnumUtils.GEMSTONE_TYPES) + public static final Map> HONORBLADES = + Arrays.stream(EnumUtils.RADIANT_ORDERS) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.getAssociatedOrder() + "_honorblade", + type.getName() + "_honorblade", () -> new HonorbladeItem(type, SHARDBLADE_ITEM_TIER, 24, -2.4F, PropTypes.Items.SHARDBLADE.get()) ))); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java b/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java new file mode 100644 index 000000000..f84341f3a --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java @@ -0,0 +1,28 @@ +/* + * File updated ~ 14 - 1 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.mixin; + +import com.google.common.collect.Sets; +import leaf.cosmere.surgebinding.common.mixinAccess.RaidMixinAccess; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.entity.raid.Raid; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import java.util.Set; +import java.util.UUID; + +@Mixin(Raid.class) +public abstract class RaidMixin implements RaidMixinAccess +{ + @Shadow + private final Set heroesOfTheVillage = Sets.newHashSet(); + + @Override + public boolean _cosmere$isHero(Player player) + { + return heroesOfTheVillage.contains(player.getUUID()); + } +} diff --git a/src/surgebinding/resources/surgebinding.mixins.json b/src/surgebinding/resources/surgebinding.mixins.json index aafb976a6..577a3fab8 100644 --- a/src/surgebinding/resources/surgebinding.mixins.json +++ b/src/surgebinding/resources/surgebinding.mixins.json @@ -6,7 +6,8 @@ "refmap": "mixins.cosmere.surgebinding.refmap.json", "mixins": [ "LivingEntityMixin", - "PlayerMixin" + "PlayerMixin", + "RaidMixin" ], "client": [ "LocalPlayerMixin" From 84bab6a2fc731deed5166b4d9850ceb96bd8b660 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 20 Jan 2025 00:30:47 +0100 Subject: [PATCH 0976/1090] [Allomancy] Improved cluster selection and cleaned up cluster detection code --- .../client/metalScanning/ScanResult.java | 84 ++++++++----------- 1 file changed, 36 insertions(+), 48 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java index 204b54409..0e0066d4b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java @@ -4,14 +4,14 @@ package leaf.cosmere.allomancy.client.metalScanning; +import leaf.cosmere.api.CosmereAPI; import net.minecraft.core.BlockPos; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /* * Largely based on Scannable, so we can use their concept of block clusters @@ -57,51 +57,16 @@ private boolean tryAddToCluster(final Map clusters, f { BlockScanResult root = null; - //all the blocks directly touching this one - final BlockPos east = pos.east(); - root = tryAddToCluster(clusters, pos, east, root); - final BlockPos west = pos.west(); - root = tryAddToCluster(clusters, pos, west, root); - final BlockPos north = pos.north(); - root = tryAddToCluster(clusters, pos, north, root); - final BlockPos south = pos.south(); - root = tryAddToCluster(clusters, pos, south, root); - root = tryAddToCluster(clusters, pos, pos.above(), root); - root = tryAddToCluster(clusters, pos, pos.below(), root); - - //center slice - root = tryAddToCluster(clusters, pos, north.above(), root); - root = tryAddToCluster(clusters, pos, north.below(), root); - root = tryAddToCluster(clusters, pos, south.above(), root); - root = tryAddToCluster(clusters, pos, south.below(), root); - - //west slice - root = tryAddToCluster(clusters, pos, east.above(), root); - root = tryAddToCluster(clusters, pos, east.below(), root); - final BlockPos eastNorth = east.north(); - root = tryAddToCluster(clusters, pos, eastNorth, root); - root = tryAddToCluster(clusters, pos, eastNorth.above(), root); - root = tryAddToCluster(clusters, pos, eastNorth.below(), root); - final BlockPos eastSouth = east.south(); - root = tryAddToCluster(clusters, pos, eastSouth, root); - root = tryAddToCluster(clusters, pos, eastSouth.above(), root); - root = tryAddToCluster(clusters, pos, eastSouth.below(), root); - - //east slice - root = tryAddToCluster(clusters, pos, west.above(), root); - root = tryAddToCluster(clusters, pos, west.below(), root); - final BlockPos westNorth = west.north(); - root = tryAddToCluster(clusters, pos, westNorth, root); - root = tryAddToCluster(clusters, pos, westNorth.above(), root); - root = tryAddToCluster(clusters, pos, westNorth.below(), root); - final BlockPos westSouth = east.south(); - root = tryAddToCluster(clusters, pos, westSouth, root); - root = tryAddToCluster(clusters, pos, westSouth.above(), root); - root = tryAddToCluster(clusters, pos, westSouth.below(), root); - - if (root != null) + List directions = getNeighbors(pos); + + for (BlockPos direction : directions) + { + root = tryAddToCluster(clusters, pos, direction, root); + } + + if (root != null && currentClosestMetalObject != null) { - if (pos.getCenter().equals(currentClosestMetalObject)) + if (targetedCluster != root && root.getBlocks().contains(BlockPos.containing(currentClosestMetalObject))) { targetedCluster = root; hasTargetedCluster = true; @@ -134,6 +99,29 @@ private BlockScanResult tryAddToCluster(final Map clu return root; } + private static List getNeighbors(BlockPos start) + { + List neighbors = new ArrayList<>(); + + for (int x = -1; x <= 1; x++) + { + for (int y = -1; y <= 1; y++) + { + for (int z = -1; z <= 1; z++) + { + // Skip the start block + if (x == 0 && y == 0 && z == 0) + { + continue; + } + neighbors.add(start.offset(x, y, z)); + } + } + } + + return neighbors; + } + public Vec3 finalizeClusters() { clusterCenters = clusterResults.stream().map(BlockScanResult::getPosition).toList(); From 0df71a3c960264b11649657236643d77fed1c419 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 20 Jan 2025 00:35:52 +0100 Subject: [PATCH 0977/1090] Removed unused imports introduced via experimenting --- .../cosmere/allomancy/client/metalScanning/ScanResult.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java index 0e0066d4b..ffa9d3bc1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/ScanResult.java @@ -4,10 +4,7 @@ package leaf.cosmere.allomancy.client.metalScanning; -import leaf.cosmere.api.CosmereAPI; import net.minecraft.core.BlockPos; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.Vec3; import javax.annotation.Nullable; From abe90a0232b846f7c6c85a4c665c90e3fd4599ab Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 20 Jan 2025 10:46:20 +0100 Subject: [PATCH 0978/1090] [Allomancy] Added distance-based transparency for blocks in steelsight to match lines --- .../capabilities/AllomancySpiritwebSubmodule.java | 4 ++-- src/api/java/leaf/cosmere/api/helpers/DrawHelper.java | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 7048d8019..637cc10f3 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -251,11 +251,11 @@ public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event { if (scanResult.hasTargetedCluster) { - DrawHelper.drawBlocksAtPoint(viewModelStack, Color.BLUE, scanResult.foundBlocks, closestMetalObject, scanResult.targetedCluster.getBlocks()); + DrawHelper.drawBlocksAtPoint(viewModelStack, Color.BLUE, scanResult.foundBlocks, range, closestMetalObject, scanResult.targetedCluster.getBlocks()); } else { - DrawHelper.drawBlocksAtPoint(viewModelStack, Color.BLUE, scanResult.foundBlocks, closestMetalObject, new ArrayList<>()); + DrawHelper.drawBlocksAtPoint(viewModelStack, Color.BLUE, scanResult.foundBlocks, range, closestMetalObject, new ArrayList<>()); } } diff --git a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java index 1d76f3f7e..acdf5640b 100644 --- a/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java +++ b/src/api/java/leaf/cosmere/api/helpers/DrawHelper.java @@ -169,7 +169,7 @@ private static void squareTexVertex(VertexConsumer vertexConsumer, Matrix4f matr .endVertex(); } - public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, Vec3 highlightVector, ArrayList targetedClusterBlockList) + public static void drawBlocksAtPoint(PoseStack poseStack, Color color, List blockPosList, float range, Vec3 highlightVector, ArrayList targetedClusterBlockList) { poseStack.pushPose(); @@ -203,7 +203,9 @@ else if (blockPos.getCenter().equals(highlightVector)) } } - renderColoredBlock(poseStack, bufferIn, finalColor, blockPos); + float alphaPercent = (float) Math.max(0f, (1.0f - (view.distanceTo(blockPos.getCenter()) / range))); + + renderColoredBlock(poseStack, bufferIn, finalColor, alphaPercent, blockPos); } //we are meant to end batches... but if I don't, then the boxes draw over other boxes. @@ -213,7 +215,7 @@ else if (blockPos.getCenter().equals(highlightVector)) } - protected static void renderColoredBlock(PoseStack poseStack, VertexConsumer builder, Color color, BlockPos pos) + protected static void renderColoredBlock(PoseStack poseStack, VertexConsumer builder, Color color, float alphaPercent, BlockPos pos) { renderBoxSolid( poseStack, @@ -222,7 +224,7 @@ protected static void renderColoredBlock(PoseStack poseStack, VertexConsumer bui color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f, - 0.15f); + 0.15f * alphaPercent); } protected static void renderBoxSolid(PoseStack poseStack, VertexConsumer builder, BlockPos pos, float r, float g, float b, float alpha) From 0866f726c0286b7663cd730f5c628ad88a5d16e2 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 20 Jan 2025 17:14:06 +0100 Subject: [PATCH 0979/1090] [Allomancy] Metal clusters now give more push power than single blocks --- .../metalScanning/IronSteelLinesThread.java | 9 ++++++++ .../common/config/AllomancyServerConfig.java | 5 ++++ .../manifestation/AllomancyIronSteel.java | 23 +++++++++++-------- .../cap/entity/SpiritwebCapability.java | 1 + .../network/packets/SyncPushPullMessage.java | 2 ++ 5 files changed, 31 insertions(+), 9 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index b46fad9dd..261a1421f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -104,6 +104,15 @@ public ScanResult requestScanResult() } } + public int getWeight() + { + if (scanResult.hasTargetedCluster) + { + return scanResult.targetedCluster.getBlocks().size(); + } + return 1; + } + public void releaseScanResult() { lock.unlock(); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java index 6cd92cd1e..43c0d1b44 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java @@ -15,6 +15,8 @@ public class AllomancyServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue GOD_METAL_EAT_STRENGTH_MINIMUM; public final ForgeConfigSpec.DoubleValue IRON_STEEL_RANGE; + public final ForgeConfigSpec.DoubleValue PUSH_PULL_WEIGHT; + public final ForgeConfigSpec.DoubleValue MAX_PUSH_PULL_WEIGHT; // Boost amount for Duralumin and Nicrosil //public final ForgeConfigSpec.DoubleValue boostAmount; @@ -32,6 +34,9 @@ public class AllomancyServerConfig implements ICosmereConfig // max 10 might seem low, but the scanning thread chugs so hard at 10 that it's unusable and I doubt anyone will try it except for fun >> Gerbagel IRON_STEEL_RANGE = builder.comment("Multiplier for iron and steel range. At base strength (9) the range is 9 while burning and 18 while flaring").defineInRange("ironSteelRange", 1.0D, 0D, 10.0D); + PUSH_PULL_WEIGHT = builder.comment("Push/pull weight adjustment per block.").defineInRange("pushPullWeight", 0.05D, 0.01D, 100.0D); + MAX_PUSH_PULL_WEIGHT = builder.comment("Maximum pull/push weight adjustment. At 1.0 (default), push/pull power maxes out at 2 times (20 blocks)").defineInRange("maxPushPullWeight", 1.0D, 0D, 999999.0D); + builder.pop(); configSpec = builder.build(); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 5f7dee8a1..8ee27ece1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -20,7 +20,6 @@ import leaf.cosmere.common.network.packets.SyncPushPullMessage; import net.minecraft.client.Minecraft; import net.minecraft.core.BlockPos; -import net.minecraft.core.Vec3i; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.NbtOps; import net.minecraft.resources.ResourceLocation; @@ -238,6 +237,7 @@ private void performEffectClient(ISpiritweb cap) .resultOrPartial(CosmereAPI.logger::error) .ifPresent(inbt1 -> nbt.put(isPush ? "pushBlocks" : "pullBlocks", inbt1)); nbt.putIntArray(isPush ? "pushEntities" : "pullEntities", entities); + nbt.putInt("weight", IronSteelLinesThread.getInstance().getWeight()); Allomancy.packetHandler().sendToServer(new SyncPushPullMessage(nbt)); } } @@ -288,6 +288,7 @@ private void performEffectServer(ISpiritweb cap) private void pushpullEntities(SpiritwebCapability data) { List entities = isPush ? data.pushEntities : data.pullEntities; + int weight = data.pushPullWeight; for (int i = entities.size() - 1; i >= 0; i--) { int entityID = entities.get(i); @@ -307,14 +308,14 @@ private void pushpullEntities(SpiritwebCapability data) } else { - moveEntityTowards(itemEntity, dataLiving.blockPosition()); + moveEntityTowards(itemEntity, dataLiving.blockPosition(), weight); } } //affect both entities else if (targetEntity instanceof LivingEntity livingEntity) { - moveEntityTowards(livingEntity, dataLiving.blockPosition()); - moveEntityTowards(dataLiving, livingEntity.blockPosition()); + moveEntityTowards(livingEntity, dataLiving.blockPosition(), weight); + moveEntityTowards(dataLiving, livingEntity.blockPosition(), weight); dataLiving.hurtMarked = true; } //affect entity who is doing the push/pull @@ -322,7 +323,7 @@ else if (targetEntity instanceof LivingEntity livingEntity) { if (isPush) { - moveEntityTowards(dataLiving, targetEntity.blockPosition()); + moveEntityTowards(dataLiving, targetEntity.blockPosition(), weight); } //if not push, then check if we should pull coin projectiles back to player else if (dataLiving instanceof Player player && targetEntity instanceof CoinProjectile coinProjectile) @@ -340,14 +341,14 @@ else if (dataLiving instanceof Player player && targetEntity instanceof CoinProj } } - private void moveEntityTowards(Entity entity, BlockPos toMoveTo) + private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) { Vec3 blockCenter = toMoveTo.getCenter(); Vec3 direction = VectorHelper.getDirection( blockCenter, entity.blockPosition().getCenter(),//use entity block position, so we can do things like hover directly over a block more easily - (isPush ? -1f : 2f)); + (isPush ? -1f: 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vec3 normalize = direction.normalize(); @@ -355,10 +356,13 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo) double shortenFactor = isPush ? 0.2 : 0.4; Vec3 add = entity.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); + // cannot have flat multiplier; can get ridiculous + double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight-1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); + //get flung off rides entity.stopRiding(); //don't let the motion go crazy large - entity.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1)); + entity.setDeltaMovement(VectorHelper.ClampMagnitude(add, 1).multiply(adjustedWeight, adjustedWeight, adjustedWeight)); //hurt marked true means it will tell clients that they are moving. entity.hurtMarked = true; @@ -375,6 +379,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo) private void pushpullBlocks(SpiritwebCapability data) { List blocks = isPush ? data.pushBlocks : data.pullBlocks; + int weight = data.pushPullWeight; int blockListCount = blocks.size(); if (blockListCount == 0) @@ -396,7 +401,7 @@ private void pushpullBlocks(SpiritwebCapability data) double maxDistance = getRange(data); if (blockPos.closerThan(living.blockPosition(), maxDistance)) { - moveEntityTowards(living, blockPos); + moveEntityTowards(living, blockPos, weight); } else { diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index d37e55371..434342963 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -82,6 +82,7 @@ public class SpiritwebCapability implements ISpiritweb public List pullBlocks = new ArrayList<>(4); public List pullEntities = new ArrayList<>(4); + public int pushPullWeight = 1; private CompoundTag nbt; private final Map activeEffects = Maps.newHashMap(); diff --git a/src/main/java/leaf/cosmere/common/network/packets/SyncPushPullMessage.java b/src/main/java/leaf/cosmere/common/network/packets/SyncPushPullMessage.java index 14d284f66..42f485616 100644 --- a/src/main/java/leaf/cosmere/common/network/packets/SyncPushPullMessage.java +++ b/src/main/java/leaf/cosmere/common/network/packets/SyncPushPullMessage.java @@ -90,6 +90,8 @@ public void handle(NetworkEvent.Context context) spiritweb.pullEntities.add(id); } } + + spiritweb.pushPullWeight = data.getInt("weight"); })); } From 08f64b3722991cdbb5e8315821bfb030ce206507 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 20 Jan 2025 21:39:24 +0100 Subject: [PATCH 0980/1090] [Hemalurgy] Apply spiritweb integrity decrease on spike equip --- .../hemalurgy/common/items/IHemalurgicInfo.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java index bbd2496d7..d02048d54 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java @@ -13,6 +13,7 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.hemalurgy.common.config.HemalurgyConfigs; +import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -249,6 +250,18 @@ default Multimap getHemalurgicAttributes(Multimap< { UUID hemalurgicIdentity = getHemalurgicIdentity(stack); + if (hemalurgicIdentity != null) + { + // no matter what, spike reduces spiritweb integrity. Fixed value? Dynamic based on spike? + attributeModifiers.put(HemalurgyAttributes.SPIRITWEB_INTEGRITY.getAttribute(), + new AttributeModifier( + hemalurgicIdentity, + "Spiritweb Integrity", + -1, + AttributeModifier.Operation.ADDITION + )); + } + if (metalType == Metals.MetalType.ALUMINUM) { for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) From 8524c3f9972916fd6ab1d5a06e0a3b572a05507d Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sun, 26 Jan 2025 19:52:55 +0100 Subject: [PATCH 0981/1090] [Allomancy] Fixed a bug where brass and zinc threads would be null on switching from compounding to burning, fixes #144 --- .../allomancy/common/manifestation/AllomancyBrass.java | 9 +++++++-- .../allomancy/common/manifestation/AllomancyZinc.java | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java index 5e6d55f12..0973d9361 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java @@ -40,7 +40,7 @@ public void applyEffectTick(ISpiritweb data) { if (isActiveTick(data)) { - boolean isSingleTarget = AllomancyKeybindings.ALLOMANCY_SOOTHE.isDown() || (Keybindings.MANIFESTATION_USE_ACTIVE.isDown() && data.getSelectedManifestation().equals(getManifestation())); + boolean isSingleTarget = (AllomancyKeybindings.ALLOMANCY_SOOTHE.isDown() || (Keybindings.MANIFESTATION_USE_ACTIVE.isDown()) && data.getSelectedManifestation().equals(getManifestation())); int singleTargetEntityId = 0; if (isSingleTarget) @@ -65,7 +65,12 @@ private void performEffectServer(ISpiritweb data) { int mode = getMode(data); String uuid = data.getLiving().getStringUUID(); - boolean isSingleTarget = playerThreadMap.get(data.getLiving().getStringUUID()).isSingleTarget; + AllomancyBrass.BrassThread playerThread = playerThreadMap.get(data.getLiving().getStringUUID()); + boolean isSingleTarget = false; + if (playerThread != null) + { + isSingleTarget = playerThread.isSingleTarget; + } // data processing { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java index 31f9ada0e..dbb02a786 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyZinc.java @@ -65,8 +65,12 @@ private void performEffectServer(ISpiritweb data) { int mode = getMode(data); String uuid = data.getLiving().getStringUUID(); - - boolean isSingleTarget = playerThreadMap.get(data.getLiving().getStringUUID()).isSingleTarget; + AllomancyZinc.ZincThread playerThread = playerThreadMap.get(data.getLiving().getStringUUID()); + boolean isSingleTarget = false; + if (playerThread != null) + { + isSingleTarget = playerThread.isSingleTarget; + } // data processing { From 47dcc1197c989836cd17b48319255eb7aa7b1a40 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Tue, 28 Jan 2025 09:27:25 -0500 Subject: [PATCH 0982/1090] adds activator keybinds Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- src/api/java/leaf/cosmere/api/Constants.java | 26 +++++++++++++++++++ .../cosmere/client/ClientForgeEvents.java | 14 +++++++--- .../java/leaf/cosmere/client/Keybindings.java | 2 -- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 5346f6c0a..7d4f8a428 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -100,6 +100,32 @@ public static class Strings public static final String KEY_ALLOMANCY_SOOTHE = "key.cosmere.allomancy.soothe"; public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; + public static final String KEY_ALLOMANCY_IRON = "key.cosmere.allomancy.iron"; + public static final String KEY_ALLOMANCY_STEEL = "key.cosmere.allomancy.steel"; + public static final String KEY_ALLOMANCY_TIN = "key.cosmere.allomancy.tin"; + public static final String KEY_ALLOMANCY_PEWTER = "key.cosmere.allomancy.pewter"; + public static final String KEY_ALLOMANCY_ZINC = "key.cosmere.allomancy.zinc"; + public static final String KEY_ALLOMANCY_BRASS = "key.cosmere.allomancy.brass"; + public static final String KEY_ALLOMANCY_COPPER = "key.cosmere.allomancy.copper"; + public static final String KEY_ALLOMANCY_BRONZE = "key.cosmere.allomancy.bronze"; + public static final String KEY_ALLOMANCY_CADMIUM = "key.cosmere.allomancy.cadmium"; + public static final String KEY_ALLOMANCY_BENDALLOY = "key.cosmere.allomancy.bendalloy"; + public static final String KEY_ALLOMANCY_GOLD = "key.cosmere.allomancy.gold"; + public static final String KEY_ALLOMANCY_ELECTRUM = "key.cosmere.allomancy.electrum"; + public static final String KEY_ALLOMANCY_ALUMINUM = "key.cosmere.allomancy.aluminum"; + public static final String KEY_ALLOMANCY_DURRALUMIN = "key.cosmere.allomancy.duralumin"; + public static final String KEY_ALLOMANCY_CHROMIUM = "key.cosmere.allomancy.chromium"; + public static final String KEY_ALLOMANCY_NICROSIL = "key.cosmere.allomancy.nicrosil"; + public static final String KEY_ALLOMANCY_ATIUM = "key.cosmere.allomancy.atium"; + public static final String KEY_ALLOMANCY_MALATIUM = "key.cosmere.allomancy.malatium"; + + //keybind builder + public static final String KEY_MAIN = "key.cosmere."; + + public static final String KEY_ALLOMANCY = "allomancy."; + public static final String KEY_FERUCHEMY = "feruchemy."; + public static final String KEY_STORMLIGHT = "stormlight."; + public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 997cf0176..327b5119b 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -32,8 +32,6 @@ import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; -import javax.swing.text.JTextComponent; - @Mod.EventBusSubscriber(modid = Cosmere.MODID, value = Dist.CLIENT) public class ClientForgeEvents { @@ -74,8 +72,16 @@ public static void onKey(InputEvent.Key event) Manifestation selected = spiritweb.getSelectedManifestation(); if (isKeyPressed(event, Keybindings.MANIFESTATIONS_DEACTIVATE)) { - // just deactivate - Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); + //if crouching, only turn off. + if (Screen.hasShiftDown()) + { + Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); + } + //otherwise do a normal toggle + else + { + //todo decide if there is an activation state? + } } //check keybinds with modifiers first? diff --git a/src/main/java/leaf/cosmere/client/Keybindings.java b/src/main/java/leaf/cosmere/client/Keybindings.java index 1a24b3141..9a35aed49 100644 --- a/src/main/java/leaf/cosmere/client/Keybindings.java +++ b/src/main/java/leaf/cosmere/client/Keybindings.java @@ -56,6 +56,4 @@ public static KeyMapping createKeybinding(String description, KeyModifier keyMod { return new KeyMapping(description, KeyConflictContext.DEFAULT, keyModifier, InputConstants.Type.KEYSYM.getOrCreate(keyCode), category); } - - } From 4734b6f0c0ccfb0f185d0b53315b3f0970b0fa9f Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 4 Feb 2025 10:33:56 +1300 Subject: [PATCH 0983/1090] [Surgebinding] nightblood spoilers --- .../config/SurgebindingServerConfig.java | 5 +- .../common/items/HonorbladeItem.java | 8 +-- .../common/items/NightbloodItem.java | 51 +++++++++++++++++-- .../common/items/ShardbladeItem.java | 7 ++- 4 files changed, 59 insertions(+), 12 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java index a01004902..283c086bd 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.config; @@ -22,6 +22,7 @@ public class SurgebindingServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue PROGRESSION_BONEMEAL_COST; public final ForgeConfigSpec.IntValue PROGRESSION_HEAL_COST; public final ForgeConfigSpec.IntValue PROGRESSION_AGE_UP_COST; + public final ForgeConfigSpec.BooleanValue NIGHTBLOOD_SPOILERS; //public final ForgeConfigSpec.ConfigValue> FIRST_IDEALS; @@ -44,6 +45,8 @@ public class SurgebindingServerConfig implements ICosmereConfig PROGRESSION_HEAL_COST = builder.comment("How many points of stormlight per half a heart healed").defineInRange("progressionHealStormlightCost", 20, 1, 1000); PROGRESSION_AGE_UP_COST = builder.comment("How many points of stormlight per age up on a baby mob").defineInRange("progressionAgeUpCost", 50, 1, 1000); + NIGHTBLOOD_SPOILERS = builder.comment("Enable this to allow Nightblood to have certain feature, which is spoilers for WindAndTruth").define("nightbloodSpoilers", true); + final Predicate elementValidator = o -> o instanceof String; SECOND_IDEALS = builder.defineList( diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java index a34759658..fdfd54354 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/HonorbladeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -21,8 +21,6 @@ public class HonorbladeItem extends ShardbladeItem { public final Roshar.RadiantOrder radiantOrder; - private final int attackDamageIn; - private final float attackSpeedIn; /** * Modifiers applied when the item is in the mainhand of a user. copied from sword item @@ -38,8 +36,6 @@ public HonorbladeItem(Roshar.RadiantOrder gemstone, Tier tier, int attackDamageI { super(tier, attackDamageIn, attackSpeedIn, builderIn); this.radiantOrder = gemstone; - this.attackDamageIn = attackDamageIn; - this.attackSpeedIn = attackSpeedIn; } @@ -52,7 +48,7 @@ public Multimap getAttributeModifiers(EquipmentSlo if (attributeModifiers == null) { ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); - builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamageIn, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamage, AttributeModifier.Operation.ADDITION)); builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", attackSpeedIn, AttributeModifier.Operation.ADDITION)); builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getFirstSurge()).getAttribute(), new AttributeModifier(PRIMARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(radiantOrder.getSecondSurge()).getAttribute(), new AttributeModifier(SECONDARY_HONORBLADE_SURGE_UUID, "SurgeAttribute", 5, AttributeModifier.Operation.ADDITION)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java index 583ef5176..8a21976d7 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/NightbloodItem.java @@ -1,20 +1,33 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; +import com.google.common.collect.ImmutableMultimap; +import com.google.common.collect.Multimap; +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Roshar; +import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.registries.SurgebindingAttributes; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; +import java.util.UUID; + public class NightbloodItem extends ShardbladeItem { + private Multimap attributeModifiers = null; + protected static final UUID NIGHTBLOOD_SURGE_UUID = UUID.fromString("CB3F55D3-4865-4180-A497-9C13A33DB5CC"); + public NightbloodItem(Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) { super(tier, attackDamageIn, attackSpeedIn, builderIn); - - //todo spoilers! - //todo check a config for whether nightblood has talked to the other shardblades?e } @@ -22,4 +35,34 @@ public boolean canSummonDismiss(Player player) { return false; } + + /** + * Gets a map of item attribute modifiers, used by damage when used as melee weapon. + */ + @Override + public Multimap getAttributeModifiers(EquipmentSlot equipmentSlot, ItemStack stack) + { + if (attributeModifiers == null) + { + ImmutableMultimap.Builder builder = ImmutableMultimap.builder(); + builder.put(Attributes.ATTACK_DAMAGE, new AttributeModifier(BASE_ATTACK_DAMAGE_UUID, "Weapon modifier", attackDamage, AttributeModifier.Operation.ADDITION)); + builder.put(Attributes.ATTACK_SPEED, new AttributeModifier(BASE_ATTACK_SPEED_UUID, "Weapon modifier", attackSpeedIn, AttributeModifier.Operation.ADDITION)); + + if (SurgebindingConfigs.SERVER.NIGHTBLOOD_SPOILERS.get()) + { + for (Roshar.Surges surge : EnumUtils.SURGES) + { + builder.put(SurgebindingAttributes.SURGEBINDING_ATTRIBUTES.get(surge).getAttribute(), new AttributeModifier(NIGHTBLOOD_SURGE_UUID, "Nightblood", 5, AttributeModifier.Operation.ADDITION)); + } + } + + this.attributeModifiers = builder.build(); + } + + return switch (equipmentSlot) + { + case MAINHAND, OFFHAND -> this.attributeModifiers; + default -> super.getAttributeModifiers(equipmentSlot, stack); + }; + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java index 9db428248..d65522fa8 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2022 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -13,9 +13,14 @@ public class ShardbladeItem extends SwordItem { + protected final float attackDamage; + protected final float attackSpeedIn; + public ShardbladeItem(Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) { super(tier, attackDamageIn, attackSpeedIn, builderIn); + this.attackDamage = attackDamageIn + tier.getAttackDamageBonus(); + this.attackSpeedIn = attackSpeedIn; } @Override From e37c44449bb8e48a25c6ada39acf93fa2a16f47c Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 4 Feb 2025 16:23:28 +1300 Subject: [PATCH 0984/1090] [Surgebinding] breathe stormlight keybind --- src/api/java/leaf/cosmere/api/Constants.java | 3 +- .../assets/surgebinding/lang/en_us.json | 3 +- .../client/SurgebindingForgeClientEvents.java | 8 +- .../client/SurgebindingKeybindings.java | 8 +- .../network/SurgebindingPacketHandler.java | 4 +- .../network/packets/BreatheStormlight.java | 110 ++++++++++++++++++ 6 files changed, 129 insertions(+), 7 deletions(-) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 87cf381a8..a06b120ce 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 10 - 2024 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.api; @@ -96,6 +96,7 @@ public static class Strings public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; + public static final String KEY_BREATHE_STORMLIGHT = "key.cosmere.stormlight.breathe_stormlight"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json index 4b3a79171..24bf862be 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json @@ -107,5 +107,6 @@ "manifestation.surgebinding.transformation.description": "Needs description", "manifestation.surgebinding.transportation": "Transportation", "manifestation.surgebinding.transportation.description": "Needs description", - "tabs.surgebinding.items": "Surgebinding" + "tabs.surgebinding.items": "Surgebinding", + "keys.surgebinding.main": "Surgebinding" } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java index 6e78e5637..22535c75f 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java @@ -1,11 +1,12 @@ /* - * File updated ~ 17 - 11 - 2023 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -35,6 +36,11 @@ public static void onKey(InputEvent.Key event) { Surgebinding.packetHandler().sendToServer(new SummonShardblade()); } + + if (isKeyPressed(event, SurgebindingKeybindings.BREATHE_STORMLIGHT)) + { + Surgebinding.packetHandler().sendToServer(new BreatheStormlight()); + } }); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index 828c4abb7..0e395f8b1 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -1,5 +1,5 @@ /* - * File updated ~ 2 - 11 - 2022 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client; @@ -13,7 +13,7 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import org.lwjgl.glfw.GLFW; -import static leaf.cosmere.api.Constants.Strings.KEYS_CATEGORY; +import static leaf.cosmere.api.Constants.Strings.KEY_BREATHE_STORMLIGHT; import static leaf.cosmere.api.Constants.Strings.KEY_SHARDBLADE; // Really only has its own file to more nicely reference keybindings. @@ -22,11 +22,13 @@ public class SurgebindingKeybindings { public static KeyMapping SHARDBLADE; + public static KeyMapping BREATHE_STORMLIGHT; @SubscribeEvent public static void register(RegisterKeyMappingsEvent event) { - event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, KEYS_CATEGORY)); + event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, "keys.surgebinding.main")); + event.register(BREATHE_STORMLIGHT = new KeyMapping(KEY_BREATHE_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java index 383e9c27a..ab6d0ab67 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java @@ -1,11 +1,12 @@ /* - * File updated ~ 10 - 10 - 2022 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.network; import leaf.cosmere.common.network.BasePacketHandler; import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraftforge.network.simple.SimpleChannel; @@ -23,6 +24,7 @@ protected SimpleChannel getChannel() public void initialize() { registerClientToServer(SummonShardblade.class, SummonShardblade::new); + registerClientToServer(BreatheStormlight.class, BreatheStormlight::new); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java new file mode 100644 index 000000000..2212af1a6 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java @@ -0,0 +1,110 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.network.packets; + +import com.google.common.collect.Iterables; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.charge.IChargeable; +import leaf.cosmere.common.charge.ItemChargeHelper; +import leaf.cosmere.common.network.ICosmerePacket; +import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; +import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.items.GemstoneItem; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent; + +import java.util.List; +import java.util.function.Predicate; + +public class BreatheStormlight implements ICosmerePacket +{ + public static final Predicate SUPPORTED = (itemStack) -> + { + return (itemStack.getItem() instanceof GemstoneItem gemstoneItem) + //&& containsMetal + //&& !isUncommonMetal + ; + }; + + public BreatheStormlight() + { + } + + public BreatheStormlight(FriendlyByteBuf buffer) + { + } + + @Override + public void handle(NetworkEvent.Context context) + { + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(cap); + + if (ssm != null) + { + if (ssm.isHerald()) + { + //heralds had a direct line to honor's investiture + ssm.setStormlight(SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); + } + else if (ssm.isOathed()) + { + int stormlight = ssm.getStormlight(); + int remainingRequestable = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get() - stormlight; + int requestedSoFar = 0; + + List items = ItemChargeHelper.getChargeItems(sender); + List acc = ItemChargeHelper.getChargeCurios(sender); + + //todo replace request charge system + + items.removeIf((itemStack) -> !SUPPORTED.test(itemStack)); + acc.removeIf((itemStack) -> !SUPPORTED.test(itemStack)); + + + for (ItemStack stackInSlot : Iterables.concat(items, acc)) + { + if (remainingRequestable <= 0) + { + break; + } + + if (stackInSlot.getItem() instanceof IChargeable chargeable) + { + int charge = chargeable.getCharge(stackInSlot); + int maxCharge = chargeable.getMaxCharge(stackInSlot); + int chargeToRequest = Math.min(remainingRequestable, maxCharge - charge); + + if (chargeToRequest > 0) + { + chargeable.setCharge(stackInSlot, charge + chargeToRequest); + remainingRequestable -= chargeToRequest; + requestedSoFar += chargeToRequest; + } + } + } + + ssm.adjustStormlight(requestedSoFar, true); + } + } + + })); + context.setPacketHandled(true); + } + + + @Override + public void encode(FriendlyByteBuf buf) + { + + } + +} From 66733302d66e3c8f1d8864b6b6e2a31f21253f41 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 4 Feb 2025 16:23:48 +1300 Subject: [PATCH 0985/1090] [Surgebinding] I accept this journey --- .../surgebinding/common/Surgebinding.java | 4 +- .../SurgebindingSpiritwebSubmodule.java | 86 ++++++++++++++----- .../common/commands/SurgebindingCommands.java | 23 +++++ .../arguments/RadiantOrderArgumentType.java | 77 +++++++++++++++++ .../commands/subcommands/HeraldCommand.java | 84 ++++++++++++++++++ .../SurgebindingForgeEventsHandler.java | 10 ++- .../registries/SurgebindingArgumentTypes.java | 24 ++++++ 7 files changed, 283 insertions(+), 25 deletions(-) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/SurgebindingCommands.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/arguments/RadiantOrderArgumentType.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingArgumentTypes.java diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java index be2e2f9d7..ac8f72055 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/Surgebinding.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 10 - 2024 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common; @@ -61,6 +61,8 @@ public Surgebinding() SurgebindingFeatures.PLACED_FEATURES.register(modBus); SurgebindingCreativeTabs.CREATIVE_TABS.register(modBus); + SurgebindingArgumentTypes.ARGUMENT_TYPE_INFOS.register(modBus); + SurgebindingDimensions.register(); versionNumber = new Version(ModLoadingContext.get().getActiveContainer()); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index bf0834aca..e5a7f9235 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -6,6 +6,7 @@ import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Roshar; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.surgebinding.common.capabilities.ideals.IdealsManager; @@ -14,6 +15,7 @@ import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; @@ -30,11 +32,60 @@ public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule private int stormlightStored = 0; + private Roshar.RadiantOrder heraldOrder = null; + //a little ew, I'd rather this in an enum utils, but it's the only place that needs it public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); IdealsManager idealsManager = new IdealsManager(); private ISpiritweb spiritweb; + public static SurgebindingSpiritwebSubmodule getSubmodule(ISpiritweb data) + { + return (SurgebindingSpiritwebSubmodule) data.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); + } + + public boolean isHerald() + { + return heraldOrder != null; + } + + public boolean isOathed() + { + //boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); + return idealsManager.getOrder() != null; + } + + @Override + public void deserialize(ISpiritweb spiritweb) + { + this.spiritweb = spiritweb; + final CompoundTag compoundTag = spiritweb.getCompoundTag(); + stormlightStored = compoundTag.getInt("stored_stormlight"); + idealsManager.deserialize(spiritweb); + + this.heraldOrder = compoundTag.contains("herald") + ? Roshar.RadiantOrder.valueOf(compoundTag.getInt("herald")).orElse(null) + : null; + } + + @Override + public void serialize(ISpiritweb spiritweb) + { + final CompoundTag compoundTag = spiritweb.getCompoundTag(); + + compoundTag.putInt("stored_stormlight", stormlightStored); + idealsManager.serialize(spiritweb); + + if (heraldOrder != null) + { + compoundTag.putInt("herald", heraldOrder.getID()); + } + else if (compoundTag.contains("herald")) + { + compoundTag.remove("herald"); + } + } + @Override public void tickServer(ISpiritweb spiritweb) @@ -42,11 +93,8 @@ public void tickServer(ISpiritweb spiritweb) final LivingEntity livingEntity = spiritweb.getLiving(); final boolean surgebindingActiveTick = (livingEntity.tickCount + Manifestations.ManifestationTypes.SURGEBINDING.getID()) % 20 == 0; - //boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); - boolean isOathed = idealsManager.getOrder() != null; - //tick stormlight - if (isOathed) + if (isOathed()) { if (livingEntity.level().isThundering() && livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) @@ -147,24 +195,6 @@ else if (livingEntity.isUnderWater()) } } - @Override - public void deserialize(ISpiritweb spiritweb) - { - this.spiritweb = spiritweb; - final CompoundTag spiritwebCompoundTag = spiritweb.getCompoundTag(); - stormlightStored = spiritwebCompoundTag.getInt("stored_stormlight"); - idealsManager.deserialize(spiritweb); - } - - @Override - public void serialize(ISpiritweb spiritweb) - { - final CompoundTag compoundTag = spiritweb.getCompoundTag(); - - compoundTag.putInt("stored_stormlight", stormlightStored); - idealsManager.serialize(spiritweb); - } - public int getStormlight() { return stormlightStored; @@ -179,7 +209,7 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) { if (doAdjust) { - stormlightStored = newSLValue; + stormlightStored = Mth.clamp(newSLValue, 0, SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); } return true; @@ -188,8 +218,18 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) return false; } + public void setStormlight(int amount) + { + stormlightStored = Mth.clamp(amount, 0, SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); + } + public void onChatMessageReceived(ServerChatEvent event) { idealsManager.onChatMessageReceived(event); } + + public void setHerald(Roshar.RadiantOrder order) + { + heraldOrder = order; + } } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/SurgebindingCommands.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/SurgebindingCommands.java new file mode 100644 index 000000000..b1e9fb543 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/SurgebindingCommands.java @@ -0,0 +1,23 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.commands; + +import com.mojang.brigadier.CommandDispatcher; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.surgebinding.common.commands.subcommands.HeraldCommand; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; + + +public class SurgebindingCommands +{ + + public static void register(CommandDispatcher dispatcher) + { + dispatcher.register(Commands.literal(Cosmere.MODID) + .then(HeraldCommand.register(dispatcher)) + ); + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/arguments/RadiantOrderArgumentType.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/arguments/RadiantOrderArgumentType.java new file mode 100644 index 000000000..a70d94ddb --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/arguments/RadiantOrderArgumentType.java @@ -0,0 +1,77 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.commands.arguments; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Roshar; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Locale; +import java.util.concurrent.CompletableFuture; + +public class RadiantOrderArgumentType implements ArgumentType +{ + private static final Collection EXAMPLES = Arrays.stream(Roshar.RadiantOrder.values()).map(Roshar.RadiantOrder::getName).toList(); + + @Override + public Collection getExamples() + { + return EXAMPLES; + } + + public static final DynamicCommandExceptionType INVALID_ORDER_EXCEPTION = + new DynamicCommandExceptionType((order) -> + Component.translatable("argument.surgebinding.order.invalid", order)); + + public static RadiantOrderArgumentType createArgument() + { + return new RadiantOrderArgumentType(); + } + + @Override + public Roshar.RadiantOrder parse(StringReader reader) throws CommandSyntaxException + { + final String readerRead = reader.readUnquotedString().toUpperCase(Locale.ROOT); + + try + { + return Roshar.RadiantOrder.valueOf(readerRead); + } + catch (IllegalArgumentException e) + { + throw INVALID_ORDER_EXCEPTION.create(readerRead); + } + } + + @Override + public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) + { + return context.getSource() instanceof SharedSuggestionProvider + ? SharedSuggestionProvider.suggest(Collections.emptyList(), addSuggestions(builder)) + : Suggestions.empty(); + } + + public static SuggestionsBuilder addSuggestions(SuggestionsBuilder builder) + { + for (Roshar.RadiantOrder order : EnumUtils.RADIANT_ORDERS) + { + builder.suggest(order.getName()); + } + + builder.buildFuture(); + return builder; + } +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java new file mode 100644 index 000000000..3684cfeb8 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java @@ -0,0 +1,84 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.commands.subcommands; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import leaf.cosmere.api.Roshar; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.commands.subcommands.ModCommand; +import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; +import leaf.cosmere.surgebinding.common.commands.arguments.RadiantOrderArgumentType; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.commands.arguments.EntityArgument; +import net.minecraft.server.level.ServerPlayer; + +import java.util.Collection; + +public class HeraldCommand extends ModCommand +{ + public static ArgumentBuilder register(CommandDispatcher dispatcher) + { + return Commands.literal("herald") + .requires(context -> context.hasPermission(2)) + .then(Commands.literal("make") + .then(Commands.argument("order", RadiantOrderArgumentType.createArgument()) + .executes(HeraldCommand::makeHerald) + .then(Commands.argument("target", EntityArgument.players()) + .executes(HeraldCommand::makeHerald)))) + .then(Commands.literal("remove") + .executes(HeraldCommand::removeHerald) + .then(Commands.argument("target", EntityArgument.players()) + .executes(HeraldCommand::removeHerald))); + } + + private static int makeHerald(CommandContext context) throws CommandSyntaxException + { + Collection players = getPlayers(context, 4); + + Roshar.RadiantOrder order = context.getArgument("order", Roshar.RadiantOrder.class); + + for (ServerPlayer player : players) + { + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(spiritweb); + ssm.setHerald(order); + + spiritweb.syncToClients(player); + }); + } + + return SINGLE_SUCCESS; + } + + private static int removeHerald(CommandContext context) throws CommandSyntaxException + { + Collection players = getPlayers(context, 4); + + for (ServerPlayer player : players) + { + SpiritwebCapability.get(player).ifPresent((spiritweb) -> + { + SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(spiritweb); + ssm.setHerald(null); + + spiritweb.syncToClients(player); + }); + } + + return SINGLE_SUCCESS; + } + + @Override + public int run(CommandContext context) throws CommandSyntaxException + { + return SINGLE_SUCCESS; + } + +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java index de454426b..47c3c9703 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/eventHandlers/SurgebindingForgeEventsHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.eventHandlers; @@ -9,9 +9,11 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; +import leaf.cosmere.surgebinding.common.commands.SurgebindingCommands; import leaf.cosmere.surgebinding.common.manifestation.SurgeGravitation; import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.event.RegisterCommandsEvent; import net.minecraftforge.event.ServerChatEvent; import net.minecraftforge.event.entity.living.LivingAttackEvent; import net.minecraftforge.event.entity.player.PlayerInteractEvent; @@ -51,6 +53,12 @@ public static void onBlockInteract(PlayerInteractEvent.RightClickBlock event) SurgeProgression.onBlockInteract(event); } + @SubscribeEvent + public static void registerCommands(RegisterCommandsEvent event) + { + SurgebindingCommands.register(event.getDispatcher()); + } + @SubscribeEvent public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingArgumentTypes.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingArgumentTypes.java new file mode 100644 index 000000000..b045cd6e3 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingArgumentTypes.java @@ -0,0 +1,24 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.registries; + +import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.commands.arguments.RadiantOrderArgumentType; +import net.minecraft.commands.synchronization.ArgumentTypeInfo; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class SurgebindingArgumentTypes +{ + public static final DeferredRegister> ARGUMENT_TYPE_INFOS = DeferredRegister.create(ForgeRegistries.COMMAND_ARGUMENT_TYPES, Surgebinding.MODID); + + public static final RegistryObject> RADIANT_ORDER_ARGUMENT_TYPE = ARGUMENT_TYPE_INFOS.register("radiant_order_argument_type", + () -> ArgumentTypeInfos.registerByClass( + RadiantOrderArgumentType.class, + SingletonArgumentInfo.contextFree(RadiantOrderArgumentType::createArgument))); +} From a74ca257f478c03ce8cb2b2770d03f968af32e9b Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 5 Feb 2025 10:23:03 +1300 Subject: [PATCH 0986/1090] [Project] add code style file --- .editorconfig | 699 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 699 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..2f15b9132 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,699 @@ +[*] +charset = utf-8 +end_of_line = crlf +indent_size = 4 +indent_style = space +insert_final_newline = false +max_line_length = 120 +tab_width = 4 +ij_continuation_indent_size = 8 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = true +ij_smart_tabs = false +ij_visual_guides = +ij_wrap_on_typing = false + +[*.java] +indent_style = tab +ij_smart_tabs = true +ij_java_align_consecutive_assignments = false +ij_java_align_consecutive_variable_declarations = false +ij_java_align_group_field_declarations = false +ij_java_align_multiline_annotation_parameters = false +ij_java_align_multiline_array_initializer_expression = false +ij_java_align_multiline_assignment = false +ij_java_align_multiline_binary_operation = false +ij_java_align_multiline_chained_methods = false +ij_java_align_multiline_deconstruction_list_components = true +ij_java_align_multiline_extends_list = false +ij_java_align_multiline_for = true +ij_java_align_multiline_method_parentheses = false +ij_java_align_multiline_parameters = true +ij_java_align_multiline_parameters_in_calls = false +ij_java_align_multiline_parenthesized_expression = false +ij_java_align_multiline_records = true +ij_java_align_multiline_resources = true +ij_java_align_multiline_ternary_operation = true +ij_java_align_multiline_text_blocks = false +ij_java_align_multiline_throws_list = false +ij_java_align_subsequent_simple_methods = false +ij_java_align_throws_keyword = false +ij_java_align_types_in_multi_catch = true +ij_java_annotation_parameter_wrap = off +ij_java_array_initializer_new_line_after_left_brace = false +ij_java_array_initializer_right_brace_on_new_line = false +ij_java_array_initializer_wrap = off +ij_java_assert_statement_colon_on_next_line = false +ij_java_assert_statement_wrap = off +ij_java_assignment_wrap = off +ij_java_binary_operation_sign_on_next_line = false +ij_java_binary_operation_wrap = off +ij_java_blank_lines_after_anonymous_class_header = 0 +ij_java_blank_lines_after_class_header = 0 +ij_java_blank_lines_after_imports = 1 +ij_java_blank_lines_after_package = 1 +ij_java_blank_lines_around_class = 1 +ij_java_blank_lines_around_field = 0 +ij_java_blank_lines_around_field_in_interface = 0 +ij_java_blank_lines_around_initializer = 1 +ij_java_blank_lines_around_method = 1 +ij_java_blank_lines_around_method_in_interface = 1 +ij_java_blank_lines_before_class_end = 0 +ij_java_blank_lines_before_imports = 1 +ij_java_blank_lines_before_method_body = 0 +ij_java_blank_lines_before_package = 0 +ij_java_block_brace_style = next_line +ij_java_block_comment_add_space = false +ij_java_block_comment_at_first_column = true +ij_java_builder_methods = +ij_java_call_parameters_new_line_after_left_paren = false +ij_java_call_parameters_right_paren_on_new_line = false +ij_java_call_parameters_wrap = off +ij_java_case_statement_on_separate_line = true +ij_java_catch_on_new_line = true +ij_java_class_annotation_wrap = split_into_lines +ij_java_class_brace_style = next_line +ij_java_class_count_to_use_import_on_demand = 5 +ij_java_class_names_in_javadoc = 1 +ij_java_deconstruction_list_wrap = normal +ij_java_do_not_indent_top_level_class_members = false +ij_java_do_not_wrap_after_single_annotation = false +ij_java_do_not_wrap_after_single_annotation_in_parameter = false +ij_java_do_while_brace_force = never +ij_java_doc_add_blank_line_after_description = true +ij_java_doc_add_blank_line_after_param_comments = false +ij_java_doc_add_blank_line_after_return = false +ij_java_doc_add_p_tag_on_empty_lines = true +ij_java_doc_align_exception_comments = true +ij_java_doc_align_param_comments = true +ij_java_doc_do_not_wrap_if_one_line = false +ij_java_doc_enable_formatting = true +ij_java_doc_enable_leading_asterisks = true +ij_java_doc_indent_on_continuation = false +ij_java_doc_keep_empty_lines = true +ij_java_doc_keep_empty_parameter_tag = true +ij_java_doc_keep_empty_return_tag = true +ij_java_doc_keep_empty_throws_tag = true +ij_java_doc_keep_invalid_tags = true +ij_java_doc_param_description_on_new_line = false +ij_java_doc_preserve_line_breaks = false +ij_java_doc_use_throws_not_exception_tag = true +ij_java_else_on_new_line = true +ij_java_enum_constants_wrap = split_into_lines +ij_java_extends_keyword_wrap = off +ij_java_extends_list_wrap = off +ij_java_field_annotation_wrap = split_into_lines +ij_java_field_name_prefix = +ij_java_field_name_suffix = +ij_java_finally_on_new_line = true +ij_java_for_brace_force = never +ij_java_for_statement_new_line_after_left_paren = false +ij_java_for_statement_right_paren_on_new_line = false +ij_java_for_statement_wrap = off +ij_java_generate_final_locals = false +ij_java_generate_final_parameters = false +ij_java_if_brace_force = always +ij_java_imports_layout = *,|,javax.**,java.**,|,$* +ij_java_indent_case_from_switch = true +ij_java_insert_inner_class_imports = false +ij_java_insert_override_annotation = true +ij_java_keep_blank_lines_before_right_brace = 2 +ij_java_keep_blank_lines_between_package_declaration_and_header = 2 +ij_java_keep_blank_lines_in_code = 2 +ij_java_keep_blank_lines_in_declarations = 2 +ij_java_keep_builder_methods_indents = false +ij_java_keep_control_statement_in_one_line = true +ij_java_keep_first_column_comment = true +ij_java_keep_indents_on_empty_lines = false +ij_java_keep_line_breaks = true +ij_java_keep_multiple_expressions_in_one_line = false +ij_java_keep_simple_blocks_in_one_line = false +ij_java_keep_simple_classes_in_one_line = false +ij_java_keep_simple_lambdas_in_one_line = false +ij_java_keep_simple_methods_in_one_line = false +ij_java_label_indent_absolute = false +ij_java_label_indent_size = 0 +ij_java_lambda_brace_style = next_line +ij_java_layout_static_imports_separately = true +ij_java_line_comment_add_space = false +ij_java_line_comment_add_space_on_reformat = false +ij_java_line_comment_at_first_column = true +ij_java_local_variable_name_prefix = +ij_java_local_variable_name_suffix = +ij_java_method_annotation_wrap = split_into_lines +ij_java_method_brace_style = next_line +ij_java_method_call_chain_wrap = off +ij_java_method_parameters_new_line_after_left_paren = false +ij_java_method_parameters_right_paren_on_new_line = false +ij_java_method_parameters_wrap = off +ij_java_modifier_list_wrap = false +ij_java_multi_catch_types_wrap = normal +ij_java_names_count_to_use_import_on_demand = 3 +ij_java_new_line_after_lparen_in_annotation = false +ij_java_new_line_after_lparen_in_deconstruction_pattern = true +ij_java_new_line_after_lparen_in_record_header = false +ij_java_packages_to_use_import_on_demand = java.awt.*,javax.swing.* +ij_java_parameter_annotation_wrap = off +ij_java_parameter_name_prefix = +ij_java_parameter_name_suffix = +ij_java_parentheses_expression_new_line_after_left_paren = false +ij_java_parentheses_expression_right_paren_on_new_line = false +ij_java_place_assignment_sign_on_next_line = false +ij_java_prefer_longer_names = true +ij_java_prefer_parameters_wrap = false +ij_java_record_components_wrap = normal +ij_java_repeat_annotations = +ij_java_repeat_synchronized = true +ij_java_replace_instanceof_and_cast = false +ij_java_replace_null_check = true +ij_java_replace_sum_lambda_with_method_ref = true +ij_java_resource_list_new_line_after_left_paren = false +ij_java_resource_list_right_paren_on_new_line = false +ij_java_resource_list_wrap = off +ij_java_rparen_on_new_line_in_annotation = false +ij_java_rparen_on_new_line_in_deconstruction_pattern = true +ij_java_rparen_on_new_line_in_record_header = false +ij_java_space_after_closing_angle_bracket_in_type_argument = false +ij_java_space_after_colon = true +ij_java_space_after_comma = true +ij_java_space_after_comma_in_type_arguments = true +ij_java_space_after_for_semicolon = true +ij_java_space_after_quest = true +ij_java_space_after_type_cast = true +ij_java_space_before_annotation_array_initializer_left_brace = false +ij_java_space_before_annotation_parameter_list = false +ij_java_space_before_array_initializer_left_brace = false +ij_java_space_before_catch_keyword = true +ij_java_space_before_catch_left_brace = true +ij_java_space_before_catch_parentheses = true +ij_java_space_before_class_left_brace = true +ij_java_space_before_colon = true +ij_java_space_before_colon_in_foreach = true +ij_java_space_before_comma = false +ij_java_space_before_deconstruction_list = false +ij_java_space_before_do_left_brace = true +ij_java_space_before_else_keyword = true +ij_java_space_before_else_left_brace = true +ij_java_space_before_finally_keyword = true +ij_java_space_before_finally_left_brace = true +ij_java_space_before_for_left_brace = true +ij_java_space_before_for_parentheses = true +ij_java_space_before_for_semicolon = false +ij_java_space_before_if_left_brace = true +ij_java_space_before_if_parentheses = true +ij_java_space_before_method_call_parentheses = false +ij_java_space_before_method_left_brace = true +ij_java_space_before_method_parentheses = false +ij_java_space_before_opening_angle_bracket_in_type_parameter = false +ij_java_space_before_quest = true +ij_java_space_before_switch_left_brace = true +ij_java_space_before_switch_parentheses = true +ij_java_space_before_synchronized_left_brace = true +ij_java_space_before_synchronized_parentheses = true +ij_java_space_before_try_left_brace = true +ij_java_space_before_try_parentheses = true +ij_java_space_before_type_parameter_list = false +ij_java_space_before_while_keyword = true +ij_java_space_before_while_left_brace = true +ij_java_space_before_while_parentheses = true +ij_java_space_inside_one_line_enum_braces = false +ij_java_space_within_empty_array_initializer_braces = false +ij_java_space_within_empty_method_call_parentheses = false +ij_java_space_within_empty_method_parentheses = false +ij_java_spaces_around_additive_operators = true +ij_java_spaces_around_annotation_eq = true +ij_java_spaces_around_assignment_operators = true +ij_java_spaces_around_bitwise_operators = true +ij_java_spaces_around_equality_operators = true +ij_java_spaces_around_lambda_arrow = true +ij_java_spaces_around_logical_operators = true +ij_java_spaces_around_method_ref_dbl_colon = false +ij_java_spaces_around_multiplicative_operators = true +ij_java_spaces_around_relational_operators = true +ij_java_spaces_around_shift_operators = true +ij_java_spaces_around_type_bounds_in_type_parameters = true +ij_java_spaces_around_unary_operator = false +ij_java_spaces_within_angle_brackets = false +ij_java_spaces_within_annotation_parentheses = false +ij_java_spaces_within_array_initializer_braces = false +ij_java_spaces_within_braces = false +ij_java_spaces_within_brackets = false +ij_java_spaces_within_cast_parentheses = false +ij_java_spaces_within_catch_parentheses = false +ij_java_spaces_within_deconstruction_list = false +ij_java_spaces_within_for_parentheses = false +ij_java_spaces_within_if_parentheses = false +ij_java_spaces_within_method_call_parentheses = false +ij_java_spaces_within_method_parentheses = false +ij_java_spaces_within_parentheses = false +ij_java_spaces_within_record_header = false +ij_java_spaces_within_switch_parentheses = false +ij_java_spaces_within_synchronized_parentheses = false +ij_java_spaces_within_try_parentheses = false +ij_java_spaces_within_while_parentheses = false +ij_java_special_else_if_treatment = true +ij_java_static_field_name_prefix = +ij_java_static_field_name_suffix = +ij_java_subclass_name_prefix = +ij_java_subclass_name_suffix = Impl +ij_java_ternary_operation_signs_on_next_line = true +ij_java_ternary_operation_wrap = normal +ij_java_test_name_prefix = +ij_java_test_name_suffix = Test +ij_java_throws_keyword_wrap = off +ij_java_throws_list_wrap = off +ij_java_use_external_annotations = false +ij_java_use_fq_class_names = false +ij_java_use_relative_indents = false +ij_java_use_single_class_imports = true +ij_java_variable_annotation_wrap = off +ij_java_visibility = public +ij_java_while_brace_force = never +ij_java_while_on_new_line = true +ij_java_wrap_comments = false +ij_java_wrap_first_method_in_call_chain = false +ij_java_wrap_long_lines = false + +[*.nbtt] +indent_style = tab +max_line_length = 150 +ij_continuation_indent_size = 4 +ij_nbtt_keep_indents_on_empty_lines = false +ij_nbtt_space_after_colon = true +ij_nbtt_space_after_comma = true +ij_nbtt_space_before_colon = true +ij_nbtt_space_before_comma = false +ij_nbtt_spaces_within_brackets = false +ij_nbtt_spaces_within_parentheses = false + +[*.properties] +ij_properties_align_group_field_declarations = false +ij_properties_keep_blank_lines = false +ij_properties_key_value_delimiter = equals +ij_properties_spaces_around_key_value_delimiter = false + +[.editorconfig] +ij_editorconfig_align_group_field_declarations = false +ij_editorconfig_space_after_colon = false +ij_editorconfig_space_after_comma = true +ij_editorconfig_space_before_colon = false +ij_editorconfig_space_before_comma = false +ij_editorconfig_spaces_around_assignment_operators = true + +[{*.ant,*.fxml,*.jhm,*.jnlp,*.jrxml,*.jspx,*.lsx,*.pom,*.rng,*.tagx,*.tld,*.wsdl,*.xml,*.xsd,*.xsl,*.xslt,*.xul}] +ij_xml_align_attributes = true +ij_xml_align_text = false +ij_xml_attribute_wrap = normal +ij_xml_block_comment_add_space = false +ij_xml_block_comment_at_first_column = true +ij_xml_keep_blank_lines = 2 +ij_xml_keep_indents_on_empty_lines = false +ij_xml_keep_line_breaks = true +ij_xml_keep_line_breaks_in_text = true +ij_xml_keep_whitespaces = false +ij_xml_keep_whitespaces_around_cdata = preserve +ij_xml_keep_whitespaces_inside_cdata = false +ij_xml_line_comment_at_first_column = true +ij_xml_space_after_tag_name = false +ij_xml_space_around_equals_in_attribute = false +ij_xml_space_inside_empty_tag = false +ij_xml_text_wrap = normal +ij_xml_use_custom_settings = false + +[{*.bash,*.sh,*.zsh}] +indent_size = 2 +tab_width = 2 +ij_shell_binary_ops_start_line = false +ij_shell_keep_column_alignment_padding = false +ij_shell_minify_program = false +ij_shell_redirect_followed_by_space = false +ij_shell_switch_cases_indented = false +ij_shell_use_unix_line_separator = true + +[{*.gant,*.groovy,*.gy}] +indent_style = tab +ij_groovy_align_group_field_declarations = false +ij_groovy_align_multiline_array_initializer_expression = false +ij_groovy_align_multiline_assignment = false +ij_groovy_align_multiline_binary_operation = false +ij_groovy_align_multiline_chained_methods = false +ij_groovy_align_multiline_extends_list = false +ij_groovy_align_multiline_for = true +ij_groovy_align_multiline_list_or_map = true +ij_groovy_align_multiline_method_parentheses = false +ij_groovy_align_multiline_parameters = true +ij_groovy_align_multiline_parameters_in_calls = false +ij_groovy_align_multiline_resources = true +ij_groovy_align_multiline_ternary_operation = false +ij_groovy_align_multiline_throws_list = false +ij_groovy_align_named_args_in_map = true +ij_groovy_align_throws_keyword = false +ij_groovy_array_initializer_new_line_after_left_brace = false +ij_groovy_array_initializer_right_brace_on_new_line = false +ij_groovy_array_initializer_wrap = off +ij_groovy_assert_statement_wrap = off +ij_groovy_assignment_wrap = off +ij_groovy_binary_operation_wrap = off +ij_groovy_blank_lines_after_class_header = 0 +ij_groovy_blank_lines_after_imports = 1 +ij_groovy_blank_lines_after_package = 1 +ij_groovy_blank_lines_around_class = 1 +ij_groovy_blank_lines_around_field = 0 +ij_groovy_blank_lines_around_field_in_interface = 0 +ij_groovy_blank_lines_around_method = 1 +ij_groovy_blank_lines_around_method_in_interface = 1 +ij_groovy_blank_lines_before_imports = 1 +ij_groovy_blank_lines_before_method_body = 0 +ij_groovy_blank_lines_before_package = 0 +ij_groovy_block_brace_style = end_of_line +ij_groovy_block_comment_add_space = false +ij_groovy_block_comment_at_first_column = true +ij_groovy_call_parameters_new_line_after_left_paren = false +ij_groovy_call_parameters_right_paren_on_new_line = false +ij_groovy_call_parameters_wrap = off +ij_groovy_catch_on_new_line = false +ij_groovy_class_annotation_wrap = split_into_lines +ij_groovy_class_brace_style = next_line +ij_groovy_class_count_to_use_import_on_demand = 5 +ij_groovy_do_while_brace_force = never +ij_groovy_else_on_new_line = false +ij_groovy_enable_groovydoc_formatting = true +ij_groovy_enum_constants_wrap = off +ij_groovy_extends_keyword_wrap = off +ij_groovy_extends_list_wrap = off +ij_groovy_field_annotation_wrap = split_into_lines +ij_groovy_finally_on_new_line = false +ij_groovy_for_brace_force = never +ij_groovy_for_statement_new_line_after_left_paren = false +ij_groovy_for_statement_right_paren_on_new_line = false +ij_groovy_for_statement_wrap = off +ij_groovy_ginq_general_clause_wrap_policy = 2 +ij_groovy_ginq_having_wrap_policy = 1 +ij_groovy_ginq_indent_having_clause = true +ij_groovy_ginq_indent_on_clause = true +ij_groovy_ginq_on_wrap_policy = 1 +ij_groovy_ginq_space_after_keyword = true +ij_groovy_if_brace_force = never +ij_groovy_import_annotation_wrap = 2 +ij_groovy_imports_layout = *,|,javax.**,java.**,|,$* +ij_groovy_indent_case_from_switch = true +ij_groovy_indent_label_blocks = true +ij_groovy_insert_inner_class_imports = false +ij_groovy_keep_blank_lines_before_right_brace = 2 +ij_groovy_keep_blank_lines_in_code = 2 +ij_groovy_keep_blank_lines_in_declarations = 2 +ij_groovy_keep_control_statement_in_one_line = true +ij_groovy_keep_first_column_comment = true +ij_groovy_keep_indents_on_empty_lines = false +ij_groovy_keep_line_breaks = true +ij_groovy_keep_multiple_expressions_in_one_line = false +ij_groovy_keep_simple_blocks_in_one_line = false +ij_groovy_keep_simple_classes_in_one_line = true +ij_groovy_keep_simple_lambdas_in_one_line = true +ij_groovy_keep_simple_methods_in_one_line = true +ij_groovy_label_indent_absolute = false +ij_groovy_label_indent_size = 0 +ij_groovy_lambda_brace_style = next_line +ij_groovy_layout_static_imports_separately = true +ij_groovy_line_comment_add_space = false +ij_groovy_line_comment_add_space_on_reformat = false +ij_groovy_line_comment_at_first_column = true +ij_groovy_method_annotation_wrap = split_into_lines +ij_groovy_method_brace_style = next_line +ij_groovy_method_call_chain_wrap = off +ij_groovy_method_parameters_new_line_after_left_paren = false +ij_groovy_method_parameters_right_paren_on_new_line = false +ij_groovy_method_parameters_wrap = off +ij_groovy_modifier_list_wrap = false +ij_groovy_names_count_to_use_import_on_demand = 3 +ij_groovy_packages_to_use_import_on_demand = java.awt.*,javax.swing.* +ij_groovy_parameter_annotation_wrap = off +ij_groovy_parentheses_expression_new_line_after_left_paren = false +ij_groovy_parentheses_expression_right_paren_on_new_line = false +ij_groovy_prefer_parameters_wrap = false +ij_groovy_resource_list_new_line_after_left_paren = false +ij_groovy_resource_list_right_paren_on_new_line = false +ij_groovy_resource_list_wrap = off +ij_groovy_space_after_assert_separator = true +ij_groovy_space_after_colon = true +ij_groovy_space_after_comma = true +ij_groovy_space_after_comma_in_type_arguments = true +ij_groovy_space_after_for_semicolon = true +ij_groovy_space_after_quest = true +ij_groovy_space_after_type_cast = true +ij_groovy_space_before_annotation_parameter_list = false +ij_groovy_space_before_array_initializer_left_brace = false +ij_groovy_space_before_assert_separator = false +ij_groovy_space_before_catch_keyword = true +ij_groovy_space_before_catch_left_brace = true +ij_groovy_space_before_catch_parentheses = true +ij_groovy_space_before_class_left_brace = true +ij_groovy_space_before_closure_left_brace = true +ij_groovy_space_before_colon = true +ij_groovy_space_before_comma = false +ij_groovy_space_before_do_left_brace = true +ij_groovy_space_before_else_keyword = true +ij_groovy_space_before_else_left_brace = true +ij_groovy_space_before_finally_keyword = true +ij_groovy_space_before_finally_left_brace = true +ij_groovy_space_before_for_left_brace = true +ij_groovy_space_before_for_parentheses = true +ij_groovy_space_before_for_semicolon = false +ij_groovy_space_before_if_left_brace = true +ij_groovy_space_before_if_parentheses = true +ij_groovy_space_before_method_call_parentheses = false +ij_groovy_space_before_method_left_brace = true +ij_groovy_space_before_method_parentheses = false +ij_groovy_space_before_quest = true +ij_groovy_space_before_record_parentheses = false +ij_groovy_space_before_switch_left_brace = true +ij_groovy_space_before_switch_parentheses = true +ij_groovy_space_before_synchronized_left_brace = true +ij_groovy_space_before_synchronized_parentheses = true +ij_groovy_space_before_try_left_brace = true +ij_groovy_space_before_try_parentheses = true +ij_groovy_space_before_while_keyword = true +ij_groovy_space_before_while_left_brace = true +ij_groovy_space_before_while_parentheses = true +ij_groovy_space_in_named_argument = true +ij_groovy_space_in_named_argument_before_colon = false +ij_groovy_space_within_empty_array_initializer_braces = false +ij_groovy_space_within_empty_method_call_parentheses = false +ij_groovy_spaces_around_additive_operators = true +ij_groovy_spaces_around_assignment_operators = true +ij_groovy_spaces_around_bitwise_operators = true +ij_groovy_spaces_around_equality_operators = true +ij_groovy_spaces_around_lambda_arrow = true +ij_groovy_spaces_around_logical_operators = true +ij_groovy_spaces_around_multiplicative_operators = true +ij_groovy_spaces_around_regex_operators = true +ij_groovy_spaces_around_relational_operators = true +ij_groovy_spaces_around_shift_operators = true +ij_groovy_spaces_within_annotation_parentheses = false +ij_groovy_spaces_within_array_initializer_braces = false +ij_groovy_spaces_within_braces = true +ij_groovy_spaces_within_brackets = false +ij_groovy_spaces_within_cast_parentheses = false +ij_groovy_spaces_within_catch_parentheses = false +ij_groovy_spaces_within_for_parentheses = false +ij_groovy_spaces_within_gstring_injection_braces = false +ij_groovy_spaces_within_if_parentheses = false +ij_groovy_spaces_within_list_or_map = false +ij_groovy_spaces_within_method_call_parentheses = false +ij_groovy_spaces_within_method_parentheses = false +ij_groovy_spaces_within_parentheses = false +ij_groovy_spaces_within_switch_parentheses = false +ij_groovy_spaces_within_synchronized_parentheses = false +ij_groovy_spaces_within_try_parentheses = false +ij_groovy_spaces_within_tuple_expression = false +ij_groovy_spaces_within_while_parentheses = false +ij_groovy_special_else_if_treatment = true +ij_groovy_ternary_operation_wrap = off +ij_groovy_throws_keyword_wrap = off +ij_groovy_throws_list_wrap = off +ij_groovy_use_flying_geese_braces = false +ij_groovy_use_fq_class_names = false +ij_groovy_use_fq_class_names_in_javadoc = true +ij_groovy_use_relative_indents = false +ij_groovy_use_single_class_imports = true +ij_groovy_variable_annotation_wrap = off +ij_groovy_while_brace_force = never +ij_groovy_while_on_new_line = false +ij_groovy_wrap_chain_calls_after_dot = false +ij_groovy_wrap_long_lines = false + +[{*.gradle.kts,*.kt,*.kts,*.main.kts}] +ij_kotlin_align_in_columns_case_branch = false +ij_kotlin_align_multiline_binary_operation = false +ij_kotlin_align_multiline_extends_list = false +ij_kotlin_align_multiline_method_parentheses = false +ij_kotlin_align_multiline_parameters = true +ij_kotlin_align_multiline_parameters_in_calls = false +ij_kotlin_allow_trailing_comma = false +ij_kotlin_allow_trailing_comma_on_call_site = false +ij_kotlin_assignment_wrap = off +ij_kotlin_blank_lines_after_class_header = 0 +ij_kotlin_blank_lines_around_block_when_branches = 0 +ij_kotlin_blank_lines_before_declaration_with_comment_or_annotation_on_separate_line = 1 +ij_kotlin_block_comment_add_space = false +ij_kotlin_block_comment_at_first_column = true +ij_kotlin_call_parameters_new_line_after_left_paren = false +ij_kotlin_call_parameters_right_paren_on_new_line = false +ij_kotlin_call_parameters_wrap = off +ij_kotlin_catch_on_new_line = false +ij_kotlin_class_annotation_wrap = split_into_lines +ij_kotlin_continuation_indent_for_chained_calls = true +ij_kotlin_continuation_indent_for_expression_bodies = true +ij_kotlin_continuation_indent_in_argument_lists = true +ij_kotlin_continuation_indent_in_elvis = true +ij_kotlin_continuation_indent_in_if_conditions = true +ij_kotlin_continuation_indent_in_parameter_lists = true +ij_kotlin_continuation_indent_in_supertype_lists = true +ij_kotlin_else_on_new_line = false +ij_kotlin_enum_constants_wrap = off +ij_kotlin_extends_list_wrap = off +ij_kotlin_field_annotation_wrap = split_into_lines +ij_kotlin_finally_on_new_line = false +ij_kotlin_if_rparen_on_new_line = false +ij_kotlin_import_nested_classes = false +ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^ +ij_kotlin_insert_whitespaces_in_simple_one_line_method = true +ij_kotlin_keep_blank_lines_before_right_brace = 2 +ij_kotlin_keep_blank_lines_in_code = 2 +ij_kotlin_keep_blank_lines_in_declarations = 2 +ij_kotlin_keep_first_column_comment = true +ij_kotlin_keep_indents_on_empty_lines = false +ij_kotlin_keep_line_breaks = true +ij_kotlin_lbrace_on_next_line = false +ij_kotlin_line_break_after_multiline_when_entry = true +ij_kotlin_line_comment_add_space = false +ij_kotlin_line_comment_add_space_on_reformat = false +ij_kotlin_line_comment_at_first_column = true +ij_kotlin_method_annotation_wrap = split_into_lines +ij_kotlin_method_call_chain_wrap = off +ij_kotlin_method_parameters_new_line_after_left_paren = false +ij_kotlin_method_parameters_right_paren_on_new_line = false +ij_kotlin_method_parameters_wrap = off +ij_kotlin_name_count_to_use_star_import = 5 +ij_kotlin_name_count_to_use_star_import_for_members = 3 +ij_kotlin_packages_to_use_import_on_demand = java.util.*,kotlinx.android.synthetic.**,io.ktor.** +ij_kotlin_parameter_annotation_wrap = off +ij_kotlin_space_after_comma = true +ij_kotlin_space_after_extend_colon = true +ij_kotlin_space_after_type_colon = true +ij_kotlin_space_before_catch_parentheses = true +ij_kotlin_space_before_comma = false +ij_kotlin_space_before_extend_colon = true +ij_kotlin_space_before_for_parentheses = true +ij_kotlin_space_before_if_parentheses = true +ij_kotlin_space_before_lambda_arrow = true +ij_kotlin_space_before_type_colon = false +ij_kotlin_space_before_when_parentheses = true +ij_kotlin_space_before_while_parentheses = true +ij_kotlin_spaces_around_additive_operators = true +ij_kotlin_spaces_around_assignment_operators = true +ij_kotlin_spaces_around_equality_operators = true +ij_kotlin_spaces_around_function_type_arrow = true +ij_kotlin_spaces_around_logical_operators = true +ij_kotlin_spaces_around_multiplicative_operators = true +ij_kotlin_spaces_around_range = false +ij_kotlin_spaces_around_relational_operators = true +ij_kotlin_spaces_around_unary_operator = false +ij_kotlin_spaces_around_when_arrow = true +ij_kotlin_variable_annotation_wrap = off +ij_kotlin_while_on_new_line = false +ij_kotlin_wrap_elvis_expressions = 1 +ij_kotlin_wrap_expression_body_functions = 0 +ij_kotlin_wrap_first_method_in_call_chain = false + +[{*.har,*.json,*.png.mcmeta,mcmod.info,pack.mcmeta}] +indent_size = 2 +ij_json_array_wrapping = split_into_lines +ij_json_keep_blank_lines_in_code = 0 +ij_json_keep_indents_on_empty_lines = false +ij_json_keep_line_breaks = true +ij_json_keep_trailing_comma = false +ij_json_object_wrapping = split_into_lines +ij_json_property_alignment = do_not_align +ij_json_space_after_colon = true +ij_json_space_after_comma = true +ij_json_space_before_colon = false +ij_json_space_before_comma = false +ij_json_spaces_within_braces = false +ij_json_spaces_within_brackets = false +ij_json_wrap_long_lines = false + +[{*.htm,*.html,*.sht,*.shtm,*.shtml}] +ij_html_add_new_line_before_tags = body,div,p,form,h1,h2,h3 +ij_html_align_attributes = true +ij_html_align_text = false +ij_html_attribute_wrap = normal +ij_html_block_comment_add_space = false +ij_html_block_comment_at_first_column = true +ij_html_do_not_align_children_of_min_lines = 0 +ij_html_do_not_break_if_inline_tags = title,h1,h2,h3,h4,h5,h6,p +ij_html_do_not_indent_children_of_tags = html,body,thead,tbody,tfoot +ij_html_enforce_quotes = false +ij_html_inline_tags = a,abbr,acronym,b,basefont,bdo,big,br,cite,cite,code,dfn,em,font,i,img,input,kbd,label,q,s,samp,select,small,span,strike,strong,sub,sup,textarea,tt,u,var +ij_html_keep_blank_lines = 2 +ij_html_keep_indents_on_empty_lines = false +ij_html_keep_line_breaks = true +ij_html_keep_line_breaks_in_text = true +ij_html_keep_whitespaces = false +ij_html_keep_whitespaces_inside = span,pre,textarea +ij_html_line_comment_at_first_column = true +ij_html_new_line_after_last_attribute = never +ij_html_new_line_before_first_attribute = never +ij_html_quote_style = double +ij_html_remove_new_line_before_tags = br +ij_html_space_after_tag_name = false +ij_html_space_around_equality_in_attribute = false +ij_html_space_inside_empty_tag = false +ij_html_text_wrap = normal + +[{*.lua,*.lua.txt}] +ij_lua_align_consecutive_variable_declarations = false +ij_lua_align_multiline_parameters = true +ij_lua_align_multiline_parameters_in_calls = false +ij_lua_call_parameters_wrap = off +ij_lua_keep_indents_on_empty_lines = false +ij_lua_keep_simple_blocks_in_one_line = false +ij_lua_method_parameters_wrap = off +ij_lua_space_after_comma = true +ij_lua_space_before_comma = false +ij_lua_spaces_around_assignment_operators = true + +[{*.markdown,*.md}] +ij_markdown_force_one_space_after_blockquote_symbol = true +ij_markdown_force_one_space_after_header_symbol = true +ij_markdown_force_one_space_after_list_bullet = true +ij_markdown_force_one_space_between_words = true +ij_markdown_format_tables = true +ij_markdown_insert_quote_arrows_on_wrap = true +ij_markdown_keep_indents_on_empty_lines = false +ij_markdown_keep_line_breaks_inside_text_blocks = true +ij_markdown_max_lines_around_block_elements = 1 +ij_markdown_max_lines_around_header = 1 +ij_markdown_max_lines_between_paragraphs = 1 +ij_markdown_min_lines_around_block_elements = 1 +ij_markdown_min_lines_around_header = 1 +ij_markdown_min_lines_between_paragraphs = 1 +ij_markdown_wrap_text_if_long = true +ij_markdown_wrap_text_inside_blockquotes = true + +[{*.toml,Cargo.lock,Cargo.toml.orig,Gopkg.lock,Pipfile,poetry.lock}] +ij_toml_keep_indents_on_empty_lines = false + +[{*.yaml,*.yml}] +indent_size = 2 +ij_yaml_align_values_properties = do_not_align +ij_yaml_autoinsert_sequence_marker = true +ij_yaml_block_mapping_on_new_line = false +ij_yaml_indent_sequence_value = true +ij_yaml_keep_indents_on_empty_lines = false +ij_yaml_keep_line_breaks = true +ij_yaml_sequence_on_new_line = false +ij_yaml_space_before_colon = false +ij_yaml_spaces_within_braces = true +ij_yaml_spaces_within_brackets = true From a038e93c3e41662b7c0141b3768c00b78ac5b116 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:38:37 -0500 Subject: [PATCH 0987/1090] Update AllomancyKeybindings.java --- .../client/AllomancyKeybindings.java | 43 +------------------ 1 file changed, 2 insertions(+), 41 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java index be614ed1d..dbd8ec163 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java @@ -34,27 +34,7 @@ public class AllomancyKeybindings public static KeyMapping ALLOMANCY_SOOTHE; public static KeyMapping ALLOMANCY_RIOT; - //Activation keybindings; - /* - public static KeyMapping ALLOMANCY_IRON; - public static KeyMapping ALLOMANCY_STEEL; - public static KeyMapping ALLOMANCY_TIN; - public static KeyMapping ALLOMANCY_PEWTER; - public static KeyMapping ALLOMANCY_ZINC; - public static KeyMapping ALLOMANCY_BRASS; - public static KeyMapping ALLOMANCY_COPPER; - public static KeyMapping ALLOMANCY_BRONZE; - public static KeyMapping ALLOMANCY_CADMIUM; - public static KeyMapping ALLOMANCY_BENDALLOY; - public static KeyMapping ALLOMANCY_GOLD; - public static KeyMapping ALLOMANCY_ELECTRUM; - public static KeyMapping ALLOMANCY_CHROMIUM; - public static KeyMapping ALLOMANCY_NICROSIL; - public static KeyMapping ALLOMANCY_ALUMINUM; - public static KeyMapping ALLOMANCY_DURALUMIN; - public static KeyMapping ALLOMANCY_ATIUM; - public static KeyMapping ALLOMANCY_MALATIUM; -*/ + public static final Map ALLOMANCY_POWER = Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation) @@ -72,26 +52,7 @@ public static void register(RegisterKeyMappingsEvent event) event.register(ALLOMANCY_SOOTHE = new KeyMapping(KEY_ALLOMANCY_SOOTHE, GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); event.register(ALLOMANCY_RIOT = new KeyMapping(KEY_ALLOMANCY_RIOT, GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - // new keybinding registry - /* - event.register(ALLOMANCY_STEEL = new KeyMapping(KEY_ALLOMANCY_STEEL,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_TIN = new KeyMapping(KEY_ALLOMANCY_TIN,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_PEWTER = new KeyMapping(KEY_ALLOMANCY_PEWTER,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_ZINC = new KeyMapping(KEY_ALLOMANCY_ZINC,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_BRASS = new KeyMapping(KEY_ALLOMANCY_BRASS,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_COPPER = new KeyMapping(KEY_ALLOMANCY_COPPER,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_BRONZE = new KeyMapping(KEY_ALLOMANCY_BRONZE,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_CADMIUM = new KeyMapping(KEY_ALLOMANCY_CADMIUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_BENDALLOY = new KeyMapping(KEY_ALLOMANCY_BENDALLOY,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_GOLD = new KeyMapping(KEY_ALLOMANCY_GOLD,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_ELECTRUM = new KeyMapping(KEY_ALLOMANCY_ELECTRUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_ALUMINUM = new KeyMapping(KEY_ALLOMANCY_ALUMINUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_DURALUMIN = new KeyMapping(KEY_ALLOMANCY_DURRALUMIN,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_CHROMIUM = new KeyMapping(KEY_ALLOMANCY_CHROMIUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_NICROSIL = new KeyMapping(KEY_ALLOMANCY_NICROSIL,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_ATIUM = new KeyMapping(KEY_ALLOMANCY_ATIUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); - event.register(ALLOMANCY_MALATIUM = new KeyMapping(KEY_ALLOMANCY_MALATIUM,GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY)); -*/ + for (Metals.MetalType metalType: ALLOMANCY_POWER.keySet()){ KeyMapping key = ALLOMANCY_POWER.get(metalType); From 29548b94b3e4d249e60356d3328c59c1a301419c Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:40:35 -0500 Subject: [PATCH 0988/1090] Update Constants.java removed unused keybind strings --- src/api/java/leaf/cosmere/api/Constants.java | 26 -------------------- 1 file changed, 26 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 0a7ab8b5d..ceebe09a7 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -100,32 +100,6 @@ public static class Strings public static final String KEY_ALLOMANCY_SOOTHE = "key.cosmere.allomancy.soothe"; public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; - public static final String KEY_ALLOMANCY_IRON = "key.cosmere.allomancy.iron"; - public static final String KEY_ALLOMANCY_STEEL = "key.cosmere.allomancy.steel"; - public static final String KEY_ALLOMANCY_TIN = "key.cosmere.allomancy.tin"; - public static final String KEY_ALLOMANCY_PEWTER = "key.cosmere.allomancy.pewter"; - public static final String KEY_ALLOMANCY_ZINC = "key.cosmere.allomancy.zinc"; - public static final String KEY_ALLOMANCY_BRASS = "key.cosmere.allomancy.brass"; - public static final String KEY_ALLOMANCY_COPPER = "key.cosmere.allomancy.copper"; - public static final String KEY_ALLOMANCY_BRONZE = "key.cosmere.allomancy.bronze"; - public static final String KEY_ALLOMANCY_CADMIUM = "key.cosmere.allomancy.cadmium"; - public static final String KEY_ALLOMANCY_BENDALLOY = "key.cosmere.allomancy.bendalloy"; - public static final String KEY_ALLOMANCY_GOLD = "key.cosmere.allomancy.gold"; - public static final String KEY_ALLOMANCY_ELECTRUM = "key.cosmere.allomancy.electrum"; - public static final String KEY_ALLOMANCY_ALUMINUM = "key.cosmere.allomancy.aluminum"; - public static final String KEY_ALLOMANCY_DURRALUMIN = "key.cosmere.allomancy.duralumin"; - public static final String KEY_ALLOMANCY_CHROMIUM = "key.cosmere.allomancy.chromium"; - public static final String KEY_ALLOMANCY_NICROSIL = "key.cosmere.allomancy.nicrosil"; - public static final String KEY_ALLOMANCY_ATIUM = "key.cosmere.allomancy.atium"; - public static final String KEY_ALLOMANCY_MALATIUM = "key.cosmere.allomancy.malatium"; - - //keybind builder - public static final String KEY_MAIN = "key.cosmere."; - - public static final String KEY_ALLOMANCY = "allomancy."; - public static final String KEY_FERUCHEMY = "feruchemy."; - public static final String KEY_STORMLIGHT = "stormlight."; - public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; public static final String KEY_BREATHE_STORMLIGHT = "key.cosmere.stormlight.breathe_stormlight"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; From d43688c255b40a5222ee70b5c0181e55ffef5711 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 5 Feb 2025 13:44:30 -0500 Subject: [PATCH 0989/1090] Update ClientForgeEvents.java undid removal of shift for deactivate powers --- .../java/leaf/cosmere/client/ClientForgeEvents.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 327b5119b..c3553cc7a 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -72,16 +72,8 @@ public static void onKey(InputEvent.Key event) Manifestation selected = spiritweb.getSelectedManifestation(); if (isKeyPressed(event, Keybindings.MANIFESTATIONS_DEACTIVATE)) { - //if crouching, only turn off. - if (Screen.hasShiftDown()) - { - Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); - } - //otherwise do a normal toggle - else - { - //todo decide if there is an activation state? - } + // just deactivate + Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); } //check keybinds with modifiers first? From a34f3e1411055a579e75cf1e8171faa7428cf534 Mon Sep 17 00:00:00 2001 From: Leaf Date: Thu, 6 Feb 2025 16:50:41 +1300 Subject: [PATCH 0990/1090] [Surgebinding] First pass dynamic generated shardblade visuals --- .../shardblades/dynamic_shardblade.bbmodel | 1 + .../surgebinding/shardblades/shardblade.java | 85 ++++++++++++ .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../assets/surgebinding/lang/en_us.json | 2 + .../render/SurgebindingLayerDefinitions.java | 10 +- .../client/render/model/BabyChullModel.java | 125 ----------------- .../client/render/model/ShardbladeModel.java | 127 ++++++++++++++++++ .../renderer/ShardbladeItemRenderer.java | 54 ++++++++ .../capabilities/DynamicShardbladeData.java | 99 ++++++++++++++ .../capabilities/IShardbladeDynamicData.java | 19 +++ .../common/items/ShardbladeDynamicItem.java | 73 ++++++++++ .../common/items/ShardbladeItem.java | 8 +- .../common/registries/SurgebindingItems.java | 3 +- .../resources/META-INF/accesstransformer.cfg | 3 +- .../surgebinding/models/item/shardblade.json | 44 ++++++ .../item/models/shardblade/dynamic.png | Bin 0 -> 383 bytes 18 files changed, 523 insertions(+), 142 deletions(-) create mode 100644 blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel create mode 100644 blockbench/surgebinding/shardblades/shardblade.java delete mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/BabyChullModel.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ShardbladeModel.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/ShardbladeItemRenderer.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/DynamicShardbladeData.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/IShardbladeDynamicData.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeDynamicItem.java create mode 100644 src/surgebinding/resources/assets/surgebinding/models/item/shardblade.json create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png diff --git a/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel b/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel new file mode 100644 index 000000000..bf793ca12 --- /dev/null +++ b/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.10","model_format":"modded_entity","box_uv":true},"name":"shardblade","model_identifier":"shardblade","modded_entity_entity_class":"Trident","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":9,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"f0df6dca-f8f7-794e-9d32-c663c7933018"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":6,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"31dcd4d1-10e3-aa84-6715-198e80acce51"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"6522c261-de52-025c-ac83-8b84c24e24f0"},{"name":"blade_2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2.5,17,-0.5],"to":[2.5,45,0.5],"autouv":0,"color":8,"origin":[0,0,0],"uv_offset":[19,3],"faces":{"north":{"uv":[20,4,25,32],"texture":0},"east":{"uv":[19,4,20,32],"texture":0},"south":{"uv":[26,4,31,32],"texture":0},"west":{"uv":[25,4,26,32],"texture":0},"up":{"uv":[25,4,20,3],"texture":0},"down":{"uv":[30,3,25,4],"texture":0}},"type":"cube","uuid":"81affbcf-d5f7-c6b4-0fc3-3dde7030f639"},{"name":"blade1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,17,-0.5],"to":[0.5,45,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,3],"faces":{"north":{"uv":[1,4,2,32],"texture":0},"east":{"uv":[0,4,1,32],"texture":0},"south":{"uv":[3,4,4,32],"texture":0},"west":{"uv":[2,4,3,32],"texture":0},"up":{"uv":[2,4,1,3],"texture":0},"down":{"uv":[3,3,2,4],"texture":0}},"type":"cube","uuid":"1754012f-518b-0cb7-a697-87bbe4db931a"},{"name":"blade_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2.5,17,-0.5],"to":[2.5,45,0.5],"autouv":0,"color":7,"origin":[0,0,0],"uv_offset":[19,3],"faces":{"north":{"uv":[20,4,25,32],"texture":0},"east":{"uv":[19,4,20,32],"texture":0},"south":{"uv":[26,4,31,32],"texture":0},"west":{"uv":[25,4,26,32],"texture":0},"up":{"uv":[25,4,20,3],"texture":0},"down":{"uv":[30,3,25,4],"texture":0}},"type":"cube","uuid":"7c207515-0b39-06b6-6d34-ae8858fea7b1"},{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"0c0250ab-7d6e-e478-584e-d893be7bd4bd"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"eab7eab3-059d-22f5-8432-d2bc044f5d62"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"794d2699-632d-d7bd-2188-c9a84ccd7392"}],"outliner":[{"name":"root","origin":[0,0,0],"color":0,"uuid":"4f9f26cb-2a2e-1be1-6735-20c4a8e53c1d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":true,"children":[{"name":"blade","origin":[0,0,0],"color":1,"uuid":"be18e929-3b48-68eb-51f6-01a4fb513eb2","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"blade_guide","origin":[0,0,0],"color":0,"uuid":"67e16657-d59b-7e29-0932-59fd78f3a2be","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["7c207515-0b39-06b6-6d34-ae8858fea7b1"]},{"name":"blade_1","origin":[0,0,0],"color":0,"uuid":"544318aa-a3f6-a30d-e04c-6820a949ee66","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["1754012f-518b-0cb7-a697-87bbe4db931a"]},{"name":"blade_2","origin":[0,0,0],"color":0,"uuid":"37646c2b-e40b-906d-6564-2701eaed94df","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["81affbcf-d5f7-c6b4-0fc3-3dde7030f639"]}]},{"name":"cross_guard","origin":[0,0,0],"color":4,"uuid":"3aeee4e3-7d09-e5e6-dc64-0730c7d03ec1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"crossguard_guide","origin":[0,0,0],"color":0,"uuid":"ab50bfed-4d2c-51b4-d83a-141a7d84dd76","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["6522c261-de52-025c-ac83-8b84c24e24f0"]},{"name":"crossguard_1","origin":[0,0,0],"color":0,"uuid":"a0cee35c-5831-c8c6-9487-646c7340cdc5","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["794d2699-632d-d7bd-2188-c9a84ccd7392"]}]},{"name":"handle","origin":[0,0,0],"color":2,"uuid":"5a74f1cc-eeab-ddc0-08dd-2336f618f792","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"handle_guide","origin":[0,0,0],"color":0,"uuid":"0002f36b-baf8-0926-9ca6-4da2ff90ffd9","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["f0df6dca-f8f7-794e-9d32-c663c7933018"]},{"name":"handle_1","origin":[0,0,0],"color":0,"uuid":"dd7f01c4-1c7d-0c52-21a6-4baf3789d456","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["0c0250ab-7d6e-e478-584e-d893be7bd4bd"]}]},{"name":"pommel","origin":[0,0,0],"color":3,"uuid":"f07accc4-c9b6-c635-00f1-67f6f9ada0a1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"pommel_guide","origin":[0,0,0],"color":0,"uuid":"d2c49297-10cd-a120-c9ca-8320db5ff3b4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["31dcd4d1-10e3-aa84-6715-198e80acce51"]},{"name":"pommel_1","origin":[0,0,0],"color":0,"uuid":"c557acce-67c0-bfc8-aa10-8797d7ef216d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["eab7eab3-059d-22f5-8432-d2bc044f5d62"]}]}]}],"textures":[{"path":"Z:\\Repo\\Minecraft\\2021\\CosmereProject\\_cosmere\\src\\surgebinding\\resources\\assets\\surgebinding\\textures\\item\\models\\shardblade\\dynamic.png","name":"dynamic.png","folder":"block","namespace":"","id":"0","group":"","width":32,"height":32,"uv_width":32,"uv_height":32,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"d1bd19be-cdb3-bc4b-4c53-0949fe504807","relative_path":"../../../src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAPRJREFUWEdjZICCLVce/oexcdHzeycTUsKwdn4PI0FFSArgigfMAc4vesE+l7iSTtDhM09NAqthCX9DUC2Hch9RIQFWBPI9KHjRgw85VJCDH18wYwtJbFEHM4MRFAIg34N8B/IZsstBhlmoyDCcuPOEAWSItLgEw9OXL3DGM8ws9OCBmY0uDrKLoANgmogJAZgDFCS44XY9ePEV7jl2aXW4+M+nN8GexXCAN7c0XBFyuoDFP3oaQA6x4eEAkI9wJUpCSZ9qIYArUY46YDQERkOALiFAbC2GzTFUKQdGHTAaAqMhMBoCoyEwGgKjIUCNECClawYAtF/PPwh2D9wAAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/blockbench/surgebinding/shardblades/shardblade.java b/blockbench/surgebinding/shardblades/shardblade.java new file mode 100644 index 000000000..e46fed0c8 --- /dev/null +++ b/blockbench/surgebinding/shardblades/shardblade.java @@ -0,0 +1,85 @@ +// Made with Blockbench 4.12.2 +// Exported for Minecraft version 1.17 or later with Mojang mappings +// Paste this class into your mod and generate all required imports + + +public class shardblade extends EntityModel { + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor + public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation("modid", "shardblade"), "main"); + private final ModelPart root; + private final ModelPart blade; + private final ModelPart blade_guide; + private final ModelPart blade_1; + private final ModelPart blade_2; + private final ModelPart handle; + private final ModelPart handle_guide; + private final ModelPart handle_1; + private final ModelPart pommel; + private final ModelPart pommel_guide; + private final ModelPart pommel_1; + private final ModelPart cross_guard; + private final ModelPart crossguard_guide; + private final ModelPart crossguard_1; + + public shardblade(ModelPart root) { + this.root = root.getChild("root"); + this.blade = this.root.getChild("blade"); + this.blade_guide = this.blade.getChild("blade_guide"); + this.blade_1 = this.blade.getChild("blade_1"); + this.blade_2 = this.blade.getChild("blade_2"); + this.handle = this.root.getChild("handle"); + this.handle_guide = this.handle.getChild("handle_guide"); + this.handle_1 = this.handle.getChild("handle_1"); + this.pommel = this.root.getChild("pommel"); + this.pommel_guide = this.pommel.getChild("pommel_guide"); + this.pommel_1 = this.pommel.getChild("pommel_1"); + this.cross_guard = this.root.getChild("cross_guard"); + this.crossguard_guide = this.cross_guard.getChild("crossguard_guide"); + this.crossguard_1 = this.cross_guard.getChild("crossguard_1"); + } + + public static LayerDefinition createBodyLayer() { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition blade = root.addOrReplaceChild("blade", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_guide = blade.addOrReplaceChild("blade_guide", CubeListBuilder.create().texOffs(19, 3).addBox(-2.5F, -45.0F, -0.5F, 5.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_1 = blade.addOrReplaceChild("blade_1", CubeListBuilder.create().texOffs(0, 3).addBox(-0.5F, -45.0F, -0.5F, 1.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_2 = blade.addOrReplaceChild("blade_2", CubeListBuilder.create().texOffs(19, 3).addBox(-2.5F, -45.0F, -0.5F, 5.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle = root.addOrReplaceChild("handle", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle_guide = handle.addOrReplaceChild("handle_guide", CubeListBuilder.create().texOffs(4, 8).addBox(-0.5F, -16.0F, -0.5F, 1.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle_1 = handle.addOrReplaceChild("handle_1", CubeListBuilder.create().texOffs(4, 8).addBox(-0.5F, -16.0F, -0.5F, 1.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel = root.addOrReplaceChild("pommel", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel_guide = pommel.addOrReplaceChild("pommel_guide", CubeListBuilder.create().texOffs(4, 3).addBox(-1.5F, -9.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel_1 = pommel.addOrReplaceChild("pommel_1", CubeListBuilder.create().texOffs(4, 3).addBox(-1.5F, -9.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition cross_guard = root.addOrReplaceChild("cross_guard", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition crossguard_guide = cross_guard.addOrReplaceChild("crossguard_guide", CubeListBuilder.create().texOffs(0, 0).addBox(-4.5F, -17.0F, -1.0F, 9.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition crossguard_1 = cross_guard.addOrReplaceChild("crossguard_1", CubeListBuilder.create().texOffs(0, 0).addBox(-4.5F, -17.0F, -1.0F, 9.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 32, 32); + } + + @Override + public void setupAnim(Trident entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { + + } + + @Override + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 082153a2c..e045355e8 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-10T11:20:10.8415547 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-02-06T13:35:12.665626 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 3023d4854..9d05921c8 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-01-10T11:20:10.8715812 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-02-06T13:35:12.7276774 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index cb2fe835c..cb78742ec 100644 --- a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.8034336 Languages: en_us -d1b12393cdf710e4fc0b8c0e206eeb813512b1db assets/surgebinding/lang/en_us.json +// 1.20.1 2025-02-06T13:35:12.5995697 Languages: en_us +f6bad2ae397dfc8ceb6001e749f95b17523f4d9e assets/surgebinding/lang/en_us.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json index 24bf862be..3ae1bd4bf 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json @@ -37,6 +37,7 @@ "block.surgebinding.zircon_block": "Zircon Block", "entity.surgebinding.chull": "Chull", "entity.surgebinding.cryptic": "Cryptic", + "entity.surgebinding.honorspren": "Honorspren", "item.surgebinding.amethyst_broam": "Amethyst Broam", "item.surgebinding.amethyst_chip": "Amethyst Chip", "item.surgebinding.amethyst_mark": "Amethyst Mark", @@ -67,6 +68,7 @@ "item.surgebinding.sapphire_broam": "Sapphire Broam", "item.surgebinding.sapphire_chip": "Sapphire Chip", "item.surgebinding.sapphire_mark": "Sapphire Mark", + "item.surgebinding.shardblade": "Shardblade", "item.surgebinding.shardplate_boots": "Shardplate Boots", "item.surgebinding.shardplate_chest": "Shardplate Chest", "item.surgebinding.shardplate_helmet": "Shardplate Helmet", diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java index bb3846296..958236f3a 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/SurgebindingLayerDefinitions.java @@ -1,13 +1,10 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 6 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client.render; -import leaf.cosmere.surgebinding.client.render.model.ChullModel; -import leaf.cosmere.surgebinding.client.render.model.CrypticModel; -import leaf.cosmere.surgebinding.client.render.model.HonorsprenModel; -import leaf.cosmere.surgebinding.client.render.model.ShardplateModel; +import leaf.cosmere.surgebinding.client.render.model.*; import leaf.cosmere.surgebinding.common.Surgebinding; import net.minecraft.client.model.geom.ModelLayerLocation; import net.minecraftforge.client.event.EntityRenderersEvent; @@ -20,6 +17,7 @@ public class SurgebindingLayerDefinitions // TODO This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor public static final ModelLayerLocation CRYPTIC = new ModelLayerLocation(Surgebinding.rl("cryptic"), "cryptic"); public static final ModelLayerLocation HONORSPREN = new ModelLayerLocation(Surgebinding.rl("honorspren"), "honorspren"); + public static final ModelLayerLocation SHARDBLADE = new ModelLayerLocation(Surgebinding.rl("shardblade"), "shardblade"); public static void register(EntityRenderersEvent.RegisterLayerDefinitions evt) { @@ -28,5 +26,7 @@ public static void register(EntityRenderersEvent.RegisterLayerDefinitions evt) evt.registerLayerDefinition(SurgebindingLayerDefinitions.CHULL, ChullModel::createBodyLayer); evt.registerLayerDefinition(SurgebindingLayerDefinitions.CRYPTIC, CrypticModel::createBodyLayer); evt.registerLayerDefinition(SurgebindingLayerDefinitions.HONORSPREN, HonorsprenModel::createBodyLayer); + + evt.registerLayerDefinition(SurgebindingLayerDefinitions.SHARDBLADE, ShardbladeModel::createLayerDefinition); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/BabyChullModel.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/BabyChullModel.java deleted file mode 100644 index eeee80777..000000000 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/BabyChullModel.java +++ /dev/null @@ -1,125 +0,0 @@ -/* - * File updated ~ 7 - 6 - 2023 ~ Leaf - */ - -// Made with Blockbench 4.6.1 -// Exported for Minecraft version 1.17 or later with Mojang mappings -// Paste this class into your mod and generate all required imports - -package leaf.cosmere.surgebinding.client.render.model; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.world.entity.Entity; - -public class BabyChullModel extends EntityModel -{ - private final ModelPart bb_main; - - public BabyChullModel(ModelPart root) - { - this.bb_main = root.getChild("bb_main"); - } - - public static LayerDefinition createBodyLayer() - { - - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition bb_main = partdefinition.addOrReplaceChild("bb_main", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); - - PartDefinition cube_r1 = bb_main.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(50, 53).addBox(-11.5592F, -17.69F, -4.2F, 11.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 50).addBox(-13.1592F, -14.89F, -5.6F, 14.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)) - .texOffs(0, 28).addBox(-14.7592F, -12.365F, -7.0F, 17.0F, 8.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -9.335F, -0.8217F, 0.0F, 1.5708F, 0.0F)); - - PartDefinition cube_r2 = bb_main.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(0, 0).addBox(1.236F, -0.3676F, -10.3699F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.6475F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r3 = bb_main.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(0, 3).addBox(-1.964F, -0.3676F, -10.3699F, 1.0F, 2.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.5F, -10.6475F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r4 = bb_main.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(28, 64).addBox(-3.264F, 1.3199F, -10.3699F, 6.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(52, 64).addBox(-1.664F, 4.1583F, -5.9686F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(81, 0).addBox(7.8733F, 5.6523F, -18.8367F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(0, 14).addBox(4.8733F, 5.6523F, -13.2367F, 6.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r5 = bb_main.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(86, 9).addBox(9.5242F, 5.6523F, -14.7396F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r6 = bb_main.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(48, 28).addBox(-11.4483F, 5.6523F, -13.2367F, 6.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(92, 27).addBox(-11.2483F, 5.6523F, -18.8367F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r7 = bb_main.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(90, 18).addBox(-12.8859F, 5.6523F, -14.6726F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, -0.3927F, 0.0F)); - - PartDefinition cube_r8 = bb_main.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(0, 64).addBox(3.0022F, 2.584F, -13.983F, 3.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.2182F, -0.3054F, 0.0F)); - - PartDefinition cube_r9 = bb_main.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(64, 0).addBox(-6.2022F, 2.584F, -13.983F, 3.0F, 3.0F, 11.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.2182F, 0.3054F, 0.0F)); - - PartDefinition cube_r10 = bb_main.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(0, 28).addBox(-20.7488F, -1.5937F, 5.5528F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -9.335F, -0.8217F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r11 = bb_main.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(0, 0).addBox(-20.7488F, 1.8063F, 4.1528F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(0, 34).addBox(-22.7249F, 6.965F, 3.8827F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(48, 34).addBox(-22.7249F, 6.965F, 7.2077F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r12 = bb_main.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(39, 50).addBox(-16.893F, -1.5937F, 4.5718F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -9.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r13 = bb_main.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(80, 78).addBox(-16.893F, 1.8063F, 3.1718F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(64, 14).addBox(-18.8691F, 6.965F, 2.9017F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(17, 64).addBox(-18.8691F, 6.965F, 6.2267F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r14 = bb_main.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(46, 64).addBox(-18.0547F, 6.965F, 4.8737F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(66, 28).addBox(-18.0547F, 6.965F, 1.5487F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(82, 58).addBox(-16.0785F, 1.8063F, 1.8188F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, -0.3927F, 0.0F)); - - PartDefinition cube_r15 = bb_main.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(34, 76).addBox(-16.0785F, -1.5937F, 3.2188F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -9.335F, -0.8217F, 0.0F, -0.3927F, 0.0F)); - - PartDefinition cube_r16 = bb_main.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(14, 78).addBox(19.5249F, 6.965F, 3.8827F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(36, 86).addBox(17.5488F, 1.8063F, 4.1528F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(48, 86).addBox(19.5249F, 6.965F, 7.2077F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, -0.3927F, 0.0F)); - - PartDefinition cube_r17 = bb_main.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(72, 78).addBox(17.5488F, -1.5937F, 5.5528F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -8.335F, -0.8217F, 0.0F, -0.3927F, 0.0F)); - - PartDefinition cube_r18 = bb_main.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(88, 72).addBox(15.6691F, 6.965F, 2.9017F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(16, 87).addBox(13.693F, 1.8063F, 3.1718F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(0, 90).addBox(15.6691F, 6.965F, 6.2267F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r19 = bb_main.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(66, 89).addBox(13.693F, -1.5937F, 4.5718F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -8.335F, -0.8217F, 0.0F, 0.0F, 0.0F)); - - PartDefinition cube_r20 = bb_main.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(75, 92).addBox(14.8547F, 6.965F, 1.5487F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(92, 78).addBox(14.8547F, 6.965F, 4.8737F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(54, 89).addBox(12.8785F, 1.8063F, 1.8188F, 3.0F, 8.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r21 = bb_main.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(87, 92).addBox(12.8785F, -1.5937F, 3.2188F, 3.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -8.335F, -0.8217F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r22 = bb_main.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(66, 67).addBox(-7.7592F, 5.6525F, -12.7F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 1.5708F, 0.3491F)); - - PartDefinition cube_r23 = bb_main.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(44, 75).addBox(-9.7429F, 5.6525F, -16.2092F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 3.1416F, 1.2217F, -2.7925F)); - - PartDefinition cube_r24 = bb_main.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(20, 76).addBox(-5.0326F, 5.6525F, -11.9961F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 1.2217F, 0.3491F)); - - PartDefinition cube_r25 = bb_main.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(76, 20).addBox(-7.7592F, 5.6525F, 4.3F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 1.5708F, -0.3491F)); - - PartDefinition cube_r26 = bb_main.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(58, 78).addBox(-9.7429F, 5.6525F, 7.8092F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 1.2217F, -0.3491F)); - - PartDefinition cube_r27 = bb_main.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(0, 79).addBox(-5.0326F, 5.6525F, 3.5961F, 3.0F, 3.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, -3.1416F, 1.2217F, 2.7925F)); - - PartDefinition cube_r28 = bb_main.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(48, 36).addBox(-14.7592F, 3.66F, -7.0F, 17.0F, 3.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(0, 0).addBox(-16.9592F, -3.965F, -9.8F, 22.0F, 8.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.7F, -10.335F, -0.8217F, 0.0F, 1.5708F, 0.0F)); - - return LayerDefinition.create(meshdefinition, 128, 128); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) - { - - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) - { - bb_main.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ShardbladeModel.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ShardbladeModel.java new file mode 100644 index 000000000..25c451758 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ShardbladeModel.java @@ -0,0 +1,127 @@ +/* + * File updated ~ 6 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.client.render.model; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.capabilities.IShardbladeDynamicData; +import leaf.cosmere.surgebinding.common.items.ShardbladeDynamicItem; +import net.minecraft.client.model.Model; +import net.minecraft.client.model.geom.ModelPart; +import net.minecraft.client.model.geom.PartPose; +import net.minecraft.client.model.geom.builders.*; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.ItemStack; + +public class ShardbladeModel extends Model +{ + // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor + public static final ResourceLocation TEXTURE = Surgebinding.rl("textures/item/models/shardblade/dynamic.png"); + public static final int TOTAL_BLADE_IDS = 2; + public static final int TOTAL_HANDLE_IDS = 1; + public static final int TOTAL_POMMEL_IDS = 1; + public static final int TOTAL_CROSS_GUARD_IDS = 1; + + private final ModelPart root; + private final ModelPart blade; + private final ModelPart handle; + private final ModelPart pommel; + private final ModelPart cross_guard; + + public ShardbladeModel(ModelPart root) + { + super(RenderType::entitySolid); + this.root = root.getChild("root"); + this.blade = this.root.getChild("blade"); + this.handle = this.root.getChild("handle"); + this.pommel = this.root.getChild("pommel"); + this.cross_guard = this.root.getChild("cross_guard"); + } + + + public static LayerDefinition createLayerDefinition() + { + MeshDefinition meshdefinition = new MeshDefinition(); + PartDefinition partdefinition = meshdefinition.getRoot(); + + PartDefinition root = partdefinition.addOrReplaceChild("root", CubeListBuilder.create(), PartPose.offset(0.0F, 24.0F, 0.0F)); + + PartDefinition blade = root.addOrReplaceChild("blade", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_guide = blade.addOrReplaceChild("blade_guide", CubeListBuilder.create().texOffs(19, 3).addBox(-2.5F, -45.0F, -0.5F, 5.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_1 = blade.addOrReplaceChild("blade_1", CubeListBuilder.create().texOffs(0, 3).addBox(-0.5F, -45.0F, -0.5F, 1.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition blade_2 = blade.addOrReplaceChild("blade_2", CubeListBuilder.create().texOffs(19, 3).addBox(-2.5F, -45.0F, -0.5F, 5.0F, 28.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle = root.addOrReplaceChild("handle", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle_guide = handle.addOrReplaceChild("handle_guide", CubeListBuilder.create().texOffs(4, 8).addBox(-0.5F, -16.0F, -0.5F, 1.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition handle_1 = handle.addOrReplaceChild("handle_1", CubeListBuilder.create().texOffs(4, 8).addBox(-0.5F, -16.0F, -0.5F, 1.0F, 7.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel = root.addOrReplaceChild("pommel", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel_guide = pommel.addOrReplaceChild("pommel_guide", CubeListBuilder.create().texOffs(4, 3).addBox(-1.5F, -9.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition pommel_1 = pommel.addOrReplaceChild("pommel_1", CubeListBuilder.create().texOffs(4, 3).addBox(-1.5F, -9.0F, -1.5F, 3.0F, 2.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition cross_guard = root.addOrReplaceChild("cross_guard", CubeListBuilder.create(), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition crossguard_guide = cross_guard.addOrReplaceChild("crossguard_guide", CubeListBuilder.create().texOffs(0, 0).addBox(-4.5F, -17.0F, -1.0F, 9.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition crossguard_1 = cross_guard.addOrReplaceChild("crossguard_1", CubeListBuilder.create().texOffs(0, 0).addBox(-4.5F, -17.0F, -1.0F, 9.0F, 1.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + return LayerDefinition.create(meshdefinition, 32, 32); + } + + + public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) + { + root.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); + } + + public void setup(ItemStack pStack) + { + this.root.visible = true; + + //kinda yuck that we can't just have block bench not include these folders in the first place + final String bladeGuide = "blade_guide"; + final String handleGuide = "handle_guide"; + final String pommelGuide = "pommel_guide"; + final String crossGuardGuide = "crossguard_guide"; + this.blade.getChild(bladeGuide).visible = false; + this.handle.getChild(handleGuide).visible = false; + this.pommel.getChild(pommelGuide).visible = false; + this.cross_guard.getChild(crossGuardGuide).visible = false; + + this.blade.getAllParts().forEach(part -> part.visible = false); + this.handle.getAllParts().forEach(part -> part.visible = false); + this.pommel.getAllParts().forEach(part -> part.visible = false); + this.cross_guard.getAllParts().forEach(part -> part.visible = false); + + this.blade.visible = true; + this.handle.visible = true; + this.pommel.visible = true; + this.cross_guard.visible = true; + + //now we need to get the actual data from the itemstack + //and set the correct pieces to be visible + + if (!pStack.getCapability(ShardbladeDynamicItem.CAPABILITY).isPresent()) + { + return; + } + + final IShardbladeDynamicData data = pStack.getCapability(ShardbladeDynamicItem.CAPABILITY).resolve().get(); + + this.blade.getChild(data.getBladeID()).visible = true; + this.handle.getChild(data.getHandleID()).visible = true; + this.pommel.getChild(data.getPommelID()).visible = true; + this.cross_guard.getChild(data.getCrossGuardID()).visible = true; + } +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/ShardbladeItemRenderer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/ShardbladeItemRenderer.java new file mode 100644 index 000000000..07aeae0e8 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/renderer/ShardbladeItemRenderer.java @@ -0,0 +1,54 @@ +/* + * File updated ~ 6 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.client.render.renderer; + +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import leaf.cosmere.surgebinding.client.render.SurgebindingLayerDefinitions; +import leaf.cosmere.surgebinding.client.render.model.ShardbladeModel; +import net.minecraft.client.model.geom.EntityModelSet; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.blockentity.BlockEntityRenderDispatcher; +import net.minecraft.client.renderer.entity.ItemRenderer; +import net.minecraft.server.packs.resources.ResourceManager; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemDisplayContext; +import net.minecraft.world.item.ItemStack; + + +public class ShardbladeItemRenderer extends BlockEntityWithoutLevelRenderer +{ + private ShardbladeModel shardbladeModel; + + + public ShardbladeItemRenderer(BlockEntityRenderDispatcher pBlockEntityRenderDispatcher, EntityModelSet pEntityModelSet) + { + super(pBlockEntityRenderDispatcher, pEntityModelSet); + shardbladeModel = new ShardbladeModel(this.entityModelSet.bakeLayer(SurgebindingLayerDefinitions.SHARDBLADE)); + } + + @Override + public void onResourceManagerReload(ResourceManager pResourceManager) + { + super.onResourceManagerReload(pResourceManager); + shardbladeModel = new ShardbladeModel(this.entityModelSet.bakeLayer(SurgebindingLayerDefinitions.SHARDBLADE)); + } + + public void renderByItem(ItemStack itemStack, ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int pPackedLight, int pPackedOverlay) + { + Item item = itemStack.getItem(); + // todo get which pieces should be active and which should be turned off. + + this.shardbladeModel.setup(itemStack); + + poseStack.pushPose(); + poseStack.scale(1.0F, -1.0F, -1.0F); + VertexConsumer vertexconsumer1 = ItemRenderer.getFoilBufferDirect(bufferSource, this.shardbladeModel.renderType(ShardbladeModel.TEXTURE), false, itemStack.hasFoil()); + this.shardbladeModel.renderToBuffer(poseStack, vertexconsumer1, pPackedLight, pPackedOverlay, 1.0F, 1.0F, 1.0F, 1.0F); + poseStack.popPose(); + + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/DynamicShardbladeData.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/DynamicShardbladeData.java new file mode 100644 index 000000000..dec17417a --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/DynamicShardbladeData.java @@ -0,0 +1,99 @@ +/* + * File updated ~ 6 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.capabilities; + +import leaf.cosmere.api.math.MathHelper; +import leaf.cosmere.surgebinding.client.render.model.ShardbladeModel; +import leaf.cosmere.surgebinding.common.items.ShardbladeDynamicItem; +import net.minecraft.core.Direction; +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import net.minecraftforge.common.util.INBTSerializable; +import net.minecraftforge.common.util.LazyOptional; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; + +public class DynamicShardbladeData implements ICapabilityProvider, INBTSerializable, IShardbladeDynamicData +{ + private final LazyOptional opt = LazyOptional.of(() -> this); + + private CompoundTag nbt; + + private String bladeID; + private String handleID; + private String pommelID; + private String crossGuardID; + + public DynamicShardbladeData() + { + this.nbt = new CompoundTag(); + + this.bladeID = "blade_" + MathHelper.randomInt(1, ShardbladeModel.TOTAL_BLADE_IDS); + this.handleID = "handle_" + MathHelper.randomInt(1, ShardbladeModel.TOTAL_HANDLE_IDS); + this.pommelID = "pommel_" + MathHelper.randomInt(1, ShardbladeModel.TOTAL_POMMEL_IDS); + this.crossGuardID = "crossguard_" + MathHelper.randomInt(1, ShardbladeModel.TOTAL_CROSS_GUARD_IDS); + } + + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability capability, @Nullable Direction facing) + { + return ShardbladeDynamicItem.CAPABILITY.orEmpty(capability, opt); + } + + @Override + public CompoundTag serializeNBT() + { + if (this.nbt == null) + { + this.nbt = new CompoundTag(); + } + + this.nbt.putString("bladeID", this.bladeID); + this.nbt.putString("handleID", this.handleID); + this.nbt.putString("pommelID", this.pommelID); + this.nbt.putString("crossguardID", this.crossGuardID); + + return this.nbt; + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + this.nbt = nbt; + + this.bladeID = nbt.getString("bladeID"); + this.handleID = nbt.getString("handleID"); + this.pommelID = nbt.getString("pommelID"); + this.crossGuardID = nbt.getString("crossguardID"); + } + + @Override + public String getBladeID() + { + return bladeID; + } + + @Override + public String getHandleID() + { + return handleID; + } + + @Override + public String getPommelID() + { + return pommelID; + } + + @Override + public String getCrossGuardID() + { + return crossGuardID; + } +} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/IShardbladeDynamicData.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/IShardbladeDynamicData.java new file mode 100644 index 000000000..14d08b81e --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/IShardbladeDynamicData.java @@ -0,0 +1,19 @@ +/* + * File updated ~ 6 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.capabilities; + +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.util.INBTSerializable; + +public interface IShardbladeDynamicData extends INBTSerializable +{ + String getBladeID(); + + String getHandleID(); + + String getPommelID(); + + String getCrossGuardID(); +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeDynamicItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeDynamicItem.java new file mode 100644 index 000000000..b449f56cb --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeDynamicItem.java @@ -0,0 +1,73 @@ +/* + * File updated ~ 6 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.items; + +import leaf.cosmere.surgebinding.client.render.renderer.ShardbladeItemRenderer; +import leaf.cosmere.surgebinding.common.capabilities.DynamicShardbladeData; +import leaf.cosmere.surgebinding.common.capabilities.IShardbladeDynamicData; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Tier; +import net.minecraftforge.client.extensions.common.IClientItemExtensions; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityToken; +import net.minecraftforge.common.capabilities.ICapabilityProvider; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; + +public class ShardbladeDynamicItem extends ShardbladeItem +{ + public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() + { + }); + + + public ShardbladeDynamicItem(Tier tier, int attackDamageIn, float attackSpeedIn, Properties builderIn) + { + super(tier, attackDamageIn, attackSpeedIn, builderIn); + } + + @Override + public @Nullable ICapabilityProvider initCapabilities(ItemStack stack, @Nullable CompoundTag nbt) + { + final DynamicShardbladeData dynamicShardbladeData = new DynamicShardbladeData(); + + if (nbt != null) + { + dynamicShardbladeData.deserializeNBT(nbt); // todo check if this breaks things? + } + + return dynamicShardbladeData; + } + + @Override + public void initializeClient(Consumer consumer) + { + //the class instance hasn't been resolved yet at this point, so we can't check for field values + + consumer.accept(new IClientItemExtensions() + { + ShardbladeItemRenderer renderer = null; + + @Override + public BlockEntityWithoutLevelRenderer getCustomRenderer() + { + Minecraft minecraft = Minecraft.getInstance(); + + if (renderer == null) + { + renderer = new ShardbladeItemRenderer(minecraft.getBlockEntityRenderDispatcher(), minecraft.getEntityModels()); + } + + return renderer; + } + }); + } + +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java index d65522fa8..be84fcecb 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/ShardbladeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 4 - 2 - 2025 ~ Leaf + * File updated ~ 6 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.items; @@ -36,19 +36,19 @@ public boolean canApplyAtEnchantingTable(ItemStack stack, Enchantment enchantmen } @Override - public int getEnchantmentValue(ItemStack stack) + public int getEnchantmentValue(ItemStack itemStack) { return 20; } @Override - public boolean isEnchantable(ItemStack pStack) + public boolean isEnchantable(ItemStack itemStack) { return true; } @Override - public boolean isFoil(ItemStack pStack) + public boolean isFoil(ItemStack itemStack) { //no shiny. return false; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java index 0b13bd564..91a4c05e5 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingItems.java @@ -1,5 +1,5 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 6 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; @@ -35,6 +35,7 @@ private SurgebindingItems() public static final ItemRegistryObject NIGHTBLOOD = ITEMS.register("nightblood", () -> new NightbloodItem(SHARDBLADE_ITEM_TIER, 24, -2.4F, PropTypes.Items.SHARDBLADE.get())); public static final ItemRegistryObject TEST_BLADE = ITEMS.register("test_blade", () -> new ShardbladeItem(SHARDBLADE_ITEM_TIER, 10, -2.4F, PropTypes.Items.SHARDBLADE.get())); + public static final ItemRegistryObject SHARDBLADE = ITEMS.register("shardblade", () -> new ShardbladeDynamicItem(SHARDBLADE_ITEM_TIER, 24, -2.4F, PropTypes.Items.SHARDBLADE.get())); public static final ItemRegistryObject MASTER_SWORD = ITEMS.register("master_sword", () -> new ShardbladeItem(SHARDBLADE_ITEM_TIER, 10, -2.4F, PropTypes.Items.SHARDBLADE.get())); public static final ItemRegistryObject SHARDPLATE_HELMET = ITEMS.register("shardplate_helmet", () -> new ShardplateItem(ShardplateArmorMaterial.DEADPLATE, ArmorItem.Type.HELMET, PropTypes.Items.SHARDBLADE.get())); diff --git a/src/surgebinding/resources/META-INF/accesstransformer.cfg b/src/surgebinding/resources/META-INF/accesstransformer.cfg index 54c13be13..7d0daf006 100644 --- a/src/surgebinding/resources/META-INF/accesstransformer.cfg +++ b/src/surgebinding/resources/META-INF/accesstransformer.cfg @@ -1 +1,2 @@ -public net.minecraft.world.damagesource.CombatTracker f_19281_ #inCombat \ No newline at end of file +public net.minecraft.world.damagesource.CombatTracker f_19281_ #inCombat +protected net.minecraft.client.renderer.BlockEntityWithoutLevelRenderer f_172548_ \ No newline at end of file diff --git a/src/surgebinding/resources/assets/surgebinding/models/item/shardblade.json b/src/surgebinding/resources/assets/surgebinding/models/item/shardblade.json new file mode 100644 index 000000000..701161490 --- /dev/null +++ b/src/surgebinding/resources/assets/surgebinding/models/item/shardblade.json @@ -0,0 +1,44 @@ +{ + "parent": "builtin/entity", + "gui_light": "front", + "textures": { + "particle": "surgebinding:item/models/shardblade/dynamic" + }, + "display": { + "thirdperson_righthand": { + "rotation": [ 0, 60, 0 ], + "translation": [ 11, 17, -2 ], + "scale": [ 1, 1, 1 ] + }, + "thirdperson_lefthand": { + "rotation": [ 0, 60, 0 ], + "translation": [ 3, 17, 12 ], + "scale": [ 1, 1, 1 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ -3, 17, 1], + "scale": [ 1, 1, 1 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 90, -25 ], + "translation": [ 13, 17, 1], + "scale": [ 1, 1, 1 ] + }, + "gui": { + "rotation": [ 15, -25, -5 ], + "translation": [ 2, 3, 0 ], + "scale": [ 0.65, 0.65, 0.65 ] + }, + "fixed": { + "rotation": [ 0, 180, 0 ], + "translation": [ -2, 4, -5], + "scale":[ 0.5, 0.5, 0.5] + }, + "ground": { + "rotation": [ 0, 0, 0 ], + "translation": [ 4, 4, 2], + "scale":[ 0.25, 0.25, 0.25] + } + } +} diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png b/src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png new file mode 100644 index 0000000000000000000000000000000000000000..9483f38b3dbec7bc01aea9dbc47c0b0bfadc2b7f GIT binary patch literal 383 zcmV-_0f7FAP)Px$IY~r8R9J=WmoZBNF&Kv5$Uy}=okI`mAlSpd;C?^CpU}PCia)`0u#?kq!_mpj z)m@x#DYRh0LWHh@PI0(P`qA7qRa&y-oie=Sd-8ty0%551Tr4FlO8LZQ!BcwAtR|w9 zznG69mIy8ZAS(J+^W)nC03f(sTfL`Om2G0>iUd)*}GQ(z?U5)GNUlzH0Lr^~5nbT|Mb zfkbdQ73HP;CQ%Q1U!HT@Bkjb19$-E0M?(;e?)&n dRO&ZG^$RVgYI3qP^Yj1!002ovPDHLkV1gU@tgQe5 literal 0 HcmV?d00001 From 809de07c703d09ca3861010d4fdb2f4e3566e390 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Sun, 9 Feb 2025 19:43:12 -0500 Subject: [PATCH 0991/1090] fixes formating issues Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../client/AllomancyKeybindings.java | 3 +- src/api/java/leaf/cosmere/api/Activator.java | 16 ++++++---- .../patchouli/PatchouliAllomancyCategory.java | 1 - .../client/FeruchemyKeybindings.java | 9 ++++-- .../cosmere/client/ClientForgeEvents.java | 30 +++++++++++-------- .../client/SurgebindingKeybindings.java | 9 ++---- 6 files changed, 38 insertions(+), 30 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java index dbd8ec163..af248f631 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java @@ -54,7 +54,8 @@ public static void register(RegisterKeyMappingsEvent event) - for (Metals.MetalType metalType: ALLOMANCY_POWER.keySet()){ + for (Metals.MetalType metalType: ALLOMANCY_POWER.keySet()) + { KeyMapping key = ALLOMANCY_POWER.get(metalType); AllomancyManifestation manifest = ALLOMANCY_POWERS.get(metalType).getManifestation(); event.register(key); diff --git a/src/api/java/leaf/cosmere/api/Activator.java b/src/api/java/leaf/cosmere/api/Activator.java index 87f31152f..74cde4e47 100644 --- a/src/api/java/leaf/cosmere/api/Activator.java +++ b/src/api/java/leaf/cosmere/api/Activator.java @@ -3,7 +3,8 @@ import leaf.cosmere.api.manifestation.Manifestation; import net.minecraft.client.KeyMapping; -public class Activator { +public class Activator +{ public KeyMapping keyMapping; public Manifestation manifest; @@ -11,21 +12,24 @@ public class Activator { public String category; public String keyName; - public Activator(KeyMapping key, Manifestation manifestation){ + public Activator(KeyMapping key, Manifestation manifestation) + { keyMapping = key; manifest = manifestation; } - public void setCategory(String category){ + public void setCategory(String category) + { this.category = category; name = manifest.getName(); } - public KeyMapping getKeyMapping() { - return keyMapping; - } + public KeyMapping getKeyMapping() + { + return keyMapping; + } public Manifestation getManifestation() {return manifest;} public String getCategory() {return category;} diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java index d43034996..be283c407 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/patchouli/PatchouliAllomancyCategory.java @@ -9,7 +9,6 @@ import leaf.cosmere.api.Constants; import leaf.cosmere.api.Metals; import leaf.cosmere.api.text.StringHelper; -import leaf.cosmere.client.Keybindings; import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; import leaf.cosmere.patchouli.data.BookStuff; import leaf.cosmere.patchouli.data.PatchouliTextFormat; diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java index 257cd4a37..e427230b9 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java @@ -19,11 +19,13 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static leaf.cosmere.api.Constants.Strings.*; +import static leaf.cosmere.api.Constants.Strings.KEYS_CATEGORY; +import static leaf.cosmere.api.Constants.Strings.KEY_FERUCHEMY; import static leaf.cosmere.feruchemy.common.registries.FeruchemyManifestations.FERUCHEMY_POWERS; @Mod.EventBusSubscriber(value = Dist.CLIENT, modid = Feruchemy.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) -public class FeruchemyKeybindings { +public class FeruchemyKeybindings +{ public static final Map FERUCHEMY_POWER = Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasAssociatedManifestation) @@ -36,7 +38,8 @@ public class FeruchemyKeybindings { @SubscribeEvent public static void register(RegisterKeyMappingsEvent event) { - for (Metals.MetalType metalType: FERUCHEMY_POWER.keySet()){ + for (Metals.MetalType metalType : FERUCHEMY_POWER.keySet()) + { KeyMapping key = FERUCHEMY_POWER.get(metalType); FeruchemyManifestation manifest = FERUCHEMY_POWERS.get(metalType).getManifestation(); event.register(key); diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index c3553cc7a..77949b29f 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -5,9 +5,7 @@ package leaf.cosmere.client; import leaf.cosmere.api.Activator; -import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.client.gui.SpiritwebMenu; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.fog.FogManager; @@ -15,7 +13,6 @@ import leaf.cosmere.common.network.packets.ChangeSelectedManifestationMessage; import leaf.cosmere.common.network.packets.DeactivateManifestationsMessage; import leaf.cosmere.common.network.packets.SetSelectedManifestationMessage; -import leaf.cosmere.common.registration.impl.ManifestationRegistryObject; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; @@ -25,9 +22,10 @@ import net.minecraft.world.InteractionHand; import net.minecraft.world.item.ItemStack; import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.client.event.*; +import net.minecraftforge.client.event.ClientPlayerNetworkEvent; +import net.minecraftforge.client.event.InputEvent; import net.minecraftforge.client.event.InputEvent.MouseScrollingEvent; -import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; +import net.minecraftforge.client.event.RenderLevelStageEvent; import net.minecraftforge.eventbus.api.EventPriority; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -107,16 +105,20 @@ else if (Screen.hasControlDown()) Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected, modeIncreasePressed ? modifier : -modifier)); } - for(Activator activator: Keybindings.activators){ - if (isKeyPressed(event, activator.getKeyMapping())){ + for (Activator activator : Keybindings.activators) + { + if (isKeyPressed(event, activator.getKeyMapping())) + { Manifestation manifestation = activator.getManifestation(); Cosmere.packetHandler().sendToServer(new SetSelectedManifestationMessage(manifestation)); selected = manifestation; int modifier = -selected.getMode(spiritweb); - if (!selected.isActive(spiritweb)) { - if(activator.getCategory().equals("feruchemy")){ + if (!selected.isActive(spiritweb)) + { + if (activator.getCategory().equals("feruchemy")) + { if (Screen.hasShiftDown() && Screen.hasControlDown()) { modifier -= 5; @@ -134,7 +136,8 @@ else if (Screen.hasShiftDown()) } Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); } - else { + else + { if (Screen.hasShiftDown() && Screen.hasControlDown()) { modifier -= 2; @@ -147,12 +150,15 @@ else if (Screen.hasShiftDown()) { modifier += 2; } - else { + else + { modifier += 1; } Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); } - } else { + } + else + { Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index 80adc6df3..ed40c93e9 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -6,11 +6,9 @@ import leaf.cosmere.api.Activator; import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.Roshar; import leaf.cosmere.client.Keybindings; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.capabilities.world.RosharCapability; import leaf.cosmere.surgebinding.common.manifestation.SurgebindingManifestation; import net.minecraft.client.KeyMapping; import net.minecraftforge.api.distmarker.Dist; @@ -20,7 +18,6 @@ import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus; import org.lwjgl.glfw.GLFW; - import java.util.Arrays; import java.util.Map; import java.util.function.Function; @@ -29,9 +26,6 @@ import static leaf.cosmere.api.Constants.Strings.*; import static leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations.SURGEBINDING_POWERS; -import static leaf.cosmere.api.Constants.Strings.KEY_BREATHE_STORMLIGHT; -import static leaf.cosmere.api.Constants.Strings.KEY_SHARDBLADE; - // Really only has its own file to more nicely reference keybindings. // Otherwise, could have lived in mod client events @@ -55,7 +49,8 @@ public static void register(RegisterKeyMappingsEvent event) event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, KEYS_CATEGORY)); - for (Roshar.Surges surge: SURGEBINDING_POWER.keySet()){ + for (Roshar.Surges surge: SURGEBINDING_POWER.keySet()) + { KeyMapping key = SURGEBINDING_POWER.get(surge); SurgebindingManifestation manifest = (SurgebindingManifestation) SURGEBINDING_POWERS.get(surge).getManifestation(); event.register(key); From 7204857e4f04017b2257010ac6e2a6520bc0f994 Mon Sep 17 00:00:00 2001 From: Roseplate <66807484+Roseplate@users.noreply.github.com> Date: Mon, 10 Feb 2025 13:59:12 +0000 Subject: [PATCH 0992/1090] SL Keybinds. PLEASE LOOK OVER. I think it works? --- src/api/java/leaf/cosmere/api/Constants.java | 1 + .../client/SurgebindingForgeClientEvents.java | 6 +- .../client/SurgebindingKeybindings.java | 5 +- .../SurgebindingSpiritwebSubmodule.java | 208 +++++++++++++++++- .../config/SurgebindingServerConfig.java | 2 + .../network/SurgebindingPacketHandler.java | 2 + .../network/packets/BreatheStormlight.java | 43 +--- .../network/packets/DrawStormlight.java | 69 ++++++ 8 files changed, 281 insertions(+), 55 deletions(-) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index ceebe09a7..ff874a554 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -101,6 +101,7 @@ public static class Strings public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; + public static final String KEY_DRAW_STORMLIGHT = "key.cosmere.stormlight.draw_stormlight"; public static final String KEY_BREATHE_STORMLIGHT = "key.cosmere.stormlight.breathe_stormlight"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java index 22535c75f..a58a9034b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java @@ -7,6 +7,7 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; +import leaf.cosmere.surgebinding.common.network.packets.DrawStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -41,6 +42,10 @@ public static void onKey(InputEvent.Key event) { Surgebinding.packetHandler().sendToServer(new BreatheStormlight()); } + if (isKeyPressed(event, SurgebindingKeybindings.DRAW_STORMLIGHT)) + { + Surgebinding.packetHandler().sendToServer(new DrawStormlight()); + } }); } @@ -49,5 +54,4 @@ private static boolean isKeyPressed(InputEvent.Key event, KeyMapping keyBinding) return event.getKey() == keyBinding.getKey().getValue() && keyBinding.consumeClick(); } - } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index ed40c93e9..1711cca69 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -26,13 +26,13 @@ import static leaf.cosmere.api.Constants.Strings.*; import static leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations.SURGEBINDING_POWERS; - // Really only has its own file to more nicely reference keybindings. // Otherwise, could have lived in mod client events @Mod.EventBusSubscriber(value = Dist.CLIENT, modid = Surgebinding.MODID, bus = Bus.MOD) public class SurgebindingKeybindings { public static KeyMapping SHARDBLADE; + public static KeyMapping DRAW_STORMLIGHT; public static KeyMapping BREATHE_STORMLIGHT; public static final Map SURGEBINDING_POWER = @@ -60,7 +60,8 @@ public static void register(RegisterKeyMappingsEvent event) } event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, "keys.surgebinding.main")); - event.register(BREATHE_STORMLIGHT = new KeyMapping(KEY_BREATHE_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); + event.register(DRAW_STORMLIGHT = new KeyMapping(KEY_DRAW_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); + event.register(BREATHE_STORMLIGHT = new KeyMapping(KEY_BREATHE_STORMLIGHT, GLFW.GLFW_KEY_Y, "keys.surgebinding.main")); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index e5a7f9235..43f363083 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -9,31 +9,45 @@ import leaf.cosmere.api.Roshar; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.items.CapWrapper; import leaf.cosmere.surgebinding.common.capabilities.ideals.IdealsManager; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.items.GemstoneItem; import leaf.cosmere.surgebinding.common.items.tiers.ShardplateArmorMaterial; import leaf.cosmere.surgebinding.common.manifestation.SurgeProgression; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; import net.minecraft.nbt.CompoundTag; import net.minecraft.util.Mth; +import net.minecraft.world.Container; +import net.minecraft.world.InteractionHand; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.ItemStack; import net.minecraftforge.event.ServerChatEvent; +import net.minecraftforge.items.wrapper.PlayerInvWrapper; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.stream.Stream; public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule { //stormlight stored - private int stormlightStored = 0; private Roshar.RadiantOrder heraldOrder = null; + //Since I'm referencing it so often. For readability if nothing else + int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); + + //Somewhat temporary value. How fast stormlight is drawn in/breathed out. Maybe make this a config value? + int drawSpeed = SurgebindingConfigs.SERVER.PLAYER_DRAW_SPEED.get(); + //a little ew, I'd rather this in an enum utils, but it's the only place that needs it public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); IdealsManager idealsManager = new IdealsManager(); @@ -96,15 +110,8 @@ public void tickServer(ISpiritweb spiritweb) //tick stormlight if (isOathed()) { - if (livingEntity.level().isThundering() - && livingEntity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) - && livingEntity.level().isRainingAt(livingEntity.blockPosition())) - { - //if player has max of 1000, it will take just under a minute to spend? - //in the books, it's almost instantly full - final int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); - stormlightStored = maxPlayerStormlight; - } + + //Moved the highstorm check into it's own method that's called by draw stormlight, so the player can choose to draw in stormlight from a highstorm. if (stormlightStored > 0 && surgebindingActiveTick) { @@ -187,6 +194,7 @@ else if (livingEntity.isUnderWater()) //todo oathed radiant shardplate stormlight cost //todo deadplate stormlight cost + //Didn't deadplate draw reallyy quickly from Kaladin when he was using the 'gauntlet' in the duel? stormlightStored--; break; } @@ -195,6 +203,182 @@ else if (livingEntity.isUnderWater()) } } + + private void drawGem(ItemStack item, int amountDrawn) { + GemstoneItem gemstoneItem = (GemstoneItem) item.getItem(); + + int availableSpace = maxPlayerStormlight - stormlightStored; + + if (availableSpace < amountDrawn) { + amountDrawn = availableSpace; + } + + if (gemstoneItem.getCharge(item) >= amountDrawn) { + gemstoneItem.adjustCharge(item, -amountDrawn); + stormlightStored += amountDrawn; + } + else + { + stormlightStored += gemstoneItem.getCharge(item); + gemstoneItem.setCharge(item, 0); + } + } + + //Called by DrawStormlight packet. + public void drawStormlight() { + + final LivingEntity entity = spiritweb.getLiving(); + + + if (isInHighstorm(entity)) + { + if (maxPlayerStormlight - stormlightStored >= drawSpeed) { + stormlightStored += drawSpeed; + } + else { + stormlightStored += maxPlayerStormlight - stormlightStored; + } + } + else if (entity instanceof Player player) + { + + ItemStack item = entity.getItemInHand(InteractionHand.MAIN_HAND); + + if (item.getItem() instanceof GemstoneItem gemstoneItem && gemstoneItem.getCharge(item) != 0) { + drawGem(item, drawSpeed); + } + else + { + List invItems = getGemItems(player); + + List chargedGems = invItems.stream() + .filter(gem -> ((GemstoneItem) gem.getItem()).getCharge(gem) > 0) + .toList(); + + int gemAmount = chargedGems.size(); + + if (!chargedGems.isEmpty()) { + + int draw = drawSpeed / gemAmount; + + for (ItemStack gem : chargedGems) { + + drawGem(gem, draw); + + } + } + + } + + } + + } + + + private void breatheGem(ItemStack item, int amountDrawn) { + GemstoneItem gemstoneItem = (GemstoneItem) item.getItem(); + + int availableSpace = gemstoneItem.getMaxCharge(item) - gemstoneItem.getCharge(item); + + if (availableSpace < amountDrawn) { + amountDrawn = availableSpace; + } + + if (stormlightStored >= amountDrawn) { + gemstoneItem.adjustCharge(item, amountDrawn); + adjustStormlight(-amountDrawn, true); + } + else + { + gemstoneItem.adjustCharge(item, stormlightStored); + stormlightStored = 0; + } + } + + //Called by BreatheStormlight packet. + public void breatheStormlight() { + + final LivingEntity entity = spiritweb.getLiving(); + + if (entity instanceof Player player) + { + + ItemStack handItem = player.getItemInHand(InteractionHand.MAIN_HAND); + + //If the hand item is a gemstone focus on that one. + if (handItem.getItem() instanceof GemstoneItem gemstoneItem) + { + breatheGem(handItem, drawSpeed); + } + //Otherwise affect all gemstoneItems in inventory. + else + { + List invItems = getGemItems(player); + + //Get gems that are not fully charged. + List unchargedGems = invItems.stream() + .filter(gem -> + { + GemstoneItem gemstoneItem = (GemstoneItem) gem.getItem(); + return (gemstoneItem.getMaxCharge(gem) - gemstoneItem.getCharge(gem)) > 0; + }).toList(); + + //If there are none, just breathe out into air. + if (unchargedGems.isEmpty()) + { + adjustStormlight(-drawSpeed, true); + } + else + { + int breatheAmount = drawSpeed / unchargedGems.size(); + + //For every gem that is not fully charged. + for (ItemStack gem : unchargedGems) + { + breatheGem(gem, breatheAmount); + } + } + + } + + } + } + + //TODO Replace with proper method once highstorms have been added. + public static boolean isInHighstorm(LivingEntity entity) { + if (entity.level().isThundering() + && entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) + && entity.level().isRainingAt(entity.blockPosition())) + { + return true; + } + return false; + } + + public static List getGemItems(Player player) + { + if (player == null) + { + return Collections.emptyList(); + } + + Container acc = new CapWrapper(new PlayerInvWrapper(player.getInventory())); + + List toReturn = new ArrayList<>(acc.getContainerSize()); + + for (int slot = 0; slot < acc.getContainerSize(); slot++) + { + ItemStack stackInSlot = acc.getItem(slot); + + if (!stackInSlot.isEmpty() && stackInSlot.getItem() instanceof GemstoneItem) + { + toReturn.add(stackInSlot); + } + } + return toReturn; + } + + public int getStormlight() { return stormlightStored; @@ -209,7 +393,7 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) { if (doAdjust) { - stormlightStored = Mth.clamp(newSLValue, 0, SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); + stormlightStored = Mth.clamp(newSLValue, 0, maxPlayerStormlight); } return true; @@ -220,7 +404,7 @@ public boolean adjustStormlight(int amountToAdjust, boolean doAdjust) public void setStormlight(int amount) { - stormlightStored = Mth.clamp(amount, 0, SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); + stormlightStored = Mth.clamp(amount, 0, maxPlayerStormlight); } public void onChatMessageReceived(ServerChatEvent event) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java index 283c086bd..fcfa16e2b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/config/SurgebindingServerConfig.java @@ -18,6 +18,7 @@ public class SurgebindingServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue MAX_SHARDBLADES; public final ForgeConfigSpec.IntValue PLAYER_MAX_STORMLIGHT; + public final ForgeConfigSpec.IntValue PLAYER_DRAW_SPEED; public final ForgeConfigSpec.IntValue STORMLIGHT_DRAIN_RATE; public final ForgeConfigSpec.IntValue PROGRESSION_BONEMEAL_COST; public final ForgeConfigSpec.IntValue PROGRESSION_HEAL_COST; @@ -40,6 +41,7 @@ public class SurgebindingServerConfig implements ICosmereConfig MAX_SHARDBLADES = builder.comment("How many shardblades total that the user can bond").defineInRange("shardbladeBondAmount", 10, 0, 20); PLAYER_MAX_STORMLIGHT = builder.comment("How much stormlight can a player hold at once").defineInRange("playerMaxStormlight", 5000, 100, 20000); + PLAYER_DRAW_SPEED = builder.comment("How fast a player draws in or breathes out stormlight using keybinds.").defineInRange("playerDrawSpeed", 150, 5, 20000); STORMLIGHT_DRAIN_RATE = builder.comment("How many points of stormlight drain per second").defineInRange("stormlightDrainRate", 5, 1, 100); PROGRESSION_BONEMEAL_COST = builder.comment("How many points of stormlight to trigger the bonemeal effect").defineInRange("progressionBonemealStormlightCost", 20, 1, 1000); PROGRESSION_HEAL_COST = builder.comment("How many points of stormlight per half a heart healed").defineInRange("progressionHealStormlightCost", 20, 1, 1000); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java index ab6d0ab67..7706557cd 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java @@ -7,6 +7,7 @@ import leaf.cosmere.common.network.BasePacketHandler; import leaf.cosmere.surgebinding.common.Surgebinding; import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; +import leaf.cosmere.surgebinding.common.network.packets.DrawStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraftforge.network.simple.SimpleChannel; @@ -25,6 +26,7 @@ public void initialize() { registerClientToServer(SummonShardblade.class, SummonShardblade::new); registerClientToServer(BreatheStormlight.class, BreatheStormlight::new); + registerClientToServer(DrawStormlight.class, DrawStormlight::new); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java index 2212af1a6..4e8a508ee 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java @@ -50,49 +50,12 @@ public void handle(NetworkEvent.Context context) if (ssm != null) { - if (ssm.isHerald()) + if (ssm.getStormlight() != 0) { - //heralds had a direct line to honor's investiture - ssm.setStormlight(SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); - } - else if (ssm.isOathed()) - { - int stormlight = ssm.getStormlight(); - int remainingRequestable = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get() - stormlight; - int requestedSoFar = 0; - - List items = ItemChargeHelper.getChargeItems(sender); - List acc = ItemChargeHelper.getChargeCurios(sender); - - //todo replace request charge system - - items.removeIf((itemStack) -> !SUPPORTED.test(itemStack)); - acc.removeIf((itemStack) -> !SUPPORTED.test(itemStack)); - - - for (ItemStack stackInSlot : Iterables.concat(items, acc)) + if (ssm.isOathed() || ssm.isHerald()) { - if (remainingRequestable <= 0) - { - break; - } - - if (stackInSlot.getItem() instanceof IChargeable chargeable) - { - int charge = chargeable.getCharge(stackInSlot); - int maxCharge = chargeable.getMaxCharge(stackInSlot); - int chargeToRequest = Math.min(remainingRequestable, maxCharge - charge); - - if (chargeToRequest > 0) - { - chargeable.setCharge(stackInSlot, charge + chargeToRequest); - remainingRequestable -= chargeToRequest; - requestedSoFar += chargeToRequest; - } - } + ssm.breatheStormlight(); } - - ssm.adjustStormlight(requestedSoFar, true); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java new file mode 100644 index 000000000..51a964e5d --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java @@ -0,0 +1,69 @@ +/* + * File updated ~ 4 - 2 - 2025 ~ Leaf + */ + +package leaf.cosmere.surgebinding.common.network.packets; + +import com.google.common.collect.Iterables; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.charge.IChargeable; +import leaf.cosmere.common.charge.ItemChargeHelper; +import leaf.cosmere.common.network.ICosmerePacket; +import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; +import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import leaf.cosmere.surgebinding.common.items.GemstoneItem; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.item.ItemStack; +import net.minecraftforge.network.NetworkEvent; + +import java.util.List; +import java.util.function.Predicate; + +public class DrawStormlight implements ICosmerePacket +{ + + + public DrawStormlight() + { + } + + public DrawStormlight(FriendlyByteBuf buffer) + { + } + + @Override + public void handle(NetworkEvent.Context context) + { + ServerPlayer sender = context.getSender(); + MinecraftServer server = sender.getServer(); + server.submitAsync(() -> SpiritwebCapability.get(sender).ifPresent((cap) -> + { + SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(cap); + + if (ssm != null) + { + if (ssm.isHerald()) + { + //heralds had a direct line to honor's investiture + ssm.setStormlight(SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get()); + } + else if (ssm.isOathed()) + { + ssm.drawStormlight(); + } + } + + })); + context.setPacketHandled(true); + } + + + @Override + public void encode(FriendlyByteBuf buf) + { + + } + +} From 66d1961d65a340c27a8e3a9edeaaa430b026a57a Mon Sep 17 00:00:00 2001 From: Roseplate <66807484+Roseplate@users.noreply.github.com> Date: Mon, 10 Feb 2025 14:10:49 +0000 Subject: [PATCH 0993/1090] SL Keybinds. PLEASE LOOK OVER. I think it works? --- .../AllomancySpiritwebSubmodule.java | 4 +++- .../SurgebindingSpiritwebSubmodule.java | 10 +++------- .../network/packets/BreatheStormlight.java | 16 ---------------- .../common/network/packets/DrawStormlight.java | 8 -------- 4 files changed, 6 insertions(+), 32 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 637cc10f3..75e547e6a 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -106,7 +106,7 @@ public void tickClient(ISpiritweb spiritweb) } } - //brass allomancy + //zinc allomancy { AllomancyZinc zinc = (AllomancyZinc) AllomancyManifestations.ALLOMANCY_POWERS.get(Metals.MetalType.ZINC).get(); final boolean zincActive = zinc.isActive(spiritweb); @@ -132,6 +132,8 @@ public void tickServer(ISpiritweb spiritweb) { //todo decide how and when we poison the user for eating large amounts of metal, that sure ain't safe champ. //even if the user is immune to metal poisoning, it's still not safe to eat a bunch of metal. + //IIRC, it's safe until you start to digest it, that's why Kelsier recommends Vin burns off all her metals before sleeping. -Rose + //^^ To that effect, maybe have a counter that increments up when you have a metal ingested and increments slightly slower down over time when burning or faster when empty. When it's too high the player gets worse and worse? -Rose //todo, decide what's appropriate for reducing ingested metal amounts METALS_INGESTED.put(metalType, metalIngestAmount - 1); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index 43f363083..640ce2658 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -306,7 +306,7 @@ public void breatheStormlight() { ItemStack handItem = player.getItemInHand(InteractionHand.MAIN_HAND); //If the hand item is a gemstone focus on that one. - if (handItem.getItem() instanceof GemstoneItem gemstoneItem) + if (handItem.getItem() instanceof GemstoneItem) { breatheGem(handItem, drawSpeed); } @@ -346,13 +346,9 @@ public void breatheStormlight() { //TODO Replace with proper method once highstorms have been added. public static boolean isInHighstorm(LivingEntity entity) { - if (entity.level().isThundering() + return entity.level().isThundering() && entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) - && entity.level().isRainingAt(entity.blockPosition())) - { - return true; - } - return false; + && entity.level().isRainingAt(entity.blockPosition()); } public static List getGemItems(Player player) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java index 4e8a508ee..f8883b0c5 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java @@ -4,32 +4,16 @@ package leaf.cosmere.surgebinding.common.network.packets; -import com.google.common.collect.Iterables; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.charge.IChargeable; -import leaf.cosmere.common.charge.ItemChargeHelper; import leaf.cosmere.common.network.ICosmerePacket; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; -import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; -import leaf.cosmere.surgebinding.common.items.GemstoneItem; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent; -import java.util.List; -import java.util.function.Predicate; - public class BreatheStormlight implements ICosmerePacket { - public static final Predicate SUPPORTED = (itemStack) -> - { - return (itemStack.getItem() instanceof GemstoneItem gemstoneItem) - //&& containsMetal - //&& !isUncommonMetal - ; - }; public BreatheStormlight() { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java index 51a964e5d..6a13cfb77 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java @@ -4,23 +4,15 @@ package leaf.cosmere.surgebinding.common.network.packets; -import com.google.common.collect.Iterables; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.charge.IChargeable; -import leaf.cosmere.common.charge.ItemChargeHelper; import leaf.cosmere.common.network.ICosmerePacket; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; -import leaf.cosmere.surgebinding.common.items.GemstoneItem; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.item.ItemStack; import net.minecraftforge.network.NetworkEvent; -import java.util.List; -import java.util.function.Predicate; - public class DrawStormlight implements ICosmerePacket { From 5602997e789aefabca20ff32212efbd6a86170c6 Mon Sep 17 00:00:00 2001 From: Roseplate <66807484+Roseplate@users.noreply.github.com> Date: Mon, 10 Feb 2025 21:28:04 +0000 Subject: [PATCH 0994/1090] Naming Convention & Style fix --- src/api/java/leaf/cosmere/api/Constants.java | 4 +- .../client/SurgebindingForgeClientEvents.java | 12 ++--- .../client/SurgebindingKeybindings.java | 8 +-- .../SurgebindingSpiritwebSubmodule.java | 52 ++++++++++++------- .../network/SurgebindingPacketHandler.java | 8 +-- ...tormlight.java => DispatchStormlight.java} | 8 +-- ...Stormlight.java => RequestStormlight.java} | 8 +-- 7 files changed, 56 insertions(+), 44 deletions(-) rename src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/{BreatheStormlight.java => DispatchStormlight.java} (86%) rename src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/{DrawStormlight.java => RequestStormlight.java} (88%) diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index ff874a554..07667f602 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -101,8 +101,8 @@ public static class Strings public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; - public static final String KEY_DRAW_STORMLIGHT = "key.cosmere.stormlight.draw_stormlight"; - public static final String KEY_BREATHE_STORMLIGHT = "key.cosmere.stormlight.breathe_stormlight"; + public static final String KEY_REQUEST_STORMLIGHT = "key.cosmere.stormlight.request_stormlight"; + public static final String KEY_DISPATCH_STORMLIGHT = "key.cosmere.stormlight.dispatch_stormlight"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java index a58a9034b..74f0b5055 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingForgeClientEvents.java @@ -6,8 +6,8 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; -import leaf.cosmere.surgebinding.common.network.packets.DrawStormlight; +import leaf.cosmere.surgebinding.common.network.packets.DispatchStormlight; +import leaf.cosmere.surgebinding.common.network.packets.RequestStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; @@ -38,13 +38,13 @@ public static void onKey(InputEvent.Key event) Surgebinding.packetHandler().sendToServer(new SummonShardblade()); } - if (isKeyPressed(event, SurgebindingKeybindings.BREATHE_STORMLIGHT)) + if (isKeyPressed(event, SurgebindingKeybindings.DISPATCH_STORMLIGHT)) { - Surgebinding.packetHandler().sendToServer(new BreatheStormlight()); + Surgebinding.packetHandler().sendToServer(new DispatchStormlight()); } - if (isKeyPressed(event, SurgebindingKeybindings.DRAW_STORMLIGHT)) + if (isKeyPressed(event, SurgebindingKeybindings.REQUEST_STORMLIGHT)) { - Surgebinding.packetHandler().sendToServer(new DrawStormlight()); + Surgebinding.packetHandler().sendToServer(new RequestStormlight()); } }); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index 1711cca69..cc128ee46 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -32,8 +32,8 @@ public class SurgebindingKeybindings { public static KeyMapping SHARDBLADE; - public static KeyMapping DRAW_STORMLIGHT; - public static KeyMapping BREATHE_STORMLIGHT; + public static KeyMapping REQUEST_STORMLIGHT; + public static KeyMapping DISPATCH_STORMLIGHT; public static final Map SURGEBINDING_POWER = Arrays.stream(EnumUtils.SURGES) @@ -60,8 +60,8 @@ public static void register(RegisterKeyMappingsEvent event) } event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, "keys.surgebinding.main")); - event.register(DRAW_STORMLIGHT = new KeyMapping(KEY_DRAW_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); - event.register(BREATHE_STORMLIGHT = new KeyMapping(KEY_BREATHE_STORMLIGHT, GLFW.GLFW_KEY_Y, "keys.surgebinding.main")); + event.register(REQUEST_STORMLIGHT = new KeyMapping(KEY_REQUEST_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); + event.register(DISPATCH_STORMLIGHT = new KeyMapping(KEY_DISPATCH_STORMLIGHT, GLFW.GLFW_KEY_Y, "keys.surgebinding.main")); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index 640ce2658..dd8111889 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -204,7 +204,8 @@ else if (livingEntity.isUnderWater()) } - private void drawGem(ItemStack item, int amountDrawn) { + private void requestGemStormlight(ItemStack item, int amountDrawn) + { GemstoneItem gemstoneItem = (GemstoneItem) item.getItem(); int availableSpace = maxPlayerStormlight - stormlightStored; @@ -213,7 +214,8 @@ private void drawGem(ItemStack item, int amountDrawn) { amountDrawn = availableSpace; } - if (gemstoneItem.getCharge(item) >= amountDrawn) { + if (gemstoneItem.getCharge(item) >= amountDrawn) + { gemstoneItem.adjustCharge(item, -amountDrawn); stormlightStored += amountDrawn; } @@ -224,15 +226,17 @@ private void drawGem(ItemStack item, int amountDrawn) { } } - //Called by DrawStormlight packet. - public void drawStormlight() { + //Called by RequestStormlight packet. + public void requestStormlight() + { final LivingEntity entity = spiritweb.getLiving(); if (isInHighstorm(entity)) { - if (maxPlayerStormlight - stormlightStored >= drawSpeed) { + if (maxPlayerStormlight - stormlightStored >= drawSpeed) + { stormlightStored += drawSpeed; } else { @@ -244,8 +248,9 @@ else if (entity instanceof Player player) ItemStack item = entity.getItemInHand(InteractionHand.MAIN_HAND); - if (item.getItem() instanceof GemstoneItem gemstoneItem && gemstoneItem.getCharge(item) != 0) { - drawGem(item, drawSpeed); + if (item.getItem() instanceof GemstoneItem gemstoneItem && gemstoneItem.getCharge(item) != 0) + { + requestGemStormlight(item, drawSpeed); } else { @@ -257,13 +262,15 @@ else if (entity instanceof Player player) int gemAmount = chargedGems.size(); - if (!chargedGems.isEmpty()) { + if (!chargedGems.isEmpty()) + { - int draw = drawSpeed / gemAmount; + int requestAmount = drawSpeed / gemAmount; - for (ItemStack gem : chargedGems) { + for (ItemStack gem : chargedGems) + { - drawGem(gem, draw); + requestGemStormlight(gem, requestAmount); } } @@ -275,16 +282,19 @@ else if (entity instanceof Player player) } - private void breatheGem(ItemStack item, int amountDrawn) { + private void dispatchGemStormlight(ItemStack item, int amountDrawn) + { GemstoneItem gemstoneItem = (GemstoneItem) item.getItem(); int availableSpace = gemstoneItem.getMaxCharge(item) - gemstoneItem.getCharge(item); - if (availableSpace < amountDrawn) { + if (availableSpace < amountDrawn) + { amountDrawn = availableSpace; } - if (stormlightStored >= amountDrawn) { + if (stormlightStored >= amountDrawn) + { gemstoneItem.adjustCharge(item, amountDrawn); adjustStormlight(-amountDrawn, true); } @@ -295,8 +305,9 @@ private void breatheGem(ItemStack item, int amountDrawn) { } } - //Called by BreatheStormlight packet. - public void breatheStormlight() { + //Called by DispatchStormlight packet. + public void dispatchStormlight() + { final LivingEntity entity = spiritweb.getLiving(); @@ -308,7 +319,7 @@ public void breatheStormlight() { //If the hand item is a gemstone focus on that one. if (handItem.getItem() instanceof GemstoneItem) { - breatheGem(handItem, drawSpeed); + dispatchGemStormlight(handItem, drawSpeed); } //Otherwise affect all gemstoneItems in inventory. else @@ -330,12 +341,12 @@ public void breatheStormlight() { } else { - int breatheAmount = drawSpeed / unchargedGems.size(); + int dispatchAmount = drawSpeed / unchargedGems.size(); //For every gem that is not fully charged. for (ItemStack gem : unchargedGems) { - breatheGem(gem, breatheAmount); + dispatchGemStormlight(gem, dispatchAmount); } } @@ -345,7 +356,8 @@ public void breatheStormlight() { } //TODO Replace with proper method once highstorms have been added. - public static boolean isInHighstorm(LivingEntity entity) { + public static boolean isInHighstorm(LivingEntity entity) + { return entity.level().isThundering() && entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY) && entity.level().isRainingAt(entity.blockPosition()); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java index 7706557cd..d1782ef6b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/SurgebindingPacketHandler.java @@ -6,8 +6,8 @@ import leaf.cosmere.common.network.BasePacketHandler; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.network.packets.BreatheStormlight; -import leaf.cosmere.surgebinding.common.network.packets.DrawStormlight; +import leaf.cosmere.surgebinding.common.network.packets.DispatchStormlight; +import leaf.cosmere.surgebinding.common.network.packets.RequestStormlight; import leaf.cosmere.surgebinding.common.network.packets.SummonShardblade; import net.minecraftforge.network.simple.SimpleChannel; @@ -25,8 +25,8 @@ protected SimpleChannel getChannel() public void initialize() { registerClientToServer(SummonShardblade.class, SummonShardblade::new); - registerClientToServer(BreatheStormlight.class, BreatheStormlight::new); - registerClientToServer(DrawStormlight.class, DrawStormlight::new); + registerClientToServer(DispatchStormlight.class, DispatchStormlight::new); + registerClientToServer(RequestStormlight.class, RequestStormlight::new); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DispatchStormlight.java similarity index 86% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DispatchStormlight.java index f8883b0c5..60c0f18a2 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/BreatheStormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DispatchStormlight.java @@ -12,14 +12,14 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; -public class BreatheStormlight implements ICosmerePacket +public class DispatchStormlight implements ICosmerePacket { - public BreatheStormlight() + public DispatchStormlight() { } - public BreatheStormlight(FriendlyByteBuf buffer) + public DispatchStormlight(FriendlyByteBuf buffer) { } @@ -38,7 +38,7 @@ public void handle(NetworkEvent.Context context) { if (ssm.isOathed() || ssm.isHerald()) { - ssm.breatheStormlight(); + ssm.dispatchStormlight(); } } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/RequestStormlight.java similarity index 88% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/RequestStormlight.java index 6a13cfb77..d16fbfe4a 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/DrawStormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/network/packets/RequestStormlight.java @@ -13,15 +13,15 @@ import net.minecraft.server.level.ServerPlayer; import net.minecraftforge.network.NetworkEvent; -public class DrawStormlight implements ICosmerePacket +public class RequestStormlight implements ICosmerePacket { - public DrawStormlight() + public RequestStormlight() { } - public DrawStormlight(FriendlyByteBuf buffer) + public RequestStormlight(FriendlyByteBuf buffer) { } @@ -43,7 +43,7 @@ public void handle(NetworkEvent.Context context) } else if (ssm.isOathed()) { - ssm.drawStormlight(); + ssm.requestStormlight(); } } From a26dee7fdc948ceda5aec62850f7b20f4f72be73 Mon Sep 17 00:00:00 2001 From: Roseplate <66807484+Roseplate@users.noreply.github.com> Date: Mon, 10 Feb 2025 21:35:09 +0000 Subject: [PATCH 0995/1090] Naming Convention & Style fix (Cont. bc Rose is a moron) --- src/api/java/leaf/cosmere/api/Constants.java | 2 +- .../surgebinding/client/SurgebindingKeybindings.java | 8 ++++---- .../capabilities/SurgebindingSpiritwebSubmodule.java | 6 ++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 07667f602..88abeada4 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -101,7 +101,7 @@ public static class Strings public static final String KEY_ALLOMANCY_RIOT = "key.cosmere.allomancy.riot"; public static final String KEY_SHARDBLADE = "key.cosmere.stormlight.shardblade"; - public static final String KEY_REQUEST_STORMLIGHT = "key.cosmere.stormlight.request_stormlight"; + public static final String KEY_REQUEST_STORMLIGHT = "key.cosmere.stormlight.request_stormlight"; public static final String KEY_DISPATCH_STORMLIGHT = "key.cosmere.stormlight.dispatch_stormlight"; public static final String TOOLTIP_ITEM_INFO = "tooltip.item.info."; public static final String CONTAINED_POWERS_FOUND = "tooltip.cosmere.power.found"; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index cc128ee46..fdbbdd506 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -35,12 +35,12 @@ public class SurgebindingKeybindings public static KeyMapping REQUEST_STORMLIGHT; public static KeyMapping DISPATCH_STORMLIGHT; - public static final Map SURGEBINDING_POWER = + public static final Map SURGEBINDING_POWER = Arrays.stream(EnumUtils.SURGES) .collect(Collectors.toMap( Function.identity(), surge -> - new KeyMapping(KEY_STORMLIGHT + surge.getName(),GLFW.GLFW_KEY_UNKNOWN,KEYS_CATEGORY) + new KeyMapping(KEY_STORMLIGHT + surge.getName(), GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY) )); @SubscribeEvent @@ -49,7 +49,7 @@ public static void register(RegisterKeyMappingsEvent event) event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, KEYS_CATEGORY)); - for (Roshar.Surges surge: SURGEBINDING_POWER.keySet()) + for (Roshar.Surges surge : SURGEBINDING_POWER.keySet()) { KeyMapping key = SURGEBINDING_POWER.get(surge); SurgebindingManifestation manifest = (SurgebindingManifestation) SURGEBINDING_POWERS.get(surge).getManifestation(); @@ -60,7 +60,7 @@ public static void register(RegisterKeyMappingsEvent event) } event.register(SHARDBLADE = new KeyMapping(KEY_SHARDBLADE, GLFW.GLFW_KEY_X, "keys.surgebinding.main")); - event.register(REQUEST_STORMLIGHT = new KeyMapping(KEY_REQUEST_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); + event.register(REQUEST_STORMLIGHT = new KeyMapping(KEY_REQUEST_STORMLIGHT, GLFW.GLFW_KEY_Z, "keys.surgebinding.main")); event.register(DISPATCH_STORMLIGHT = new KeyMapping(KEY_DISPATCH_STORMLIGHT, GLFW.GLFW_KEY_Y, "keys.surgebinding.main")); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index dd8111889..fe6c51770 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -210,7 +210,8 @@ private void requestGemStormlight(ItemStack item, int amountDrawn) int availableSpace = maxPlayerStormlight - stormlightStored; - if (availableSpace < amountDrawn) { + if (availableSpace < amountDrawn) + { amountDrawn = availableSpace; } @@ -239,7 +240,8 @@ public void requestStormlight() { stormlightStored += drawSpeed; } - else { + else + { stormlightStored += maxPlayerStormlight - stormlightStored; } } From 05da35064f4b66227fe3d91ffb700cdff0a9d6f2 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Wed, 19 Feb 2025 23:14:33 +0100 Subject: [PATCH 0996/1090] [Cosmere] Fix invalid player data message on creating new world without either feruchemy or allomancy installed --- .../eventHandlers/EntityEventHandler.java | 79 +++++++++++++++---- 1 file changed, 64 insertions(+), 15 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 06b3377ab..ab7813852 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -37,6 +37,7 @@ import net.minecraftforge.event.entity.living.LivingHurtEvent; import net.minecraftforge.event.entity.living.LootingLevelEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.common.Mod; import net.minecraftforge.registries.ForgeRegistries; @@ -162,16 +163,36 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe final Metals.MetalType allomancyMetal = Metals.MetalType.valueOf(allomancyPowerID).get(); final Metals.MetalType feruchemyMetal = Metals.MetalType.valueOf(feruchemyPowerID).get(); + final boolean allomancyLoaded = ModList.get().isLoaded("allomancy"); + final boolean feruchemyLoaded = ModList.get().isLoaded("feruchemy"); + //if not twinborn, pick one power boolean isAllomancy = MathHelper.randomBool(); if (isFullPowersFromOneType) { //ooh full powers - final Manifestations.ManifestationTypes manifestationType = - isAllomancy - ? Manifestations.ManifestationTypes.ALLOMANCY - : Manifestations.ManifestationTypes.FERUCHEMY; + + final Manifestations.ManifestationTypes manifestationType; + if (allomancyLoaded && feruchemyLoaded) + { + manifestationType = isAllomancy + ? Manifestations.ManifestationTypes.ALLOMANCY + : Manifestations.ManifestationTypes.FERUCHEMY; + } + else if (allomancyLoaded) + { + manifestationType = Manifestations.ManifestationTypes.ALLOMANCY; + } + else if (feruchemyLoaded) + { + manifestationType = Manifestations.ManifestationTypes.FERUCHEMY; + } + else + { + // ...why are we here? + return; + } CosmereAPI.logger.info("Entity {} has full powers! {}", spiritwebCapability.getLiving().getName().getString(), manifestationType); @@ -195,27 +216,55 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe final Manifestation feruchemyPower = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(feruchemyMetal.getID()); if (isTwinborn) { - spiritwebCapability.giveManifestation(allomancyPower, 9); - spiritwebCapability.giveManifestation(feruchemyPower, 9); - - if (spiritwebCapability.getLiving() instanceof Player player) + if (allomancyLoaded) { - spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY).GiveStartingItem(player, allomancyPower); - spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, feruchemyPower); + spiritwebCapability.giveManifestation(allomancyPower, 9); + if (spiritwebCapability.getLiving() instanceof Player player) + { + spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY).GiveStartingItem(player, allomancyPower); + } + CosmereAPI.logger.info( + "Entity {} has been granted allomantic {}!", + spiritwebCapability.getLiving().getName().getString(), + allomancyMetal); } - - CosmereAPI.logger.info( - "Entity {} has been granted allomantic {} and feruchemical {}!", + if (feruchemyLoaded) + { + spiritwebCapability.giveManifestation(feruchemyPower, 9); + + if (spiritwebCapability.getLiving() instanceof Player player) + { + spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, feruchemyPower); + } + CosmereAPI.logger.info( + "Entity {} has been granted feruchemical {}!", spiritwebCapability.getLiving().getName().getString(), - allomancyMetal, feruchemyMetal); + } } else { - Manifestation manifestation = + Manifestation manifestation; + if (allomancyLoaded && feruchemyLoaded) + { + manifestation = isAllomancy ? allomancyPower : feruchemyPower; + } + else if (allomancyLoaded) + { + manifestation = allomancyPower; + } + else if (feruchemyLoaded) + { + manifestation = feruchemyPower; + } + else + { + // again, why are we here? + return; + } spiritwebCapability.giveManifestation(manifestation, 9); CosmereAPI.logger.info("Entity {} has been granted {}, with metal {}!", From 651e897b8260f32af439fc1d468d52eb9f2e3608 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Thu, 20 Feb 2025 20:37:39 +0100 Subject: [PATCH 0997/1090] =?UTF-8?q?[Cosmere]=C2=A0Added=20option=20to=20?= =?UTF-8?q?not=20assign=20powers=20on=20spawn=20to=20server=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../subcommands/ChooseMetalbornPowersCommand.java | 5 +++-- .../cosmere/common/config/CosmereServerConfig.java | 12 ++++++++++-- .../common/eventHandlers/EntityEventHandler.java | 8 +++++++- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java index b533bcf76..7d6c39229 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java @@ -12,6 +12,7 @@ import leaf.cosmere.common.commands.arguments.AllomancyArgumentType; import leaf.cosmere.common.commands.arguments.FeruchemyArgumentType; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.config.CosmereServerConfig; import leaf.cosmere.common.eventHandlers.EntityEventHandler; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; @@ -75,7 +76,7 @@ private static int addMetalbornPowers(CommandContext context isInitialized.set(spiritwebCap.hasBeenInitialized()); }); - if (CosmereConfigs.SERVER_CONFIG.ALLOW_METALBORN_CHOICE.get() && !isInitialized.get()) + if (CosmereConfigs.SERVER_CONFIG.POWER_GENERATION.get() == CosmereServerConfig.PowerGeneration.PICK && !isInitialized.get()) { // cosmere:none is also an acceptable input Manifestation allomanticPower = context.getArgument("allomanticPower", Manifestation.class); @@ -115,7 +116,7 @@ private static int addMetalbornPowers(CommandContext context } else { - if (!CosmereConfigs.SERVER_CONFIG.ALLOW_METALBORN_CHOICE.get()) + if (CosmereConfigs.SERVER_CONFIG.POWER_GENERATION.get() != CosmereServerConfig.PowerGeneration.PICK) { source.sendFailure(Component.literal("Server config does not allow non-random metalborn choice")); // todo translatable string } diff --git a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java index 97bb68b04..e9e053f45 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java @@ -19,7 +19,7 @@ public class CosmereServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue RAIDER_POWERS_CHANCE; public final ForgeConfigSpec.IntValue MOB_POWERS_CHANCE; public final ForgeConfigSpec.DoubleValue EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER; - public final ForgeConfigSpec.BooleanValue ALLOW_METALBORN_CHOICE; + public final ForgeConfigSpec.EnumValue POWER_GENERATION; CosmereServerConfig() @@ -38,7 +38,7 @@ public class CosmereServerConfig implements ICosmereConfig EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER = builder.comment("Multiplier for emotional allomancy range when singe-targeting").defineInRange("emotionalAllomancySingleTargetRange", 1.5D, 1D, 123456D); - ALLOW_METALBORN_CHOICE = builder.comment("Allow players to choose allomantic and feruchemical abilities for themselves using commands").define("allowMetalbornChoice", false); + POWER_GENERATION = builder.comment("Power generation method. RANDOM assigns random powers on spawn, PICK allows players to choose allomantic and feruchemical abilities, and NONE assigns nothing").defineEnum("powerGeneration", PowerGeneration.RANDOM); builder.pop(); configSpec = builder.build(); @@ -73,4 +73,12 @@ public void clearCache() TWINBORN_POWERS_CHANCE.clearCache(); EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER.clearCache(); } + + public enum PowerGeneration + { + NONE, + RANDOM, + PICK + // todo: ORIGINS later + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index ab7813852..29efb2031 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -14,6 +14,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.config.CosmereServerConfig; import leaf.cosmere.common.registry.AttributesRegistry; import net.minecraft.network.chat.ClickEvent; import net.minecraft.network.chat.Component; @@ -72,7 +73,12 @@ public static void onEntityJoinWorldEvent(EntityJoinLevelEvent event) if (eventEntity instanceof Player) { //todo choose based on planet? eg scadrial gets twinborn, roshar gets surgebinding etc? - if (!CosmereConfigs.SERVER_CONFIG.ALLOW_METALBORN_CHOICE.get()) + if (CosmereConfigs.SERVER_CONFIG.POWER_GENERATION.get() == CosmereServerConfig.PowerGeneration.NONE) + { + // no powers + spiritweb.setHasBeenInitialized(); + } + else if (CosmereConfigs.SERVER_CONFIG.POWER_GENERATION.get() == CosmereServerConfig.PowerGeneration.RANDOM) { //give random power giveEntityStartingManifestation(livingEntity, spiritweb); From 88f329bbd3377d32091c8e28bdcb4dada4a83a4a Mon Sep 17 00:00:00 2001 From: Leaf Date: Fri, 7 Feb 2025 12:09:15 +1300 Subject: [PATCH 0998/1090] [Surgebinding] general cleanup --- .../shardblades/dynamic_shardblade.bbmodel | 2 +- .../common/items/IHemalurgicInfo.java | 2 +- .../SurgebindingSpiritwebSubmodule.java | 28 +++++++++---------- ...sManager.java => RadiantStateManager.java} | 25 +++++++++++++---- ....java => WindrunnerIdealStateManager.java} | 4 +-- .../commands/subcommands/HeraldCommand.java | 4 +-- .../cosmere/surgebinding/mixin/RaidMixin.java | 7 +++-- 7 files changed, 42 insertions(+), 30 deletions(-) rename src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/{IdealsManager.java => RadiantStateManager.java} (89%) rename src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/{WindrunnerIdealValidator.java => WindrunnerIdealStateManager.java} (93%) diff --git a/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel b/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel index bf793ca12..a01e5b535 100644 --- a/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel +++ b/blockbench/surgebinding/shardblades/dynamic_shardblade.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"4.10","model_format":"modded_entity","box_uv":true},"name":"shardblade","model_identifier":"shardblade","modded_entity_entity_class":"Trident","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":9,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"f0df6dca-f8f7-794e-9d32-c663c7933018"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":6,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"31dcd4d1-10e3-aa84-6715-198e80acce51"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"6522c261-de52-025c-ac83-8b84c24e24f0"},{"name":"blade_2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2.5,17,-0.5],"to":[2.5,45,0.5],"autouv":0,"color":8,"origin":[0,0,0],"uv_offset":[19,3],"faces":{"north":{"uv":[20,4,25,32],"texture":0},"east":{"uv":[19,4,20,32],"texture":0},"south":{"uv":[26,4,31,32],"texture":0},"west":{"uv":[25,4,26,32],"texture":0},"up":{"uv":[25,4,20,3],"texture":0},"down":{"uv":[30,3,25,4],"texture":0}},"type":"cube","uuid":"81affbcf-d5f7-c6b4-0fc3-3dde7030f639"},{"name":"blade1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,17,-0.5],"to":[0.5,45,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,3],"faces":{"north":{"uv":[1,4,2,32],"texture":0},"east":{"uv":[0,4,1,32],"texture":0},"south":{"uv":[3,4,4,32],"texture":0},"west":{"uv":[2,4,3,32],"texture":0},"up":{"uv":[2,4,1,3],"texture":0},"down":{"uv":[3,3,2,4],"texture":0}},"type":"cube","uuid":"1754012f-518b-0cb7-a697-87bbe4db931a"},{"name":"blade_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2.5,17,-0.5],"to":[2.5,45,0.5],"autouv":0,"color":7,"origin":[0,0,0],"uv_offset":[19,3],"faces":{"north":{"uv":[20,4,25,32],"texture":0},"east":{"uv":[19,4,20,32],"texture":0},"south":{"uv":[26,4,31,32],"texture":0},"west":{"uv":[25,4,26,32],"texture":0},"up":{"uv":[25,4,20,3],"texture":0},"down":{"uv":[30,3,25,4],"texture":0}},"type":"cube","uuid":"7c207515-0b39-06b6-6d34-ae8858fea7b1"},{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"0c0250ab-7d6e-e478-584e-d893be7bd4bd"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"eab7eab3-059d-22f5-8432-d2bc044f5d62"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"794d2699-632d-d7bd-2188-c9a84ccd7392"}],"outliner":[{"name":"root","origin":[0,0,0],"color":0,"uuid":"4f9f26cb-2a2e-1be1-6735-20c4a8e53c1d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":true,"children":[{"name":"blade","origin":[0,0,0],"color":1,"uuid":"be18e929-3b48-68eb-51f6-01a4fb513eb2","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"blade_guide","origin":[0,0,0],"color":0,"uuid":"67e16657-d59b-7e29-0932-59fd78f3a2be","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["7c207515-0b39-06b6-6d34-ae8858fea7b1"]},{"name":"blade_1","origin":[0,0,0],"color":0,"uuid":"544318aa-a3f6-a30d-e04c-6820a949ee66","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["1754012f-518b-0cb7-a697-87bbe4db931a"]},{"name":"blade_2","origin":[0,0,0],"color":0,"uuid":"37646c2b-e40b-906d-6564-2701eaed94df","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["81affbcf-d5f7-c6b4-0fc3-3dde7030f639"]}]},{"name":"cross_guard","origin":[0,0,0],"color":4,"uuid":"3aeee4e3-7d09-e5e6-dc64-0730c7d03ec1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"crossguard_guide","origin":[0,0,0],"color":0,"uuid":"ab50bfed-4d2c-51b4-d83a-141a7d84dd76","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["6522c261-de52-025c-ac83-8b84c24e24f0"]},{"name":"crossguard_1","origin":[0,0,0],"color":0,"uuid":"a0cee35c-5831-c8c6-9487-646c7340cdc5","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["794d2699-632d-d7bd-2188-c9a84ccd7392"]}]},{"name":"handle","origin":[0,0,0],"color":2,"uuid":"5a74f1cc-eeab-ddc0-08dd-2336f618f792","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"handle_guide","origin":[0,0,0],"color":0,"uuid":"0002f36b-baf8-0926-9ca6-4da2ff90ffd9","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["f0df6dca-f8f7-794e-9d32-c663c7933018"]},{"name":"handle_1","origin":[0,0,0],"color":0,"uuid":"dd7f01c4-1c7d-0c52-21a6-4baf3789d456","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["0c0250ab-7d6e-e478-584e-d893be7bd4bd"]}]},{"name":"pommel","origin":[0,0,0],"color":3,"uuid":"f07accc4-c9b6-c635-00f1-67f6f9ada0a1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"pommel_guide","origin":[0,0,0],"color":0,"uuid":"d2c49297-10cd-a120-c9ca-8320db5ff3b4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["31dcd4d1-10e3-aa84-6715-198e80acce51"]},{"name":"pommel_1","origin":[0,0,0],"color":0,"uuid":"c557acce-67c0-bfc8-aa10-8797d7ef216d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["eab7eab3-059d-22f5-8432-d2bc044f5d62"]}]}]}],"textures":[{"path":"Z:\\Repo\\Minecraft\\2021\\CosmereProject\\_cosmere\\src\\surgebinding\\resources\\assets\\surgebinding\\textures\\item\\models\\shardblade\\dynamic.png","name":"dynamic.png","folder":"block","namespace":"","id":"0","group":"","width":32,"height":32,"uv_width":32,"uv_height":32,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"d1bd19be-cdb3-bc4b-4c53-0949fe504807","relative_path":"../../../src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAPRJREFUWEdjZICCLVce/oexcdHzeycTUsKwdn4PI0FFSArgigfMAc4vesE+l7iSTtDhM09NAqthCX9DUC2Hch9RIQFWBPI9KHjRgw85VJCDH18wYwtJbFEHM4MRFAIg34N8B/IZsstBhlmoyDCcuPOEAWSItLgEw9OXL3DGM8ws9OCBmY0uDrKLoANgmogJAZgDFCS44XY9ePEV7jl2aXW4+M+nN8GexXCAN7c0XBFyuoDFP3oaQA6x4eEAkI9wJUpCSZ9qIYArUY46YDQERkOALiFAbC2GzTFUKQdGHTAaAqMhMBoCoyEwGgKjIUCNECClawYAtF/PPwh2D9wAAAAASUVORK5CYII="}]} \ No newline at end of file +{"meta":{"format_version":"4.10","model_format":"modded_entity","box_uv":true},"name":"dynamic_shardblade","model_identifier":"shardblade","modded_entity_entity_class":"Trident","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":32,"height":32},"elements":[{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":9,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"f0df6dca-f8f7-794e-9d32-c663c7933018"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":6,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"31dcd4d1-10e3-aa84-6715-198e80acce51"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":7,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"6522c261-de52-025c-ac83-8b84c24e24f0"},{"name":"blade_2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2.5,17,-0.5],"to":[2.5,45,0.5],"autouv":0,"color":8,"origin":[0,0,0],"uv_offset":[19,3],"faces":{"north":{"uv":[20,4,25,32],"texture":0},"east":{"uv":[19,4,20,32],"texture":0},"south":{"uv":[26,4,31,32],"texture":0},"west":{"uv":[25,4,26,32],"texture":0},"up":{"uv":[25,4,20,3],"texture":0},"down":{"uv":[30,3,25,4],"texture":0}},"type":"cube","uuid":"81affbcf-d5f7-c6b4-0fc3-3dde7030f639"},{"name":"blade1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,17,-0.5],"to":[0.5,45,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,3],"faces":{"north":{"uv":[1,4,2,32],"texture":0},"east":{"uv":[0,4,1,32],"texture":0},"south":{"uv":[3,4,4,32],"texture":0},"west":{"uv":[2,4,3,32],"texture":0},"up":{"uv":[2,4,1,3],"texture":0},"down":{"uv":[3,3,2,4],"texture":0}},"type":"cube","uuid":"1754012f-518b-0cb7-a697-87bbe4db931a"},{"name":"handle_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,9,-0.5],"to":[0.5,16,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,8],"faces":{"north":{"uv":[5,9,6,16],"texture":0},"east":{"uv":[4,9,5,16],"texture":0},"south":{"uv":[7,9,8,16],"texture":0},"west":{"uv":[6,9,7,16],"texture":0},"up":{"uv":[6,9,5,8],"texture":0},"down":{"uv":[7,8,6,9],"texture":0}},"type":"cube","uuid":"0c0250ab-7d6e-e478-584e-d893be7bd4bd"},{"name":"pommel_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,7,-1.5],"to":[1.5,9,1.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[4,3],"faces":{"north":{"uv":[7,6,10,8],"texture":0},"east":{"uv":[4,6,7,8],"texture":0},"south":{"uv":[13,6,16,8],"texture":0},"west":{"uv":[10,6,13,8],"texture":0},"up":{"uv":[10,6,7,3],"texture":0},"down":{"uv":[13,3,10,6],"texture":0}},"type":"cube","uuid":"eab7eab3-059d-22f5-8432-d2bc044f5d62"},{"name":"crossguard_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,16,-0.9999999999999999],"to":[4.5,17,0.9999999999999997],"autouv":0,"color":9,"origin":[0,0,0],"faces":{"north":{"uv":[1.9999999999999996,1.9999999999999996,11,2.9999999999999996],"texture":0},"east":{"uv":[0,1.9999999999999996,1.9999999999999996,2.9999999999999996],"texture":0},"south":{"uv":[13,1.9999999999999996,22,2.9999999999999996],"texture":0},"west":{"uv":[11,1.9999999999999996,13,2.9999999999999996],"texture":0},"up":{"uv":[11,1.9999999999999996,2,0],"texture":0},"down":{"uv":[20,0,11,1.9999999999999996],"texture":0}},"type":"cube","uuid":"794d2699-632d-d7bd-2188-c9a84ccd7392"},{"name":"blade_guide","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,17,-0.5],"to":[0.5,45,0.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,3],"faces":{"north":{"uv":[1,4,2,32],"texture":0},"east":{"uv":[0,4,1,32],"texture":0},"south":{"uv":[3,4,4,32],"texture":0},"west":{"uv":[2,4,3,32],"texture":0},"up":{"uv":[2,4,1,3],"texture":0},"down":{"uv":[3,3,2,4],"texture":0}},"type":"cube","uuid":"05223173-dfff-257e-7f1a-abff51dcd729"}],"outliner":[{"name":"root","origin":[0,0,0],"color":0,"uuid":"4f9f26cb-2a2e-1be1-6735-20c4a8e53c1d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"blade","origin":[0,0,0],"color":1,"uuid":"be18e929-3b48-68eb-51f6-01a4fb513eb2","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"blade_guide","origin":[0,0,0],"color":0,"uuid":"67e16657-d59b-7e29-0932-59fd78f3a2be","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["05223173-dfff-257e-7f1a-abff51dcd729"]},{"name":"blade_1","origin":[0,0,0],"color":0,"uuid":"544318aa-a3f6-a30d-e04c-6820a949ee66","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["1754012f-518b-0cb7-a697-87bbe4db931a"]},{"name":"blade_2","origin":[0,0,0],"color":0,"uuid":"37646c2b-e40b-906d-6564-2701eaed94df","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["81affbcf-d5f7-c6b4-0fc3-3dde7030f639"]}]},{"name":"cross_guard","origin":[0,0,0],"color":4,"uuid":"3aeee4e3-7d09-e5e6-dc64-0730c7d03ec1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"crossguard_guide","origin":[0,0,0],"color":0,"uuid":"ab50bfed-4d2c-51b4-d83a-141a7d84dd76","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["6522c261-de52-025c-ac83-8b84c24e24f0"]},{"name":"crossguard_1","origin":[0,0,0],"color":0,"uuid":"a0cee35c-5831-c8c6-9487-646c7340cdc5","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["794d2699-632d-d7bd-2188-c9a84ccd7392"]}]},{"name":"handle","origin":[0,0,0],"color":2,"uuid":"5a74f1cc-eeab-ddc0-08dd-2336f618f792","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"handle_guide","origin":[0,0,0],"color":0,"uuid":"0002f36b-baf8-0926-9ca6-4da2ff90ffd9","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["f0df6dca-f8f7-794e-9d32-c663c7933018"]},{"name":"handle_1","origin":[0,0,0],"color":0,"uuid":"dd7f01c4-1c7d-0c52-21a6-4baf3789d456","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["0c0250ab-7d6e-e478-584e-d893be7bd4bd"]}]},{"name":"pommel","origin":[0,0,0],"color":3,"uuid":"f07accc4-c9b6-c635-00f1-67f6f9ada0a1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":[{"name":"pommel_guide","origin":[0,0,0],"color":0,"uuid":"d2c49297-10cd-a120-c9ca-8320db5ff3b4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["31dcd4d1-10e3-aa84-6715-198e80acce51"]},{"name":"pommel_1","origin":[0,0,0],"color":0,"uuid":"c557acce-67c0-bfc8-aa10-8797d7ef216d","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["eab7eab3-059d-22f5-8432-d2bc044f5d62"]}]}]}],"textures":[{"path":"Z:\\Repo\\Minecraft\\2021\\CosmereProject\\_cosmere\\src\\surgebinding\\resources\\assets\\surgebinding\\textures\\item\\models\\shardblade\\dynamic.png","name":"dynamic.png","folder":"block","namespace":"","id":"0","group":"","width":32,"height":32,"uv_width":32,"uv_height":32,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"d1bd19be-cdb3-bc4b-4c53-0949fe504807","relative_path":"../../../src/surgebinding/resources/assets/surgebinding/textures/item/models/shardblade/dynamic.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAPRJREFUWEdjZICCLVce/oexcdHzeycTUsKwdn4PI0FFSArgigfMAc4vesE+l7iSTtDhM09NAqthCX9DUC2Hch9RIQFWBPI9KHjRgw85VJCDH18wYwtJbFEHM4MRFAIg34N8B/IZsstBhlmoyDCcuPOEAWSItLgEw9OXL3DGM8ws9OCBmY0uDrKLoANgmogJAZgDFCS44XY9ePEV7jl2aXW4+M+nN8GexXCAN7c0XBFyuoDFP3oaQA6x4eEAkI9wJUpCSZ9qIYArUY46YDQERkOALiFAbC2GzTFUKQdGHTAaAqMhMBoCoyEwGgKjIUCNECClawYAtF/PPwh2D9wAAAAASUVORK5CYII="}]} \ No newline at end of file diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java index bbd2496d7..a7e1b44fe 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java @@ -83,7 +83,7 @@ default void stealFromSpiritweb(ItemStack stack, Metals.MetalType spikeMetalType manifestationsFound.addAll(entityKilledSpiritWeb.getAvailableManifestations(true)); - if (manifestationsFound.size() > 0) + if (!manifestationsFound.isEmpty()) { whiteList.clear(); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index fe6c51770..d7c94f215 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,16 +1,15 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 7 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Roshar; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.items.CapWrapper; -import leaf.cosmere.surgebinding.common.capabilities.ideals.IdealsManager; +import leaf.cosmere.surgebinding.common.capabilities.ideals.RadiantStateManager; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; import leaf.cosmere.surgebinding.common.items.GemstoneItem; import leaf.cosmere.surgebinding.common.items.tiers.ShardplateArmorMaterial; @@ -40,7 +39,7 @@ public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule //stormlight stored private int stormlightStored = 0; - private Roshar.RadiantOrder heraldOrder = null; + private boolean herald = false; //Since I'm referencing it so often. For readability if nothing else int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); @@ -50,7 +49,7 @@ public class SurgebindingSpiritwebSubmodule implements ISpiritwebSubmodule //a little ew, I'd rather this in an enum utils, but it's the only place that needs it public static final ShardplateArmorMaterial[] ARMOR_MATERIALS = ShardplateArmorMaterial.values(); - IdealsManager idealsManager = new IdealsManager(); + RadiantStateManager idealsManager = new RadiantStateManager(); private ISpiritweb spiritweb; public static SurgebindingSpiritwebSubmodule getSubmodule(ISpiritweb data) @@ -60,7 +59,7 @@ public static SurgebindingSpiritwebSubmodule getSubmodule(ISpiritweb data) public boolean isHerald() { - return heraldOrder != null; + return herald; } public boolean isOathed() @@ -77,9 +76,7 @@ public void deserialize(ISpiritweb spiritweb) stormlightStored = compoundTag.getInt("stored_stormlight"); idealsManager.deserialize(spiritweb); - this.heraldOrder = compoundTag.contains("herald") - ? Roshar.RadiantOrder.valueOf(compoundTag.getInt("herald")).orElse(null) - : null; + this.herald = compoundTag.contains("herald") && compoundTag.getBoolean("herald"); } @Override @@ -90,9 +87,10 @@ public void serialize(ISpiritweb spiritweb) compoundTag.putInt("stored_stormlight", stormlightStored); idealsManager.serialize(spiritweb); - if (heraldOrder != null) + //don't store extra data if we don't need to + if (herald) { - compoundTag.putInt("herald", heraldOrder.getID()); + compoundTag.putBoolean("herald", true); } else if (compoundTag.contains("herald")) { @@ -160,9 +158,9 @@ else if (livingEntity.isUnderWater()) int drainRate = SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get(); //todo maybe reducing cost based on how many ideals they have sworn? - int idealsSworn = 1; + //int idealsSworn = idealsManager.getIdeal(); - adjustStormlight(-(drainRate / idealsSworn), true); + adjustStormlight(-(drainRate), true); } } @@ -422,8 +420,8 @@ public void onChatMessageReceived(ServerChatEvent event) idealsManager.onChatMessageReceived(event); } - public void setHerald(Roshar.RadiantOrder order) + public void setHerald(boolean isHerald) { - heraldOrder = order; + herald = isHerald; } } \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/RadiantStateManager.java similarity index 89% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/RadiantStateManager.java index 03f5bff00..7e134b433 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/IdealsManager.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/RadiantStateManager.java @@ -1,5 +1,5 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities.ideals; @@ -7,13 +7,15 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; +import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.util.TaskQueueManager; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.capabilities.ideals.order.WindrunnerIdealValidator; +import leaf.cosmere.surgebinding.common.capabilities.ideals.order.WindrunnerIdealStateManager; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; import leaf.cosmere.surgebinding.common.config.SurgebindingServerConfig; +import leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -23,7 +25,7 @@ import net.minecraftforge.event.ServerChatEvent; import org.jetbrains.annotations.NotNull; -public class IdealsManager +public class RadiantStateManager { private static ResourceLocation SWEAR_IDEAL = new ResourceLocation(Surgebinding.MODID, "swear_ideal"); @@ -31,7 +33,6 @@ public class IdealsManager private Roshar.RadiantOrder order = null; private int ideal = 0; - //todo change string to enum public Roshar.RadiantOrder getOrder() { return order; @@ -62,7 +63,9 @@ public void deserialize(ISpiritweb spiritweb) { this.spiritweb = (SpiritwebCapability) spiritweb; final CompoundTag spiritwebCompoundTag = spiritweb.getCompoundTag(); - this.order = Roshar.RadiantOrder.valueOf(spiritwebCompoundTag.getInt("order")).orElse(null); + this.order = spiritwebCompoundTag.contains("order") + ? Roshar.RadiantOrder.valueOf(spiritwebCompoundTag.getInt("order")).orElse(null) + : null; this.ideal = spiritwebCompoundTag.getInt("ideal"); } @@ -222,7 +225,7 @@ private boolean onTrySuccessfulSwear(int idealToSwear, Roshar.RadiantOrder ideal { case WINDRUNNER -> { - return WindrunnerIdealValidator.validateIdeal(spiritweb, idealToSwear); + return WindrunnerIdealStateManager.validateIdeal(spiritweb, idealToSwear); } case SKYBREAKER -> { @@ -271,6 +274,7 @@ private void onSuccessfulIdealSworn(@NotNull SpiritwebCapability spiritweb) if (this.ideal != 1) { player.sendSystemMessage(Component.literal("THESE WORDS ARE ACCEPTED.")); + updatePowerState(); } //player.playSound(SoundEvents.LIGHTNING_BOLT_THUNDER, 1000, 0.8F + player.getRandom().nextFloat() * 0.2F); player.level().playSound( @@ -301,4 +305,13 @@ private void onSuccessfulIdealSworn(@NotNull SpiritwebCapability spiritweb) TaskQueueManager.submitDelayedTask(SWEAR_IDEAL, 60, new TaskQueueManager.OneOffTask(work)); } } + + private void updatePowerState() + { + Manifestation firstSurge = SurgebindingManifestations.SURGEBINDING_POWERS.get(this.order.getFirstSurge()).get(); + Manifestation secondSurge = SurgebindingManifestations.SURGEBINDING_POWERS.get(this.order.getSecondSurge()).get(); + + spiritweb.giveManifestation(firstSurge, getIdeal()); + spiritweb.giveManifestation(secondSurge, getIdeal()); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealStateManager.java similarity index 93% rename from src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java rename to src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealStateManager.java index e0d3cb9c0..5e83ed475 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealValidator.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/ideals/order/WindrunnerIdealStateManager.java @@ -1,5 +1,5 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 4 - 2 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities.ideals.order; @@ -12,7 +12,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -public class WindrunnerIdealValidator +public class WindrunnerIdealStateManager { public static boolean validateIdeal(SpiritwebCapability spiritweb, int ideal) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java index 3684cfeb8..c40896fb5 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/commands/subcommands/HeraldCommand.java @@ -48,7 +48,7 @@ private static int makeHerald(CommandContext context) throws SpiritwebCapability.get(player).ifPresent((spiritweb) -> { SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(spiritweb); - ssm.setHerald(order); + ssm.setHerald(true); spiritweb.syncToClients(player); }); @@ -66,7 +66,7 @@ private static int removeHerald(CommandContext context) thro SpiritwebCapability.get(player).ifPresent((spiritweb) -> { SurgebindingSpiritwebSubmodule ssm = SurgebindingSpiritwebSubmodule.getSubmodule(spiritweb); - ssm.setHerald(null); + ssm.setHerald(false); spiritweb.syncToClients(player); }); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java b/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java index f84341f3a..8ce7590c5 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/mixin/RaidMixin.java @@ -1,13 +1,13 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 15 - 1 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.mixin; -import com.google.common.collect.Sets; import leaf.cosmere.surgebinding.common.mixinAccess.RaidMixinAccess; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.raid.Raid; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -18,7 +18,8 @@ public abstract class RaidMixin implements RaidMixinAccess { @Shadow - private final Set heroesOfTheVillage = Sets.newHashSet(); + @Final + private Set heroesOfTheVillage; @Override public boolean _cosmere$isHero(Player player) From de8e6816556364dc38b8d6fd613441474574021c Mon Sep 17 00:00:00 2001 From: Leaf Date: Wed, 5 Mar 2025 11:53:38 +1300 Subject: [PATCH 0999/1090] [Allomancy] TLC update A-Chromium. Does some setup for affecting powers outside allomancy too. --- .../AllomancySpiritwebSubmodule.java | 30 ++++- .../AllomancyEntityEventHandler.java | 8 +- .../manifestation/AllomancyAluminum.java | 3 +- .../manifestation/AllomancyChromium.java | 109 +++++------------- .../AonDorSpiritwebSubmodule.java | 8 +- .../leaf/cosmere/api/ISpiritwebSubmodule.java | 4 +- .../capabilities/AviarSpiritwebSubmodule.java | 8 +- .../AwakeningSpiritwebSubmodule.java | 8 +- .../capabilities/ToolsSpiritwebSubmodule.java | 8 +- .../ExampleSpiritwebSubmodule.java | 8 +- .../FeruchemySpiritwebSubmodule.java | 11 +- .../HemalurgySpiritwebSubmodule.java | 8 +- .../effects/DrainInvestitureEffect.java | 34 ++++++ .../registry/CosmereEffectsRegistry.java | 9 +- .../SandmasterySpiritwebSubmodule.java | 9 +- .../SoulforgerySpiritwebSubmodule.java | 8 +- .../SurgebindingSpiritwebSubmodule.java | 9 +- 17 files changed, 189 insertions(+), 93 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/effects/DrainInvestitureEffect.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java index 75e547e6a..d7929594b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/capabilities/AllomancySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.capabilities; @@ -215,6 +215,34 @@ public void resetOnDeath(ISpiritweb spiritweb) pewterDelayedDamage = 0f; } + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //for the purpose of allomantic aluminum and chromium, we're going to drain all the metals from the user. + // I realise it doesn't quite fit for a-duralumin + + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) + { + int ingestedMetalAmount = getIngestedMetal(metalType); + + //if metal exists + if (ingestedMetalAmount > 0) + { + //drain metals that are actively being burned + if (data.canTickManifestation(Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metalType.getID()))) + { + final int amountToAdjust = + ingestedMetalAmount > 30 ? (ingestedMetalAmount / 2) : ingestedMetalAmount; + adjustIngestedMetal( + metalType, + -amountToAdjust, //take amount away + true); + + } + } + } + } + @Override public void renderWorldEffects(ISpiritweb spiritweb, RenderLevelStageEvent event) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 83982a482..37155877d 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.eventHandlers; @@ -7,6 +7,7 @@ import leaf.cosmere.allomancy.common.Allomancy; import leaf.cosmere.allomancy.common.items.CoinPouchItem; import leaf.cosmere.allomancy.common.manifestation.AllomancyAtium; +import leaf.cosmere.allomancy.common.manifestation.AllomancyChromium; import leaf.cosmere.allomancy.common.manifestation.AllomancyNicrosil; import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; @@ -64,6 +65,10 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) } } + else + { + + } } @@ -97,5 +102,6 @@ public static void onLivingHurtEvent(LivingHurtEvent event) { AllomancyNicrosil.onLivingHurtEvent(event); AllomancyPewter.onLivingHurtEvent(event); + AllomancyChromium.onLivingHurtEvent(event); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java index 89d92c6e8..ca3cbabac 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAluminum.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; @@ -51,6 +51,7 @@ protected void applyEffectTick(ISpiritweb data) private boolean drainMetal(ISpiritweb data, Metals.MetalType metalType) { + //todo move this to the drain investiture effect? AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) ((SpiritwebCapability) data).getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); int ingestedMetalAmount = allo.getIngestedMetal(metalType); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java index ec75e5453..35badcb7b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyChromium.java @@ -1,22 +1,19 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; -import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Manifestations; +import leaf.cosmere.allomancy.common.registries.AllomancyManifestations; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; +import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.registry.CosmereEffectsRegistry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.level.Level; -import net.minecraft.world.phys.AABB; -import net.minecraft.world.phys.Vec3; - -import java.util.List; +import net.minecraft.world.entity.player.Player; +import net.minecraftforge.event.entity.living.LivingHurtEvent; public class AllomancyChromium extends AllomancyManifestation { @@ -25,89 +22,45 @@ public AllomancyChromium(Metals.MetalType metalType) super(metalType); } - @Override - protected void applyEffectTick(ISpiritweb data) + public static void onLivingHurtEvent(LivingHurtEvent event) { - //Wipes Allomantic Reserves of Target + if (event.isCanceled()) { - int range = getRange(data); + return; + } - LivingEntity living = data.getLiving(); - Level world = living.level(); - boolean isActiveTick = isActiveTick(data); - if (!world.isClientSide && isActiveTick) + Entity trueSource = event.getSource().getEntity(); + LivingEntity targetEntity = event.getEntity(); + if (trueSource instanceof Player trueSourcePlayer) + { + SpiritwebCapability.get(trueSourcePlayer).ifPresent(player -> { - //thank you to CyclopsMC and their repo EverlastingAbilities for their section on detecting enemies you are looking at - //https://github.com/CyclopsMC/EverlastingAbilities/blob/master-1.16/src/main/java/org/cyclops/everlastingabilities/ability/AbilityTypePowerStare.java - - double eyeHeight = living.getEyeHeight(); - Vec3 lookVec = living.getLookAngle(); - Vec3 origin = new Vec3(living.getX(), living.getY() + eyeHeight, living.getZ()); - Vec3 direction = origin.add(lookVec.x * range, lookVec.y * range, lookVec.z * range); - - List entitiesInRange = world.getEntities(living, - living.getBoundingBox() - .inflate( - lookVec.x * range, - lookVec.y * range, - lookVec.z * range) - .inflate(range)); - - for (Entity targetEntity : entitiesInRange) + final AllomancyManifestation aChromium = AllomancyManifestations.ALLOMANCY_POWERS.get(Metals.MetalType.CHROMIUM).get(); + if (aChromium.isActive(player)) { - if (!(targetEntity instanceof LivingEntity)) + SpiritwebCapability.get(targetEntity).ifPresent(targetISpiritweb -> { - continue; - } - SpiritwebCapability.get((LivingEntity) targetEntity).ifPresent(targetISpiritweb -> - { - Entity entity = null; final SpiritwebCapability targetSpiritweb = (SpiritwebCapability) targetISpiritweb; - - float f10 = targetEntity.getPickRadius(); - AABB axisalignedbb = targetEntity.getBoundingBox().expandTowards(f10, f10, f10); - Vec3 hitVec = axisalignedbb.clip(origin, direction).orElse(null); - - if (axisalignedbb.contains(origin)) - { - entity = targetEntity; - } - else if (hitVec != null) + if (targetSpiritweb.getLiving() != null) { - double distance = origin.distanceTo(hitVec); - if (distance < range || range == 0.0D) - { - if (targetEntity == living.getVehicle() && !living.canRiderInteract()) - { - if (range == 0.0D) - { - entity = targetEntity; - } - } - else - { - entity = targetEntity; - } - } - } - - if (entity != null) - { - AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) targetSpiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); + /*AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) targetSpiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { float drainAmount = allo.getIngestedMetal(metalType) * 0.1f; allo.adjustIngestedMetal(metalType, (int) -drainAmount, true); - } + }*/ + + CosmereEffectInstance newEffect = EffectsHelper.getNewEffect( + CosmereEffectsRegistry.DRAIN_INVESTITURE.get(), + targetEntity, + (aChromium.getStrength(player, false)) + ); + + targetSpiritweb.addEffect(newEffect, trueSourcePlayer); } }); - } - } + }); } - - } - - } diff --git a/src/aondor/java/leaf/cosmere/aondor/common/capabilities/AonDorSpiritwebSubmodule.java b/src/aondor/java/leaf/cosmere/aondor/common/capabilities/AonDorSpiritwebSubmodule.java index 199695c62..a0fa4caf0 100644 --- a/src/aondor/java/leaf/cosmere/aondor/common/capabilities/AonDorSpiritwebSubmodule.java +++ b/src/aondor/java/leaf/cosmere/aondor/common/capabilities/AonDorSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.aondor.common.capabilities; @@ -61,4 +61,10 @@ public void GiveStartingItem(Player player, Manifestation manifestation) { } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + + } } diff --git a/src/api/java/leaf/cosmere/api/ISpiritwebSubmodule.java b/src/api/java/leaf/cosmere/api/ISpiritwebSubmodule.java index 91121be11..8230c69d5 100644 --- a/src/api/java/leaf/cosmere/api/ISpiritwebSubmodule.java +++ b/src/api/java/leaf/cosmere/api/ISpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 12 - 10 - 2022 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.api; @@ -54,4 +54,6 @@ default void resetOnDeath(ISpiritweb spiritweb) { } + + void drainInvestiture(ISpiritweb data, double strength); } diff --git a/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java b/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java index 1a34008d6..87c4f7b59 100644 --- a/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java +++ b/src/aviar/java/leaf/cosmere/aviar/common/capabilities/AviarSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.aviar.common.capabilities; @@ -43,6 +43,12 @@ public void tickServer(ISpiritweb spiritweb) } } + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //todo should this disrupt the bond? + } + private void tickAviar(Player player, CompoundTag compoundtag) { EntityType.byString(compoundtag.getString("id")) diff --git a/src/awakening/java/leaf/cosmere/awakening/common/capabilities/AwakeningSpiritwebSubmodule.java b/src/awakening/java/leaf/cosmere/awakening/common/capabilities/AwakeningSpiritwebSubmodule.java index 52e5dfbfe..999c6efd5 100644 --- a/src/awakening/java/leaf/cosmere/awakening/common/capabilities/AwakeningSpiritwebSubmodule.java +++ b/src/awakening/java/leaf/cosmere/awakening/common/capabilities/AwakeningSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.awakening.common.capabilities; @@ -61,4 +61,10 @@ public void GiveStartingItem(Player player, Manifestation manifestation) { } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //todo can breaths be drained? + } } diff --git a/src/cosmeretools/java/leaf/cosmere/tools/common/capabilities/ToolsSpiritwebSubmodule.java b/src/cosmeretools/java/leaf/cosmere/tools/common/capabilities/ToolsSpiritwebSubmodule.java index f28b703bb..3c026acb2 100644 --- a/src/cosmeretools/java/leaf/cosmere/tools/common/capabilities/ToolsSpiritwebSubmodule.java +++ b/src/cosmeretools/java/leaf/cosmere/tools/common/capabilities/ToolsSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 22 - 3 - 2024 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.tools.common.capabilities; @@ -61,4 +61,10 @@ public void GiveStartingItem(Player player, Manifestation manifestation) { } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + // what did you expect to see here? + } } diff --git a/src/example/java/leaf/cosmere/example/common/capabilities/ExampleSpiritwebSubmodule.java b/src/example/java/leaf/cosmere/example/common/capabilities/ExampleSpiritwebSubmodule.java index 840fa0648..8652f1cc1 100644 --- a/src/example/java/leaf/cosmere/example/common/capabilities/ExampleSpiritwebSubmodule.java +++ b/src/example/java/leaf/cosmere/example/common/capabilities/ExampleSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.example.common.capabilities; @@ -61,4 +61,10 @@ public void GiveStartingItem(Player player, Manifestation manifestation) { } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + + } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/capabilities/FeruchemySpiritwebSubmodule.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/capabilities/FeruchemySpiritwebSubmodule.java index 308f83a0d..1bbdab9b2 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/capabilities/FeruchemySpiritwebSubmodule.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/capabilities/FeruchemySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.feruchemy.common.capabilities; @@ -9,6 +9,7 @@ import leaf.cosmere.api.helpers.PlayerHelper; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.math.MathHelper; +import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.feruchemy.client.utils.FeruchemyChargeThread; import leaf.cosmere.feruchemy.common.config.FeruchemyConfigs; import leaf.cosmere.feruchemy.common.items.RingMetalmindItem; @@ -26,6 +27,7 @@ public class FeruchemySpiritwebSubmodule implements ISpiritwebSubmodule { private static final HashMap metalmindChargesMap = new HashMap<>(); + @Override public void GiveStartingItem(Player player) { @@ -52,6 +54,13 @@ public void GiveStartingItem(Player player, Manifestation manifestation) } } + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //todo - how should we handle draining feruchemy? + // remove the effects only? can we even detect that properly? + } + @Override @OnlyIn(Dist.CLIENT) public void collectMenuInfo(List m_infoText) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java index df6b971bd..b3cd8ca21 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 28 - 2 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.hemalurgy.common.capabilities; @@ -36,4 +36,10 @@ public void tickServer(ISpiritweb spiritweb) } } } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + + } } diff --git a/src/main/java/leaf/cosmere/common/effects/DrainInvestitureEffect.java b/src/main/java/leaf/cosmere/common/effects/DrainInvestitureEffect.java new file mode 100644 index 000000000..225bf7114 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/effects/DrainInvestitureEffect.java @@ -0,0 +1,34 @@ +/* + * File updated ~ 5 - 3 - 2025 ~ Leaf + */ + +package leaf.cosmere.common.effects; + +import leaf.cosmere.api.ISpiritwebSubmodule; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.cosmereEffect.CosmereEffect; +import leaf.cosmere.api.spiritweb.ISpiritweb; + +import java.util.Map; + +public class DrainInvestitureEffect extends CosmereEffect +{ + @Override + protected int getTickOffset() + { + return Metals.MetalType.NICROSIL.getID(); + } + + @Override + public void applyEffectTick(ISpiritweb data, double strength) + { + //todo boost metal drain balancing + + final Map submodules = data.getSubmodules(); + for (ISpiritwebSubmodule module : submodules.values()) + { + module.drainInvestiture(data, strength); + } + } +} diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereEffectsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereEffectsRegistry.java index 73d96554c..17b6db3ad 100644 --- a/src/main/java/leaf/cosmere/common/registry/CosmereEffectsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CosmereEffectsRegistry.java @@ -1,14 +1,21 @@ /* - * File updated ~ 29 - 10 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.common.registry; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.effects.DrainInvestitureEffect; import leaf.cosmere.common.registration.impl.CosmereEffectDeferredRegister; +import leaf.cosmere.common.registration.impl.CosmereEffectRegistryObject; public class CosmereEffectsRegistry { public static final CosmereEffectDeferredRegister EFFECTS = new CosmereEffectDeferredRegister(Cosmere.MODID); //Cosmere library mod registers the cosmere effect registry that all sub mods can then add their effects to + + + public static final CosmereEffectRegistryObject DRAIN_INVESTITURE = EFFECTS.register( + "drain_investiture", + DrainInvestitureEffect::new); } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java index 689515237..0ad322823 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 8 - 2024 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.sandmastery.common.capabilities; @@ -173,6 +173,13 @@ public void resetOnDeath(ISpiritweb spiritweb) hydrationLevel = SandmasteryConfigs.SERVER.STARTING_HYDRATION.get(); } + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //todo - how should we handle draining sandmastery? + // we could force it to turn off ribbons? + } + @Override @OnlyIn(Dist.CLIENT) public void collectMenuInfo(List m_infoText) diff --git a/src/soulforgery/java/leaf/cosmere/soulforgery/common/capabilities/SoulforgerySpiritwebSubmodule.java b/src/soulforgery/java/leaf/cosmere/soulforgery/common/capabilities/SoulforgerySpiritwebSubmodule.java index f7cb05f6b..e0ac9895f 100644 --- a/src/soulforgery/java/leaf/cosmere/soulforgery/common/capabilities/SoulforgerySpiritwebSubmodule.java +++ b/src/soulforgery/java/leaf/cosmere/soulforgery/common/capabilities/SoulforgerySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.soulforgery.common.capabilities; @@ -61,4 +61,10 @@ public void GiveStartingItem(Player player, Manifestation manifestation) { } + + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //TODO: implement + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index d7c94f215..cec5f12b2 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 7 - 2 - 2025 ~ Leaf + * File updated ~ 5 - 3 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.capabilities; @@ -201,6 +201,13 @@ else if (livingEntity.isUnderWater()) } } + @Override + public void drainInvestiture(ISpiritweb data, double strength) + { + //todo drain based on strength + stormlightStored = (int) (stormlightStored * 0.1f); + } + private void requestGemStormlight(ItemStack item, int amountDrawn) { From d935cd96ef396e4cc8292d2402984de1e7aafcf8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 9 Mar 2025 12:15:57 +1300 Subject: [PATCH 1000/1090] [Cosmere] New Textures --- .../44623903f0365d3c95d129c2cab3e32a7eda1dc7 | 190 +++++++++++------- .../cosmere/blockstates/aluminum_block.json | 2 +- .../cosmere/blockstates/aluminum_ore.json | 2 +- .../cosmere/blockstates/atium_block.json | 2 +- .../cosmere/blockstates/bendalloy_block.json | 2 +- .../cosmere/blockstates/brass_block.json | 2 +- .../cosmere/blockstates/bronze_block.json | 2 +- .../cosmere/blockstates/cadmium_block.json | 2 +- .../cosmere/blockstates/cadmium_ore.json | 2 +- .../cosmere/blockstates/chromium_block.json | 2 +- .../cosmere/blockstates/chromium_ore.json | 2 +- .../blockstates/deepslate_aluminum_ore.json | 2 +- .../blockstates/deepslate_cadmium_ore.json | 2 +- .../blockstates/deepslate_chromium_ore.json | 2 +- .../blockstates/deepslate_lead_ore.json | 2 +- .../blockstates/deepslate_nickel_ore.json | 2 +- .../blockstates/deepslate_silver_ore.json | 2 +- .../blockstates/deepslate_tin_ore.json | 2 +- .../blockstates/deepslate_zinc_ore.json | 2 +- .../cosmere/blockstates/duralumin_block.json | 2 +- .../cosmere/blockstates/electrum_block.json | 2 +- .../cosmere/blockstates/harmonium_block.json | 2 +- .../cosmere/blockstates/lead_block.json | 2 +- .../assets/cosmere/blockstates/lead_ore.json | 2 +- .../cosmere/blockstates/lerasatium_block.json | 2 +- .../cosmere/blockstates/lerasium_block.json | 2 +- .../cosmere/blockstates/malatium_block.json | 2 +- .../cosmere/blockstates/nickel_block.json | 2 +- .../cosmere/blockstates/nickel_ore.json | 2 +- .../cosmere/blockstates/nicrosil_block.json | 2 +- .../cosmere/blockstates/pewter_block.json | 2 +- .../cosmere/blockstates/silver_block.json | 2 +- .../cosmere/blockstates/silver_ore.json | 2 +- .../cosmere/blockstates/steel_block.json | 2 +- .../assets/cosmere/blockstates/tin_block.json | 2 +- .../assets/cosmere/blockstates/tin_ore.json | 2 +- .../cosmere/blockstates/zinc_block.json | 2 +- .../assets/cosmere/blockstates/zinc_ore.json | 2 +- .../cosmere/models/block/aluminum_block.json | 6 + .../cosmere/models/block/aluminum_ore.json | 6 + .../cosmere/models/block/atium_block.json | 6 + .../cosmere/models/block/bendalloy_block.json | 6 + .../cosmere/models/block/brass_block.json | 6 + .../cosmere/models/block/bronze_block.json | 6 + .../cosmere/models/block/cadmium_block.json | 6 + .../cosmere/models/block/cadmium_ore.json | 6 + .../cosmere/models/block/chromium_block.json | 6 + .../cosmere/models/block/chromium_ore.json | 6 + .../models/block/deepslate_aluminum_ore.json | 6 + .../models/block/deepslate_cadmium_ore.json | 6 + .../models/block/deepslate_chromium_ore.json | 6 + .../models/block/deepslate_lead_ore.json | 6 + .../models/block/deepslate_nickel_ore.json | 6 + .../models/block/deepslate_silver_ore.json | 6 + .../models/block/deepslate_tin_ore.json | 6 + .../models/block/deepslate_zinc_ore.json | 6 + .../cosmere/models/block/duralumin_block.json | 6 + .../cosmere/models/block/electrum_block.json | 6 + .../cosmere/models/block/harmonium_block.json | 6 + .../cosmere/models/block/lead_block.json | 6 + .../assets/cosmere/models/block/lead_ore.json | 6 + .../models/block/lerasatium_block.json | 6 + .../cosmere/models/block/lerasium_block.json | 6 + .../cosmere/models/block/malatium_block.json | 6 + .../cosmere/models/block/metal_block.json | 6 - .../cosmere/models/block/nickel_block.json | 6 + .../cosmere/models/block/nickel_ore.json | 6 + .../cosmere/models/block/nicrosil_block.json | 6 + .../cosmere/models/block/ore_block.json | 7 - .../models/block/ore_block_deepslate.json | 7 - .../cosmere/models/block/pewter_block.json | 6 + .../cosmere/models/block/silver_block.json | 6 + .../cosmere/models/block/silver_ore.json | 6 + .../cosmere/models/block/steel_block.json | 6 + .../cosmere/models/block/tin_block.json | 6 + .../assets/cosmere/models/block/tin_ore.json | 6 + .../cosmere/models/block/zinc_block.json | 6 + .../assets/cosmere/models/block/zinc_ore.json | 6 + .../cosmere/models/item/aluminum_block.json | 2 +- .../cosmere/models/item/aluminum_ore.json | 2 +- .../cosmere/models/item/atium_block.json | 2 +- .../cosmere/models/item/bendalloy_block.json | 2 +- .../cosmere/models/item/brass_block.json | 2 +- .../cosmere/models/item/bronze_block.json | 2 +- .../cosmere/models/item/cadmium_block.json | 2 +- .../cosmere/models/item/cadmium_ore.json | 2 +- .../cosmere/models/item/chromium_block.json | 2 +- .../cosmere/models/item/chromium_ore.json | 2 +- .../models/item/deepslate_aluminum_ore.json | 2 +- .../models/item/deepslate_cadmium_ore.json | 2 +- .../models/item/deepslate_chromium_ore.json | 2 +- .../models/item/deepslate_lead_ore.json | 2 +- .../models/item/deepslate_nickel_ore.json | 2 +- .../models/item/deepslate_silver_ore.json | 2 +- .../models/item/deepslate_tin_ore.json | 2 +- .../models/item/deepslate_zinc_ore.json | 2 +- .../cosmere/models/item/duralumin_block.json | 2 +- .../cosmere/models/item/electrum_block.json | 2 +- .../cosmere/models/item/harmonium_block.json | 2 +- .../cosmere/models/item/lead_block.json | 2 +- .../assets/cosmere/models/item/lead_ore.json | 2 +- .../cosmere/models/item/lerasatium_block.json | 2 +- .../cosmere/models/item/lerasium_block.json | 2 +- .../cosmere/models/item/malatium_block.json | 2 +- .../cosmere/models/item/nickel_block.json | 2 +- .../cosmere/models/item/nickel_ore.json | 2 +- .../cosmere/models/item/nicrosil_block.json | 2 +- .../cosmere/models/item/pewter_block.json | 2 +- .../cosmere/models/item/silver_block.json | 2 +- .../cosmere/models/item/silver_ore.json | 2 +- .../cosmere/models/item/steel_block.json | 2 +- .../assets/cosmere/models/item/tin_block.json | 2 +- .../assets/cosmere/models/item/tin_ore.json | 2 +- .../cosmere/models/item/zinc_block.json | 2 +- .../assets/cosmere/models/item/zinc_ore.json | 2 +- .../leaf/cosmere/blocks/BlockModelsGen.java | 14 +- .../common/config/CosmereClientConfig.java | 4 +- .../common/eventHandlers/ColorHandler.java | 22 +- .../cosmere/textures/block/aluminum_block.png | Bin 0 -> 335 bytes .../cosmere/textures/block/aluminum_ore.png | Bin 0 -> 574 bytes .../cosmere/textures/block/atium_block.png | Bin 0 -> 344 bytes .../textures/block/bendalloy_block.png | Bin 0 -> 343 bytes .../cosmere/textures/block/brass_block.png | Bin 0 -> 371 bytes .../cosmere/textures/block/bronze_block.png | Bin 0 -> 405 bytes .../cosmere/textures/block/cadmium_block.png | Bin 0 -> 342 bytes .../cosmere/textures/block/cadmium_ore.png | Bin 0 -> 725 bytes .../cosmere/textures/block/chromium_block.png | Bin 0 -> 430 bytes .../cosmere/textures/block/chromium_ore.png | Bin 0 -> 575 bytes .../cosmere/textures/block/copper_block.png | Bin 0 -> 364 bytes .../cosmere/textures/block/copper_ore.png | Bin 0 -> 593 bytes .../textures/block/deepslate_aluminum_ore.png | Bin 0 -> 535 bytes .../textures/block/deepslate_cadmium_ore.png | Bin 0 -> 694 bytes .../textures/block/deepslate_chromium_ore.png | Bin 0 -> 656 bytes .../textures/block/deepslate_lead_ore.png | Bin 0 -> 632 bytes .../textures/block/deepslate_nickel_ore.png | Bin 0 -> 612 bytes .../textures/block/deepslate_silver_ore.png | Bin 0 -> 684 bytes .../textures/block/deepslate_tin_ore.png | Bin 0 -> 676 bytes .../textures/block/deepslate_zinc_ore.png | Bin 0 -> 637 bytes .../textures/block/duralumin_block.png | Bin 0 -> 448 bytes .../cosmere/textures/block/electrum_block.png | Bin 0 -> 368 bytes .../textures/block/harmonium_block.png | Bin 0 -> 367 bytes .../cosmere/textures/block/lea_block.png | Bin 0 -> 296 bytes .../cosmere/textures/block/lead_block.png | Bin 0 -> 296 bytes .../cosmere/textures/block/lead_ore.png | Bin 0 -> 578 bytes .../textures/block/lerasatium_block.png | Bin 0 -> 367 bytes .../cosmere/textures/block/lerasium_block.png | Bin 0 -> 334 bytes .../cosmere/textures/block/malatium_block.png | Bin 0 -> 355 bytes .../cosmere/textures/block/nickel_block.png | Bin 0 -> 358 bytes .../cosmere/textures/block/nickel_ore.png | Bin 0 -> 583 bytes .../cosmere/textures/block/nicrosil_block.png | Bin 0 -> 338 bytes .../cosmere/textures/block/pewter_block.png | Bin 0 -> 332 bytes .../cosmere/textures/block/silver_block.png | Bin 0 -> 434 bytes .../cosmere/textures/block/silver_ore.png | Bin 0 -> 672 bytes .../cosmere/textures/block/steel_block.png | Bin 0 -> 326 bytes .../cosmere/textures/block/tin_block.png | Bin 0 -> 324 bytes .../assets/cosmere/textures/block/tin_ire.png | Bin 0 -> 592 bytes .../assets/cosmere/textures/block/tin_ore.png | Bin 0 -> 592 bytes .../cosmere/textures/block/zinc_block.png | Bin 0 -> 353 bytes .../cosmere/textures/block/zinc_ore.png | Bin 0 -> 657 bytes 159 files changed, 437 insertions(+), 183 deletions(-) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/atium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/bendalloy_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/brass_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/bronze_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_aluminum_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_cadmium_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_chromium_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_lead_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_nickel_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_silver_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_tin_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_zinc_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/duralumin_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/electrum_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/harmonium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/lead_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/lead_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/lerasatium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/lerasium_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/malatium_block.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/metal_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/nicrosil_block.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block_deepslate.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/pewter_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/silver_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/silver_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/steel_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/tin_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/tin_ore.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_block.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_ore.json create mode 100644 src/main/resources/assets/cosmere/textures/block/aluminum_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/aluminum_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/atium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/bendalloy_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/brass_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/bronze_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/cadmium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/cadmium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/chromium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/chromium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/copper_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/copper_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_aluminum_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_cadmium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_chromium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_lead_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_nickel_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_silver_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_tin_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/deepslate_zinc_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/duralumin_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/electrum_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/harmonium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/lea_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/lead_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/lead_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/lerasatium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/lerasium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/malatium_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/nickel_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/nickel_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/nicrosil_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/pewter_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/silver_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/silver_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/steel_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/tin_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/tin_ire.png create mode 100644 src/main/resources/assets/cosmere/textures/block/tin_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/block/zinc_block.png create mode 100644 src/main/resources/assets/cosmere/textures/block/zinc_ore.png diff --git a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 index de84cb910..a290c095d 100644 --- a/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 +++ b/src/datagen/generated/cosmere/.cache/44623903f0365d3c95d129c2cab3e32a7eda1dc7 @@ -1,81 +1,115 @@ -// 1.20.1 2024-11-04T18:26:44.0754925 Block States: cosmere -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/aluminum_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/aluminum_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/atium_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/bendalloy_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/brass_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/bronze_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/cadmium_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/cadmium_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/chromium_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/chromium_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_aluminum_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_cadmium_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_chromium_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_lead_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_nickel_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_silver_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_tin_ore.json -022f995a5e5c9e1566a84b469aa7af41a49a72ed assets/cosmere/blockstates/deepslate_zinc_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/duralumin_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/electrum_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/harmonium_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lead_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/lead_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lerasatium_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/lerasium_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/malatium_block.json +// 1.20.1 2025-03-09T10:51:05.8406215 Block States: cosmere +434461c262fd523078d948f09cd67d06c05798d3 assets/cosmere/blockstates/aluminum_block.json +d3c597bb535744596d88c0d263a692db9be076e1 assets/cosmere/blockstates/aluminum_ore.json +d41d8cda607832f24d3704fbfd452d536ab505cb assets/cosmere/blockstates/atium_block.json +84031bb83bc418e7b0b7ddd458f8712f2e83f402 assets/cosmere/blockstates/bendalloy_block.json +c1443e200e135a42d43e3dec7f85e429db6242f5 assets/cosmere/blockstates/brass_block.json +b20d68d7a79603c02791ea1f21ca1d448cf21f98 assets/cosmere/blockstates/bronze_block.json +4ec5c60d6bf8de79da40f47391ed1c9e6e428e36 assets/cosmere/blockstates/cadmium_block.json +e405c127daf703d304d3585ae1167ca39e721a09 assets/cosmere/blockstates/cadmium_ore.json +3641c34d1cf032cba648751fe44ce76cebe453dd assets/cosmere/blockstates/chromium_block.json +bb0ce7911c75338ad1123ce1341d08dca87ebdea assets/cosmere/blockstates/chromium_ore.json +802161856440c91a7bbd2ed17f6f7e0f939d0e52 assets/cosmere/blockstates/deepslate_aluminum_ore.json +8c967b192821510323bd0628a308c19dc6bf1859 assets/cosmere/blockstates/deepslate_cadmium_ore.json +905d0706fca44df568a102128ae0250d28285297 assets/cosmere/blockstates/deepslate_chromium_ore.json +5f20f21ad56e07117aea186bf7b9ae76ac96f7e4 assets/cosmere/blockstates/deepslate_lead_ore.json +62d727f34f6148882c28a440138939df886fd5fa assets/cosmere/blockstates/deepslate_nickel_ore.json +b0774e2ae0b9da62f66d925c46901fc5b9d934c1 assets/cosmere/blockstates/deepslate_silver_ore.json +00c36febc6f3584d8b5cbbe4f685b2a9a154f0c8 assets/cosmere/blockstates/deepslate_tin_ore.json +dd2af72ba521c21090c8a7f3f1fae0e2611a645e assets/cosmere/blockstates/deepslate_zinc_ore.json +a541aaa1d58c99893db477668d6537a47a4fc665 assets/cosmere/blockstates/duralumin_block.json +33a7001640f688e8e18e6774b1db70e400747b20 assets/cosmere/blockstates/electrum_block.json +c1e79c69eef2895ed393f0023797935244ff0885 assets/cosmere/blockstates/harmonium_block.json +528606df4b01309ec4a8828e5ca51a6935193be9 assets/cosmere/blockstates/lead_block.json +dbac4758d67308c39e94301695a189130eaa0a20 assets/cosmere/blockstates/lead_ore.json +f1648ba4e627cbb06c9ed1df3574eb12148a09eb assets/cosmere/blockstates/lerasatium_block.json +41bb6a9f1aae2c98b2103d28eef63cc2239c7b25 assets/cosmere/blockstates/lerasium_block.json +6668b7675265c8f6cc0e1a8b7aad25db91590434 assets/cosmere/blockstates/malatium_block.json eddacfb44c07e162b13925bdc0306bda846f23e6 assets/cosmere/blockstates/metalworking_table.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/nickel_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/nickel_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/nicrosil_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/pewter_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/silver_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/silver_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/steel_block.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/tin_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/tin_ore.json -83677ec98e79601ff5abf2788a2f9c319357aa1f assets/cosmere/blockstates/zinc_block.json -9f961b21bd6cd2168f09c80b16a4607806b79816 assets/cosmere/blockstates/zinc_ore.json +7fa8eb9536548ebffd37be41d1c698898e201cd0 assets/cosmere/blockstates/nickel_block.json +08b2878e3cd9727b8827796faf2258e55ceecf91 assets/cosmere/blockstates/nickel_ore.json +b1f18650b1685da5cddeade7694769296725127e assets/cosmere/blockstates/nicrosil_block.json +d66c951f930c92cffe29cbbe200cfa0eb192a748 assets/cosmere/blockstates/pewter_block.json +de3d220beca81506905951d1ba98bdf5e2ebc841 assets/cosmere/blockstates/silver_block.json +7d819466a64fa8e06938715d95deec7abd202eb0 assets/cosmere/blockstates/silver_ore.json +bf8563eddaf573501be00f67b08fdf10c4dded95 assets/cosmere/blockstates/steel_block.json +4946874f0f80547cb06684395d7c516e27b6d6ed assets/cosmere/blockstates/tin_block.json +35a33ee7d6465b721852f00159150ce61572baf0 assets/cosmere/blockstates/tin_ore.json +cccaf368b0c437c1d7a53fa0551dcc6b5c313af6 assets/cosmere/blockstates/zinc_block.json +2b307563d29a45119e73fe599f4dd2fbd14036f5 assets/cosmere/blockstates/zinc_ore.json +2082e1c7d03ffc7ae3a3cdc7f0bae4ac3ba27c25 assets/cosmere/models/block/aluminum_block.json +bc0cd23d41aa08d73f017a65cd7f064babc6e18f assets/cosmere/models/block/aluminum_ore.json +531eb4bd92fef6e7efc998e3d4fb31709b7aa2d2 assets/cosmere/models/block/atium_block.json +e44178baba8bd55a73611093b61ced75ddc815f1 assets/cosmere/models/block/bendalloy_block.json +29f3884321fc0478c96e22f24000edd8babff49a assets/cosmere/models/block/brass_block.json +5312db1bf3082d5d64094a76a0f81e1aa0d15575 assets/cosmere/models/block/bronze_block.json +b31b1c1e58f5d23f0399ceb0bbef920c13ba4b26 assets/cosmere/models/block/cadmium_block.json +75548fdb2fb2cd5fca80c06902d969a2c9f7c693 assets/cosmere/models/block/cadmium_ore.json +6688fb2fbe7b2fe6615cbb6015c3d341a3bb83e6 assets/cosmere/models/block/chromium_block.json +7c584fb4e34a7a46122c7ff73c5f124da3d3503b assets/cosmere/models/block/chromium_ore.json +a08d2e2b9345d1e7017baa1368c4456335f798b2 assets/cosmere/models/block/deepslate_aluminum_ore.json +6cb1c8a11c20ecd6219be2a34927c2377cb54380 assets/cosmere/models/block/deepslate_cadmium_ore.json +6d029127f33cd0a5c455e3e1bc2f25d2c4d56bd8 assets/cosmere/models/block/deepslate_chromium_ore.json +d8d189d1edb38e29485198c5cf1b1d2b7b3ec5fd assets/cosmere/models/block/deepslate_lead_ore.json +d79c4e76fd772fcdca8e2324c2dbf0a2c5b62e01 assets/cosmere/models/block/deepslate_nickel_ore.json +0814c9973e412ef8f3bd4626a2ab065d05147c75 assets/cosmere/models/block/deepslate_silver_ore.json +ef8436d06e4c235d71d92969ab797aef53e30c6c assets/cosmere/models/block/deepslate_tin_ore.json +c85f47d9baef7b2ec8ce1d50baf40ec601e986b8 assets/cosmere/models/block/deepslate_zinc_ore.json +9344672bbd40a7953331ce4d2bae6ba5e8474012 assets/cosmere/models/block/duralumin_block.json +f3c2ee16624370592811a7bc893aaefce2fcaa5d assets/cosmere/models/block/electrum_block.json +4948f1bd683275d34f3ded06c9a9691ace56671f assets/cosmere/models/block/harmonium_block.json +daa0a7af17062e1727f47af6d8bd268f727f66c6 assets/cosmere/models/block/lead_block.json +dee9a8002e5ee7d82f8f8b8587f1be6e8dc0da59 assets/cosmere/models/block/lead_ore.json +803414981cf3640bdbd9012fcd6a83000f1aca51 assets/cosmere/models/block/lerasatium_block.json +f94b579f64e42cbd5c2fbf829673b2410c90deca assets/cosmere/models/block/lerasium_block.json +a50a53ef730c81e9064d4ae4cade92846ef2b3f0 assets/cosmere/models/block/malatium_block.json e5882538f177993390dd6954b4d7053ba34e3f3b assets/cosmere/models/block/metalworking_table.json -85cc5fc92400eba60ec69a2405ec3fb3f1b6aeb3 assets/cosmere/models/block/metal_block.json -4b866743258b40303fc73d932a19f4a8695e4cf2 assets/cosmere/models/block/ore_block.json -c6dec7ce45a06ab80228f4a67740966d8c2de4bf assets/cosmere/models/block/ore_block_deepslate.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/aluminum_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/aluminum_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/atium_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/bendalloy_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/brass_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/bronze_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/cadmium_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/cadmium_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/chromium_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/chromium_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_aluminum_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_cadmium_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_chromium_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_lead_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_nickel_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_silver_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_tin_ore.json -a9fbd523e19adaa83060b8323cdcaf80b760967d assets/cosmere/models/item/deepslate_zinc_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/duralumin_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/electrum_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/harmonium_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lead_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/lead_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lerasatium_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/lerasium_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/malatium_block.json +bf37044aaf360f51814a6799fba0992b93271c68 assets/cosmere/models/block/nickel_block.json +d621bb813dabc2b9fadd6fd46774655ca7255d25 assets/cosmere/models/block/nickel_ore.json +7b150898778b0858f66d18e4c47e9dc9779136cc assets/cosmere/models/block/nicrosil_block.json +6b903e1b5328ca2487289c2b57fe42f250559f5e assets/cosmere/models/block/pewter_block.json +5f0fbdcf9c661829557fa2548b90d09fde290ef3 assets/cosmere/models/block/silver_block.json +b1eab928b7096cb15a24702bb88fa1bc52866092 assets/cosmere/models/block/silver_ore.json +d86953d63b7f6c4d8199a8be028a60b2334175b8 assets/cosmere/models/block/steel_block.json +7632b64925b21783dd91742c0753693838b03400 assets/cosmere/models/block/tin_block.json +dd32eb4009064e1f18d0c48636b43ad5976ca150 assets/cosmere/models/block/tin_ore.json +06c3e7c0276bf232b8345cc01027b44259c8a413 assets/cosmere/models/block/zinc_block.json +8a8c2326c99cdf0bb6c5d0e5db920b8312ddaf82 assets/cosmere/models/block/zinc_ore.json +df8fc605e8a35bffe4b1b26f278e3c3cb2aa42ef assets/cosmere/models/item/aluminum_block.json +97fce1ab9020a14a95532d924932df0b6d9e505f assets/cosmere/models/item/aluminum_ore.json +9b33b9aeb817ee0e145842aad66f033fd02dc71b assets/cosmere/models/item/atium_block.json +5e756c164b59b0bd70fa93783b0e66b6fe797f4f assets/cosmere/models/item/bendalloy_block.json +9175db3f0b27b9d28d10367157a2ae3f5ddf6186 assets/cosmere/models/item/brass_block.json +1a7eb92f34a7db468e51c62786a211971010aef8 assets/cosmere/models/item/bronze_block.json +efd627bec4b598562b5d719158c4cd861f585a28 assets/cosmere/models/item/cadmium_block.json +5feebcdc415009cfbbc3f359da946052e0bece3d assets/cosmere/models/item/cadmium_ore.json +fd53f3c676eb1c06b3587352ba74bded1e8922f3 assets/cosmere/models/item/chromium_block.json +3c84296fb38adc32064579fdb40215f16319cd57 assets/cosmere/models/item/chromium_ore.json +1da51c52e0f1ac514ffc4a13ca4585b799a16306 assets/cosmere/models/item/deepslate_aluminum_ore.json +5b1c9d2dc4252ab5b729430d35769fbd495c0ef8 assets/cosmere/models/item/deepslate_cadmium_ore.json +13faa8ccd317a16297d2e495095b41adac45c494 assets/cosmere/models/item/deepslate_chromium_ore.json +d252599752500f204608e05d7ca9bf9b3657057a assets/cosmere/models/item/deepslate_lead_ore.json +4bcec55dcfb371c007bb04652fbe0ac0a141b29e assets/cosmere/models/item/deepslate_nickel_ore.json +90e1365488f7aa5ed14cfa0a30d63da547cf2d91 assets/cosmere/models/item/deepslate_silver_ore.json +47e0625708e67b44f0ef3c408add58ed917cac8a assets/cosmere/models/item/deepslate_tin_ore.json +d1d4dacb19718deb36f0d22a37c28be6486e39b6 assets/cosmere/models/item/deepslate_zinc_ore.json +808ecc41351c6b7239eba5fec1b495e778b8f96d assets/cosmere/models/item/duralumin_block.json +3a804e4825ca1e9662c7ac5d56c16295eeb6f0da assets/cosmere/models/item/electrum_block.json +4e8fb254068184354ec2d98f157bb3335b6fd95e assets/cosmere/models/item/harmonium_block.json +4a9c4f31d8ace6d2932e9cb7293e0cb0993bd0cf assets/cosmere/models/item/lead_block.json +08113a5cf50add68853f96c592b1b48e0d5eb9f7 assets/cosmere/models/item/lead_ore.json +257542a60f94c693e26c27a5301696714fdfd35f assets/cosmere/models/item/lerasatium_block.json +738f0b84522b0e8f6717d5640c2eed7c524f4c3e assets/cosmere/models/item/lerasium_block.json +40598f89333863d06d86f9d38e811d99c7615fa7 assets/cosmere/models/item/malatium_block.json 0b4d4afa5bb6f8721e3f59ac8ffecf7fa88e03c7 assets/cosmere/models/item/metalworking_table.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/nickel_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/nickel_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/nicrosil_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/pewter_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/silver_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/silver_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/steel_block.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/tin_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/tin_ore.json -c14c73493fe0a8a50c4d52a9f5841c0325d906cc assets/cosmere/models/item/zinc_block.json -bd34edaadf4c9747cc8e3d5f20cfec29d929487d assets/cosmere/models/item/zinc_ore.json +30fb90a121889953a3217c23578e470b2e1137cf assets/cosmere/models/item/nickel_block.json +80d43c1a840047c3bf1320a37e82b22b6f452df8 assets/cosmere/models/item/nickel_ore.json +0852781363184e1faab124ca145740a89a0c210d assets/cosmere/models/item/nicrosil_block.json +e7be84c1e9832ef75a232eb18c0bafd216f8e457 assets/cosmere/models/item/pewter_block.json +5307ccd11eccb3fb51afeb8368f6f74fc3c796b7 assets/cosmere/models/item/silver_block.json +26d4d48beb4c99bad7672e66148a3a5243ea50b5 assets/cosmere/models/item/silver_ore.json +2a21c5704e511e2aa9d08b8f6e3bd8f7fa0d458d assets/cosmere/models/item/steel_block.json +306016edd475e83349d88ea743297ef9d4a2abe5 assets/cosmere/models/item/tin_block.json +062b078f369e0dffc80d187f09bcc804b8d7012f assets/cosmere/models/item/tin_ore.json +3bab2e3748da89b4699d4e4ae6b333190c2b304e assets/cosmere/models/item/zinc_block.json +009c4b0c57ede1faab450b209564b00599e3a478 assets/cosmere/models/item/zinc_ore.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_block.json index cc4caa40d..9eade8319 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/aluminum_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_ore.json index 9b149921f..c3a85d4e5 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/aluminum_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/aluminum_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/atium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/atium_block.json index cc4caa40d..6470d7e01 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/atium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/atium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/atium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/bendalloy_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/bendalloy_block.json index cc4caa40d..94aa20871 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/bendalloy_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/bendalloy_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/bendalloy_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/brass_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/brass_block.json index cc4caa40d..1136f041f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/brass_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/brass_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/brass_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/bronze_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/bronze_block.json index cc4caa40d..0eddeb9db 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/bronze_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/bronze_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/bronze_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_block.json index cc4caa40d..76cbaf453 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/cadmium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_ore.json index 9b149921f..d1638f4b0 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/cadmium_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/cadmium_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_block.json index cc4caa40d..3a03fe378 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/chromium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_ore.json index 9b149921f..c3470a97c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/chromium_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/chromium_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_aluminum_ore.json index 1297b0b42..1a90018ac 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_aluminum_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_aluminum_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_cadmium_ore.json index 1297b0b42..20aa476ba 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_cadmium_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_cadmium_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_chromium_ore.json index 1297b0b42..3bba4e56a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_chromium_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_chromium_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_lead_ore.json index 1297b0b42..4da001514 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_lead_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_lead_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_nickel_ore.json index 1297b0b42..331d81aa8 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_nickel_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_nickel_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_silver_ore.json index 1297b0b42..0673a3e14 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_silver_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_silver_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_tin_ore.json index 1297b0b42..731a9431d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_tin_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_tin_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_zinc_ore.json index 1297b0b42..a98ab39b7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/deepslate_zinc_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block_deepslate" + "model": "cosmere:block/deepslate_zinc_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/duralumin_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/duralumin_block.json index cc4caa40d..2aab64779 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/duralumin_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/duralumin_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/duralumin_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/electrum_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/electrum_block.json index cc4caa40d..86e065b79 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/electrum_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/electrum_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/electrum_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/harmonium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/harmonium_block.json index cc4caa40d..3d968d348 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/harmonium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/harmonium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/harmonium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_block.json index cc4caa40d..5c3783a1d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/lead_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_ore.json index 9b149921f..f7e14d767 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lead_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/lead_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasatium_block.json index cc4caa40d..41ed157b7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasatium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasatium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/lerasatium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasium_block.json index cc4caa40d..f7f50ac99 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/lerasium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/lerasium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/malatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/malatium_block.json index cc4caa40d..62eafb9a2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/malatium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/malatium_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/malatium_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_block.json index cc4caa40d..930ef0203 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/nickel_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_ore.json index 9b149921f..112fd1531 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nickel_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/nickel_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nicrosil_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nicrosil_block.json index cc4caa40d..95022dd63 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/nicrosil_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/nicrosil_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/nicrosil_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/pewter_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/pewter_block.json index cc4caa40d..90a411482 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/pewter_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/pewter_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/pewter_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_block.json index cc4caa40d..c662fc4f8 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/silver_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_ore.json index 9b149921f..a16d8605a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/silver_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/silver_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/steel_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/steel_block.json index cc4caa40d..978692c46 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/steel_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/steel_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/steel_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_block.json index cc4caa40d..fa8919986 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/tin_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_ore.json index 9b149921f..2c961930d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/tin_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/tin_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_block.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_block.json index cc4caa40d..e67043611 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_block.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/metal_block" + "model": "cosmere:block/zinc_block" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_ore.json index 9b149921f..44e707f83 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/blockstates/zinc_ore.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "cosmere:block/ore_block" + "model": "cosmere:block/zinc_ore" } } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_block.json new file mode 100644 index 000000000..614ce3a65 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/aluminum_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_ore.json new file mode 100644 index 000000000..22349c141 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/aluminum_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/aluminum_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/atium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/atium_block.json new file mode 100644 index 000000000..6d68ecc24 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/atium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/atium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/bendalloy_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/bendalloy_block.json new file mode 100644 index 000000000..975020226 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/bendalloy_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/bendalloy_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/brass_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/brass_block.json new file mode 100644 index 000000000..b72192dec --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/brass_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/brass_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/bronze_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/bronze_block.json new file mode 100644 index 000000000..0d03d6674 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/bronze_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/bronze_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_block.json new file mode 100644 index 000000000..8f4202bcd --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/cadmium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_ore.json new file mode 100644 index 000000000..6507523db --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/cadmium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/cadmium_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_block.json new file mode 100644 index 000000000..612df3620 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/chromium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_ore.json new file mode 100644 index 000000000..a1c9300bc --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/chromium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/chromium_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_aluminum_ore.json new file mode 100644 index 000000000..81058e848 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_aluminum_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_aluminum_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_cadmium_ore.json new file mode 100644 index 000000000..5f7c40771 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_cadmium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_cadmium_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_chromium_ore.json new file mode 100644 index 000000000..7bfb2b969 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_chromium_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_chromium_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_lead_ore.json new file mode 100644 index 000000000..f6422c03d --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_lead_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_lead_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_nickel_ore.json new file mode 100644 index 000000000..a9fdacaa9 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_nickel_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_nickel_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_silver_ore.json new file mode 100644 index 000000000..4d5a15829 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_silver_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_silver_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_tin_ore.json new file mode 100644 index 000000000..eaf703c44 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_tin_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_tin_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_zinc_ore.json new file mode 100644 index 000000000..826b1e74d --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/deepslate_zinc_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/deepslate_zinc_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/duralumin_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/duralumin_block.json new file mode 100644 index 000000000..eda4bf70a --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/duralumin_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/duralumin_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/electrum_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/electrum_block.json new file mode 100644 index 000000000..5261b66c0 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/electrum_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/electrum_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/harmonium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/harmonium_block.json new file mode 100644 index 000000000..ea06d079c --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/harmonium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/harmonium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_block.json new file mode 100644 index 000000000..6238a6dac --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/lead_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_ore.json new file mode 100644 index 000000000..619e7cafa --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/lead_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/lead_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasatium_block.json new file mode 100644 index 000000000..1eada75cf --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasatium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/lerasatium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasium_block.json new file mode 100644 index 000000000..74187215d --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/lerasium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/lerasium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/malatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/malatium_block.json new file mode 100644 index 000000000..1dcd12524 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/malatium_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/malatium_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/metal_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/metal_block.json deleted file mode 100644 index 3702bb29d..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/block/metal_block.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "cosmere:block/shapes/cube_all_tinted", - "textures": { - "all": "cosmere:block/metal_block" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_block.json new file mode 100644 index 000000000..30f0e6ee0 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/nickel_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_ore.json new file mode 100644 index 000000000..912fd65ba --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/nickel_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/nickel_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/nicrosil_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/nicrosil_block.json new file mode 100644 index 000000000..12e553243 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/nicrosil_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/nicrosil_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block.json deleted file mode 100644 index 7f5d5217c..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "cosmere:block/shapes/cube_with_tint_overlay", - "textures": { - "all": "cosmere:block/ore_block", - "overlay": "cosmere:block/ore_block_tint_overlay" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block_deepslate.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block_deepslate.json deleted file mode 100644 index 76aa6ec53..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/block/ore_block_deepslate.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "parent": "cosmere:block/shapes/cube_with_tint_overlay", - "textures": { - "all": "cosmere:block/ore_block_deepslate", - "overlay": "cosmere:block/ore_block_tint_overlay" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/pewter_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/pewter_block.json new file mode 100644 index 000000000..a6be1af36 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/pewter_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/pewter_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_block.json new file mode 100644 index 000000000..2155d8369 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/silver_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_ore.json new file mode 100644 index 000000000..df291ff3a --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/silver_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/silver_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/steel_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/steel_block.json new file mode 100644 index 000000000..a68124bd0 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/steel_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/steel_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_block.json new file mode 100644 index 000000000..6cd77dddc --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/tin_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_ore.json new file mode 100644 index 000000000..44df7e89f --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/tin_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/tin_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_block.json new file mode 100644 index 000000000..d4757467a --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_block.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/zinc_block" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_ore.json new file mode 100644 index 000000000..8583cd5b8 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/block/zinc_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "cosmere:block/zinc_ore" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_block.json index 2e23b3488..8258ac0a9 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/aluminum_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ore.json index 385ef680b..2c70fdf3d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/aluminum_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_block.json index 2e23b3488..cb1819ebe 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/atium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_block.json index 2e23b3488..eb1af0c69 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/bendalloy_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_block.json index 2e23b3488..4f13dfb94 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/brass_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_block.json index 2e23b3488..b12958392 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/bronze_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_block.json index 2e23b3488..ab4a66dea 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/cadmium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ore.json index 385ef680b..1752b3125 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/cadmium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_block.json index 2e23b3488..78ce5c687 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/chromium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ore.json index 385ef680b..f20a25ea4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/chromium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_aluminum_ore.json index 98b5cd375..d98f6c70b 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_aluminum_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_aluminum_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_aluminum_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_cadmium_ore.json index 98b5cd375..35e79cfd1 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_cadmium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_cadmium_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_cadmium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_chromium_ore.json index 98b5cd375..f4f3aea04 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_chromium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_chromium_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_chromium_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_lead_ore.json index 98b5cd375..5801efdf7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_lead_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_lead_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_lead_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_nickel_ore.json index 98b5cd375..56fcbc3b4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_nickel_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_nickel_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_nickel_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_silver_ore.json index 98b5cd375..0bf8668aa 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_silver_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_silver_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_silver_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_tin_ore.json index 98b5cd375..3ccc7a981 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_tin_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_tin_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_tin_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_zinc_ore.json index 98b5cd375..fe2b5bb0f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_zinc_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/deepslate_zinc_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block_deepslate" + "parent": "cosmere:block/deepslate_zinc_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_block.json index 2e23b3488..d22f9ff55 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/duralumin_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_block.json index 2e23b3488..945d0bf50 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/electrum_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_block.json index 2e23b3488..ee95053c6 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/harmonium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_block.json index 2e23b3488..87cd5fcdd 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/lead_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ore.json index 385ef680b..3699db894 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/lead_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_block.json index 2e23b3488..e65ea6107 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/lerasatium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_block.json index 2e23b3488..01c05e9ee 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/lerasium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_block.json index 2e23b3488..94033bedc 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/malatium_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_block.json index 2e23b3488..6b339d796 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/nickel_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ore.json index 385ef680b..a252cf84d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/nickel_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_block.json index 2e23b3488..1f7fb708a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/nicrosil_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_block.json index 2e23b3488..4e67e04ad 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/pewter_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_block.json index 2e23b3488..50984dbe5 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/silver_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ore.json index 385ef680b..8e13fabe2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/silver_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_block.json index 2e23b3488..3658df55d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/steel_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_block.json index 2e23b3488..c2ffbf74b 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/tin_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ore.json index 385ef680b..8b26a0de8 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/tin_ore" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_block.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_block.json index 2e23b3488..d48ecba1a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_block.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_block.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/metal_block" + "parent": "cosmere:block/zinc_block" } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ore.json index 385ef680b..9b50cfe6f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ore.json @@ -1,3 +1,3 @@ { - "parent": "cosmere:block/ore_block" + "parent": "cosmere:block/zinc_ore" } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java b/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java index 75b9680f7..c6e58a064 100644 --- a/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/blocks/BlockModelsGen.java @@ -1,14 +1,11 @@ /* - * File updated ~ 6 - 8 - 2024 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.blocks; -import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.blocks.MetalBlock; -import leaf.cosmere.common.blocks.MetalOreBlock; import leaf.cosmere.common.blocks.MetalworkingTableBlock; import leaf.cosmere.common.registry.BlocksRegistry; import net.minecraft.data.PackOutput; @@ -33,7 +30,7 @@ protected void registerStatesAndModels() for (IBlockProvider itemRegistryObject : BlocksRegistry.BLOCKS.getAllBlocks()) { final Block block = itemRegistryObject.getBlock(); - if (block instanceof MetalBlock) + /*if (block instanceof MetalBlock) { //ModelFile blockModel = models().cubeAll(getPath(itemRegistryObject), new ResourceLocation(Cosmere.MODID, "block/metal_block")); @@ -44,7 +41,8 @@ protected void registerStatesAndModels() simpleBlock(block, blockModel); continue; } - else if (block instanceof MetalworkingTableBlock) + else */ + if (block instanceof MetalworkingTableBlock) { ModelFile blockModel = models().withExistingParent("metalworking_table", new ResourceLocation("block/cube")) .texture("particle", Cosmere.rl("block/metalworking_table_front")) @@ -57,7 +55,7 @@ else if (block instanceof MetalworkingTableBlock) simpleBlock(block, blockModel); continue; } - else if (block instanceof MetalOreBlock) + /*else if (block instanceof MetalOreBlock) { //Special thanks to @Random & @sciwhiz12 on discord who helped me get these running //To get the overlay working, you need to tell the blocks they have transparency, which I've donne in the ClientSetup script. @@ -72,7 +70,7 @@ else if (block instanceof MetalOreBlock) simpleBlock(block, blockModel); continue; - } + }*/ simpleBlock(itemRegistryObject.getBlock()); } diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index 42f9e81fd..67dd35ca7 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 7 - 2023 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.common.config; @@ -22,7 +22,7 @@ public class CosmereClientConfig implements ICosmereConfig ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); builder.comment("Client Config. This config only exists on the client").push("cosmere"); - disableItemTinting = builder.comment("Lets you disable item and block tinting for metal items and blocks").define("disableItemTinting", false); + disableItemTinting = builder.comment("Lets you disable cosmere item and block tinting for metal items and blocks").define("disableItemTinting", false); disableSelectedManifestationHud = builder.comment("Disables the HUD for selected power").define("disableSelectedManifestationHud", false); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index e3938f11c..e6b545d35 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -1,16 +1,18 @@ /* - * File updated ~ 30 - 7 - 2023 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.IHasColour; +import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.color.item.ItemColor; import net.minecraft.client.color.item.ItemColors; +import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -47,8 +49,18 @@ public static void init() for (Item item : ForgeRegistries.ITEMS) { + final ResourceLocation registryName = RegistryHelper.get(item); + + final String itemNamespace = registryName.getNamespace(); + if (item instanceof BlockItem blockItem) { + if (!itemNamespace.equals("surgebinding") + && !itemNamespace.equals("cosmeretools")) + { + continue; + } + final Block block = blockItem.getBlock(); if (block instanceof IHasColour) { @@ -58,6 +70,14 @@ public static void init() } else { + //todo temp? + if (!itemNamespace.equals("surgebinding") + && !itemNamespace.equals("cosmeretools") + && !itemNamespace.equals("cosmere")) + { + continue; + } + if (item instanceof IHasColour) { itemColors.register(itemColorHandler, item); diff --git a/src/main/resources/assets/cosmere/textures/block/aluminum_block.png b/src/main/resources/assets/cosmere/textures/block/aluminum_block.png new file mode 100644 index 0000000000000000000000000000000000000000..3fa3abbbb9d3b73d1cbf69929b27599970a3954c GIT binary patch literal 335 zcmV-V0kHmwP)Px$2}wjjR5*>5lCe(1Fc60SM3GW(mBtN%rK(ik19$)g46J<+2HpSxI|~vI#t<6ij%fuN zqTaN2cdR?CUS;i&;Se2Ge6Q1oVoUp#?#sHqxv$%ecE?onWRfpds~vMgBue&v>*MQ- h2ACStG5_+tzX53f_Th0Yw}b!y002ovPDHLkV1k?vl2`x$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/aluminum_ore.png b/src/main/resources/assets/cosmere/textures/block/aluminum_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..84ca5b970c651fae9a9176a04a0059ca771f44fd GIT binary patch literal 574 zcmV-E0>S->P)7?e_B`2#&SyY2O2|++?FL6abc+Z4ewA zla0cV$;=rc0gPx$5=lfsR5*=wQL%2rAP~J;mVpp2CSC3Bk^29?;>pUI7%vv(V6Zwo>r9iB0l4G6 zcXyAE@9R}*P5-RKth7$dlBt!}U&A2r;(h1b;{6_<&&N*mnCBX|aU6+A8^bZKA-t{D zT1!MVRDqTqZ&+&xt+i_i5UPl%b51mdz90G?xDw4V6491(B^6q0!Cbr-95_JlL*vlK zNb4n;}i%DL!ImXY+MJu&eD1T85 z<8ew`&dglB`VDm14^*nAIb3=|10nNt&fTVI%lRObeshetEcd%sic`8x)AK(-Uit>% q)V4%)Y8q%CgvUIWsh#uJ3|YVbF2_!2BF&%x0000Px$5lKWrR5*=&lEF#?F%(6wLxzMx37v&2QQWxgANU)7pkGtBF1wKyEQmBdN~bT( zFu1tGYpkPLgn7w%_ugc3_453rNdW***#i(60A%TWth00|Ms9njNjI-M0OhuiwU0G` z>s!y25E}sN)z-0oc)SOoNy8$Tq1lQIADbN+M?C;vZ|?wr#<&n0(&I|f!|_xxZt44* zCJ+_@K&7(xvDTy|ZAnTwMy*7K7%O%gUEY;t9vv>uN1qG2yxfX~CY{VpZO)A33cG2# zJjOW^9sZ(o+y7{oOu~;+n}>E;x=EUIZu`UW1i;VcY;$xF`82Uo+s~Y#=LP_G%Nu)0 pw6+&zzi4d8ZNFY^S7KP~=`ZZkp=*CYH$wv1LWbbO#NY^n2~{U|I9XOr z3cW!br+0VnJ;~d@y}*ewuQ-X~a8QimaJxDB0Pd&L@nYr$5<(^bZXWQxH&{&&GSSp3 zYKj_w4`95QeSTy>##8OQ!RFO^X&Ssh0@>s96NChibc1`irtcmrdHAE zeCb_k6_t5a<`s4aV+a6XzB_Qj71rZ3`_+1BZ886XzaXFP=i6?M_;*z5>jxGA;+2#n R_e}r*002ovPDHLkV1o2Po#Oxi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/bronze_block.png b/src/main/resources/assets/cosmere/textures/block/bronze_block.png new file mode 100644 index 0000000000000000000000000000000000000000..c067bf501b6175251bd7c220f3f0f42c5d7968e1 GIT binary patch literal 405 zcmV;G0c!qPx$Pf0{UR5*=olEF@cKomu<&7{*Qp$#p8rb@p+xBfs^{)j*0e|4iPbzzMr2CP9e zC4takSh=`$oSG6A?_JKl^D>W=z$o^!!(ueWyqq>^43Z?jY?d3Jsg%%Wfxm3e_*8-Trm1S2QOf?VTp_7NP{3u6*q z7$2oMk{U>1t=lXGV6v2`bpo(v-5N0phVPFLUKlgOXv0+N{K$%fk@irQ(jb*|iFp#u zlZZ8SQI)%YlDiY&AYM0}sB2?UcXw>5*j9Oc0pRKW&5fyRQ`g4#rCoVd??*CXK? zd|y&@e-J9l>-XGLzSdKGRcuGWa2k&Hx8(cMo!uR`bZgW= zy0hul@B}rGo3zxc_1_){(L?Uw9$TZE&Q*Q@a}VoGzy0-g00000NkvXXu0mjfbrP{Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/cadmium_block.png b/src/main/resources/assets/cosmere/textures/block/cadmium_block.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f84967d893f2279abfd6a0b76f3ed5f940ab77 GIT binary patch literal 342 zcmV-c0jd6pP)Px$5J^NqR5*=|k-tvEKn#a}oT5vUo{}MfrD8;#kznF2c^4jm2_)u}p+Z$9py_ax z^QTq@28ZKFqNuGl8Ik@BG= z09>^I@KNgdEXj?d0Vn{|G%%pG2>>WDnWQh53!m2W831*n_paFbbdsB1>73r8-75{~ z>xbKMZxN{*R%3ee{5GJ|<&9{^kybLunFtNQr)}{rhJQ*zi;2JY)!n_LnYy}R6=tb_ zlL7tx`r>~rj`d{|fdrbF_o4mL0?P#vrIMQnJ-jg(dy5T^wOdS)^ o7XhDAh$AgQ-Ed4@-LP!<11vyIb3+t66#xJL07*qoM6N<$f;`5VlK=n! literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/cadmium_ore.png b/src/main/resources/assets/cosmere/textures/block/cadmium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..6d926f045e53be45a461fc2439e646716298fa71 GIT binary patch literal 725 zcmV;`0xJE9P)^8+(0)bv*^LlqXfYj#3yJcHRCVgeePlOQ8`Bk$J4|xD`M=l7%qn`n1 z;?1w!ddH)OOG`@tG))tGdU^;UN9SfcyvnJ_-nFq;Vaup~U;Q0v1<;zgd@R%Jd7k&- zW6WA7sY`;c>#C}XqFA1I4ImX$t)_A?G)yUVT^E4AdLR&JZ*M1rNPd-4+WmA400Z1o ziR|yIs#+`-0Sq{0IEaV5oFqk~Q8Am%nx@%b_`W{<$&e4{^Lfj%Ow%NUoZVRIC%ZRZ zyo}phtX>oHCFf+DI5IMFesL1OpL>tP;jko0&sCSKF7i}5bTR#Vc3~km72LP2a=mi< zez{y0bX|`|qmf8tetzD+KqL}LCXD5ae9SS)7Sb|R4w z`}+ED`pnwQ*SuA2Rw@Q@ZLMgpz{%A3*dAGT6bb=~dm0+gSIx$E$BTFhiJl+tRoDhLASoH4dH`8m~ed1sOklDLw6 z|2Aitb@`xjX!J>=(GYZ9$NwSAG62u>d~s0}0Wiiq&jaumMFUJ?($+1C00000NkvXX Hu0mjf`^irA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/chromium_block.png b/src/main/resources/assets/cosmere/textures/block/chromium_block.png new file mode 100644 index 0000000000000000000000000000000000000000..0aeb21cb182ab22eb07f47069a4c85906da428a7 GIT binary patch literal 430 zcmV;f0a5;mP)Px$Xh}ptR5*=ol21#+KoG@WVlWliOzSxXJzMk(sCPlnf{5Q!!HasDDWv{^ z7B{m?F%5zqrX54;oMtn>nVt8t!T!M^Q5&<+oVmn8)Z;25YWFsK%D`o}|5w#OzWW}4?3_#u&F$5s*=XoEpn?$HJ zYk4M@wam;JUmt#~C=J%=P)Px$`AI}UR5*=Yl0R$PKp4g!C&EKcfh!1vd^i*@B7{H*7@T-%wFHCdVCd$_pCI2r zAHn?up?e`yprnJRX!6$J;c8F{t`LF)zZhR+5Qq-18%p2dxWCW+p69MHolc3UC<*|+ z?^|mD2qCPs+wInMT^{0ZIYe~#77ZgI1Pk$bZXMp*4%+}0^M(7t zRZ5MycunhpN>nf!jzJV7O^96v! zB$Jy70Jd@7KL=oP(+N97ba-`jRaMn`y-sx+ybY?VI(~C}{)AQ50w0GiKxHt+kCfjsdWZ+t0VslhH7eQfjT4kPP() z{V)sx5Rt=5?2^&7*6gPpwoPt0hAhkWFU>J~f#>@^5djFpkcbkqCmfAOj6g(EN=HhW zr+K+4TdkH5f)}i{*PpK09;ksGX7>N}D`~jxTDNO&N%pm{( N002ovPDHLkV1kgH0?Ysa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/copper_block.png b/src/main/resources/assets/cosmere/textures/block/copper_block.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0453be0513d45609e2c09f94bdf0e5cc4babdc GIT binary patch literal 364 zcmV-y0h9iTP)qzb8uKnM{h20M!{Jxt`ffN%Cb&(6-i{Cs@^ z0AQpkRAr9EOgy1O0TB!{XM96}6dQ?3?svx9!ARk%TqwlG@t&m=2p} zdMSmC?YT=Di)mijHdiV&(lEipxjg_@Bv6KAn3`P z6zoL^5)EyP8;G#&Ze`gAozX2x6AzO{@twW{^Xq-)JGZm51Lx0LYm5=W%tWNM1^`3^ z0A@x+Wv!hB%q&8ZM8t6{l@cn+-kVS1ce+LwhzJ0rv503F4(PPy)x$8H79e87cwrbu z6!jPL0C4?~wAQ}wTWjB#4cB#T5J;wCW*HJiQGYSN>F|>i9^mPRE2G)Rr1x|sL^Q^9 zyWQ&YX#426a+Y^5db_vo6_Z5rq9~dz>3QCCLb+TXPs*(oGjLr1NRlKBLn0!g>hcHx zdf!QFZLL+pL2EthBtQ^xj}9w${Z_T?^x~&SA77D1#Cgy2eBURc{$jqmJd&;eV2o+_ zwZWIJ(~DPr?pJjF@ubhp%3AyF^8Bwyw@UyAy?6!o$CI)#MsC;eYp(}i>#O&70g@y^ zYjd?)?FN=UwLh26RK2h?9$(6`tkdZXhr@-1g)Ga~OV=F734$QYGGl=1~rk} z#VyFQ8{ISKb*B=?ah7F7gyS*B0*Im^UwLGV)mj1&^ZDEuYpnwyrO%+jVYLPmlxql+!%Xyef>EMdwIU=_q&x! zA^yH3)0rst*~WF>by}*qTD#wC`;uD#{eD*f$g)f+#qQJeSxVm+t2LgIDLX7zBDhl? zl!I>9mdI$0aw-6V(I@MSTg;~Xz84L-QMB9vhrD^5$kF{>I**TXJ zZN=5qr<5y%RiFS Z{sS^|I4h;R4*CE9002ovPDHLkV1hI3{AU0F literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/deepslate_cadmium_ore.png b/src/main/resources/assets/cosmere/textures/block/deepslate_cadmium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..b9752da932f51cc5519d7173958604c56a2b258d GIT binary patch literal 694 zcmV;n0!jUeP)YN3Wd_a0iCofBW_`%CHZ|E*O_-Piey)mdPntvLy?IIOV=YD*Wn|Pfp*)QW8|X3$JO7{x9SKue%lH;*hbh*s-Mai;EWi4xz zw>Mf6mrkbvU}fdwrTTXONE%^mDoD9v>rCQn#4v1o(WtrpSr#;V`cksqg=klGqQ9ECE*kG-* zD@uGk9$#n_0N|My_2)h~tF_kN=hVSZ&9;oS?5o#-wvEJjSeIm3?msDy>0D#$QWinKSfOvB3 z)Ow!njF~Bbt*tEp&~=p%rm8_*R}+Z@A_@TTrvF5F;|l;JkzrFoKIl{VNa>+QsV=_+ zK*ZypuGO0P-tc-|c<1!kLj$rb`>_(j&N+wIX3mTbN5W`_iU-SO#xE`|jEux2sV^3b z1_A;hES}#>Hr!RWl}b&0C{^}8=dkR^ox{fs`Pf5ujeU$Cx|+!q{lqNG%&fW@+ECSg c%Q6x1FW8+vw5`alg8%>k07*qoM6N<$f?>8qvj6}9 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/deepslate_chromium_ore.png b/src/main/resources/assets/cosmere/textures/block/deepslate_chromium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..44e9058616fb62cb86be2916477692e249054984 GIT binary patch literal 656 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 Xy2K&`>RrwG00000NkvXXu0mjf?1d^a literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/duralumin_block.png b/src/main/resources/assets/cosmere/textures/block/duralumin_block.png new file mode 100644 index 0000000000000000000000000000000000000000..aef2650a30019860f74132aa3450edd43f3657b4 GIT binary patch literal 448 zcmV;x0YCnUP)Px$dPzh{F0LTw63^C)?BaJb}Bk@%)}&%5`Wd(PW=czT3wXX-dxaR~sbTiyBmrQMdWcz$~gzp0Fw<8iojJ#Vdm=kDT?6nr6?-Olydd96_g0L!+k zTE2ne)ndrwhTE2Wc3 zva2!%0Ec>(kkP~{?jN)a0}&;zL@+*;G1MVq?8b|(X*14M#`uCq(#fPRgzI^}5NaZ^ z8;$xxkSo{oXkiRWq7Q0zJLq8}e)K?N5+!|lR2)sLWe^}!IQwvt63NvX^{Y}Tm(c+r zm(jz~0RX0?#Fe#zW!o*oFg4AxZBx^56B_v9eDx0m-QV0I(~NWEn{f^R-@pAxWVbgQ q;BFh+!{34TexENmK}uZtr~CoEIMDq0FXEH{0000Px$DoI2^R5*=&Qo%~YKop#mg+$O7*sx6?$6mer3I2*d;^!3n1VIo_p2S;vGSGHu zpxc1SDIO-igcjY?+u7NjdGj`UdwRrd9h-e>mzT(~*>h_E+}%F_82S*!GV}pJ6bmla z*XQfY^V;Z!MdtE@-(@ZbkcjJo2XOGaa&-%!*#@IpBmv+V)e>=a^+CKn)wU3m+9hr9 zNdR5&S8g@*L8%0(u;62v%M)?5o{0PQm9o{|*fcGXJ@i3ME0r~ITgZYT{?FF-MoY|; zg)-EGvafGSTZmD17d!*i)-_*xZa43f0?quzrtCE7d8W!%e13Dh5XF+n)VH>A)-h8W zW90;Rv;6%Lbl3&2;s8u)m->;~Q_VD3oYm9dHr1LL+d`Ucm>W=B=kNoJGRw*z-YcE} O0000Px$DM>^@R5*=&k}*%iFc5_wk(ES|YlIqQ!5Kg*Qdt<`H+N?4T8WNSVgm`n5XBjC zSW()E;lkB~3NJa|eRuc#l(W_23O}c+J|woboFuI+x9gn(@NjoeJps5~ECHCzNE`K3 zToideH<_WH#s=!?Y4ZZ$vMiDm$iZdjS^#-I2k`p-*3=$ABpa_6MUp~>g|u^RQ~NLK z0Yt2IW-=-NL+e;8PMLEpx`pO|>6yv6M{(`5YK1sS%f#^wNs5UK0Q&*#gwX!rBLpX0 zvL8U552f-^)|MtSV&zFXj1_-ED_IE>)On7R6zGD62`wnUSoG*vM}KMRd`R;uHp3tM z=+b^T(mYJ)B*pUPN`5e9ZRuPq9HYO24o&@hbZNWZ=~(kR5gJ}6nQ!V?-)-|{-n0M! N002ovPDHLkV1iYYoWlSB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/lea_block.png b/src/main/resources/assets/cosmere/textures/block/lea_block.png new file mode 100644 index 0000000000000000000000000000000000000000..1817e0395034dd08d00122d3e2a3fca4a20cbd3d GIT binary patch literal 296 zcmV+@0oVSCP)Px#;z>k7R5*=|QacX9Fbs7=gu^8|F|e|51rES1xGG$Mxrm_>2&r)tDux$1R$C!F zM3(%1cH10JXZpKtm#ZhDzU$|+G{p5L=u1Rn6e98%zwZw;o;iznW+IAFT;McBKnp;- zcE4M6OG9*lmE-KJ?|Qi7MPucwgJ%X>6KifOKXuS8bw!KLB9-6*+smjh8cnh6V1;c{ z9qft-qr#RpesUooG|D2tae>qGPx#;z>k7R5*=|QacX9Fbs7=gu^8|F|e|51rES1xGG$Mxrm_>2&r)tDux$1R$C!F zM3(%1cH10JXZpKtm#ZhDzU$|+G{p5L=u1Rn6e98%zwZw;o;iznW+IAFT;McBKnp;- zcE4M6OG9*lmE-KJ?|Qi7MPucwgJ%X>6KifOKXuS8bw!KLB9-6*+smjh8cnh6V1;c{ z9qft-qr#RpesUooG|D2tae>qGPx${7FPXR5*=AQeA5kK@>eED{h?)x#XkUHkOv6tY9@11NA8hfxH&+2bBJ!{1x#* ze9A*!G+;4-G$j;^flj)cG|LU0(IraoVd6M1GjloTo_o)|4_d7j{vBqHq6mQR`&w(I zl;?Q>gb)_vFthz=t(O}IvuWu25JD)W3`c8iXj*H>;4Ei04S5nrnV$ficeVw3<-F?*h8qz!sD4NV*$@O+=2?ns##etebj7`K&u%BwA}B1T()o zDO>k0MoFXUGqVHWW^j$e10XDJZt-M@?Skc4KN{6N^GG+F&Eq%EzkU62H@;PidlmD` zSG%7+UTR0&#>@Vf?=xNn&x+RfbiH0rlH{no-|vl=zmk);Wg?pYN$0b!mn}Hrp_|#b z9E3;Zeb;qYtCbT)k?;Fb%G0wN04Ze@MLbD>oGJ3EH&ii8Dc82ziHt@g06`D{@O^G~ z#sGK{H>!I?Wz#wl{hxG_%FP!^0GM8_MN&#LD}!{1h=`cEdp=e%^V5vQ8D$~Fc=mgK z|2WuAl}aVYdS_BHbGtLPCITR$cBijmZd7Uj9J{@CZI55C=RiazZgT<{EJpcdz literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/lerasatium_block.png b/src/main/resources/assets/cosmere/textures/block/lerasatium_block.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4107c83b092e41be918552ef4b61e02fda06d8 GIT binary patch literal 367 zcmV-#0g(QQP)GZu z(;K`qxBV_n?$WvKrJ?}5KEH4>j9nb<`4&Qoj_k+rq@)VKksZ)EvMrTqR(|-D=~=0@!NPHsw|uj+tJX^H5g7-1a=qrzQ1i)(v)P5=Z+qEAD8H0WiIZ z%-X;X@VY)Nd;Ze6iA1nKQ8klxuS({OT!X``X5G6=d_oJ#2Wwr N002ovPDHLkV1fhOq$2Px$2uVaiR5*=wlEF#?K@5g}ho$Te-D0c71)sqe5PV{kD7h2j`OSdFp z>A^#WbUIseSZ1f(*SjC30TdjLi|~!} gpq~AxqMk8`KRbT6G*c;b9{>OV07*qoM6N<$g1T&zK>z>% literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/malatium_block.png b/src/main/resources/assets/cosmere/textures/block/malatium_block.png new file mode 100644 index 0000000000000000000000000000000000000000..9b832ff5d28502b2f58fcab349d7ae19003c4337 GIT binary patch literal 355 zcmV-p0i6DcP)%5uuUMxUcLJX{)#{1=M?+|K@d-##9MkY&~|B{+knX_9wxqo7Twd^ z+1Z_W^EP^Wdcr`Vhr3^Z`H=3oh2z=j+S!+USNw=JJEz zWiAJhi0gs}aPYfwbqk=`2BTUe0pJ@?|lrpi`)esjDK#gfR>x3+QCF;g02Px$AW1|)R5*=|QAdLL7nHuwq3wm8e=&qNquV z9A~PoSiERr3P{XqY`@=(Z=N0>3|snNiSvh3H+Eao)Rba19Z?zC1^Gs1F-7 zLTPBkdt)v7S*RDAM8&{V9~GTG4#7grYMdEz5-HP*utvHWWp!v1F0HS-L3ixV1Z~y=R07*qoM6N<$ Eg3~dT)c^nh literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/nickel_ore.png b/src/main/resources/assets/cosmere/textures/block/nickel_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..520668a557142c94f8104ec4b928afe19dfc38da GIT binary patch literal 583 zcmV-N0=WH&P)Px%0ZBwbR5*=YQcY_UK^T5^9rZAyOtRT7Wp9#_tf$a6$3hPV{J3}!MdM%amS5l> z$f5WPG>YJ<2M?{3LJ$u%VQ*t7g+r{-# zN)ZtN&N&gKX)1)!*P@0gr2r6-E-G?qn(AE$v5LX~L{U^!6xD0?S^MQ{%iieq_NEtA z9p{|0D2mqXGfS4XHh1g_k0*3^e9k#9-@ml%jnk2zs9C8j!!W#}B!sYJsoj1D;B@2< zhJBz)L{e^l{PGLHJbO3~!$Jw;oNsOJBykW==-_C-RBi!^bFP%qQ~?MfG-20u84(>G zpGzqLl*%prwClR&^7oq;kK+je7!3QP;GRY?I-O3TSR?6CK7UrNdkxLgu5bXKzx@Hg zT-P0s$Je?Wc7=C8{H)b#Cw_Kt^xl#s%_>nd!)y`}Q%X6G)7oulyd)0ZzG{5>>H~0` z=F*h9!7!E9earJaA%vRxcW&P`a2Zd?uJGyuEB_Z{f6GadESJm0VnIZCp67Ya9LE7L zy{Mk}8IV1FREZ}v81@r2Gt8?|>Tx-aBc){87lk{%{{R4(+w&~cE@|zq*S#mb-rgtx z5iu#Hlv3MHciw=gdyOOx5;YTI-F02I>d?YVt7rY+hS}6Hb|YQDbI$c|uG(2C^&gNL V6#4=J`xpQK002ovPDHLkV1mh_2%P`` literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/nicrosil_block.png b/src/main/resources/assets/cosmere/textures/block/nicrosil_block.png new file mode 100644 index 0000000000000000000000000000000000000000..190292295d1329b1074f94c79cdb4e75eb215d6c GIT binary patch literal 338 zcmV-Y0j>UtP)Px$3`s;mR5*=wP(e<^Fc2IntFcqNmo!o(Bvc{()OYYtjvyf}QlkBzU=l$);FnWD?W?-EKP}O?? zA$TQ^Lsz%}z^KUW-9ck5J!^%PrpBS;VMgmnE?nTR)ikytcse0+nsS&qS@M2EnS~j; z=ToGQF`9L;rIJ=_kw{OW9H*h_gsY%q?>8d7T1Z3sBWTk_EYh>cIxEt1PBV=y=6$Kk zQX&m$S65%3O<9&E_o|W#>nt;c3qUiQfx`KI(~uVY8G$3JX#l&r;tq7zF-EhPPqqK= k=0b;`?~gncW5jj*0vfKjXTdjxk^lez07*qoM6N<$g7{&NKmY&$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/pewter_block.png b/src/main/resources/assets/cosmere/textures/block/pewter_block.png new file mode 100644 index 0000000000000000000000000000000000000000..897470b3a83c428dba081ef2769f9e8aab252d71 GIT binary patch literal 332 zcmV-S0ki&zP)Px$21!IgR5*=wlCf?BAqVzd;FQA=?mP_jo1fru6?qi)c27~*|b-CqDP z&iDXMIRx>(_U@UNqmutHkpGuCjc)!@hAKt^NUKRrnwX*g@|PQ)|2DfX80 zgpT2VvV>xdH2fyL_728z2*?lYXRV+oRoWW*z*!v(wd4?y6Ge10`h$IgH0000A^B)RZnxEp!&4g9-&FR|S_2;vneirkhJ$I(Bgtbkc4P722sw zXwncdMT(&*9STK3hu2=O3cl&T@ZbI4dwHp&>J@}a;tvv2|%1o0f@R$t244b+;_#Crt6W&<{hrLwl@JV%I&+}@#!AFAXiEN{3wZ& zX|a%tlWC(?4+Ce8L@&u{$&V6BH?$cs0BCo508(s?`eB-pA@tk37oHFTeb>w89SRp| zeA9PG6jf)6 zsvDZrbUn*9$t^m#{{H$Ty_`}QM4`}PHt&e-t{@S^&hCbsmazB(>!#)xa_vr!sNUaR zE!zaZXjPscpNfUt5WmMSQq9MT#kO2u-r(O_>EYzO%GvmQ{yq;NRW2WjXGPT~;}KtG cEY_RX4>p|Ei<8!`h5!Hn07*qoM6N<$f=H^r7ytkO literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/silver_ore.png b/src/main/resources/assets/cosmere/textures/block/silver_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..9213d4ccb9c39ef508550aea8709e3050df1aed9 GIT binary patch literal 672 zcmV;R0$=@!P)Px%T1iAfR5*=Il0Q$|Kp4iK#O{&wqSPi}n}jq(g;IoIX)UA<-7?SxIv~2Rb*R`o zF`zD;D)A{gRD1x|PL+_7p{)w}LkN_(!BQMw<6JRzVs$ta^~SsReeU-@?-SeK-v_`s zr z?BL*lF{UU=>pI!Fx_oYG0#{KK#+cyLb$v`Lt*oqsVd#0@!))^JpzS!0EX$m8&+}Z@ zegENOe$o8;l?0?CyneqidZ|N;OS;x&5}+_sf;~^z8DF zZ9R-6y00h$fBv7u@KYwZf zC>l2a)Wn^+0!cDW696G32!he=wKQ}l@JCGz)zr|ktSE{&=i6`Ig>j?XL;C)$R4SDS zA+GB#t!?!OBqPx$07*naR5*==kG*8Ls)?0{SwDhbELqMm@pz&%dIuiD1o5z;hqj7KYHnjWq zG^TB%n}_i|4wqhb0vf`|=fum;;$@RjG%;e2`vacHCWQ*3kRKJ0gT0iZq9FzqeV)~h YzhW)&Gi@rSRsaA107*qoM6N<$g2VWg*8l(j literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/block/tin_block.png b/src/main/resources/assets/cosmere/textures/block/tin_block.png new file mode 100644 index 0000000000000000000000000000000000000000..141287413fb71d20b9f9bf799e3819c3e22d9425 GIT binary patch literal 324 zcmV-K0lWT*P)Px#{z*hZR5*==k~>nwFbsx;$CbyDa}~<%7zz%@5hyvxHd~~mf{Jzx5zQ4i#C`-aTxXNN~1c2wK7ysS35*D|+APx%3Q0skR5*=2lEF(GK@`Tnm^DRaAhR3ngq>Dxi;}1*gf>)!;8FDApXT4vOH0q5 zgg|Kzts+`OU6Tpj$tKQ|E!#j3FJ>;o%)EJz@B4kF)6-Kttt`uk2!IfRh`jewNjB_WxBmV^G_+ZkS!<<~EW;R6?sPi&#_F?& zzj>aso}wr^yYH$+sk$uLj4%wPl$A;)&+`C4`Rab5l7%Ko;=P}(R%CnY>zB{$-rQDW z41kYkp8#y`G~=a^AB-_S+%JE38`YvkH4)7@M75|^*Xhv4aj29^l7xuTiFK(vXzer2 zo5}B1+$cAjO)2H*;m`BN?pyUTP1C_(@cr&*9M*T=Y&X_7`~7|xhDA{<|0|bDr9f*9 zpu4??M_gWB^5}!sK3g}9tE1T%7ED?xH789(y_;{FJ5Bjwqu)D+oyUZMtUO&3(UMY% z>9!A#7%CgZjaqSIL0U>_j0qMAU3*lBUa?(V$15FLm%5Yg@!Zx$dfBd%?lHFzLU1lx eXdnhh2Ec!+9uyR|7wZTB0000Px%3Q0skR5*=2lEF(GK@`Tnm^DRaAhR3ngq>Dxi;}1*gf>)!;8FDApXT4vOH0q5 zgg|Kzts+`OU6Tpj$tKQ|E!#j3FJ>;o%)EJz@B4kF)6-Kttt`uk2!IfRh`jewNjB_WxBmV^G_+ZkS!<<~EW;R6?sPi&#_F?& zzj>aso}wr^yYH$+sk$uLj4%wPl$A;)&+`C4`Rab5l7%Ko;=P}(R%CnY>zB{$-rQDW z41kYkp8#y`G~=a^AB-_S+%JE38`YvkH4)7@M75|^*Xhv4aj29^l7xuTiFK(vXzer2 zo5}B1+$cAjO)2H*;m`BN?pyUTP1C_(@cr&*9M*T=Y&X_7`~7|xhDA{<|0|bDr9f*9 zpu4??M_gWB^5}!sK3g}9tE1T%7ED?xH789(y_;{FJ5Bjwqu)D+oyUZMtUO&3(UMY% z>9!A#7%CgZjaqSIL0U>_j0qMAU3*lBUa?(V$15FLm%5Yg@!Zx$dfBd%?lHFzLU1lx eXdnhh2Ec!+9uyR|7wZTB0000Px$8%ab#R5*=&l1*yEFc5`bjfsSa0&SCB{>UO(g&ejwDD)J$LLii`+ExEn4YnZ) z!^o>HMoe5Mt`=ik`sU5kjBg&F9?-FfqH~5Q>dtn*%K^N+z5(#gSz`eV`d*HYr|?r8 z0ug{ZvTSDZSg)1|X@8{1C0M^(+-zyCu5XouJ*p%R% z1F)ISuF`enK(v|8#8oD$8ZYUdv7(qNNE1X`u5p!CBe}Mvr7e<5tA$KE*rG*J--S*I z|Ikvw8q3W&9ICSETkW=JiJ5ce@|Ies)rQoiI`Vun_RcA-+Jep}W6e($WR_jN^*=bz zp{UBma8y*KmTo!;M2q1_KJ)EPx%OG!jQR5*=YQqNBlQ4k*7A1%BsKAUYP%O->xp_aykK%ykZ2p8qz!FUrBu3Y^e zymK>A??%0N@E6B6T!*sX>QJGSfWwCyYq<2eY`pFnmO6i17k7pjuP1}gu-z$~s-fpRE zS(cO%JdaqY31dtLfb@9g&fK((`2Ot|qtjJFAR-${&u2#gU}7pyEPkyH0J>5N_Wjk@ zt4b*%yOg%?-pm6)(y?vCrsq|vd(C!0O>~;9F8~qQGTo;;kmacy#D zvK5>h>-xFs0Dx(luIuVT2o8L^v?GLIjBz7Y{92(Mzk2!3F=B)2n7b|jL_;QYy83@t rErf75U;n%g0FDu(k`O{EMZ3EI3y3Upiu9LJ00000NkvXXu0mjfFP=7c literal 0 HcmV?d00001 From c6724f788078339ad0f37db4bb11b436f4b9aac5 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 9 Mar 2025 12:16:09 +1300 Subject: [PATCH 1001/1090] [Feruchemy] New Textures --- .../feruchemy/FeruchemyItemModelsGen.java | 38 ++++--- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../8ad779514fe79ec9d533430acc900ab68c6e0ca1 | 106 +++++++++--------- .../item/aluminum_bracelet_metalmind.json | 2 +- .../item/aluminum_necklace_metalmind.json | 2 +- .../models/item/aluminum_ring_metalmind.json | 2 +- .../models/item/atium_bracelet_metalmind.json | 2 +- .../models/item/atium_necklace_metalmind.json | 2 +- .../models/item/atium_ring_metalmind.json | 2 +- .../models/item/bands_of_mourning.json | 2 +- .../item/bendalloy_bracelet_metalmind.json | 2 +- .../item/bendalloy_necklace_metalmind.json | 2 +- .../models/item/bendalloy_ring_metalmind.json | 2 +- .../models/item/brass_bracelet_metalmind.json | 2 +- .../models/item/brass_necklace_metalmind.json | 2 +- .../models/item/brass_ring_metalmind.json | 2 +- .../item/bronze_bracelet_metalmind.json | 2 +- .../item/bronze_necklace_metalmind.json | 2 +- .../models/item/bronze_ring_metalmind.json | 2 +- .../item/cadmium_bracelet_metalmind.json | 2 +- .../item/cadmium_necklace_metalmind.json | 2 +- .../models/item/cadmium_ring_metalmind.json | 2 +- .../item/chromium_bracelet_metalmind.json | 2 +- .../item/chromium_necklace_metalmind.json | 2 +- .../models/item/chromium_ring_metalmind.json | 2 +- .../item/copper_bracelet_metalmind.json | 2 +- .../item/copper_necklace_metalmind.json | 2 +- .../models/item/copper_ring_metalmind.json | 2 +- .../item/duralumin_bracelet_metalmind.json | 2 +- .../item/duralumin_necklace_metalmind.json | 2 +- .../models/item/duralumin_ring_metalmind.json | 2 +- .../item/electrum_bracelet_metalmind.json | 2 +- .../item/electrum_necklace_metalmind.json | 2 +- .../models/item/electrum_ring_metalmind.json | 2 +- .../models/item/gold_bracelet_metalmind.json | 2 +- .../models/item/gold_necklace_metalmind.json | 2 +- .../models/item/gold_ring_metalmind.json | 2 +- .../models/item/iron_bracelet_metalmind.json | 2 +- .../models/item/iron_necklace_metalmind.json | 2 +- .../models/item/iron_ring_metalmind.json | 2 +- .../item/nicrosil_bracelet_metalmind.json | 2 +- .../item/nicrosil_necklace_metalmind.json | 2 +- .../models/item/nicrosil_ring_metalmind.json | 2 +- .../item/pewter_bracelet_metalmind.json | 2 +- .../item/pewter_necklace_metalmind.json | 2 +- .../models/item/pewter_ring_metalmind.json | 2 +- .../models/item/steel_bracelet_metalmind.json | 2 +- .../models/item/steel_necklace_metalmind.json | 2 +- .../models/item/steel_ring_metalmind.json | 2 +- .../models/item/tin_bracelet_metalmind.json | 2 +- .../models/item/tin_necklace_metalmind.json | 2 +- .../models/item/tin_ring_metalmind.json | 2 +- .../models/item/zinc_bracelet_metalmind.json | 2 +- .../models/item/zinc_necklace_metalmind.json | 2 +- .../models/item/zinc_ring_metalmind.json | 2 +- .../textures/item/aluminum_bracelet.png | Bin 0 -> 521 bytes .../textures/item/aluminum_necklace.png | Bin 0 -> 523 bytes .../feruchemy/textures/item/aluminum_ring.png | Bin 0 -> 440 bytes .../textures/item/atium_bracelet.png | Bin 0 -> 480 bytes .../textures/item/atium_necklace.png | Bin 0 -> 482 bytes .../feruchemy/textures/item/atium_ring.png | Bin 0 -> 409 bytes .../textures/item/bands_of_mourning.png | Bin 0 -> 349 bytes .../textures/item/bendalloy_bracelet.png | Bin 0 -> 511 bytes .../textures/item/bendalloy_necklace.png | Bin 0 -> 471 bytes .../textures/item/bendalloy_ring.png | Bin 0 -> 446 bytes .../textures/item/brass_bracelet.png | Bin 0 -> 480 bytes .../textures/item/brass_necklace.png | Bin 0 -> 497 bytes .../feruchemy/textures/item/brass_ring.png | Bin 0 -> 419 bytes .../textures/item/bronze_bracelet.png | Bin 0 -> 522 bytes .../textures/item/bronze_necklace.png | Bin 0 -> 527 bytes .../feruchemy/textures/item/bronze_ring.png | Bin 0 -> 451 bytes .../textures/item/cadmium_bracelet.png | Bin 0 -> 528 bytes .../textures/item/cadmium_necklace.png | Bin 0 -> 542 bytes .../feruchemy/textures/item/cadmium_ring.png | Bin 0 -> 449 bytes .../textures/item/chromium_bracelet.png | Bin 0 -> 477 bytes .../textures/item/chromium_necklace.png | Bin 0 -> 498 bytes .../feruchemy/textures/item/chromium_ring.png | Bin 0 -> 423 bytes .../textures/item/copper_bracelet.png | Bin 0 -> 465 bytes .../textures/item/copper_necklace.png | Bin 0 -> 492 bytes .../feruchemy/textures/item/copper_ring.png | Bin 0 -> 418 bytes .../textures/item/duralumin_bracelet.png | Bin 0 -> 471 bytes .../textures/item/duralumin_necklace.png | Bin 0 -> 518 bytes .../textures/item/duralumin_ring.png | Bin 0 -> 435 bytes .../textures/item/electrum_bracelet.png | Bin 0 -> 511 bytes .../textures/item/electrum_necklace.png | Bin 0 -> 518 bytes .../feruchemy/textures/item/electrum_ring.png | Bin 0 -> 445 bytes .../feruchemy/textures/item/gold_bracelet.png | Bin 0 -> 482 bytes .../feruchemy/textures/item/gold_necklace.png | Bin 0 -> 508 bytes .../feruchemy/textures/item/gold_ring.png | Bin 0 -> 442 bytes .../feruchemy/textures/item/iron_bracelet.png | Bin 0 -> 425 bytes .../feruchemy/textures/item/iron_necklace.png | Bin 0 -> 429 bytes .../feruchemy/textures/item/iron_ring.png | Bin 0 -> 378 bytes .../textures/item/lerasatium_bracelet.png | Bin 0 -> 571 bytes .../textures/item/lerasatium_necklace.png | Bin 0 -> 564 bytes .../textures/item/lerasatium_ring.png | Bin 0 -> 462 bytes .../textures/item/lerasium_bracelet.png | Bin 0 -> 498 bytes .../textures/item/lerasium_necklace.png | Bin 0 -> 559 bytes .../feruchemy/textures/item/lerasium_ring.png | Bin 0 -> 450 bytes .../textures/item/nicrosil_bracelet.png | Bin 0 -> 485 bytes .../textures/item/nicrosil_necklace.png | Bin 0 -> 511 bytes .../feruchemy/textures/item/nicrosil_ring.png | Bin 0 -> 451 bytes .../textures/item/pewter_bracelet.png | Bin 0 -> 480 bytes .../textures/item/pewter_necklace.png | Bin 0 -> 502 bytes .../feruchemy/textures/item/pewter_ring.png | Bin 0 -> 429 bytes .../textures/item/steel_bracelet.png | Bin 0 -> 490 bytes .../textures/item/steel_necklace.png | Bin 0 -> 476 bytes .../feruchemy/textures/item/steel_ring.png | Bin 0 -> 413 bytes .../feruchemy/textures/item/tin_bracelet.png | Bin 0 -> 539 bytes .../feruchemy/textures/item/tin_necklace.png | Bin 0 -> 503 bytes .../feruchemy/textures/item/tin_ring.png | Bin 0 -> 470 bytes .../feruchemy/textures/item/zinc_bracelet.png | Bin 0 -> 543 bytes .../feruchemy/textures/item/zinc_necklace.png | Bin 0 -> 517 bytes .../feruchemy/textures/item/zinc_ring.png | Bin 0 -> 474 bytes 113 files changed, 129 insertions(+), 123 deletions(-) create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/aluminum_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/aluminum_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/aluminum_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/atium_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/atium_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/atium_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bands_of_mourning.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/brass_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/brass_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/brass_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bronze_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bronze_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/bronze_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/chromium_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/chromium_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/chromium_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/copper_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/copper_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/copper_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/electrum_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/electrum_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/electrum_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/gold_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/gold_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/gold_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/iron_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/iron_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/iron_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasatium_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasatium_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasatium_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/nicrosil_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/nicrosil_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/nicrosil_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/pewter_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/pewter_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/pewter_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/steel_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/steel_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/steel_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/tin_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/tin_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/tin_ring.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/zinc_bracelet.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/zinc_necklace.png create mode 100644 src/feruchemy/resources/assets/feruchemy/textures/item/zinc_ring.png diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java index 13f17d2f7..12a3aa9aa 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyItemModelsGen.java @@ -1,14 +1,12 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.feruchemy; import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.items.ChargeableMetalCurioItem; import leaf.cosmere.feruchemy.common.Feruchemy; -import leaf.cosmere.feruchemy.common.items.BraceletMetalmindItem; -import leaf.cosmere.feruchemy.common.items.NecklaceMetalmindItem; -import leaf.cosmere.feruchemy.common.items.RingMetalmindItem; import leaf.cosmere.feruchemy.common.registries.FeruchemyItems; import net.minecraft.data.PackOutput; import net.minecraft.world.item.BlockItem; @@ -39,21 +37,29 @@ protected void registerModels() { continue; } - else if (item instanceof BraceletMetalmindItem) + else if (item instanceof ChargeableMetalCurioItem) { - simpleItem(path, "metal_bracelet"); - continue; - } - else if (item instanceof RingMetalmindItem) - { - simpleItem(path, "metal_ring"); - continue; - } - else if (item instanceof NecklaceMetalmindItem) - { - simpleItem(path, "metal_necklace"); + //because I'm lazy and don't wanna rename all the textures + //doesn't really need to be that explicit in naming anyway + //basically just remove _metalmind from the end if it exists + simpleItem(path, path.replace("_metalmind", "")); continue; } + //else if (item instanceof BraceletMetalmindItem) + //{ + // simpleItem(path, "metal_bracelet"); + // continue; + //} + //else if (item instanceof RingMetalmindItem) + //{ + // simpleItem(path, "metal_ring"); + // continue; + //} + //else if (item instanceof NecklaceMetalmindItem) + //{ + // simpleItem(path, "metal_necklace"); + // continue; + //} //else normal item texture rules apply simpleItem(path, path); diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index e045355e8..209cee0a2 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-02-06T13:35:12.665626 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-03-09T10:34:35.1010594 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 b/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 index ce05d8ba1..d42d32752 100644 --- a/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 +++ b/src/datagen/generated/feruchemy/.cache/8ad779514fe79ec9d533430acc900ab68c6e0ca1 @@ -1,53 +1,53 @@ -// 1.20.1 2024-10-09T13:22:13.3746832 Item Models: feruchemy -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/aluminum_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/aluminum_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/aluminum_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/atium_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/atium_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/atium_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/bands_of_mourning.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/bendalloy_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/bendalloy_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/brass_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/brass_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/brass_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/bronze_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/bronze_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/bronze_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/cadmium_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/cadmium_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/cadmium_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/chromium_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/chromium_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/chromium_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/copper_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/copper_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/copper_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/duralumin_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/duralumin_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/duralumin_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/electrum_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/electrum_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/electrum_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/gold_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/gold_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/gold_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/iron_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/iron_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/iron_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/nicrosil_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/nicrosil_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/pewter_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/pewter_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/pewter_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/steel_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/steel_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/steel_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/tin_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/tin_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/tin_ring_metalmind.json -d42a3e605da982ed1d1a292f89c8822542a0e044 assets/feruchemy/models/item/zinc_bracelet_metalmind.json -8bd457fbe88c8eb1b2ea90ecc2573cd4e5677d3e assets/feruchemy/models/item/zinc_necklace_metalmind.json -74e3f09481219da5e44bee16971d6ef5db73b4f5 assets/feruchemy/models/item/zinc_ring_metalmind.json +// 1.20.1 2025-03-09T10:57:42.5658234 Item Models: feruchemy +e59dde022aa3cfd2c37cdf18fb4670c477bed55c assets/feruchemy/models/item/aluminum_bracelet_metalmind.json +b922b6ec01be2dad35505e301c12f7afb3a2944f assets/feruchemy/models/item/aluminum_necklace_metalmind.json +3823a37b99e9c67d3e7249686e07b0267f0a2010 assets/feruchemy/models/item/aluminum_ring_metalmind.json +2ba449c825cae80e802204bf75418099c0749f36 assets/feruchemy/models/item/atium_bracelet_metalmind.json +3520e66d1e426075dfb1ac6fca2e38816d6a20be assets/feruchemy/models/item/atium_necklace_metalmind.json +c491976909f348aa6bdff475bd4c0dd92dcdbbf7 assets/feruchemy/models/item/atium_ring_metalmind.json +53a617b4d66275edbfbc8f2618880c684b073a3d assets/feruchemy/models/item/bands_of_mourning.json +de83173b5f0d7596082d4020fc4fda6dd0971a41 assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json +68c051efc6a3f41488e634287f379b20de18c6ee assets/feruchemy/models/item/bendalloy_necklace_metalmind.json +d558b4ba0e92a70c1332fb7bb9edb2eaaaa22bae assets/feruchemy/models/item/bendalloy_ring_metalmind.json +97fed5f02d6dd0b0b0577161dc3aef0bb52e7a6e assets/feruchemy/models/item/brass_bracelet_metalmind.json +1f8433c16259efb5971e338bc12f2e404823ed3f assets/feruchemy/models/item/brass_necklace_metalmind.json +ff5fcc3618a481224d7ce836fae7dd7f046971c3 assets/feruchemy/models/item/brass_ring_metalmind.json +4d7c044e60ed3cc3c7001dc4badc0fb8016f2c98 assets/feruchemy/models/item/bronze_bracelet_metalmind.json +5ba3caf75bf42f5a55d7ce0acdb3b06ae4233aa1 assets/feruchemy/models/item/bronze_necklace_metalmind.json +79d93141d20597a4063cc6c22fbeedcd534aa562 assets/feruchemy/models/item/bronze_ring_metalmind.json +acd47b051c5277bf4ede3fe5d7c3f3d418a42ce9 assets/feruchemy/models/item/cadmium_bracelet_metalmind.json +6ca1c30a25f04ab22ad86426a537c4e15b14ccac assets/feruchemy/models/item/cadmium_necklace_metalmind.json +1a9be76c89a9eaf0cf7d514e011c57256ef0330d assets/feruchemy/models/item/cadmium_ring_metalmind.json +38e51aa0d7050f19a2e2fffa0e2c8bece6daf146 assets/feruchemy/models/item/chromium_bracelet_metalmind.json +b857ba4ff5c6f72c34eea802cc8dcd1a5371411c assets/feruchemy/models/item/chromium_necklace_metalmind.json +effcfcf80c9f77196c4a6c2458a8d31c9a4973f3 assets/feruchemy/models/item/chromium_ring_metalmind.json +cbcea0edbd52e5ba779e7162df55025f18726922 assets/feruchemy/models/item/copper_bracelet_metalmind.json +1fdfdde603358786140f01e23a583a411235f721 assets/feruchemy/models/item/copper_necklace_metalmind.json +d4a03a896c43eabcfab0b95a678783d880f93678 assets/feruchemy/models/item/copper_ring_metalmind.json +4acf5385adca2da89befca59b2f9936e85a1a67b assets/feruchemy/models/item/duralumin_bracelet_metalmind.json +51077777e8a3983052bc469c874aeacd4641ddac assets/feruchemy/models/item/duralumin_necklace_metalmind.json +80479c99b0229e3c7d59a2fcebd19b12f5a03b78 assets/feruchemy/models/item/duralumin_ring_metalmind.json +e7b5f30e85a880da647c7d68fbfd10a5b5581943 assets/feruchemy/models/item/electrum_bracelet_metalmind.json +36eafe6d072c958d61f29b9b49338578e306bfc7 assets/feruchemy/models/item/electrum_necklace_metalmind.json +5882307645d97a71b8f01dcd6494ea05519692b5 assets/feruchemy/models/item/electrum_ring_metalmind.json +fb55d286356356a09a51de109deebcb0a85745ed assets/feruchemy/models/item/gold_bracelet_metalmind.json +44d7de7bc11f83ae7497a0aace2b015eb108e18d assets/feruchemy/models/item/gold_necklace_metalmind.json +d8793fde79c37bbd29a72e7c6f03d1cc22fe1e7b assets/feruchemy/models/item/gold_ring_metalmind.json +d9d3a7af7015c9d6ea2ab92242e8d23bf2491e08 assets/feruchemy/models/item/iron_bracelet_metalmind.json +ee4c9df56ed8a3d348bb6cda414c13605e17f2ad assets/feruchemy/models/item/iron_necklace_metalmind.json +faa0bd85524ba686f6bfcbab37052c92d1dd84d3 assets/feruchemy/models/item/iron_ring_metalmind.json +89b7e10a336ddd41d505b205fb22ad5edbc3766b assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json +fa7271f624bbbfe8757ea7595440934ec1b97a1f assets/feruchemy/models/item/nicrosil_necklace_metalmind.json +066e213c0462075b123f2db1ed522e2192293e00 assets/feruchemy/models/item/nicrosil_ring_metalmind.json +21c5833d74bba1a98b0211ef36e603a20f12ab09 assets/feruchemy/models/item/pewter_bracelet_metalmind.json +9ce3225cf1c01daf1c0aad464f07c8977a7902b8 assets/feruchemy/models/item/pewter_necklace_metalmind.json +3299178791f54079b7573e8b0666d01df00be078 assets/feruchemy/models/item/pewter_ring_metalmind.json +d8d187340cf85413f4dce7a1b3f4e70320eaae95 assets/feruchemy/models/item/steel_bracelet_metalmind.json +89e88315e540992291741a2aebe062861001e783 assets/feruchemy/models/item/steel_necklace_metalmind.json +8216147f9b15b10bcf37cceee8999494ddc5eea7 assets/feruchemy/models/item/steel_ring_metalmind.json +6eed287d8cea497edeaf0c99d216a4a692abaf30 assets/feruchemy/models/item/tin_bracelet_metalmind.json +cd045e582802e99b54df6296a61c63590331f465 assets/feruchemy/models/item/tin_necklace_metalmind.json +16cbd9c0dc44b5827c4796388f63d039406121ca assets/feruchemy/models/item/tin_ring_metalmind.json +2b0ea95e6a4d500169874a4ff4aca071774a89f7 assets/feruchemy/models/item/zinc_bracelet_metalmind.json +04ffaf8646f953170b8a1a09d7fae18ef613cde6 assets/feruchemy/models/item/zinc_necklace_metalmind.json +f51085adc62dcfe9d35ff4e9c57ee411fcd42685 assets/feruchemy/models/item/zinc_ring_metalmind.json diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_bracelet_metalmind.json index bca5d3b96..39dc5481f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/aluminum_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_necklace_metalmind.json index 3dc47f936..95d1c67ab 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/aluminum_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_ring_metalmind.json index cafa47b0d..4ee700b48 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/aluminum_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/aluminum_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_bracelet_metalmind.json index bca5d3b96..600dbfe6f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/atium_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_necklace_metalmind.json index 3dc47f936..bfa6fd665 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/atium_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_ring_metalmind.json index cafa47b0d..b54da3087 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/atium_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/atium_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bands_of_mourning.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bands_of_mourning.json index bca5d3b96..f03690a98 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bands_of_mourning.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bands_of_mourning.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/bands_of_mourning" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json index bca5d3b96..f56ea47f5 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/bendalloy_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_necklace_metalmind.json index 3dc47f936..90441c4a5 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/bendalloy_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_ring_metalmind.json index cafa47b0d..dfeccc94f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bendalloy_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/bendalloy_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_bracelet_metalmind.json index bca5d3b96..a89f60bf3 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/brass_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_necklace_metalmind.json index 3dc47f936..c8b28e4c6 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/brass_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_ring_metalmind.json index cafa47b0d..e25215165 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/brass_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/brass_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_bracelet_metalmind.json index bca5d3b96..1ef2b9ec9 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/bronze_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_necklace_metalmind.json index 3dc47f936..e8fa37d6e 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/bronze_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_ring_metalmind.json index cafa47b0d..7022bd289 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/bronze_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/bronze_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_bracelet_metalmind.json index bca5d3b96..ca552c035 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/cadmium_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_necklace_metalmind.json index 3dc47f936..a59f013cf 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/cadmium_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_ring_metalmind.json index cafa47b0d..09448f3db 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/cadmium_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/cadmium_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_bracelet_metalmind.json index bca5d3b96..68e79d4d3 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/chromium_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_necklace_metalmind.json index 3dc47f936..68e317d74 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/chromium_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_ring_metalmind.json index cafa47b0d..2f1fd52c0 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/chromium_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/chromium_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_bracelet_metalmind.json index bca5d3b96..329f7d789 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/copper_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_necklace_metalmind.json index 3dc47f936..4114b897d 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/copper_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_ring_metalmind.json index cafa47b0d..87d060ae8 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/copper_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/copper_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_bracelet_metalmind.json index bca5d3b96..9ec392a0d 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/duralumin_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_necklace_metalmind.json index 3dc47f936..2d3fc9db9 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/duralumin_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_ring_metalmind.json index cafa47b0d..e5cdaf180 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/duralumin_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/duralumin_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_bracelet_metalmind.json index bca5d3b96..6eba7c5cd 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/electrum_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_necklace_metalmind.json index 3dc47f936..ea61c3f40 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/electrum_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_ring_metalmind.json index cafa47b0d..7c67fb50f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/electrum_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/electrum_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_bracelet_metalmind.json index bca5d3b96..a3e968bfc 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/gold_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_necklace_metalmind.json index 3dc47f936..ee0319337 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/gold_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_ring_metalmind.json index cafa47b0d..652800d71 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/gold_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/gold_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_bracelet_metalmind.json index bca5d3b96..a31ee7beb 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/iron_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_necklace_metalmind.json index 3dc47f936..4d487538f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/iron_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_ring_metalmind.json index cafa47b0d..f3cb21248 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/iron_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/iron_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json index bca5d3b96..a9d0b2a5f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/nicrosil_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_necklace_metalmind.json index 3dc47f936..1b516be63 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/nicrosil_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_ring_metalmind.json index cafa47b0d..75c6604e9 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/nicrosil_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/nicrosil_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_bracelet_metalmind.json index bca5d3b96..bd4428bab 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/pewter_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_necklace_metalmind.json index 3dc47f936..00dd718c3 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/pewter_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_ring_metalmind.json index cafa47b0d..b9d3f2822 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/pewter_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/pewter_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_bracelet_metalmind.json index bca5d3b96..7d5607d67 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/steel_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_necklace_metalmind.json index 3dc47f936..b92b80772 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/steel_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_ring_metalmind.json index cafa47b0d..62814ec19 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/steel_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/steel_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_bracelet_metalmind.json index bca5d3b96..d0510724a 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/tin_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_necklace_metalmind.json index 3dc47f936..53d0286ff 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/tin_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_ring_metalmind.json index cafa47b0d..7306d7737 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/tin_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/tin_ring" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_bracelet_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_bracelet_metalmind.json index bca5d3b96..a8d2e6839 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_bracelet_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_bracelet_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_bracelet" + "layer0": "feruchemy:item/zinc_bracelet" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_necklace_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_necklace_metalmind.json index 3dc47f936..aa994ab03 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_necklace_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_necklace_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_necklace" + "layer0": "feruchemy:item/zinc_necklace" } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_ring_metalmind.json b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_ring_metalmind.json index cafa47b0d..e469a0eeb 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_ring_metalmind.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/models/item/zinc_ring_metalmind.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "feruchemy:item/metal_ring" + "layer0": "feruchemy:item/zinc_ring" } } \ No newline at end of file diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/aluminum_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/aluminum_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce7ee2a1124649911000c9ec9d045c4b4e019c5 GIT binary patch literal 521 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 literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..fa53d0045bc6f335a8fd4691c9b822a7aaedeba7 GIT binary patch literal 511 zcmVPx$xk*GpR5*=|l21z;K^TXh%^$HWB{HJ~Lb3&QtB4lq%_N5u(SyWK;791C(36Ma zmYxMKei9`Iq3A(#E=~24w3iK`6f>wHm1f&+4|T@fGzI50%sbD+@11!qMy!olJJfq$ z1pqYEz#4TocBnybr;5yF`24YBYOmiNjg(kX_|?l7OibFiACq*BbAI|<#Nj{aA2-^$k7Hogk*RbarAdfTK(j$?U) zpFfzg$N7Hw73nxg$Dw`R#Cv;)uL2rsU}YaAyg^CPx$kx4{BR5*=|Q@=|BaTNbtc(>f3d=(7g7V#X!gCHoPAY2>{m!_sBp~XV~6H9Pt zXliM5b2tc>A`%)xa8S$PCLzui7jJkC^}gMy2fgv`eSUo3=RE}xW#@EqJs$ut@Rmwc zUu+cw0Iui5E*FqD(@3OrRO=mzB2j|iMy-U=cm@Etxqp*Qx7R1A);k-WC=9mCg%Bv% zYzd7Fp#lK9lSPOm#+Ek$gXHYW5*lrsizPHV+utUh1A{H0k<+Y@B{b^aos!e6(0tk= zCR$TtH-=Eb$}g`jE-#Kzt#{-pF*1@?Ch0FWsFK>zt8_(bCGTfrwV zc<&%9!O2V>?ZG8)g|dOjkrY?C|Q3;b^7z*{Q+CP2iAe*=CH%x!&GyORI_ N002ovPDHLkV1nyN$ua-{ literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/bendalloy_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2f4e62b8cb77eb11675113442acf5352f42d09 GIT binary patch literal 446 zcmV;v0YUzWP)Px$cu7P-R5*>TlQB*LK^TQUh)_rfWJf}>0Sa-|5Fyk+fgv;oPQVdtOsuHDcmWzu zf}tQGS^x(?Lj%}AXcPhk6jESecEapJrGGVb*A)5**1DxjcYNa5jnN`Y{X$)76#&G2@ zWxsYOiVA5#=sp09Oq$trN%i5G#&Bf|Ijp(3hzP=(OU+=^n=)v30QQ38ntL18TtqK} zb_?VAhI*?Hz@Xice)oYFpKGOeg!w?alWj2a+M-Nl?Px$nn^@KR5*=&lRHZTK@>*MN+5zH25lr{V;!m)#OAxdY7pxR~ zGU9iC$Rd?#z5=zB><#5plWeN}UTo0N~{M z#Tqp?GfG(B+J@{L^lqu^!Hom?7sQC=+nJOfS5p2ARQvg;`ogbSE6e}IpN~qYAwL7v z7XzgsV)2$}U|V_($S;;6+bMC_O4qSjU0N7%3IJcPrgq^6)K}&cJAQKg zVhKMWS1cGwCZdNfD!_P2)!%u-b!-3`cj7wt5@3B_SeZCI0SRlJnVuMetnUkRrHAfz zvsRW~qe{L~p>=ivz|8an0B`SugqZYWiaUX}IksG}fHhSzzPx$t4TybR5*=|lfO$FVHn3hSA=9~5XW#ihaxy!g@8lpfiAUlxG8Z_99$(hoCP66 zpx_^%%l!$p%e7Fj&>@p}&_T#x$<{$5lBvXqsLMSa&gV@oiNy!r<$dn^e1AOeSv*lu z!;`qx0bu{=!g}hvsZkI>-0DzSTcTRCA#cORw)}610ZTWOq+OTm=9UD$V~+H`OW->) z31=y|vbMy>-Or{m%ozBNc;ylRt9x-q$&^Z7S?*2rtHW=udVD(gfhrlZ6!?yu9K09J zLBWCVh;&0^MY^F#a%(J&v1#&Nxr8#G{r-cuSz~8o+w`inb-sp&*)7Da4%K(_ymnuu z0nOMHif?#Z{6+ut=deYo=4}983|mleVetb6*G*TLo5Py1d0CuBg9PCIlDO5$Do`-F zxxr;_7JzSGj?D(VatZl+IoN_;WPx$T}ebiR5*>TQZY!wKoor`LWR;;>{3dTrF6RrnKOt`U7D?qjxG*Dqo9*ma8gjG zY|fp`P;fI)I&>Cl=u%vC$=C#>bn!cci@7Fo(GSNR_wT*`{`&{~F{G@-K)wO^Lv(oZ@S4&{1Tc9P(R@Jk^%<_kG+drVO4c7Ww9lpZ*M+=6|%C-~6owlk{ps`EjlB5ouAn1)KGp$aN;Q8wQQcew>D zXRvQ?uzxj97^Z6qiq#TyO@T<@4@22ND%dns(lrIU+gk!*j`tV1Zg>+oQNL;6SNBcG zN%2Q_59h#o4JQZ33E7o$0RYfsbv%zIkwRe#f$KtMNf3`Ft3zfC7)_E2xQbr44Vf|6 zRv!RRDHnc#0Box-_>*v%kB85@SS>-?tVM*Y=4Sru_;1rSC3U3#65o8#$@QtG9@PK< N002ovPDHLkV1nb6vGM=_ literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb932631c8ff13be1bf1625f385c88722d2caee GIT binary patch literal 522 zcmV+l0`>igP)Px$#7RU!R5*=|lf6qLK^TXh4Iz+_6-hKELW<}iND8mY`2h~=aDOfrxFKDbmHS~yB5P9x zZ+mx(bYYhMTuw^vE)M@G(T$RnL;zAYVi`O5G+t zKeeft7TJ78*6uIG7%$=o7e}}fw8~YPBH{>_hgyS*X>n^G1tdSe@8JknHto;ZH2^6! zMlum6rN)TZO`%xjDi5^=fRyyYc2g*ha7n2#X68PBoCAQH%PT2ygv;2cfk4MQl4K$t zoC5%DQ1x`9#Be^t#N-z?R({F2{v-g4BWVxd_`an?{dUS#@2yc+5*`@p1KMb)a+Htn zTgrz7VM)w`Q-F8L+voDbp@NRY|K7<&oW8V*d2srFf?iRloL(5<6(P#gXxujnSO5S3 M07*qoM6N<$f=;*PI{*Lx literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..d633df277c7f491c7b1a9c65d4190870dd9158e1 GIT binary patch literal 527 zcmV+q0`UEbP)Px$$w@>(R5*=|lfP>dVHn3hCneC3H$%=Gp>RWj=uqUkT|(&%CA5fGvII=Ff>Rd# z2eO!dz{xdJS|Nj_8KkjGvs9fF6?Dm5h<8KY($ZUAr}s72=D=rtpYM<7`@D}uN;N9B ziewDHWG1b&zLnb`fJnyd?$yZK0Yl+blTme zPAm=H-K%jpI5Q86%|TJ9g2(`HGz}9ZE86nq)%DVOHMw>b6op!vOHdT*MXjuK4jLR3 zg&Oo)Dkuu|-`}Uadi|14yKCN>`#TK#R5)Rf}$AA{CdR0G>lUBb|jf!p7q;4+MpI--Ng}2u`=(SX%VylFMqiJZ- zAFE-1-KgpDHtQR3`qkXZJd{K-CiTjex!bI7kjt(Da5y+)GLzPS6OeM^e*t*j;iJLO R24esK002ovPDHLkV1iC|`7Qte literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/bronze_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..3134edd3213bcbce7af9f42f95450a0f3a927566 GIT binary patch literal 451 zcmV;!0X+VRP)Px$eMv+?R5*>TlfO$sQ5?lTiU^5M!ruxGrs*VCn%3-f{0yGA?_W;wSeNRzUI z5g&Iwom6I#*2RrbC~e_e#jQk|L@KjL{3k0DHlM1NC7uXVtF{3MMtl;nR&7i9*its7 toBQ^9=I{j+(a;+1%+F-aVA@Lm1z%>Sk&H?3kUjta002ovPDHLkV1jwg$43AF literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..0df7b59b2a837a6e6fad85b3cd5e27e512610f1c GIT binary patch literal 528 zcmV+r0`L8aP)Px$%1J~)R5*=wlQC=CKorM+vQ@b)c&G`Hd~uS2yx%|0 zI8l<~rOh{t`&R&HwdUW7Z(jip}HSMufmU)18uV2xcE66*_Z8=uF({Z6x zMzg9CGQK$ZFQi>}Bt!+IK&v%j(gGm&wpSXEc#(G9ku^EdpRlggnyFT{R~q<1gdapw zc+m5ti@foB=o*h6^7FGt>4{3-u*n-X zx9bjz&llMHcm^OLVHl>wOn;`N6DCguP%J*6tk1I-hSTL)2h(muY@2%KbbvpHvfFcR StdK$g0000Px$*hxe|R5*=|lQC!$VHC%IS88tRU_I{0dATKpa)b~|q8++Kp<|$TLnLI>!4x~* z;OHh47X@94n@Am^(6NxZiWLGK;&Mx)Ij)>tI-Q80L;TK5?169lzW4tB_kaKQeF{0@ zS8Wl55di%-QS$1Pc@RJlM%=&Cz%+Cmw?(Jj%Oz2=;BK?dBs$~bB4Pj2Nm}&g?aN#e zMS^cTCH4l#X(C(fX{sm}4FGmePG?9KrR0XCUplWOm#REX6_@(rX{va-c}qwiB-qnb zG2C&5r>PBLPP54hX_%YT|qp>hICehifg6rC~v^&ctg&Ug`>5Y6ZN24+QI8kO4tge(&P*$p(SNbHor|$sZ`Im_TAH_YMP<#ArdU-wp4(POd z)A{35`f;L^M`O`#)&azf0!hN*Iso6|@9EkamW~f1t0D*^a(~%;_*Gjptm!rY_6EoF g<3#yy0&>3iZwC9;krn)}NB{r;07*qoM6N<$g8Op!EC2ui literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/cadmium_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..86048cd38a80f5beabfceab809679303454f995f GIT binary patch literal 449 zcmV;y0Y3hTP)Px$dr3q=R5*>Tld(%eQ5431io7?ugy=KO#Xv$tA)Oj(acFSR#i2jKsc>kJXb_tG z2i!zjau8gEa*YxUkqB(@Nl}Em59v0@yLq2F)mhHvockTV?>qOxAH%h&aT*T``~3R; z0l>}IY~{XZ6Y#QHMhnMys#boRjka(OaXG;!NBivMvS`W7qBwm6kb^E7ZH0;32~HGC zDy6M$09h}jfO@y5__N}&P2JwN r*Q>J~@XLWtb2ok_rw8j+`Y-VVUtpXETD31^00000NkvXXu0mjf$4tw2 literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..78c7ee516a70a9d16227ae9954259370ab5a8348 GIT binary patch literal 477 zcmV<30V4j1P)Px$mq|oHR5*=wlTB;eKoEu>868TEj0f6VVi80Aak7j*PN^ZkFa+|8>{A_!n6!s} zP#f7k1_oAfnnFOmSnE}+?n&C6_nCKQXFW>R)#W4uFvg&&0Iar&R~GA+3A??BAgHq5 z?2d=CX;ucQxZ;nEkZvzxH0+b6doCJhHgNcPLi0S#-U2*Ve9<@~P4@tdhJ66O|M&@D z-7IF)LOIq!E)IffAw#F#vgc(^Dp!}2tlNv|v|9v0)k5wT_y2`NgRzD9fEA2}{em#x zyS=^vus0G7#>XZaV_0u?)_Puh{(pOYgQ}vcR=AAk)JoXfVcq|Bm0^z5-Z?F{U8q?PGGCxc6Nb;py)m%mL`G(kJS=$-hP9Bs;)AnHksq Th5nEq00000NkvXXu0mjf#kSW~ literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..d4dbe96688f99c50a699d57b36ad6a755000589c GIT binary patch literal 498 zcmVPx$tVu*cR5*=|lg(<|KoG}&DuR4C0uKmkW5R+=`T=%qFysLOf#j0BQ7QBl`Xctp zfgEyHEaEgdw1pUiC~d(oIT(yj+e5vI}Qm?Ad-y8x^ zReFOX7ON$p2;dxImcuP*b0Vso@_ ztcU=Re3_O&d?)#-!mk5&s-k^ki+z6K!y01{5$jl7kc-ulX%cgKe!*Oovy)>!efVf+ zS?axDbIFScj#=lwdEe_Z9u4!ecBjkZ!+m)Rs){iN310)SSS@L^n$$)3_2Xx5F#;Qk z@Cdvr2IYnuttS5NHlYYXP-C%LQWwDm2{2bhRi6P|HCj!AphmcEe)skb0C!28Z$L!Y z+uC{Fg8S*DyP>b&zH>9VB@|(@&c@xByCi0orCuome|MW8sBts7ElCXv(p5EQFDY2d zvjAr&$GL*JD&x`cum3D%mZhE~v2Ay{0JfySfqZ_r&)J+k6CL0PoC;N?@|A7Y;IMB^ obU=M==lbfB7Z>S&KsKNF9}RKVyf@XxmjD0&07*qoM6N<$g0ZOI?f?J) literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/chromium_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfab6108968061f1f7b0b7f01eec9f5d151606a GIT binary patch literal 423 zcmV;Y0a*TtP)Px$VM#TlgnztP!NVc#f2yd4p`h&MWGj0MvPe%p-)%}eIi{|BiibsEvR_e z2tpuMYe7giHF{!PwX-~P{+a)B4*anq=Nk8Sbq~OGT^z>&U^JVY+>f0DmdXa2mSjAg zADYdE7aS4^f-iD;(jwH%3IK2K9{~O!yV+2fM1$Z$?owfNdvguopBq(+Vm9xEN+{$m zS*_M+T9UTirDj%mdUyozeK4w)vLLeGUMd^Z%nEJ0i>4)6t=2p@8+2ZKKHdFhqiWIX zv>44M5nqC)B>||Jl~C}$M1+(GB69G+bzR2OIc>WO5DG44^PY&1FJ37FqkDb3%@%;R z-Szc`ft}?->BTra5YJ51N&iwic3MQxbscB9K++jrIxU}}lEQAYWr?GJ6#eN8u|)hd zg=4Bl)gqRNGaU2*&~;q_4hMb3pA(mlqXI~Y@cI4a4-A@n_A>=N2#fSz>Ic_yn0F$r RWTOB8002ovPDHLkV1lOev%LTS literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/copper_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/copper_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb35c1d2c8e0d9d85433b4ee5cf9ce6cb3fa3dc GIT binary patch literal 465 zcmV;?0WSWDP)Px$i%CR5R5*=|ld)>TP!xv0h(n+Rtk@-x!J$HntxHOupjgn+#Vs%3By{ND=<49= zAovV|PMw^Z#ais(;1K9iu|k#%!tD@qy@_dQ#(U5Io&WylL?h)JJX{HY?H)Wo0HE)# zwY1u7n$T%90r>LX)oYOk$*AJm{SCGI8^pB@z=c(oh0l+7wCtit0yI^8VU=aqLe&Wi zmTt^Vck&v0j&u--)vmyao1~M>;NeO*jV9vSjzKol;jfU2nUfG1qPBFyLM6D(bV#A< z(Cf5;<3uWE?ik{BA5Xhbbz)EHb=r7-faeENIRD&97a7kF7{9If^4?`&5o9!5;Q4_J zZF_KF89McniDl?y`tDkrf9@E+tzxMs#eH|Jd47Op=;RIkbPv=~X-hY>e6Gh5k0AAu zDK**XA}m}{Q_`M)haFpXQK(KVLl*!~FCSWLHCuL3RLmT;+e^BW*U)bE_)ny*^2vb; z8O;^|~00000NkvXX Hu0mjfgI(Oy literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/copper_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/copper_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..2de494bcebec606fcab36285e14d0e2888f1c692 GIT binary patch literal 492 zcmVPx$rb$FWR5*=|ldnqyVHn3huNYn!2P#?y7dB8(91ETpmP`t+2o}R+2IGPV2D`=J z!Y~;o`UhAvyRsnO!cZnm*uudT4TCYf_8PYL^=|XPryTFS@At>^eco3PQx}`d%IgOJ zRNStJJ2yQJ0`U3)2Wx4ROt4_D0#y}9G93mNav4N0;GykvUTckZUML?O#*zpPK3GeK zKvCNzC#7sl0&x2DE+z;{PD*8yGc^6)M8BH+q3zT3dlLdvdeQWIWM`$xAsnQV37US7 z^3fq@+v{AGuP8YwWgPsKylqLeGT#Bky?u_at7fl|%WzkJjZVSq2V`d@`D_{hB@+~P zcKP~v=H~II5gOr;D8H0M2MO@$z2WtPUxM*6;1vge+eXJs zz_uhJ7+^xwKaKi|V}PRNvS6>Gv(fkEw$Y*Dc10uuB@+e|wyNFeoU}UOn>ezk3OShH zDn^KoudAm2irW>oB~>Ap0ZPx$TuDShR5*>TlfP=hP!xy1h(k&Vq+*u99UK%Y)+~`eK~d1r#Vs%3PzoI!`U)K! zTd3eOI5>53%Tg6PI5-5lC{l2!gOCm}G5?&}1K~o>{m%KF-@O<97}B}K>)o{ruswjY z+XK+ISBd@EbD-7k0I+uE;j|ksl8wX7+Z%6Z*#tm4=GM-fUZa*Ml8M8bs6-S6g^vFX zU8QRl+*AdcsIYeC-Z~zTuUkAnJpd;k3|);hko@jeyMtRc*^CE4q2Xl4LD2#Y8nl6KjBNQ3q%KO4_vsz47;Hxln zm1ecba54k%;1C%1C*gAVr~q0e9ap{#3dYSn`Px$kx4{BR5*=|ld(#}P!xv0gbtD*YS7|VI;AvHFti<{(z;2PzJ!a5B0h(RUAp)X zzJV2sgO&)QVkYS(3KfxD+~QE~>5W$KOgHzQ|GWRW=fq-0tT&peUMrOV5Jy96R&Hif z3y*tU@}9?ezb|Lqqm!8s%M|bI?hsTe_{9S8^XOj?%M@?5TD*?O0QkiM0Pi2400R06 zvGqcW^PZQnxU?`Y=Ky<$`}kp1-pF2WG}Gf=m!*Yy@}4J<_<8gvB&^p2k^@BG7YkAX zAbaiYPNpMay(T%fu1{On5dGcW?x0kHQi%wo>l<-lE0r*~yyCpy7uy2Kdh#vlQYLn0d5BuR?eiG5MAq>J87W_xgA`{ApM$cKdh!< zy+&hmgVWwAfIz;I&x}|~Fhe`htpX?oWtP1~0h%%M7d73O<@~%I;2VWK(0~5XL4E)L N002ovPDHLkV1joU(jfo< literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..837acba6fc5360031b4acb7edf8bc467c244c8b4 GIT binary patch literal 518 zcmV+h0{Q)kP)Px$z)3_wR5*=|lg~>VK@`V7TRd$DNrp7^KiH6!1(&@Pr0LBbEEN$v=8!-t{X0r8 zy@piSB0&@iJ@_XW@zjPDEfM#WN)Nq=M(oaYdZ=%kwOQyp&b;^i^=2$`YH7J?v`zqs zqmh-@xA1TXKjd@q2`^Sx z0H~@m-8Zip9v-pX`;c06{J^-L2f(9Q3o_h%{w!T#O)09XOx*?Pu$f2-TN<}KAA~&~p#FI;0&qK12_Y(F);%H=L6jW82 zno`7*%Zya(^!M#0JP&@Czs$je*gdg07*qo IM6N<$f<&k76951J literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/duralumin_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..64be550698db947fae4195eff5d57babac1ab33d GIT binary patch literal 435 zcmV;k0ZjghP)Px$ZAnByR5*>Tld(?1U=)Qv2m@(DkjAhP=u`rR#0D4$MA!(6FTuiM;)56>OP9WY ziGyzdM&h6Z7d3V&gpHxb7+LF}{~y}Iq<3oWz32SroSVWQE4FWN+&uBc_h$12fHR*( z_9G1e99ko?n#OoCk+adoWrQRa2KNVj%9RR+o(JIl;}bvz6;`O05B9l(B_B=W4bx(Pk-b%TK zS@q`+kAlQ^=Chczkkz!GB|XpD^Ee-z1;C;dMWt9Sp(tuFgYjg7<1PVqf(^6kD~d|- zs1zWK3xCtQdjK4FDgEvOFWgl$gWt3GFRcdUN=1UUWhd1X3wK39&vA2gEfof?AXIFF zwyU7$Xto->J-^Cc#HU%W(QGxaEgOKOnvy^O+p+`sL{b*g#l4H=5{KG>Bn*eU_h$-c duPx$xk*GpR5*=wlRrxwK^TXhJ=b{I3*O-+cpJ7@E&<6_aT>`tkSm0_M(hN^Lczi+ zMG%V=sVqcN1OnFu8wCrwuW-$lo6c+@t{@i_qFm*si2L5`?PjWB-uXTAd;g3@$vWI! zO|yL%#Q^mB1FP(=T_#-H+@R((xVrdBXGOwk8N@Qhos|ytmP^x93@<~0Wb5;nuLUQT zDSq94$Nj@C08LK;F#3G~AfQP|CEH};n$yTxtj@J14)E#Y7VFDPQlrY@?rOTWxj}WV zP0eWtWOy0=7t+;QAT}U^rl+`n7z?wrqrL51N4i?eol2HpX8j*zoXXMOHenPKMzIJ_ zPEWxV$)u|DWkAHAxU7T5$yWuZ>eEUuq#q|0E>-}4A|9NFZa&wCceCAzv zmfF})6;08a4=q=0n_|X;l&ZkTUswc^d=~)jt`o^UjAB&a=PKUo53DeXnVC*RW1Doe zCIIR!SBj7(DTo+yk_zN)=$f`-#7hnJY002ovPDHLkV1igq BPx$z)3_wR5*=|lf7%(P!z>~DlrcBV3RHqba*I(KxDBfsGYis7tq+?O;E^KOu(b3 zj)hY47bugdhXy(X(J7s3Ey@y14T;fEkf9$C=+IK=>ySQ0PAuph-@WJDbI-lcpe7Cv z_Ea{@0f>{-sH@w!4Fbq!InIuW3?&`Yg271Dkr-953?-L~j98+htlWSE`;H$O1M1ijk5B8MyL4%{f zR~M&8Dhhn{<f8PS&-fg3V)8p|I57)T{w_9DdZI5Q7KpP2gwJgYH`3*re z+O6*O{(;Rc8-V%wvfO~@3N9Dfs)B0w%`Kbz4?NnfF5f<9bW98FjlP%p`I0zEjTH}E z$0|Wpsag%?mEPn_f`9Uq48eZ53&79s3$7>_4n}ycAWl-^BsDx&C>crsb>}pzcTioa zaC+qPv+}+F^bzC9l-ggmj#xN7nvDX0@nlMzq{e>}Q1iwA0(>0LRQ%_BHUIzs07*qo IM6N<$g801i@&Et; literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/electrum_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/electrum_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..01bb1deabbacba4e099a98c6d8ebf84c8146bff9 GIT binary patch literal 445 zcmV;u0Yd(XP)Px$cS%G+R5*>Tld($zVHn1Lg<|NS3LVZ-5V-g5tfI0)wwZ9>pc(9qNn%}ou_ zQV_I7tAm99K@GZudW%Si7ntCXj(rVz*L`>ARPXfhz2EcjJkR@n@W_74Esy z8v$_t^c;F0TL;`b*e8|DFd6o#*1Wa|lEi}GYOP8-r;sfe0OVJ_$*|Aa>0yXuGYHNX zOOm3k?cxv7>b`DSG%BWNPg0OCmRKz3q>>qC;||$^!S(r(ltbOJq63=_+T!c;Lre#4 zv3z?G(?MJKg9K<)Owp*AqIq*6Tos;$R5AlVwqUSW&Uv`K6w*1x1NmhGjO;F| zR>pqqdJ3f}^lS$`0P>frmC-dtQW5f5w=8r`q19}KfB>y#OUfsdvMb%4cOvevQ#3rn nV7Q^b;9FB)2Jew0{g?U%VYQu^5lE9T00000NkvXXu0mjfZFSQe literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/gold_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/gold_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..b778d657fc536f0ab566bcb896c814e9322ba795 GIT binary patch literal 482 zcmV<80UiE{P)Px$oJmAMR5*>5lfO$NK@`V7JD$3!a*L+(O1b5V69TDBda>|duvri+&L)fHX>mme zTxsRsAh?I1bpj%SSS=}|T@aByE=Ml7`>rrE>|}%D!oq`@@2`39In4N?z!P0}x(NX7 zUgpfYTL4CZC+TooB<;&M-ZX#cD|r(jj^Xt1PxNr&5pM21%)Y2PB6CQ-VW z|9nI?`i^oBZT8W?oCEwg*}x((nI~%6y5(ZZ$>6kNoO}RK?%|92Xx9?YI6|?@ue}Yc zBhA**?EG3S?;;9334JA@uZ(iOo?H1lKB!ioSdd$sk1-B49BO3GZO-;0I^BeJFLTzH zorAg20{8d-Xw=KBu9c8KlPA=S`3`91e5BA<5(SR; zH_v+Ub}w@}-Gq|6SeymzLJyP9I?IWkSknc~&i_uTgLSIR1?Px$wn;=mR5*=|lRan?VHn4M_a>xQf|SD^6if*Yg`2ua5ut?}9OV4iGG_@04hq77 zbdexr5d;?}H^)xRAO<1?5|FMA!NEZhB|#x1au|{fhQ7tw3{OYpQE0!e1zM~}UdT}dZ*AofO zVv`h3&CSW6cMibO;TCQw&!6#Met(~EwS0#s*WSdrTaRz>?!^bPNrOS}ocj+gE?rRo zn7jMri#D5`_xx(UP0VH}w_n--sALOTynWNd+B+aqv{7aib9bLja|3HcPx$bV)=(R5*>Tld($zVHn1LekPuSh=?>uIEmumU`PaayATQW54beB2%!)(h(m(} zLW@&ddyx{jD~Px?6)r6eP9h;3nD;eYciee8)w_Jh_rA}=^E~f&@W=A)YIHB6()u0@ z7XaM88J>C1g#|phD@$wjdGLE2PUh1y^Hqj=D*aQdC9k(PU z2S8x|41iiIMm-~Jdwb5=K)QpWHxNqGJgLyD7F{{iTCwect(Rpfmt*r>f5`Q+ES*6D z)H6cXGeXXuQo5geLe|s>Ati{WM%)>!-YXcG{WZ~&p-9=Y=Iq-?Fn+IL6^q8#LG!p(4Z k{!Gr-rm2ywEB%-H0c`k_VqX~GQUCw|07*qoM6N<$f}NznDF6Tf literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/iron_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/iron_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..1ae82f2902255297528ecd3a1a30a7c583cf86f7 GIT binary patch literal 425 zcmV;a0apHrP)Px$V@X6oR5*>5lOc}7Fc3w5s;UL$0ai(%i+Td19-uH`#Xdq&PZ7`)81@W4K~NRs zkZ3@$QOPXw$Zo1#?MRU<$N$YA&$z;uXxo<4nuq`Z-uvp?*@dueTMi*`jFHE2l+PH$ ze~QO(xH_m3;1rglm7s4zu!?nQq3t_ zvYxy6bmE*7Cu;zx>l)KEp=p{Td)n)|uIPxhwk%yA@y_zdq6Y0+mvW>;UisI^iw} TiWq5+00000NkvXXu0mjf*T1|- literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/iron_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/iron_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..111a46c5b8ec6eee1eb87ee7f7efbe63196f1862 GIT binary patch literal 429 zcmV;e0aE^nP)Px$XGugsR5*=|Q!TCnF%bUt<)tg|6}`ba6mrghtU#@guvc=cFr*oft?+qT$lx3iTs#$df(13>;OecwYY|0t}r?3`ooJ$vt8FVZJXreFLA XOLhe<_P^{&00000NkvXXu0mjffdRga literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/iron_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/iron_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..9b4d9a5fad159f31f582d94042be8664cea57241 GIT binary patch literal 378 zcmV-=0fqjFP)Px$G)Y83R5*>TlQE8iFc3xGMiIFIg+)Vy1eH(VGo*woaD-HJT!oS|$>uIJQ#*y=eiJrvMdoo5CLAV7seQXL$OlI2_d-O z?-B6g=bNSp0Aoy;_ei`fOO(6v^Mg1kB}tM5(YEcXs#unVqA2M5K6DsuVVWkSl#yr~ zMNuH7WE{uvZZ~J!wn!=Ix($=FFoy)#;zwfdvx!rC7_-XFx<@ogAXr=!W Y-^|P3-aw?u4^P)Px$^+`lQR5*=wl0Rq@Q5?rV7n908T6)b9LTjuA>7R7y=n|I>k*=4i37tyl>Zpql zH#@Z8*5RO&8O>I(gHAyj#32ezT3jR=l5+8icn4K{4&^;^X?)Y~z4!Zme&64FKZ7xA z|6ot5_`{o10ID_D7?&F#CoC572s23#4k#A#eErb@kpF{d@k#qgcKc2FSBA3NZ_3M` z9og+SWw+myC+#Cya>{a4cT0(L>seOj*7*G=Tyli2>jo-7vfOikLlZ(%0sU7U}F z0L(5gX-HgM^e)axrxppqfflN>o$U$$f$wQRq=nY^rlu>1+V5;v2z-yg_q4FvKGQB@ z>YsyfplvJ2vnQ_zd{587W$)U7uxvIq7Z8?BtXgx8mrq}-zt)gZakb_ef$t$Ko9VP2 zZ2_SE?ljVS;Cop2Gm#fpkd4g+of}7wX<6phv&_$A^rio$gRpE$PFW5+5tc0h+{0ZX zGMXi)EFZrp@cwO&#&I2C*-Y3bS6&!tXL#K>C^=<0yS&8RdnrCQS^!MgCIDAnhrAJwAI#ZW#o1aNO&#xG)QyUTW#6a{@DC4W>%_}B$Ljz9002ov JPDHLkV1hXF2;%?% literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/lerasatium_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/lerasatium_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..e6f3344eb16cb8082c91be8edca0291a2c954f2e GIT binary patch literal 564 zcmV-40?Yl0P)Px$?ny*JR5*=|lRsz^Q5?rVCjq%5ZDS4z1S2j&PEs72p&%k6X zzo#&vHn+0E?)L!Lc(hoO$$@A=d1c(p|M*+kn65lx30l~EDXLqLtzyVEOKYz+e zwJnO}{3Q})9DK0fbT7sg(|KliUjTM)VQCBdFEi584p&8~}&4 zQ*6Of5`97y$> z*KRQ7*9l#}jiv_aoE;MjM;Y2(Pb#HcgJL;`cFb_}i)Q=C<4zKJ_5k4R zt5wB`u*##mPXOo-oaWV+A6?tUa$eB_x^NQ8h)b(Ez6UZHEub?K(&=@&t_yQ*fx`M8 z6MxyovdoN_3F$n3b_;;Q`X0q{UiohVNg`(;SNRX@c*t_j`~5%w0000Px$h)G02R5*>TlRHQQK@>%g5`(n*>_nshKgN{U+g1Txo0q8=0i1NoOlO zIxwMty*&bep6)@+KEdSN7^#HijHfsl9hjietf6Z`N|ij}P@J{ZT>u*IRRAI*!~TI4 z%Q^WYo3dEW$@)h@7RxzlrMIM8mr7VNm9XUI_P(@TI3ws<5P)zfPNP|4XX~8o*`6nL z-4M(#$IuO-X7Kcyqg2TQ_`<1#C3Qp47Zysx0IoeplP0A~-kH}AZhkkET8CS-kx3Hm zH`!c2_So(c8UR{Ar(UW$4m;h#yPHRz-wF<744D{1rUK6|$NU}GE+QktET+df&D;Xe zB{T)RJbF;_@uY08$KJOa1U%uk{Y>uHrW?X{rT=n%0gRoMI4_2!B>(^b07*qoM6N<$ Ef(YZv(*OVf literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..cdc5b38ea5ed4dfafb14afc2e0d460a0a5bb7fbf GIT binary patch literal 498 zcmVPx$tVu*cR5*=wlD$jAKp2OglnfmL1}Q>930evc?GSVjEY!cD3WAeMCw0)$Sws*Q zzZS)z2u^}fv+Gm@!J*PYkYd3SO0tNw;3&k!JCY{ebh&$f&pmf}6%xkD<#8b9j}LDE zIL(HVRI4Th%O#tPZqVts$rYx=c8~-~g~PeR6y=i5Tyc@lp^rU1FALYVm#C~%gK>Zo z4%^f7d=7m8=8B5|xPuP>I{h{P*JrKBb)*2ee44xl3(jxWv z@P?*N(&@LQwt!q+weVd}KHA;wGXREVqHAdk%OvGA8_M~SgQiYOZ6FqQnhnKwJq*ia zd37P)2LOYiCn3J;QC`bOUR*$QEgkIxfXYfW*sNFh{`n%Sn;h)jNZqgrz{bvQ0B~`- zuS8li47omQVOS>l*$H~xQ4A6@NP^toy#tV+odBTM9dU8GAIYfWfWK3M@c-7eG=rf> ouR9tqj~k5Jh`C{zvC{#50cTXx)^arNdjJ3c07*qoM6N<$f+P#x(f|Me literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..8e37a879ce604c2f624a92170c87395473efb242 GIT binary patch literal 559 zcmV+~0?_@5P)Px$=}AOER5*>5lRsz^Q5?rVCmA|)c$75d&LdDU#iG?>2f>;K!DLftQiM*z(Lpj9 zU4n%WgqAMqCJy1&LLtfIA}taM)k5vkI!Fg092ZC=+>jwd;W?D|nll9Px4p;j_xrN#NsP`z5w&C9tpnM}_D@bdYq5J*Hx4to8e!9nn#*Jt<3KE=(V9NbGp z9e(D1%V#fAB-67}v8Y9QfzP-7AFMo1;{`rX9;|3fLu_jEv583(b8Y7k$4P06X51o^ zP4KyP#+5;UcDKXSjNsA3B)9L}zzclD_!y3p!gU+kVymfN=Mtc}S(H;Vg1M`6i19Ic z=Ur@J5fvt0;Nv(c%($h=yuhc`^ur2NMTMyu;`THEuG`?l`!|NNFr*+hF{#<(_B3~I z-6twcj!zG;g+;6B1CTG2WG0)ybsN;H6(f|y-g%enVu9n+gOF6k25{j&1)N>xKn3I? z%HP#9(e!@d1wI?)ZSB8atr%w9l9_A*D9NE{<_je`$fi7JpWdUkbExmv%d4T}{*sK4+(AWD^r{2#mw-jH(Fn+E^@002ovPDHLkV1hwY36lT- literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/lerasium_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..1a87be469df6bf45b4f0ae4e8e410aae764f3729 GIT binary patch literal 450 zcmV;z0X_bSP)Px$d`Uz>R5*>Tk-tj}mh2^|!9=Nue!Y|1*yLG~`fVLK95tkVb#{vW;g>*b)5N>wsB2F`$T39xK zq2MBb{=ZOEQL}kHp20zCVVU80fM1enw5z1!8BWem4LuZ!s(oR#Rz>`XZ&7PiMEC1m z)LIoWTO@#*%?mY~7x&M%LUW-<@JliP>3D|Wc)-I`lbx+yOY3q-LGrkfLyED3X17kG zT?Md()ofnKA%%_26@#Et%ja?V0BE$UdR{yD?e){JbIcyfZLbrQ6b|+-Ew&?3F93<; z5~ZsbPLKB;mRIn&eDubB3#3gVxx{2TvUi}lC=^vD(-GxT2Y^V_YXHloj()pEKoeo+ sy(N#E-ng#|&ce0=W+5$(8T_~T1rf!bSV00%7ytkO07*qoM6N<$fPx$pGibPR5*=wlfO&DKorM632~}~N)AC$DdgQckS6cxGmt!QdN!Qn3KQ z>zf7;&|ipc5+ioqT*BhygpzfD##R%*R+k>xE6eNAMq``F35DzC1ajAV`WI5E1_E&a z5tNDrDFKjw&E1{EjZ~_E?6FOK#=3!+@8<3fT8C&Iitx63B`$2OLvF4w>G$8owt*ZU z?W1)lO?!Fn0icve*$+_4!)|w4)@}ESo9j!l4Wz{FPRr6dL@AG{>0+`36Q7^o0?|5T zc5Xh=aRVv)!yY&c$20<1SX?5X|E>S=;U1+t{8~MVJ5gs|1aN+FVmWbo9Aau6b;ke_ zkn@WZ8Kl%~`?Y#hsRk@8E^&5x2q2KJ!AC;O-^UbpVy+6H><5fEjsWA4`9$MxOsPx$xk*GpR5*=|lQC=CP!xqfmFGzy1bRzCLPH3+WC>V9LPis8N)`=D#uh{U4>Dx& zl*NPoK?5OkGiV7VrFirvC)tuQOAE~tD1#>pUYEWX$+4k#lkUCeoO|BA4ojljInqky z0A!Pqv#d_cHvuS>a~Sn#2!ZdrBt!Hv5U1K4#eHUF$$d8F?sja8PEOBAhJ%Gl9MgOl z^|(AwY@%8mw%S_C0Dzkx-)bPjNWRa;3+FZ9Mpf8q>uQ~-eCUnMEu;*zVKGKFgy8OW z%*p8)MKNV>cbhN0Pdb~7oHuO7c_{-7bMf+r`1mu)aA0#$+$X*IT7LzlayB-%IOxRo z-$C~y&+3JrH{b1uVXLiu-v!`Z)hN?!lD_Zac`gkh*a`PBMgkPY6s7W4fNFT2Ye805 zBmmdxg?#}j17>AeS0H6z*;iL2ADZv+JeP;ZCw$+Px$eMv+?R5*>TlfO#>VI0Ok$~B$5o_GjFsf2KD{y0In!NH-{hTI)&uOaYHXlxV; zYR|!?p@xQrAn4bqqc;?Yfgap^P50V+>Qvw9xbORUc%J9IgFjAe-C}>Q6@<^z={Eqc zZx2i7wRK>-bBqu=t~*&QdjwIDSQI`uJi;(^idGJQ&#x(f6uRu4DNf>1IGfEVjgR8Bd9j&1UdCA0c#xqcKG*NB8tZ>7iV4mOI$rYX$AjFW|wFB3kFdU5mR>F3* z8JK38?Hx-IjEDJNo*w}ij>aY-pMkjF!9hXNq>P>Pr7*egL|2jle9g4KV-!002ovPDHLkV1jy&$>RV3 literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/pewter_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/pewter_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..b26989d53e8323623979aafec3295b850632e24f GIT binary patch literal 480 zcmV<60U!Q}P)Px$nn^@KR5*=|lCf&zKoEvM2@^HT%6AaO7^0B!h_}8fV7SuYG6BDdi@Z)CDGe$E z0#~Ue6Hs%U0x1$W5xi~*ZDMglLJ;+m%^eXY%;;Y$=>iwNj5TKL-;AdF^IM6Y~ zx0kEg471-ej-r3`s^T(^T^``aV!>iQcQf*Dm&@j6wc;|45n+hg?-5~0mSr^KF+dM8 zjbjHH0Zw3h2l!LhE_SzGcO01>fUbpIo+H8#0Hsu?mAmyCqcuirCwwbQSA}o1<|WJ6 z<+=OaLLTq$F8b)iNXaCM5K`hNY3jX|B`*iDg&d2MH1&+u2q}?=*>qe0`1Shg zAVzDxo}P9lZXuJFQ@%~uDl7!x_s0i9${wUB3W}oOVYBf%TeXLO(~v|1R*6S zLBMBSciL&6UZ4$m-fjUn2?78<>zaqnroYNV5L$juqKGeNXFPAW{|7h*aj@=K4Dc88 WC*5&6P87KS0000 literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/pewter_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/pewter_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..d0944071b2e21211864113f8e1c96f26dcff8b4e GIT binary patch literal 502 zcmVPx$ut`KgR5*=|lQC=DKoEsLg)3qZE8T&t5F;rDBS_)K7_Jfs(ikb2fD8Ao?%$*` zT;)Ek;Y><_tAM!XIyJ!(9CvDL7J<_#g}ocewjk5(?#z2{-pm>d#QEuI+eit(BFl`S zywS@dfJREfFl6ky1fB=b4uOoi#nUL_e!FE;*DUi~Ctb{DgCK?~4#Til)J;y~xHW|U z;K%iK4`ieyZ|eHZeiitpu348QX&krRym#ubE=wkkqkZTaId)yvWy!^C#+NkZ`{ktu zdc~%kH-$hk|9O1m+u0dc^SOSTMiIYmZ=V#XXryG~IDGVdgl#i+T~3mOPeH)Xn;YF? zBc+;?E5|d zMN#Mpm_l&B-J(rYmx_Jg_c=N^z_ct@s}+Igp}bN1QWOP?EHiqW`1$Zq7j>noew9y( zz30KRycXbVk^u0#ETO8nn$J;-w8%2U6r!C*5kUKDHM@Jz9jUNwZDJ!ON5{u3^PIt7 s_7Px$XGugsR5*>TlRs+$K@i1%iuebQ)ikFZxRNq>TLgquf?#=IY2dzzMZQO>ltNMp z_6JsikYW|BEmErpMv#~yxy8HFDw%58nK$#^n_c*0q^>0%yWLZG-fg!4jDjFhpScF? z`94;u#C$e8PoLsVGI8)jt3|z5Ln&qM)5jxvxuoNHi6-edxZ%1S4~HLp>ovDh@|DTZ za9sc#De>BEBQL_B;kxWL8_Kqg)*7W0PyK$x2S>_?jw5-y*w3ZQD++*B&2VcguSpXvOySwdV~>A%D` XQKXLY*WvUx00000NkvXXu0mjf10cfj literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/steel_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/steel_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..be62ec0fc6ab3f9b5617b88d14583c949c0ea79a GIT binary patch literal 490 zcmVPx$q)9|UR5*=wlQB;lF&KuQOM^hLkkU#wa`sIeNG#-$wBe74`m?`OZ~QBcWlD>GxI6##nB_loxBCXKL} zG>}rzz3bVvv-68WNXZp%Z*S2|8tk|BNK-{z-LV@Fza9{*huJK^bH#CWhctb$yx-ab zpr57y*3GOF>%fSm6uA>ZDeZcZlTxzV%9=@oP)ei}7V@qA{ar}C7F$ReumaP&DKmF; zd;-pk)N67661#UjYu!N1_tEhQN-LCBR(NyUwJtt@cUq~eGM)ZmI2;m6Nhl?~ANO2# zu2EW{2Ys)y`tfvOVUfx22_g`DiK|Q|Q%ZW!_ik>xj7B4C8_0=y4U*Cd5eR($^L!2f zp2lMfQChJTZRBp;KsKYuYRbIDG&4PZT3Z9)@#il@AOJGg$z|s{1L$0}y|PPpApjx} ztSm3hK{{7$8>G2x2kT*0uf_Pj&%?tb04vK&0Q~*;oDPx$mPtfGR5*=|ld(?YKoEvMBU)&jNL%7vR~Sn!k1og&ErN>EbqMiLQIz&1Bp!f} z=u#z07m2uYcJlynLmptSIPJy;EZuago%!eg|CtGBiTvu?YNG)#+cId&JN{e*ppB-V z_t;e_oiJoD9N9LIpkAD1{|eSc!F;jwNl%Xt42Gj`nFOx5pZ6FHNB*Op9G%5hMiPMO zpK$}^*il{=-EZ|eaK|b-i)}sc$UWwZC24Z*eW)9`t19M;B~OnJ+}+;r^8DKaed*?$ zmyyJE-hb@5y!_!M%1DxBDXZ0ca|+sM(&U_z(-Q!8RmDY;0I)8Kx-ddM z7~;Hf`!bo%FxxU{cp!v8Daq^jtwGgwqqe1uJ>ak)7U0*4%P)Px$S4l)cR5*>TlQD0?FcgG85Ca0i0+l=xI~!DDfe0olAp9c4z<+Ah5h!Y>R=|S9 zN&;h~mIZ!5y3`g<=+wT+de3*hyC=gREA!i+|KP{^93Dad4#$1!eyX8?gMJUCB&+qt z%pRYfQzV%rxY@j?TB$JdhXCw@0KgC>NwP_>*KS#gT%`a^zuWO}YOb-DyT0tTTLeLf zQj*zx!N?yno=mMAx*gAYAg5m+^n18U5d@(bjwe%=uX7{Usk!m{$4ZmLhvPnDEGQ)b z82LkjAmnBFW`T7{N7AU*k&d)8SgkkA<_mzEV5jEB(vb*pXAx$#zbJ|Tn9Uc)?=A4< zd`V~UvzAy0LA6pbpljL1LY~X{LaAJ`6k1!*Dy~7-RVtSdLJ&otrkC>B?RW?w*lu?K z6bpF+1lVqORz9hewRFAjM!nA0>0}6#;r{xWk{R4u>A%!B*#D3qZj%|b00000NkvXX Hu0mjfZBw{T literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/tin_bracelet.png b/src/feruchemy/resources/assets/feruchemy/textures/item/tin_bracelet.png new file mode 100644 index 0000000000000000000000000000000000000000..9a14c275189c9654b8d77926b8a25d2f6b24cd6e GIT binary patch literal 539 zcmV+$0_6RPP)Px$)k#D_R5*=&lR--xK@`V-yCzMWHVYOHx>J&Tgn~UNf*(LaZn@0Z3+1Rg6N@!(nAjoIV3QfKq4u-xQE0tJtRBqn%IGb$ISkJ@6G$aF<7v6 zj}BEByHWyBuhxu3|0Wg*_x2CSSQdT|M32=|5G`)Xj%s$=syn_{%}!gjMuX|z>?@Q@ z>c8UFXrP*%wuW@a_o_7-#6XWBW*B7BX?)KkV_7kH>SbD=1AMG}A_`gBJvvl-`v+LB zmsv7R4f%6-M>_Lr+Nftq{!S*Ol1avs2`|#mF;a>5zkmMvkO0V77Q(!dka2#%~E_KPx$u}MThR5*=|lfg$#4+TOby-Fl@h1O39L>S}1e1J3~DA{E#S%qY!Ah-|& zXXTJ=2FWtJpbH841R4J#X;L*Z&TcRuG?WXiPIt6nYFE^|_r7~yJ%@~Qc+@spDF8-; zp_5f7mO%hoDR%b{@XJ0#5rD}e5lL{f)ghdP=;?%huNxPgonK^BJORlFA#<#Zwjk-zJiNwWh)oOTB8mnT1^vgc|Uia0C5EP1q z*wQ;So4h9_R{784Bj18OPEU^Gw`Qxu&+cV<3R)?)YBko1MF9M=k6-c#A2h%2?_!HV zqi)`&vmgi>bz{NXpLakAh$8Z?i!Vg1yhu-=mEzM!v(3A%oj)t9IRM5t*YN~ADG6sG zz=FV&GFD$%%~4n{k#}AG{(gWc!e(Rt%lPJ+(O~GLGT8p|m3%Ju3QDwUyRkW0^;8CL z?U`n)Lt(uH!1L3bfAcw~C&#h>(O~F!QkrI~17K1eSdyfgwO6TDQ@aw*LbOt3ZrSoV tJZhUtwTic~2|&Ns<=sd6ACl!2e*ynf(4jE0QUCw|002ovPDHLkV1iwY;?4j7 literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/tin_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/tin_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..70b4f2cde1440716190b9c77e1f2dacfcface169 GIT binary patch literal 470 zcmV;{0V)28P)Px$kV!;AR5*>TQo%|BQ4~FzW)01(9MPE={e-}cAou|?xN|q_kf5kliwFwZv@#4t z+SaP5RrCRZ;6{lSEfNK z)HDFV^WB5zeP9)^u(uDE<6xMkyG@pnP~fJflBU`w9cxTF)|j-0I%y4c`(9IttmKIs zv*rdD4vxSw46Mln47+7ZTo2-FIz=cLgf*RFli7eT6gc~Mdq4MBU>OF+XattyFzEIW zjzw{CdP3!p&E-}||B>BP+qPu2P252OfUM++tmH}g{?@VLcYfzM06;hvg)thTQohE` z<&`HeK@=gx6A(lZ6oFxy7<798uoNsSc_N4+c9Kbo&_DNAuT=p6gKp39yA0gdb*dM@ z?}Ct2Is?pR4v3O1N$Bf3B0P_mr$n+a M07*qoM6N<$g6y`Px$*-1n}R5*=&lfP@*KorM6c4UP%O&d2=-3&Eq1A@@4n-@<~7E`no3i$^DDIuBC zG0xhhcxc9s**$crHD$>byqI8tji7^TDgIF+FE;LVNOYBKrw4+E-hDs!efQp_Sg`gE zc0?4rUI2hot)&+2RTc@$$497YhOXa{xsM?3gGh0+?FheL7gKQ~{C-^w!-iBI zCH^ZOh7IBO>k={*H)0qz5};W~Itp^nHyDp6sA?twUtP(|Jiym4pNK=2_6~ML`S^&n z$FG?F2_+;PUGwn4QvjCLCyXb*d9)n9 z|Mm}e6CJTj#bgOxzay=$XEzh2>>uvpdI7E%NMZH+Id-XtXEH+Eo*nZ zfMVfo;>Mk7E#-OvdOjyL3jfAb0BoBDvTM%(IKQ~W&^53v5qDzfngBShoTZdFJr0R# zeX;TKc0&wuS~-&=JvZB?Z3(+nWZNuIseA*FkYAmj2{E&eDefd{6>xjw#%l?Tulrxu hotr2&bZzc*fWH;f12de}m)HOR002ovPDHLkV1lUH?|uLP literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/zinc_necklace.png b/src/feruchemy/resources/assets/feruchemy/textures/item/zinc_necklace.png new file mode 100644 index 0000000000000000000000000000000000000000..f46f7094b6f986d378b37a70e47beb8c22e6af84 GIT binary patch literal 517 zcmV+g0{Z=lP)Px$zez+vR5*=|lQC%2P#DL5kzSTsxabA9BcAdgbaQCwA{`Rp2FW6b+3p6BE^j*A zodl;WcB@-K>Jmh5xD3V3POg1m2)EVLUZFb5bFeRWIWOS1zVHA4fB*mYK8uFhld)Ds z2|$)ktfs!TWe|WWO8Wg>r0C(aJH&&LZX&T3!BP%UDyNv9k$(DIH66ZtLp&I*oWwHV zet(x_|EPLcY!0GO3(p1MZE{#6Su-R1)3cR+4Y`>rh(f(GmmmuDtJg2J$-#hwDAcEU zrh_Qd-!H!E(>&9^^_4b6|EQVdh38_FXBR(t@%$O_U{t+HIV4FA>RV7n$-|uoIJa*8 zZ4^DWx3>6la>Dx$ALkaMP&@6;JOg9FfS*2j%=(cQDzQ|1usQlcf`@ zmcgT7rvjNWRu*$I>a`56$J0^{xqo*XfU93q0OG-@@}H#>OL(r9atNSn6BrUWsML%- zf77qsic&eMC~3U1<=T_6_BVaJ?i~P<{Ufq;V*NJ(4JZBwJKEV0JsaAs00000NkvXX Hu0mjf!SwQ? literal 0 HcmV?d00001 diff --git a/src/feruchemy/resources/assets/feruchemy/textures/item/zinc_ring.png b/src/feruchemy/resources/assets/feruchemy/textures/item/zinc_ring.png new file mode 100644 index 0000000000000000000000000000000000000000..8365fd3e5ab838af6ae38b5c693052ac4b9e71a2 GIT binary patch literal 474 zcmV<00VV#4P)Px$lu1NER5*>TlCewUU>L@KSKEkQwpeTDk4E zAUHTUy5A&dhTB}b6sgeQCPtc6j7v&=Z%Rx|I^Dg~$M=4}m*;uj5B{+}O>6A6cO^RC z-9G_f|Gv(=FHQqHM~5g%iAVP#?(Ku*4N1X$#}?P?%0ymdA}=xudNK-n(syj>JGK~R zQyF`9e5;ru=z<*VlkjafWfB*m3&KamGSzrA`=*QIrxx zf54Ku$&Z8YsT|Cm?R@ExY}f0`DCmjnbtM@jfMGVpFq?96_A|Cph?4#U1S2&wJO?r4PC2}8t~{oF!Toixv*h2Mc1lqeceh8EJXgU>>B`v{vh_72m4-- z>J@qaAks1#sEf-nl$5<%U&HqT)JmDl%RjNg)E2Jn8(Kyq1tm+ZlxZ0aZhN=!UB;)m zvrWrrU|Ht?tk&0J5Wup|Q~6|4j-*HX*4At2`bIqPW4KfQ^~VhIR{CG+FE`w}%Mo6~ Qm;e9(07*qoM6N<$f~YIo-2eap literal 0 HcmV?d00001 From 6015477d9221f1b2e95cfc9d261fd49bb6193ea8 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 9 Mar 2025 12:16:19 +1300 Subject: [PATCH 1002/1090] [Hemalurgy] New Textures --- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 | 40 +++++++++--------- .../hemalurgy/models/item/aluminum_spike.json | 4 +- .../hemalurgy/models/item/atium_spike.json | 4 +- .../models/item/bendalloy_spike.json | 4 +- .../hemalurgy/models/item/brass_spike.json | 4 +- .../hemalurgy/models/item/bronze_spike.json | 4 +- .../hemalurgy/models/item/cadmium_spike.json | 4 +- .../hemalurgy/models/item/chromium_spike.json | 4 +- .../hemalurgy/models/item/copper_spike.json | 4 +- .../models/item/duralumin_spike.json | 4 +- .../hemalurgy/models/item/electrum_spike.json | 4 +- .../hemalurgy/models/item/gold_spike.json | 4 +- .../hemalurgy/models/item/iron_spike.json | 4 +- .../models/item/lerasatium_spike.json | 4 +- .../hemalurgy/models/item/lerasium_spike.json | 4 +- .../hemalurgy/models/item/nicrosil_spike.json | 4 +- .../hemalurgy/models/item/pewter_spike.json | 4 +- .../hemalurgy/models/item/steel_spike.json | 4 +- .../hemalurgy/models/item/tin_spike.json | 4 +- .../hemalurgy/models/item/zinc_spike.json | 4 +- .../hemalurgy/HemalurgyItemModelsGen.java | 17 ++++---- .../textures/item/aluminum_spike.png | Bin 0 -> 226 bytes .../hemalurgy/textures/item/atium_spike.png | Bin 0 -> 229 bytes .../textures/item/bendalloy_spike.png | Bin 0 -> 186 bytes .../hemalurgy/textures/item/brass_spike.png | Bin 0 -> 203 bytes .../hemalurgy/textures/item/bronze_spike.png | Bin 0 -> 248 bytes .../hemalurgy/textures/item/cadmium_spike.png | Bin 0 -> 207 bytes .../textures/item/chromium_spike.png | Bin 0 -> 236 bytes .../hemalurgy/textures/item/copper_spike.png | Bin 0 -> 264 bytes .../textures/item/duralumin_spike.png | Bin 0 -> 250 bytes .../textures/item/electrum_spike.png | Bin 0 -> 220 bytes .../hemalurgy/textures/item/gold_spike.png | Bin 0 -> 190 bytes .../hemalurgy/textures/item/iron_spike.png | Bin 0 -> 189 bytes .../textures/item/lerasatium_spike.png | Bin 0 -> 220 bytes .../textures/item/lerasium_spike.png | Bin 0 -> 271 bytes .../textures/item/nicrosil_spike.png | Bin 0 -> 228 bytes .../hemalurgy/textures/item/pewter_spike.png | Bin 0 -> 232 bytes .../hemalurgy/textures/item/steel_spike.png | Bin 0 -> 263 bytes .../hemalurgy/textures/item/tin_spike.png | Bin 0 -> 224 bytes .../hemalurgy/textures/item/zinc_spike.png | Bin 0 -> 232 bytes 41 files changed, 68 insertions(+), 69 deletions(-) create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/aluminum_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/atium_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/bendalloy_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/brass_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/bronze_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/cadmium_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/chromium_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/copper_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/duralumin_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/electrum_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/gold_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/iron_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/lerasatium_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/lerasium_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/nicrosil_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/pewter_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/steel_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/tin_spike.png create mode 100644 src/hemalurgy/resources/assets/hemalurgy/textures/item/zinc_spike.png diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 9d05921c8..9fdf3ecb4 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-02-06T13:35:12.7276774 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-03-09T10:39:27.8482432 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 b/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 index 472397038..ae460821e 100644 --- a/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 +++ b/src/datagen/generated/hemalurgy/.cache/c8068618ee7f3ba2c93e8407a6d107e820d4e5e8 @@ -1,23 +1,23 @@ -// 1.20.1 2024-10-09T13:22:13.4507398 Item Models: hemalurgy -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/aluminum_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/atium_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/bendalloy_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/brass_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/bronze_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/cadmium_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/chromium_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/copper_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/duralumin_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/electrum_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/gold_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/iron_spike.json +// 1.20.1 2025-03-09T10:39:27.8512456 Item Models: hemalurgy +599ad960ce589ce29a8f017941fa9f29ae85e9b6 assets/hemalurgy/models/item/aluminum_spike.json +ecd609c979ce1941ddb9b2f41abd7689bff0128b assets/hemalurgy/models/item/atium_spike.json +0b1a1d8d2b913a995089e0884d61fed377cd8228 assets/hemalurgy/models/item/bendalloy_spike.json +9c07aaa8c82e36eb36fa487022518a68a1a450e2 assets/hemalurgy/models/item/brass_spike.json +9d2079e09408b493337823a081b9ce1cbb14a4b9 assets/hemalurgy/models/item/bronze_spike.json +52e5a6e1fdac73df6013abe3a23f3f4d4d5deecd assets/hemalurgy/models/item/cadmium_spike.json +c1e22dd8abf425d6ffef40265637c406ac13db14 assets/hemalurgy/models/item/chromium_spike.json +0f27142b943beb4d113afd2890048303c47ad8de assets/hemalurgy/models/item/copper_spike.json +2a09c32877911dc0932b01cf93efdf639f9b4f80 assets/hemalurgy/models/item/duralumin_spike.json +32cefaa4b82e5d564c81484481569ddaa3189d1c assets/hemalurgy/models/item/electrum_spike.json +06db2431dad8d8ad6ebcc741a20eb68da71b314b assets/hemalurgy/models/item/gold_spike.json +8ca1f61a205ceb2a5c61d654526f5ed1ee0de5f0 assets/hemalurgy/models/item/iron_spike.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/hemalurgy/models/item/koloss_large_spawn_egg.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/hemalurgy/models/item/koloss_medium_spawn_egg.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/hemalurgy/models/item/koloss_small_spawn_egg.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/lerasatium_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/lerasium_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/nicrosil_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/pewter_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/steel_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/tin_spike.json -b8292a74ee588877292bc8554012dfc2d6eae1f4 assets/hemalurgy/models/item/zinc_spike.json +cd77de46c4ffcef9015c3db037c4151c1c71a5f7 assets/hemalurgy/models/item/lerasatium_spike.json +9ca0c83183c35e999f348648a7e608b8685dad76 assets/hemalurgy/models/item/lerasium_spike.json +1dbc9b8e1b16cef2d49174442ef89f530f6c950d assets/hemalurgy/models/item/nicrosil_spike.json +ddfd9d97bbe7729fe3c45d1101b36b08a1579d2e assets/hemalurgy/models/item/pewter_spike.json +e3aff64ca348e597ff060dcc7d1dfffc6c414055 assets/hemalurgy/models/item/steel_spike.json +226502a01d92e981e5caa2c115c8255e1fc06dfb assets/hemalurgy/models/item/tin_spike.json +fd823f22e8ad9d5a63ac951a9f7145ba48cc6589 assets/hemalurgy/models/item/zinc_spike.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/aluminum_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/aluminum_spike.json index b2baaad4b..0c51071ed 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/aluminum_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/aluminum_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/aluminum_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/atium_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/atium_spike.json index b2baaad4b..22021d026 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/atium_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/atium_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/atium_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bendalloy_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bendalloy_spike.json index b2baaad4b..1f2151547 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bendalloy_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bendalloy_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/bendalloy_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/brass_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/brass_spike.json index b2baaad4b..c85d75393 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/brass_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/brass_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/brass_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bronze_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bronze_spike.json index b2baaad4b..a26fa1bee 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bronze_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/bronze_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/bronze_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/cadmium_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/cadmium_spike.json index b2baaad4b..7fc4bc5e3 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/cadmium_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/cadmium_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/cadmium_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/chromium_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/chromium_spike.json index b2baaad4b..3db4f76b2 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/chromium_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/chromium_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/chromium_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/copper_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/copper_spike.json index b2baaad4b..accaa8d75 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/copper_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/copper_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/copper_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/duralumin_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/duralumin_spike.json index b2baaad4b..00bdc843a 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/duralumin_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/duralumin_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/duralumin_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/electrum_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/electrum_spike.json index b2baaad4b..c350ea446 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/electrum_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/electrum_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/electrum_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/gold_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/gold_spike.json index b2baaad4b..f6570a2bf 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/gold_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/gold_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/gold_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/iron_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/iron_spike.json index b2baaad4b..a6f9ed118 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/iron_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/iron_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/iron_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasatium_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasatium_spike.json index b2baaad4b..139278f2c 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasatium_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasatium_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/lerasatium_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasium_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasium_spike.json index b2baaad4b..f0ed89a82 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasium_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/lerasium_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/lerasium_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/nicrosil_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/nicrosil_spike.json index b2baaad4b..f00b0cbd5 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/nicrosil_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/nicrosil_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/nicrosil_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/pewter_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/pewter_spike.json index b2baaad4b..ad3449734 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/pewter_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/pewter_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/pewter_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/steel_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/steel_spike.json index b2baaad4b..c2a04b7d4 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/steel_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/steel_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/steel_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/tin_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/tin_spike.json index b2baaad4b..381109fcf 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/tin_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/tin_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/tin_spike" } } \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/zinc_spike.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/zinc_spike.json index b2baaad4b..83af35fb4 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/zinc_spike.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/models/item/zinc_spike.json @@ -1,6 +1,6 @@ { - "parent": "hemalurgy:item/spike", + "parent": "minecraft:item/generated", "textures": { - "layer0": "hemalurgy:item/metal_spike" + "layer0": "hemalurgy:item/zinc_spike" } } \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java index 21b7588af..5bf7a2c48 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.hemalurgy; @@ -7,7 +7,6 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.hemalurgy.common.Hemalurgy; -import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; import leaf.cosmere.hemalurgy.common.registries.HemalurgyItems; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -42,13 +41,13 @@ protected void registerModels() getBuilder(item.toString()).parent(new ModelFile.UncheckedModelFile("item/template_spawn_egg")); continue; } - if (item instanceof HemalurgicSpikeItem) - { - this.getBuilder(path) - .parent(new ModelFile.UncheckedModelFile("hemalurgy:item/spike")) - .texture("layer0", modLoc("item/" + "metal_spike")); - continue; - } + //if (item instanceof HemalurgicSpikeItem) + //{ + // this.getBuilder(path) + // .parent(new ModelFile.UncheckedModelFile("hemalurgy:item/spike")) + // .texture("layer0", modLoc("item/" + "metal_spike")); + // continue; + //} else if (item instanceof SwordItem) { //koloss sword diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/aluminum_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/aluminum_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..a82514b357c13eb2c7dfbd6c12dbb135eb24f22e GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6Jd|hFJ6_ zCoEtqDB%3(zfp0P)wTbcMjpY(fBnCk-p}5tcz%D4go@tJ|Nrg3#yD+rG?*@9Rn4?o z(dUSS(CoMa3E3&<1ZGJzOnec+k-4w#sfIE$^WpzDzA&{NYZIFBp`MM6t&O?*nvu}c zrq|(pM)PdT+7|9x*zOqaJXO)eu%SYH!R{0>pq87-=?OKL8kY5at@oA9K4mOt#J~`+ XA}(V4ily6u?qu+E^>bP0l+XkKxaU={ literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/atium_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/atium_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..626893e128c23b015ef54d23c0eaef0436dabbe2 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6kw0hFJ6_ zCoEtKm^Agb|3*cnJ9qw{H0Baf%R17IRIc1;S ztDP-5%?Wy*J$=WrIE2e`S0o(!@{;G+v12^9W=Tn0JmaxOTV=@-38$uJ$#e6pj~9IX z#mfc+ZPoqqhC)x9%;WbP?W_3KlX&*lRvx8Ai$J=LWE_4cBpZ75KhOzJ*fnm>Dr97s XS>h_Q;7$ literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/bendalloy_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/bendalloy_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..da6d3f6d909c660916b8bbb201d3063df20a2f36 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|N<3X0Lo9le z6Be+22zvO>f1~0qr=0(qMjqiEZ~x!jo7sG1!uRj$yzbK{IlW_@!0rDL z#hw4(zxV&OfA#%#BjGkCiCxvX4LdkzCg-g4ote!vrRBfB{s+a=sv2!~Zr=BvsaUpX&y?Lq z{HA>WKlkt6|IAZbG|N33CK>!>I~a3m?z5h&0%~t=1vq*ZNjoPj5pV9WkZ0bd*mGo; zQ^)k)gLltQdidt#YM%VKx}*dkxKZ$4S2$1N$Ggw(mnh4#I=5im>LUtD=iFy; vUx@wm?z4WI^Ll$@BLQi)6AY2Yp$rVouL4%fP0|qox}L$))z4*}Q$iB}_kd;X literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/cadmium_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/cadmium_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..43ae49110fc64b7841a9629ca85109b6539e27d8 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Iz3$+Lo9le z6Be*(T%G#cf1{$K(wqM$4Ldkz3cpS8nVH?>a^rve30{@csv2#7?wI!%Ij?v$>HmAV z;Pcig(k#WCH{-a3694blJu}M+B>(=um%p%x{zif11G~)aB_+Sj{aOF_Z$6u^V;P&U zq+y$}f84}30&NO{-~R7im-fHe<;F?=fK8^4nHaQEV=Ka6CEEiX#o+1c=d#Wzp$Pyg CMo)AA literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/chromium_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/chromium_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..88927bd57fb0cd008e53b96cf5e46469f721940d GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|mU+53hFJ6_ zCoEtyxMuvrf1{$;rceJ*8g_8beEjIC=gjOWDNp}T4-c92R7k}6+4=eYI~7ZcIh7Ti zofa>a_?C0~+yNjc_;!hP&#RBSR5T5FS7*=IknPOc{p?)&hOL`Z0 z-H8(i4t%J;c;_cin%OmjhyQs3^aV{AZVIpgfomu)TdHhq+wO2Z;pa>_Z8kMO1dgfe h@l0Ucl(ve2LFbA8Y?D^YJ3tpRc)I$ztaD0e0sv;GUWEVv literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/copper_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/copper_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..03f745dd1c1f199f9b6707e1a0fdc091f10cbc5a GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|4tcsbhFJ6_ zCoEu_@p#qG`AN>ZWK920P8JY0I(|E5y3zF#%dCI(al&rXyaRZC)>cTTwmq4p@$bL! z=9l%;m1TJn52_meJX7n&*7o!NY8xL(2?>dR#s&rkQ{L`B=P}K@PX6Av|CPQHVb={3 zueWiDnTZ;AoO)%z@v+EYfwa?<$wj^*|6g+#8C1-EZIrXOWcI_m&*gb|0`vu+Hl0j= zXB=1azd7;s$gTe~DWM4fNfT!^ literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/duralumin_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/duralumin_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..09fe2fffd8e89ca028e1fed12899888f3bb3249e GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|ws^WYhFJ6_ zCoEvwQ1bn!|3<|&vv2=3jZR!R_V0h=X>s;W#q0CzmYoqORTe%KyC^T^)Bm5-`Tz6g zzR@i2T-a;-lkH%PQR&O1HEkONl05=FRh{Ggtq;#GmzMy7fAj5&CQQs=&YNd__{4z& zANH?UGD*?anpy47{Km${hkqtE_xK#y@!;7`Oki+!sNl$qb136v vW@bLTGkAGo&83E26HnHIoM0?x#K2I#I)1^=d33`>a$>L$o zGdc`YiV9hpJ9cR|PoFRDwkTQUny6b87mp_EQJ(YfV$*MI%ampY0_V8Ke{+BP~{Qv*|*C+quukX?)iD~?S06Ap9(gQu&X%Q~loCIG7FQS1N! literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/iron_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/iron_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..30686221b3550a12c6fcb0b90b60345fcb5292db GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|$~|2iLo9ml zUf#&tpdixnP`Pm3>}Jau4FP2j; z<9pn`+h0OU`nf?1yR`9(8JQEFF_lcO+3~w2@#Zhf9-bp@j7AREd_)--HhxPtw)(pC Q8PJ6cp00i_>zopr02Q}Y#Q*>R literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/lerasium_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/lerasium_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..ebe0d0ffba41a326ecb14f595c10d47cb1913d49 GIT binary patch literal 271 zcmV+q0r38bP)Px#$w@>(R5*=eV4w!*U(@lQDu$3_5EG2?{|zfcpt&DquIZc6`~Sh?Yh<|u4zddC z{{Q>`opM7SJihk7Z$>X=hCF@zm@-2GgHzxxA={w9;FSMQA3y$o=JMYES%q~NhA?5* zh6+}lT*@FRpvK@9q{@J92n!+2>(|a ze(fB_L(A_ltUtMlK}JA|!7WIY7;Ts!FgWFZ|C)~ffx#(oZxH1IWN>Kt9jLdc1OOIB VXY?&Z2Uq|A002ovPDHLkV1kO@b)EnK literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/nicrosil_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/nicrosil_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..742e8a3c4259dbc73a1e54a7a5b10c46aa801812 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6Sj}hFJ6_ zCoEtqDChp`zftj+o8SMFh8>(UCx?gl&dl!Vo%1jMZegR&^aT<{{~igS;+3q?Q@pJ( z!+Y9#tFEg8YHw}@IC>WgH@EGwadz;~ax*a&ddCr+9Dfto^M} z%z2aTV9chnqg-p+3=*%mam|vJk|-%Hl{}N1Yq)6U#E5W?&Mu=PDyoJtdy85hK6!YU z2L!aubCXm~u}1UDB-DKWWqNp0*8e*AjN?(E|ulDe+2tmOCpte;$)Vw#dp>W_I|CWU%DDJ+-F~ z960cy{{6q$9vA6?{|9B=*x1_s&y>8$V`vy?@bEtm5LADEpOkWFwe-mer^DA9>O^kp zade58aqxh{bQ67r-7SrcjSoLv%{H*hbO>~Ox_?m<*HcM;Nd|_cA+a|$rtixJdWON% L)z4*}Q$iB}{;+U9 literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/tin_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/tin_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..72b20690eb31955b967971089884c6fae56abf6e GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_h|ehFJ6_ zCoEv|(ANLqzfsZ7aN&PVqZ8_CU;e-SzMj2PvA?cXRz>gU|Nr)1W1O}*8cd&4T`}Fp zxhBc!zq!xbW{FQ<6x$SaT6k`3N-gbP0l+XkKII&Y@ literal 0 HcmV?d00001 diff --git a/src/hemalurgy/resources/assets/hemalurgy/textures/item/zinc_spike.png b/src/hemalurgy/resources/assets/hemalurgy/textures/item/zinc_spike.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f73a8ba80e91295e3c9f02d6a19f5b2d4a8d77 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|7J0fjhFJ6_ zCoEt)ajO59|3*cX1|NpoD8soIh(O~+Xs`5q~ z=a@gS|IJIM{0D>C-@heD9P(JBST@a#r_!>JM?c;+eTGG$95WCc-qLwmVrGY7!uex& zd)oWvC(kfR6>MJ6z~Nk1Clu4y8nOP(%^kBRHa0%A2dQ58_<2GN+oG5To(ZPGtPBhs X{(1k`R%|r_x|YGy)z4*}Q$iB}5pP}z literal 0 HcmV?d00001 From 81109169f8b8b6e200e9995232440ac522a0858d Mon Sep 17 00:00:00 2001 From: Leaf Date: Sun, 9 Mar 2025 13:14:18 +1300 Subject: [PATCH 1003/1090] [Surgebinding] updated chull model --- .../{ => entities/chull}/Chull2.bbmodel | 0 .../entities/chull/Chull3.bbmodel | 1 + .../client/render/model/ChullModel.java | 410 ++++++------------ .../surgebinding/common/entity/Chull.java | 8 +- .../textures/entity/chull/chull.png | Bin 4663 -> 6816 bytes 5 files changed, 142 insertions(+), 277 deletions(-) rename blockbench/surgebinding/{ => entities/chull}/Chull2.bbmodel (100%) create mode 100644 blockbench/surgebinding/entities/chull/Chull3.bbmodel diff --git a/blockbench/surgebinding/Chull2.bbmodel b/blockbench/surgebinding/entities/chull/Chull2.bbmodel similarity index 100% rename from blockbench/surgebinding/Chull2.bbmodel rename to blockbench/surgebinding/entities/chull/Chull2.bbmodel diff --git a/blockbench/surgebinding/entities/chull/Chull3.bbmodel b/blockbench/surgebinding/entities/chull/Chull3.bbmodel new file mode 100644 index 000000000..6fbc5dc0a --- /dev/null +++ b/blockbench/surgebinding/entities/chull/Chull3.bbmodel @@ -0,0 +1 @@ +{"meta":{"format_version":"4.10","model_format":"modded_entity","box_uv":true},"name":"Chull3","model_identifier":"","modded_entity_entity_class":"","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":128,"height":128},"elements":[{"name":"bottom","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-16,2,-16],"to":[16,18,16],"autouv":0,"color":0,"origin":[-12,-10,12],"faces":{"north":{"uv":[32,32,64,48],"texture":0},"east":{"uv":[0,32,32,48],"texture":0},"south":{"uv":[96,32,128,48],"texture":0},"west":{"uv":[64,32,96,48],"texture":0},"up":{"uv":[64,32,32,0],"texture":0},"down":{"uv":[96,0,64,32],"texture":0}},"type":"cube","uuid":"0a7c4075-bc6c-9296-d12b-6bdd4073e03f"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.8157,0,14.01806],"to":[-20.8157,10,22.01806],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[32,94],"faces":{"north":{"uv":[40,102,47,112],"texture":0},"east":{"uv":[32,102,40,112],"texture":0},"south":{"uv":[55,102,62,112],"texture":0},"west":{"uv":[47,102,55,112],"texture":0},"up":{"uv":[47,102,40,94],"texture":0},"down":{"uv":[54,94,47,102],"texture":0}},"type":"cube","uuid":"9b8a6dcb-83cf-e083-cb53-db119414cebf"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.3157,0,22.01806],"to":[-21.3157,4,25.01806],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[96,0],"faces":{"north":{"uv":[99,3,105,7],"texture":0},"east":{"uv":[96,3,99,7],"texture":0},"south":{"uv":[108,3,114,7],"texture":0},"west":{"uv":[105,3,108,7],"texture":0},"up":{"uv":[105,3,99,0],"texture":0},"down":{"uv":[111,0,105,3],"texture":0}},"type":"cube","uuid":"f99515f5-e8f6-5184-08c7-d43d8a4a36b8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.7907,-0.26471,16.21802],"to":[-21.7907,3.73529,19.21802],"autouv":0,"color":7,"rotation":[-60,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"9cb74de9-41ce-76db-297b-21b016b9fb5e"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.7907,-1.78441,19.6894],"to":[-21.7907,1.09059,22.6894],"autouv":0,"color":7,"rotation":[-30,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"48927ba4-b9a6-d6fa-1f2d-d56d753a750f"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.3157,0,25.01806],"to":[-21.3157,1.5,26.45556],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"40ade474-3dab-f41a-078a-15bb3693155a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.85696,0,25.80337],"to":[-20.85696,1.5,27.24087],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"3742d33e-fc09-8e6f-59ab-5df75b6ca11b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.33196,-2.17707,20.3695],"to":[-21.33196,0.69793,23.3695],"autouv":0,"color":7,"rotation":[-30,-45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"38d819f0-40a2-4a06-7c02-352b6433cb59"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.33196,-0.94481,16.61068],"to":[-21.33196,3.05519,19.61068],"autouv":0,"color":7,"rotation":[-60,-45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"2fd4a586-8f3f-43b9-6fe3-b3b7c8198f8a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.85696,0,22.80337],"to":[-20.85696,4,25.80337],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[96,0],"faces":{"north":{"uv":[99,3,105,7],"texture":0},"east":{"uv":[96,3,99,7],"texture":0},"south":{"uv":[108,3,114,7],"texture":0},"west":{"uv":[105,3,108,7],"texture":0},"up":{"uv":[105,3,99,0],"texture":0},"down":{"uv":[111,0,105,3],"texture":0}},"type":"cube","uuid":"3d295af3-807f-4aa2-081f-43f507e1384e"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8157,0,9.58056],"to":[-21.8157,1.5,11.01806],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[114,11],"faces":{"north":{"uv":[115.4375,12.4375,120.4375,13.9375],"texture":0},"east":{"uv":[114,12.4375,115.4375,13.9375],"texture":0},"south":{"uv":[121.875,12.4375,126.875,13.9375],"texture":0},"west":{"uv":[120.4375,12.4375,121.875,13.9375],"texture":0},"up":{"uv":[120.4375,12.4375,115.4375,11],"texture":0},"down":{"uv":[125.4375,11,120.4375,12.4375],"texture":0}},"type":"cube","uuid":"be17bca0-def0-754d-46c2-d6c2bfff924f"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.3907,-2.19105,13.45567],"to":[-22.3907,0.68395,16.45567],"autouv":0,"color":7,"rotation":[30,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[114,0],"faces":{"north":{"uv":[117,3,121,5.875],"texture":0},"east":{"uv":[114,3,117,5.875],"texture":0},"south":{"uv":[124,3,128,5.875],"texture":0},"west":{"uv":[121,3,124,5.875],"texture":0},"up":{"uv":[121,3,117,0],"texture":0},"down":{"uv":[125,0,121,3],"texture":0}},"type":"cube","uuid":"da14606c-6a3b-bc94-d2f9-1e7786b41bac"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.3907,-0.96902,17.22473],"to":[-22.3907,3.03098,20.22473],"autouv":0,"color":7,"rotation":[60,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[90,55],"faces":{"north":{"uv":[93,58,97,62],"texture":0},"east":{"uv":[90,58,93,62],"texture":0},"south":{"uv":[100,58,104,62],"texture":0},"west":{"uv":[97,58,100,62],"texture":0},"up":{"uv":[97,58,93,55],"texture":0},"down":{"uv":[101,55,97,58],"texture":0}},"type":"cube","uuid":"740bcba7-d7d3-7863-c949-a4441bc10ad7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8157,0,11.01806],"to":[-21.8157,4,14.01806],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[90,48],"faces":{"north":{"uv":[93,51,98,55],"texture":0},"east":{"uv":[90,51,93,55],"texture":0},"south":{"uv":[101,51,106,55],"texture":0},"west":{"uv":[98,51,101,55],"texture":0},"up":{"uv":[98,51,93,48],"texture":0},"down":{"uv":[103,48,98,51],"texture":0}},"type":"cube","uuid":"075d2bf5-43f0-bbb9-73ab-0dbec14dc9ba"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-28.03187,8.78109,17.30748],"to":[-21.03187,15.78109,20.30748],"autouv":0,"color":7,"rotation":[-30,-45,0],"origin":[-24.93187,12.28109,18.80748],"uv_offset":[24,112],"faces":{"north":{"uv":[27,115,34,122],"texture":0},"east":{"uv":[24,115,27,122],"texture":0},"south":{"uv":[37,115,44,122],"texture":0},"west":{"uv":[34,115,37,122],"texture":0},"up":{"uv":[34,115,27,112],"texture":0},"down":{"uv":[41,112,34,115],"texture":0}},"type":"cube","uuid":"ea40e263-7b68-4e80-7ab6-09e378600d19"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-24.8157,10,14.01806],"to":[-20.8157,16.0625,22.01806],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[92,107],"faces":{"north":{"uv":[100,115,104,121.0625],"texture":0},"east":{"uv":[92,115,100,121.0625],"texture":0},"south":{"uv":[112,115,116,121.0625],"texture":0},"west":{"uv":[104,115,112,121.0625],"texture":0},"up":{"uv":[104,115,100,107],"texture":0},"down":{"uv":[108,107,104,115],"texture":0}},"type":"cube","uuid":"6c99e89c-2d40-3f0b-8025-c55b1db532f9"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.97334,11.17422,16.76806],"to":[-20.97334,14.17422,19.76806],"autouv":0,"color":0,"rotation":[-37.45372,27.03402,-59.31794],"origin":[-23.44367,6.89062,18.42469],"uv_offset":[105,60],"faces":{"north":{"uv":[108,63,115,66],"texture":0},"east":{"uv":[105,63,108,66],"texture":0},"south":{"uv":[118,63,125,66],"texture":0},"west":{"uv":[115,63,118,66],"texture":0},"up":{"uv":[115,63,108,60],"texture":0},"down":{"uv":[122,60,115,63],"texture":0}},"type":"cube","uuid":"381793a8-1302-83ce-f5f4-df62b06ab4d0"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-21.18709,7.75119,8.56095],"to":[-13.18709,11.75119,12.56095],"autouv":0,"color":0,"rotation":[0,45,0],"origin":[-15.44367,8.89063,11.42469],"uv_offset":[0,112],"faces":{"north":{"uv":[4,116,12,120],"texture":0},"east":{"uv":[0,116,4,120],"texture":0},"south":{"uv":[16,116,24,120],"texture":0},"west":{"uv":[12,116,16,120],"texture":0},"up":{"uv":[12,116,4,112],"texture":0},"down":{"uv":[20,112,12,116],"texture":0}},"type":"cube","uuid":"588d15a8-ede4-0109-a5d5-032a4bcf33ab"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-22.76479,7.75119,-1.75],"to":[-15.76479,11.75119,2.25],"autouv":0,"color":0,"origin":[-27.49509,6.89062,0],"uv_offset":[105,52],"faces":{"north":{"uv":[109,56,116,60],"texture":0},"east":{"uv":[105,56,109,60],"texture":0},"south":{"uv":[120,56,127,60],"texture":0},"west":{"uv":[116,56,120,60],"texture":0},"up":{"uv":[116,56,109,52],"texture":0},"down":{"uv":[123,52,116,56],"texture":0}},"type":"cube","uuid":"abe75abd-c467-aa01-e526-3dec0db4ba79"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-32.11017,11.07243,-1.25],"to":[-25.11017,14.07243,1.75],"autouv":0,"color":0,"rotation":[0,0,-50],"origin":[-27.49509,6.89062,0],"uv_offset":[105,60],"faces":{"north":{"uv":[108,63,115,66],"texture":0},"east":{"uv":[105,63,108,66],"texture":0},"south":{"uv":[118,63,125,66],"texture":0},"west":{"uv":[115,63,118,66],"texture":0},"up":{"uv":[115,63,108,60],"texture":0},"down":{"uv":[122,60,115,63],"texture":0}},"type":"cube","uuid":"003625fd-4fed-5642-0498-c44c318ebc69"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-29,10,-4],"to":[-25,16.0625,4],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[92,107],"faces":{"north":{"uv":[100,115,104,121.0625],"texture":0},"east":{"uv":[92,115,100,121.0625],"texture":0},"south":{"uv":[112,115,116,121.0625],"texture":0},"west":{"uv":[104,115,112,121.0625],"texture":0},"up":{"uv":[104,115,100,107],"texture":0},"down":{"uv":[108,107,104,115],"texture":0}},"type":"cube","uuid":"dd7508aa-eb1a-2f10-8f61-f2a516e50d20"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31,7.33097,2.45605],"to":[-24,14.33097,5.45605],"autouv":0,"color":7,"rotation":[0,-90,-30],"origin":[-27.49509,6.89062,0],"uv_offset":[24,112],"faces":{"north":{"uv":[27,115,34,122],"texture":0},"east":{"uv":[24,115,27,122],"texture":0},"south":{"uv":[37,115,44,122],"texture":0},"west":{"uv":[34,115,37,122],"texture":0},"up":{"uv":[34,115,27,112],"texture":0},"down":{"uv":[41,112,34,115],"texture":0}},"type":"cube","uuid":"55843084-2fc1-5f6f-ec34-ce837adccd19"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31,0,-7],"to":[-26,4,-4],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[90,48],"faces":{"north":{"uv":[93,51,98,55],"texture":0},"east":{"uv":[90,51,93,55],"texture":0},"south":{"uv":[101,51,106,55],"texture":0},"west":{"uv":[98,51,101,55],"texture":0},"up":{"uv":[98,51,93,48],"texture":0},"down":{"uv":[103,48,98,51],"texture":0}},"type":"cube","uuid":"cb6c5b58-73ce-d6e1-8758-56a3733b2296"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-30.475,-0.61687,-0.99665],"to":[-26.475,3.38313,2.00335],"autouv":0,"color":7,"rotation":[60,0,0],"origin":[-27.44509,6.89062,0],"uv_offset":[90,55],"faces":{"north":{"uv":[93,58,97,62],"texture":0},"east":{"uv":[90,58,93,62],"texture":0},"south":{"uv":[100,58,104,62],"texture":0},"west":{"uv":[97,58,100,62],"texture":0},"up":{"uv":[97,58,93,55],"texture":0},"down":{"uv":[101,55,97,58],"texture":0}},"type":"cube","uuid":"5a839f88-1c6d-77c4-e0fb-44066ec52ba7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31,0,-8.4375],"to":[-26,1.5,-7],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[114,11],"faces":{"north":{"uv":[115.4375,12.4375,120.4375,13.9375],"texture":0},"east":{"uv":[114,12.4375,115.4375,13.9375],"texture":0},"south":{"uv":[121.875,12.4375,126.875,13.9375],"texture":0},"west":{"uv":[120.4375,12.4375,121.875,13.9375],"texture":0},"up":{"uv":[120.4375,12.4375,115.4375,11],"texture":0},"down":{"uv":[125.4375,11,120.4375,12.4375],"texture":0}},"type":"cube","uuid":"f462ee27-a868-12b3-42fb-14d711f5baa0"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-30.50174,0,4.51156],"to":[-24.50174,4,7.51156],"autouv":0,"color":7,"rotation":[0,-90,0],"origin":[-27.49509,6.89062,0],"uv_offset":[96,0],"faces":{"north":{"uv":[99,3,105,7],"texture":0},"east":{"uv":[96,3,99,7],"texture":0},"south":{"uv":[108,3,114,7],"texture":0},"west":{"uv":[105,3,108,7],"texture":0},"up":{"uv":[105,3,99,0],"texture":0},"down":{"uv":[111,0,105,3],"texture":0}},"type":"cube","uuid":"e069d02d-3a4b-077c-8515-448ce5cdf5b6"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-29.97674,-1.05989,-1.74758],"to":[-24.97674,2.94011,1.25242],"autouv":0,"color":7,"rotation":[0,-90,-60],"origin":[-27.49509,6.89062,0],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"74b7b771-b07c-0ca6-93a3-35a824990932"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-30.50174,0,7.51156],"to":[-24.50174,1.5,8.94906],"autouv":0,"color":7,"rotation":[0,-90,0],"origin":[-27.49509,6.89062,0],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"6648038f-3ea8-6c09-f78b-8dbd69365df4"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31.5,0,7],"to":[-25.5,1.5,8.4375],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"7070fc74-1f5a-2a86-da0c-c2bbe15d35f7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31,-1.98773,1.61687],"to":[-26,0.88727,4.61687],"autouv":0,"color":7,"rotation":[-30,0,0],"origin":[-27.49509,6.89062,0],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"16ab778a-23ea-60a9-3f7a-e599fe2e71e8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31,-0.61687,-2.00335],"to":[-26,3.38313,0.99665],"autouv":0,"color":7,"rotation":[-60,0,0],"origin":[-27.49509,6.89062,0],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"43c05692-80a7-3089-f02c-dc79e4a69873"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-31.5,0,4],"to":[-25.5,4,7],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[96,0],"faces":{"north":{"uv":[99,3,105,7],"texture":0},"east":{"uv":[96,3,99,7],"texture":0},"south":{"uv":[108,3,114,7],"texture":0},"west":{"uv":[105,3,108,7],"texture":0},"up":{"uv":[105,3,99,0],"texture":0},"down":{"uv":[111,0,105,3],"texture":0}},"type":"cube","uuid":"add38799-beb0-be3c-040e-fa3e22cff72b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-32,0,-4],"to":[-25,10,4],"autouv":0,"color":7,"origin":[-27.49509,6.89062,0],"uv_offset":[32,94],"faces":{"north":{"uv":[40,102,47,112],"texture":0},"east":{"uv":[32,102,40,112],"texture":0},"south":{"uv":[55,102,62,112],"texture":0},"west":{"uv":[47,102,55,112],"texture":0},"up":{"uv":[47,102,40,94],"texture":0},"down":{"uv":[54,94,47,102],"texture":0}},"type":"cube","uuid":"abd20661-eea6-efa9-8d9a-07625075c582"},{"name":"top","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-15,17.75,-15],"to":[15,33.75,15],"autouv":0,"color":0,"origin":[-12,5.75,13],"uv_offset":[0,48],"faces":{"north":{"uv":[30,78,60,94],"texture":0},"east":{"uv":[0,78,30,94],"texture":0},"south":{"uv":[90,78,120,94],"texture":0},"west":{"uv":[60,78,90,94],"texture":0},"up":{"uv":[60,78,30,48],"texture":0},"down":{"uv":[90,48,60,78],"texture":0}},"type":"cube","uuid":"90a77059-fca7-422d-9f41-daecb93b7bf0"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-18.58049,7.75119,-20.26806],"to":[-10.58049,11.75119,-16.26806],"autouv":0,"color":0,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[0,112],"faces":{"north":{"uv":[4,116,12,120],"texture":0},"east":{"uv":[0,116,4,120],"texture":0},"south":{"uv":[16,116,24,120],"texture":0},"west":{"uv":[12,116,16,120],"texture":0},"up":{"uv":[12,116,4,112],"texture":0},"down":{"uv":[20,112,12,116],"texture":0}},"type":"cube","uuid":"e84a389b-3a84-4a4f-82a0-a899a18fedfa"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.97334,11.17422,-19.76806],"to":[-20.97334,14.17422,-16.76806],"autouv":0,"color":0,"rotation":[37.45372,-27.03402,-59.31794],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[105,60],"faces":{"north":{"uv":[108,63,115,66],"texture":0},"east":{"uv":[105,63,108,66],"texture":0},"south":{"uv":[118,63,125,66],"texture":0},"west":{"uv":[115,63,118,66],"texture":0},"up":{"uv":[115,63,108,60],"texture":0},"down":{"uv":[122,60,115,63],"texture":0}},"type":"cube","uuid":"d44324cb-bb7c-0f9a-3976-050344d92f59"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-24.8157,10,-22.01806],"to":[-20.8157,16.0625,-14.01806],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[92,107],"faces":{"north":{"uv":[100,115,104,121.0625],"texture":0},"east":{"uv":[92,115,100,121.0625],"texture":0},"south":{"uv":[112,115,116,121.0625],"texture":0},"west":{"uv":[104,115,112,121.0625],"texture":0},"up":{"uv":[104,115,100,107],"texture":0},"down":{"uv":[108,107,104,115],"texture":0}},"type":"cube","uuid":"f160b8e4-c3f2-6fe2-4292-f3702d4f4fd7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-28.1417,8.78109,-20.57265],"to":[-21.1417,15.78109,-17.57265],"autouv":0,"color":7,"rotation":[150,-45,180],"origin":[-24.6667,12.28109,-19.07265],"uv_offset":[24,112],"faces":{"north":{"uv":[27,115,34,122],"texture":0},"east":{"uv":[24,115,27,122],"texture":0},"south":{"uv":[37,115,44,122],"texture":0},"west":{"uv":[34,115,37,122],"texture":0},"up":{"uv":[34,115,27,112],"texture":0},"down":{"uv":[41,112,34,115],"texture":0}},"type":"cube","uuid":"6ee67f4c-f77b-8a27-b4a5-a862e11388f2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8157,0,-14.01806],"to":[-21.8157,4,-11.01806],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[90,63],"faces":{"north":{"uv":[93,66,98,70],"texture":0},"east":{"uv":[90,66,93,70],"texture":0},"south":{"uv":[101,66,106,70],"texture":0},"west":{"uv":[98,66,101,70],"texture":0},"up":{"uv":[98,66,93,63],"texture":0},"down":{"uv":[103,63,98,66],"texture":0}},"type":"cube","uuid":"78d94604-e7f2-c0f0-6f84-589980049c1f"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.2907,-0.96902,-20.22473],"to":[-22.2907,3.03098,-17.22473],"autouv":0,"color":7,"rotation":[-60,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[90,55],"faces":{"north":{"uv":[93,58,97,62],"texture":0},"east":{"uv":[90,58,93,62],"texture":0},"south":{"uv":[100,58,104,62],"texture":0},"west":{"uv":[97,58,100,62],"texture":0},"up":{"uv":[97,58,93,55],"texture":0},"down":{"uv":[101,55,97,58],"texture":0}},"type":"cube","uuid":"2ca47203-6f40-a856-51cd-002fd9eca81a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.2907,-2.19105,-16.45567],"to":[-22.2907,0.68395,-13.45567],"autouv":0,"color":7,"rotation":[-30,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[114,0],"faces":{"north":{"uv":[117,3,121,5.875],"texture":0},"east":{"uv":[114,3,117,5.875],"texture":0},"south":{"uv":[124,3,128,5.875],"texture":0},"west":{"uv":[121,3,124,5.875],"texture":0},"up":{"uv":[121,3,117,0],"texture":0},"down":{"uv":[125,0,121,3],"texture":0}},"type":"cube","uuid":"afa6125b-ac38-e38b-0555-d1156fba930c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8157,0,-11.01806],"to":[-21.8157,1.5,-9.58056],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[114,11],"faces":{"north":{"uv":[115.4375,12.4375,120.4375,13.9375],"texture":0},"east":{"uv":[114,12.4375,115.4375,13.9375],"texture":0},"south":{"uv":[121.875,12.4375,126.875,13.9375],"texture":0},"west":{"uv":[120.4375,12.4375,121.875,13.9375],"texture":0},"up":{"uv":[120.4375,12.4375,115.4375,11],"texture":0},"down":{"uv":[125.4375,11,120.4375,12.4375],"texture":0}},"type":"cube","uuid":"62f38a00-33a4-1058-37d5-6c5082c0f60b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.85696,0,-25.80337],"to":[-20.85696,4,-22.80337],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[90,71],"faces":{"north":{"uv":[93,74,99,78],"texture":0},"east":{"uv":[90,74,93,78],"texture":0},"south":{"uv":[102,74,108,78],"texture":0},"west":{"uv":[99,74,102,78],"texture":0},"up":{"uv":[99,74,93,71],"texture":0},"down":{"uv":[105,71,99,74],"texture":0}},"type":"cube","uuid":"9d8d39fd-fac5-27c7-e4fb-a8703b04818b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.38196,-0.94481,-19.61068],"to":[-21.38196,3.05519,-16.61068],"autouv":0,"color":7,"rotation":[60,45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"f3fe2359-ae7a-63d2-2dbe-c9182e119b80"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.38196,-2.17707,-23.3695],"to":[-21.38196,0.69793,-20.3695],"autouv":0,"color":7,"rotation":[30,45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"a280e3fa-bd4d-55c2-16fb-d0f740f6367a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.85696,0,-27.24087],"to":[-20.85696,1.5,-25.80337],"autouv":0,"color":7,"rotation":[0,45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"2d0c962d-63da-b81c-a251-7c5fb934d084"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.3157,0,-26.45556],"to":[-21.3157,1.5,-25.01806],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[115.4375,6.4375,121.4375,7.9375],"texture":0},"east":{"uv":[114,6.4375,115.4375,7.9375],"texture":0},"south":{"uv":[122.875,6.4375,128.875,7.9375],"texture":0},"west":{"uv":[121.4375,6.4375,122.875,7.9375],"texture":0},"up":{"uv":[121.4375,6.4375,115.4375,5],"texture":0},"down":{"uv":[127.4375,5,121.4375,6.4375],"texture":0}},"type":"cube","uuid":"52828342-9322-2b13-f388-a7e51f534f71"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8407,-1.78441,-22.6894],"to":[-21.8407,1.09059,-19.6894],"autouv":0,"color":7,"rotation":[30,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"9985386e-8766-96c5-2553-f0b780dac158"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-26.8407,-0.26471,-19.21802],"to":[-21.8407,3.73529,-16.21802],"autouv":0,"color":7,"rotation":[60,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[3,123,8,127],"texture":0},"east":{"uv":[0,123,3,127],"texture":0},"south":{"uv":[11,123,16,127],"texture":0},"west":{"uv":[8,123,11,127],"texture":0},"up":{"uv":[8,123,3,120],"texture":0},"down":{"uv":[13,120,8,123],"texture":0}},"type":"cube","uuid":"dab7d550-b9b3-3786-551b-c38b86b96a1c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-23.45873,0,-24.14286],"to":[-17.45873,4,-21.14286],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-20.45873,2,-22.64286],"uv_offset":[90,71],"faces":{"north":{"uv":[93,74,99,78],"texture":0},"east":{"uv":[90,74,93,78],"texture":0},"south":{"uv":[102,74,108,78],"texture":0},"west":{"uv":[99,74,102,78],"texture":0},"up":{"uv":[99,74,93,71],"texture":0},"down":{"uv":[105,71,99,74],"texture":0}},"type":"cube","uuid":"550d8d01-c08d-264d-06e8-778748c85579"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-27.8157,0,-22.01806],"to":[-20.8157,10,-14.01806],"autouv":0,"color":7,"rotation":[0,-45,0],"origin":[-23.44367,6.89062,-18.42469],"uv_offset":[32,94],"faces":{"north":{"uv":[40,102,47,112],"texture":0},"east":{"uv":[32,102,40,112],"texture":0},"south":{"uv":[55,102,62,112],"texture":0},"west":{"uv":[47,102,55,112],"texture":0},"up":{"uv":[47,102,40,94],"texture":0},"down":{"uv":[54,94,47,102],"texture":0}},"type":"cube","uuid":"c36fc078-a7bc-5201-d453-9b9d5c95a309"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.8157,0,-22.01806],"to":[27.8157,10,-14.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[32,94],"faces":{"north":{"uv":[47,102,40,112],"texture":0},"east":{"uv":[55,102,47,112],"texture":0},"south":{"uv":[62,102,55,112],"texture":0},"west":{"uv":[40,102,32,112],"texture":0},"up":{"uv":[40,102,47,94],"texture":0},"down":{"uv":[47,94,54,102],"texture":0}},"type":"cube","uuid":"91f58307-85b0-2d5c-5b83-77c97752ae5a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.3157,0,-25.01806],"to":[27.3157,4,-22.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[90,71],"faces":{"north":{"uv":[99,74,93,78],"texture":0},"east":{"uv":[102,74,99,78],"texture":0},"south":{"uv":[108,74,102,78],"texture":0},"west":{"uv":[93,74,90,78],"texture":0},"up":{"uv":[93,74,99,71],"texture":0},"down":{"uv":[99,71,105,74],"texture":0}},"type":"cube","uuid":"3cc6a566-e732-80b9-f71c-c3017bb48932"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.7407,-0.26471,-19.21802],"to":[26.7407,3.73529,-16.21802],"autouv":0,"color":7,"mirror_uv":true,"rotation":[60,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"126949d5-4740-c3c0-d3af-9d3e7b369e65"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.7407,-1.78441,-22.6894],"to":[26.7407,1.09059,-19.6894],"autouv":0,"color":7,"mirror_uv":true,"rotation":[30,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"2f2d9c83-c5a6-6323-28dd-ac1d354299db"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.3157,0,-26.45556],"to":[27.3157,1.5,-25.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"8fbb2de2-3bc5-8be7-994b-501acccbbda7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.85696,0,-27.24087],"to":[26.85696,1.5,-25.80337],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"04d66ae8-8e89-92e3-a917-f3e9b6b263f0"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.38196,-2.17707,-23.3695],"to":[26.38196,0.69793,-20.3695],"autouv":0,"color":7,"mirror_uv":true,"rotation":[30,-45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"7c48cce6-3ce9-5a15-6e0e-0fabe9ed15d8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.38196,-0.94481,-19.61068],"to":[26.38196,3.05519,-16.61068],"autouv":0,"color":7,"mirror_uv":true,"rotation":[60,-45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"1347b4da-4115-06cf-1ac6-376fdee5e469"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.85696,0,-25.80337],"to":[26.85696,4,-22.80337],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[90,71],"faces":{"north":{"uv":[99,74,93,78],"texture":0},"east":{"uv":[102,74,99,78],"texture":0},"south":{"uv":[108,74,102,78],"texture":0},"west":{"uv":[93,74,90,78],"texture":0},"up":{"uv":[93,74,99,71],"texture":0},"down":{"uv":[99,71,105,74],"texture":0}},"type":"cube","uuid":"5e854c8a-787e-3415-5905-0ccf83662cf8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8157,0,-11.01806],"to":[26.8157,1.5,-9.58056],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[114,11],"faces":{"north":{"uv":[120.4375,12.4375,115.4375,13.9375],"texture":0},"east":{"uv":[121.875,12.4375,120.4375,13.9375],"texture":0},"south":{"uv":[126.875,12.4375,121.875,13.9375],"texture":0},"west":{"uv":[115.4375,12.4375,114,13.9375],"texture":0},"up":{"uv":[115.4375,12.4375,120.4375,11],"texture":0},"down":{"uv":[120.4375,11,125.4375,12.4375],"texture":0}},"type":"cube","uuid":"132d934a-c935-accf-5494-08fff85c02e6"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[22.3407,-2.19105,-16.45567],"to":[26.3407,0.68395,-13.45567],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-30,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[114,0],"faces":{"north":{"uv":[121,3,117,5.875],"texture":0},"east":{"uv":[124,3,121,5.875],"texture":0},"south":{"uv":[128,3,124,5.875],"texture":0},"west":{"uv":[117,3,114,5.875],"texture":0},"up":{"uv":[117,3,121,0],"texture":0},"down":{"uv":[121,0,125,3],"texture":0}},"type":"cube","uuid":"996a94af-a181-df6c-7cea-fa5aede635bd"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[22.3407,-0.96902,-20.22473],"to":[26.3407,3.03098,-17.22473],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-60,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[90,55],"faces":{"north":{"uv":[97,58,93,62],"texture":0},"east":{"uv":[100,58,97,62],"texture":0},"south":{"uv":[104,58,100,62],"texture":0},"west":{"uv":[93,58,90,62],"texture":0},"up":{"uv":[93,58,97,55],"texture":0},"down":{"uv":[97,55,101,58],"texture":0}},"type":"cube","uuid":"eca7e05d-e830-9066-7d32-9780949eea6b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8157,0,-14.01806],"to":[26.8157,4,-11.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[90,63],"faces":{"north":{"uv":[98,66,93,70],"texture":0},"east":{"uv":[101,66,98,70],"texture":0},"south":{"uv":[106,66,101,70],"texture":0},"west":{"uv":[93,66,90,70],"texture":0},"up":{"uv":[93,66,98,63],"texture":0},"down":{"uv":[98,63,103,66],"texture":0}},"type":"cube","uuid":"17c1d72a-be1f-9168-5930-ad91a60650ce"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.1917,8.78109,-20.57265],"to":[28.1917,15.78109,-17.57265],"autouv":0,"color":7,"mirror_uv":true,"rotation":[150,45,-180],"origin":[24.6667,12.28109,-19.07265],"uv_offset":[24,112],"faces":{"north":{"uv":[34,115,27,122],"texture":0},"east":{"uv":[37,115,34,122],"texture":0},"south":{"uv":[44,115,37,122],"texture":0},"west":{"uv":[27,115,24,122],"texture":0},"up":{"uv":[27,115,34,112],"texture":0},"down":{"uv":[34,112,41,115],"texture":0}},"type":"cube","uuid":"67db8cc6-8191-11ea-3e2a-9f716952691a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.8157,10,-22.01806],"to":[24.8157,16.0625,-14.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[92,107],"faces":{"north":{"uv":[104,115,100,121.0625],"texture":0},"east":{"uv":[112,115,104,121.0625],"texture":0},"south":{"uv":[116,115,112,121.0625],"texture":0},"west":{"uv":[100,115,92,121.0625],"texture":0},"up":{"uv":[100,115,104,107],"texture":0},"down":{"uv":[104,107,108,115],"texture":0}},"type":"cube","uuid":"fc939091-b300-7b64-0c59-8186c6ebe91e"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.97334,11.17422,-19.76806],"to":[27.97334,14.17422,-16.76806],"autouv":0,"color":0,"mirror_uv":true,"rotation":[37.45372,27.03402,59.31794],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[105,60],"faces":{"north":{"uv":[115,63,108,66],"texture":0},"east":{"uv":[118,63,115,66],"texture":0},"south":{"uv":[125,63,118,66],"texture":0},"west":{"uv":[108,63,105,66],"texture":0},"up":{"uv":[108,63,115,60],"texture":0},"down":{"uv":[115,60,122,63],"texture":0}},"type":"cube","uuid":"31e82821-4989-3174-b116-5f11b609d07b"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[10.58049,7.75119,-20.26806],"to":[18.58049,11.75119,-16.26806],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,-18.42469],"uv_offset":[0,112],"faces":{"north":{"uv":[12,116,4,120],"texture":0},"east":{"uv":[16,116,12,120],"texture":0},"south":{"uv":[24,116,16,120],"texture":0},"west":{"uv":[4,116,0,120],"texture":0},"up":{"uv":[4,116,12,112],"texture":0},"down":{"uv":[12,112,20,116],"texture":0}},"type":"cube","uuid":"de69bbf1-8152-7f8b-12ea-b3bc1552fc65"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25,0,-4],"to":[32,10,4],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[32,94],"faces":{"north":{"uv":[47,102,40,112],"texture":0},"east":{"uv":[55,102,47,112],"texture":0},"south":{"uv":[62,102,55,112],"texture":0},"west":{"uv":[40,102,32,112],"texture":0},"up":{"uv":[40,102,47,94],"texture":0},"down":{"uv":[47,94,54,102],"texture":0}},"type":"cube","uuid":"9dbc00ee-dd55-5413-c322-f9b436243ff1"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.5,0,4],"to":[31.5,4,7],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[96,0],"faces":{"north":{"uv":[105,3,99,7],"texture":0},"east":{"uv":[108,3,105,7],"texture":0},"south":{"uv":[114,3,108,7],"texture":0},"west":{"uv":[99,3,96,7],"texture":0},"up":{"uv":[99,3,105,0],"texture":0},"down":{"uv":[105,0,111,3],"texture":0}},"type":"cube","uuid":"56727859-96ee-81d1-1a83-ae71755092b9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.925,-0.61687,-2.00335],"to":[30.925,3.38313,0.99665],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-60,0,0],"origin":[27.49509,6.89062,0],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"95a910b8-3832-6e38-b9c4-7d3c3543d2b3"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[26.025,-1.98773,1.61687],"to":[31.025,0.88727,4.61687],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-30,0,0],"origin":[27.49509,6.89062,0],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"6ea50fca-6d7b-8d72-e106-cd8861417155"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.5,0,7],"to":[31.5,1.5,8.4375],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"1f0db8da-4050-08d7-9669-2f1b9f7187f8"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[24.50174,0,7.51156],"to":[30.50174,1.5,8.94906],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,90,0],"origin":[27.49509,6.89062,0],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"e40231c8-bd8a-65e5-ea45-808f38477c61"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.02674,-2.24351,2.05989],"to":[30.02674,0.63149,5.05989],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,90,30],"origin":[27.49509,6.89062,0],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"d9ac01dd-636d-8a11-e80f-feaa0b5e9fb2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.02674,-1.05989,-1.74758],"to":[30.02674,2.94011,1.25242],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,90,60],"origin":[27.49509,6.89062,0],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"23f49dc4-59cf-e3d3-2cc4-bce4ec2f94b2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[24.50174,0,4.51156],"to":[30.50174,4,7.51156],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,90,0],"origin":[27.49509,6.89062,0],"uv_offset":[96,0],"faces":{"north":{"uv":[105,3,99,7],"texture":0},"east":{"uv":[108,3,105,7],"texture":0},"south":{"uv":[114,3,108,7],"texture":0},"west":{"uv":[99,3,96,7],"texture":0},"up":{"uv":[99,3,105,0],"texture":0},"down":{"uv":[105,0,111,3],"texture":0}},"type":"cube","uuid":"f3fb1dee-ca27-b7cd-b0ee-a544579ec618"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[26,0,-8.4375],"to":[31,1.5,-7],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[114,11],"faces":{"north":{"uv":[120.4375,12.4375,115.4375,13.9375],"texture":0},"east":{"uv":[121.875,12.4375,120.4375,13.9375],"texture":0},"south":{"uv":[126.875,12.4375,121.875,13.9375],"texture":0},"west":{"uv":[115.4375,12.4375,114,13.9375],"texture":0},"up":{"uv":[115.4375,12.4375,120.4375,11],"texture":0},"down":{"uv":[120.4375,11,125.4375,12.4375],"texture":0}},"type":"cube","uuid":"a312594e-5bf6-4dac-fa3e-f893f238ac1c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[26.525,-1.98773,-4.61687],"to":[30.525,0.88727,-1.61687],"autouv":0,"color":7,"mirror_uv":true,"rotation":[30,0,0],"origin":[27.49509,6.89062,0],"uv_offset":[114,0],"faces":{"north":{"uv":[121,3,117,5.875],"texture":0},"east":{"uv":[124,3,121,5.875],"texture":0},"south":{"uv":[128,3,124,5.875],"texture":0},"west":{"uv":[117,3,114,5.875],"texture":0},"up":{"uv":[117,3,121,0],"texture":0},"down":{"uv":[121,0,125,3],"texture":0}},"type":"cube","uuid":"be420179-b5f2-805d-e778-8973c6172860"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[26.525,-0.61687,-0.99665],"to":[30.525,3.38313,2.00335],"autouv":0,"color":7,"mirror_uv":true,"rotation":[60,0,0],"origin":[27.49509,6.89062,0],"uv_offset":[90,55],"faces":{"north":{"uv":[97,58,93,62],"texture":0},"east":{"uv":[100,58,97,62],"texture":0},"south":{"uv":[104,58,100,62],"texture":0},"west":{"uv":[93,58,90,62],"texture":0},"up":{"uv":[93,58,97,55],"texture":0},"down":{"uv":[97,55,101,58],"texture":0}},"type":"cube","uuid":"32083e49-6bdc-cb48-3a9e-4c1363440861"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[26,0,-7],"to":[31,4,-4],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[90,48],"faces":{"north":{"uv":[98,51,93,55],"texture":0},"east":{"uv":[101,51,98,55],"texture":0},"south":{"uv":[106,51,101,55],"texture":0},"west":{"uv":[93,51,90,55],"texture":0},"up":{"uv":[93,51,98,48],"texture":0},"down":{"uv":[98,48,103,51],"texture":0}},"type":"cube","uuid":"e878671b-c703-c7cc-22ca-7403ebf9146c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[24,7.33097,2.45605],"to":[31,14.33097,5.45605],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,90,30],"origin":[27.49509,6.89062,0],"uv_offset":[24,112],"faces":{"north":{"uv":[34,115,27,122],"texture":0},"east":{"uv":[37,115,34,122],"texture":0},"south":{"uv":[44,115,37,122],"texture":0},"west":{"uv":[27,115,24,122],"texture":0},"up":{"uv":[27,115,34,112],"texture":0},"down":{"uv":[34,112,41,115],"texture":0}},"type":"cube","uuid":"60c97526-b50b-6b87-e3d7-df9ff1446159"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25,10,-4],"to":[29,16.0625,4],"autouv":0,"color":7,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[92,107],"faces":{"north":{"uv":[104,115,100,121.0625],"texture":0},"east":{"uv":[112,115,104,121.0625],"texture":0},"south":{"uv":[116,115,112,121.0625],"texture":0},"west":{"uv":[100,115,92,121.0625],"texture":0},"up":{"uv":[100,115,104,107],"texture":0},"down":{"uv":[104,107,108,115],"texture":0}},"type":"cube","uuid":"2856fc05-81df-fa22-0a6c-9a273039af7b"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[25.11017,11.07243,-1.25],"to":[32.11017,14.07243,1.75],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,0,50],"origin":[27.49509,6.89062,0],"uv_offset":[105,60],"faces":{"north":{"uv":[115,63,108,66],"texture":0},"east":{"uv":[118,63,115,66],"texture":0},"south":{"uv":[125,63,118,66],"texture":0},"west":{"uv":[108,63,105,66],"texture":0},"up":{"uv":[108,63,115,60],"texture":0},"down":{"uv":[115,60,122,63],"texture":0}},"type":"cube","uuid":"4130f3c4-417e-f29d-0b0e-9330eeb5512c"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[15.76479,7.75119,-1.75],"to":[22.76479,11.75119,2.25],"autouv":0,"color":0,"mirror_uv":true,"origin":[27.49509,6.89062,0],"uv_offset":[105,52],"faces":{"north":{"uv":[116,56,109,60],"texture":0},"east":{"uv":[120,56,116,60],"texture":0},"south":{"uv":[127,56,120,60],"texture":0},"west":{"uv":[109,56,105,60],"texture":0},"up":{"uv":[109,56,116,52],"texture":0},"down":{"uv":[116,52,123,56],"texture":0}},"type":"cube","uuid":"b0506837-a0c1-be82-8dee-ff3c5b3146c7"},{"name":"leg1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[10.58049,7.75119,16.26806],"to":[18.58049,11.75119,20.26806],"autouv":0,"color":0,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[0,112],"faces":{"north":{"uv":[12,116,4,120],"texture":0},"east":{"uv":[16,116,12,120],"texture":0},"south":{"uv":[24,116,16,120],"texture":0},"west":{"uv":[4,116,0,120],"texture":0},"up":{"uv":[4,116,12,112],"texture":0},"down":{"uv":[12,112,20,116],"texture":0}},"type":"cube","uuid":"fdc04b5b-5ffa-10e6-cb69-b36e9bd10bc0"},{"name":"leg2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.97334,11.17422,16.76806],"to":[27.97334,14.17422,19.76806],"autouv":0,"color":0,"mirror_uv":true,"rotation":[-37.45372,-27.03402,59.31794],"origin":[23.44367,6.89062,18.42469],"uv_offset":[105,60],"faces":{"north":{"uv":[115,63,108,66],"texture":0},"east":{"uv":[118,63,115,66],"texture":0},"south":{"uv":[125,63,118,66],"texture":0},"west":{"uv":[108,63,105,66],"texture":0},"up":{"uv":[108,63,115,60],"texture":0},"down":{"uv":[115,60,122,63],"texture":0}},"type":"cube","uuid":"2fada0c5-27d5-d618-64cc-00cfa24a212c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.8157,10,14.01806],"to":[24.8157,16.0625,22.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[92,107],"faces":{"north":{"uv":[104,115,100,121.0625],"texture":0},"east":{"uv":[112,115,104,121.0625],"texture":0},"south":{"uv":[116,115,112,121.0625],"texture":0},"west":{"uv":[100,115,92,121.0625],"texture":0},"up":{"uv":[100,115,104,107],"texture":0},"down":{"uv":[104,107,108,115],"texture":0}},"type":"cube","uuid":"36e116b3-996d-1c54-d868-137870a882a7"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.32531,7.39741,20.76567],"to":[27.32531,14.39741,23.76567],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-30,45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[24,112],"faces":{"north":{"uv":[34,115,27,122],"texture":0},"east":{"uv":[37,115,34,122],"texture":0},"south":{"uv":[44,115,37,122],"texture":0},"west":{"uv":[27,115,24,122],"texture":0},"up":{"uv":[27,115,34,112],"texture":0},"down":{"uv":[34,112,41,115],"texture":0}},"type":"cube","uuid":"3a62ca46-c28b-b8e8-64ec-fabbbd48e05a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8157,0,11.01806],"to":[26.8157,4,14.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[90,48],"faces":{"north":{"uv":[98,51,93,55],"texture":0},"east":{"uv":[101,51,98,55],"texture":0},"south":{"uv":[106,51,101,55],"texture":0},"west":{"uv":[93,51,90,55],"texture":0},"up":{"uv":[93,51,98,48],"texture":0},"down":{"uv":[98,48,103,51],"texture":0}},"type":"cube","uuid":"c4cc3457-6e45-6449-5a40-590d93a96285"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[22.2907,-0.96902,17.22473],"to":[26.2907,3.03098,20.22473],"autouv":0,"color":7,"mirror_uv":true,"rotation":[60,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[90,55],"faces":{"north":{"uv":[97,58,93,62],"texture":0},"east":{"uv":[100,58,97,62],"texture":0},"south":{"uv":[104,58,100,62],"texture":0},"west":{"uv":[93,58,90,62],"texture":0},"up":{"uv":[93,58,97,55],"texture":0},"down":{"uv":[97,55,101,58],"texture":0}},"type":"cube","uuid":"befdff54-a686-5ac0-fc46-f2ef6e408763"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[22.2907,-2.19105,13.45567],"to":[26.2907,0.68395,16.45567],"autouv":0,"color":7,"mirror_uv":true,"rotation":[30,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[114,0],"faces":{"north":{"uv":[121,3,117,5.875],"texture":0},"east":{"uv":[124,3,121,5.875],"texture":0},"south":{"uv":[128,3,124,5.875],"texture":0},"west":{"uv":[117,3,114,5.875],"texture":0},"up":{"uv":[117,3,121,0],"texture":0},"down":{"uv":[121,0,125,3],"texture":0}},"type":"cube","uuid":"e7338d16-154e-5332-5299-8edd426d36d9"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8157,0,9.58056],"to":[26.8157,1.5,11.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[113,13],"faces":{"north":{"uv":[119.4375,14.4375,114.4375,15.9375],"texture":0},"east":{"uv":[120.875,14.4375,119.4375,15.9375],"texture":0},"south":{"uv":[125.875,14.4375,120.875,15.9375],"texture":0},"west":{"uv":[114.4375,14.4375,113,15.9375],"texture":0},"up":{"uv":[114.4375,14.4375,119.4375,13],"texture":0},"down":{"uv":[119.4375,13,124.4375,14.4375],"texture":0}},"type":"cube","uuid":"7e33d722-ada9-3f13-d980-35b57c7423b3"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.85696,0,22.80337],"to":[26.85696,4,25.80337],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[96,0],"faces":{"north":{"uv":[105,3,99,7],"texture":0},"east":{"uv":[108,3,105,7],"texture":0},"south":{"uv":[114,3,108,7],"texture":0},"west":{"uv":[99,3,96,7],"texture":0},"up":{"uv":[99,3,105,0],"texture":0},"down":{"uv":[105,0,111,3],"texture":0}},"type":"cube","uuid":"ba42aac7-f301-9f9f-c1b9-6ceb8ce75a78"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.28196,-0.94481,16.61068],"to":[26.28196,3.05519,19.61068],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-60,45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"546b7cc6-835a-08f0-7833-04d25e83d447"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.28196,-2.17707,20.3695],"to":[26.28196,0.69793,23.3695],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-30,45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"5b1afece-bbc9-e89e-7d51-1cc64d8ab8fa"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.85696,0,25.80337],"to":[26.85696,1.5,27.24087],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"38ca4b91-b062-87e6-f546-ad63462b165a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.3157,0,25.01806],"to":[27.3157,1.5,26.45556],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[114,5],"faces":{"north":{"uv":[121.4375,6.4375,115.4375,7.9375],"texture":0},"east":{"uv":[122.875,6.4375,121.4375,7.9375],"texture":0},"south":{"uv":[128.875,6.4375,122.875,7.9375],"texture":0},"west":{"uv":[115.4375,6.4375,114,7.9375],"texture":0},"up":{"uv":[115.4375,6.4375,121.4375,5],"texture":0},"down":{"uv":[121.4375,5,127.4375,6.4375],"texture":0}},"type":"cube","uuid":"91334231-7cf1-8ffa-da06-9515e73d7363"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8407,-1.78441,19.6894],"to":[26.8407,1.09059,22.6894],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-30,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[96,7],"faces":{"north":{"uv":[104,10,99,12.875],"texture":0},"east":{"uv":[107,10,104,12.875],"texture":0},"south":{"uv":[112,10,107,12.875],"texture":0},"west":{"uv":[99,10,96,12.875],"texture":0},"up":{"uv":[99,10,104,7],"texture":0},"down":{"uv":[104,7,109,10],"texture":0}},"type":"cube","uuid":"a90ad2f6-b968-6090-4e83-fda01f6f120a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.8407,-0.26471,16.21802],"to":[26.8407,3.73529,19.21802],"autouv":0,"color":7,"mirror_uv":true,"rotation":[-60,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[0,120],"faces":{"north":{"uv":[8,123,3,127],"texture":0},"east":{"uv":[11,123,8,127],"texture":0},"south":{"uv":[16,123,11,127],"texture":0},"west":{"uv":[3,123,0,127],"texture":0},"up":{"uv":[3,123,8,120],"texture":0},"down":{"uv":[8,120,13,123],"texture":0}},"type":"cube","uuid":"2c056c12-c971-f8a9-2f8b-3595c5cde8d0"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[21.3157,0,22.01806],"to":[27.3157,4,25.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[96,0],"faces":{"north":{"uv":[105,3,99,7],"texture":0},"east":{"uv":[108,3,105,7],"texture":0},"south":{"uv":[114,3,108,7],"texture":0},"west":{"uv":[99,3,96,7],"texture":0},"up":{"uv":[99,3,105,0],"texture":0},"down":{"uv":[105,0,111,3],"texture":0}},"type":"cube","uuid":"510edcfe-13f1-8fed-1321-cbb7791052e2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[20.8157,0,14.01806],"to":[27.8157,10,22.01806],"autouv":0,"color":7,"mirror_uv":true,"rotation":[0,-45,0],"origin":[23.44367,6.89062,18.42469],"uv_offset":[32,94],"faces":{"north":{"uv":[47,102,40,112],"texture":0},"east":{"uv":[55,102,47,112],"texture":0},"south":{"uv":[62,102,55,112],"texture":0},"west":{"uv":[40,102,32,112],"texture":0},"up":{"uv":[40,102,47,94],"texture":0},"down":{"uv":[47,94,54,102],"texture":0}},"type":"cube","uuid":"e53d3285-fe8c-a7a5-67db-56c28210b5d8"},{"name":"hand","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-23.30487,20.03082,15.10871],"to":[-18.30487,27.03082,26.10871],"autouv":0,"color":9,"rotation":[44.08894,30.73293,16.34134],"origin":[-11.55741,6.44555,15.52679],"uv_offset":[0,94],"faces":{"north":{"uv":[11,105,16,112],"texture":0},"east":{"uv":[0,105,11,112],"texture":0},"south":{"uv":[27,105,32,112],"texture":0},"west":{"uv":[16,105,27,112],"texture":0},"up":{"uv":[16,105,11,94],"texture":0},"down":{"uv":[21,94,16,105],"texture":0}},"type":"cube","uuid":"43036808-81f0-745b-bad7-8727eb67a04d"},{"name":"pincer2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-22.80487,22.51869,20.84206],"to":[-18.80487,25.51869,25.84206],"autouv":0,"color":9,"rotation":[59.08894,30.73293,16.34134],"origin":[-11.55741,6.44555,15.52679],"uv_offset":[109,95],"faces":{"north":{"uv":[114,100,118,103],"texture":0},"east":{"uv":[109,100,114,103],"texture":0},"south":{"uv":[123,100,127,103],"texture":0},"west":{"uv":[118,100,123,103],"texture":0},"up":{"uv":[118,100,114,95],"texture":0},"down":{"uv":[122,95,118,100],"texture":0}},"type":"cube","uuid":"4d958243-0fbc-a5fe-a194-42f49a17b258"},{"name":"pincer1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-22.80487,23.53082,26.10871],"to":[-18.80487,26.53082,31.10871],"autouv":0,"color":9,"mirror_uv":true,"rotation":[44.08894,30.73293,16.34134],"origin":[-11.55741,6.44555,15.52679],"uv_offset":[83,95],"faces":{"north":{"uv":[92,100,88,103],"texture":0},"east":{"uv":[97,100,92,103],"texture":0},"south":{"uv":[101,100,97,103],"texture":0},"west":{"uv":[88,100,83,103],"texture":0},"up":{"uv":[88,100,92,95],"texture":0},"down":{"uv":[92,95,96,100],"texture":0}},"type":"cube","uuid":"54295083-0b51-d463-a927-26fa3f2fead3"},{"name":"arm2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-12.5,-0.39597,21.00765],"to":[-9.5,2.60403,33.00765],"autouv":0,"color":9,"rotation":[-40,-15,0],"origin":[-10.55741,5.94555,16.52679],"uv_offset":[62,94],"faces":{"north":{"uv":[74,106,77,109],"texture":0},"east":{"uv":[62,106,74,109],"texture":0},"south":{"uv":[89,106,92,109],"texture":0},"west":{"uv":[77,106,89,109],"texture":0},"up":{"uv":[77,106,74,94],"texture":0},"down":{"uv":[80,94,77,106],"texture":0}},"type":"cube","uuid":"6cfa9343-8f8f-d6de-18fd-3a998e90aa59"},{"name":"arm1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-13,4,15],"to":[-9,8,24],"autouv":0,"color":9,"rotation":[0,-15,0],"origin":[-10.55741,6.44555,16.52679],"uv_offset":[92,94],"faces":{"north":{"uv":[101,103,105,107],"texture":0},"east":{"uv":[92,103,101,107],"texture":0},"south":{"uv":[114,103,118,107],"texture":0},"west":{"uv":[105,103,114,107],"texture":0},"up":{"uv":[105,103,101,94],"texture":0},"down":{"uv":[109,94,105,103],"texture":0}},"type":"cube","uuid":"b12ea92c-291a-1b29-bdd3-d93b1eba24cd"},{"name":"pincer2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[18.80487,22.51869,20.84206],"to":[22.80487,25.51869,25.84206],"autouv":0,"color":9,"rotation":[59.08894,-30.73293,-16.34134],"origin":[11.55741,6.44555,15.52679],"uv_offset":[109,95],"faces":{"north":{"uv":[114,100,118,103],"texture":0},"east":{"uv":[109,100,114,103],"texture":0},"south":{"uv":[123,100,127,103],"texture":0},"west":{"uv":[118,100,123,103],"texture":0},"up":{"uv":[118,100,114,95],"texture":0},"down":{"uv":[122,95,118,100],"texture":0}},"type":"cube","uuid":"6269b635-9b8b-1f3b-33f9-80f4923a9a4f"},{"name":"pincer1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[18.80487,23.53082,26.10871],"to":[22.80487,26.53082,31.10871],"autouv":0,"color":9,"rotation":[44.08894,-30.73293,-16.34134],"origin":[11.55741,6.44555,15.52679],"uv_offset":[83,95],"faces":{"north":{"uv":[88,100,92,103],"texture":0},"east":{"uv":[83,100,88,103],"texture":0},"south":{"uv":[97,100,101,103],"texture":0},"west":{"uv":[92,100,97,103],"texture":0},"up":{"uv":[92,100,88,95],"texture":0},"down":{"uv":[96,95,92,100],"texture":0}},"type":"cube","uuid":"98060a8d-85c1-6b48-b00b-e6069e6528fb"},{"name":"hand","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[18.30487,20.03082,15.10871],"to":[23.30487,27.03082,26.10871],"autouv":0,"color":9,"mirror_uv":true,"rotation":[44.08894,-30.73293,-16.34134],"origin":[11.55741,6.44555,15.52679],"uv_offset":[0,94],"faces":{"north":{"uv":[16,105,11,112],"texture":0},"east":{"uv":[27,105,16,112],"texture":0},"south":{"uv":[32,105,27,112],"texture":0},"west":{"uv":[11,105,0,112],"texture":0},"up":{"uv":[11,105,16,94],"texture":0},"down":{"uv":[16,94,21,105],"texture":0}},"type":"cube","uuid":"99029de3-257e-18be-a152-a793b9334083"},{"name":"arm1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[9.5,-0.39597,21.00765],"to":[12.5,2.60403,33.00765],"autouv":0,"color":9,"mirror_uv":true,"rotation":[-40,15,0],"origin":[10.55741,5.94555,16.52679],"uv_offset":[62,94],"faces":{"north":{"uv":[77,106,74,109],"texture":0},"east":{"uv":[89,106,77,109],"texture":0},"south":{"uv":[92,106,89,109],"texture":0},"west":{"uv":[74,106,62,109],"texture":0},"up":{"uv":[74,106,77,94],"texture":0},"down":{"uv":[77,94,80,106],"texture":0}},"type":"cube","uuid":"cfc54668-b130-e56c-de6b-bb2521510e8a"},{"name":"arm2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[9,4,15],"to":[13,8,24],"autouv":0,"color":9,"mirror_uv":true,"rotation":[0,15,0],"origin":[10.55741,6.44555,16.52679],"uv_offset":[92,94],"faces":{"north":{"uv":[105,103,101,107],"texture":0},"east":{"uv":[114,103,105,107],"texture":0},"south":{"uv":[118,103,114,107],"texture":0},"west":{"uv":[101,103,92,107],"texture":0},"up":{"uv":[101,103,105,94],"texture":0},"down":{"uv":[105,94,109,103],"texture":0}},"type":"cube","uuid":"c4fa28ac-2c40-10a3-b54c-9418ca57112a"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-3,3,16],"to":[3,9,22],"autouv":0,"color":6,"rotation":[10,0,0],"origin":[0,6.5,19],"uv_offset":[62,109],"faces":{"north":{"uv":[68,115,74,121],"texture":0},"east":{"uv":[62,115,68,121],"texture":0},"south":{"uv":[80,115,86,121],"texture":0},"west":{"uv":[74,115,80,121],"texture":0},"up":{"uv":[74,115,68,109],"texture":0},"down":{"uv":[80,109,74,115],"texture":0}},"type":"cube","uuid":"451baa86-bb99-b993-6fba-c0301a1816a2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2,3,16],"to":[2,8,21],"autouv":0,"color":6,"origin":[0,1.5,19],"uv_offset":[44,112],"faces":{"north":{"uv":[49,117,53,122],"texture":0},"east":{"uv":[44,117,49,122],"texture":0},"south":{"uv":[58,117,62,122],"texture":0},"west":{"uv":[53,117,58,122],"texture":0},"up":{"uv":[53,117,49,112],"texture":0},"down":{"uv":[57,112,53,117],"texture":0}},"type":"cube","uuid":"f43395fc-8bfa-2e2b-cf48-984ba4a6664b"},{"name":"stem2","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-1.75,8.02541,21.38958],"to":[-1.25,11.02541,21.88958],"autouv":0,"color":6,"rotation":[10,0,0],"origin":[1.25,11.52541,23.88958],"faces":{"north":{"uv":[0.5,0.5,1,3.5],"texture":0},"east":{"uv":[0,0.5,0.5,3.5],"texture":0},"south":{"uv":[1.5,0.5,2,3.5],"texture":0},"west":{"uv":[1,0.5,1.5,3.5],"texture":0},"up":{"uv":[1,0.5,0.5,0],"texture":0},"down":{"uv":[1.5,0,1,0.5],"texture":0}},"type":"cube","uuid":"0a29feb1-e332-5320-6f22-c40b5421ad1c"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2,10.77541,21.63958],"to":[-1,11.77541,22.63958],"autouv":0,"color":6,"rotation":[10,0,0],"origin":[1,14.27541,24.63958],"uv_offset":[86,109],"faces":{"north":{"uv":[87,110,88,111],"texture":0},"east":{"uv":[86,110,87,111],"texture":0},"south":{"uv":[89,110,90,111],"texture":0},"west":{"uv":[88,110,89,111],"texture":0},"up":{"uv":[88,110,87,109],"texture":0},"down":{"uv":[89,109,88,110],"texture":0}},"type":"cube","uuid":"11dfe79e-ce4e-727e-c958-3ed8ae196670"},{"name":"stem1","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[1.25,8.02541,21.38958],"to":[1.75,11.02541,21.88958],"autouv":0,"color":6,"rotation":[10,0,0],"origin":[4.25,11.52541,23.88958],"faces":{"north":{"uv":[0.5,0.5,1,3.5],"texture":0},"east":{"uv":[0,0.5,0.5,3.5],"texture":0},"south":{"uv":[1.5,0.5,2,3.5],"texture":0},"west":{"uv":[1,0.5,1.5,3.5],"texture":0},"up":{"uv":[1,0.5,0.5,0],"texture":0},"down":{"uv":[1.5,0,1,0.5],"texture":0}},"type":"cube","uuid":"877e9bcf-772d-cf33-5927-8f998fe10fa0"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[1,10.77541,21.63958],"to":[2,11.77541,22.63958],"autouv":0,"color":6,"rotation":[10,0,0],"origin":[4,14.27541,24.63958],"uv_offset":[86,109],"faces":{"north":{"uv":[87,110,88,111],"texture":0},"east":{"uv":[86,110,87,111],"texture":0},"south":{"uv":[89,110,90,111],"texture":0},"west":{"uv":[88,110,89,111],"texture":0},"up":{"uv":[88,110,87,109],"texture":0},"down":{"uv":[89,109,88,110],"texture":0}},"type":"cube","uuid":"61c54a6c-fdfe-d20d-a585-48e33a1ff110"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2,8.6985,20.23987],"to":[-1,8.6985,24.23987],"autouv":0,"color":6,"rotation":[30,-7.5,0],"origin":[-1.5,5.57226,19.00962],"uv_offset":[114,7],"faces":{"north":{"uv":[118,11,119,11],"texture":0},"east":{"uv":[114,11,118,11],"texture":0},"south":{"uv":[123,11,124,11],"texture":0},"west":{"uv":[119,11,123,11],"texture":0},"up":{"uv":[119,11,118,7],"texture":0},"down":{"uv":[120,7,119,11],"texture":0}},"type":"cube","uuid":"d3e4200f-27b1-a818-533f-40e71a7ea5e0"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-2,10.29876,22.85487],"to":[-1,10.29876,26.85487],"autouv":0,"color":6,"rotation":[50,-7.5,0],"origin":[-1.5,5.57226,19.00962],"uv_offset":[114,7],"faces":{"north":{"uv":[118,11,119,11],"texture":0},"east":{"uv":[114,11,118,11],"texture":0},"south":{"uv":[123,11,124,11],"texture":0},"west":{"uv":[119,11,123,11],"texture":0},"up":{"uv":[119,11,118,7],"texture":0},"down":{"uv":[120,7,119,11],"texture":0}},"type":"cube","uuid":"1738b23c-1a2b-49e9-b7cb-ef0284abe8c2"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[1,10.29876,22.85487],"to":[2,10.29876,26.85487],"autouv":0,"color":6,"mirror_uv":true,"rotation":[50,7.5,0],"origin":[1.5,5.57226,19.00962],"uv_offset":[114,7],"faces":{"north":{"uv":[119,11,118,11],"texture":0},"east":{"uv":[123,11,119,11],"texture":0},"south":{"uv":[124,11,123,11],"texture":0},"west":{"uv":[118,11,114,11],"texture":0},"up":{"uv":[118,11,119,7],"texture":0},"down":{"uv":[119,7,120,11],"texture":0}},"type":"cube","uuid":"51c09895-9974-47bd-64c6-4b987d95a52b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[1,8.6985,20.23987],"to":[2,8.6985,24.23987],"autouv":0,"color":6,"mirror_uv":true,"rotation":[30,7.5,0],"origin":[1.5,5.57226,19.00962],"uv_offset":[114,7],"faces":{"north":{"uv":[119,11,118,11],"texture":0},"east":{"uv":[123,11,119,11],"texture":0},"south":{"uv":[124,11,123,11],"texture":0},"west":{"uv":[118,11,114,11],"texture":0},"up":{"uv":[118,11,119,7],"texture":0},"down":{"uv":[119,7,120,11],"texture":0}},"type":"cube","uuid":"e268c1f6-030e-6db7-5938-b8605c8e6b41"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-15.80272,-1.76816,-13.88817],"to":[-10.80272,1.10684,-10.88817],"autouv":0,"color":7,"rotation":[0,-90,-30],"origin":[-27.26443,11.29953,-13.94336],"uv_offset":[96,7],"faces":{"north":{"uv":[99,10,104,12.875],"texture":0},"east":{"uv":[96,10,99,12.875],"texture":0},"south":{"uv":[107,10,112,12.875],"texture":0},"west":{"uv":[104,10,107,12.875],"texture":0},"up":{"uv":[104,10,99,7],"texture":0},"down":{"uv":[109,7,104,10],"texture":0}},"type":"cube","uuid":"d248abf5-bb0a-c650-0370-4e6dbaf4026b"},{"name":"cube","box_uv":true,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-30.475,-1.98773,-4.61687],"to":[-26.475,0.88727,-1.61687],"autouv":0,"color":7,"mirror_uv":true,"rotation":[30,0,0],"origin":[-19.90491,6.89062,0],"uv_offset":[114,0],"faces":{"north":{"uv":[121,3,117,5.875],"texture":0},"east":{"uv":[124,3,121,5.875],"texture":0},"south":{"uv":[128,3,124,5.875],"texture":0},"west":{"uv":[117,3,114,5.875],"texture":0},"up":{"uv":[117,3,121,0],"texture":0},"down":{"uv":[121,0,125,3],"texture":0}},"type":"cube","uuid":"e625139a-359a-bd61-40dc-3feb79bbba78"}],"outliner":[{"name":"Everything","origin":[0,0,0],"rotation":[0,-180,0],"color":0,"uuid":"75060622-42f9-bae8-480d-3fa98533e29a","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":true,"children":[{"name":"body","origin":[-12,5.75,13],"color":0,"uuid":"9613ee7e-cc2f-018d-5ebf-45777b67d5a9","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["0a7c4075-bc6c-9296-d12b-6bdd4073e03f","90a77059-fca7-422d-9f41-daecb93b7bf0"]},{"name":"head","origin":[0,5.5,16],"color":0,"uuid":"5546f445-466a-2cb9-6f7b-0cf0fb150c55","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["451baa86-bb99-b993-6fba-c0301a1816a2","0a29feb1-e332-5320-6f22-c40b5421ad1c","11dfe79e-ce4e-727e-c958-3ed8ae196670","877e9bcf-772d-cf33-5927-8f998fe10fa0","61c54a6c-fdfe-d20d-a585-48e33a1ff110","d3e4200f-27b1-a818-533f-40e71a7ea5e0","1738b23c-1a2b-49e9-b7cb-ef0284abe8c2","51c09895-9974-47bd-64c6-4b987d95a52b","e268c1f6-030e-6db7-5938-b8605c8e6b41","f43395fc-8bfa-2e2b-cf48-984ba4a6664b"]},{"name":"right_foreleg","origin":[-10,7,15],"color":0,"uuid":"cf7e72c2-e1cf-bf00-a1eb-2f3081b16b18","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["43036808-81f0-745b-bad7-8727eb67a04d","b12ea92c-291a-1b29-bdd3-d93b1eba24cd","6cfa9343-8f8f-d6de-18fd-3a998e90aa59","54295083-0b51-d463-a927-26fa3f2fead3","4d958243-0fbc-a5fe-a194-42f49a17b258"]},{"name":"front_right_leg","origin":[-15,10,11],"color":0,"uuid":"5d69ec76-686b-d6e4-2fe2-a9fe20eb12aa","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["9b8a6dcb-83cf-e083-cb53-db119414cebf","f99515f5-e8f6-5184-08c7-d43d8a4a36b8","9cb74de9-41ce-76db-297b-21b016b9fb5e","48927ba4-b9a6-d6fa-1f2d-d56d753a750f","40ade474-3dab-f41a-078a-15bb3693155a","3742d33e-fc09-8e6f-59ab-5df75b6ca11b","38d819f0-40a2-4a06-7c02-352b6433cb59","2fd4a586-8f3f-43b9-6fe3-b3b7c8198f8a","3d295af3-807f-4aa2-081f-43f507e1384e","be17bca0-def0-754d-46c2-d6c2bfff924f","da14606c-6a3b-bc94-d2f9-1e7786b41bac","740bcba7-d7d3-7863-c949-a4441bc10ad7","075d2bf5-43f0-bbb9-73ab-0dbec14dc9ba","ea40e263-7b68-4e80-7ab6-09e378600d19","6c99e89c-2d40-3f0b-8025-c55b1db532f9","381793a8-1302-83ce-f5f4-df62b06ab4d0","588d15a8-ede4-0109-a5d5-032a4bcf33ab"]},{"name":"middle_right_leg","origin":[-16,10,0],"color":0,"uuid":"992291ce-32cc-2d6e-788a-44a390f09d76","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["abe75abd-c467-aa01-e526-3dec0db4ba79","003625fd-4fed-5642-0498-c44c318ebc69","dd7508aa-eb1a-2f10-8f61-f2a516e50d20","55843084-2fc1-5f6f-ec34-ce837adccd19","cb6c5b58-73ce-d6e1-8758-56a3733b2296","5a839f88-1c6d-77c4-e0fb-44066ec52ba7","e069d02d-3a4b-077c-8515-448ce5cdf5b6","74b7b771-b07c-0ca6-93a3-35a824990932","6648038f-3ea8-6c09-f78b-8dbd69365df4","7070fc74-1f5a-2a86-da0c-c2bbe15d35f7","16ab778a-23ea-60a9-3f7a-e599fe2e71e8","43c05692-80a7-3089-f02c-dc79e4a69873","add38799-beb0-be3c-040e-fa3e22cff72b","abd20661-eea6-efa9-8d9a-07625075c582","f462ee27-a868-12b3-42fb-14d711f5baa0"]},{"name":"back_right_leg","origin":[-15,10,-11],"color":0,"uuid":"c256f8c0-6ccd-6551-cdc9-7352ab61f8aa","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["e84a389b-3a84-4a4f-82a0-a899a18fedfa","d44324cb-bb7c-0f9a-3976-050344d92f59","f160b8e4-c3f2-6fe2-4292-f3702d4f4fd7","6ee67f4c-f77b-8a27-b4a5-a862e11388f2","78d94604-e7f2-c0f0-6f84-589980049c1f","2ca47203-6f40-a856-51cd-002fd9eca81a","afa6125b-ac38-e38b-0555-d1156fba930c","62f38a00-33a4-1058-37d5-6c5082c0f60b","9d8d39fd-fac5-27c7-e4fb-a8703b04818b","f3fe2359-ae7a-63d2-2dbe-c9182e119b80","a280e3fa-bd4d-55c2-16fb-d0f740f6367a","d248abf5-bb0a-c650-0370-4e6dbaf4026b","2d0c962d-63da-b81c-a251-7c5fb934d084","52828342-9322-2b13-f388-a7e51f534f71","9985386e-8766-96c5-2553-f0b780dac158","dab7d550-b9b3-3786-551b-c38b86b96a1c","550d8d01-c08d-264d-06e8-778748c85579","c36fc078-a7bc-5201-d453-9b9d5c95a309"]},{"name":"left_foreleg","origin":[10,7,15],"color":0,"uuid":"5542a814-2569-57eb-706d-df46189f589b","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["c4fa28ac-2c40-10a3-b54c-9418ca57112a","cfc54668-b130-e56c-de6b-bb2521510e8a","6269b635-9b8b-1f3b-33f9-80f4923a9a4f","98060a8d-85c1-6b48-b00b-e6069e6528fb","99029de3-257e-18be-a152-a793b9334083"]},{"name":"front_left_leg","origin":[15,10,11],"color":0,"uuid":"d739bf9c-474f-0c8c-d55a-e52a0e821239","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["fdc04b5b-5ffa-10e6-cb69-b36e9bd10bc0","2fada0c5-27d5-d618-64cc-00cfa24a212c","36e116b3-996d-1c54-d868-137870a882a7","3a62ca46-c28b-b8e8-64ec-fabbbd48e05a","c4cc3457-6e45-6449-5a40-590d93a96285","befdff54-a686-5ac0-fc46-f2ef6e408763","e7338d16-154e-5332-5299-8edd426d36d9","7e33d722-ada9-3f13-d980-35b57c7423b3","ba42aac7-f301-9f9f-c1b9-6ceb8ce75a78","546b7cc6-835a-08f0-7833-04d25e83d447","5b1afece-bbc9-e89e-7d51-1cc64d8ab8fa","38ca4b91-b062-87e6-f546-ad63462b165a","91334231-7cf1-8ffa-da06-9515e73d7363","a90ad2f6-b968-6090-4e83-fda01f6f120a","2c056c12-c971-f8a9-2f8b-3595c5cde8d0","510edcfe-13f1-8fed-1321-cbb7791052e2","e53d3285-fe8c-a7a5-67db-56c28210b5d8"]},{"name":"middle_left_leg","origin":[16,10,0],"color":0,"uuid":"85c7bdf0-403c-4aaa-ca92-07da8fcf8872","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["9dbc00ee-dd55-5413-c322-f9b436243ff1","56727859-96ee-81d1-1a83-ae71755092b9","95a910b8-3832-6e38-b9c4-7d3c3543d2b3","6ea50fca-6d7b-8d72-e106-cd8861417155","1f0db8da-4050-08d7-9669-2f1b9f7187f8","e40231c8-bd8a-65e5-ea45-808f38477c61","d9ac01dd-636d-8a11-e80f-feaa0b5e9fb2","23f49dc4-59cf-e3d3-2cc4-bce4ec2f94b2","f3fb1dee-ca27-b7cd-b0ee-a544579ec618","a312594e-5bf6-4dac-fa3e-f893f238ac1c","be420179-b5f2-805d-e778-8973c6172860","e625139a-359a-bd61-40dc-3feb79bbba78","32083e49-6bdc-cb48-3a9e-4c1363440861","e878671b-c703-c7cc-22ca-7403ebf9146c","60c97526-b50b-6b87-e3d7-df9ff1446159","2856fc05-81df-fa22-0a6c-9a273039af7b","4130f3c4-417e-f29d-0b0e-9330eeb5512c","b0506837-a0c1-be82-8dee-ff3c5b3146c7"]},{"name":"back_left_leg","origin":[15,10,-11],"color":0,"uuid":"be64732b-da49-7535-ea2e-10ea6455b35e","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["91f58307-85b0-2d5c-5b83-77c97752ae5a","3cc6a566-e732-80b9-f71c-c3017bb48932","126949d5-4740-c3c0-d3af-9d3e7b369e65","2f2d9c83-c5a6-6323-28dd-ac1d354299db","8fbb2de2-3bc5-8be7-994b-501acccbbda7","04d66ae8-8e89-92e3-a917-f3e9b6b263f0","7c48cce6-3ce9-5a15-6e0e-0fabe9ed15d8","1347b4da-4115-06cf-1ac6-376fdee5e469","5e854c8a-787e-3415-5905-0ccf83662cf8","132d934a-c935-accf-5494-08fff85c02e6","996a94af-a181-df6c-7cea-fa5aede635bd","eca7e05d-e830-9066-7d32-9780949eea6b","17c1d72a-be1f-9168-5930-ad91a60650ce","67db8cc6-8191-11ea-3e2a-9f716952691a","fc939091-b300-7b64-0c59-8186c6ebe91e","31e82821-4989-3174-b116-5f11b609d07b","de69bbf1-8152-7f8b-12ea-b3bc1552fc65"]}]}],"textures":[{"path":"Z:\\Repo\\Minecraft\\2021\\CosmereProject\\_cosmere\\src\\surgebinding\\resources\\assets\\surgebinding\\textures\\entity\\chull\\chull.png","name":"chull.png","folder":"block","namespace":"","id":"1","group":"","width":128,"height":128,"uv_width":128,"uv_height":128,"particle":false,"use_as_default":false,"layers_enabled":true,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"38d85630-fc49-18fa-e070-003e70185531","layers":[{"name":"layer","offset":[0,0],"scale":[1,1],"opacity":100,"visible":true,"blend_mode":"default","width":128,"height":128,"data_url":"data:image/png;base64,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"}],"relative_path":"../../../src/surgebinding/resources/assets/surgebinding/textures/entity/chull/chull.png","source":"data:image/png;base64,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"}],"reference_images":[{"name":"Pasted","scope":"project","position":[755,152],"size":[237,237],"source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAAAXNSR0IArs4c6QAAANpJREFUOI1lUkEKAjEMHCG30pLjiih+zKf4JP8kirjH0NK7h1mzod1D2TYzk8y0h8f9lrUASJoBAOjWmlWrHf9PS/J/AdCsckMO16yF55RzCfF9s/p+fQfJoU/WIhEUWzuaK0vNqmhJsRD1Ip+DbB7OlyPndrsOnfMQF06avUCoq1Bo72C1W+36PxrQDt1SGixyeoZGWtJMGt3upgcmafOoslxPy2TXMwGwPj9xVFmfH2+drTHs+QZ3D3SM1zeW5z6ejcRXwJEcNzxHImV+lS3kG03zfOwwM4d8f86sw8uGBiPxAAAAAElFTkSuQmCC"}]} \ No newline at end of file diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ChullModel.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ChullModel.java index 2ad54a649..eb2c8501a 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ChullModel.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/render/model/ChullModel.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 6 - 2023 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.client.render.model; @@ -57,6 +57,7 @@ protected Iterable bodyParts() return ImmutableList.of(this.root); } + public static LayerDefinition createBodyLayer() { MeshDefinition meshdefinition = new MeshDefinition(); @@ -64,365 +65,222 @@ public static LayerDefinition createBodyLayer() PartDefinition Everything = partdefinition.addOrReplaceChild("Everything", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 24.0F, 0.0F, 0.0F, 3.1416F, 0.0F)); - PartDefinition body = Everything.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 0).addBox(-1.4142F, -24.0F, -47.0F, 48.0F, 10.0F, 68.0F, new CubeDeformation(0.0F)) - .texOffs(146, 95).addBox(3.5858F, -35.0F, -43.0F, 40.0F, 11.0F, 60.0F, new CubeDeformation(0.0F)) - .texOffs(164, 0).addBox(7.5858F, -46.0F, -39.0F, 32.0F, 11.0F, 52.0F, new CubeDeformation(0.0F)) - .texOffs(0, 221).addBox(11.5858F, -52.0F, -35.0F, 24.0F, 6.0F, 44.0F, new CubeDeformation(0.0F)) - .texOffs(0, 78).addBox(2.5858F, -14.0F, -46.0F, 40.0F, 14.0F, 63.0F, new CubeDeformation(0.0F)) - .texOffs(164, 22).addBox(-1.4142F, -14.0F, 13.0F, 17.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(92, 221).addBox(2.5858F, -1.75F, -47.0F, 40.0F, 6.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(280, 12).addBox(29.3431F, -1.7574F, 17.0F, 13.0F, 6.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 56).addBox(2.8284F, -1.7574F, 17.0F, 27.0F, 6.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(164, 0).addBox(29.5858F, -14.0F, 13.0F, 17.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(204, 246).addBox(-1.4142F, -14.0F, -27.0F, 48.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(224, 70).addBox(-1.4142F, -14.0F, -47.0F, 48.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(92, 240).addBox(-1.4142F, -14.0F, -7.0F, 48.0F, 14.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 155).addBox(2.5858F, 0.0F, -44.0F, 40.0F, 5.0F, 61.0F, new CubeDeformation(0.0F)), PartPose.offset(-22.5858F, -8.75F, 13.0F)); - - PartDefinition cube_r1 = body.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(208, 172).addBox(-1.0F, -1.0F, -47.0F, 3.0F, 6.0F, 68.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.7854F)); - - PartDefinition cube_r2 = body.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(134, 166).addBox(-2.0F, -1.0F, -47.0F, 3.0F, 6.0F, 68.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(45.1716F, 0.0F, 0.0F, 0.0F, 0.0F, 0.7854F)); - - PartDefinition head = Everything.addOrReplaceChild("head", CubeListBuilder.create().texOffs(0, 0).addBox(-7.3F, -2.9F, -8.5F, 15.0F, 15.0F, 15.0F, new CubeDeformation(0.0F)) - .texOffs(141, 192).addBox(-5.5F, -2.2F, 6.9F, 11.0F, 11.0F, 11.0F, new CubeDeformation(0.0F)) - .texOffs(60, 45).addBox(2.4F, -5.2F, 15.7F, 2.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)) - .texOffs(60, 40).addBox(-4.2F, -5.2F, 15.7F, 2.0F, 3.0F, 2.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -19.8F, 34.9F)); - - PartDefinition cube_r3 = head.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(32, 30).addBox(-5.5062F, 0.0F, -23.1F, 2.0F, 0.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.4F, 0.0F, 41.0F, 0.0F, -0.2182F, 0.0F)); - - PartDefinition cube_r4 = head.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(40, 0).addBox(-0.9F, 0.0F, -9.9F, 2.0F, 0.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(10.0384F, 4.9499F, 45.1511F, -0.5236F, 0.2182F, 0.0F)); - - PartDefinition cube_r5 = head.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(40, 20).addBox(3.7063F, 0.0F, -23.1F, 2.0F, 0.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(4.4F, 0.0F, 41.0F, 0.0F, 0.2182F, 0.0F)); - - PartDefinition cube_r6 = head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(264, 268).addBox(-7.5F, -1.1875F, -2.6875F, 15.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.2F, 12.5703F, -1.0191F, 0.3054F, 0.0F, 0.0F)); - - PartDefinition cube_r7 = head.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(36, 30).addBox(-0.9F, 0.0F, -9.9F, 2.0F, 0.0F, 20.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-10.0384F, 4.9499F, 45.1511F, -0.5236F, -0.2182F, 0.0F)); - - PartDefinition right_foreleg = Everything.addOrReplaceChild("right_foreleg", CubeListBuilder.create(), PartPose.offset(15.0F, -10.8F, 32.0F)); - - PartDefinition cube_r8 = right_foreleg.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(185, 200).addBox(-1.7899F, 4.5261F, -0.5167F, 5.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(38, 78).addBox(-2.7899F, -2.4739F, -1.5167F, 7.0F, 7.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.2244F, -0.0286F, 23.8964F, 0.0F, 0.0F, 0.7854F)); - - PartDefinition cube_r9 = right_foreleg.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(181, 104).addBox(-5.0F, 10.0F, 2.0F, 5.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(38, 130).addBox(-6.0F, 5.0F, 2.0F, 7.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(318, 144).addBox(-7.0F, 0.0F, 2.0F, 9.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(326, 301).addBox(-7.0F, -19.0F, 2.0F, 9.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(38, 271).addBox(-7.0F, -15.0F, -3.0F, 9.0F, 18.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.0173F, -0.8875F, 23.2888F, 0.4363F, 0.0F, 0.7854F)); - - PartDefinition cube_r10 = right_foreleg.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(236, 166).addBox(-6.5F, -9.0F, -3.0F, 12.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.5173F, -0.8875F, 19.2888F, 1.2787F, -0.7203F, -0.9387F)); - - PartDefinition cube_r11 = right_foreleg.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(181, 78).addBox(-14.0F, -3.5F, -4.5F, 13.0F, 7.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(3.3506F, -0.8875F, 14.1357F, 0.0F, -1.3526F, 0.4363F)); - - PartDefinition front_right_leg = Everything.addOrReplaceChild("front_right_leg", CubeListBuilder.create(), PartPose.offset(17.0F, -15.0F, 16.5F)); + PartDefinition body = Everything.addOrReplaceChild("body", CubeListBuilder.create().texOffs(0, 0).addBox(-28.0F, -12.25F, -29.0F, 32.0F, 16.0F, 32.0F, new CubeDeformation(0.0F)) + .texOffs(0, 48).addBox(-27.0F, -28.0F, -28.0F, 30.0F, 16.0F, 30.0F, new CubeDeformation(0.0F)), PartPose.offset(12.0F, -5.75F, 13.0F)); - PartDefinition cube_r12 = front_right_leg.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(324, 55).addBox(4.1359F, 5.2993F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(152, 301).addBox(11.5734F, 8.2993F, -5.2532F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(188, 262).addBox(13.5734F, 8.2993F, -4.2532F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(64, 322).addBox(4.1301F, 4.9867F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.0F, 0.3927F, 0.0F)); + PartDefinition head = Everything.addOrReplaceChild("head", CubeListBuilder.create().texOffs(44, 112).addBox(-2.0F, -2.5F, 0.0F, 4.0F, 5.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, -5.5F, 16.0F)); - PartDefinition cube_r13 = front_right_leg.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(0, 181).addBox(12.1033F, -10.6069F, -4.2532F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.3591F, 0.1624F, 1.164F)); + PartDefinition cube_r1 = head.addOrReplaceChild("cube_r1", CubeListBuilder.create().texOffs(114, 7).mirror().addBox(-0.5F, -3.1262F, 1.2302F, 1.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-1.5F, -0.0723F, 3.0096F, -0.5236F, -0.1309F, 0.0F)); - PartDefinition cube_r14 = front_right_leg.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(254, 333).addBox(12.9983F, -1.7464F, -5.2532F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(32, 322).addBox(4.9983F, -1.7464F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.2042F, 0.3378F, 0.5585F)); + PartDefinition cube_r2 = head.addOrReplaceChild("cube_r2", CubeListBuilder.create().texOffs(114, 7).mirror().addBox(-0.5F, -4.7265F, 3.8452F, 1.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-1.5F, -0.0723F, 3.0096F, -0.8727F, -0.1309F, 0.0F)); - PartDefinition cube_r15 = front_right_leg.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(160, 325).addBox(1.4557F, 5.2993F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(208, 307).addBox(8.8932F, 8.2993F, -2.4542F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(266, 166).addBox(10.8932F, 8.2993F, -1.4542F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(128, 325).addBox(1.4499F, 4.9867F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, -3.1416F, -1.5272F, 3.1416F)); + PartDefinition cube_r3 = head.addOrReplaceChild("cube_r3", CubeListBuilder.create().texOffs(114, 7).addBox(-0.5F, -4.7265F, 3.8452F, 1.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5F, -0.0723F, 3.0096F, -0.8727F, 0.1309F, 0.0F)); - PartDefinition cube_r16 = front_right_leg.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(0, 187).addBox(10.9706F, -8.1778F, -1.4542F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, -1.6189F, -0.4359F, 1.5911F)); + PartDefinition cube_r4 = head.addOrReplaceChild("cube_r4", CubeListBuilder.create().texOffs(114, 7).addBox(-0.5F, -3.1262F, 1.2302F, 1.0F, 0.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5F, -0.0723F, 3.0096F, -0.5236F, 0.1309F, 0.0F)); - PartDefinition cube_r17 = front_right_leg.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(272, 333).addBox(10.6772F, -0.4064F, -2.4542F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(96, 324).addBox(2.6772F, -0.4064F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, -1.6579F, -1.0456F, 1.6462F)); + PartDefinition cube_r5 = head.addOrReplaceChild("cube_r5", CubeListBuilder.create().texOffs(86, 109).addBox(2.0F, 2.5F, -3.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)) + .texOffs(86, 109).addBox(5.0F, 2.5F, -3.0F, 1.0F, 1.0F, 1.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.0F, -8.7754F, 8.6396F, -0.1745F, 0.0F, 0.0F)); - PartDefinition cube_r18 = front_right_leg.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(0, 322).addBox(-7.8494F, 5.2993F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(120, 300).addBox(-9.2869F, 8.2993F, -4.5889F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(258, 63).addBox(-11.2869F, 8.2993F, -3.5889F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(296, 321).addBox(-7.8436F, 4.9867F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.0F, -0.6109F, 0.0F)); + PartDefinition stem1_r1 = head.addOrReplaceChild("stem1_r1", CubeListBuilder.create().texOffs(0, 0).addBox(2.5F, 0.5F, -2.5F, 0.5F, 3.0F, 0.5F, new CubeDeformation(0.0F)) + .texOffs(0, 0).addBox(5.5F, 0.5F, -2.5F, 0.5F, 3.0F, 0.5F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-4.25F, -6.0254F, 7.8896F, -0.1745F, 0.0F, 0.0F)); - PartDefinition cube_r19 = front_right_leg.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(141, 172).addBox(-12.2918F, -6.7219F, -3.5889F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.5655F, -0.2448F, -1.2059F)); + PartDefinition cube_r6 = head.addOrReplaceChild("cube_r6", CubeListBuilder.create().texOffs(62, 109).addBox(-3.0F, -2.5F, -3.0F, 6.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -1.0F, 3.0F, -0.1745F, 0.0F, 0.0F)); - PartDefinition cube_r20 = front_right_leg.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(222, 333).addBox(-12.2861F, 0.3968F, -4.5889F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(264, 321).addBox(-9.2861F, 0.3968F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.3368F, -0.5198F, -0.6139F)); + PartDefinition right_foreleg = Everything.addOrReplaceChild("right_foreleg", CubeListBuilder.create(), PartPose.offset(10.0F, -7.0F, 15.0F)); - PartDefinition cube_r21 = front_right_leg.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(326, 289).addBox(3.0846F, 4.9867F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(320, 325).addBox(3.0905F, 5.2993F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(308, 246).addBox(10.528F, 8.2993F, -4.5889F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(150, 270).addBox(12.528F, 8.2993F, -3.5889F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 207).addBox(-24.3795F, -7.6835F, -3.5889F, 15.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(122, 262).addBox(-6.3795F, -14.6835F, -8.5889F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(0, 155).addBox(-6.3795F, -2.6835F, -8.5889F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.0F, -0.6109F, 0.0F)); + PartDefinition pincer2_r1 = right_foreleg.addOrReplaceChild("pincer2_r1", CubeListBuilder.create().texOffs(109, 95).addBox(7.2475F, -19.0731F, 5.3153F, 4.0F, 3.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5574F, 0.5545F, 0.5268F, -1.0313F, -0.5364F, 0.2852F)); - PartDefinition cube_r22 = front_right_leg.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(202, 44).addBox(11.6615F, -9.6594F, -3.5889F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, -0.5655F, -0.2448F, 1.2059F)); + PartDefinition pincer1_r1 = right_foreleg.addOrReplaceChild("pincer1_r1", CubeListBuilder.create().texOffs(83, 95).mirror().addBox(7.2475F, -20.0853F, 10.5819F, 4.0F, 3.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 94).addBox(6.7475F, -20.5853F, -0.4181F, 5.0F, 7.0F, 11.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(1.5574F, 0.5545F, 0.5268F, -0.7695F, -0.5364F, 0.2852F)); - PartDefinition cube_r23 = front_right_leg.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(290, 333).addBox(12.0929F, -1.2237F, -4.5889F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(328, 30).addBox(4.0929F, -1.2237F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, -0.3368F, -0.5198F, 0.6139F)); + PartDefinition arm2_r1 = right_foreleg.addOrReplaceChild("arm2_r1", CubeListBuilder.create().texOffs(62, 94).addBox(-1.0574F, 3.3415F, 4.4809F, 3.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.5574F, 1.0545F, 1.5268F, 0.6981F, 0.2618F, 0.0F)); - PartDefinition cube_r24 = front_right_leg.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 271).addBox(1.2196F, -13.3283F, -8.5889F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.2618F, -0.5585F, -0.4682F)); + PartDefinition arm1_r1 = right_foreleg.addOrReplaceChild("arm1_r1", CubeListBuilder.create().texOffs(92, 94).addBox(-1.5574F, -1.5545F, -1.5268F, 4.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.5574F, 0.5545F, 1.5268F, 0.0F, 0.2618F, 0.0F)); - PartDefinition cube_r25 = front_right_leg.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(314, 230).addBox(-3.2073F, -13.5528F, -3.5889F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(19.9537F, 5.996F, 16.145F, 0.4923F, -0.3776F, -0.9686F)); + PartDefinition front_right_leg = Everything.addOrReplaceChild("front_right_leg", CubeListBuilder.create(), PartPose.offset(15.0F, -10.0F, 11.0F)); - PartDefinition middle_right_leg = Everything.addOrReplaceChild("middle_right_leg", CubeListBuilder.create().texOffs(143, 104).addBox(13.0F, 2.8125F, -7.0F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(310, 120).addBox(22.4641F, 10.4827F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 221).addBox(31.9074F, 13.7953F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(296, 63).addBox(29.9074F, 13.7953F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(310, 132).addBox(22.4699F, 10.7953F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 221).addBox(13.0F, -9.1875F, -7.0F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(188, 268).addBox(0.0F, -2.1875F, -2.0F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offset(20.0F, -14.5F, 0.0F)); + PartDefinition leg1_r1 = front_right_leg.addOrReplaceChild("leg1_r1", CubeListBuilder.create().texOffs(0, 112).addBox(-2.2566F, -2.8606F, -2.8637F, 8.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.4437F, 1.1094F, 0.4247F, 0.0F, -0.7854F, 0.0F)); - PartDefinition cube_r26 = middle_right_leg.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(240, 317).addBox(-1.0625F, -4.0F, -3.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(88, 298).addBox(-2.5F, -1.0F, -2.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(242, 63).addBox(-4.5F, -1.0F, -1.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(12.5926F, 14.7953F, -1.0F, 0.0F, 0.0F, 0.0F)); + PartDefinition leg2_r1 = front_right_leg.addOrReplaceChild("leg2_r1", CubeListBuilder.create().texOffs(105, 60).addBox(-2.4703F, -7.2836F, -1.6566F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 0.6537F, -0.4718F, -1.0353F)); - PartDefinition cube_r27 = middle_right_leg.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(184, 319).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(15.5359F, 12.4827F, 0.0F, 0.0F, 0.0F, 0.0F)); + PartDefinition cube_r7 = front_right_leg.addOrReplaceChild("cube_r7", CubeListBuilder.create().texOffs(92, 107).addBox(-2.628F, -9.1719F, -4.4066F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(90, 48).addBox(-1.628F, 2.8906F, -7.4066F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(114, 11).addBox(-1.628F, 5.3906F, -8.8441F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(114, 5).addBox(-2.128F, 5.3906F, 6.5934F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(96, 0).addBox(-2.128F, 2.8906F, 3.5934F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(32, 94).addBox(-2.628F, -3.1094F, -4.4066F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 0.0F, -0.7854F, 0.0F)); - PartDefinition cube_r28 = middle_right_leg.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(216, 321).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 258).addBox(-7.0F, -2.0F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.0F, 10.2147F, 0.0F, 0.0F, 0.0F, -0.5236F)); + PartDefinition cube_r8 = front_right_leg.addOrReplaceChild("cube_r8", CubeListBuilder.create().texOffs(24, 112).addBox(-3.9F, -3.5F, -1.5F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(9.9319F, -2.2811F, 7.8075F, 0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r29 = middle_right_leg.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(141, 166).addBox(-0.5F, -2.0F, -1.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(10.1165F, 14.1874F, -1.0F, 0.0F, 0.0F, -1.1345F)); + PartDefinition cube_r9 = front_right_leg.addOrReplaceChild("cube_r9", CubeListBuilder.create().texOffs(90, 55).addBox(-1.053F, 3.8596F, -1.2F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, -1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r30 = middle_right_leg.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(240, 268).addBox(-3.5F, -7.0F, -7.0F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(21.3181F, -2.1568F, 0.0F, 0.0F, 0.0F, -0.3927F)); + PartDefinition cube_r10 = front_right_leg.addOrReplaceChild("cube_r10", CubeListBuilder.create().texOffs(114, 0).addBox(-1.053F, 6.2067F, -4.969F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, -0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r31 = middle_right_leg.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(316, 246).addBox(-8.0111F, -2.0401F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 212).addBox(-0.0111F, -2.0401F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, -9.0F, 0.6654F, 0.8189F, 0.8213F)); + PartDefinition cube_r11 = front_right_leg.addOrReplaceChild("cube_r11", CubeListBuilder.create().texOffs(96, 0).addBox(-2.5867F, 2.8906F, 4.3787F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(114, 5).addBox(-2.5867F, 5.3906F, 7.3787F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 0.0F, 0.7854F, 0.0F)); - PartDefinition cube_r32 = middle_right_leg.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(316, 0).addBox(-6.9896F, -1.7723F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 226).addBox(2.4537F, 1.5403F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(56, 298).addBox(0.4537F, 1.5403F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(160, 313).addBox(-6.9838F, -1.4597F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, -9.0F, 0.0F, 1.0036F, 0.0F)); + PartDefinition cube_r12 = front_right_leg.addOrReplaceChild("cube_r12", CubeListBuilder.create().texOffs(0, 120).addBox(-2.1117F, 3.8354F, -1.814F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 1.0472F, 0.7854F, 0.0F)); - PartDefinition cube_r33 = middle_right_leg.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(0, 161).addBox(1.2782F, -3.3855F, -2.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, -9.0F, 0.9581F, 0.3644F, 1.3253F)); + PartDefinition cube_r13 = front_right_leg.addOrReplaceChild("cube_r13", CubeListBuilder.create().texOffs(96, 7).addBox(-2.1117F, 6.1927F, 1.9448F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r34 = middle_right_leg.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(128, 313).addBox(-8.0111F, -2.0401F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 200).addBox(-0.0111F, -2.0401F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, 9.0F, -0.6654F, -0.8189F, 0.8213F)); + PartDefinition cube_r14 = front_right_leg.addOrReplaceChild("cube_r14", CubeListBuilder.create().texOffs(96, 7).addBox(-1.653F, 5.8F, 1.2647F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r35 = middle_right_leg.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(96, 312).addBox(-6.9896F, -1.7723F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(224, 63).addBox(2.4537F, 1.5403F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(24, 298).addBox(0.4537F, 1.5403F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(310, 309).addBox(-6.9838F, -1.4597F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, 9.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition cube_r15 = front_right_leg.addOrReplaceChild("cube_r15", CubeListBuilder.create().texOffs(0, 120).addBox(-1.653F, 3.1553F, -2.2067F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, 7.4247F, 1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r36 = middle_right_leg.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(0, 155).addBox(1.2782F, -3.3855F, -2.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(23.4537F, 12.255F, 9.0F, -0.9581F, -0.3644F, 1.3253F)); + PartDefinition middle_right_leg = Everything.addOrReplaceChild("middle_right_leg", CubeListBuilder.create().texOffs(105, 52).addBox(-0.2352F, -1.7512F, -1.75F, 7.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(92, 107).addBox(9.0F, -6.0625F, -4.0F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(90, 48).addBox(10.0F, 6.0F, -7.0F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(114, 5).addBox(9.5F, 8.5F, 7.0F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(96, 0).addBox(9.5F, 6.0F, 4.0F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(32, 94).addBox(9.0F, 0.0F, -4.0F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(114, 11).addBox(10.0F, 8.5F, -8.4375F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)), PartPose.offset(16.0F, -10.0F, 0.0F)); - PartDefinition cube_r37 = middle_right_leg.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(143, 110).addBox(-1.5F, -2.0F, -1.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(31.8835F, 14.1874F, -1.0F, 0.0F, 0.0F, 1.1345F)); + PartDefinition cube_r16 = middle_right_leg.addOrReplaceChild("cube_r16", CubeListBuilder.create().texOffs(0, 120).addBox(-1.4951F, 3.5075F, -2.0034F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 1.0472F, 0.0F, 0.0F)); - PartDefinition cube_r38 = middle_right_leg.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(332, 188).addBox(4.0F, -2.0F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(310, 108).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(26.0F, 10.2147F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition cube_r17 = middle_right_leg.addOrReplaceChild("cube_r17", CubeListBuilder.create().texOffs(96, 7).addBox(-1.4951F, 6.0034F, 1.6169F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 0.5236F, 0.0F, 0.0F)); - PartDefinition cube_r39 = middle_right_leg.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(226, 268).addBox(-5.0F, -2.0F, -2.0F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.6818F, -3.3033F, 0.0F, 0.0F, 0.0F, -0.8727F)); + PartDefinition cube_r18 = middle_right_leg.addOrReplaceChild("cube_r18", CubeListBuilder.create().texOffs(114, 5).addBox(-2.9933F, 5.3906F, 7.5116F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(96, 0).addBox(-2.9933F, 2.8906F, 4.5116F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 0.0F, 1.5708F, 0.0F)); - PartDefinition back_right_leg = Everything.addOrReplaceChild("back_right_leg", CubeListBuilder.create(), PartPose.offset(20.0F, -14.0F, -16.0F)); + PartDefinition cube_r19 = middle_right_leg.addOrReplaceChild("cube_r19", CubeListBuilder.create().texOffs(0, 120).addBox(-2.5184F, 3.9505F, -1.7476F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 0.0F, 1.5708F, -1.0472F)); - PartDefinition cube_r40 = back_right_leg.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(310, 96).addBox(-9.2861F, 0.3968F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 176).addBox(-12.2861F, 0.3968F, -1.4111F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.3368F, 0.5198F, -0.6139F)); + PartDefinition cube_r20 = middle_right_leg.addOrReplaceChild("cube_r20", CubeListBuilder.create().texOffs(90, 55).addBox(-0.9701F, 3.5075F, -0.9967F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4451F, 3.1094F, 0.0F, -1.0472F, 0.0F, 0.0F)); - PartDefinition cube_r41 = back_right_leg.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(64, 310).addBox(-7.8436F, 4.9867F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(212, 63).addBox(-11.2869F, 8.2993F, -0.4111F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(254, 295).addBox(-9.2869F, 8.2993F, -1.4111F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(32, 310).addBox(-7.8494F, 5.2993F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 0.0F, 0.6109F, 0.0F)); + PartDefinition cube_r21 = middle_right_leg.addOrReplaceChild("cube_r21", CubeListBuilder.create().texOffs(24, 112).addBox(-3.4951F, -7.4404F, 2.456F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 0.0F, 1.5708F, -0.5236F)); - PartDefinition cube_r42 = back_right_leg.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(143, 104).addBox(-12.2918F, -6.7219F, -0.4111F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.5655F, 0.2448F, -1.2059F)); + PartDefinition leg2_r2 = middle_right_leg.addOrReplaceChild("leg2_r2", CubeListBuilder.create().texOffs(105, 60).addBox(-2.3849F, -7.1818F, -1.25F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(11.4951F, 3.1094F, 0.0F, 0.0F, 0.0F, -0.8727F)); - PartDefinition cube_r43 = back_right_leg.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(150, 262).addBox(-3.2073F, -13.5528F, -0.4111F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.4923F, 0.3776F, -0.9686F)); + PartDefinition back_right_leg = Everything.addOrReplaceChild("back_right_leg", CubeListBuilder.create(), PartPose.offset(15.0F, -10.0F, -11.0F)); - PartDefinition cube_r44 = back_right_leg.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(164, 44).addBox(-24.3795F, -7.6835F, -0.4111F, 15.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(208, 192).addBox(-6.3795F, -14.6835F, -5.4111F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(306, 218).addBox(3.0905F, 5.2993F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(134, 288).addBox(10.528F, 8.2993F, -1.4111F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(208, 197).addBox(12.528F, 8.2993F, -0.4111F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(306, 206).addBox(3.0846F, 4.9867F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(143, 78).addBox(-6.3795F, -2.6835F, -5.4111F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 0.0F, 0.6109F, 0.0F)); + PartDefinition cube_r22 = back_right_leg.addOrReplaceChild("cube_r22", CubeListBuilder.create().texOffs(32, 94).addBox(-2.628F, -3.1094F, -3.5934F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(114, 5).addBox(-2.128F, 5.3906F, -8.0309F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(114, 11).addBox(-1.628F, 5.3906F, 7.4066F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(90, 63).addBox(-1.628F, 2.8906F, 4.4066F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)) + .texOffs(92, 107).addBox(-2.628F, -9.1719F, -3.5934F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)) + .texOffs(0, 112).addBox(-12.8632F, -4.8606F, -1.8434F, 8.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, 0.0F, 0.7854F, 0.0F)); - PartDefinition cube_r45 = back_right_leg.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(202, 268).addBox(1.2196F, -13.3283F, -5.4111F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.2618F, 0.5585F, -0.4682F)); + PartDefinition cube_r23 = back_right_leg.addOrReplaceChild("cube_r23", CubeListBuilder.create().texOffs(90, 71).addBox(-3.0F, -2.0F, -1.5F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(5.4587F, 8.0F, -11.6429F, 0.0F, 0.7854F, 0.0F)); - PartDefinition cube_r46 = back_right_leg.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(0, 310).addBox(4.9983F, -1.7464F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 44).addBox(12.9983F, -1.7464F, -0.7468F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.2042F, -0.3378F, 0.5585F)); + PartDefinition cube_r24 = back_right_leg.addOrReplaceChild("cube_r24", CubeListBuilder.create().texOffs(0, 120).addBox(-1.603F, 3.1553F, -0.7933F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, -1.0472F, 0.7854F, 0.0F)); - PartDefinition cube_r47 = back_right_leg.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(278, 309).addBox(4.1301F, 4.9867F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(46, 211).addBox(13.5734F, 8.2993F, 0.2532F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(222, 295).addBox(11.5734F, 8.2993F, -0.7468F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(308, 260).addBox(4.1359F, 5.2993F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 0.0F, -0.3927F, 0.0F)); + PartDefinition cube_r25 = back_right_leg.addOrReplaceChild("cube_r25", CubeListBuilder.create().texOffs(96, 7).addBox(-1.603F, 5.8F, -4.2647F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, -0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r48 = back_right_leg.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(143, 84).addBox(12.1033F, -10.6069F, 0.2532F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, -0.3591F, -0.1624F, 1.164F)); + PartDefinition cube_r26 = back_right_leg.addOrReplaceChild("cube_r26", CubeListBuilder.create().texOffs(114, 5).addBox(-2.5867F, 5.3906F, -8.8162F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)) + .texOffs(90, 71).addBox(-2.5867F, 2.8906F, -7.3787F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, 0.0F, -0.7854F, 0.0F)); - PartDefinition cube_r49 = back_right_leg.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(216, 307).addBox(2.6772F, -0.4064F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(332, 20).addBox(10.6772F, -0.4064F, -3.5458F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 1.6579F, 1.0456F, 1.6462F)); + PartDefinition cube_r27 = back_right_leg.addOrReplaceChild("cube_r27", CubeListBuilder.create().texOffs(96, 7).addBox(-16.4617F, 10.1927F, 0.0552F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(12.2644F, -1.2995F, -2.9434F, 0.0F, 1.5708F, -0.5236F)); - PartDefinition cube_r50 = back_right_leg.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(184, 307).addBox(1.4499F, 4.9867F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(34, 211).addBox(10.8932F, 8.2993F, -2.5458F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(166, 289).addBox(8.8932F, 8.2993F, -3.5458F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(306, 273).addBox(1.4557F, 5.2993F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 3.1416F, 1.5272F, 3.1416F)); + PartDefinition cube_r28 = back_right_leg.addOrReplaceChild("cube_r28", CubeListBuilder.create().texOffs(96, 7).addBox(-2.0617F, 6.1927F, -4.9448F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, -0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r51 = back_right_leg.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(143, 78).addBox(10.9706F, -8.1778F, -2.5458F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 1.6189F, 0.4359F, 1.5911F)); + PartDefinition cube_r29 = back_right_leg.addOrReplaceChild("cube_r29", CubeListBuilder.create().texOffs(0, 120).addBox(-2.0617F, 3.8354F, -1.186F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, -1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r52 = back_right_leg.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 110).addBox(11.6615F, -9.6594F, -0.4111F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 0.5655F, 0.2448F, 1.2059F)); + PartDefinition cube_r30 = back_right_leg.addOrReplaceChild("cube_r30", CubeListBuilder.create().texOffs(114, 0).addBox(-1.153F, 6.2067F, 1.969F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, 0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r53 = back_right_leg.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(204, 331).addBox(12.0929F, -1.2237F, -1.4111F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(306, 194).addBox(4.0929F, -1.2237F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(16.9537F, 4.996F, -16.645F, 0.3368F, 0.5198F, 0.6139F)); + PartDefinition cube_r31 = back_right_leg.addOrReplaceChild("cube_r31", CubeListBuilder.create().texOffs(90, 55).addBox(-1.153F, 3.8596F, -1.8F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, 1.0472F, 0.7854F, 0.0F)); - PartDefinition left_foreleg = Everything.addOrReplaceChild("left_foreleg", CubeListBuilder.create(), PartPose.offset(-16.687F, -12.5489F, 32.0F)); + PartDefinition cube_r32 = back_right_leg.addOrReplaceChild("cube_r32", CubeListBuilder.create().texOffs(24, 112).addBox(-3.525F, -3.5F, -1.5F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(9.6667F, -2.2811F, -8.0726F, -2.618F, 0.7854F, 3.1416F)); - PartDefinition cube_r54 = left_foreleg.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(330, 12).addBox(-2.0F, -19.0F, 2.0F, 9.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(181, 130).addBox(0.0F, 10.0F, 2.0F, 5.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(38, 155).addBox(-1.0F, 5.0F, 2.0F, 7.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(328, 67).addBox(-2.0F, 0.0F, 2.0F, 9.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(74, 271).addBox(-2.0F, -15.0F, -3.0F, 9.0F, 18.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.3303F, 0.8614F, 23.2888F, 0.4363F, 0.0F, -0.6981F)); + PartDefinition leg2_r3 = back_right_leg.addOrReplaceChild("leg2_r3", CubeListBuilder.create().texOffs(105, 60).addBox(-2.4703F, -7.2836F, -1.3434F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(8.4437F, 3.1094F, -7.4247F, -0.6537F, 0.4718F, -1.0353F)); - PartDefinition cube_r55 = left_foreleg.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(185, 208).addBox(-3.2101F, 5.5261F, -0.5167F, 5.0F, 5.0F, 3.0F, new CubeDeformation(0.0F)) - .texOffs(38, 104).addBox(-4.2101F, -1.4739F, -1.5167F, 7.0F, 7.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(2.4626F, 1.7203F, 23.8964F, 0.0F, 0.0F, -0.6981F)); + PartDefinition left_foreleg = Everything.addOrReplaceChild("left_foreleg", CubeListBuilder.create(), PartPose.offset(-10.0F, -7.0F, 15.0F)); - PartDefinition cube_r56 = left_foreleg.addOrReplaceChild("cube_r56", CubeListBuilder.create().texOffs(0, 247).addBox(1.0F, -3.5F, -4.5F, 13.0F, 7.0F, 7.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-0.6636F, 0.8614F, 14.1357F, 0.0F, 1.3526F, -0.3491F)); + PartDefinition hand_r1 = left_foreleg.addOrReplaceChild("hand_r1", CubeListBuilder.create().texOffs(0, 94).mirror().addBox(-11.7475F, -20.5853F, -0.4181F, 5.0F, 7.0F, 11.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(83, 95).addBox(-11.2475F, -20.0853F, 10.5819F, 4.0F, 3.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.5574F, 0.5545F, 0.5268F, -0.7695F, 0.5364F, -0.2852F)); - PartDefinition cube_r57 = left_foreleg.addOrReplaceChild("cube_r57", CubeListBuilder.create().texOffs(280, 0).addBox(-5.5F, -9.0F, -3.0F, 12.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-2.8303F, 0.8614F, 19.2888F, 1.2787F, 0.7203F, 1.0259F)); + PartDefinition pincer2_r2 = left_foreleg.addOrReplaceChild("pincer2_r2", CubeListBuilder.create().texOffs(109, 95).addBox(-11.2475F, -19.0731F, 5.3153F, 4.0F, 3.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.5574F, 0.5545F, 0.5268F, -1.0313F, 0.5364F, -0.2852F)); - PartDefinition front_left_leg = Everything.addOrReplaceChild("front_left_leg", CubeListBuilder.create(), PartPose.offset(-17.0F, -15.0F, 16.5F)); + PartDefinition arm1_r2 = left_foreleg.addOrReplaceChild("arm1_r2", CubeListBuilder.create().texOffs(62, 94).mirror().addBox(-1.9426F, 3.3415F, 4.4809F, 3.0F, 3.0F, 12.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.5574F, 1.0545F, 1.5268F, 0.6981F, -0.2618F, 0.0F)); - PartDefinition cube_r58 = front_left_leg.addOrReplaceChild("cube_r58", CubeListBuilder.create().texOffs(0, 0).addBox(-13.6615F, -9.6594F, -3.5889F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, -0.5655F, 0.2448F, -1.2059F)); + PartDefinition arm2_r2 = left_foreleg.addOrReplaceChild("arm2_r2", CubeListBuilder.create().texOffs(92, 94).mirror().addBox(-2.4426F, -1.5545F, -1.5268F, 4.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-0.5574F, 0.5545F, 1.5268F, 0.0F, -0.2618F, 0.0F)); - PartDefinition cube_r59 = front_left_leg.addOrReplaceChild("cube_r59", CubeListBuilder.create().texOffs(183, 178).addBox(-15.0929F, -1.2237F, -4.5889F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(169, 166).addBox(-12.0929F, -1.2237F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, -0.3368F, 0.5198F, -0.6139F)); + PartDefinition front_left_leg = Everything.addOrReplaceChild("front_left_leg", CubeListBuilder.create(), PartPose.offset(-15.0F, -10.0F, 11.0F)); - PartDefinition cube_r60 = front_left_leg.addOrReplaceChild("cube_r60", CubeListBuilder.create().texOffs(28, 181).addBox(-11.0846F, 4.9867F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-5.6205F, -2.6835F, -8.5889F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(0, 130).addBox(9.3795F, -7.6835F, -3.5889F, 15.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(141, 166).addBox(-0.6205F, -14.6835F, -8.5889F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(280, 22).addBox(-11.0905F, 5.2993F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(28, 221).addBox(-12.528F, 8.2993F, -4.5889F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(38, 164).addBox(-14.528F, 8.2993F, -3.5889F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.0F, 0.6109F, 0.0F)); + PartDefinition cube_r33 = front_left_leg.addOrReplaceChild("cube_r33", CubeListBuilder.create().texOffs(32, 94).mirror().addBox(-4.372F, -3.1094F, -4.4066F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(96, 0).mirror().addBox(-3.872F, 2.8906F, 3.5934F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 5).mirror().addBox(-3.872F, 5.3906F, 6.5934F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(113, 13).mirror().addBox(-3.372F, 5.3906F, -8.8441F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(90, 48).mirror().addBox(-3.372F, 2.8906F, -7.4066F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(92, 107).mirror().addBox(-1.372F, -9.1719F, -4.4066F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(0, 112).mirror().addBox(4.8632F, -4.8606F, -2.1566F, 8.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 0.0F, 0.7854F, 0.0F)); - PartDefinition cube_r61 = front_left_leg.addOrReplaceChild("cube_r61", CubeListBuilder.create().texOffs(282, 226).addBox(-0.1564F, 4.9867F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(181, 113).addBox(9.2869F, 8.2993F, -3.5889F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(114, 233).addBox(7.2869F, 8.2993F, -4.5889F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(282, 214).addBox(-0.1506F, 5.2993F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.0F, 0.6109F, 0.0F)); + PartDefinition cube_r34 = front_left_leg.addOrReplaceChild("cube_r34", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-3.397F, 3.1553F, -2.2067F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 1.0472F, 0.7854F, 0.0F)); - PartDefinition cube_r62 = front_left_leg.addOrReplaceChild("cube_r62", CubeListBuilder.create().texOffs(180, 221).addBox(9.2861F, 0.3968F, -4.5889F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(286, 92).addBox(1.2861F, 0.3968F, -5.5889F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.3368F, 0.5198F, 0.6139F)); + PartDefinition cube_r35 = front_left_leg.addOrReplaceChild("cube_r35", CubeListBuilder.create().texOffs(96, 7).mirror().addBox(-3.397F, 5.8F, 1.2647F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r63 = front_left_leg.addOrReplaceChild("cube_r63", CubeListBuilder.create().texOffs(0, 36).addBox(10.2918F, -6.7219F, -3.5889F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.5655F, 0.2448F, 1.2059F)); + PartDefinition cube_r36 = front_left_leg.addOrReplaceChild("cube_r36", CubeListBuilder.create().texOffs(114, 5).mirror().addBox(-3.4133F, 5.3906F, 7.3787F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(96, 0).mirror().addBox(-3.4133F, 2.8906F, 4.3787F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 0.0F, -0.7854F, 0.0F)); - PartDefinition cube_r64 = front_left_leg.addOrReplaceChild("cube_r64", CubeListBuilder.create().texOffs(174, 192).addBox(-6.7927F, -13.5528F, -3.5889F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.4923F, 0.3776F, 0.9686F)); + PartDefinition cube_r37 = front_left_leg.addOrReplaceChild("cube_r37", CubeListBuilder.create().texOffs(96, 7).mirror().addBox(-2.8383F, 6.1927F, 1.9448F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(24, 112).mirror().addBox(-3.8816F, -7.5068F, 2.341F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r65 = front_left_leg.addOrReplaceChild("cube_r65", CubeListBuilder.create().texOffs(236, 178).addBox(-6.2196F, -13.3283F, -8.5889F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.2618F, 0.5585F, 0.4682F)); + PartDefinition cube_r38 = front_left_leg.addOrReplaceChild("cube_r38", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-2.8383F, 3.8354F, -1.814F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r66 = front_left_leg.addOrReplaceChild("cube_r66", CubeListBuilder.create().texOffs(282, 202).addBox(-12.9983F, -1.7464F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(36, 202).addBox(-15.9983F, -1.7464F, -5.2532F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.2042F, -0.3378F, -0.5585F)); + PartDefinition cube_r39 = front_left_leg.addOrReplaceChild("cube_r39", CubeListBuilder.create().texOffs(114, 0).mirror().addBox(-2.847F, 6.2067F, -4.969F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, -0.5236F, 0.7854F, 0.0F)); - PartDefinition cube_r67 = front_left_leg.addOrReplaceChild("cube_r67", CubeListBuilder.create().texOffs(282, 190).addBox(-12.1301F, 4.9867F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(176, 63).addBox(-15.5734F, 8.2993F, -4.2532F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(232, 63).addBox(-13.5734F, 8.2993F, -5.2532F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(282, 178).addBox(-12.1359F, 5.2993F, -6.2532F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.0F, -0.3927F, 0.0F)); + PartDefinition cube_r40 = front_left_leg.addOrReplaceChild("cube_r40", CubeListBuilder.create().texOffs(90, 55).mirror().addBox(-2.847F, 3.8596F, -1.2F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, -1.0472F, 0.7854F, 0.0F)); - PartDefinition cube_r68 = front_left_leg.addOrReplaceChild("cube_r68", CubeListBuilder.create().texOffs(0, 30).addBox(-14.1033F, -10.6069F, -4.2532F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, 0.3591F, -0.1624F, -1.164F)); + PartDefinition leg2_r4 = front_left_leg.addOrReplaceChild("leg2_r4", CubeListBuilder.create().texOffs(105, 60).mirror().addBox(-4.5297F, -7.2836F, -1.6566F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, 7.4247F, 0.6537F, 0.4718F, 1.0353F)); - PartDefinition cube_r69 = front_left_leg.addOrReplaceChild("cube_r69", CubeListBuilder.create().texOffs(282, 166).addBox(-10.6772F, -0.4064F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(42, 193).addBox(-13.6772F, -0.4064F, -2.4542F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, -1.6579F, 1.0456F, -1.6462F)); + PartDefinition middle_left_leg = Everything.addOrReplaceChild("middle_left_leg", CubeListBuilder.create().texOffs(32, 94).mirror().addBox(-16.0F, 0.0F, -4.0F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(96, 0).mirror().addBox(-15.5F, 6.0F, 4.0F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 5).mirror().addBox(-15.5F, 8.5F, 7.0F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 11).mirror().addBox(-15.0F, 8.5F, -8.4375F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(90, 48).mirror().addBox(-15.0F, 6.0F, -7.0F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(92, 107).mirror().addBox(-13.0F, -6.0625F, -4.0F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(105, 52).mirror().addBox(-6.7648F, -1.7512F, -1.75F, 7.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(-16.0F, -10.0F, 0.0F)); - PartDefinition cube_r70 = front_left_leg.addOrReplaceChild("cube_r70", CubeListBuilder.create().texOffs(278, 281).addBox(-9.4499F, 4.9867F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(164, 63).addBox(-12.8932F, 8.2993F, -1.4542F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(28, 228).addBox(-10.8932F, 8.2993F, -2.4542F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(280, 34).addBox(-9.4557F, 5.2993F, -3.4542F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, -3.1416F, 1.5272F, -3.1416F)); + PartDefinition leg2_r5 = middle_left_leg.addOrReplaceChild("leg2_r5", CubeListBuilder.create().texOffs(105, 60).mirror().addBox(-4.6151F, -7.1818F, -1.25F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 0.0F, 0.0F, 0.8727F)); - PartDefinition cube_r71 = front_left_leg.addOrReplaceChild("cube_r71", CubeListBuilder.create().texOffs(0, 6).addBox(-12.9706F, -8.1778F, -1.4542F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-19.9537F, 5.996F, 16.145F, -1.6189F, 0.4359F, -1.5911F)); + PartDefinition cube_r41 = middle_left_leg.addOrReplaceChild("cube_r41", CubeListBuilder.create().texOffs(24, 112).mirror().addBox(-3.5049F, -7.4404F, 2.456F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(96, 7).mirror().addBox(-2.5316F, 6.2591F, 2.0599F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 0.0F, -1.5708F, 0.5236F)); - PartDefinition middle_left_leg = Everything.addOrReplaceChild("middle_left_leg", CubeListBuilder.create().texOffs(0, 78).addBox(-25.0F, 2.8125F, -7.0F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(230, 295).addBox(-30.4699F, 10.7953F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(260, 185).addBox(-31.9074F, 13.7953F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(200, 63).addBox(-33.9074F, 13.7953F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(294, 297).addBox(-30.4641F, 10.4827F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(208, 226).addBox(-10.0F, -2.1875F, -2.0F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(0, 181).addBox(-20.0F, -9.1875F, -7.0F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offset(-20.0F, -14.5F, 0.0F)); + PartDefinition cube_r42 = middle_left_leg.addOrReplaceChild("cube_r42", CubeListBuilder.create().texOffs(90, 55).mirror().addBox(-3.0299F, 3.5075F, -0.9967F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, -1.0472F, 0.0F, 0.0F)); - PartDefinition cube_r72 = middle_left_leg.addOrReplaceChild("cube_r72", CubeListBuilder.create().texOffs(38, 30).addBox(-1.5F, -2.0F, -1.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-10.1165F, 14.1874F, -1.0F, 0.0F, 0.0F, 1.1345F)); + PartDefinition cube_r43 = middle_left_leg.addOrReplaceChild("cube_r43", CubeListBuilder.create().texOffs(114, 0).mirror().addBox(6.5701F, 6.0034F, -4.6169F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 0).mirror().addBox(-50.4299F, 6.0034F, -4.6169F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(35.9049F, 3.1094F, 0.0F, -0.5236F, 0.0F, 0.0F)); - PartDefinition cube_r73 = middle_left_leg.addOrReplaceChild("cube_r73", CubeListBuilder.create().texOffs(24, 271).addBox(4.0F, -2.0F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(286, 104).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.0F, 10.2147F, 0.0F, 0.0F, 0.0F, 0.5236F)); + PartDefinition cube_r44 = middle_left_leg.addOrReplaceChild("cube_r44", CubeListBuilder.create().texOffs(96, 0).mirror().addBox(-3.0067F, 2.8906F, 4.5116F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 5).mirror().addBox(-3.0067F, 5.3906F, 7.5116F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 0.0F, -1.5708F, 0.0F)); - PartDefinition cube_r74 = middle_left_leg.addOrReplaceChild("cube_r74", CubeListBuilder.create().texOffs(286, 116).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-15.5359F, 12.4827F, 0.0F, 0.0F, 0.0F, 0.0F)); + PartDefinition cube_r45 = middle_left_leg.addOrReplaceChild("cube_r45", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-2.5316F, 3.9505F, -1.7476F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 0.0F, -1.5708F, 1.0472F)); - PartDefinition cube_r75 = middle_left_leg.addOrReplaceChild("cube_r75", CubeListBuilder.create().texOffs(183, 187).addBox(2.5F, -1.0F, -1.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(196, 240).addBox(0.5F, -1.0F, -2.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(286, 128).addBox(-6.9375F, -4.0F, -3.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-12.5926F, 14.7953F, -1.0F, 0.0F, 0.0F, 0.0F)); + PartDefinition cube_r46 = middle_left_leg.addOrReplaceChild("cube_r46", CubeListBuilder.create().texOffs(96, 7).mirror().addBox(-3.5299F, 6.0034F, 1.6169F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 0.5236F, 0.0F, 0.0F)); - PartDefinition cube_r76 = middle_left_leg.addOrReplaceChild("cube_r76", CubeListBuilder.create().texOffs(208, 218).addBox(-5.0F, -2.0F, -2.0F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-11.6818F, -3.3033F, 0.0F, 0.0F, 0.0F, 0.8727F)); + PartDefinition cube_r47 = middle_left_leg.addOrReplaceChild("cube_r47", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-3.4299F, 3.5075F, -2.0034F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-11.4951F, 3.1094F, 0.0F, 1.0472F, 0.0F, 0.0F)); - PartDefinition cube_r77 = middle_left_leg.addOrReplaceChild("cube_r77", CubeListBuilder.create().texOffs(188, 63).addBox(-4.4537F, 1.5403F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(110, 288).addBox(-1.0104F, -1.7723F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(142, 289).addBox(-1.0162F, -1.4597F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(248, 63).addBox(-2.4537F, 1.5403F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, -9.0F, 0.0F, -1.0036F, 0.0F)); + PartDefinition back_left_leg = Everything.addOrReplaceChild("back_left_leg", CubeListBuilder.create(), PartPose.offset(-15.0F, -10.0F, -11.0F)); - PartDefinition cube_r78 = middle_left_leg.addOrReplaceChild("cube_r78", CubeListBuilder.create().texOffs(38, 36).addBox(-3.2782F, -3.3855F, -2.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, -9.0F, 0.9581F, -0.3644F, -1.3253F)); + PartDefinition leg1_r2 = back_left_leg.addOrReplaceChild("leg1_r2", CubeListBuilder.create().texOffs(0, 112).mirror().addBox(4.8632F, -4.8606F, -1.8434F, 8.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(92, 107).mirror().addBox(-1.372F, -9.1719F, -3.5934F, 4.0F, 6.0625F, 8.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(90, 63).mirror().addBox(-3.372F, 2.8906F, 4.4066F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 11).mirror().addBox(-3.372F, 5.3906F, 7.4066F, 5.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 5).mirror().addBox(-3.872F, 5.3906F, -8.0309F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(90, 71).mirror().addBox(-3.872F, 2.8906F, -6.5934F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(32, 94).mirror().addBox(-4.372F, -3.1094F, -3.5934F, 7.0F, 10.0F, 8.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, 0.0F, -0.7854F, 0.0F)); - PartDefinition cube_r79 = middle_left_leg.addOrReplaceChild("cube_r79", CubeListBuilder.create().texOffs(65, 271).addBox(-2.9889F, -2.0401F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(286, 140).addBox(0.0111F, -2.0401F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, -9.0F, 0.6654F, -0.8189F, -0.8213F)); + PartDefinition leg2_r6 = back_left_leg.addOrReplaceChild("leg2_r6", CubeListBuilder.create().texOffs(105, 60).mirror().addBox(-4.5297F, -7.2836F, -1.3434F, 7.0F, 3.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, -0.6537F, -0.4718F, 1.0353F)); - PartDefinition cube_r80 = middle_left_leg.addOrReplaceChild("cube_r80", CubeListBuilder.create().texOffs(236, 205).addBox(-1.5F, -7.0F, -7.0F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-21.3181F, -2.1568F, 0.0F, 0.0F, 0.0F, 0.3927F)); + PartDefinition cube_r48 = back_left_leg.addOrReplaceChild("cube_r48", CubeListBuilder.create().texOffs(24, 112).mirror().addBox(-3.525F, -3.5F, -1.5F, 7.0F, 7.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-9.6667F, -2.2811F, -8.0726F, -2.618F, -0.7854F, -3.1416F)); - PartDefinition cube_r81 = middle_left_leg.addOrReplaceChild("cube_r81", CubeListBuilder.create().texOffs(0, 298).addBox(-4.0F, -2.0F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(242, 329).addBox(-7.0F, -2.0F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-26.0F, 10.2147F, 0.0F, 0.0F, 0.0F, -0.5236F)); + PartDefinition cube_r49 = back_left_leg.addOrReplaceChild("cube_r49", CubeListBuilder.create().texOffs(90, 55).mirror().addBox(-2.897F, 3.8596F, -1.8F, 4.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, 1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r82 = middle_left_leg.addOrReplaceChild("cube_r82", CubeListBuilder.create().texOffs(45, 6).addBox(-0.5F, -2.0F, -1.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-31.8835F, 14.1874F, -1.0F, 0.0F, 0.0F, -1.1345F)); + PartDefinition cube_r50 = back_left_leg.addOrReplaceChild("cube_r50", CubeListBuilder.create().texOffs(114, 0).mirror().addBox(-2.897F, 6.2067F, 1.969F, 4.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, 0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r83 = middle_left_leg.addOrReplaceChild("cube_r83", CubeListBuilder.create().texOffs(198, 295).addBox(-1.0162F, -1.4597F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(260, 178).addBox(-2.4537F, 1.5403F, -3.0F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(193, 113).addBox(-4.4537F, 1.5403F, -2.0F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(270, 293).addBox(-1.0104F, -1.7723F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, 9.0F, 0.0F, 1.0036F, 0.0F)); + PartDefinition cube_r51 = back_left_leg.addOrReplaceChild("cube_r51", CubeListBuilder.create().texOffs(90, 71).mirror().addBox(-3.4133F, 2.8906F, -7.3787F, 6.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(114, 5).mirror().addBox(-3.4133F, 5.3906F, -8.8162F, 6.0F, 1.5F, 1.4375F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, 0.0F, 0.7854F, 0.0F)); - PartDefinition cube_r84 = middle_left_leg.addOrReplaceChild("cube_r84", CubeListBuilder.create().texOffs(45, 0).addBox(-3.2782F, -3.3855F, -2.0F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, 9.0F, -0.9581F, 0.3644F, -1.3253F)); + PartDefinition cube_r52 = back_left_leg.addOrReplaceChild("cube_r52", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-2.9383F, 3.8354F, -1.186F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, -1.0472F, 0.7854F, 0.0F)); - PartDefinition cube_r85 = middle_left_leg.addOrReplaceChild("cube_r85", CubeListBuilder.create().texOffs(101, 271).addBox(-2.9889F, -2.0401F, -3.0F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(174, 289).addBox(0.0111F, -2.0401F, -4.0F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-23.4537F, 12.255F, 9.0F, -0.6654F, 0.8189F, -0.8213F)); + PartDefinition cube_r53 = back_left_leg.addOrReplaceChild("cube_r53", CubeListBuilder.create().texOffs(96, 7).mirror().addBox(-2.9383F, 6.1927F, -4.9448F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, -0.5236F, 0.7854F, 0.0F)); - PartDefinition back_left_leg = Everything.addOrReplaceChild("back_left_leg", CubeListBuilder.create(), PartPose.offset(-20.0F, -14.0F, -16.0F)); + PartDefinition cube_r54 = back_left_leg.addOrReplaceChild("cube_r54", CubeListBuilder.create().texOffs(96, 7).mirror().addBox(-3.297F, 5.8F, -4.2647F, 5.0F, 2.875F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, -0.5236F, -0.7854F, 0.0F)); - PartDefinition cube_r86 = back_left_leg.addOrReplaceChild("cube_r86", CubeListBuilder.create().texOffs(48, 202).addBox(9.2869F, 8.2993F, -0.4111F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(64, 298).addBox(-0.1564F, 4.9867F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(96, 300).addBox(-0.1506F, 5.2993F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(260, 205).addBox(7.2869F, 8.2993F, -1.4111F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 0.0F, -0.6109F, 0.0F)); + PartDefinition cube_r55 = back_left_leg.addOrReplaceChild("cube_r55", CubeListBuilder.create().texOffs(0, 120).mirror().addBox(-3.297F, 3.1553F, -0.7933F, 5.0F, 4.0F, 3.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(-8.4437F, 3.1094F, -7.4247F, -1.0472F, -0.7854F, 0.0F)); - PartDefinition cube_r87 = back_left_leg.addOrReplaceChild("cube_r87", CubeListBuilder.create().texOffs(52, 50).addBox(10.2918F, -6.7219F, -0.4111F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.5655F, -0.2448F, 1.2059F)); - - PartDefinition cube_r88 = back_left_leg.addOrReplaceChild("cube_r88", CubeListBuilder.create().texOffs(330, 86).addBox(9.2861F, 0.3968F, -1.4111F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(32, 298).addBox(1.2861F, 0.3968F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.3368F, -0.5198F, 0.6139F)); - - PartDefinition cube_r89 = back_left_leg.addOrReplaceChild("cube_r89", CubeListBuilder.create().texOffs(208, 166).addBox(-0.6205F, -14.6835F, -5.4111F, 7.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)) - .texOffs(143, 130).addBox(9.3795F, -7.6835F, -0.4111F, 15.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(306, 170).addBox(-11.0846F, 4.9867F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(208, 192).addBox(-14.528F, 8.2993F, -0.4111F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(280, 63).addBox(-12.528F, 8.2993F, -1.4111F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(306, 14).addBox(-11.0905F, 5.2993F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(0, 104).addBox(-5.6205F, -2.6835F, -5.4111F, 12.0F, 12.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 0.0F, -0.6109F, 0.0F)); - - PartDefinition cube_r90 = back_left_leg.addOrReplaceChild("cube_r90", CubeListBuilder.create().texOffs(92, 231).addBox(-6.7927F, -13.5528F, -0.4111F, 10.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.4923F, -0.3776F, 0.9686F)); - - PartDefinition cube_r91 = back_left_leg.addOrReplaceChild("cube_r91", CubeListBuilder.create().texOffs(0, 78).addBox(-14.1033F, -10.6069F, 0.2532F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.3591F, 0.1624F, -1.164F)); - - PartDefinition cube_r92 = back_left_leg.addOrReplaceChild("cube_r92", CubeListBuilder.create().texOffs(330, 166).addBox(-15.9983F, -1.7464F, -0.7468F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(128, 301).addBox(-12.9983F, -1.7464F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.2042F, 0.3378F, -0.5585F)); - - PartDefinition cube_r93 = back_left_leg.addOrReplaceChild("cube_r93", CubeListBuilder.create().texOffs(160, 301).addBox(-12.1301F, 4.9867F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(302, 285).addBox(-12.1359F, 5.2993F, -1.7468F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(260, 212).addBox(-13.5734F, 8.2993F, -0.7468F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(208, 166).addBox(-15.5734F, 8.2993F, 0.2532F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 0.0F, 0.3927F, 0.0F)); - - PartDefinition cube_r94 = back_left_leg.addOrReplaceChild("cube_r94", CubeListBuilder.create().texOffs(164, 262).addBox(-6.2196F, -13.3283F, -5.4111F, 5.0F, 13.0F, 14.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, -0.2618F, -0.5585F, 0.4682F)); - - PartDefinition cube_r95 = back_left_leg.addOrReplaceChild("cube_r95", CubeListBuilder.create().texOffs(0, 84).addBox(-12.9706F, -8.1778F, -2.5458F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 1.6189F, -0.4359F, -1.5911F)); - - PartDefinition cube_r96 = back_left_leg.addOrReplaceChild("cube_r96", CubeListBuilder.create().texOffs(330, 272).addBox(-13.6772F, -0.4064F, -3.5458F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(304, 26).addBox(-10.6772F, -0.4064F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 1.6579F, -1.0456F, -1.6462F)); - - PartDefinition cube_r97 = back_left_leg.addOrReplaceChild("cube_r97", CubeListBuilder.create().texOffs(304, 38).addBox(-9.4499F, 4.9867F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(254, 305).addBox(-9.4557F, 5.2993F, -4.5458F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(264, 63).addBox(-10.8932F, 8.2993F, -3.5458F, 2.0F, 1.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(208, 171).addBox(-12.8932F, 8.2993F, -2.5458F, 2.0F, 1.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 3.1416F, -1.5272F, -3.1416F)); - - PartDefinition cube_r98 = back_left_leg.addOrReplaceChild("cube_r98", CubeListBuilder.create().texOffs(306, 182).addBox(-12.0929F, -1.2237F, -2.4111F, 8.0F, 4.0F, 8.0F, new CubeDeformation(0.0F)) - .texOffs(186, 331).addBox(-15.0929F, -1.2237F, -1.4111F, 3.0F, 3.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 0.3368F, -0.5198F, -0.6139F)); - - PartDefinition cube_r99 = back_left_leg.addOrReplaceChild("cube_r99", CubeListBuilder.create().texOffs(0, 104).addBox(-13.6615F, -9.6594F, -0.4111F, 2.0F, 2.0F, 4.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-16.9537F, 4.996F, -16.645F, 0.5655F, -0.2448F, -1.2059F)); - - return LayerDefinition.create(meshdefinition, 512, 512); + return LayerDefinition.create(meshdefinition, 128, 128); } + @Override public void setupAnim(T pEntity, float pLimbSwing, float pLimbSwingAmount, float pAgeInTicks, float pNetHeadYaw, float pHeadPitch) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java index 2ecad78db..f6ba33641 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 9 - 3 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.entity; @@ -69,4 +69,10 @@ protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean p //todo baby chulls drop chips, adults drop marks } + + @Override + public double getPassengersRidingOffset() + { + return ((this.getBbHeight() / 2f) - 0.75d); + } } diff --git a/src/surgebinding/resources/assets/surgebinding/textures/entity/chull/chull.png b/src/surgebinding/resources/assets/surgebinding/textures/entity/chull/chull.png index ca532fd505793cc4547bd1ff284271441fe95578..89bce6a58ca6d4eab0f3463317e964ae4a2b10b8 100644 GIT binary patch literal 6816 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 Date: Wed, 30 Apr 2025 11:18:03 +1200 Subject: [PATCH 1004/1090] [Allomancy] fix issue where non living entities were not showing as containing metal. ie minecarts. coin projectiles were special case'd and didn't have the issue. --- .../common/manifestation/AllomancyIronSteel.java | 16 ++++++++-------- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 4 ++-- .../tags/entity_types/contains_metal.json | 7 ++++++- .../leaf/cosmere/tag/CosmereTagProvider.java | 7 ++++++- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 8ee27ece1..56e21f595 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 3 - 2024 ~ Leaf + * File updated ~ 30 - 4 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; @@ -348,7 +348,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 direction = VectorHelper.getDirection( blockCenter, entity.blockPosition().getCenter(),//use entity block position, so we can do things like hover directly over a block more easily - (isPush ? -1f: 2f)); + (isPush ? -1f : 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vec3 normalize = direction.normalize(); @@ -357,7 +357,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 add = entity.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); // cannot have flat multiplier; can get ridiculous - double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight-1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); + double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight - 1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); //get flung off rides entity.stopRiding(); @@ -415,13 +415,13 @@ private void pushpullBlocks(SpiritwebCapability data) public static boolean entityContainsMetal(Entity entity) { - if (entity instanceof LivingEntity livingEntity) + if (containsMetal(entity)) { - if (containsMetal(entity)) - { - return true; - } + return true; + } + if (entity instanceof LivingEntity livingEntity) + { if (containsMetal(livingEntity.getMainHandItem()) || containsMetal(livingEntity.getOffhandItem())) { return true; diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index a7b448326..5438eca89 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,6 +1,6 @@ -// 1.20.1 2025-01-10T11:20:10.7014372 Tags: cosmere +// 1.20.1 2025-04-30T10:54:20.1947047 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json -29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json +af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ores.json 2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json index 796f4ec73..5029c4b97 100644 --- a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json @@ -1,5 +1,10 @@ { "values": [ - "minecraft:iron_golem" + "minecraft:iron_golem", + "minecraft:minecart", + "minecraft:chest_minecart", + "minecraft:furnace_minecart", + "minecraft:hopper_minecart", + "minecraft:tnt_minecart" ] } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 60a1e814d..539072b77 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 30 - 4 - 2025 ~ Leaf */ package leaf.cosmere.tag; @@ -261,6 +261,11 @@ private void addContainsMetal() //entities entityTagBuilder.add(EntityType.IRON_GOLEM); + entityTagBuilder.add(EntityType.MINECART); + entityTagBuilder.add(EntityType.CHEST_MINECART); + entityTagBuilder.add(EntityType.FURNACE_MINECART); + entityTagBuilder.add(EntityType.HOPPER_MINECART); + entityTagBuilder.add(EntityType.TNT_MINECART); } private void addCopperBlockVariations(IntrinsicCosmereTagBuilder itemTagBuilder, IntrinsicCosmereTagBuilder blockTagBuilder) From 44934bd3f236cce77a8d765d9a12603cb596e1cc Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Sat, 3 May 2025 18:23:55 -0400 Subject: [PATCH 1005/1090] Saves power states and removes keybind modifiers. Removes unappreciated modifier keybinds for individual activators Adds power save states. Power save states can be saved by holding the "save power save" key and pressing a hotbar slot key, while having at least one manifestation active. Power save states can be activated by holding the "activate power save" key and pressing the hotbar key tied to the power save you wish to recall. Future plans: Chat message when power save state is saved or activated Save state toggle, turning those powers back off after use. --- src/api/java/leaf/cosmere/api/Constants.java | 4 + .../cosmere/api/spiritweb/ISpiritweb.java | 10 ++- .../cosmere/client/ClientForgeEvents.java | 83 ++++++++++--------- .../java/leaf/cosmere/client/Keybindings.java | 16 ++++ .../leaf/cosmere/client/PowerSaveState.java | 77 +++++++++++++++++ .../cap/entity/SpiritwebCapability.java | 33 ++++++++ 6 files changed, 179 insertions(+), 44 deletions(-) create mode 100644 src/main/java/leaf/cosmere/client/PowerSaveState.java diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 88abeada4..830ec7383 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -1,5 +1,6 @@ /* * File updated ~ 4 - 2 - 2025 ~ Leaf + * File updated ~ 2 - 5 - 2025 ~ SoaringEaqle */ package leaf.cosmere.api; @@ -84,6 +85,9 @@ public static class Strings public static final String KEY_FERUCHEMY = "key.cosmere.feruchemy."; public static final String KEY_STORMLIGHT = "key.cosmere.stormlight."; + public static final String KEY_ACTIVATE = "key.cosmere.powers.activate"; + public static final String KEY_SAVE_ACTIVATOR = "key.cosmere.powers.save"; + public static final String KEY_MANIFESTATION_MODE_INCREASE = "key.cosmere.powers.mode.increase"; public static final String KEY_MANIFESTATION_MODE_DECREASE = "key.cosmere.powers.mode.decrease"; diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 3b629c603..730724740 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -1,5 +1,6 @@ /* * File updated ~ 29 - 10 - 2023 ~ Leaf + * File updated ~ 2 - 5 - 2025 ~ SoaringEaqle */ package leaf.cosmere.api.spiritweb; @@ -18,10 +19,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent; import javax.annotation.Nullable; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; public interface ISpiritweb extends INBTSerializable { @@ -61,6 +59,10 @@ public interface ISpiritweb extends INBTSerializable List getAvailableManifestations(boolean ignoreTemporaryPower); + HashMap getManifestations(); + + HashMap getManifestations(boolean ignoreTemporaryPower, boolean ignoreInactivePower); + String changeManifestation(int dir); void renderWorldEffects(RenderLevelStageEvent event); diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 77949b29f..878196069 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -1,9 +1,11 @@ /* * File updated ~ 12 - 11 - 2023 ~ Leaf + * File updated ~ 5 - 2 - 2025 ~ SoaringEaqle */ package leaf.cosmere.client; +import com.mojang.blaze3d.platform.InputConstants; import leaf.cosmere.api.Activator; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.Cosmere; @@ -114,48 +116,14 @@ else if (Screen.hasControlDown()) selected = manifestation; int modifier = -selected.getMode(spiritweb); - + //if active turn off if (!selected.isActive(spiritweb)) { - if (activator.getCategory().equals("feruchemy")) - { - if (Screen.hasShiftDown() && Screen.hasControlDown()) - { - modifier -= 5; - } - else if (Screen.hasControlDown()) - { - modifier -= 1; - } - else if (Screen.hasShiftDown()) - { - modifier += 5; - } - else { - modifier += 1; - } - Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); - } - else - { - if (Screen.hasShiftDown() && Screen.hasControlDown()) - { - modifier -= 2; - } - else if (Screen.hasControlDown()) - { - modifier -= 1; - } - else if (Screen.hasShiftDown()) - { - modifier += 2; - } - else - { - modifier += 1; - } - Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); - } + //if inactive and feruchemic ability tap 5 + //else level one + modifier += activator.getCategory().equals("feruchemy")? -5: 1; + Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); + } else { @@ -163,6 +131,32 @@ else if (Screen.hasShiftDown()) } } } + + //PowerSaveActivator/Saver + if(!(isKeyHeld(Keybindings.ACTIVATE_POWER_SAVE) || isKeyHeld(Keybindings.SAVE_POWER_SAVE))) + { + return; + } + + for (PowerSaveState.PowerSaves powerSave: PowerSaveState.PowerSaves.values()) + { + if(isKeyPressed(event, Keybindings.getKey(powerSave.getNum()))) + { + //boolean trying = (isKeyHeld(Keybindings.ACTIVATE_POWER_SAVE)|| + // isKeyHeld(Keybindings.SAVE_POWER_SAVE)) ? + // true : false; + + if(isKeyHeld(Keybindings.ACTIVATE_POWER_SAVE)) + { + powerSave.activate(); + } + else if(isKeyHeld(Keybindings.SAVE_POWER_SAVE)) + { + powerSave.addManifestations(spiritweb.getManifestations(false,true)); + } + } + } + }); } @@ -171,6 +165,15 @@ private static boolean isKeyPressed(InputEvent.Key event, KeyMapping keyBinding) return event.getKey() == keyBinding.getKey().getValue() && keyBinding.consumeClick(); } + private static boolean isKeyHeld(KeyMapping keyBinding) + { + InputConstants.Key key = keyBinding.getKey(); + return InputConstants.isKeyDown(Minecraft.getInstance() + .getWindow() + .getWindow(), + key.getValue()); + } + @SubscribeEvent(priority = EventPriority.HIGHEST) public static void onRenderLevelLastEvent(final RenderLevelStageEvent event) { diff --git a/src/main/java/leaf/cosmere/client/Keybindings.java b/src/main/java/leaf/cosmere/client/Keybindings.java index 9a35aed49..95690d462 100644 --- a/src/main/java/leaf/cosmere/client/Keybindings.java +++ b/src/main/java/leaf/cosmere/client/Keybindings.java @@ -1,5 +1,6 @@ /* * File updated ~ 24 - 4 - 2021 ~ Leaf + * File updated ~ 2 - 5 - 2025 ~ SoaringEaqle */ package leaf.cosmere.client; @@ -9,6 +10,8 @@ import leaf.cosmere.client.settings.KeyConflictContext; import leaf.cosmere.common.Cosmere; import net.minecraft.client.KeyMapping; +import net.minecraft.client.Minecraft; +import net.minecraft.client.Options; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.RegisterKeyMappingsEvent; import net.minecraftforge.client.settings.KeyModifier; @@ -18,6 +21,7 @@ import org.lwjgl.glfw.GLFW; import java.util.ArrayList; +import java.util.Vector; import static leaf.cosmere.api.Constants.Strings.*; @@ -36,6 +40,8 @@ public class Keybindings public static KeyMapping MANIFESTATION_MODE_INCREASE; public static KeyMapping MANIFESTATION_MODE_DECREASE; + public static KeyMapping ACTIVATE_POWER_SAVE; + public static KeyMapping SAVE_POWER_SAVE; @SubscribeEvent public static void register(RegisterKeyMappingsEvent event) { @@ -50,10 +56,20 @@ public static void register(RegisterKeyMappingsEvent event) event.register(MANIFESTATION_MODE_INCREASE = new KeyMapping(KEY_MANIFESTATION_MODE_INCREASE, GLFW.GLFW_KEY_KP_ADD, KEYS_CATEGORY)); event.register(MANIFESTATION_MODE_DECREASE = new KeyMapping(KEY_MANIFESTATION_MODE_DECREASE, GLFW.GLFW_KEY_KP_SUBTRACT, KEYS_CATEGORY)); + event.register(ACTIVATE_POWER_SAVE = new KeyMapping(KEY_ACTIVATE, GLFW.GLFW_KEY_R, KEYS_CATEGORY)); + event.register(SAVE_POWER_SAVE = new KeyMapping(KEY_SAVE_ACTIVATOR, GLFW.GLFW_KEY_T, KEYS_CATEGORY)); + } public static KeyMapping createKeybinding(String description, KeyModifier keyModifier, int keyCode, String category) { return new KeyMapping(description, KeyConflictContext.DEFAULT, keyModifier, InputConstants.Type.KEYSYM.getOrCreate(keyCode), category); } + private static Options gameSettings = Minecraft.getInstance().options; + + public static KeyMapping getKey(int i) + { + return gameSettings.keyHotbarSlots[i]; + } + } diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java new file mode 100644 index 000000000..41a6fe598 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -0,0 +1,77 @@ +/* +* File created ~ 2 - 5 - 2025 ~ SoaringEaqle + */ + +package leaf.cosmere.client; + +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; + +import java.util.HashMap; + +public class PowerSaveState +{ + + public enum PowerSaves + { + POWER_SAVE_1(0), + POWER_SAVE_2(1), + POWER_SAVE_3(2), + POWER_SAVE_4(3), + POWER_SAVE_5(4), + POWER_SAVE_6(5), + POWER_SAVE_7(6), + POWER_SAVE_8(7), + POWER_SAVE_9(8); + + private final HashMap manifestations = new HashMap(); + private boolean isActive; + private final int num; + + PowerSaves(int num) + { + this.num = num; + isActive = false; + } + + public String getName() + { + return Integer.toString(num); + } + public int getNum() + { + return num; + } + + public boolean isActive() + { + return isActive; + } + + public boolean hasManifestation(Manifestation manifestation) + { + return manifestations.containsKey(manifestation); + } + + public void activate() + { + for (Manifestation manifestation : manifestations.keySet()) + { + int modifier = manifestations.get(manifestation); + Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, + isActive ? -modifier : modifier)); + } + isActive = !isActive; + } + + public void addManifestations(HashMap manifests) + { + manifestations.clear(); + manifestations.putAll(manifests); + } + + + } + +} diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 434342963..461a6421d 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -1,5 +1,6 @@ /* * File updated ~ 19 - 11 - 2023 ~ Leaf + * File updated ~ 2 - 5 - 2025 ~ SoaringEaqle */ package leaf.cosmere.common.cap.entity; @@ -879,6 +880,38 @@ public List getAvailableManifestations(boolean ignoreTemporaryPow return list; } + @Override + public HashMap getManifestations() + { + return getManifestations(false, false); + } + + @Override + public HashMap getManifestations(boolean ignoreTemporaryPower, boolean ignoreInactivePower) + { + HashMap list = new HashMap<>(); + for(Manifestation manifestation: CosmereAPI.manifestationRegistry()) + { + if (manifestation == ManifestationRegistry.NONE.getManifestation()) + { + continue; + } + if (hasManifestation(manifestation, ignoreTemporaryPower)) + { + if(!ignoreInactivePower) + { + list.put(manifestation,MANIFESTATIONS_MODE.get(manifestation)); + } + else if((MANIFESTATIONS_MODE.get(manifestation)) != null && MANIFESTATIONS_MODE.get(manifestation) != 0) + { + list.put(manifestation,MANIFESTATIONS_MODE.get(manifestation)); + } + + } + } + return list; + } + @Override public String changeManifestation(int dir) { From 72eb6a818d44f54c8c2faa5b7cff91de9a8dd3eb Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 14 May 2025 08:19:24 -0400 Subject: [PATCH 1006/1090] investiture phase 0.0.1 --- .../leaf/cosmere/api/IInvestitureSource.java | 6 + .../cosmere/api/Investiture/IInvestiture.java | 10 ++ .../api/manifestation/Manifestation.java | 60 ++++++++++ .../cosmere/api/spiritweb/ISpiritweb.java | 19 +++- .../cap/entity/SpiritwebCapability.java | 47 +++++++- .../common/investiture/Investiture.java | 107 ++++++++++++++++++ 6 files changed, 241 insertions(+), 8 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/IInvestitureSource.java create mode 100644 src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java create mode 100644 src/main/java/leaf/cosmere/common/investiture/Investiture.java diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java new file mode 100644 index 000000000..23780a9a6 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/IInvestitureSource.java @@ -0,0 +1,6 @@ +package leaf.cosmere.api; + +public interface IInvestitureSource +{ + public +} diff --git a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java new file mode 100644 index 000000000..54eea53b7 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java @@ -0,0 +1,10 @@ +package leaf.cosmere.api.Investiture; + +public interface IInvestiture +{ + public int getBEU(); + + public void setBEU(int beu); + + +} diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index be5c086a0..87b154fc0 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,6 +5,7 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.Investiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; import leaf.cosmere.api.spiritweb.ISpiritweb; @@ -14,10 +15,14 @@ import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; +import java.util.ArrayList; + public class Manifestation implements IManifestationProvider { final protected Manifestations.ManifestationTypes manifestationType; + + public Manifestation() { this.manifestationType = Manifestations.ManifestationTypes.NONE; @@ -136,4 +141,59 @@ public Attribute getAttribute() return ForgeRegistries.ATTRIBUTES.getValue(getRegistryName()); } + + + public int drawInvestiture(ISpiritweb data, int beu) + { + ArrayList invests = data.avaliableInvestitures(this); + int sum = 0; + for(Investiture investiture: invests) + { + sum += investiture.getBEU(); + } + if((sum < this.minInvestitureDraw(data))) + { + return 0; + } + int drawn = 0; + if(sum > this.maxInvestitureDraw(data)) + { + beu = this.maxInvestitureDraw(data); + sum = this.maxInvestitureDraw(data); + + } + while(beu > 0) + { + //priority filter + // 1 highest, 5 lowest + for(int i = 1; i <= 5; i++) + { + for (Investiture investiture: invests) + { + if(investiture.getPriority() == i) + { + beu = investiture.removeBEU(beu); + drawn = sum - beu; + } + } + } + + + } + return drawn; + + } + + public int maxInvestitureDraw(ISpiritweb data) + { + return 0; + } + + public int minInvestitureDraw(ISpiritweb data) + { + return 0; + } + + + } \ No newline at end of file diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 3b629c603..6c4b4a148 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -5,6 +5,8 @@ package leaf.cosmere.api.spiritweb; import leaf.cosmere.api.ISpiritwebSubmodule; +import leaf.cosmere.api.Investiture; +import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; @@ -18,10 +20,7 @@ import net.minecraftforge.event.entity.player.PlayerEvent; import javax.annotation.Nullable; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; +import java.util.*; public interface ISpiritweb extends INBTSerializable { @@ -97,4 +96,16 @@ public interface ISpiritweb extends INBTSerializable boolean hasEffect(CosmereEffect effect); Set> getEffects(); + + + + public ArrayList avaliableInvestitures(Manifestation manifest); + + public void addInvestiture(IInvestiture invest); + + public IInvestiture findInvestiture(ArrayList appManifest); + + public IInvestiture findInvestiture(ArrayList appManifest, int beu); + + } diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 434342963..d2e59774b 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -7,16 +7,14 @@ import com.google.common.collect.Maps; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.IHasMetalType; -import leaf.cosmere.api.ISpiritwebSubmodule; -import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.*; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.investiture.Investiture; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; @@ -89,6 +87,8 @@ public class SpiritwebCapability implements ISpiritweb private final Map spiritwebSubmodules; + private ArrayList investitures = new ArrayList(); + public SpiritwebCapability(LivingEntity ent) { @@ -337,6 +337,7 @@ public Set> getEffects() return this.activeEffects.entrySet(); } + //get the sum total strength of all matching effects in list of effects affecting target @Override public int totalStrengthOfEffect(CosmereEffect cosmereEffect) @@ -991,4 +992,42 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) Cosmere.packetHandler().sendTo(new SyncPlayerSpiritwebMessage(this.livingEntity.getId(), nbt), serverPlayerEntity); } } + + @Override + public ArrayList avaliableInvestitures(Manifestation manifest) + { + ArrayList availables = new ArrayList<>(); + for(Investiture invest: investitures) + { + if(invest.isUsable(manifest)) + { + availables.add(invest); + } + } + return availables; + } + + @Override + public void addInvestiture(Investiture invest) + { + investitures.add(invest); + } + + @Override + public Investiture findInvestiture(ArrayList appManifest) + { + for(Investiture invest: investitures) + { + if(invest.getApplicableManifestations().equals(appManifest)) + { + return invest; + } + } + return new Investiture( this, 0, appManifest); + } + + public Investiture findInvestiture(ArrayList appManifest, int beu) + { + return new Investiture( this, 0, appManifest); + } } diff --git a/src/main/java/leaf/cosmere/common/investiture/Investiture.java b/src/main/java/leaf/cosmere/common/investiture/Investiture.java new file mode 100644 index 000000000..ba378bf5f --- /dev/null +++ b/src/main/java/leaf/cosmere/common/investiture/Investiture.java @@ -0,0 +1,107 @@ +package leaf.cosmere.common.investiture; + +import leaf.cosmere.api.Investiture.IInvestiture; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; + +import java.util.ArrayList; + +public class Investiture implements IInvestiture +{ + + private final ISpiritweb spiritweb; + private ArrayList applicableManifestations; + private int priority = 1; + private int beu; + + + + + public Investiture(ISpiritweb web, + int beu, + ArrayList applicableManifestations) + { + + this.beu = beu; + this.applicableManifestations = applicableManifestations; + spiritweb = web; + spiritweb.addInvestiture((IInvestiture) this); + } + + public Investiture(ISpiritweb web, + int beu, + String manifest) + { + + this.beu = beu; + this.applicableManifestations = applicableManifestations; + spiritweb = web; + spiritweb.addInvestiture(this); + } + + public int getBEU() + { + return beu; + } + + public void setBEU(int beu) + { + this.beu = beu; + } + + public int removeBEU(int remove) + { + if (remove > beu) + { + int ret = remove - beu; + beu = 0; + return ret; + } + else + { + beu -= remove; + return 0; + } + } + + public int getPriority(){return priority;} + + public void setPriority(int priority) + { + this.priority = priority; + } + + public ArrayList getApplicableManifestations() + { + return applicableManifestations; + } + + public ISpiritweb getSpiritweb() + { + return spiritweb; + } + + public boolean isUsable(Manifestation manifest1) + { + for(Manifestation manifest: applicableManifestations) + { + if(manifest.equals(manifest1)) + { + return true; + } + } + return false; + } + + public void merge(Investiture other) + { + if(this.getPriority() == other.getPriority() + && this.getApplicableManifestations().equals(other.getApplicableManifestations()) + && this.getSpiritweb().equals(other.getSpiritweb())) + { + this.beu += other.getBEU(); + other.setBEU(0); + } + } + +} From 982c8532ccf28b28ec43f7ad1eba968d52ae6a6f Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 14 May 2025 20:33:52 -0400 Subject: [PATCH 1007/1090] phase 0.0.2 --- .../manifestation/AllomancyManifestation.java | 42 ++++++++++- src/api/java/leaf/cosmere/api/Constants.java | 2 + .../leaf/cosmere/api/IInvestitureSource.java | 11 ++- .../cosmere/api/Investiture/IInvestiture.java | 6 ++ .../cap/entity/SpiritwebCapability.java | 24 +++++-- .../common/investiture/Investiture.java | 17 +++-- .../investiture/SpiritwebInvestiture.java | 71 +++++++++++++++++++ 7 files changed, 159 insertions(+), 14 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 118f3fc0a..c5d77ef7b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -25,7 +25,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; -public class AllomancyManifestation extends Manifestation implements IHasMetalType +public class AllomancyManifestation extends Manifestation implements IHasMetalType, IInvestitureSource { private final Metals.MetalType metalType; @@ -260,4 +260,44 @@ public int getRange(ISpiritweb data) final int mode = Math.max(getMode(data), 0); return Mth.floor(allomanticStrength * mode); } + + @Override + public int maxInvestitureDraw(ISpiritweb data) + { + return (10 * getStrength(data,false)) + minInvestitureDraw(data) + } + + @Override + public int minInvestitureDraw(ISpiritweb data) + { + if(isFlaring(data)) + { + return 30; + } + return 15; + } + + private final ResourceLocation allomancyRL = new ResourceLocation("allomancy", getRegistryName().getPath()); + private final Manifestation allomancy = CosmereAPI.manifestationRegistry().getValue(allomancyRL); + + private final ResourceLocation feruchemyRL = new ResourceLocation("feruchemy", getRegistryName().getPath()); + private final Manifestation feruchemy = CosmereAPI.manifestationRegistry().getValue(feruchemyRL); + + public final Manifestation[] appManifestComp = {allomancy, feruchemy}; + public final Manifestation[] appManifest = {allomancy}; + + + + public Investiture newInvest(ISpiritweb data) + { + Investiture sub = new Investiture(data, isFlaring(data)? 30 : 15, appManifestComp); + sub.setPriority(5); + return sub; + } + + public int addPerTick = 0; + + public int addTotal = 30; + + public void failFill(); } diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 88abeada4..676344a58 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -137,5 +137,7 @@ public static class Translations public static final MutableComponent POWER_ACTIVE = Component.translatable(Strings.POWER_ACTIVE); public static final MutableComponent POWER_INACTIVE = Component.translatable(Strings.POWER_INACTIVE); + } + } diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java index 23780a9a6..a5e762f60 100644 --- a/src/api/java/leaf/cosmere/api/IInvestitureSource.java +++ b/src/api/java/leaf/cosmere/api/IInvestitureSource.java @@ -2,5 +2,14 @@ public interface IInvestitureSource { - public + public static final Manifestation[] appManifest; + + public Investiture newInvest(ISpiritweb data); + + public int addPerTick; + + public int addTotal; + + public void failFill(); + } diff --git a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java index 54eea53b7..793dccc81 100644 --- a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java @@ -5,6 +5,12 @@ public interface IInvestiture public int getBEU(); public void setBEU(int beu); + + public Manifestation[] getApplicableManifestations(); + + public ISpiritweb getSpiritweb(); + + protected void close(); } diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index d2e59774b..dc2e70fa5 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -88,6 +88,7 @@ public class SpiritwebCapability implements ISpiritweb private final Map spiritwebSubmodules; private ArrayList investitures = new ArrayList(); + private ArrayList swInvests = new ArrayList<>(); public SpiritwebCapability(LivingEntity ent) @@ -1008,13 +1009,24 @@ public ArrayList avaliableInvestitures(Manifestation manifest) } @Override - public void addInvestiture(Investiture invest) + public void addInvestiture(IInvestiture invest) { - investitures.add(invest); + if(invest instanceof SpiritwebInvestiture swInvest) + { + for(SpiritwebInvestiture investiture: swInvests) + { + swInvest.merge(investiture); + } + swInvests.add(swInvest); + } + else if(invest instanceof Investiture iInvest) + { + investitures.add(iInvest); + } } @Override - public Investiture findInvestiture(ArrayList appManifest) + public Investiture findInvestiture(Manifestation[] appManifest) { for(Investiture invest: investitures) { @@ -1023,11 +1035,11 @@ public Investiture findInvestiture(ArrayList appManifest) return invest; } } - return new Investiture( this, 0, appManifest); + return null; } - public Investiture findInvestiture(ArrayList appManifest, int beu) + public Investiture findInvestiture(Manifestation[] appManifest, int beu) { - return new Investiture( this, 0, appManifest); + } } diff --git a/src/main/java/leaf/cosmere/common/investiture/Investiture.java b/src/main/java/leaf/cosmere/common/investiture/Investiture.java index ba378bf5f..40149c464 100644 --- a/src/main/java/leaf/cosmere/common/investiture/Investiture.java +++ b/src/main/java/leaf/cosmere/common/investiture/Investiture.java @@ -10,7 +10,7 @@ public class Investiture implements IInvestiture { private final ISpiritweb spiritweb; - private ArrayList applicableManifestations; + private Manifestation[] applicableManifestations; private int priority = 1; private int beu; @@ -19,13 +19,13 @@ public class Investiture implements IInvestiture public Investiture(ISpiritweb web, int beu, - ArrayList applicableManifestations) + Manifestation[] applicableManifestations) { this.beu = beu; this.applicableManifestations = applicableManifestations; spiritweb = web; - spiritweb.addInvestiture((IInvestiture) this); + spiritweb.addInvestiture(this); } public Investiture(ISpiritweb web, @@ -71,7 +71,7 @@ public void setPriority(int priority) this.priority = priority; } - public ArrayList getApplicableManifestations() + public Manifestation[] getApplicableManifestations() { return applicableManifestations; } @@ -96,12 +96,17 @@ public boolean isUsable(Manifestation manifest1) public void merge(Investiture other) { if(this.getPriority() == other.getPriority() - && this.getApplicableManifestations().equals(other.getApplicableManifestations()) + && this.getApplicableManifestations()==(other.getApplicableManifestations()) && this.getSpiritweb().equals(other.getSpiritweb())) { this.beu += other.getBEU(); - other.setBEU(0); + other.close; } } + + protected void close() + { + this = null; + } } diff --git a/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java b/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java new file mode 100644 index 000000000..aed613418 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java @@ -0,0 +1,71 @@ +package leaf.cosmere.common.investiture; + +import leaf.cosmere.api.Investiture.IInvestiture; + +public class SpiritwebInvestiture implements IInvestiture +{ + private Manifestation[] appManfestations; + + private int beu; + + private ISpiritweb spiritweb; + + public SpiritwebInvestiture(ISpiritweb web, Manifestation[] appManifest) + { + this.beu = 9 * 15; + this.applicableManifestations = applicableManifestations; + spiritweb = web; + spiritweb.addInvestiture(this); + + } + + public SpiritwebInvestiture(ISpiritweb web, int beu, Manifestation[] appManifest) + { + this.beu = beu; + this.applicableManifestations = applicableManifestations; + spiritweb = web; + spiritweb.addInvestiture(this); + } + + public int getBEU() + {return beu;} + + public void setBEU(int beu) + { + this.beu = beu; + } + public Manifestation[] getApplicableManifestations(); + { + return appManifestations; + } + + + public ISpiritweb getSpiritweb(); + {return spiritweb;} + + public int getStrength() + { + return beu/15; + } + + public void setStrength(int strength) + { + beu = strength * 15; + } + + public void merge(SpiritwebInvestiture other) + { + if(this.getApplicableManifestations()==(other.getApplicableManifestations()) + && this.getSpiritweb().equals(other.getSpiritweb())) + { + this.beu += other.getBEU(); + other.close(); + } + } + + protected void close() + { + this = null; + } + +} From 0311ea1bdf8503b3f75f4564eb9d46fdcf942348 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Sun, 8 Jun 2025 17:03:24 -0400 Subject: [PATCH 1008/1090] Investiture Implementation 0.0.1 Basics of investiture system Includes new Investiture class, Includes new IInvestiture interface, Includes new InvestTransfer class, Updates SpiritwebCapability class to have a list of Investiture objects. Other additions. --- .../manifestation/AllomancyManifestation.java | 15 +++----- .../leaf/cosmere/api/IInvestitureSource.java | 11 +++--- .../cosmere/api/Investiture/IInvestiture.java | 13 +++---- .../cosmere/api/spiritweb/ISpiritweb.java | 6 +--- .../leaf/cosmere/common/InvestTranfer.java | 34 +++++++++++++++++++ .../cap/entity/SpiritwebCapability.java | 12 +++---- .../common/investiture/Investiture.java | 12 ++++--- .../investiture/SpiritwebInvestiture.java | 23 +++++++------ 8 files changed, 76 insertions(+), 50 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/InvestTranfer.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index c5d77ef7b..858337f09 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -7,14 +7,12 @@ import leaf.cosmere.allomancy.client.AllomancyKeybindings; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyStats; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.IHasMetalType; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.charge.MetalmindChargeHelper; +import leaf.cosmere.common.investiture.Investiture; import net.minecraft.client.KeyMapping; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -264,7 +262,7 @@ public int getRange(ISpiritweb data) @Override public int maxInvestitureDraw(ISpiritweb data) { - return (10 * getStrength(data,false)) + minInvestitureDraw(data) + return (int) ((10 * getStrength(data,false)) + minInvestitureDraw(data)); } @Override @@ -294,10 +292,5 @@ public Investiture newInvest(ISpiritweb data) sub.setPriority(5); return sub; } - - public int addPerTick = 0; - - public int addTotal = 30; - - public void failFill(); + } diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java index a5e762f60..d62ea5853 100644 --- a/src/api/java/leaf/cosmere/api/IInvestitureSource.java +++ b/src/api/java/leaf/cosmere/api/IInvestitureSource.java @@ -1,15 +1,16 @@ package leaf.cosmere.api; +import leaf.cosmere.api.manifestation.Manifestation; + public interface IInvestitureSource + //Used when creating new investiture + //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. + //todo: make this { public static final Manifestation[] appManifest; public Investiture newInvest(ISpiritweb data); - public int addPerTick; - - public int addTotal; - - public void failFill(); + } diff --git a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java index 793dccc81..3ce3cfdcf 100644 --- a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java @@ -1,16 +1,17 @@ package leaf.cosmere.api.Investiture; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; + public interface IInvestiture { - public int getBEU(); + int getBEU(); - public void setBEU(int beu); + void setBEU(int beu); - public Manifestation[] getApplicableManifestations(); + Manifestation[] getApplicableManifestations(); - public ISpiritweb getSpiritweb(); - - protected void close(); + ISpiritweb getSpiritweb(); } diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 6c4b4a148..a58924d23 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -5,7 +5,6 @@ package leaf.cosmere.api.spiritweb; import leaf.cosmere.api.ISpiritwebSubmodule; -import leaf.cosmere.api.Investiture; import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; @@ -103,9 +102,6 @@ public interface ISpiritweb extends INBTSerializable public void addInvestiture(IInvestiture invest); - public IInvestiture findInvestiture(ArrayList appManifest); - - public IInvestiture findInvestiture(ArrayList appManifest, int beu); - + public IInvestiture findInvestiture(Manifestation[] appManifest); } diff --git a/src/main/java/leaf/cosmere/common/InvestTranfer.java b/src/main/java/leaf/cosmere/common/InvestTranfer.java new file mode 100644 index 000000000..dde6d3a9c --- /dev/null +++ b/src/main/java/leaf/cosmere/common/InvestTranfer.java @@ -0,0 +1,34 @@ +package leaf.cosmere.common; + +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.investiture.Investiture; + +public class InvestTranfer + //Used when changing the location of investiture, ex. when moving investiture from a gem to a spiritweb. +{ + Investiture invest1; + int rate; + Investiture invest2; + + public InvestTranfer(Investiture invest, int rate, int newDecay, ISpiritweb toGo) + { + this.invest1 = invest; + this.rate = rate; + invest2 = new Investiture(toGo,1,invest1.getApplicableManifestations()); + } + + public void tick() + { + if(invest1.getBEU()>rate) + { + invest1.removeBEU(rate); + invest2.addBEU(rate); + } + else + { + invest2.addBEU(invest1.getBEU()); + invest1.removeBEU(rate); + } + } + +} diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index dc2e70fa5..6dd7ef1de 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -8,6 +8,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import leaf.cosmere.api.*; +import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; import leaf.cosmere.api.manifestation.Manifestation; @@ -15,6 +16,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; import leaf.cosmere.common.investiture.Investiture; +import leaf.cosmere.common.investiture.SpiritwebInvestiture; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; @@ -995,9 +997,9 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } @Override - public ArrayList avaliableInvestitures(Manifestation manifest) + public ArrayList avaliableInvestitures(Manifestation manifest) { - ArrayList availables = new ArrayList<>(); + ArrayList availables = new ArrayList<>(); for(Investiture invest: investitures) { if(invest.isUsable(manifest)) @@ -1011,7 +1013,7 @@ public ArrayList avaliableInvestitures(Manifestation manifest) @Override public void addInvestiture(IInvestiture invest) { - if(invest instanceof SpiritwebInvestiture swInvest) + if(invest instanceof SpiritwebInvestiture swInvest) { for(SpiritwebInvestiture investiture: swInvests) { @@ -1038,8 +1040,4 @@ public Investiture findInvestiture(Manifestation[] appManifest) return null; } - public Investiture findInvestiture(Manifestation[] appManifest, int beu) - { - - } } diff --git a/src/main/java/leaf/cosmere/common/investiture/Investiture.java b/src/main/java/leaf/cosmere/common/investiture/Investiture.java index 40149c464..d8b716f49 100644 --- a/src/main/java/leaf/cosmere/common/investiture/Investiture.java +++ b/src/main/java/leaf/cosmere/common/investiture/Investiture.java @@ -64,6 +64,11 @@ public int removeBEU(int remove) } } + public void addBEU(int add) + { + beu += add; + } + public int getPriority(){return priority;} public void setPriority(int priority) @@ -100,13 +105,10 @@ public void merge(Investiture other) && this.getSpiritweb().equals(other.getSpiritweb())) { this.beu += other.getBEU(); - other.close; + //other.close; } } - protected void close() - { - this = null; - } + //protected void close() {this = null;} } diff --git a/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java b/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java index aed613418..60f2c07fb 100644 --- a/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java +++ b/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java @@ -1,6 +1,8 @@ package leaf.cosmere.common.investiture; import leaf.cosmere.api.Investiture.IInvestiture; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; public class SpiritwebInvestiture implements IInvestiture { @@ -13,7 +15,7 @@ public class SpiritwebInvestiture implements IInvestiture public SpiritwebInvestiture(ISpiritweb web, Manifestation[] appManifest) { this.beu = 9 * 15; - this.applicableManifestations = applicableManifestations; + this.appManfestations = appManifest; spiritweb = web; spiritweb.addInvestiture(this); @@ -22,7 +24,7 @@ public SpiritwebInvestiture(ISpiritweb web, Manifestation[] appManifest) public SpiritwebInvestiture(ISpiritweb web, int beu, Manifestation[] appManifest) { this.beu = beu; - this.applicableManifestations = applicableManifestations; + this.appManfestations = appManifest; spiritweb = web; spiritweb.addInvestiture(this); } @@ -34,14 +36,16 @@ public void setBEU(int beu) { this.beu = beu; } - public Manifestation[] getApplicableManifestations(); + public Manifestation[] getApplicableManifestations() { - return appManifestations; + return appManfestations; } - public ISpiritweb getSpiritweb(); - {return spiritweb;} + public ISpiritweb getSpiritweb() + { + return spiritweb; + } public int getStrength() { @@ -59,13 +63,10 @@ public void merge(SpiritwebInvestiture other) && this.getSpiritweb().equals(other.getSpiritweb())) { this.beu += other.getBEU(); - other.close(); + //other.close(); } } - protected void close() - { - this = null; - } + //public void close() {this = null;} } From 807265480d9b3e8757b61bf553432a5c3d7ec01b Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 11 Jun 2025 22:16:36 -0400 Subject: [PATCH 1009/1090] Investiture v0.0.2 Adds the rest of the basics and begins implementation for Allomancy. Moves Investiture class to api Adds decay factor to Investiture class that will gradually reduce the investiture (used for stormlight). Moves SpiritwebInvestiture class to api Adds InvestitureContainer class. This will eventually become a superclass or interface for both invested entities and items. New Stormlight, Towerlight, and Voidlight classes Begins implementation for Surgebinding --- .../common/manifestation/AllomancyBronze.java | 1 + .../manifestation/AllomancyManifestation.java | 29 ++++--- .../leaf/cosmere/api/IInvestitureSource.java | 14 ++-- .../java/leaf/cosmere/api/Manifestations.java | 59 ++++++++++++++ .../IInvestiture.java | 5 +- .../cosmere/api}/investiture/Investiture.java | 58 ++++++++++---- .../api/investiture/InvestitureContainer.java | 78 +++++++++++++++++++ .../investiture/SpiritwebInvestiture.java | 24 +++--- .../api/manifestation/Manifestation.java | 11 +-- .../cosmere/api/spiritweb/ISpiritweb.java | 9 --- .../leaf/cosmere/common/InvestTranfer.java | 19 ++++- .../cap/entity/SpiritwebCapability.java | 53 +------------ .../SurgebindingSpiritwebSubmodule.java | 4 + .../common/investiture/Stormlight.java | 29 +++++++ .../common/investiture/Towerlight.java | 19 +++++ .../common/investiture/Voidlight.java | 16 ++++ 16 files changed, 306 insertions(+), 122 deletions(-) rename src/api/java/leaf/cosmere/api/{Investiture => investiture}/IInvestiture.java (58%) rename src/{main/java/leaf/cosmere/common => api/java/leaf/cosmere/api}/investiture/Investiture.java (60%) create mode 100644 src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java rename src/{main/java/leaf/cosmere/common => api/java/leaf/cosmere/api}/investiture/SpiritwebInvestiture.java (60%) create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBronze.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBronze.java index b4fe05148..7837478b8 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBronze.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBronze.java @@ -110,6 +110,7 @@ public static boolean isValidSeekTarget(ISpiritweb seeker, LivingEntity potentia return false; } //do not multiply strength by mode here, flaring doesn't help you pierce copper, and copper flare doesn't increase cognitive concealment + //maybe dedicating a high-enough amount of investiture can overcome this? final double bronzeStrength = bronzeAllomancyManifestation.getStrength(seeker, false); //todo range to config diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 858337f09..5bbaf435f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -10,9 +10,10 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.api.investiture.InvestitureContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.charge.MetalmindChargeHelper; -import leaf.cosmere.common.investiture.Investiture; +import leaf.cosmere.api.investiture.Investiture; import net.minecraft.client.KeyMapping; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -162,6 +163,7 @@ public boolean tick(ISpiritweb data) LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = isActiveTick(data); allo.adjustIngestedMetal(metalType, -cost, isActiveTick); + newInvest((InvestitureContainer) data); if (isActiveTick && livingEntity instanceof ServerPlayer serverPlayer) { @@ -171,6 +173,7 @@ public boolean tick(ISpiritweb data) //if burning normally, do allomancy if (mode > 0) { + //todo: rewrite all applyEffectTick() methods to pull from investiture sources. applyEffectTick(data); return true; } @@ -260,35 +263,29 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(ISpiritweb data) + public int maxInvestitureDraw(InvestitureContainer data) { - return (int) ((10 * getStrength(data,false)) + minInvestitureDraw(data)); + return (int) ((10 * getStrength((SpiritwebCapability)data,false)) + 15); } @Override - public int minInvestitureDraw(ISpiritweb data) + public int minInvestitureDraw(InvestitureContainer data) { - if(isFlaring(data)) + if(isFlaring((SpiritwebCapability)data)) { return 30; } return 15; } - private final ResourceLocation allomancyRL = new ResourceLocation("allomancy", getRegistryName().getPath()); - private final Manifestation allomancy = CosmereAPI.manifestationRegistry().getValue(allomancyRL); - - private final ResourceLocation feruchemyRL = new ResourceLocation("feruchemy", getRegistryName().getPath()); - private final Manifestation feruchemy = CosmereAPI.manifestationRegistry().getValue(feruchemyRL); - - public final Manifestation[] appManifestComp = {allomancy, feruchemy}; - public final Manifestation[] appManifest = {allomancy}; - + + public final Manifestation[] appManifestComp = Manifestations.manifestArrayBuilder.getAllMetal(this.getMetalType()); + - public Investiture newInvest(ISpiritweb data) + public Investiture newInvest(InvestitureContainer data) { - Investiture sub = new Investiture(data, isFlaring(data)? 30 : 15, appManifestComp); + Investiture sub = new Investiture(data, isFlaring((ISpiritweb) data)? 30 : 15, appManifestComp); sub.setPriority(5); return sub; } diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java index d62ea5853..bce6d1dee 100644 --- a/src/api/java/leaf/cosmere/api/IInvestitureSource.java +++ b/src/api/java/leaf/cosmere/api/IInvestitureSource.java @@ -1,16 +1,16 @@ package leaf.cosmere.api; -import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureContainer; public interface IInvestitureSource //Used when creating new investiture //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. //todo: make this { - public static final Manifestation[] appManifest; - - public Investiture newInvest(ISpiritweb data); - - - + default Investiture newInvest(InvestitureContainer data) + { + Investiture sub = new Investiture(data, data.maxBEU()-data.currentBEU(),Manifestations.manifestArrayBuilder.getAll()); + return sub; + } } diff --git a/src/api/java/leaf/cosmere/api/Manifestations.java b/src/api/java/leaf/cosmere/api/Manifestations.java index 4a22d931f..de0e571a1 100644 --- a/src/api/java/leaf/cosmere/api/Manifestations.java +++ b/src/api/java/leaf/cosmere/api/Manifestations.java @@ -110,5 +110,64 @@ public Manifestation getManifestation(int powerID) return CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("cosmere", "none")); } } + public static class manifestArrayBuilder + { + public static Manifestation[] getAll() + { + return (Manifestation[]) CosmereAPI.manifestationRegistry().getValues().toArray(); + } + + public static Manifestation[] getAllType(ManifestationTypes manifestationTypes) + { + int values; + switch (manifestationTypes) + { + case ALLOMANCY: + case FERUCHEMY: + { + values = 16; + break; + } + case SURGEBINDING: + { + values = 10; + break; + } + case SANDMASTERY: + { + values = 5; + break; + } + default: + { + values = 1; + break; + } + + } + Manifestation[] manifests = new Manifestation[values]; + for(int i = 0; i < values; i++) + { + manifests[i] = manifestationTypes.getManifestation(i); + } + return manifests; + } + + public static Manifestation[] getAllMetal(Metals.MetalType metal) + { + + + + int id = metal.getID(); + return new Manifestation[]{ManifestationTypes.ALLOMANCY.getManifestation(id), + ManifestationTypes.FERUCHEMY.getManifestation(id) + }; + } + + public static Manifestation[] getArray(Manifestation manifest) + { + return new Manifestation[]{manifest}; + } + } } diff --git a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java similarity index 58% rename from src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java rename to src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index 3ce3cfdcf..1079e5658 100644 --- a/src/api/java/leaf/cosmere/api/Investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -1,7 +1,6 @@ -package leaf.cosmere.api.Investiture; +package leaf.cosmere.api.investiture; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; public interface IInvestiture { @@ -12,6 +11,6 @@ public interface IInvestiture Manifestation[] getApplicableManifestations(); - ISpiritweb getSpiritweb(); + InvestitureContainer getContainer(); } diff --git a/src/main/java/leaf/cosmere/common/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/Investiture.java similarity index 60% rename from src/main/java/leaf/cosmere/common/investiture/Investiture.java rename to src/api/java/leaf/cosmere/api/investiture/Investiture.java index d8b716f49..3842a46e5 100644 --- a/src/main/java/leaf/cosmere/common/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/Investiture.java @@ -1,44 +1,44 @@ -package leaf.cosmere.common.investiture; +package leaf.cosmere.api.investiture; -import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import java.util.ArrayList; - public class Investiture implements IInvestiture { - private final ISpiritweb spiritweb; + private final InvestitureContainer container; private Manifestation[] applicableManifestations; private int priority = 1; private int beu; + private int decayRate; - - - public Investiture(ISpiritweb web, + public Investiture(InvestitureContainer container, int beu, - Manifestation[] applicableManifestations) + Manifestation[] applicableManifestations, + int decayRate) { this.beu = beu; this.applicableManifestations = applicableManifestations; - spiritweb = web; - spiritweb.addInvestiture(this); + this.container = container; + this.container.addInvestiture(this); + this.decayRate = decayRate; } - public Investiture(ISpiritweb web, + public Investiture(InvestitureContainer container, int beu, - String manifest) + Manifestation[] applicableManifestations) { this.beu = beu; this.applicableManifestations = applicableManifestations; - spiritweb = web; - spiritweb.addInvestiture(this); + this.container = container; + this.container.addInvestiture(this); + this.decayRate = 0; } + public int getBEU() { return beu; @@ -81,9 +81,24 @@ public Manifestation[] getApplicableManifestations() return applicableManifestations; } + public InvestitureContainer getContainer() + { + return container; + } + public ISpiritweb getSpiritweb() { - return spiritweb; + return (ISpiritweb) container; + } + + public int getDecayRate() + { + return decayRate; + } + + public void setDecayRate(int decayRate) + { + this.decayRate = decayRate; } public boolean isUsable(Manifestation manifest1) @@ -102,7 +117,7 @@ public void merge(Investiture other) { if(this.getPriority() == other.getPriority() && this.getApplicableManifestations()==(other.getApplicableManifestations()) - && this.getSpiritweb().equals(other.getSpiritweb())) + && this.getContainer().equals(other.getContainer())) { this.beu += other.getBEU(); //other.close; @@ -111,4 +126,13 @@ public void merge(Investiture other) //protected void close() {this = null;} + public void decay() + { + beu -= decayRate; + } + + public void reattach() + { + container.addInvestiture(this); + } } diff --git a/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java b/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java new file mode 100644 index 000000000..f7a1b05cc --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java @@ -0,0 +1,78 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.manifestation.Manifestation; + +import java.util.ArrayList; + +public abstract class InvestitureContainer +{ + private ArrayList investitures = new ArrayList(); + private ArrayList swInvests = new ArrayList<>(); + + public ArrayList availableInvestitures(Manifestation manifest) + { + ArrayList availables = new ArrayList<>(); + for (Investiture invest : investitures) + { + if (invest.isUsable(manifest)) + { + availables.add(invest); + } + } + return availables; + } + + public void addInvestiture(IInvestiture invest) + { + if (invest instanceof SpiritwebInvestiture swInvest) + { + for (SpiritwebInvestiture investiture : swInvests) + { + swInvest.merge(investiture); + } + swInvests.add(swInvest); + } + else if (invest instanceof Investiture iInvest) + { + investitures.add(iInvest); + } + } + + public Investiture findInvestiture(Manifestation[] appManifest) + { + for (Investiture invest : investitures) + { + if (invest.getApplicableManifestations().equals(appManifest)) + { + return invest; + } + } + return null; + } + + public int currentBEU() + { + int sub = 0; + for(Investiture invest: investitures) + { + sub+= invest.getBEU(); + } + return sub; + } + + + // Clears out empty investiture objects from the ArrayList and the game memory + // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method + public void clean() + { + for(Investiture investiture: investitures) + { + if(investiture.getBEU() == 0) + { + investitures.remove(investiture); + } + } + System.gc(); + } + +} diff --git a/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java similarity index 60% rename from src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java rename to src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index 60f2c07fb..7606b69af 100644 --- a/src/main/java/leaf/cosmere/common/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -1,8 +1,6 @@ -package leaf.cosmere.common.investiture; +package leaf.cosmere.api.investiture; -import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; public class SpiritwebInvestiture implements IInvestiture { @@ -10,23 +8,23 @@ public class SpiritwebInvestiture implements IInvestiture private int beu; - private ISpiritweb spiritweb; + private InvestitureContainer container; - public SpiritwebInvestiture(ISpiritweb web, Manifestation[] appManifest) + public SpiritwebInvestiture(InvestitureContainer investitureContainer, Manifestation[] appManifest) { this.beu = 9 * 15; this.appManfestations = appManifest; - spiritweb = web; - spiritweb.addInvestiture(this); + container = investitureContainer; + container.addInvestiture(this); } - public SpiritwebInvestiture(ISpiritweb web, int beu, Manifestation[] appManifest) + public SpiritwebInvestiture(InvestitureContainer investitureContainer, int beu, Manifestation[] appManifest) { this.beu = beu; this.appManfestations = appManifest; - spiritweb = web; - spiritweb.addInvestiture(this); + container = investitureContainer; + container.addInvestiture(this); } public int getBEU() @@ -42,9 +40,9 @@ public Manifestation[] getApplicableManifestations() } - public ISpiritweb getSpiritweb() + public InvestitureContainer getContainer() { - return spiritweb; + return container; } public int getStrength() @@ -60,7 +58,7 @@ public void setStrength(int strength) public void merge(SpiritwebInvestiture other) { if(this.getApplicableManifestations()==(other.getApplicableManifestations()) - && this.getSpiritweb().equals(other.getSpiritweb())) + && this.getContainer().equals(other.getContainer())) { this.beu += other.getBEU(); //other.close(); diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index 87b154fc0..d03553cdc 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,10 +5,11 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Investiture; +import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.api.investiture.InvestitureContainer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -143,9 +144,9 @@ public Attribute getAttribute() - public int drawInvestiture(ISpiritweb data, int beu) + public int drawInvestiture(InvestitureContainer data, int beu) { - ArrayList invests = data.avaliableInvestitures(this); + ArrayList invests = data.availableInvestitures(this); int sum = 0; for(Investiture investiture: invests) { @@ -184,12 +185,12 @@ public int drawInvestiture(ISpiritweb data, int beu) } - public int maxInvestitureDraw(ISpiritweb data) + public int maxInvestitureDraw(InvestitureContainer data) { return 0; } - public int minInvestitureDraw(ISpiritweb data) + public int minInvestitureDraw(InvestitureContainer data) { return 0; } diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index a58924d23..4b43cfa26 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -5,7 +5,6 @@ package leaf.cosmere.api.spiritweb; import leaf.cosmere.api.ISpiritwebSubmodule; -import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; @@ -96,12 +95,4 @@ public interface ISpiritweb extends INBTSerializable Set> getEffects(); - - - public ArrayList avaliableInvestitures(Manifestation manifest); - - public void addInvestiture(IInvestiture invest); - - public IInvestiture findInvestiture(Manifestation[] appManifest); - } diff --git a/src/main/java/leaf/cosmere/common/InvestTranfer.java b/src/main/java/leaf/cosmere/common/InvestTranfer.java index dde6d3a9c..b1beb8b42 100644 --- a/src/main/java/leaf/cosmere/common/InvestTranfer.java +++ b/src/main/java/leaf/cosmere/common/InvestTranfer.java @@ -1,7 +1,7 @@ package leaf.cosmere.common; -import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.common.investiture.Investiture; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureContainer; public class InvestTranfer //Used when changing the location of investiture, ex. when moving investiture from a gem to a spiritweb. @@ -10,7 +10,7 @@ public class InvestTranfer int rate; Investiture invest2; - public InvestTranfer(Investiture invest, int rate, int newDecay, ISpiritweb toGo) + public InvestTranfer(Investiture invest, int rate, int newDecay, InvestitureContainer toGo) { this.invest1 = invest; this.rate = rate; @@ -31,4 +31,17 @@ public void tick() } } + public void clean() + { + if(invest1.getBEU() == 0) + { + invest1 = null; + } + if(invest2.getBEU() == 0) + { + invest2 = null; + } + } + + } diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 6dd7ef1de..0ea464115 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -8,15 +8,13 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.*; import leaf.cosmere.api.*; -import leaf.cosmere.api.Investiture.IInvestiture; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.investiture.InvestitureContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.investiture.Investiture; -import leaf.cosmere.common.investiture.SpiritwebInvestiture; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; @@ -59,7 +57,7 @@ https://coppermind.net/wiki/Ars_Arcanum#The_Alloy_of_Law */ -public class SpiritwebCapability implements ISpiritweb +public class SpiritwebCapability extends InvestitureContainer implements ISpiritweb { //Injection public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() @@ -89,8 +87,8 @@ public class SpiritwebCapability implements ISpiritweb private final Map spiritwebSubmodules; - private ArrayList investitures = new ArrayList(); - private ArrayList swInvests = new ArrayList<>(); + + public SpiritwebCapability(LivingEntity ent) @@ -996,48 +994,5 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } } - @Override - public ArrayList avaliableInvestitures(Manifestation manifest) - { - ArrayList availables = new ArrayList<>(); - for(Investiture invest: investitures) - { - if(invest.isUsable(manifest)) - { - availables.add(invest); - } - } - return availables; - } - - @Override - public void addInvestiture(IInvestiture invest) - { - if(invest instanceof SpiritwebInvestiture swInvest) - { - for(SpiritwebInvestiture investiture: swInvests) - { - swInvest.merge(investiture); - } - swInvests.add(swInvest); - } - else if(invest instanceof Investiture iInvest) - { - investitures.add(iInvest); - } - } - - @Override - public Investiture findInvestiture(Manifestation[] appManifest) - { - for(Investiture invest: investitures) - { - if(invest.getApplicableManifestations().equals(appManifest)) - { - return invest; - } - } - return null; - } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java index cec5f12b2..492c63bae 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/capabilities/SurgebindingSpiritwebSubmodule.java @@ -67,6 +67,10 @@ public boolean isOathed() //boolean anySurges = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); return idealsManager.getOrder() != null; } + public int getIdeal() + { + return idealsManager.getIdeal(); + } @Override public void deserialize(ISpiritweb spiritweb) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java new file mode 100644 index 000000000..28f87e7d5 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -0,0 +1,29 @@ +package leaf.cosmere.surgebinding.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; +import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; + +public class Stormlight extends Investiture +{ + public Stormlight(InvestitureContainer container, + int beu) + { + super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + int decayRate; + if(container instanceof SpiritwebCapability) + { + SpiritwebCapability sw = (SpiritwebCapability) container; + SurgebindingSpiritwebSubmodule ssm = (SurgebindingSpiritwebSubmodule) sw.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); + decayRate = (6 - ssm.getIdeal()) * SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get() / 2; + } + else + { + decayRate = 1; + } + super.setDecayRate(decayRate); + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java new file mode 100644 index 000000000..6f0e3fc0d --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -0,0 +1,19 @@ +package leaf.cosmere.surgebinding.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureContainer; + +public class Towerlight extends Investiture +{ + public Towerlight(InvestitureContainer container, + int beu) + { + super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + + //Decay rate is high, but towerlight constantly renews while in Urithiru. + //Meaning infinite light in the tower, but none once you leave. + super.setDecayRate(100000); + + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java new file mode 100644 index 000000000..86d20edaf --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -0,0 +1,16 @@ +package leaf.cosmere.surgebinding.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureContainer; + +public class Voidlight extends Investiture +{ + public Voidlight(InvestitureContainer container, + int beu) + { + //As we start implementing voidbinding, add that to the list of manifestations. + //Not much is known about voidlight, but it's here for the future. + super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + } +} From 547b4d91a92953cc465f4acda2ad2c8e29ed4118 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 21 Jun 2025 20:43:28 +0200 Subject: [PATCH 1010/1090] [Hemalurgy] Changed config defaults and min/max Users should be able to decide if they want to destroy their servers, no? --- .../cosmere/hemalurgy/common/config/HemalurgyServerConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java index ffd12405a..ded10ebea 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java @@ -25,7 +25,7 @@ public class HemalurgyServerConfig implements ICosmereConfig ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); builder.comment("Hemalurgy Config. This config is synced between server and client.").push("hemalurgy"); - SPIRITWEB_INTEGRITY_TICK_CHECK = builder.comment("What tick count should be used to check spiritweb integrity? There are 20 ticks in a second.").defineInRange("integrityCheckTick", 999, 20, 1234567890); + SPIRITWEB_INTEGRITY_TICK_CHECK = builder.comment("What tick count should be used to check spiritweb integrity? There are 20 ticks in a second.").defineInRange("integrityCheckTick", 20, 1, 1234567890); LERASATIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a lerasatium spike can hold.").defineInRange("lerasatiumMaxSpikeStrength", 5, 1, 20); CHROMIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a chromium spike can hold.").defineInRange("chromiumMaxSpikeStrength", 3, 1, 5); From e324649e49c8b383effe639aa148ae5f0b7e4bdd Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 30 Jun 2025 19:19:35 -0400 Subject: [PATCH 1011/1090] Revert "Merge branch 'develop' into develop1" This reverts commit 645e5422f5fb35fb3346a3e89b13de832d10fac0, reversing changes made to 44934bd3f236cce77a8d765d9a12603cb596e1cc. --- .../common/manifestation/AllomancyIronSteel.java | 16 ++++++++-------- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 4 ++-- .../tags/entity_types/contains_metal.json | 7 +------ .../leaf/cosmere/tag/CosmereTagProvider.java | 7 +------ 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 56e21f595..8ee27ece1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 4 - 2025 ~ Leaf + * File updated ~ 17 - 3 - 2024 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; @@ -348,7 +348,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 direction = VectorHelper.getDirection( blockCenter, entity.blockPosition().getCenter(),//use entity block position, so we can do things like hover directly over a block more easily - (isPush ? -1f : 2f)); + (isPush ? -1f: 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vec3 normalize = direction.normalize(); @@ -357,7 +357,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 add = entity.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); // cannot have flat multiplier; can get ridiculous - double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight - 1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); + double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight-1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); //get flung off rides entity.stopRiding(); @@ -415,13 +415,13 @@ private void pushpullBlocks(SpiritwebCapability data) public static boolean entityContainsMetal(Entity entity) { - if (containsMetal(entity)) - { - return true; - } - if (entity instanceof LivingEntity livingEntity) { + if (containsMetal(entity)) + { + return true; + } + if (containsMetal(livingEntity.getMainHandItem()) || containsMetal(livingEntity.getOffhandItem())) { return true; diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 5438eca89..a7b448326 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,6 +1,6 @@ -// 1.20.1 2025-04-30T10:54:20.1947047 Tags: cosmere +// 1.20.1 2025-01-10T11:20:10.7014372 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json -af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json +29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ores.json 2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json index 5029c4b97..796f4ec73 100644 --- a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json @@ -1,10 +1,5 @@ { "values": [ - "minecraft:iron_golem", - "minecraft:minecart", - "minecraft:chest_minecart", - "minecraft:furnace_minecart", - "minecraft:hopper_minecart", - "minecraft:tnt_minecart" + "minecraft:iron_golem" ] } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 539072b77..60a1e814d 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 30 - 4 - 2025 ~ Leaf + * File updated ~ 10 - 1 - 2025 ~ Leaf */ package leaf.cosmere.tag; @@ -261,11 +261,6 @@ private void addContainsMetal() //entities entityTagBuilder.add(EntityType.IRON_GOLEM); - entityTagBuilder.add(EntityType.MINECART); - entityTagBuilder.add(EntityType.CHEST_MINECART); - entityTagBuilder.add(EntityType.FURNACE_MINECART); - entityTagBuilder.add(EntityType.HOPPER_MINECART); - entityTagBuilder.add(EntityType.TNT_MINECART); } private void addCopperBlockVariations(IntrinsicCosmereTagBuilder itemTagBuilder, IntrinsicCosmereTagBuilder blockTagBuilder) From 160132ec1b3a236b7548309bda08692768ba5f75 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 30 Jun 2025 19:22:05 -0400 Subject: [PATCH 1012/1090] Reapply "Merge branch 'develop' into develop1" This reverts commit e324649e49c8b383effe639aa148ae5f0b7e4bdd. --- .../common/manifestation/AllomancyIronSteel.java | 16 ++++++++-------- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 4 ++-- .../tags/entity_types/contains_metal.json | 7 ++++++- .../leaf/cosmere/tag/CosmereTagProvider.java | 7 ++++++- 4 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 8ee27ece1..56e21f595 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -1,5 +1,5 @@ /* - * File updated ~ 17 - 3 - 2024 ~ Leaf + * File updated ~ 30 - 4 - 2025 ~ Leaf */ package leaf.cosmere.allomancy.common.manifestation; @@ -348,7 +348,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 direction = VectorHelper.getDirection( blockCenter, entity.blockPosition().getCenter(),//use entity block position, so we can do things like hover directly over a block more easily - (isPush ? -1f: 2f)); + (isPush ? -1f : 2f)); //todo, clean up all the unnecessary calculations once we find what feels good at run time Vec3 normalize = direction.normalize(); @@ -357,7 +357,7 @@ private void moveEntityTowards(Entity entity, BlockPos toMoveTo, int weight) Vec3 add = entity.getDeltaMovement().add(normalize.multiply(shortenFactor, shortenFactor, shortenFactor)); // cannot have flat multiplier; can get ridiculous - double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight-1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); + double adjustedWeight = 1d + Math.min(AllomancyConfigs.SERVER.MAX_PUSH_PULL_WEIGHT.get(), (weight - 1) * AllomancyConfigs.SERVER.PUSH_PULL_WEIGHT.get()); //get flung off rides entity.stopRiding(); @@ -415,13 +415,13 @@ private void pushpullBlocks(SpiritwebCapability data) public static boolean entityContainsMetal(Entity entity) { - if (entity instanceof LivingEntity livingEntity) + if (containsMetal(entity)) { - if (containsMetal(entity)) - { - return true; - } + return true; + } + if (entity instanceof LivingEntity livingEntity) + { if (containsMetal(livingEntity.getMainHandItem()) || containsMetal(livingEntity.getOffhandItem())) { return true; diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index a7b448326..5438eca89 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,6 +1,6 @@ -// 1.20.1 2025-01-10T11:20:10.7014372 Tags: cosmere +// 1.20.1 2025-04-30T10:54:20.1947047 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json -29671cfa11d074462c259806e9d60468451e3cdb data/cosmere/tags/entity_types/contains_metal.json +af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json b020f6cdcd2d955793278b2f89a178a1d31e599a data/cosmere/tags/worldgen/biome/spawn_ores.json 2535fa6b2630ad09c3a98c8df7a89b6de3276819 data/forge/tags/blocks/ores/aluminum.json diff --git a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json index 796f4ec73..5029c4b97 100644 --- a/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json +++ b/src/datagen/generated/cosmere/data/cosmere/tags/entity_types/contains_metal.json @@ -1,5 +1,10 @@ { "values": [ - "minecraft:iron_golem" + "minecraft:iron_golem", + "minecraft:minecart", + "minecraft:chest_minecart", + "minecraft:furnace_minecart", + "minecraft:hopper_minecart", + "minecraft:tnt_minecart" ] } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 60a1e814d..539072b77 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -1,5 +1,5 @@ /* - * File updated ~ 10 - 1 - 2025 ~ Leaf + * File updated ~ 30 - 4 - 2025 ~ Leaf */ package leaf.cosmere.tag; @@ -261,6 +261,11 @@ private void addContainsMetal() //entities entityTagBuilder.add(EntityType.IRON_GOLEM); + entityTagBuilder.add(EntityType.MINECART); + entityTagBuilder.add(EntityType.CHEST_MINECART); + entityTagBuilder.add(EntityType.FURNACE_MINECART); + entityTagBuilder.add(EntityType.HOPPER_MINECART); + entityTagBuilder.add(EntityType.TNT_MINECART); } private void addCopperBlockVariations(IntrinsicCosmereTagBuilder itemTagBuilder, IntrinsicCosmereTagBuilder blockTagBuilder) From 61c38d0076a856955bcf5f558093cf62f0d95115 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:28:01 -0400 Subject: [PATCH 1013/1090] Bug Fixes, Patchouli Pages Fixes bugs Gerbagel mentioned. Adds translation keys for all new keybinds. Separates dedicated activators into their own section. Adds patchouli guide pages on key binds --- .../client/AllomancyKeybindings.java | 2 +- src/api/java/leaf/cosmere/api/Activator.java | 12 ++- src/api/java/leaf/cosmere/api/Constants.java | 1 + .../39b5f26b3fbd3a088f493470df207f8ad9de8264 | 5 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 48 ++++++++++- .../guide/en_us/categories/basics.json | 7 ++ .../entries/basics/activating_powers.json | 44 ++++++++++ .../entries/basics/investiture_basics.json | 21 +++++ .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../main/java/leaf/cosmere/EngLangGen.java | 20 +++++ .../cosmere/patchouli/PatchouliBasics.java | 83 +++++++++++++++++++ .../client/FeruchemyKeybindings.java | 5 +- .../cosmere/client/ClientForgeEvents.java | 18 ++-- .../java/leaf/cosmere/client/Keybindings.java | 3 +- .../leaf/cosmere/client/PowerSaveState.java | 34 ++++++-- .../client/SurgebindingKeybindings.java | 4 +- 18 files changed, 285 insertions(+), 30 deletions(-) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java index af248f631..50c634d14 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/AllomancyKeybindings.java @@ -41,7 +41,7 @@ public class AllomancyKeybindings .collect(Collectors.toMap( Function.identity(), metalType -> - new KeyMapping(KEY_ALLOMANCY + metalType.getName(),GLFW.GLFW_KEY_UNKNOWN,KEYS_CATEGORY) + new KeyMapping(KEY_ALLOMANCY + metalType.getName(),GLFW.GLFW_KEY_UNKNOWN,KEYS_ACTIVATE_CATEGORY) )); @SubscribeEvent diff --git a/src/api/java/leaf/cosmere/api/Activator.java b/src/api/java/leaf/cosmere/api/Activator.java index 74cde4e47..2f11ab3d0 100644 --- a/src/api/java/leaf/cosmere/api/Activator.java +++ b/src/api/java/leaf/cosmere/api/Activator.java @@ -10,14 +10,13 @@ public class Activator public Manifestation manifest; public String name; public String category; - public String keyName; public Activator(KeyMapping key, Manifestation manifestation) { keyMapping = key; manifest = manifestation; - } + } public void setCategory(String category) { @@ -33,4 +32,13 @@ public KeyMapping getKeyMapping() public Manifestation getManifestation() {return manifest;} public String getCategory() {return category;} + + public String getKeyName() + { + return "key.cosmere." + getCategory() + "." + name; + } + public String translator() + { + return name + "_" + category; + } } diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 830ec7383..a00518601 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -79,6 +79,7 @@ public static class Gui public static class Strings { public static final String KEYS_CATEGORY = "keys.cosmere.main"; + public static final String KEYS_ACTIVATE_CATEGORY = "keys.cosmere.activators"; //keybind builder public static final String KEY_ALLOMANCY = "key.cosmere.allomancy."; diff --git a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 index 6c1f56edd..e8e94dd68 100644 --- a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 +++ b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 @@ -1 +1,4 @@ -// 1.20.1 2024-10-09T13:22:13.1357663 Cosmere PatchouliGeneration +// 1.20.1 2025-06-30T21:08:41.17594 Cosmere PatchouliGeneration +9e2cbeb9a904ddb9874b2097f4cbe576a71a8ff0 assets/cosmere/patchouli_books/guide/en_us/categories/basics.json +2bd1faf9f2a9d52c333e824bad5680e403d8d744 assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json +fd4cfd28bfffc52180eb889bfae3bd79f08c388b assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 3679273fe..36350d8f6 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-11-04T18:26:44.0754925 Languages: en_us -e0e015a4eee1cdefaa0f7cc2506cac51bc014241 assets/cosmere/lang/en_us.json +// 1.20.1 2025-06-30T20:50:55.317948 Languages: en_us +a428967fe9e9d8ad9fe98f946c480d509ae57e47 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 4bd2a8673..ef6528ec0 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -10,7 +10,6 @@ "block.cosmere.cadmium_ore": "Cadmium Ore", "block.cosmere.chromium_block": "Chromium Block", "block.cosmere.chromium_ore": "Chromium Ore", - "block.cosmere.copper_block": "Copper Block", "block.cosmere.deepslate_aluminum_ore": "Deepslate Aluminum Ore", "block.cosmere.deepslate_cadmium_ore": "Deepslate Cadmium Ore", "block.cosmere.deepslate_chromium_ore": "Deepslate Chromium Ore", @@ -118,13 +117,60 @@ "item.cosmere.tin_nugget": "Tin Nugget", "item.cosmere.zinc_ingot": "Zinc Ingot", "item.cosmere.zinc_nugget": "Zinc Nugget", + "key.cosmere.allomancy.aluminum": "Activate Allomantic Aluminum", + "key.cosmere.allomancy.atium": "Activate Allomantic Atium", + "key.cosmere.allomancy.bendalloy": "Activate Allomantic Bendalloy", + "key.cosmere.allomancy.brass": "Activate Allomantic Brass", + "key.cosmere.allomancy.bronze": "Activate Allomantic Bronze", + "key.cosmere.allomancy.cadmium": "Activate Allomantic Cadmium", + "key.cosmere.allomancy.chromium": "Activate Allomantic Chromium", + "key.cosmere.allomancy.copper": "Activate Allomantic Copper", + "key.cosmere.allomancy.duralumin": "Activate Allomantic Duralumin", + "key.cosmere.allomancy.electrum": "Activate Allomantic Electrum", + "key.cosmere.allomancy.gold": "Activate Allomantic Gold", + "key.cosmere.allomancy.iron": "Activate Allomantic Iron", + "key.cosmere.allomancy.nicrosil": "Activate Allomantic Nicrosil", + "key.cosmere.allomancy.pewter": "Activate Allomantic Pewter", + "key.cosmere.allomancy.steel": "Activate Allomantic Steel", + "key.cosmere.allomancy.tin": "Activate Allomantic Tin", + "key.cosmere.allomancy.zinc": "Activate Allomantic Zinc", + "key.cosmere.feruchemy.aluminum": "Activate Feruchemic Aluminum", + "key.cosmere.feruchemy.atium": "Activate Feruchemic Atium", + "key.cosmere.feruchemy.bendalloy": "Activate Feruchemic Bendalloy", + "key.cosmere.feruchemy.brass": "Activate Feruchemic Brass", + "key.cosmere.feruchemy.bronze": "Activate Feruchemic Bronze", + "key.cosmere.feruchemy.cadmium": "Activate Feruchemic Cadmium", + "key.cosmere.feruchemy.chromium": "Activate Feruchemic Chromium", + "key.cosmere.feruchemy.copper": "Activate Feruchemic Copper", + "key.cosmere.feruchemy.duralumin": "Activate Feruchemic Duralumin", + "key.cosmere.feruchemy.electrum": "Activate Feruchemic Electrum", + "key.cosmere.feruchemy.gold": "Activate Feruchemic Gold", + "key.cosmere.feruchemy.iron": "Activate Feruchemic Iron", + "key.cosmere.feruchemy.nicrosil": "Activate Feruchemic Nicrosil", + "key.cosmere.feruchemy.pewter": "Activate Feruchemic Pewter", + "key.cosmere.feruchemy.steel": "Activate Feruchemic Steel", + "key.cosmere.feruchemy.tin": "Activate Feruchemic Tin", + "key.cosmere.feruchemy.zinc": "Activate Feruchemic Zinc", + "key.cosmere.powers.activate": "Activate Power Save State", "key.cosmere.powers.menu": "Powers Menu", "key.cosmere.powers.mode.decrease": "Mode Decrease", "key.cosmere.powers.mode.increase": "Mode Increase", "key.cosmere.powers.next": "Next Power", "key.cosmere.powers.previous": "Previous Power", + "key.cosmere.powers.save": "Save New Power State", "key.cosmere.powers.toggle": "Deactivate All Powers", "key.cosmere.powers.use": "Use Active Ability", + "key.cosmere.stormlight.abrasion": "Activate Surgebinding Abrasion", + "key.cosmere.stormlight.adhesion": "Activate Surgebinding Adhesion", + "key.cosmere.stormlight.cohesion": "Activate Surgebinding Cohesion", + "key.cosmere.stormlight.division": "Activate Surgebinding Division", + "key.cosmere.stormlight.gravitation": "Activate Surgebinding Gravitation", + "key.cosmere.stormlight.illumination": "Activate Surgebinding Illumination", + "key.cosmere.stormlight.progression": "Activate Surgebinding Progression", + "key.cosmere.stormlight.tension": "Activate Surgebinding Tension", + "key.cosmere.stormlight.transformation": "Activate Surgebinding Transformation", + "key.cosmere.stormlight.transportation": "Activate Surgebinding Transportation", + "keys.cosmere.activators": "Power Activators", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.none": "None", "power.cosmere.mode.set": "Mode set to: %s", diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json new file mode 100644 index 000000000..fa0849cc7 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json @@ -0,0 +1,7 @@ +{ + "description": "In this section, I will teach you how to access and use your powers most effectively", + "icon": "cosmere:tin_nugget", + "name": "Basics", + "secret": false, + "sortnum": 10 +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json new file mode 100644 index 000000000..cbac8ed61 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json @@ -0,0 +1,44 @@ +{ + "category": "cosmere:basics", + "icon": "cosmere:copper_ingot", + "name": "Activating Powers", + "pages": [ + { + "type": "text", + "text": "The first way I will teach you to activate powers is with the basic keybinds. This is not the most effective way of doing it, but it is straightforward.\nFirst, locate the icon for your current main power in the upper left corner. By pressing ($(k:key.cosmere.powers.next)$()) and ($(k:key.cosmere.powers.previous)$()) you can change which power is your current main. From there, press ($(k:key.cosmere.powers.mode.increase)$()) and ($(k:key.cosmere.powers.mode.decrease)$()) to change the mode for that power. Changing your current main power will not stop your other powers from running in the background.", + "title": "Activating Powers" + }, + { + "type": "text", + "text": "The most accessible way to activate powers is from the menu. To access the menu, press and hold ($(k:key.cosmere.powers.menu)$()). From here, left clicking on a power will increase its mode by one, and right clicking will decrease it. Releasing ($(k:key.cosmere.powers.menu)$()) will close the menu.", + "title": "The Menu" + }, + { + "type": "text", + "text": "The fastest way to activate one power quickly is with its dedicated keybind. These are not set by default, but you can change your favorites to activate this way. When this keybind is used, it will set the mode of your power to +1, unless the power is feruchemical in nature, in which case it will tap at level 5 instead. However, in all cases, if the power is already active, no matter the mode, pressing the keybind will turn the power off instead. Using a dedicated keybind will also set your active main power to the associated power as well", + "title": "Dedicated Keybinds" + }, + { + "type": "empty", + "draw_filler": true + }, + { + "type": "text", + "text": "(Note: this is a recent and complicated feature. It may have bugs. Please report all bugs to the bug tracker.)$(br)By far the most complicated way to activate your powers is with the Power Mode Save States. You have access to nine different ones. To save a new save state, activate all desired powers at the desired levels through any of the means previously described, and ensure all others are turned off. Then hold ($(k:key.cosmere.powers.save)$()) and press one of your hotbar slots.$(br2)All active powers are now saved to that key.", + "title": "Power Mode Save Keybind" + }, + { + "type": "text", + "text": "To load a preexisting save state, hold ($(k:key.cosmere.powers.activate)$()) and press the hotbar key for the desired save slot. Your powers should now be activated. If they are not, press it again. (This is a known bug.) You can also toggle a save state off by pressing the keybind again. Powers that were not on when the save state was saved will not be affected by loading the save state." + }, + { + "type": "text", + "text": "To quickly deactivate all powers you have active, press ($(k:key.cosmere.powers.toggle)$()).", + "title": "Deactivating Powers" + } + ], + "priority": true, + "read_by_default": false, + "secret": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json new file mode 100644 index 000000000..9eed4394c --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json @@ -0,0 +1,21 @@ +{ + "category": "cosmere:basics", + "icon": "cosmere:lerasatium_ingot", + "name": "Investiture Basics", + "pages": [ + { + "type": "text", + "text": "$(thing)Investiture$() is a concept functioning like matter or energy. It makes up 16 godlike beings called $(thing)Shards$(), as well as many other mystical or magical things. Investiture permeates all matter and can function as a power source for several types of magics we call \"$(thing)Invested Arts$().\" You may already have access to one or more of these arts.", + "title": "Investiture (For Dummies)" + }, + { + "type": "text", + "text": "Once, all investiture belonged to one powerful being called \"$(thing)Adonalsium$(),\" but eventually 17 people decided to work together to kill him. They gathered four powerful artifacts made from investiture known as the \"$(thing)Dawnshards$()\" and killed him with them through means still unknown to us. After Adonalsium was killed, his investiture was broken into 16 Shards and each of the 17 people picked a shard and took it up, except for one, a man named \"$(thing)Hoid$().\" You may even see Hoid on your travels.", + "title": "Origins of Investiture" + } + ], + "priority": true, + "read_by_default": false, + "secret": false, + "sortnum": 0 +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 209cee0a2..63133e887 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-03-09T10:34:35.1010594 Curios for feruchemy +// 1.20.1 2025-06-30T21:04:44.733543 Curios for feruchemy 6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 9fdf3ecb4..82000700d 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-03-09T10:39:27.8482432 Curios for hemalurgy +// 1.20.1 2025-06-30T21:04:44.752723 Curios for hemalurgy 2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index b05f39117..42c66f005 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -6,6 +6,7 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.Roshar; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; @@ -203,6 +204,7 @@ private void addKeybindings() { //KeyBindings add(KEYS_CATEGORY, "Cosmere"); + add(KEYS_ACTIVATE_CATEGORY, "Power Activators"); add(KEY_MANIFESTATION_MENU, "Powers Menu"); add(KEY_DEACTIVATE_ALL_POWERS, "Deactivate All Powers"); add(KEY_MANIFESTATION_NEXT, "Next Power"); @@ -210,6 +212,24 @@ private void addKeybindings() add(KEY_MANIFESTATION_USE_ACTIVE, "Use Active Ability"); add(KEY_MANIFESTATION_MODE_INCREASE, "Mode Increase"); add(KEY_MANIFESTATION_MODE_DECREASE, "Mode Decrease"); + add(KEY_ACTIVATE, "Activate Power Save State"); + add(KEY_SAVE_ACTIVATOR, "Save New Power State"); + String allo = "Activate Allomantic "; + String feru = "Activate Feruchemic "; + String surge = "Activate Surgebinding "; + for(Metals.MetalType metalType: EnumUtils.METAL_TYPES) + { + if(!metalType.hasFeruchemicalEffect()) + { + continue; + } + add(KEY_ALLOMANCY + metalType.getName(), allo + StringHelper.fixCapitalisation(metalType.getName())); + add(KEY_FERUCHEMY + metalType.getName(), feru + StringHelper.fixCapitalisation(metalType.getName())); + } + for(Roshar.Surges i : EnumUtils.SURGES) + { + add(KEY_STORMLIGHT + i.getName(), surge + StringHelper.fixCapitalisation(i.getName())); + } } private void addStats() diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java index 517c70568..422c222f3 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java @@ -4,8 +4,11 @@ package leaf.cosmere.patchouli; +import leaf.cosmere.api.Constants; import leaf.cosmere.patchouli.data.BookStuff; +import leaf.cosmere.patchouli.data.PatchouliTextFormat; +import java.util.ArrayList; import java.util.List; public class PatchouliBasics @@ -13,5 +16,85 @@ public class PatchouliBasics public static void collect(List categories, List entries) { //todo basic general section + + BookStuff.Category basicsCategory = new BookStuff.Category("basics", + "In this section, I will teach you how to access and use your powers most effectively", + "cosmere:tin_nugget"); + categories.add(basicsCategory); + basicsCategory.sortnum = 10; + + // Start a page list + List pages = new ArrayList<>(); + + { // Investiture Basics Entry + BookStuff.Entry investitureBasics = new BookStuff.Entry("investiture_basics", basicsCategory, "cosmere:lerasatium_ingot"); + investitureBasics.priority = true; + + BookStuff.Page firstPage = new BookStuff.TextPage(); + firstPage.setTitle("Investiture (For Dummies)"); + firstPage.setText("%s is a concept functioning like matter or energy. It makes up 16 godlike beings called %s, as well as many other mystical or magical things. ".formatted(PatchouliTextFormat.Thing("Investiture"),PatchouliTextFormat.Thing("Shards")) + + "Investiture permeates all matter and can function as a power source for several types of magics we call \"%s.\" You may already have access to one or more of these arts.".formatted(PatchouliTextFormat.Thing("Invested Arts"))); + pages.add(firstPage); + BookStuff.Page secondPage = new BookStuff.TextPage(); + secondPage.setTitle("Origins of Investiture"); + secondPage.setText("Once, all investiture belonged to one powerful being called \"%s,\" but eventually 17 people decided to work together to kill him. ".formatted(PatchouliTextFormat.Thing("Adonalsium")) + + "They gathered four powerful artifacts made from investiture known as the \"%s\" and killed him with them through means still unknown to us. ".formatted(PatchouliTextFormat.Thing("Dawnshards")) + + "After Adonalsium was killed, his investiture was broken into 16 Shards and each of the 17 people picked a shard and took it up, except for one, a man named \"%s.\" ".formatted(PatchouliTextFormat.Thing("Hoid")) + + "You may even see Hoid on your travels."); + pages.add(secondPage); + + investitureBasics.pages = pages.toArray(BookStuff.Page[]::new); + pages.clear(); + entries.add(investitureBasics); + } + { //Single activators entry + BookStuff.Entry activatingPowersEntry = new BookStuff.Entry("activating_powers", basicsCategory, "cosmere:copper_ingot"); + activatingPowersEntry.priority = true; + + BookStuff.Page firstPage = new BookStuff.TextPage(); + firstPage.setTitle("Activating Powers"); + firstPage.setText("The first way I will teach you to activate powers is with the basic keybinds. This is not the most effective way of doing it, but it is straightforward.\n" + + "First, locate the icon for your current main power in the upper left corner. By pressing (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_NEXT) + ") and (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_PREVIOUS) + + ") you can change which power is your current main. From there, press (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_MODE_INCREASE) + ") and (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_MODE_DECREASE) + + ") to change the mode for that power. Changing your current main power will not stop your other powers from running in the background."); + pages.add(firstPage); + + BookStuff.Page secondPage = new BookStuff.TextPage(); + secondPage.setTitle("The Menu"); + secondPage.setText("The most accessible way to activate powers is from the menu. To access the menu, press and hold (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_MENU) + + "). From here, left clicking on a power will increase its mode by one, and right clicking will decrease it. Releasing (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_MANIFESTATION_MENU) + ") will close the menu."); + pages.add(secondPage); + + BookStuff.Page thirdPage = new BookStuff.TextPage(); + thirdPage.setTitle("Dedicated Keybinds"); + thirdPage.setText("The fastest way to activate one power quickly is with its dedicated keybind. These are not set by default, but you can change your favorites to activate this way. " + + "When this keybind is used, it will set the mode of your power to +1, unless the power is feruchemical in nature, in which case it will tap at level 5 instead. " + + "However, in all cases, if the power is already active, no matter the mode, pressing the keybind will turn the power off instead. Using a dedicated keybind will also set your active main power to the associated power as well"); + pages.add(thirdPage); + + BookStuff.Page emptyPage = new BookStuff.EmptyPage(); + pages.add(emptyPage); + + BookStuff.Page fourthPage = new BookStuff.TextPage(); + fourthPage.setTitle("Power Mode Save Keybind"); + fourthPage.setText("(Note: this is a recent and complicated feature. It may have bugs. Please report all bugs to the bug tracker.)$(br)By far the most complicated way to activate your powers is with the Power Mode Save States. You have access to nine different ones. " + + "To save a new save state, activate all desired powers at the desired levels through any of the means previously described, and ensure all others are turned off. Then hold (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_SAVE_ACTIVATOR) + ") and press one of your hotbar slots.$(br2)" + + "All active powers are now saved to that key."); + pages.add(fourthPage); + BookStuff.Page fifthPage = new BookStuff.TextPage(); + fifthPage.setText("To load a preexisting save state, hold (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_ACTIVATE) + ") and press the hotbar key for the desired save slot. Your powers should now be activated. If they are not, press it again. " + + "(This is a known bug.) You can also toggle a save state off by pressing the keybind again. Powers that were not on when the save state was saved will not be affected by loading the save state."); + pages.add(fifthPage); + + BookStuff.Page lastPage = new BookStuff.TextPage(); + lastPage.setTitle("Deactivating Powers"); + lastPage.setText("To quickly deactivate all powers you have active, press (" + PatchouliTextFormat.Keybind(Constants.Strings.KEY_DEACTIVATE_ALL_POWERS) + ")."); + pages.add(lastPage); + + activatingPowersEntry.pages = pages.toArray(BookStuff.Page[]::new); + pages.clear(); + entries.add(activatingPowersEntry); + } + } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java index e427230b9..a4d28e82f 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/client/FeruchemyKeybindings.java @@ -19,8 +19,7 @@ import java.util.function.Function; import java.util.stream.Collectors; -import static leaf.cosmere.api.Constants.Strings.KEYS_CATEGORY; -import static leaf.cosmere.api.Constants.Strings.KEY_FERUCHEMY; +import static leaf.cosmere.api.Constants.Strings.*; import static leaf.cosmere.feruchemy.common.registries.FeruchemyManifestations.FERUCHEMY_POWERS; @Mod.EventBusSubscriber(value = Dist.CLIENT, modid = Feruchemy.MODID, bus = Mod.EventBusSubscriber.Bus.MOD) @@ -32,7 +31,7 @@ public class FeruchemyKeybindings .collect(Collectors.toMap( Function.identity(), metalType -> - new KeyMapping(KEY_FERUCHEMY + metalType.getName(), GLFW.GLFW_KEY_UNKNOWN,KEYS_CATEGORY) + new KeyMapping(KEY_FERUCHEMY + metalType.getName(), GLFW.GLFW_KEY_UNKNOWN,KEYS_ACTIVATE_CATEGORY) )); @SubscribeEvent diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 878196069..18aa6d3f9 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -74,6 +74,11 @@ public static void onKey(InputEvent.Key event) { // just deactivate Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); + //if all powers are deactivated, the power save state is off. + for(PowerSaveState.PowerSaves save: PowerSaveState.PowerSaves.values()) + { + save.deactivate(); + } } //check keybinds with modifiers first? @@ -114,8 +119,13 @@ else if (Screen.hasControlDown()) Manifestation manifestation = activator.getManifestation(); Cosmere.packetHandler().sendToServer(new SetSelectedManifestationMessage(manifestation)); selected = manifestation; - + //not changing sandmastery mode because ribbon allotment. no need for the rest. might be implemented later. + if (activator.getCategory().equals("sandmastery")) + { + break; + } int modifier = -selected.getMode(spiritweb); + //if active turn off if (!selected.isActive(spiritweb)) { @@ -142,13 +152,9 @@ else if (Screen.hasControlDown()) { if(isKeyPressed(event, Keybindings.getKey(powerSave.getNum()))) { - //boolean trying = (isKeyHeld(Keybindings.ACTIVATE_POWER_SAVE)|| - // isKeyHeld(Keybindings.SAVE_POWER_SAVE)) ? - // true : false; - if(isKeyHeld(Keybindings.ACTIVATE_POWER_SAVE)) { - powerSave.activate(); + powerSave.activate(spiritweb); } else if(isKeyHeld(Keybindings.SAVE_POWER_SAVE)) { diff --git a/src/main/java/leaf/cosmere/client/Keybindings.java b/src/main/java/leaf/cosmere/client/Keybindings.java index 95690d462..03a1f970c 100644 --- a/src/main/java/leaf/cosmere/client/Keybindings.java +++ b/src/main/java/leaf/cosmere/client/Keybindings.java @@ -65,11 +65,10 @@ public static KeyMapping createKeybinding(String description, KeyModifier keyMod { return new KeyMapping(description, KeyConflictContext.DEFAULT, keyModifier, InputConstants.Type.KEYSYM.getOrCreate(keyCode), category); } - private static Options gameSettings = Minecraft.getInstance().options; public static KeyMapping getKey(int i) { - return gameSettings.keyHotbarSlots[i]; + return Minecraft.getInstance().options.keyHotbarSlots[i]; } } diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java index 41a6fe598..9eb5f09b5 100644 --- a/src/main/java/leaf/cosmere/client/PowerSaveState.java +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -5,6 +5,7 @@ package leaf.cosmere.client; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; @@ -25,7 +26,7 @@ public enum PowerSaves POWER_SAVE_8(7), POWER_SAVE_9(8); - private final HashMap manifestations = new HashMap(); + private HashMap manifestations = new HashMap(); private boolean isActive; private final int num; @@ -49,26 +50,43 @@ public boolean isActive() return isActive; } + public void deactivate() + { + isActive = false; + } + public boolean hasManifestation(Manifestation manifestation) { return manifestations.containsKey(manifestation); } - public void activate() + public void activate(ISpiritweb spiritweb) { - for (Manifestation manifestation : manifestations.keySet()) + if(isActive) { - int modifier = manifestations.get(manifestation); - Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, - isActive ? -modifier : modifier)); + for (Manifestation manifestation : manifestations.keySet()) + { + int modifier = manifestations.get(manifestation); + modifier -= manifestation.getMode(spiritweb); + Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); + } } + else + { + for (Manifestation manifestation : manifestations.keySet()) + { + + int modifier = - manifestation.getMode(spiritweb); + Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); + } + } + isActive = !isActive; } public void addManifestations(HashMap manifests) { - manifestations.clear(); - manifestations.putAll(manifests); + manifestations = manifests; } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java index fdbbdd506..2f547b13b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/client/SurgebindingKeybindings.java @@ -40,7 +40,7 @@ public class SurgebindingKeybindings .collect(Collectors.toMap( Function.identity(), surge -> - new KeyMapping(KEY_STORMLIGHT + surge.getName(), GLFW.GLFW_KEY_UNKNOWN, KEYS_CATEGORY) + new KeyMapping(KEY_STORMLIGHT + surge.getName(), GLFW.GLFW_KEY_UNKNOWN, KEYS_ACTIVATE_CATEGORY) )); @SubscribeEvent @@ -55,7 +55,7 @@ public static void register(RegisterKeyMappingsEvent event) SurgebindingManifestation manifest = (SurgebindingManifestation) SURGEBINDING_POWERS.get(surge).getManifestation(); event.register(key); Activator entry = new Activator(key, manifest); - entry.setCategory("surgebinding"); + entry.setCategory("stormlight"); Keybindings.activators.add(entry); } From 6288c9c1376883a251b3c0d91cfb7b9c37b691f5 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:58:21 -0400 Subject: [PATCH 1014/1090] Reformating Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 | 6 +++--- .../patchouli_books/guide/en_us/categories/basics.json | 2 +- .../guide/en_us/entries/basics/activating_powers.json | 2 +- .../.cache/60c035799f578be828205f75035ce4e4976d0466 | 4 ++-- .../data/feruchemy/curios/entities/feruchemists.json | 4 ++-- .../.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 ++-- .../data/hemalurgy/curios/entities/hemalurgists.json | 4 ++-- .../main/java/leaf/cosmere/patchouli/PatchouliBasics.java | 4 ++-- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 index e8e94dd68..43bebf0ed 100644 --- a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 +++ b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 @@ -1,4 +1,4 @@ -// 1.20.1 2025-06-30T21:08:41.17594 Cosmere PatchouliGeneration -9e2cbeb9a904ddb9874b2097f4cbe576a71a8ff0 assets/cosmere/patchouli_books/guide/en_us/categories/basics.json -2bd1faf9f2a9d52c333e824bad5680e403d8d744 assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json +// 1.20.1 2025-06-30T21:57:26.244604 Cosmere PatchouliGeneration +4f33960cb7941c483714148bc1fde9b26c995d68 assets/cosmere/patchouli_books/guide/en_us/categories/basics.json +98bd146d8ce57e4944b62a5780552617a3a7a7db assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json fd4cfd28bfffc52180eb889bfae3bd79f08c388b assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json index fa0849cc7..5c2ac0503 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/categories/basics.json @@ -1,6 +1,6 @@ { "description": "In this section, I will teach you how to access and use your powers most effectively", - "icon": "cosmere:tin_nugget", + "icon": "cosmere:tin_ingot", "name": "Basics", "secret": false, "sortnum": 10 diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json index cbac8ed61..2084fca35 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json @@ -1,6 +1,6 @@ { "category": "cosmere:basics", - "icon": "cosmere:copper_ingot", + "icon": "cosmere:steel_ingot", "name": "Activating Powers", "pages": [ { diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 63133e887..e282d9e28 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-06-30T21:04:44.733543 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-06-30T21:57:26.323873 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 82000700d..32e926b4c 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-06-30T21:04:44.752723 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-06-30T21:57:26.342432 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java index 422c222f3..cf94f5658 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java @@ -19,7 +19,7 @@ public static void collect(List categories, List categories, List Date: Sun, 6 Jul 2025 14:29:29 +0200 Subject: [PATCH 1015/1090] [Hemalurgy] Added negative effects at lower levels of spiritweb integrity --- .../HemalurgySpiritwebSubmodule.java | 40 +++++++++++++++---- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java index df6b971bd..1e92e0228 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/capabilities/HemalurgySpiritwebSubmodule.java @@ -4,11 +4,17 @@ package leaf.cosmere.hemalurgy.common.capabilities; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.hemalurgy.common.config.HemalurgyConfigs; +import leaf.cosmere.hemalurgy.common.config.HemalurgyServerConfig; import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.player.Player; public class HemalurgySpiritwebSubmodule implements ISpiritwebSubmodule { @@ -23,15 +29,33 @@ public void tickServer(ISpiritweb spiritweb) AttributeInstance attributeInstance = spiritweb.getLiving().getAttribute(HemalurgyAttributes.SPIRITWEB_INTEGRITY.get()); if (attributeInstance != null) { - if (attributeInstance.getValue() < 0) + int intensity = (int) attributeInstance.getValue(); + if (intensity < HemalurgyAttributes.SPIRITWEB_INTEGRITY.getAttribute().getDefaultValue()) { - //ideas: - //nausea - //slowness - //darkness - //blindness - //random messages - + // bloodlust effect? whispers? having hemalurgy at all should probably result in some weird stuff + } + if (intensity < 0) + { + if (spiritweb.getLiving() instanceof Player player) + { + //ideas: + //nausea + //slowness + //darkness + //blindness + //random messages + switch (intensity) + { + default: // illegal? perhaps + case -3: + player.addEffect(new MobEffectInstance(MobEffects.CONFUSION, tickToCheck*2, (intensity*-1)-3, false, false, false)); // confusion = nausea + case -2: + player.addEffect(new MobEffectInstance(MobEffects.DARKNESS, tickToCheck*2, (intensity*-1)-2, false, false, false)); + case -1: + player.addEffect(new MobEffectInstance(MobEffects.BLINDNESS, tickToCheck*2, (intensity*-1)-1, false, false, false)); + break; + } + } } } } From 0be9c4b451e47404fdef39b3dd2bba62794dffdc Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Wed, 9 Jul 2025 21:12:20 -0400 Subject: [PATCH 1016/1090] Bug Fixes Fixes the issue with the toggle activation by checking the current mode of all manifestations. Fixes a bug where save states would be deleted after quitting a world by saving a copy as nbt data attached to the SpiritwebCapability. Adds a text pop-up to help show what is happening when saving and activating power save states. --- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../cosmere/client/ClientForgeEvents.java | 14 +- .../leaf/cosmere/client/PowerSaveState.java | 150 +++++++++++++++--- .../cap/entity/SpiritwebCapability.java | 8 + 7 files changed, 149 insertions(+), 39 deletions(-) diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index e282d9e28..1404bdc07 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-06-30T21:57:26.323873 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-07-09T18:22:51.382172 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index 61b319ff8..da81b44bb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 32e926b4c..073e4038e 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-06-30T21:57:26.342432 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-07-09T18:22:51.400483 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java index 18aa6d3f9..816408bc5 100644 --- a/src/main/java/leaf/cosmere/client/ClientForgeEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientForgeEvents.java @@ -19,6 +19,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.player.LocalPlayer; +import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; import net.minecraft.util.profiling.ProfilerFiller; import net.minecraft.world.InteractionHand; @@ -75,10 +76,7 @@ public static void onKey(InputEvent.Key event) // just deactivate Cosmere.packetHandler().sendToServer(new DeactivateManifestationsMessage()); //if all powers are deactivated, the power save state is off. - for(PowerSaveState.PowerSaves save: PowerSaveState.PowerSaves.values()) - { - save.deactivate(); - } + } //check keybinds with modifiers first? @@ -126,18 +124,22 @@ else if (Screen.hasControlDown()) } int modifier = -selected.getMode(spiritweb); - //if active turn off + //if inactive turn on if (!selected.isActive(spiritweb)) { //if inactive and feruchemic ability tap 5 //else level one modifier += activator.getCategory().equals("feruchemy")? -5: 1; Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); + spiritweb.getLiving().sendSystemMessage(Component.literal("Activated " + + Component.translatable(selected.getTranslationKey()))); } else { Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(selected,modifier)); + spiritweb.getLiving().sendSystemMessage(Component.literal("Deactivated " + + Component.translatable(selected.getTranslationKey()))); } } } @@ -158,7 +160,7 @@ else if (Screen.hasControlDown()) } else if(isKeyHeld(Keybindings.SAVE_POWER_SAVE)) { - powerSave.addManifestations(spiritweb.getManifestations(false,true)); + powerSave.addManifestations(spiritweb); } } } diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java index 9eb5f09b5..7e08f7284 100644 --- a/src/main/java/leaf/cosmere/client/PowerSaveState.java +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -1,15 +1,25 @@ /* -* File created ~ 2 - 5 - 2025 ~ SoaringEaqle + * File created ~ 2 - 5 - 2025 ~ SoaringEaqle */ package leaf.cosmere.client; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.client.render.CosmereRenderers; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; +import leaf.cosmere.common.registry.ManifestationRegistry; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.Arrays; import java.util.HashMap; +import java.util.Map; +import java.util.Optional; public class PowerSaveState { @@ -26,35 +36,53 @@ public enum PowerSaves POWER_SAVE_8(7), POWER_SAVE_9(8); - private HashMap manifestations = new HashMap(); - private boolean isActive; + private HashMap manifestations = new HashMap<>(); private final int num; + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(powerTypes -> powerTypes.num == value) + .findFirst(); + } + PowerSaves(int num) { this.num = num; - isActive = false; + } public String getName() { - return Integer.toString(num); + return "Power Save State " + (num + 1); } + public int getNum() { return num; } - public boolean isActive() - { - return isActive; - } - public void deactivate() + + public boolean isActive(ISpiritweb spiritweb) { - isActive = false; + Map active = spiritweb.getManifestations(); + for (Map.Entry entry : manifestations.entrySet()) + { + Map.Entry activeEntry = getEntry(active, entry.getKey()); + if (activeEntry == null) + { + return false; + } + if (!entry.equals(activeEntry)) + { + return false; + } + } + return true; } + public boolean hasManifestation(Manifestation manifestation) { return manifestations.containsKey(manifestation); @@ -62,34 +90,106 @@ public boolean hasManifestation(Manifestation manifestation) public void activate(ISpiritweb spiritweb) { - if(isActive) + boolean toActivate = !isActive(spiritweb); + + for (Manifestation manifestation : manifestations.keySet()) { - for (Manifestation manifestation : manifestations.keySet()) + int modifier = -(manifestation.getMode(spiritweb)); + if (toActivate) { - int modifier = manifestations.get(manifestation); - modifier -= manifestation.getMode(spiritweb); - Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); + modifier += manifestations.get(manifestation); } + Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); + + } + if(toActivate) + { + spiritweb.getLiving().sendSystemMessage(Component.literal("Activating " + getName())); } else { - for (Manifestation manifestation : manifestations.keySet()) - { - - int modifier = - manifestation.getMode(spiritweb); - Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); - } + spiritweb.getLiving().sendSystemMessage(Component.literal("Deactivating " + getName())); } + manifestations.keySet().forEach((manifest) -> + spiritweb.getLiving() + .sendSystemMessage(Component.literal( + Component.translatable( + manifest.getTranslationKey() + ).getString() + ": " + manifest.getMode(spiritweb)))); + } + + public void addManifestations(ISpiritweb spiritweb) + { + manifestations = spiritweb.getManifestations(false, true); + spiritweb.getLiving().sendSystemMessage(Component.literal("Saved new " + getName())); + manifestations.forEach((manifestation, integer) -> + spiritweb.getLiving() + .sendSystemMessage(Component.literal( + Component.translatable( + manifestation.getTranslationKey() + ).getString() + ": " + integer))); + + + } - isActive = !isActive; + private void setManifestations(HashMap manifestations) + { + this.manifestations = manifestations; } - public void addManifestations(HashMap manifests) + } + + private static Map.@Nullable Entry getEntry(@NotNull Map map, Manifestation manifestation) + { + for (Map.Entry entry : map.entrySet()) { - manifestations = manifests; + Manifestation maniType = ManifestationRegistry.fromID(manifestation.getRegistryName()); + Manifestation entryType = ManifestationRegistry.fromID(entry.getKey().getRegistryName()); + if (maniType.equals(entryType)) + { + return entry; + } } + return null; + } + public static CompoundTag serialize() + { + CompoundTag nbt = new CompoundTag(); + for(PowerSaves saveState: PowerSaves.values()) + { + CompoundTag data = new CompoundTag(); + for(Manifestation manifest: saveState.manifestations.keySet()) + { + data.putInt(manifest.getRegistryName().toString(),saveState.manifestations.get(manifest)); + } + nbt.put(Integer.toString(saveState.num), data); + } + return nbt; + } + + public static void deserialize(CompoundTag nbt) + { + for(PowerSaves state : PowerSaves.values()) + { + CompoundTag data = (CompoundTag) nbt.get(Integer.toString(state.num)); + + HashMap manifestations = new HashMap<>(); + + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (data.contains(manifestationLoc)) + { + manifestations.put(manifestation, data.getInt(manifestationLoc)); + } + } + + state.setManifestations(manifestations); + } } + } diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 461a6421d..9b6f19681 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -16,6 +16,7 @@ import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.client.PowerSaveState; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; @@ -90,6 +91,8 @@ public class SpiritwebCapability implements ISpiritweb private final Map spiritwebSubmodules; + private Map> powerSaveStorage; + public SpiritwebCapability(LivingEntity ent) { @@ -146,6 +149,7 @@ public CompoundTag serializeNBT() spiritwebSubmodule.serialize(this); } + nbt.put("PowerSaveStates", PowerSaveState.serialize()); return nbt; } @@ -201,6 +205,10 @@ public void deserializeNBT(CompoundTag compoundTag) { spiritwebSubmodule.deserialize(this); } + if(nbt.contains("PowerSaveStates")) + { + PowerSaveState.deserialize((CompoundTag) nbt.get("PowerSaveStates")); + } } @Override From fab1d4723ec79e036e2384030ecbc8d5d21853fa Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 14 Jul 2025 23:44:38 +0200 Subject: [PATCH 1017/1090] [Allomancy] Make lines thread restart on crash --- .../client/metalScanning/IronSteelLinesThread.java | 14 ++++++++++---- .../eventHandlers/AllomancyCommonEvents.java | 2 +- .../common/manifestation/AllomancyIronSteel.java | 2 +- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index 261a1421f..c2d6e51c6 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -80,12 +80,16 @@ public static void startThread() } //stops and kills thread - public static void stopThread() + public static void stopThread(boolean restart) { if (INSTANCE != null) { INSTANCE.stop(); INSTANCE = null; + if (restart) + { + startThread(); + } } } @@ -179,6 +183,7 @@ private Vec3i toVec3i(Vec3 vector) public void run() { final Minecraft mc = Minecraft.getInstance(); + boolean restartThread = false; while (!isStopping) { try @@ -206,7 +211,7 @@ public void run() // if level is null, the player has no world loaded, so stop if (player == null || mc.level == null) { - stopThread(); + stopThread(false); return false; } isGood = !isBlockObscured(blockPos, player, level); @@ -238,7 +243,7 @@ public void run() // if level is null, the player has no world loaded, so stop if (player == null || mc.level == null) { - stopThread(); + stopThread(false); return; } if (entityContainsMetal(entity) @@ -265,11 +270,12 @@ public void run() catch (Exception e) { CosmereAPI.logger.info("Unexpected exception in lines thread: \n" + Arrays.toString(e.getStackTrace())); + restartThread = true; break; } } - stopThread(); + stopThread(restartThread); } private boolean isBlockObscured(BlockPos blockPos, Player player, Level level) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyCommonEvents.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyCommonEvents.java index f8ad0c536..c5abcd8b9 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyCommonEvents.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyCommonEvents.java @@ -58,6 +58,6 @@ public static void onServerStoppingEvent(ServerStoppingEvent event) { // tell threads it's time to stop AllomancyEntityThread.serverShutdown = true; - IronSteelLinesThread.stopThread(); + IronSteelLinesThread.stopThread(false); } } \ No newline at end of file diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java index 56e21f595..2643c04bc 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyIronSteel.java @@ -118,7 +118,7 @@ public void onModeChange(ISpiritweb cap, int lastMode) } else if (getMode(cap) <= 0) { - IronSteelLinesThread.stopThread(); + IronSteelLinesThread.stopThread(false); } return; } From 526b407f1ecc396534879dfba018ace481c8732b Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Mon, 14 Jul 2025 23:52:43 +0200 Subject: [PATCH 1018/1090] [Allomancy] Ignored comodification exception in entity scanning Should be fine --- .../metalScanning/IronSteelLinesThread.java | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java index c2d6e51c6..ca476010c 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/client/metalScanning/IronSteelLinesThread.java @@ -27,6 +27,7 @@ import net.minecraftforge.api.distmarker.OnlyIn; import java.util.Arrays; +import java.util.ConcurrentModificationException; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.locks.Lock; @@ -238,24 +239,31 @@ public void run() { EntityHelper.getEntitiesInRange(playerEntity, scanRange, false).forEach(entity -> { - Player player = Minecraft.getInstance().player; - Level level = Minecraft.getInstance().level; - // if level is null, the player has no world loaded, so stop - if (player == null || mc.level == null) + try { - stopThread(false); - return; + Player player = Minecraft.getInstance().player; + Level level = Minecraft.getInstance().level; + // if level is null, the player has no world loaded, so stop + if (player == null || mc.level == null) + { + stopThread(false); + return; + } + if (entityContainsMetal(entity) + && !isEntityObscured(entity, player, level)) + { + nextScan.foundEntities.add( + entity.position().add( + 0, + entity.getBoundingBox().getYsize() / 2, + 0)); + closestMetalThingLookedAt.set(compareVectors(entity.position().add(0, entity.getBoundingBox().getYsize() / 2, 0), player, closestMetalThingLookedAt.get())); + } } - if (entityContainsMetal(entity) - && !isEntityObscured(entity, player, level)) + catch (ConcurrentModificationException coModE) { - nextScan.foundEntities.add( - entity.position().add( - 0, - entity.getBoundingBox().getYsize() / 2, - 0)); - - closestMetalThingLookedAt.set(compareVectors(entity.position().add(0, entity.getBoundingBox().getYsize() / 2, 0), player, closestMetalThingLookedAt.get())); + // we can ignore this safely, probably + // if this comes back to bite us, I, Gerbagel, take no responsibility } }); } From e128cca8d1f5b279c199f21a739db182004282f7 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Fri, 25 Jul 2025 21:14:57 -0400 Subject: [PATCH 1019/1090] Investiture v0.0.4 Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../manifestation/AllomancyManifestation.java | 18 +- src/api/java/leaf/cosmere/api/EnumUtils.java | 4 + .../leaf/cosmere/api/IInvestitureSource.java | 9 +- .../cosmere/api/investiture/IInvestiture.java | 7 +- .../investiture/IInvestitureContainer.java | 16 ++ .../IInvestitureEntityContainer.java | 47 +++++ .../IInvestitureItemContainer.java | 100 +++++++++++ .../cosmere/api/investiture/Investiture.java | 167 ++++++++++++++++-- .../api/investiture/InvestitureConstants.java | 133 ++++++++++++++ .../api/investiture/InvestitureContainer.java | 78 -------- .../api/investiture/SpiritwebInvestiture.java | 34 +++- .../api/manifestation/Manifestation.java | 8 +- .../leaf/cosmere/common/InvestTranfer.java | 4 +- .../cap/entity/SpiritwebCapability.java | 118 ++++++++++++- .../items/ChargeableMetalCurioItem.java | 48 ++++- .../common/investiture/Stormlight.java | 6 +- .../common/investiture/Towerlight.java | 6 +- .../common/investiture/Voidlight.java | 6 +- 18 files changed, 682 insertions(+), 127 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java create mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java create mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java create mode 100644 src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java delete mode 100644 src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 5bbaf435f..6bf10bcbb 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -8,9 +8,10 @@ import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyStats; import leaf.cosmere.api.*; +import leaf.cosmere.api.investiture.InvestitureConstants; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.charge.MetalmindChargeHelper; import leaf.cosmere.api.investiture.Investiture; @@ -163,7 +164,7 @@ public boolean tick(ISpiritweb data) LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = isActiveTick(data); allo.adjustIngestedMetal(metalType, -cost, isActiveTick); - newInvest((InvestitureContainer) data); + if(isActiveTick)newInvest((IInvestitureContainer) data); if (isActiveTick && livingEntity instanceof ServerPlayer serverPlayer) { @@ -174,6 +175,7 @@ public boolean tick(ISpiritweb data) if (mode > 0) { //todo: rewrite all applyEffectTick() methods to pull from investiture sources. + applyEffectTick(data); return true; } @@ -263,13 +265,13 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(InvestitureContainer data) + public int maxInvestitureDraw(IInvestitureContainer data) { return (int) ((10 * getStrength((SpiritwebCapability)data,false)) + 15); } @Override - public int minInvestitureDraw(InvestitureContainer data) + public int minInvestitureDraw(IInvestitureContainer data) { if(isFlaring((SpiritwebCapability)data)) { @@ -280,12 +282,12 @@ public int minInvestitureDraw(InvestitureContainer data) public final Manifestation[] appManifestComp = Manifestations.manifestArrayBuilder.getAllMetal(this.getMetalType()); - - - public Investiture newInvest(InvestitureContainer data) + + + public Investiture newInvest(IInvestitureContainer data) { - Investiture sub = new Investiture(data, isFlaring((ISpiritweb) data)? 30 : 15, appManifestComp); + Investiture sub = new Investiture(data, InvestitureConstants.Shards.PRESERVATION, InvestitureConstants.InvestitureSources.DIRECT, isFlaring((ISpiritweb) data) ? 30 : 15, appManifestComp); sub.setPriority(5); return sub; } diff --git a/src/api/java/leaf/cosmere/api/EnumUtils.java b/src/api/java/leaf/cosmere/api/EnumUtils.java index 2475f7376..65816a343 100644 --- a/src/api/java/leaf/cosmere/api/EnumUtils.java +++ b/src/api/java/leaf/cosmere/api/EnumUtils.java @@ -4,6 +4,7 @@ package leaf.cosmere.api; +import leaf.cosmere.api.investiture.InvestitureConstants; import net.minecraft.core.Direction; //constant static enum arrays for enums in api that get used often. Save memory allocation where possible @@ -18,6 +19,9 @@ public class EnumUtils public static final Roshar.GemSize[] GEM_SIZES = Roshar.GemSize.values(); public static final Roshar.Surges[] SURGES = Roshar.Surges.values(); + //investiture + public static final InvestitureConstants.Shards[] SHARDS = InvestitureConstants.Shards.values(); + //yes I know it's a vanilla enum public static final Direction[] DIRECTIONS = Direction.values(); } diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java index bce6d1dee..8983175da 100644 --- a/src/api/java/leaf/cosmere/api/IInvestitureSource.java +++ b/src/api/java/leaf/cosmere/api/IInvestitureSource.java @@ -1,16 +1,19 @@ package leaf.cosmere.api; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.InvestitureConstants; +import leaf.cosmere.api.investiture.IInvestitureContainer; public interface IInvestitureSource //Used when creating new investiture //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. //todo: make this { - default Investiture newInvest(InvestitureContainer data) + default Investiture newInvest(IInvestitureContainer data) { - Investiture sub = new Investiture(data, data.maxBEU()-data.currentBEU(),Manifestations.manifestArrayBuilder.getAll()); + Investiture sub = new Investiture(data, InvestitureConstants.Shards.PURE, + InvestitureConstants.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), + Manifestations.manifestArrayBuilder.getAll()); return sub; } } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index 1079e5658..ea589c5f8 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -9,8 +9,11 @@ public interface IInvestiture void setBEU(int beu); Manifestation[] getApplicableManifestations(); - - InvestitureContainer getContainer(); + InvestitureConstants.Shards getShard(); + + InvestitureConstants.InvestitureSources getSource(); + + IInvestitureContainer getContainer(); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java new file mode 100644 index 000000000..26596aa44 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java @@ -0,0 +1,16 @@ +package leaf.cosmere.api.investiture; + +public interface IInvestitureContainer +{ + + int currentBEU(); + + int getMaxBEU(); + + void setMaxBEU(int maxBEU); + + // Clears out empty investiture objects from the ArrayList and the game memory + // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method + void clean(); + +} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java new file mode 100644 index 000000000..0ae652b70 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java @@ -0,0 +1,47 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.manifestation.Manifestation; + +import java.util.ArrayList; +import java.util.List; + +public interface IInvestitureEntityContainer extends IInvestitureContainer +{ + ArrayList availableInvestitures(Manifestation manifest); + + default int handleUseInvestiture(Manifestation manifest) + { + ArrayList availibles = availableInvestitures(manifest); + int totalInvestiture = 0; + for(int i = 5; i > 0; i--) + { + int finalI = i; + List current = availibles.stream().filter(investiture -> finalI == investiture.getPriority()).toList(); + int subTotal = current.stream().mapToInt(Investiture::getBEU).sum(); + if(subTotal + totalInvestiture >= manifest.maxInvestitureDraw(this)) + { + int quo = (manifest.maxInvestitureDraw(this) - totalInvestiture) / current.size(); + int mod = (manifest.maxInvestitureDraw(this) - totalInvestiture) % current.size(); + current.forEach(invest -> invest.removeBEU(quo)); + current.get(0).removeBEU(mod); + totalInvestiture = manifest.maxInvestitureDraw(this); + break; + } + else + { + int quo = subTotal / current.size(); + int mod = subTotal % current.size(); + current.forEach(invest -> invest.removeBEU(quo)); + current.get(0).removeBEU(mod); + totalInvestiture += subTotal; + } + } + return totalInvestiture; + } + + Investiture findInvestiture(Manifestation[] appManifest); + + boolean hasInvestiture(Investiture investiture); + + void mergeOrAddInvestiture(IInvestiture invest); +} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java new file mode 100644 index 000000000..200e7f3e5 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java @@ -0,0 +1,100 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.helpers.StackNBTHelper; +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ItemLike; + +import java.util.ArrayList; +import java.util.List; + +public interface IInvestitureItemContainer extends IInvestitureContainer +{ + + static ArrayList availableInvestitures(ItemStack stack, Manifestation manifest) + { + ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); + ArrayList investitures = new ArrayList<>(); + for(int i = 0; i < tag.size(); i++) + { + Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); + if(invest.isUsable(manifest)) + { + investitures.add(invest); + } + } + } + + static int handleUseInvestiture(ItemStack stack, Manifestation manifest) + { + ArrayList availibles = availableInvestitures(stack, manifest); + int totalInvestiture = 0; + for(int i = 5; i > 0; i--) + { + int finalI = i; + List current = availibles.stream().filter(investiture -> finalI == investiture.getPriority()).toList(); + int subTotal = current.stream().mapToInt(Investiture::getBEU).sum(); + if(subTotal + totalInvestiture >= manifest.maxInvestitureDraw(this)) + { + int quo = (manifest.maxInvestitureDraw(this) - totalInvestiture) / current.size(); + int mod = (manifest.maxInvestitureDraw(this) - totalInvestiture) % current.size(); + current.forEach(invest -> invest.removeBEU(quo)); + current.get(0).removeBEU(mod); + totalInvestiture = manifest.maxInvestitureDraw(this); + break; + } + else + { + int quo = subTotal / current.size(); + int mod = subTotal % current.size(); + current.forEach(invest -> invest.removeBEU(quo)); + current.get(0).removeBEU(mod); + totalInvestiture += subTotal; + } + } + return totalInvestiture; + } + + + static Investiture findInvestiture(ItemStack stack, Manifestation[] appManifest) + { + return null; + } + + static boolean hasInvestiture(ItemStack stack, Investiture investiture) + { + ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); + for(int i = 0; i < tag.size(); i++) + { + Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); + if(invest == investiture) + { + return true; + } + } + return false; + } + + static void clearInvestiture(ItemStack stack, Investiture investiture) + { + ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); + for(int i = 0; i < tag.size(); i++) + { + Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); + if(invest == investiture) + { + tag.remove(i); + return; + } + } + } + + + void mergeOrAddInvestiture(ItemStack stack, IInvestiture invest); + + + +} diff --git a/src/api/java/leaf/cosmere/api/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/Investiture.java index 3842a46e5..f32a04a80 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/Investiture.java @@ -1,19 +1,28 @@ package leaf.cosmere.api.investiture; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; public class Investiture implements IInvestiture { - private final InvestitureContainer container; + private IInvestitureEntityContainer container = null; + private ItemStack stackContainer = null; + private InvestitureConstants.Shards shard; + private InvestitureConstants.InvestitureSources source; private Manifestation[] applicableManifestations; private int priority = 1; private int beu; private int decayRate; + private CompoundTag nbt; - public Investiture(InvestitureContainer container, + public Investiture(IInvestitureEntityContainer container, + InvestitureConstants.Shards shard, + InvestitureConstants.InvestitureSources source, int beu, Manifestation[] applicableManifestations, int decayRate) @@ -22,11 +31,15 @@ public Investiture(InvestitureContainer container, this.beu = beu; this.applicableManifestations = applicableManifestations; this.container = container; - this.container.addInvestiture(this); + this.container.mergeOrAddInvestiture(this); this.decayRate = decayRate; + this.shard = shard; + this.source = source; } - public Investiture(InvestitureContainer container, + public Investiture(IInvestitureEntityContainer container, + InvestitureConstants.Shards shard, + InvestitureConstants.InvestitureSources source, int beu, Manifestation[] applicableManifestations) { @@ -34,10 +47,28 @@ public Investiture(InvestitureContainer container, this.beu = beu; this.applicableManifestations = applicableManifestations; this.container = container; - this.container.addInvestiture(this); + this.container.mergeOrAddInvestiture(this); + this.shard = shard; + this.source = source; this.decayRate = 0; } + public Investiture(ItemStack stack, + InvestitureConstants.Shards shard, + InvestitureConstants.InvestitureSources source, + int beu, + Manifestation[] applicableManifestations, + int decayRate) + { + + this.beu = beu; + this.applicableManifestations = applicableManifestations; + this.stackContainer = stack; + this.decayRate = decayRate; + this.shard = shard; + this.source = source; + } + public int getBEU() { @@ -81,9 +112,50 @@ public Manifestation[] getApplicableManifestations() return applicableManifestations; } - public InvestitureContainer getContainer() + @Override + public InvestitureConstants.Shards getShard() + { + return shard; + } + + @Override + public InvestitureConstants.InvestitureSources getSource() + { + return source; + } + + public IInvestitureContainer getContainer() { - return container; + if(container != null && stackContainer != null) + { + // something went wrong. Only one of these should have a value. + IInvestitureItemContainer item = (IInvestitureItemContainer) stackContainer.getItem(); + if(container.hasInvestiture(this) && item.hasInvestiture(stackContainer, this)) + { + // something went really wrong. Both containers contain this investiture. + // We'll default to returning it to the player, and removing it from the ItemStack. + item.clearInvestiture(stackContainer, this); + stackContainer = null; + return container; + + } + else if(container.hasInvestiture(this)) + { + stackContainer = null; + return container; + } + else if(item.hasInvestiture(stackContainer, this)) + { + container = null; + return stackContainer; + } + else + { + //neither owns it, default to entity, and reattach + + } + + } } public ISpiritweb getSpiritweb() @@ -113,15 +185,21 @@ public boolean isUsable(Manifestation manifest1) return false; } - public void merge(Investiture other) + public boolean merge(Investiture other) { + if(this == other) + { + return false; + } if(this.getPriority() == other.getPriority() - && this.getApplicableManifestations()==(other.getApplicableManifestations()) + && this.shard == other.shard && this.getContainer().equals(other.getContainer())) { this.beu += other.getBEU(); + return true; //other.close; } + return false; } //protected void close() {this = null;} @@ -133,6 +211,75 @@ public void decay() public void reattach() { - container.addInvestiture(this); + if + container.mergeOrAddInvestiture(this); + } + + public CompoundTag serializeNBT() + { + if (this.nbt == null) + { + this.nbt = new CompoundTag(); + } + nbt.putString("shard", shard.getName().toLowerCase()); + nbt.putString("source", source.getName().toLowerCase()); + nbt.putInt("manifestations_length", applicableManifestations.length); + final CompoundTag manifestationNBT = new CompoundTag(); + for (int i = 0; i < applicableManifestations.length; i++) + { + manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); + } + nbt.put("manifestations", manifestationNBT); + nbt.putInt("priority", priority); + nbt.putInt("decay_rate", decayRate); + nbt.putInt("beu", beu); + + return nbt; + } + + public void deserializeNBT(CompoundTag nbt) + { + this.nbt = nbt; + decayRate = nbt.getInt("decay_rate"); + beu = nbt.getInt("beu"); + shard = InvestitureConstants.Shards.valueOf(nbt.getString("shard")); + source = InvestitureConstants.InvestitureSources.valueOf(nbt.getString("source")); + priority = nbt.getInt("priority"); + applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + + + } + + public static Investiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) + { + Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + array[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + Investiture invest = new Investiture(data, + InvestitureConstants.Shards.valueOf(nbt.getString("shard")), + InvestitureConstants.InvestitureSources.valueOf(nbt.getString("source")), + nbt.getInt("beu"),array, nbt.getInt("decay_rate")); + invest.nbt = nbt; + invest.setPriority(nbt.getInt("priority")); + return invest; + } } diff --git a/src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java b/src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java new file mode 100644 index 000000000..b68d755d0 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java @@ -0,0 +1,133 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.manifestation.Manifestation; + +import java.util.Arrays; +import java.util.Locale; +import java.util.Optional; + +public class InvestitureConstants +{ + public enum Shards + { + NONE(0), + AUTONOMY(1), + RUIN(2), + PRESERVATION(16), + HARMONY(17), + HONOR(10), + CULTIVATION(3), + ODIUM(9), + RETRIBUTION(18), + ENDOWMENT(4), + VIRTUOSITY(5), + INVENTION(6), + VALOR(7), + WHIMSY(8), + REASON(11), + DEVOTION(12), + DOMINION(13), + AMBITION(14), + MERCY(15), + DOR(19), + AETHER(20), + PURE(21); + + + final int id; + + Shards(int number) + { + this.id = number; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(shard -> shard.id == value) + .findFirst(); + } + + public int getID() + { + return id; + } + + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } + + public Shards[] getComponentShards() + { + return switch (this) + { + case DOR -> new Shards[]{DEVOTION, DOMINION}; + case HARMONY -> new Shards[]{RUIN, PRESERVATION}; + case RETRIBUTION -> new Shards[]{HONOR, ODIUM}; + case PURE -> EnumUtils.SHARDS; + default -> new Shards[]{this}; + + }; + } + + public Manifestations.ManifestationTypes getManifestationType() + { + return switch (this) + { + case HARMONY -> Manifestations.ManifestationTypes.FERUCHEMY; + case PRESERVATION -> Manifestations.ManifestationTypes.ALLOMANCY; + case RUIN -> Manifestations.ManifestationTypes.HEMALURGY; + case AUTONOMY -> Manifestations.ManifestationTypes.SANDMASTERY; + case DOR -> Manifestations.ManifestationTypes.AON_DOR; + case ENDOWMENT -> Manifestations.ManifestationTypes.AWAKENING; + case HONOR -> Manifestations.ManifestationTypes.SURGEBINDING; + case ODIUM -> Manifestations.ManifestationTypes.SURGEBINDING; + case RETRIBUTION -> Manifestations.ManifestationTypes.SURGEBINDING; + case CULTIVATION -> Manifestations.ManifestationTypes.SURGEBINDING; + default -> Manifestations.ManifestationTypes.NONE; + }; + } + } + // All possible sources for gaining kinetic investiture + public enum InvestitureSources + { + DIRECT(0), + MISTS(1), + GEMSTONE(2), + HIGHSTORM(3), + SELF(4), + LUHEL_BOND(5), + NAHEL_BOND(6), + LIFEFORCE(7), + PERPENDICULARITY(8); + + final int id; + + InvestitureSources(int id) + { + this.id = id; + } + + public static Optional valueOf(int value) + { + return Arrays.stream(values()) + .filter(shard -> shard.id == value) + .findFirst(); + } + + public int getID() + { + return id; + } + + public String getName() + { + return name().toLowerCase(Locale.ROOT); + } + + } +} diff --git a/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java b/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java deleted file mode 100644 index f7a1b05cc..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/InvestitureContainer.java +++ /dev/null @@ -1,78 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.manifestation.Manifestation; - -import java.util.ArrayList; - -public abstract class InvestitureContainer -{ - private ArrayList investitures = new ArrayList(); - private ArrayList swInvests = new ArrayList<>(); - - public ArrayList availableInvestitures(Manifestation manifest) - { - ArrayList availables = new ArrayList<>(); - for (Investiture invest : investitures) - { - if (invest.isUsable(manifest)) - { - availables.add(invest); - } - } - return availables; - } - - public void addInvestiture(IInvestiture invest) - { - if (invest instanceof SpiritwebInvestiture swInvest) - { - for (SpiritwebInvestiture investiture : swInvests) - { - swInvest.merge(investiture); - } - swInvests.add(swInvest); - } - else if (invest instanceof Investiture iInvest) - { - investitures.add(iInvest); - } - } - - public Investiture findInvestiture(Manifestation[] appManifest) - { - for (Investiture invest : investitures) - { - if (invest.getApplicableManifestations().equals(appManifest)) - { - return invest; - } - } - return null; - } - - public int currentBEU() - { - int sub = 0; - for(Investiture invest: investitures) - { - sub+= invest.getBEU(); - } - return sub; - } - - - // Clears out empty investiture objects from the ArrayList and the game memory - // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method - public void clean() - { - for(Investiture investiture: investitures) - { - if(investiture.getBEU() == 0) - { - investitures.remove(investiture); - } - } - System.gc(); - } - -} diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index 7606b69af..7dcd51e0b 100644 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -8,23 +8,31 @@ public class SpiritwebInvestiture implements IInvestiture private int beu; - private InvestitureContainer container; + private IInvestitureContainer container; + + private InvestitureConstants.Shards shard; + private InvestitureConstants.InvestitureSources source; - public SpiritwebInvestiture(InvestitureContainer investitureContainer, Manifestation[] appManifest) + public SpiritwebInvestiture(IInvestitureContainer investitureContainer, + InvestitureConstants.Shards shard, + InvestitureConstants.InvestitureSources source, + Manifestation[] appManifest) { + this.shard = shard; + this.source = source; this.beu = 9 * 15; this.appManfestations = appManifest; container = investitureContainer; - container.addInvestiture(this); + container.mergeOrAddInvestiture(this); } - public SpiritwebInvestiture(InvestitureContainer investitureContainer, int beu, Manifestation[] appManifest) + public SpiritwebInvestiture(IInvestitureContainer investitureContainer, int beu, Manifestation[] appManifest) { this.beu = beu; this.appManfestations = appManifest; container = investitureContainer; - container.addInvestiture(this); + container.mergeOrAddInvestiture(this); } public int getBEU() @@ -38,9 +46,21 @@ public Manifestation[] getApplicableManifestations() { return appManfestations; } - - public InvestitureContainer getContainer() + @Override + public InvestitureConstants.Shards getShard() + { + return null; + } + + @Override + public InvestitureConstants.InvestitureSources getSource() + { + return null; + } + + + public IInvestitureContainer getContainer() { return container; } diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index d03553cdc..c43ba7922 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -9,7 +9,7 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -144,7 +144,7 @@ public Attribute getAttribute() - public int drawInvestiture(InvestitureContainer data, int beu) + public int drawInvestiture(IInvestitureContainer data, int beu) { ArrayList invests = data.availableInvestitures(this); int sum = 0; @@ -185,12 +185,12 @@ public int drawInvestiture(InvestitureContainer data, int beu) } - public int maxInvestitureDraw(InvestitureContainer data) + public int maxInvestitureDraw(IInvestitureContainer data) { return 0; } - public int minInvestitureDraw(InvestitureContainer data) + public int minInvestitureDraw(IInvestitureContainer data) { return 0; } diff --git a/src/main/java/leaf/cosmere/common/InvestTranfer.java b/src/main/java/leaf/cosmere/common/InvestTranfer.java index b1beb8b42..6ef188d97 100644 --- a/src/main/java/leaf/cosmere/common/InvestTranfer.java +++ b/src/main/java/leaf/cosmere/common/InvestTranfer.java @@ -1,7 +1,7 @@ package leaf.cosmere.common; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; public class InvestTranfer //Used when changing the location of investiture, ex. when moving investiture from a gem to a spiritweb. @@ -10,7 +10,7 @@ public class InvestTranfer int rate; Investiture invest2; - public InvestTranfer(Investiture invest, int rate, int newDecay, InvestitureContainer toGo) + public InvestTranfer(Investiture invest, int rate, int newDecay, IInvestitureContainer toGo) { this.invest1 = invest; this.rate = rate; diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 0ea464115..a4d36c0ea 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -10,8 +10,8 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; +import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.investiture.InvestitureContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; @@ -57,7 +57,7 @@ https://coppermind.net/wiki/Ars_Arcanum#The_Alloy_of_Law */ -public class SpiritwebCapability extends InvestitureContainer implements ISpiritweb +public class SpiritwebCapability implements ISpiritweb, IInvestitureEntityContainer { //Injection public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() @@ -87,7 +87,9 @@ public class SpiritwebCapability extends InvestitureContainer implements ISpirit private final Map spiritwebSubmodules; - + private final List investitures = new ArrayList<>(); + private final List swInvestitures = new ArrayList<>(); + private int maxBEU; @@ -146,6 +148,12 @@ public CompoundTag serializeNBT() spiritwebSubmodule.serialize(this); } + ListTag investStored = new ListTag(); + for(Investiture investiture: investitures) + { + investStored.add(investiture.serializeNBT()); + } + nbt.put("investitures", investStored); return nbt; } @@ -201,6 +209,17 @@ public void deserializeNBT(CompoundTag compoundTag) { spiritwebSubmodule.deserialize(this); } + + if (compoundTag.contains("investitures")) + { + ListTag listtag = (ListTag) compoundTag.get("investitures"); + for (int i = 0; i < listtag.size(); ++i) + { + CompoundTag sub = listtag.getCompound(i); + Investiture.buildFromNBT(sub, this); + } + + } } @Override @@ -995,4 +1014,97 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } + @Override + public ArrayList availableInvestitures(Manifestation manifest) + { + ArrayList availables = new ArrayList<>(); + for (Investiture invest : investitures) + { + if (invest.isUsable(manifest)) + { + availables.add(invest); + } + } + return availables; + } + + @Override + public void mergeOrAddInvestiture(IInvestiture invest) + { + if (invest instanceof SpiritwebInvestiture swInvest) + { + for (SpiritwebInvestiture investiture : swInvestitures) + { + swInvest.merge(investiture); + } + swInvestitures.add(swInvest); + } + else if (invest instanceof Investiture iInvest) + { + iInvest.merge( + investitures.stream() + .filter(investiture -> investiture.getShard() == iInvest.getShard()) + .findFirst() + .orElse(iInvest)); + investitures.add(iInvest); + } + } + + @Override + public Investiture findInvestiture(Manifestation[] appManifest) + { + for (Investiture invest : investitures) + { + if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) + { + return invest; + } + } + return null; + } + + @Override + public boolean hasInvestiture(Investiture investiture) + { + return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); + } + + @Override + public int currentBEU() + { + int sub = 0; + for(Investiture invest: investitures) + { + sub+= invest.getBEU(); + } + return sub; + } + + @Override + public int getMaxBEU() + { + return maxBEU; + } + + @Override + public void setMaxBEU(int maxBEU) + { + this.maxBEU = maxBEU; + } + + @Override + // Clears out empty investiture objects from the ArrayList and the game memory + // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method + public void clean() + { + for(Investiture investiture: investitures) + { + if(investiture.getBEU() == 0) + { + investitures.remove(investiture); + } + } + System.gc(); + } + } diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index b4b2f9dda..a396dd9f2 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -8,6 +8,9 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.investiture.IInvestiture; +import leaf.cosmere.api.investiture.IInvestitureItemContainer; +import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.properties.PropTypes; @@ -19,9 +22,10 @@ import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; +import java.util.ArrayList; import java.util.List; -public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem +public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem, IInvestitureItemContainer { private final Metals.MetalType metalType; @@ -89,4 +93,46 @@ public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack sta }); } } + + @Override + public ArrayList availableInvestitures(ItemStack stack, Manifestation manifest) + { + return ; + } + + @Override + public Investiture findInvestiture(ItemStack stack, Manifestation[] appManifest) + { + return null; + } + + @Override + public void mergeOrAddInvestiture(ItemStack stack, IInvestiture invest) + { + + } + + @Override + public int currentBEU() + { + return 0; + } + + @Override + public int getMaxBEU() + { + return 0; + } + + @Override + public void setMaxBEU(int maxBEU) + { + + } + + @Override + public void clean() + { + + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index 28f87e7d5..ce727028e 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -2,15 +2,15 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; public class Stormlight extends Investiture { - public Stormlight(InvestitureContainer container, - int beu) + public Stormlight(IInvestitureContainer container, + int beu) { super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); int decayRate; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java index 6f0e3fc0d..44e74fcb1 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -2,12 +2,12 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; public class Towerlight extends Investiture { - public Towerlight(InvestitureContainer container, - int beu) + public Towerlight(IInvestitureContainer container, + int beu) { super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java index 86d20edaf..1431e4689 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -2,12 +2,12 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureContainer; +import leaf.cosmere.api.investiture.IInvestitureContainer; public class Voidlight extends Investiture { - public Voidlight(InvestitureContainer container, - int beu) + public Voidlight(IInvestitureContainer container, + int beu) { //As we start implementing voidbinding, add that to the list of manifestations. //Not much is known about voidlight, but it's here for the future. From ed2e1dcb5a1598749edac55a80a93315460bb37a Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 26 Jul 2025 04:21:50 +0200 Subject: [PATCH 1020/1090] [Cosmere] Added config to allow for single metalborn players and adjustable distribution between misting and ferring --- .../cosmere/common/config/CosmereServerConfig.java | 12 +++++++++--- .../common/eventHandlers/EntityEventHandler.java | 9 +++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java index e9e053f45..7e7b486df 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java @@ -15,7 +15,9 @@ public class CosmereServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue CHARGEABLE_MAX_VALUE; public final ForgeConfigSpec.BooleanValue SCULK_CAN_HEAR_KINETIC_INVESTITURE; public final ForgeConfigSpec.IntValue FULLBORN_POWERS_CHANCE; - public final ForgeConfigSpec.IntValue TWINBORN_POWERS_CHANCE; + public final ForgeConfigSpec.IntValue TWINBORN_POWERS_CHANCE_PLAYER; + public final ForgeConfigSpec.IntValue TWINBORN_POWERS_CHANCE_MOB; + public final ForgeConfigSpec.IntValue PLAYER_MISTING_TO_FERRING_DISTRIBUTION; public final ForgeConfigSpec.IntValue RAIDER_POWERS_CHANCE; public final ForgeConfigSpec.IntValue MOB_POWERS_CHANCE; public final ForgeConfigSpec.DoubleValue EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER; @@ -34,7 +36,9 @@ public class CosmereServerConfig implements ICosmereConfig RAIDER_POWERS_CHANCE = builder.comment("1 in how many Raiders should have powers?").defineInRange("raiderPowerChance", 64, 1, 123456); FULLBORN_POWERS_CHANCE = builder.comment("1 in how many should powered individuals should have full powers of one type").defineInRange("fullPowersChance", 16, 1, 123456); - TWINBORN_POWERS_CHANCE = builder.comment("If not full born, 1 in how many powered mobs should be twinborn? Players are twinborn as a minimum.").defineInRange("twinbornPowersChance", 16, 1, 123456); + TWINBORN_POWERS_CHANCE_PLAYER = builder.comment("If not full born, 1 in how many powered players should be twinborn? If players are not twinborn, they will be either a misting or ferring.").defineInRange("twinbornPowersChancePlayer", 1, 1, 123456); + TWINBORN_POWERS_CHANCE_MOB = builder.comment("If not full born, 1 in how many powered mobs should be twinborn?").defineInRange("twinbornPowersChanceMob", 16, 1, 123456); + PLAYER_MISTING_TO_FERRING_DISTRIBUTION = builder.comment("Ratio defined as a percentage of how many metalborn players are mistings vs ferrings. E.g. 25 means 25%, or 1 in 4 players will be mistings.").defineInRange("playerMistingToFerringDistribution", 50, 0, 100); EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER = builder.comment("Multiplier for emotional allomancy range when singe-targeting").defineInRange("emotionalAllomancySingleTargetRange", 1.5D, 1D, 123456D); @@ -70,7 +74,9 @@ public void clearCache() MOB_POWERS_CHANCE.clearCache(); RAIDER_POWERS_CHANCE.clearCache(); FULLBORN_POWERS_CHANCE.clearCache(); - TWINBORN_POWERS_CHANCE.clearCache(); + TWINBORN_POWERS_CHANCE_MOB.clearCache(); + TWINBORN_POWERS_CHANCE_PLAYER.clearCache(); + PLAYER_MISTING_TO_FERRING_DISTRIBUTION.clearCache(); EMOTIONAL_POWERS_SINGLE_TARGET_RANGE_MULTIPLIER.clearCache(); } diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 29efb2031..6fb2265d8 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -153,14 +153,14 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe boolean isPlayerEntity = entity instanceof Player; final Integer chanceOfFullPowers = CosmereConfigs.SERVER_CONFIG.FULLBORN_POWERS_CHANCE.get(); - final Integer chanceOfTwinborn = CosmereConfigs.SERVER_CONFIG.TWINBORN_POWERS_CHANCE.get(); + final Integer chanceOfTwinborn = isPlayerEntity ? CosmereConfigs.SERVER_CONFIG.TWINBORN_POWERS_CHANCE_PLAYER.get() : CosmereConfigs.SERVER_CONFIG.TWINBORN_POWERS_CHANCE_MOB.get(); //low chance of having full powers of one type //0-15 inclusive is normal powers. boolean isFullPowersFromOneType = MathHelper.chance(chanceOfFullPowers); //small chance of being twin born, but only if not having full powers above //except for players who are guaranteed having at least two powers. - boolean isTwinborn = isPlayerEntity || MathHelper.chance(chanceOfTwinborn); + boolean isTwinborn = MathHelper.chance(chanceOfTwinborn); //randomise the given powers from allomancy and feruchemy int allomancyPowerID = MathHelper.randomInt(0, 15); @@ -251,6 +251,7 @@ else if (feruchemyLoaded) else { Manifestation manifestation; + isAllomancy = isPlayerEntity ? MathHelper.randomInt(1, 100) < CosmereConfigs.SERVER_CONFIG.PLAYER_MISTING_TO_FERRING_DISTRIBUTION.get() : MathHelper.randomBool(); if (allomancyLoaded && feruchemyLoaded) { manifestation = @@ -273,6 +274,10 @@ else if (feruchemyLoaded) } spiritwebCapability.giveManifestation(manifestation, 9); + if (spiritwebCapability.getLiving() instanceof Player player) + { + spiritwebCapability.getSubmodule(isAllomancy ? Manifestations.ManifestationTypes.ALLOMANCY : Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, manifestation); + } CosmereAPI.logger.info("Entity {} has been granted {}, with metal {}!", spiritwebCapability.getLiving().getName().getString(), isAllomancy From 203d6377c42a1c53f132868b7b3b8a116064cdff Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 26 Jul 2025 15:06:59 +1200 Subject: [PATCH 1021/1090] [Sandmastery] fix incorrect attribute modify for overmastery --- .../common/capabilities/SandmasterySpiritwebSubmodule.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java index 0ad322823..8f73c0c6f 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/capabilities/SandmasterySpiritwebSubmodule.java @@ -1,5 +1,5 @@ /* - * File updated ~ 5 - 3 - 2025 ~ Leaf + * File updated ~ 26 - 7 - 2025 ~ Leaf */ package leaf.cosmere.sandmastery.common.capabilities; @@ -297,7 +297,7 @@ else if (ribbons < 15) private static AttributeModifier getOvermasteryAttributeModifier(int gainedRibbons, UUID uuid) { final AttributeModifier overmasteryAttributeModifier = new AttributeModifier( - SandmasteryAttributes.OVERMASTERY_SECONDARY_UUID, + uuid, String.format("%s - gained %s ribbons: %s", "Overmastery", gainedRibbons, uuid), gainedRibbons, AttributeModifier.Operation.ADDITION From 525f8984a13c08f4228ec642578d9e71b77cde6e Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 26 Jul 2025 19:16:10 +0200 Subject: [PATCH 1022/1090] [Cosmere] Added config option for player metalborn rates --- .../cosmere/common/config/CosmereServerConfig.java | 2 ++ .../common/eventHandlers/EntityEventHandler.java | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java index 7e7b486df..7c18f7e87 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereServerConfig.java @@ -14,6 +14,7 @@ public class CosmereServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue CHARGEABLE_MAX_VALUE; public final ForgeConfigSpec.BooleanValue SCULK_CAN_HEAR_KINETIC_INVESTITURE; + public final ForgeConfigSpec.IntValue PLAYER_METALBORN_CHANCE; public final ForgeConfigSpec.IntValue FULLBORN_POWERS_CHANCE; public final ForgeConfigSpec.IntValue TWINBORN_POWERS_CHANCE_PLAYER; public final ForgeConfigSpec.IntValue TWINBORN_POWERS_CHANCE_MOB; @@ -35,6 +36,7 @@ public class CosmereServerConfig implements ICosmereConfig MOB_POWERS_CHANCE = builder.comment("1 in how many mobs should have powers?").defineInRange("mobPowerChance", 16, 1, 123456); RAIDER_POWERS_CHANCE = builder.comment("1 in how many Raiders should have powers?").defineInRange("raiderPowerChance", 64, 1, 123456); + PLAYER_METALBORN_CHANCE = builder.comment("1 in how many players should be metalborn?").defineInRange("playerMetalbornChance", 1, 1, 123456); FULLBORN_POWERS_CHANCE = builder.comment("1 in how many should powered individuals should have full powers of one type").defineInRange("fullPowersChance", 16, 1, 123456); TWINBORN_POWERS_CHANCE_PLAYER = builder.comment("If not full born, 1 in how many powered players should be twinborn? If players are not twinborn, they will be either a misting or ferring.").defineInRange("twinbornPowersChancePlayer", 1, 1, 123456); TWINBORN_POWERS_CHANCE_MOB = builder.comment("If not full born, 1 in how many powered mobs should be twinborn?").defineInRange("twinbornPowersChanceMob", 16, 1, 123456); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 6fb2265d8..120341568 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -152,6 +152,17 @@ public static void giveEntityStartingManifestation(LivingEntity entity, Spiritwe { boolean isPlayerEntity = entity instanceof Player; + if (isPlayerEntity) + { + if (!MathHelper.chance(CosmereConfigs.SERVER_CONFIG.PLAYER_METALBORN_CHANCE.get())) + { + // if player isn't metalborn, no need to continue + // a bit messy to do this but oh well, we want to change it anyway // tech debt? what's that? + addOtherPowers(spiritwebCapability); + return; + } + } + final Integer chanceOfFullPowers = CosmereConfigs.SERVER_CONFIG.FULLBORN_POWERS_CHANCE.get(); final Integer chanceOfTwinborn = isPlayerEntity ? CosmereConfigs.SERVER_CONFIG.TWINBORN_POWERS_CHANCE_PLAYER.get() : CosmereConfigs.SERVER_CONFIG.TWINBORN_POWERS_CHANCE_MOB.get(); //low chance of having full powers of one type @@ -251,7 +262,7 @@ else if (feruchemyLoaded) else { Manifestation manifestation; - isAllomancy = isPlayerEntity ? MathHelper.randomInt(1, 100) < CosmereConfigs.SERVER_CONFIG.PLAYER_MISTING_TO_FERRING_DISTRIBUTION.get() : MathHelper.randomBool(); + isAllomancy = isPlayerEntity ? MathHelper.randomInt(0, 99) < CosmereConfigs.SERVER_CONFIG.PLAYER_MISTING_TO_FERRING_DISTRIBUTION.get() : MathHelper.randomBool(); if (allomancyLoaded && feruchemyLoaded) { manifestation = From 4404e9c3ac44a06fb3a83389e4a6a5c98a6040a9 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Tue, 29 Jul 2025 12:15:38 -0400 Subject: [PATCH 1023/1090] Update PowerSaveState.java --- src/main/java/leaf/cosmere/client/PowerSaveState.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java index 7e08f7284..d501f4080 100644 --- a/src/main/java/leaf/cosmere/client/PowerSaveState.java +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -7,7 +7,6 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.client.render.CosmereRenderers; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.common.registry.ManifestationRegistry; From 6f6577d9354b82aaaf16dd530394db8534095a8d Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Sun, 24 Aug 2025 22:20:10 -0400 Subject: [PATCH 1024/1090] Investiture v0.1.0 Basic system finished. Investiture is stored in InvestitureContainer. If the container is not accessed for some time, it will be stored as NBT data attached to the entity, item, or spiritweb. Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../manifestation/AllomancyManifestation.java | 48 +- src/api/java/leaf/cosmere/api/EnumUtils.java | 4 +- .../leaf/cosmere/api/IInvestitureSource.java | 19 - .../java/leaf/cosmere/api/Manifestations.java | 2 +- .../cosmere/api/investiture/IInvestiture.java | 38 +- .../investiture/IInvestitureContainer.java | 22 +- .../api/investiture/IInvestitureCreator.java | 18 + .../IInvestitureEntityContainer.java | 47 -- .../IInvestitureItemContainer.java | 100 ---- .../cosmere/api/investiture/Investiture.java | 524 ++++++++---------- ...Constants.java => InvestitureHelpers.java} | 28 +- .../api/investiture/SpiritwebInvestiture.java | 110 +++- .../api/manifestation/Manifestation.java | 8 +- .../cosmere/api/spiritweb/ISpiritweb.java | 2 + .../leaf/cosmere/common/InvestTranfer.java | 4 +- .../cap/entity/SpiritwebCapability.java | 120 +--- .../investiture/InvestitureContainer.java | 347 ++++++++++++ .../items/ChargeableMetalCurioItem.java | 48 +- .../common/items/InvestedItemBase.java | 24 + .../common/investiture/Stormlight.java | 13 +- .../common/investiture/Towerlight.java | 14 +- .../common/investiture/Voidlight.java | 13 +- 22 files changed, 856 insertions(+), 697 deletions(-) delete mode 100644 src/api/java/leaf/cosmere/api/IInvestitureSource.java create mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java delete mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java delete mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java rename src/api/java/leaf/cosmere/api/investiture/{InvestitureConstants.java => InvestitureHelpers.java} (80%) create mode 100644 src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java create mode 100644 src/main/java/leaf/cosmere/common/items/InvestedItemBase.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 6bf10bcbb..70e2e4c9f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -8,12 +8,13 @@ import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyStats; import leaf.cosmere.api.*; -import leaf.cosmere.api.investiture.InvestitureConstants; +import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.InvestitureHelpers; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.api.investiture.IInvestitureContainer; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.charge.MetalmindChargeHelper; +import leaf.cosmere.api.investiture.IInvestitureCreator; import leaf.cosmere.api.investiture.Investiture; import net.minecraft.client.KeyMapping; import net.minecraft.resources.ResourceLocation; @@ -25,7 +26,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; -public class AllomancyManifestation extends Manifestation implements IHasMetalType, IInvestitureSource +public class AllomancyManifestation extends Manifestation implements IHasMetalType, IInvestitureCreator { private final Metals.MetalType metalType; @@ -115,7 +116,7 @@ public boolean isMetalBurning(ISpiritweb data) { //absolute value, because compounding uses negative modes. int modeAbs = Mth.abs(getMode(data)); - AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) ((SpiritwebCapability) data).getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); + AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) data.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); //make sure the user can afford the cost of burning this metal while (modeAbs > 0) @@ -158,13 +159,16 @@ public boolean tick(ISpiritweb data) int mode = getMode(data); final int cost = Mth.abs(mode); - AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) ((SpiritwebCapability) data).getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); + AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) data.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); //don't check every tick. LivingEntity livingEntity = data.getLiving(); boolean isActiveTick = isActiveTick(data); allo.adjustIngestedMetal(metalType, -cost, isActiveTick); - if(isActiveTick)newInvest((IInvestitureContainer) data); + if(isActiveTick) + { + newInvest(InvestitureContainer.findOrCreateContainer(data)); + } if (isActiveTick && livingEntity instanceof ServerPlayer serverPlayer) { @@ -265,15 +269,15 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(IInvestitureContainer data) + public int maxInvestitureDraw(IInvestitureContainer data) { - return (int) ((10 * getStrength((SpiritwebCapability)data,false)) + 15); + return (int) ((10 * getStrength(data.getSpiritweb(),false)) + 15); } @Override - public int minInvestitureDraw(IInvestitureContainer data) + public int minInvestitureDraw(IInvestitureContainer data) { - if(isFlaring((SpiritwebCapability)data)) + if(isFlaring(data.getSpiritweb())) { return 30; } @@ -281,13 +285,27 @@ public int minInvestitureDraw(IInvestitureContainer data) } - public final Manifestation[] appManifestComp = Manifestations.manifestArrayBuilder.getAllMetal(this.getMetalType()); - + public final Manifestation[] appManifestComp = Manifestations.ManifestArrayBuilder.getAllMetal(this.getMetalType()); - public Investiture newInvest(IInvestitureContainer data) + @Override + public Investiture newInvest(IInvestitureContainer data) { - Investiture sub = new Investiture(data, InvestitureConstants.Shards.PRESERVATION, InvestitureConstants.InvestitureSources.DIRECT, isFlaring((ISpiritweb) data) ? 30 : 15, appManifestComp); + double strength = getStrength(data.getSpiritweb(), false); + double baseStrength = getStrength(data.getSpiritweb(), true); + + int beu = 10 + Mth.floor(strength) + Mth.floor(baseStrength); + if(isFlaring(data.getSpiritweb())) + { + beu *= 2; + } + + Investiture sub = new Investiture( + data, + InvestitureHelpers.Shards.PRESERVATION, + InvestitureHelpers.InvestitureSources.DIRECT, + beu, + appManifestComp); sub.setPriority(5); return sub; } diff --git a/src/api/java/leaf/cosmere/api/EnumUtils.java b/src/api/java/leaf/cosmere/api/EnumUtils.java index 65816a343..6064a7328 100644 --- a/src/api/java/leaf/cosmere/api/EnumUtils.java +++ b/src/api/java/leaf/cosmere/api/EnumUtils.java @@ -4,7 +4,7 @@ package leaf.cosmere.api; -import leaf.cosmere.api.investiture.InvestitureConstants; +import leaf.cosmere.api.investiture.InvestitureHelpers; import net.minecraft.core.Direction; //constant static enum arrays for enums in api that get used often. Save memory allocation where possible @@ -20,7 +20,7 @@ public class EnumUtils public static final Roshar.Surges[] SURGES = Roshar.Surges.values(); //investiture - public static final InvestitureConstants.Shards[] SHARDS = InvestitureConstants.Shards.values(); + public static final InvestitureHelpers.Shards[] SHARDS = InvestitureHelpers.Shards.values(); //yes I know it's a vanilla enum public static final Direction[] DIRECTIONS = Direction.values(); diff --git a/src/api/java/leaf/cosmere/api/IInvestitureSource.java b/src/api/java/leaf/cosmere/api/IInvestitureSource.java deleted file mode 100644 index 8983175da..000000000 --- a/src/api/java/leaf/cosmere/api/IInvestitureSource.java +++ /dev/null @@ -1,19 +0,0 @@ -package leaf.cosmere.api; - -import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureConstants; -import leaf.cosmere.api.investiture.IInvestitureContainer; - -public interface IInvestitureSource - //Used when creating new investiture - //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. - //todo: make this -{ - default Investiture newInvest(IInvestitureContainer data) - { - Investiture sub = new Investiture(data, InvestitureConstants.Shards.PURE, - InvestitureConstants.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), - Manifestations.manifestArrayBuilder.getAll()); - return sub; - } -} diff --git a/src/api/java/leaf/cosmere/api/Manifestations.java b/src/api/java/leaf/cosmere/api/Manifestations.java index de0e571a1..7da2de545 100644 --- a/src/api/java/leaf/cosmere/api/Manifestations.java +++ b/src/api/java/leaf/cosmere/api/Manifestations.java @@ -110,7 +110,7 @@ public Manifestation getManifestation(int powerID) return CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("cosmere", "none")); } } - public static class manifestArrayBuilder + public static class ManifestArrayBuilder { public static Manifestation[] getAll() { diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index ea589c5f8..96888f094 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -1,19 +1,19 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.manifestation.Manifestation; - -public interface IInvestiture -{ - int getBEU(); - - void setBEU(int beu); - - Manifestation[] getApplicableManifestations(); - - InvestitureConstants.Shards getShard(); - - InvestitureConstants.InvestitureSources getSource(); - - IInvestitureContainer getContainer(); - -} +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.manifestation.Manifestation; + +public interface IInvestiture +{ + int getBEU(); + + void setBEU(int beu); + + Manifestation[] getApplicableManifestations(); + + InvestitureHelpers.Shards getShard(); + + InvestitureHelpers.InvestitureSources getSource(); + + IInvestitureContainer getContainer(); + +} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java index 26596aa44..bcded6a05 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java @@ -1,16 +1,26 @@ package leaf.cosmere.api.investiture; -public interface IInvestitureContainer +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import net.minecraft.nbt.CompoundTag; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.util.INBTSerializable; + +import java.util.ArrayList; + +public interface IInvestitureContainer extends INBTSerializable { + T getParent(); + ISpiritweb getSpiritweb(); - int currentBEU(); + ArrayList availableInvestitures(Manifestation manifest); + void mergeOrAddInvestiture(IInvestiture invest); + Investiture findInvestiture(Manifestation[] appManifest); + boolean hasInvestiture(Investiture investiture); + int currentBEU(); int getMaxBEU(); - void setMaxBEU(int maxBEU); - // Clears out empty investiture objects from the ArrayList and the game memory - // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method void clean(); - } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java new file mode 100644 index 000000000..9655ff844 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java @@ -0,0 +1,18 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.Manifestations; + + +public interface IInvestitureCreator + //Used when creating new investiture + //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. + //todo: make this +{ + default Investiture newInvest(IInvestitureContainer data) + { + Investiture sub = new Investiture(data, InvestitureHelpers.Shards.PURE, + InvestitureHelpers.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), + Manifestations.ManifestArrayBuilder.getAll()); + return sub; + } +} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java deleted file mode 100644 index 0ae652b70..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestitureEntityContainer.java +++ /dev/null @@ -1,47 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.manifestation.Manifestation; - -import java.util.ArrayList; -import java.util.List; - -public interface IInvestitureEntityContainer extends IInvestitureContainer -{ - ArrayList availableInvestitures(Manifestation manifest); - - default int handleUseInvestiture(Manifestation manifest) - { - ArrayList availibles = availableInvestitures(manifest); - int totalInvestiture = 0; - for(int i = 5; i > 0; i--) - { - int finalI = i; - List current = availibles.stream().filter(investiture -> finalI == investiture.getPriority()).toList(); - int subTotal = current.stream().mapToInt(Investiture::getBEU).sum(); - if(subTotal + totalInvestiture >= manifest.maxInvestitureDraw(this)) - { - int quo = (manifest.maxInvestitureDraw(this) - totalInvestiture) / current.size(); - int mod = (manifest.maxInvestitureDraw(this) - totalInvestiture) % current.size(); - current.forEach(invest -> invest.removeBEU(quo)); - current.get(0).removeBEU(mod); - totalInvestiture = manifest.maxInvestitureDraw(this); - break; - } - else - { - int quo = subTotal / current.size(); - int mod = subTotal % current.size(); - current.forEach(invest -> invest.removeBEU(quo)); - current.get(0).removeBEU(mod); - totalInvestiture += subTotal; - } - } - return totalInvestiture; - } - - Investiture findInvestiture(Manifestation[] appManifest); - - boolean hasInvestiture(Investiture investiture); - - void mergeOrAddInvestiture(IInvestiture invest); -} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java deleted file mode 100644 index 200e7f3e5..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestitureItemContainer.java +++ /dev/null @@ -1,100 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.helpers.StackNBTHelper; -import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.ItemLike; - -import java.util.ArrayList; -import java.util.List; - -public interface IInvestitureItemContainer extends IInvestitureContainer -{ - - static ArrayList availableInvestitures(ItemStack stack, Manifestation manifest) - { - ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); - ArrayList investitures = new ArrayList<>(); - for(int i = 0; i < tag.size(); i++) - { - Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); - if(invest.isUsable(manifest)) - { - investitures.add(invest); - } - } - } - - static int handleUseInvestiture(ItemStack stack, Manifestation manifest) - { - ArrayList availibles = availableInvestitures(stack, manifest); - int totalInvestiture = 0; - for(int i = 5; i > 0; i--) - { - int finalI = i; - List current = availibles.stream().filter(investiture -> finalI == investiture.getPriority()).toList(); - int subTotal = current.stream().mapToInt(Investiture::getBEU).sum(); - if(subTotal + totalInvestiture >= manifest.maxInvestitureDraw(this)) - { - int quo = (manifest.maxInvestitureDraw(this) - totalInvestiture) / current.size(); - int mod = (manifest.maxInvestitureDraw(this) - totalInvestiture) % current.size(); - current.forEach(invest -> invest.removeBEU(quo)); - current.get(0).removeBEU(mod); - totalInvestiture = manifest.maxInvestitureDraw(this); - break; - } - else - { - int quo = subTotal / current.size(); - int mod = subTotal % current.size(); - current.forEach(invest -> invest.removeBEU(quo)); - current.get(0).removeBEU(mod); - totalInvestiture += subTotal; - } - } - return totalInvestiture; - } - - - static Investiture findInvestiture(ItemStack stack, Manifestation[] appManifest) - { - return null; - } - - static boolean hasInvestiture(ItemStack stack, Investiture investiture) - { - ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); - for(int i = 0; i < tag.size(); i++) - { - Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); - if(invest == investiture) - { - return true; - } - } - return false; - } - - static void clearInvestiture(ItemStack stack, Investiture investiture) - { - ListTag tag = StackNBTHelper.getList(stack, "investitures", 0, true); - for(int i = 0; i < tag.size(); i++) - { - Investiture invest = Investiture.buildFromNBT((CompoundTag) tag.get(i), this); - if(invest == investiture) - { - tag.remove(i); - return; - } - } - } - - - void mergeOrAddInvestiture(ItemStack stack, IInvestiture invest); - - - -} diff --git a/src/api/java/leaf/cosmere/api/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/Investiture.java index f32a04a80..02984357e 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/Investiture.java @@ -1,285 +1,239 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.item.ItemStack; - -public class Investiture implements IInvestiture -{ - - private IInvestitureEntityContainer container = null; - private ItemStack stackContainer = null; - private InvestitureConstants.Shards shard; - private InvestitureConstants.InvestitureSources source; - private Manifestation[] applicableManifestations; - private int priority = 1; - private int beu; - private int decayRate; - private CompoundTag nbt; - - - public Investiture(IInvestitureEntityContainer container, - InvestitureConstants.Shards shard, - InvestitureConstants.InvestitureSources source, - int beu, - Manifestation[] applicableManifestations, - int decayRate) - { - - this.beu = beu; - this.applicableManifestations = applicableManifestations; - this.container = container; - this.container.mergeOrAddInvestiture(this); - this.decayRate = decayRate; - this.shard = shard; - this.source = source; - } - - public Investiture(IInvestitureEntityContainer container, - InvestitureConstants.Shards shard, - InvestitureConstants.InvestitureSources source, - int beu, - Manifestation[] applicableManifestations) - { - - this.beu = beu; - this.applicableManifestations = applicableManifestations; - this.container = container; - this.container.mergeOrAddInvestiture(this); - this.shard = shard; - this.source = source; - this.decayRate = 0; - } - - public Investiture(ItemStack stack, - InvestitureConstants.Shards shard, - InvestitureConstants.InvestitureSources source, - int beu, - Manifestation[] applicableManifestations, - int decayRate) - { - - this.beu = beu; - this.applicableManifestations = applicableManifestations; - this.stackContainer = stack; - this.decayRate = decayRate; - this.shard = shard; - this.source = source; - } - - - public int getBEU() - { - return beu; - } - - public void setBEU(int beu) - { - this.beu = beu; - } - - public int removeBEU(int remove) - { - if (remove > beu) - { - int ret = remove - beu; - beu = 0; - return ret; - } - else - { - beu -= remove; - return 0; - } - } - - public void addBEU(int add) - { - beu += add; - } - - public int getPriority(){return priority;} - - public void setPriority(int priority) - { - this.priority = priority; - } - - public Manifestation[] getApplicableManifestations() - { - return applicableManifestations; - } - - @Override - public InvestitureConstants.Shards getShard() - { - return shard; - } - - @Override - public InvestitureConstants.InvestitureSources getSource() - { - return source; - } - - public IInvestitureContainer getContainer() - { - if(container != null && stackContainer != null) - { - // something went wrong. Only one of these should have a value. - IInvestitureItemContainer item = (IInvestitureItemContainer) stackContainer.getItem(); - if(container.hasInvestiture(this) && item.hasInvestiture(stackContainer, this)) - { - // something went really wrong. Both containers contain this investiture. - // We'll default to returning it to the player, and removing it from the ItemStack. - item.clearInvestiture(stackContainer, this); - stackContainer = null; - return container; - - } - else if(container.hasInvestiture(this)) - { - stackContainer = null; - return container; - } - else if(item.hasInvestiture(stackContainer, this)) - { - container = null; - return stackContainer; - } - else - { - //neither owns it, default to entity, and reattach - - } - - } - } - - public ISpiritweb getSpiritweb() - { - return (ISpiritweb) container; - } - - public int getDecayRate() - { - return decayRate; - } - - public void setDecayRate(int decayRate) - { - this.decayRate = decayRate; - } - - public boolean isUsable(Manifestation manifest1) - { - for(Manifestation manifest: applicableManifestations) - { - if(manifest.equals(manifest1)) - { - return true; - } - } - return false; - } - - public boolean merge(Investiture other) - { - if(this == other) - { - return false; - } - if(this.getPriority() == other.getPriority() - && this.shard == other.shard - && this.getContainer().equals(other.getContainer())) - { - this.beu += other.getBEU(); - return true; - //other.close; - } - return false; - } - - //protected void close() {this = null;} - - public void decay() - { - beu -= decayRate; - } - - public void reattach() - { - if - container.mergeOrAddInvestiture(this); - } - - public CompoundTag serializeNBT() - { - if (this.nbt == null) - { - this.nbt = new CompoundTag(); - } - nbt.putString("shard", shard.getName().toLowerCase()); - nbt.putString("source", source.getName().toLowerCase()); - nbt.putInt("manifestations_length", applicableManifestations.length); - final CompoundTag manifestationNBT = new CompoundTag(); - for (int i = 0; i < applicableManifestations.length; i++) - { - manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); - } - nbt.put("manifestations", manifestationNBT); - nbt.putInt("priority", priority); - nbt.putInt("decay_rate", decayRate); - nbt.putInt("beu", beu); - - return nbt; - } - - public void deserializeNBT(CompoundTag nbt) - { - this.nbt = nbt; - decayRate = nbt.getInt("decay_rate"); - beu = nbt.getInt("beu"); - shard = InvestitureConstants.Shards.valueOf(nbt.getString("shard")); - source = InvestitureConstants.InvestitureSources.valueOf(nbt.getString("source")); - priority = nbt.getInt("priority"); - applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; - CompoundTag manifestNBT = nbt.getCompound("manifestations"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String manifestationLoc = manifestation.getRegistryName().toString(); - - if (manifestNBT.contains(manifestationLoc)) - { - applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; - } - } - - - } - - public static Investiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) - { - Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; - CompoundTag manifestNBT = nbt.getCompound("manifestations"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String manifestationLoc = manifestation.getRegistryName().toString(); - - if (manifestNBT.contains(manifestationLoc)) - { - array[manifestNBT.getInt(manifestationLoc)] = manifestation; - } - } - Investiture invest = new Investiture(data, - InvestitureConstants.Shards.valueOf(nbt.getString("shard")), - InvestitureConstants.InvestitureSources.valueOf(nbt.getString("source")), - nbt.getInt("beu"),array, nbt.getInt("decay_rate")); - invest.nbt = nbt; - invest.setPriority(nbt.getInt("priority")); - return invest; - - } -} +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import net.minecraft.nbt.CompoundTag; + +import javax.annotation.Nonnull; + +public class Investiture implements IInvestiture +{ + + private IInvestitureContainer container; + private InvestitureHelpers.Shards shard; + private InvestitureHelpers.InvestitureSources source; + private Manifestation[] applicableManifestations; + private int priority = 1; + private int beu; + private int decayRate; + private CompoundTag nbt; + + + public Investiture(@Nonnull IInvestitureContainer container, + InvestitureHelpers.Shards shard, + InvestitureHelpers.InvestitureSources source, + int beu, + Manifestation[] applicableManifestations, + int decayRate) + { + + this.beu = beu; + this.applicableManifestations = applicableManifestations; + this.container = container; + this.container.mergeOrAddInvestiture(this); + this.decayRate = decayRate; + this.shard = shard; + this.source = source; + } + + public Investiture(@Nonnull IInvestitureContainer container, + InvestitureHelpers.Shards shard, + InvestitureHelpers.InvestitureSources source, + int beu, + Manifestation[] applicableManifestations) + { + + this.beu = beu; + this.applicableManifestations = applicableManifestations; + this.container = container; + this.container.mergeOrAddInvestiture(this); + this.shard = shard; + this.source = source; + this.decayRate = 0; + } + + + public int getBEU() + { + return beu; + } + + public void setBEU(int beu) + { + this.beu = beu; + } + + public int removeBEU(int remove) + { + if (remove > beu) + { + int ret = remove - beu; + beu = 0; + return ret; + } + else + { + beu -= remove; + return 0; + } + } + + public void addBEU(int add) + { + beu += add; + } + + public int getPriority(){return priority;} + + public void setPriority(int priority) + { + this.priority = priority; + } + + public Manifestation[] getApplicableManifestations() + { + return applicableManifestations; + } + + @Override + public InvestitureHelpers.Shards getShard() + { + return shard; + } + + @Override + public InvestitureHelpers.InvestitureSources getSource() + { + return source; + } + + public IInvestitureContainer getContainer() + { + return container; + } + + public ISpiritweb getSpiritweb() + { + return (ISpiritweb) container; + } + + public int getDecayRate() + { + return decayRate; + } + + public void setDecayRate(int decayRate) + { + this.decayRate = decayRate; + } + + public boolean isUsable(Manifestation manifest1) + { + for(Manifestation manifest: applicableManifestations) + { + if(manifest.equals(manifest1)) + { + return true; + } + } + return false; + } + + public boolean merge(Investiture other) + { + if(this == other) + { + return false; + } + if(this.getPriority() == other.getPriority() + && this.shard == other.shard + && this.getContainer().equals(other.getContainer())) + { + this.beu += other.getBEU(); + return true; + //other.close; + } + return false; + } + + //protected void close() {this = null;} + + public void decay() + { + beu -= decayRate; + } + + public void reattach() + { + container.mergeOrAddInvestiture(this); + } + + public CompoundTag serializeNBT() + { + if (this.nbt == null) + { + this.nbt = new CompoundTag(); + } + nbt.putString("shard", shard.getName().toLowerCase()); + nbt.putString("source", source.getName().toLowerCase()); + nbt.putInt("manifestations_length", applicableManifestations.length); + final CompoundTag manifestationNBT = new CompoundTag(); + for (int i = 0; i < applicableManifestations.length; i++) + { + manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); + } + nbt.put("manifestations", manifestationNBT); + nbt.putInt("priority", priority); + nbt.putInt("decay_rate", decayRate); + nbt.putInt("beu", beu); + + return nbt; + } + + public void deserializeNBT(CompoundTag nbt) + { + this.nbt = nbt; + decayRate = nbt.getInt("decay_rate"); + beu = nbt.getInt("beu"); + shard = InvestitureHelpers.Shards.valueOf(nbt.getString("shard")); + source = InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")); + priority = nbt.getInt("priority"); + applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + + + } + + public static Investiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) + { + Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + array[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + Investiture invest = new Investiture(data, + InvestitureHelpers.Shards.valueOf(nbt.getString("shard")), + InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")), + nbt.getInt("beu"),array, nbt.getInt("decay_rate")); + invest.nbt = nbt; + invest.setPriority(nbt.getInt("priority")); + return invest; + + } +} diff --git a/src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java b/src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java similarity index 80% rename from src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java rename to src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java index b68d755d0..eceed8666 100644 --- a/src/api/java/leaf/cosmere/api/investiture/InvestitureConstants.java +++ b/src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java @@ -2,14 +2,12 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; -import leaf.cosmere.api.manifestation.Manifestation; import java.util.Arrays; import java.util.Locale; import java.util.Optional; -public class InvestitureConstants +public class InvestitureHelpers { public enum Shards { @@ -44,7 +42,7 @@ public enum Shards this.id = number; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -84,10 +82,7 @@ public Manifestations.ManifestationTypes getManifestationType() case AUTONOMY -> Manifestations.ManifestationTypes.SANDMASTERY; case DOR -> Manifestations.ManifestationTypes.AON_DOR; case ENDOWMENT -> Manifestations.ManifestationTypes.AWAKENING; - case HONOR -> Manifestations.ManifestationTypes.SURGEBINDING; - case ODIUM -> Manifestations.ManifestationTypes.SURGEBINDING; - case RETRIBUTION -> Manifestations.ManifestationTypes.SURGEBINDING; - case CULTIVATION -> Manifestations.ManifestationTypes.SURGEBINDING; + case HONOR, ODIUM, RETRIBUTION, CULTIVATION -> Manifestations.ManifestationTypes.SURGEBINDING; default -> Manifestations.ManifestationTypes.NONE; }; } @@ -112,7 +107,7 @@ public enum InvestitureSources this.id = id; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -130,4 +125,19 @@ public String getName() } } + + public static class Math + { + int beuToStrength(int beu) + { + return beu/15; + } + + int strengthToBEU(int strength) + { + return strength*15; + } + + + } } diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index 7dcd51e0b..f474a1107 100644 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -1,42 +1,43 @@ package leaf.cosmere.api.investiture; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.nbt.CompoundTag; public class SpiritwebInvestiture implements IInvestiture { - private Manifestation[] appManfestations; + private Manifestation[] applicableManifestations; private int beu; - + + private IInvestitureContainer container; + private InvestitureHelpers.Shards shard; + private InvestitureHelpers.InvestitureSources source; - private InvestitureConstants.Shards shard; - private InvestitureConstants.InvestitureSources source; + private CompoundTag nbt; public SpiritwebInvestiture(IInvestitureContainer investitureContainer, - InvestitureConstants.Shards shard, - InvestitureConstants.InvestitureSources source, + int strength, + InvestitureHelpers.Shards shard, + InvestitureHelpers.InvestitureSources source, Manifestation[] appManifest) { this.shard = shard; this.source = source; - this.beu = 9 * 15; - this.appManfestations = appManifest; + this.beu = strength * 15; + this.applicableManifestations = appManifest; container = investitureContainer; container.mergeOrAddInvestiture(this); } - public SpiritwebInvestiture(IInvestitureContainer investitureContainer, int beu, Manifestation[] appManifest) - { - this.beu = beu; - this.appManfestations = appManifest; - container = investitureContainer; - container.mergeOrAddInvestiture(this); - } + public int getBEU() - {return beu;} + { + return beu; + } public void setBEU(int beu) { @@ -44,22 +45,22 @@ public void setBEU(int beu) } public Manifestation[] getApplicableManifestations() { - return appManfestations; + return applicableManifestations; } @Override - public InvestitureConstants.Shards getShard() + public InvestitureHelpers.Shards getShard() { return null; } @Override - public InvestitureConstants.InvestitureSources getSource() + public InvestitureHelpers.InvestitureSources getSource() { return null; } - + @Override public IInvestitureContainer getContainer() { return container; @@ -75,16 +76,83 @@ public void setStrength(int strength) beu = strength * 15; } - public void merge(SpiritwebInvestiture other) + public boolean merge(SpiritwebInvestiture other) { if(this.getApplicableManifestations()==(other.getApplicableManifestations()) && this.getContainer().equals(other.getContainer())) { this.beu += other.getBEU(); + other.setBEU(0); + return true; //other.close(); } + return false; } //public void close() {this = null;} + public CompoundTag serializeNBT() + { + if (this.nbt == null) + { + this.nbt = new CompoundTag(); + } + nbt.putString("shard", shard.getName().toLowerCase()); + nbt.putString("source", source.getName().toLowerCase()); + nbt.putInt("manifestations_length", applicableManifestations.length); + final CompoundTag manifestationNBT = new CompoundTag(); + for (int i = 0; i < applicableManifestations.length; i++) + { + manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); + } + nbt.put("manifestations", manifestationNBT); + nbt.putInt("beu", beu); + + return nbt; + } + + public void deserializeNBT(CompoundTag nbt) + { + this.nbt = nbt; + beu = nbt.getInt("beu"); + shard = InvestitureHelpers.Shards.valueOf(nbt.getString("shard")); + source = InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")); + applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + + + } + + public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) + { + Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + array[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + SpiritwebInvestiture invest = new SpiritwebInvestiture(data, + nbt.getInt("beu"), + InvestitureHelpers.Shards.valueOf(nbt.getString("shard")), + InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")), + array); + invest.nbt = nbt; + + return invest; + } + } diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index c43ba7922..1c27a4ed5 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,11 +5,11 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.investiture.IInvestitureContainer; import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.api.investiture.IInvestitureContainer; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; @@ -144,7 +144,7 @@ public Attribute getAttribute() - public int drawInvestiture(IInvestitureContainer data, int beu) + public int drawInvestiture(IInvestitureContainer data, int beu) { ArrayList invests = data.availableInvestitures(this); int sum = 0; @@ -185,12 +185,12 @@ public int drawInvestiture(IInvestitureContainer data, int beu) } - public int maxInvestitureDraw(IInvestitureContainer data) + public int maxInvestitureDraw(IInvestitureContainer data) { return 0; } - public int minInvestitureDraw(IInvestitureContainer data) + public int minInvestitureDraw(IInvestitureContainer data) { return 0; } diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 4b43cfa26..155342578 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -95,4 +95,6 @@ public interface ISpiritweb extends INBTSerializable Set> getEffects(); + int maxBEU(); + } diff --git a/src/main/java/leaf/cosmere/common/InvestTranfer.java b/src/main/java/leaf/cosmere/common/InvestTranfer.java index 6ef188d97..403649990 100644 --- a/src/main/java/leaf/cosmere/common/InvestTranfer.java +++ b/src/main/java/leaf/cosmere/common/InvestTranfer.java @@ -1,7 +1,7 @@ package leaf.cosmere.common; -import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.Investiture; public class InvestTranfer //Used when changing the location of investiture, ex. when moving investiture from a gem to a spiritweb. @@ -14,7 +14,7 @@ public InvestTranfer(Investiture invest, int rate, int newDecay, IInvestitureCon { this.invest1 = invest; this.rate = rate; - invest2 = new Investiture(toGo,1,invest1.getApplicableManifestations()); + invest2 = new Investiture(toGo, invest1.getShard(), invest1.getSource(), 0, invest1.getApplicableManifestations(), newDecay); } public void tick() diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index a4d36c0ea..be0dd7b1e 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -10,11 +10,11 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; -import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; @@ -57,7 +57,7 @@ https://coppermind.net/wiki/Ars_Arcanum#The_Alloy_of_Law */ -public class SpiritwebCapability implements ISpiritweb, IInvestitureEntityContainer +public class SpiritwebCapability implements ISpiritweb { //Injection public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() @@ -69,6 +69,7 @@ public class SpiritwebCapability implements ISpiritweb, IInvestitureEntityContai private boolean hasBeenInitialized = false; private final LivingEntity livingEntity; + private InvestitureContainer investitureContainer; public final Map MANIFESTATIONS_MODE = new HashMap<>(); @@ -87,9 +88,6 @@ public class SpiritwebCapability implements ISpiritweb, IInvestitureEntityContai private final Map spiritwebSubmodules; - private final List investitures = new ArrayList<>(); - private final List swInvestitures = new ArrayList<>(); - private int maxBEU; @@ -148,12 +146,9 @@ public CompoundTag serializeNBT() spiritwebSubmodule.serialize(this); } - ListTag investStored = new ListTag(); - for(Investiture investiture: investitures) - { - investStored.add(investiture.serializeNBT()); - } - nbt.put("investitures", investStored); + InvestitureContainer container = InvestitureContainer.findOrCreateContainer(getLiving()); + nbt.put("investContainer", container.serializeNBT()); + return nbt; } @@ -210,16 +205,8 @@ public void deserializeNBT(CompoundTag compoundTag) spiritwebSubmodule.deserialize(this); } - if (compoundTag.contains("investitures")) - { - ListTag listtag = (ListTag) compoundTag.get("investitures"); - for (int i = 0; i < listtag.size(); ++i) - { - CompoundTag sub = listtag.getCompound(i); - Investiture.buildFromNBT(sub, this); - } + investitureContainer = InvestitureContainer.findOrCreateContainer(getLiving()); - } } @Override @@ -1013,98 +1000,15 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } } - - @Override - public ArrayList availableInvestitures(Manifestation manifest) - { - ArrayList availables = new ArrayList<>(); - for (Investiture invest : investitures) - { - if (invest.isUsable(manifest)) - { - availables.add(invest); - } - } - return availables; - } - @Override - public void mergeOrAddInvestiture(IInvestiture invest) + public int maxBEU() { - if (invest instanceof SpiritwebInvestiture swInvest) - { - for (SpiritwebInvestiture investiture : swInvestitures) - { - swInvest.merge(investiture); - } - swInvestitures.add(swInvest); - } - else if (invest instanceof Investiture iInvest) - { - iInvest.merge( - investitures.stream() - .filter(investiture -> investiture.getShard() == iInvest.getShard()) - .findFirst() - .orElse(iInvest)); - investitures.add(iInvest); - } + //todo: determine maximum BEU capacity based on player's powers, active powers, location, etc. + return Integer.MAX_VALUE; } - @Override - public Investiture findInvestiture(Manifestation[] appManifest) + public InvestitureContainer getInvestitureContainer() { - for (Investiture invest : investitures) - { - if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) - { - return invest; - } - } - return null; + return investitureContainer; } - - @Override - public boolean hasInvestiture(Investiture investiture) - { - return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); - } - - @Override - public int currentBEU() - { - int sub = 0; - for(Investiture invest: investitures) - { - sub+= invest.getBEU(); - } - return sub; - } - - @Override - public int getMaxBEU() - { - return maxBEU; - } - - @Override - public void setMaxBEU(int maxBEU) - { - this.maxBEU = maxBEU; - } - - @Override - // Clears out empty investiture objects from the ArrayList and the game memory - // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method - public void clean() - { - for(Investiture investiture: investitures) - { - if(investiture.getBEU() == 0) - { - investitures.remove(investiture); - } - } - System.gc(); - } - } diff --git a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java new file mode 100644 index 000000000..cf6e8de6c --- /dev/null +++ b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java @@ -0,0 +1,347 @@ +package leaf.cosmere.common.investiture; + +import leaf.cosmere.api.investiture.IInvestiture; +import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.SpiritwebInvestiture; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.charge.IChargeable; +import leaf.cosmere.common.items.InvestedItemBase; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; + +import java.util.*; + +public class InvestitureContainer> implements IInvestitureContainer +{ + private static final Map, InvestitureContainer> containers = new HashMap<>(); + + public static InvestitureContainer findOrCreateContainer(LivingEntity entity) + { + if(containers.containsKey(entity)) + { + return (InvestitureContainer) containers.get(entity); + + } + else + { + InvestitureContainer containTemp = new InvestitureContainer(entity); + containers.put(entity, containTemp); + return containTemp; + } + } + + public static InvestitureContainer findOrCreateContainer(ItemStack stack) + { + if(containers.containsKey(stack)) + { + return (InvestitureContainer) containers.get(stack); + } + else + { + InvestitureContainer containTemp = new InvestitureContainer<>(stack); + containers.put(stack, containTemp); + return containTemp; + } + } + + public static InvestitureContainer findOrCreateContainer(ISpiritweb spiritweb) + { + return findOrCreateContainer(spiritweb.getLiving()); + } + + public static void clear() + { + for(ICapabilitySerializable entry: containers.keySet()) + { + InvestitureContainer value = containers.get(entry); + if(value.lastAccessedTick > 20) + { + value.saveNBT(); + containers.remove(entry); + } + } + + } + + private final T parent; + + private CompoundTag nbt; + + public final List investitures = new ArrayList<>(); + public final List swInvestitures = new ArrayList<>(); + private int maxBEU; + private int lastAccessedTick; // Used for cleaning. If not accessed after several ticks, clear it out. + + private InvestitureContainer(T parent) + { + this.parent = parent; + if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).isPresent()) + { + ISpiritweb web = SpiritwebCapability.get(entity).orElse(null); + CompoundTag tag = web.getCompoundTag(); + if (tag.contains("investContainer")) + { + nbt = tag.getCompound("investContainer"); + deserializeNBT(nbt); + } + else + { + nbt = new CompoundTag(); + maxBEU = web.maxBEU(); + } + } + else if(this.parent instanceof LivingEntity entity) + { + //todo: save nbt Data from living entity. + } + else if(this.parent instanceof ItemStack stack + && stack.getItem() instanceof InvestedItemBase itemBase) + { + CompoundTag tag = stack.getOrCreateTag(); + if (tag.contains("investContainer")) + { + nbt = tag.getCompound("investContainer"); + deserializeNBT(nbt); + } + else + { + nbt = new CompoundTag(); + maxBEU = itemBase.getMaxCharge(stack); + } + } + } + + @Override + public T getParent() + { + return parent; + } + + public ISpiritweb getSpiritweb() + { + if(parent instanceof LivingEntity entity) + { + return SpiritwebCapability.get(entity).resolve().orElse(null); + } + if(parent instanceof ItemStack stack) + { + if(stack.getItem() instanceof IChargeable item) + { + UUID connection = item.getAttunedPlayer(stack); + Player player = null; + for(Level level: Minecraft.getInstance().level.getServer().getAllLevels()) + { + player = level.getPlayerByUUID(connection); + if(player != null) + { + return SpiritwebCapability.get(player).resolve().orElse(null); + } + } + + } + } + return null; + } + public CompoundTag saveNBT() + { + serializeNBT(); + if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).isPresent()) + { + //spiritwebs manage their own containers, since it's accessed so much. + return nbt; + } + else if(this.parent instanceof LivingEntity entity) + { + //todo: attach nbt to entity + //entity. + } + else if(this.parent instanceof ItemStack stack + && stack.getItem() instanceof InvestedItemBase item) + { + item.saveContainer(stack, nbt); + containers.remove(parent); + return nbt; + } + return nbt; + } + + @Override + public CompoundTag serializeNBT() + { + if(!investitures.isEmpty()) + { + ListTag investStored = new ListTag(); + + for (Investiture investiture : investitures) + { + investStored.add(investiture.serializeNBT()); + } + nbt.put("investitures", investStored); + } + if(!swInvestitures.isEmpty()) + { + ListTag swInvest = new ListTag(); + for (SpiritwebInvestiture investiture : swInvestitures) + { + swInvest.add(investiture.serializeNBT()); + } + nbt.put("swInvestitures", swInvest); + } + + nbt.putInt("maxBEU", maxBEU); + + nbt.putInt("lastAccessedTick", lastAccessedTick); + + return nbt; + } + + @Override + public void deserializeNBT(CompoundTag compoundTag) + { + if (nbt == null) + { + return; + } + + if(compoundTag.contains("investContainer"))//The item/entity nbt, not the investiture container + { + nbt = compoundTag.getCompound("investContainer"); + } + else + { + nbt = compoundTag; + } + + this.maxBEU = nbt.getInt("maxBEU"); + this.lastAccessedTick = nbt.getInt("lastAccessedTick"); + + if (nbt.contains("investitures")) + { + ListTag listtag = nbt.getList("investitures", Tag.TAG_LIST); + for (int i = 0; i < listtag.size(); i++) + { + CompoundTag sub = listtag.getCompound(i); + Investiture temp = Investiture.buildFromNBT(sub, this); + investitures.add(temp); + + } + + } + if(nbt.contains("swInvestitures")) + { + ListTag listTag = nbt.getList("swInvestitures", Tag.TAG_LIST); + for(int i = 0; i < listTag.size(); i++) + { + CompoundTag sub = listTag.getCompound(i); + SpiritwebInvestiture temp = SpiritwebInvestiture.buildFromNBT(sub, this); + swInvestitures.add(temp); + } + + } + } + + + @Override + public ArrayList availableInvestitures(Manifestation manifest) + { + ArrayList availables = new ArrayList<>(); + for (Investiture invest : investitures) + { + if (invest.isUsable(manifest)) + { + availables.add(invest); + } + } + return availables; + } + + @Override + public void mergeOrAddInvestiture(IInvestiture invest) + { + if (invest instanceof SpiritwebInvestiture swInvest) + { + for (SpiritwebInvestiture investiture : swInvestitures) + { + swInvest.merge(investiture); + } + swInvestitures.add(swInvest); + } + else if (invest instanceof Investiture iInvest) + { + iInvest.merge( + investitures.stream() + .filter(investiture -> investiture.getShard() == iInvest.getShard()) + .findFirst() + .orElse(iInvest)); + investitures.add(iInvest); + } + } + + @Override + public Investiture findInvestiture(Manifestation[] appManifest) + { + for (Investiture invest : investitures) + { + if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) + { + return invest; + } + } + return null; + } + + @Override + public boolean hasInvestiture(Investiture investiture) + { + return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); + } + + @Override + public int currentBEU() + { + int sub = 0; + for(Investiture invest: investitures) + { + sub+= invest.getBEU(); + } + return sub; + } + + @Override + public int getMaxBEU() + { + return maxBEU; + } + + @Override + public void setMaxBEU(int maxBEU) + { + this.maxBEU = maxBEU; + } + + @Override + // Clears out empty investiture objects from the ArrayList and the game memory + // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method + public void clean() + { + for(Investiture investiture: investitures) + { + if(investiture.getBEU() == 0) + { + investitures.remove(investiture); + } + } + System.gc(); + } + +} diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index a396dd9f2..b4b2f9dda 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -8,9 +8,6 @@ import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.investiture.IInvestiture; -import leaf.cosmere.api.investiture.IInvestitureItemContainer; -import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.properties.PropTypes; @@ -22,10 +19,9 @@ import top.theillusivec4.curios.api.SlotContext; import top.theillusivec4.curios.api.type.capability.ICurioItem; -import java.util.ArrayList; import java.util.List; -public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem, IInvestitureItemContainer +public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem { private final Metals.MetalType metalType; @@ -93,46 +89,4 @@ public void onUnequip(SlotContext slotContext, ItemStack newStack, ItemStack sta }); } } - - @Override - public ArrayList availableInvestitures(ItemStack stack, Manifestation manifest) - { - return ; - } - - @Override - public Investiture findInvestiture(ItemStack stack, Manifestation[] appManifest) - { - return null; - } - - @Override - public void mergeOrAddInvestiture(ItemStack stack, IInvestiture invest) - { - - } - - @Override - public int currentBEU() - { - return 0; - } - - @Override - public int getMaxBEU() - { - return 0; - } - - @Override - public void setMaxBEU(int maxBEU) - { - - } - - @Override - public void clean() - { - - } } diff --git a/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java new file mode 100644 index 000000000..2cb67d0a3 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java @@ -0,0 +1,24 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.helpers.StackNBTHelper; +import leaf.cosmere.common.investiture.InvestitureContainer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; + +public abstract class InvestedItemBase extends ChargeableItemBase +{ + public InvestedItemBase(Properties properties) + { + super(properties); + } + + public InvestitureContainer getContainer(ItemStack stack) + { + return InvestitureContainer.findOrCreateContainer(stack); + } + + public void saveContainer(ItemStack stack, CompoundTag tag) + { + StackNBTHelper.set(stack, "investContainer", tag); + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index ce727028e..312b09a0c 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -1,18 +1,23 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureHelpers; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; public class Stormlight extends Investiture { - public Stormlight(IInvestitureContainer container, - int beu) + public Stormlight(IInvestitureContainer container, + int beu) { - super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + super(container, + InvestitureHelpers.Shards.HONOR, + InvestitureHelpers.InvestitureSources.HIGHSTORM, + beu, + Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); int decayRate; if(container instanceof SpiritwebCapability) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java index 44e74fcb1..384d2cf62 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -1,15 +1,21 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureHelpers; public class Towerlight extends Investiture { - public Towerlight(IInvestitureContainer container, - int beu) + public Towerlight(IInvestitureContainer container, + int beu) { - super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + super(container, + InvestitureHelpers.Shards.HONOR, + //Feels most accurate + InvestitureHelpers.InvestitureSources.MISTS, + beu, + Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); //Decay rate is high, but towerlight constantly renews while in Urithiru. //Meaning infinite light in the tower, but none once you leave. diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java index 1431e4689..94a5a05b8 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -1,16 +1,21 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvestitureHelpers; public class Voidlight extends Investiture { - public Voidlight(IInvestitureContainer container, - int beu) + public Voidlight(IInvestitureContainer container, + int beu) { //As we start implementing voidbinding, add that to the list of manifestations. //Not much is known about voidlight, but it's here for the future. - super(container,beu, Manifestations.manifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); + super(container, + InvestitureHelpers.Shards.ODIUM, + InvestitureHelpers.InvestitureSources.HIGHSTORM, + beu, + Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); } } From 914c237dd84cd11a1dfe0d35853adae7ba437722 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 15 Sep 2025 17:32:49 -0600 Subject: [PATCH 1025/1090] Investiture 0.4.0 Finishes core system begins implementation --- .../common/manifestation/AllomancyAtium.java | 3 + .../manifestation/AllomancyManifestation.java | 20 +-- src/api/java/leaf/cosmere/api/EnumUtils.java | 6 +- ...itureContainer.java => IInvContainer.java} | 7 +- ...vestitureCreator.java => IInvCreator.java} | 9 +- .../cosmere/api/investiture/IInvestiture.java | 6 +- ...nvestitureHelpers.java => InvHelpers.java} | 89 ++++++++++++- .../cosmere/api/investiture/Investiture.java | 45 ++++--- .../api/investiture/SpiritwebInvestiture.java | 30 ++--- .../api/manifestation/Manifestation.java | 10 +- .../leaf/cosmere/common/InvestTranfer.java | 47 ------- .../cap/entity/SpiritwebCapability.java | 5 +- .../investiture/InvestitureContainer.java | 122 ++++++++++++++++-- .../common/investiture/Perpendicularity.java | 12 ++ .../common/items/InvestedItemBase.java | 4 + .../investiture/SandmasteryInvestiture.java | 19 +++ .../common/investiture/Highstorm.java | 27 ++++ .../common/investiture/Stormlight.java | 17 +-- .../common/investiture/Towerlight.java | 10 +- .../common/investiture/Voidlight.java | 10 +- 20 files changed, 352 insertions(+), 146 deletions(-) rename src/api/java/leaf/cosmere/api/investiture/{IInvestitureContainer.java => IInvContainer.java} (77%) rename src/api/java/leaf/cosmere/api/investiture/{IInvestitureCreator.java => IInvCreator.java} (50%) rename src/api/java/leaf/cosmere/api/investiture/{InvestitureHelpers.java => InvHelpers.java} (51%) delete mode 100644 src/main/java/leaf/cosmere/common/InvestTranfer.java create mode 100644 src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java create mode 100644 src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java index 5f34a8950..ed2c50c54 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java @@ -9,6 +9,7 @@ import leaf.cosmere.api.Metals; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.investiture.InvestitureContainer; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraftforge.common.util.LazyOptional; @@ -35,6 +36,8 @@ protected void applyEffectTick(ISpiritweb data) //Reveals Your Future { //todo + InvestitureContainer.findOrCreateContainer(data.getLiving()).runInvestiturePull(this); + } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 70e2e4c9f..e276ff3ba 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -8,13 +8,13 @@ import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyStats; import leaf.cosmere.api.*; -import leaf.cosmere.api.investiture.IInvestitureContainer; -import leaf.cosmere.api.investiture.InvestitureHelpers; +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.charge.MetalmindChargeHelper; -import leaf.cosmere.api.investiture.IInvestitureCreator; +import leaf.cosmere.api.investiture.IInvCreator; import leaf.cosmere.api.investiture.Investiture; import net.minecraft.client.KeyMapping; import net.minecraft.resources.ResourceLocation; @@ -26,7 +26,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; -public class AllomancyManifestation extends Manifestation implements IHasMetalType, IInvestitureCreator +public class AllomancyManifestation extends Manifestation implements IHasMetalType, IInvCreator { private final Metals.MetalType metalType; @@ -269,13 +269,13 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(IInvestitureContainer data) + public int maxInvestitureDraw(IInvContainer data) { return (int) ((10 * getStrength(data.getSpiritweb(),false)) + 15); } @Override - public int minInvestitureDraw(IInvestitureContainer data) + public int minInvestitureDraw(IInvContainer data) { if(isFlaring(data.getSpiritweb())) { @@ -289,12 +289,12 @@ public int minInvestitureDraw(IInvestitureContainer data) @Override - public Investiture newInvest(IInvestitureContainer data) + public Investiture newInvest(IInvContainer data) { double strength = getStrength(data.getSpiritweb(), false); double baseStrength = getStrength(data.getSpiritweb(), true); - int beu = 10 + Mth.floor(strength) + Mth.floor(baseStrength); + int beu = 50 + Mth.floor(strength) + Mth.floor(baseStrength); if(isFlaring(data.getSpiritweb())) { beu *= 2; @@ -302,8 +302,8 @@ public Investiture newInvest(IInvestitureContainer data) Investiture sub = new Investiture( data, - InvestitureHelpers.Shards.PRESERVATION, - InvestitureHelpers.InvestitureSources.DIRECT, + InvHelpers.Shards.PRESERVATION, + InvHelpers.InvestitureSources.DIRECT, beu, appManifestComp); sub.setPriority(5); diff --git a/src/api/java/leaf/cosmere/api/EnumUtils.java b/src/api/java/leaf/cosmere/api/EnumUtils.java index 6064a7328..b5b98d725 100644 --- a/src/api/java/leaf/cosmere/api/EnumUtils.java +++ b/src/api/java/leaf/cosmere/api/EnumUtils.java @@ -1,10 +1,10 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 15 - 9 - 2025 ~ Soar */ package leaf.cosmere.api; -import leaf.cosmere.api.investiture.InvestitureHelpers; +import leaf.cosmere.api.investiture.InvHelpers; import net.minecraft.core.Direction; //constant static enum arrays for enums in api that get used often. Save memory allocation where possible @@ -20,7 +20,7 @@ public class EnumUtils public static final Roshar.Surges[] SURGES = Roshar.Surges.values(); //investiture - public static final InvestitureHelpers.Shards[] SHARDS = InvestitureHelpers.Shards.values(); + public static final InvHelpers.Shards[] SHARDS = InvHelpers.Shards.values(); //yes I know it's a vanilla enum public static final Direction[] DIRECTIONS = Direction.values(); diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java similarity index 77% rename from src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java rename to src/api/java/leaf/cosmere/api/investiture/IInvContainer.java index bcded6a05..57285855b 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestitureContainer.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java @@ -3,12 +3,11 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import net.minecraft.nbt.CompoundTag; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.INBTSerializable; import java.util.ArrayList; -public interface IInvestitureContainer extends INBTSerializable +public interface IInvContainer extends INBTSerializable { T getParent(); ISpiritweb getSpiritweb(); @@ -23,4 +22,8 @@ public interface IInvestitureContainer extends INBTSerializable void setMaxBEU(int maxBEU); void clean(); + + InvHelpers.InvestitureSources containerSource(); + + int runInvestiturePull(Manifestation manifestation); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java similarity index 50% rename from src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java rename to src/api/java/leaf/cosmere/api/investiture/IInvCreator.java index 9655ff844..5f8c0effb 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestitureCreator.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java @@ -3,16 +3,15 @@ import leaf.cosmere.api.Manifestations; -public interface IInvestitureCreator +public interface IInvCreator //Used when creating new investiture //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. //todo: make this { - default Investiture newInvest(IInvestitureContainer data) + default Investiture newInvest(IInvContainer data) { - Investiture sub = new Investiture(data, InvestitureHelpers.Shards.PURE, - InvestitureHelpers.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), + return new Investiture(data, InvHelpers.Shards.PURE, + InvHelpers.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), Manifestations.ManifestArrayBuilder.getAll()); - return sub; } } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index 96888f094..0af90ac5b 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -10,10 +10,10 @@ public interface IInvestiture Manifestation[] getApplicableManifestations(); - InvestitureHelpers.Shards getShard(); + InvHelpers.Shards getShard(); - InvestitureHelpers.InvestitureSources getSource(); + InvHelpers.InvestitureSources getSource(); - IInvestitureContainer getContainer(); + IInvContainer getContainer(); } diff --git a/src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java similarity index 51% rename from src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java rename to src/api/java/leaf/cosmere/api/investiture/InvHelpers.java index eceed8666..046485b5c 100644 --- a/src/api/java/leaf/cosmere/api/investiture/InvestitureHelpers.java +++ b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java @@ -1,13 +1,18 @@ +/* +* File updated ~ 15 - 9 - 25 ~ Soar + */ + package leaf.cosmere.api.investiture; import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.manifestation.Manifestation; import java.util.Arrays; import java.util.Locale; import java.util.Optional; -public class InvestitureHelpers +public class InvHelpers { public enum Shards { @@ -42,7 +47,7 @@ public enum Shards this.id = number; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -107,7 +112,7 @@ public enum InvestitureSources this.id = id; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -130,14 +135,88 @@ public static class Math { int beuToStrength(int beu) { - return beu/15; + return beu/Constants.beuStrengthRatio; } int strengthToBEU(int strength) { - return strength*15; + return strength*Constants.beuStrengthRatio; + } + + + } + + public static class Constants + { + //Tick Counters + //Any manifestations that activate on ticks 3,0, or 1 get free activation until tick 2. + //During this tick, investiture is collected and filled. All movement of investiture objects is handled this tick. + public static final int collectionTick = 0; + //Investiture gets managed. Sources and Investiture are merged and/or deleted as fit + public static final int mangagementTick = 1; + //Manifestations check how much investiture they need and if all sources have the required amount. + // Investiture is counted. + public static final int checkTick = 2; + //Manifestations request beu to continue for another cycle. + public static final int pullTick = 3; + + + public static final int beuStrengthRatio = 15; + } + + public class Transferer + { + private Investiture investIn; + private Investiture investOut; + private int rate; + + public Transferer(Investiture investIn, IInvContainer containerOut, int transferRate, int decayRate) + { + this.investIn = investIn; + Shards shard = investIn.getShard(); + InvestitureSources source = investIn.getContainer().containerSource(); + Manifestation[] man = investIn.getApplicableManifestations(); + this.investOut = new Investiture(containerOut, shard, source, transferRate, man, decayRate); + rate = transferRate; + investIn.removeBEU(transferRate); } + public Transferer(Investiture investIn, IInvContainer containerOut, int transferRate) + { + this(investIn, containerOut, transferRate, 0); + } + public void transfer() + { + investOut.addBEU(rate - investIn.removeBEU(rate)); + } + + public int getRate() + { + return rate; + } + + public Investiture getInvestIn() + { + return investIn; + } + + public Investiture getInvestOut() + { + return investOut; + } + + + public void clean() + { + if(investIn.getBEU() == 0) + { + investIn = null; + } + if(investOut.getBEU() == 0) + { + investOut = null; + } + } } } diff --git a/src/api/java/leaf/cosmere/api/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/Investiture.java index 02984357e..acdeaf6dc 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/Investiture.java @@ -1,3 +1,7 @@ +/* +* File updated ~ 15 - 9 - 25 ~ Soar + */ + package leaf.cosmere.api.investiture; import leaf.cosmere.api.CosmereAPI; @@ -10,9 +14,9 @@ public class Investiture implements IInvestiture { - private IInvestitureContainer container; - private InvestitureHelpers.Shards shard; - private InvestitureHelpers.InvestitureSources source; + private IInvContainer container; + private InvHelpers.Shards shard; + private InvHelpers.InvestitureSources source; private Manifestation[] applicableManifestations; private int priority = 1; private int beu; @@ -20,9 +24,9 @@ public class Investiture implements IInvestiture private CompoundTag nbt; - public Investiture(@Nonnull IInvestitureContainer container, - InvestitureHelpers.Shards shard, - InvestitureHelpers.InvestitureSources source, + public Investiture(@Nonnull IInvContainer container, + InvHelpers.Shards shard, + InvHelpers.InvestitureSources source, int beu, Manifestation[] applicableManifestations, int decayRate) @@ -37,9 +41,9 @@ public Investiture(@Nonnull IInvestitureContainer container, this.source = source; } - public Investiture(@Nonnull IInvestitureContainer container, - InvestitureHelpers.Shards shard, - InvestitureHelpers.InvestitureSources source, + public Investiture(@Nonnull IInvContainer container, + InvHelpers.Shards shard, + InvHelpers.InvestitureSources source, int beu, Manifestation[] applicableManifestations) { @@ -79,6 +83,13 @@ public int removeBEU(int remove) } } + public int drain() + { + int temp = beu; + beu = 0; + return temp; + } + public void addBEU(int add) { beu += add; @@ -97,18 +108,18 @@ public Manifestation[] getApplicableManifestations() } @Override - public InvestitureHelpers.Shards getShard() + public InvHelpers.Shards getShard() { return shard; } @Override - public InvestitureHelpers.InvestitureSources getSource() + public InvHelpers.InvestitureSources getSource() { return source; } - public IInvestitureContainer getContainer() + public IInvContainer getContainer() { return container; } @@ -196,8 +207,8 @@ public void deserializeNBT(CompoundTag nbt) this.nbt = nbt; decayRate = nbt.getInt("decay_rate"); beu = nbt.getInt("beu"); - shard = InvestitureHelpers.Shards.valueOf(nbt.getString("shard")); - source = InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")); + shard = InvHelpers.Shards.valueOf(nbt.getString("shard")); + source = InvHelpers.InvestitureSources.valueOf(nbt.getString("source")); priority = nbt.getInt("priority"); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -214,7 +225,7 @@ public void deserializeNBT(CompoundTag nbt) } - public static Investiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) + public static Investiture buildFromNBT(CompoundTag nbt, IInvContainer data) { Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -228,8 +239,8 @@ public static Investiture buildFromNBT(CompoundTag nbt, IInvestitureContainer } } Investiture invest = new Investiture(data, - InvestitureHelpers.Shards.valueOf(nbt.getString("shard")), - InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")), + InvHelpers.Shards.valueOf(nbt.getString("shard")), + InvHelpers.InvestitureSources.valueOf(nbt.getString("source")), nbt.getInt("beu"),array, nbt.getInt("decay_rate")); invest.nbt = nbt; invest.setPriority(nbt.getInt("priority")); diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index f474a1107..f5af94184 100644 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -11,16 +11,16 @@ public class SpiritwebInvestiture implements IInvestiture private int beu; - private IInvestitureContainer container; - private InvestitureHelpers.Shards shard; - private InvestitureHelpers.InvestitureSources source; + private IInvContainer container; + private InvHelpers.Shards shard; + private InvHelpers.InvestitureSources source; private CompoundTag nbt; - public SpiritwebInvestiture(IInvestitureContainer investitureContainer, - int strength, - InvestitureHelpers.Shards shard, - InvestitureHelpers.InvestitureSources source, + public SpiritwebInvestiture(IInvContainer investitureContainer, + int strength, + InvHelpers.Shards shard, + InvHelpers.InvestitureSources source, Manifestation[] appManifest) { this.shard = shard; @@ -49,19 +49,19 @@ public Manifestation[] getApplicableManifestations() } @Override - public InvestitureHelpers.Shards getShard() + public InvHelpers.Shards getShard() { return null; } @Override - public InvestitureHelpers.InvestitureSources getSource() + public InvHelpers.InvestitureSources getSource() { return null; } @Override - public IInvestitureContainer getContainer() + public IInvContainer getContainer() { return container; } @@ -115,8 +115,8 @@ public void deserializeNBT(CompoundTag nbt) { this.nbt = nbt; beu = nbt.getInt("beu"); - shard = InvestitureHelpers.Shards.valueOf(nbt.getString("shard")); - source = InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")); + shard = InvHelpers.Shards.valueOf(nbt.getString("shard")); + source = InvHelpers.InvestitureSources.valueOf(nbt.getString("source")); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) @@ -132,7 +132,7 @@ public void deserializeNBT(CompoundTag nbt) } - public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvestitureContainer data) + public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvContainer data) { Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -147,8 +147,8 @@ public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvestitureCon } SpiritwebInvestiture invest = new SpiritwebInvestiture(data, nbt.getInt("beu"), - InvestitureHelpers.Shards.valueOf(nbt.getString("shard")), - InvestitureHelpers.InvestitureSources.valueOf(nbt.getString("source")), + InvHelpers.Shards.valueOf(nbt.getString("shard")), + InvHelpers.InvestitureSources.valueOf(nbt.getString("source")), array); invest.nbt = nbt; diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index 1c27a4ed5..c039d9e89 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,7 +5,7 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.Investiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; @@ -143,8 +143,8 @@ public Attribute getAttribute() } - - public int drawInvestiture(IInvestitureContainer data, int beu) + //May be redundant method + public int drawInvestiture(IInvContainer data, int beu) { ArrayList invests = data.availableInvestitures(this); int sum = 0; @@ -185,12 +185,12 @@ public int drawInvestiture(IInvestitureContainer data, int beu) } - public int maxInvestitureDraw(IInvestitureContainer data) + public int maxInvestitureDraw(IInvContainer data) { return 0; } - public int minInvestitureDraw(IInvestitureContainer data) + public int minInvestitureDraw(IInvContainer data) { return 0; } diff --git a/src/main/java/leaf/cosmere/common/InvestTranfer.java b/src/main/java/leaf/cosmere/common/InvestTranfer.java deleted file mode 100644 index 403649990..000000000 --- a/src/main/java/leaf/cosmere/common/InvestTranfer.java +++ /dev/null @@ -1,47 +0,0 @@ -package leaf.cosmere.common; - -import leaf.cosmere.api.investiture.IInvestitureContainer; -import leaf.cosmere.api.investiture.Investiture; - -public class InvestTranfer - //Used when changing the location of investiture, ex. when moving investiture from a gem to a spiritweb. -{ - Investiture invest1; - int rate; - Investiture invest2; - - public InvestTranfer(Investiture invest, int rate, int newDecay, IInvestitureContainer toGo) - { - this.invest1 = invest; - this.rate = rate; - invest2 = new Investiture(toGo, invest1.getShard(), invest1.getSource(), 0, invest1.getApplicableManifestations(), newDecay); - } - - public void tick() - { - if(invest1.getBEU()>rate) - { - invest1.removeBEU(rate); - invest2.addBEU(rate); - } - else - { - invest2.addBEU(invest1.getBEU()); - invest1.removeBEU(rate); - } - } - - public void clean() - { - if(invest1.getBEU() == 0) - { - invest1 = null; - } - if(invest2.getBEU() == 0) - { - invest2 = null; - } - } - - -} diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index be0dd7b1e..a20a52666 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -95,6 +95,7 @@ public SpiritwebCapability(LivingEntity ent) { this.livingEntity = ent; spiritwebSubmodules = Cosmere.makeSpiritwebSubmodules(); + investitureContainer = InvestitureContainer.findOrCreateContainer(getLiving()); } @@ -1007,8 +1008,4 @@ public int maxBEU() return Integer.MAX_VALUE; } - public InvestitureContainer getInvestitureContainer() - { - return investitureContainer; - } } diff --git a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java index cf6e8de6c..2edb846cf 100644 --- a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java +++ b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java @@ -1,9 +1,10 @@ +/* +* File updated ~ 15 - 9 - 25 ~ Soar + */ + package leaf.cosmere.common.investiture; -import leaf.cosmere.api.investiture.IInvestiture; -import leaf.cosmere.api.investiture.IInvestitureContainer; -import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.SpiritwebInvestiture; +import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; @@ -21,7 +22,7 @@ import java.util.*; -public class InvestitureContainer> implements IInvestitureContainer +public class InvestitureContainer> implements IInvContainer { private static final Map, InvestitureContainer> containers = new HashMap<>(); @@ -54,7 +55,7 @@ public static InvestitureContainer findOrCreateContainer(ItemStack st } } - public static InvestitureContainer findOrCreateContainer(ISpiritweb spiritweb) + public static InvestitureContainer findOrCreateContainer(ISpiritweb spiritweb) { return findOrCreateContainer(spiritweb.getLiving()); } @@ -85,9 +86,9 @@ public static void clear() private InvestitureContainer(T parent) { this.parent = parent; - if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).isPresent()) + if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).resolve().isPresent()) { - ISpiritweb web = SpiritwebCapability.get(entity).orElse(null); + ISpiritweb web = SpiritwebCapability.get(entity).resolve().get(); CompoundTag tag = web.getCompoundTag(); if (tag.contains("investContainer")) { @@ -334,14 +335,111 @@ public void setMaxBEU(int maxBEU) // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method public void clean() { - for(Investiture investiture: investitures) + investitures.removeIf(investiture -> investiture.getBEU() == 0); + System.gc(); + } + + @Override + public InvHelpers.InvestitureSources containerSource() + { + if(parent instanceof LivingEntity entity) + { + return InvHelpers.InvestitureSources.SELF; + } + else if(parent instanceof ItemStack stack) + { + + } + return null; + } + + public int runInvestiturePull(Manifestation manifestation) + { + ArrayList investitures = availableInvestitures(manifestation); + int out = 0; + + //Test to see if the minimum amount of investiture is available + //If not return + int possible = 0; + for(Investiture invest: investitures) { - if(investiture.getBEU() == 0) + possible += invest.getBEU(); + } + if(possible < manifestation.minInvestitureDraw(this)) + { + return 0; + } + + + //Loops through each priority + for(int i = 1; i <= 5; i++) + { + //Temporary list of values of given priority + ArrayList temp = new ArrayList<>(); + int sub = 0; + //Adds investitures to temporary list + for (Investiture invest : investitures) { - investitures.remove(investiture); + // remove empty investitures + if(invest.getBEU() == 0) + { + investitures.remove(invest); + } + if(invest.getPriority() != i) + { + continue; + } + temp.add(invest); + sub += invest.getBEU(); + } + //Don't need to loop through an empty list. + if(temp.isEmpty()) + { + continue; + } + + //If current total is less than max, pull all investiture from each source of the priority + if(sub + out <= manifestation.maxInvestitureDraw(this)) + { + for(Investiture invest: temp) + { + out += invest.drain(); + + } + } + //Else, pull a percentage relative to each investiture's total. + else + { + int sub2 = manifestation.maxInvestitureDraw(this) - out; + int sub3 = 0; + for(Investiture invest: temp) + { + int toDraw = (invest.getBEU()/sub) * sub2; + sub3 += toDraw; + invest.removeBEU(toDraw); + } + int index = 0; + + //Checking that investiture gets pulled correctly + while(sub3 < sub2) + { + Investiture invest = temp.get(index); + if(invest.getBEU() > 0) + { + sub3 += 1; + invest.removeBEU(1); + } + if(invest.getBEU() == 0) + { + temp.remove(index); + } + index = index >= temp.size() ? 0 : index + 1; + } + + out += sub3; } } - System.gc(); + return out; } } diff --git a/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java b/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java new file mode 100644 index 000000000..ba60071dd --- /dev/null +++ b/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java @@ -0,0 +1,12 @@ +/* +* File created ~ 15 - 9 - 25 + */ + +package leaf.cosmere.common.investiture; + +import leaf.cosmere.api.investiture.IInvCreator; + +public class Perpendicularity implements IInvCreator +{ + +} diff --git a/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java index 2cb67d0a3..ffb473dfb 100644 --- a/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java +++ b/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java @@ -1,3 +1,6 @@ +/* +* File updated ~ 15 - 9 - 25 ~ Soar + */ package leaf.cosmere.common.items; import leaf.cosmere.api.helpers.StackNBTHelper; @@ -21,4 +24,5 @@ public void saveContainer(ItemStack stack, CompoundTag tag) { StackNBTHelper.set(stack, "investContainer", tag); } + } diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java new file mode 100644 index 000000000..090336809 --- /dev/null +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java @@ -0,0 +1,19 @@ +package leaf.cosmere.sandmastery.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.InvHelpers; + +public class SandmasteryInvestiture extends Investiture +{ + public SandmasteryInvestiture(IInvContainer container, int BEU) + { + super(container, + InvHelpers.Shards.AUTONOMY, + InvHelpers.InvestitureSources.LUHEL_BOND, + BEU, + Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SANDMASTERY)); + } + +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java new file mode 100644 index 000000000..d2d32ef58 --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java @@ -0,0 +1,27 @@ +package leaf.cosmere.surgebinding.common.investiture; + +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.IInvCreator; +import leaf.cosmere.api.investiture.Investiture; +import net.minecraft.world.phys.Vec3; + +public class Highstorm implements IInvCreator +{ + public Highstorm() + { + + } + + public boolean isHighstorm(Vec3 position) + { + //todo: Highstorm Logic + return true; + } + + @Override + public Investiture newInvest(IInvContainer data) + { + Investiture investiture = new Stormlight(data, 500); + return investiture; + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index 312b09a0c..1dbf88f26 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -1,27 +1,28 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureHelpers; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; +import net.minecraft.world.entity.LivingEntity; public class Stormlight extends Investiture { - public Stormlight(IInvestitureContainer container, + public Stormlight(IInvContainer container, int beu) { super(container, - InvestitureHelpers.Shards.HONOR, - InvestitureHelpers.InvestitureSources.HIGHSTORM, + InvHelpers.Shards.HONOR, + InvHelpers.InvestitureSources.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); int decayRate; - if(container instanceof SpiritwebCapability) + if(container.getParent() instanceof LivingEntity) { - SpiritwebCapability sw = (SpiritwebCapability) container; + ISpiritweb sw = container.getSpiritweb(); SurgebindingSpiritwebSubmodule ssm = (SurgebindingSpiritwebSubmodule) sw.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); decayRate = (6 - ssm.getIdeal()) * SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get() / 2; } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java index 384d2cf62..3be82ac6e 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -1,19 +1,19 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureHelpers; +import leaf.cosmere.api.investiture.InvHelpers; public class Towerlight extends Investiture { - public Towerlight(IInvestitureContainer container, + public Towerlight(IInvContainer container, int beu) { super(container, - InvestitureHelpers.Shards.HONOR, + InvHelpers.Shards.HONOR, //Feels most accurate - InvestitureHelpers.InvestitureSources.MISTS, + InvHelpers.InvestitureSources.MISTS, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java index 94a5a05b8..295967b78 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -1,20 +1,20 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvestitureContainer; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.investiture.InvestitureHelpers; +import leaf.cosmere.api.investiture.InvHelpers; public class Voidlight extends Investiture { - public Voidlight(IInvestitureContainer container, + public Voidlight(IInvContainer container, int beu) { //As we start implementing voidbinding, add that to the list of manifestations. //Not much is known about voidlight, but it's here for the future. super(container, - InvestitureHelpers.Shards.ODIUM, - InvestitureHelpers.InvestitureSources.HIGHSTORM, + InvHelpers.Shards.ODIUM, + InvHelpers.InvestitureSources.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); } From 4cf9257c99eb82778a7204584b5b14ed35c50e9a Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Thu, 2 Oct 2025 00:07:13 -0600 Subject: [PATCH 1026/1090] Investiture v0.5.1 Implementation of stormlight Investiture containers are now capabilities. Invested items are now InvestableItemBase instead of ChargableItemBase Lot's of extranious stuff. I'll fix it at some point. --- .../common/manifestation/AllomancyAtium.java | 2 +- .../manifestation/AllomancyBendalloy.java | 6 +- .../manifestation/AllomancyManifestation.java | 57 ++- src/api/java/leaf/cosmere/api/Constants.java | 1 + .../api/investiture/IInvContainer.java | 23 +- .../cosmere/api/investiture/IInvCreator.java | 10 +- .../cosmere/api/investiture/IInvestiture.java | 4 + .../cosmere/api/investiture/InvHelpers.java | 96 +++-- .../cosmere/api/investiture/Investiture.java | 76 +++- .../api/investiture/SpiritwebInvestiture.java | 74 +++- .../cosmere/api/investiture/Transferer.java | 88 +++++ .../api/manifestation/Manifestation.java | 8 +- .../cosmere/api/spiritweb/ISpiritweb.java | 3 + .../cap/entity/SpiritwebCapability.java | 19 +- .../cosmere/common/charge/IInvestable.java | 6 + .../eventHandlers/CapabilitiesHandler.java | 87 +++++ .../investiture/InvestitureContainer.java | 351 +++++++++++------- .../items/ChargeableMetalCurioItem.java | 2 +- .../common/items/InvestableItemBase.java | 197 ++++++++++ .../common/items/InvestedItemBase.java | 28 -- ...SyncPlayerInvestitureContainerMessage.java | 55 +++ .../common/investiture/Highstorm.java | 52 ++- .../common/investiture/LightTransferer.java | 15 + .../common/investiture/Stormlight.java | 2 +- .../common/items/GemstoneItem.java | 62 ++-- 25 files changed, 1050 insertions(+), 274 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/investiture/Transferer.java create mode 100644 src/main/java/leaf/cosmere/common/charge/IInvestable.java create mode 100644 src/main/java/leaf/cosmere/common/items/InvestableItemBase.java delete mode 100644 src/main/java/leaf/cosmere/common/items/InvestedItemBase.java create mode 100644 src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java create mode 100644 src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java index ed2c50c54..f67546f3e 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java @@ -36,7 +36,7 @@ protected void applyEffectTick(ISpiritweb data) //Reveals Your Future { //todo - InvestitureContainer.findOrCreateContainer(data.getLiving()).runInvestiturePull(this); + data.getInvestitureContainer().runInvestiturePull(this); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java index 68825ea37..5f55ade94 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java @@ -8,7 +8,10 @@ import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EffectsHelper; import leaf.cosmere.api.helpers.EntityHelper; +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.investiture.InvestitureContainer; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.LivingEntity; @@ -47,6 +50,7 @@ protected void applyEffectTick(ISpiritweb data) return; } + int invest = data.getInvestitureContainer().runInvestiturePull(this); //Slows Down Time for the entities around the user if (playerThreadMap.get(uuid) == null) { @@ -55,7 +59,7 @@ protected void applyEffectTick(ISpiritweb data) List entitiesToAffect = playerThreadMap.get(uuid).requestEntityList(); for (LivingEntity e : entitiesToAffect) { - e.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SLOWDOWN, mode)); + e.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SLOWDOWN, InvHelpers.Math.beuToPower(invest))); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index e276ff3ba..d4bb9c760 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -12,6 +12,7 @@ import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.charge.MetalmindChargeHelper; import leaf.cosmere.api.investiture.IInvCreator; @@ -167,7 +168,7 @@ public boolean tick(ISpiritweb data) allo.adjustIngestedMetal(metalType, -cost, isActiveTick); if(isActiveTick) { - newInvest(InvestitureContainer.findOrCreateContainer(data)); + newInvest(data.getInvestitureContainer()); } if (isActiveTick && livingEntity instanceof ServerPlayer serverPlayer) @@ -269,19 +270,19 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(IInvContainer data) + public int maxInvestitureDraw(ISpiritweb data) { - return (int) ((10 * getStrength(data.getSpiritweb(),false)) + 15); + return (int) ((10 * getStrength(data,false)) + minInvestitureDraw(data)); } @Override - public int minInvestitureDraw(IInvContainer data) + public int minInvestitureDraw(ISpiritweb data) { - if(isFlaring(data.getSpiritweb())) + if(isFlaring(data)) { - return 30; + return 100; } - return 15; + return 50; } @@ -289,25 +290,57 @@ public int minInvestitureDraw(IInvContainer data) @Override - public Investiture newInvest(IInvContainer data) + public Investiture newInvest(IInvContainer data) { - double strength = getStrength(data.getSpiritweb(), false); - double baseStrength = getStrength(data.getSpiritweb(), true); + ISpiritweb web; + if(data.getParent() instanceof LivingEntity entity) + { + web = SpiritwebCapability.get(entity).resolve().get(); + } + else + { + return null; + } + double strength = getStrength(web, false); + double baseStrength = getStrength(web, true); + + //gets investiture int beu = 50 + Mth.floor(strength) + Mth.floor(baseStrength); - if(isFlaring(data.getSpiritweb())) + if(isFlaring(web)) { beu *= 2; } + Manifestation[] appManifest; + if(isCompounding(web)) + { + appManifest = appManifestComp; + } + else + { + appManifest = Manifestations.ManifestArrayBuilder.getArray(this); + } Investiture sub = new Investiture( data, InvHelpers.Shards.PRESERVATION, InvHelpers.InvestitureSources.DIRECT, beu, - appManifestComp); + appManifest); sub.setPriority(5); return sub; } + @Override + public Investiture newInvest(IInvContainer data, int beu, int decay) + { + return newInvest(data); + } + + @Override + public Investiture newInvest(IInvContainer data, int beu) + { + return newInvest(data); + } + } diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 676344a58..e1b655d8c 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -23,6 +23,7 @@ public static class Resources public static final ResourceLocation ROSHAR_CAP = new ResourceLocation("surgebinding", "roshar"); public static final ResourceLocation SCADRIAL_CAP = new ResourceLocation("allomancy", "scadrial"); public static final ResourceLocation HEMALURGY_WORLD_CAP = new ResourceLocation("hemalurgy", "world_cap"); + public static final ResourceLocation INV_CONTAINER_CAP = new ResourceLocation(CosmereAPI.COSMERE_MODID, "i_container"); } public static class Suffix diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java index 57285855b..4495e31fe 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java @@ -3,21 +3,36 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.INBTSerializable; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.event.entity.player.PlayerEvent; +import javax.annotation.Nullable; import java.util.ArrayList; +import java.util.List; +import java.util.Optional; public interface IInvContainer extends INBTSerializable { + T getParent(); - ISpiritweb getSpiritweb(); + LazyOptional getSpiritweb(); + + Entity getEntityAssociate(); + void setEntityAssociate(Entity entityAssociate); ArrayList availableInvestitures(Manifestation manifest); void mergeOrAddInvestiture(IInvestiture invest); Investiture findInvestiture(Manifestation[] appManifest); boolean hasInvestiture(Investiture investiture); + int currentBEU(); + int currentBEUDraw(List list); int getMaxBEU(); void setMaxBEU(int maxBEU); @@ -26,4 +41,10 @@ public interface IInvContainer extends INBTSerializable InvHelpers.InvestitureSources containerSource(); int runInvestiturePull(Manifestation manifestation); + + void tick(); + void syncToClients(@Nullable ServerPlayer serverPlayerEntity); + void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldContainer); + + } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java index 5f8c0effb..fa9c69982 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java @@ -1,6 +1,7 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.spiritweb.ISpiritweb; public interface IInvCreator @@ -8,10 +9,15 @@ public interface IInvCreator //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. //todo: make this { - default Investiture newInvest(IInvContainer data) + default Investiture newInvest(IInvContainer data) { return new Investiture(data, InvHelpers.Shards.PURE, - InvHelpers.InvestitureSources.DIRECT, data.getMaxBEU()-data.currentBEU(), + InvHelpers.InvestitureSources.DIRECT, + data.getMaxBEU()-data.currentBEU(), Manifestations.ManifestArrayBuilder.getAll()); } + + Investiture newInvest(IInvContainer data, int beu, int decay); + + Investiture newInvest(IInvContainer data, int beu); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index 0af90ac5b..df237dbc2 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -16,4 +16,8 @@ public interface IInvestiture IInvContainer getContainer(); + int getCurrentMaxDraw(); + + void calculateCurrentMaxDraw(); + } diff --git a/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java index 046485b5c..fc8edd7d8 100644 --- a/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java +++ b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java @@ -7,8 +7,12 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.client.Minecraft; +import net.minecraft.server.MinecraftServer; +import net.minecraftforge.eventbus.api.SubscribeEvent; import java.util.Arrays; +import java.util.HashSet; import java.util.Locale; import java.util.Optional; @@ -91,6 +95,25 @@ public Manifestations.ManifestationTypes getManifestationType() default -> Manifestations.ManifestationTypes.NONE; }; } + + public static Shards getShardOfManifest(Manifestation manifestation) + { + return getShardOfManifest(manifestation.getManifestationType()); + } + + public static Shards getShardOfManifest(Manifestations.ManifestationTypes manifestationT) + { + return switch (manifestationT) + { + case ALLOMANCY -> PRESERVATION; + case HEMALURGY -> RUIN; + case SANDMASTERY -> AUTONOMY; + case AON_DOR -> DOR; + case AWAKENING -> ENDOWMENT; + case SURGEBINDING -> HONOR; + default -> NONE; + }; + } } // All possible sources for gaining kinetic investiture public enum InvestitureSources @@ -102,6 +125,7 @@ public enum InvestitureSources SELF(4), LUHEL_BOND(5), NAHEL_BOND(6), + //Hemalurgy LIFEFORCE(7), PERPENDICULARITY(8); @@ -133,16 +157,25 @@ public String getName() public static class Math { - int beuToStrength(int beu) + public static double beuToStrength(int beu) + { + return (double) beu /Constants.beuStrengthRatio; + } + + public static int strengthToBEU(double strength) { - return beu/Constants.beuStrengthRatio; + return (int) (strength*Constants.beuStrengthRatio); } - int strengthToBEU(int strength) + public static int beuToPower(int beu) { - return strength*Constants.beuStrengthRatio; + return beu/Constants.beuPowerRatio; } + public static int powerToBEU(int power) + { + return power * Constants.beuPowerRatio; + } } @@ -162,60 +195,43 @@ public static class Constants public static final int beuStrengthRatio = 15; + public static final int beuPowerRatio = 20; } - public class Transferer + public static class TransferHelper { - private Investiture investIn; - private Investiture investOut; - private int rate; - - public Transferer(Investiture investIn, IInvContainer containerOut, int transferRate, int decayRate) - { - this.investIn = investIn; - Shards shard = investIn.getShard(); - InvestitureSources source = investIn.getContainer().containerSource(); - Manifestation[] man = investIn.getApplicableManifestations(); - this.investOut = new Investiture(containerOut, shard, source, transferRate, man, decayRate); - rate = transferRate; - investIn.removeBEU(transferRate); - } - - public Transferer(Investiture investIn, IInvContainer containerOut, int transferRate) - { - this(investIn, containerOut, transferRate, 0); - } + public static HashSet transferers = new HashSet<>(); - public void transfer() + public static void addTransferer(Transferer transferer) { - investOut.addBEU(rate - investIn.removeBEU(rate)); + transferers.add(transferer); } - public int getRate() + protected static void removeTransferer(Transferer transferer) { - return rate; + transferers.remove(transferer); } - public Investiture getInvestIn() + public static void transferAll() { - return investIn; + for(Transferer transferer: transferers) + { + transferer.transfer(); + } } - public Investiture getInvestOut() + public static void clean() { - return investOut; + transferers.removeIf(transferer -> transferer.getInvestIn() == null || transferer.getInvestOut() == null); } - - public void clean() + @SubscribeEvent + public static void tick() { - if(investIn.getBEU() == 0) - { - investIn = null; - } - if(investOut.getBEU() == 0) + if(Minecraft.getInstance().level.getServer().getTickCount() % 40 == 19) { - investOut = null; + transferAll(); + clean(); } } } diff --git a/src/api/java/leaf/cosmere/api/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/Investiture.java index acdeaf6dc..3e7d435ed 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/Investiture.java @@ -21,6 +21,8 @@ public class Investiture implements IInvestiture private int priority = 1; private int beu; private int decayRate; + private int currentMaxDraw; + private CompoundTag nbt; @@ -68,7 +70,9 @@ public void setBEU(int beu) this.beu = beu; } + /* public int removeBEU(int remove) + { if (remove > beu) { @@ -82,6 +86,53 @@ public int removeBEU(int remove) return 0; } } + */ + + public int removeBEU(int remove) + { + if(remove > beu) + { + int out = beu; + beu = 0; + return out; + } + else + { + beu -= remove; + return remove; + } + } + + public int removeBEU(int remove, boolean upToCurrent) + { + if(upToCurrent) + { + if (remove > currentMaxDraw) + { + beu -= currentMaxDraw; + return currentMaxDraw; + } + else + { + beu -= remove; + return remove; + } + } + else + { + if (remove > beu) + { + int out = beu; + beu = 0; + return out; + } + else + { + beu -= remove; + return remove; + } + } + } public int drain() { @@ -124,9 +175,27 @@ public IInvContainer getContainer() return container; } + public int getCurrentMaxDraw() + { + return currentMaxDraw; + } + @Override + public void calculateCurrentMaxDraw() + { + int x = 0; + for(Manifestation manifest: applicableManifestations) + { + if(manifest.isActive(getSpiritweb())) + { + x++; + } + } + currentMaxDraw = beu/x; + } + public ISpiritweb getSpiritweb() { - return (ISpiritweb) container; + return getContainer().getSpiritweb().resolve().orElse(null); } public int getDecayRate() @@ -177,7 +246,10 @@ public void decay() public void reattach() { - container.mergeOrAddInvestiture(this); + if(!container.hasInvestiture(this)) + { + container.mergeOrAddInvestiture(this); + } } public CompoundTag serializeNBT() diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index f5af94184..1ff4077b2 100644 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -1,7 +1,9 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; import net.minecraft.nbt.CompoundTag; public class SpiritwebInvestiture implements IInvestiture @@ -14,18 +16,32 @@ public class SpiritwebInvestiture implements IInvestiture private IInvContainer container; private InvHelpers.Shards shard; private InvHelpers.InvestitureSources source; + private int lastPullInvestiture = 0; + private int mode = 0; private CompoundTag nbt; + + private int currentMaxDraw; + + public SpiritwebInvestiture(IInvContainer invContainer, Manifestation manifestation, ISpiritweb web) + { + container = invContainer; + beu = InvHelpers.Math.strengthToBEU(manifestation.getStrength(web, true)); + shard = InvHelpers.Shards.getShardOfManifest(manifestation); + source = InvHelpers.InvestitureSources.DIRECT; + applicableManifestations = Manifestations.ManifestArrayBuilder.getArray(manifestation); + container.mergeOrAddInvestiture(this); + } public SpiritwebInvestiture(IInvContainer investitureContainer, - int strength, + double strength, InvHelpers.Shards shard, InvHelpers.InvestitureSources source, Manifestation[] appManifest) { this.shard = shard; this.source = source; - this.beu = strength * 15; + this.beu = (int) (strength * 15); this.applicableManifestations = appManifest; container = investitureContainer; container.mergeOrAddInvestiture(this); @@ -65,21 +81,55 @@ public IInvContainer getContainer() { return container; } - - public int getStrength() + + @Override + public int getCurrentMaxDraw() { - return beu/15; + return currentMaxDraw; } - - public void setStrength(int strength) + + @Override + public void calculateCurrentMaxDraw() + { + currentMaxDraw = beu; + } + + public double getStrength() { - beu = strength * 15; + return InvHelpers.Math.beuToStrength(beu); } + public void setStrength(double strength) + { + beu = InvHelpers.Math.strengthToBEU(strength); + } + + public int getLastPullInvestiture() + { + return lastPullInvestiture; + } + + public void setLastPullInvestiture(int lastPullInvestiture) + { + this.lastPullInvestiture = lastPullInvestiture; + } + + public int getMode() + { + return mode; + } + + public void setMode(int mode) + { + this.mode = mode; + } + public boolean merge(SpiritwebInvestiture other) { if(this.getApplicableManifestations()==(other.getApplicableManifestations()) - && this.getContainer().equals(other.getContainer())) + && this.getContainer().equals(other.getContainer()) + && this.source != InvHelpers.InvestitureSources.LIFEFORCE + && other.source != InvHelpers.InvestitureSources.LIFEFORCE) { this.beu += other.getBEU(); other.setBEU(0); @@ -108,6 +158,8 @@ public CompoundTag serializeNBT() nbt.put("manifestations", manifestationNBT); nbt.putInt("beu", beu); + nbt.putInt("lpi",lastPullInvestiture); + return nbt; } @@ -129,6 +181,8 @@ public void deserializeNBT(CompoundTag nbt) } } + lastPullInvestiture = nbt.getInt("lpi"); + } @@ -150,8 +204,10 @@ public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvContainer= killAmount) + { + endTransfer(); + } + } + + public int getRate() + { + return rate; + } + + public Investiture getInvestIn() + { + return investIn; + } + + public Investiture getInvestOut() + { + return investOut; + } + + public void setKillAmount(int amount) + { + killAmount = amount; + } + + public void endTransfer() + { + investIn = null; + investOut = null; + InvHelpers.TransferHelper.removeTransferer(this); + } + public void clean() + { + if(investIn.getBEU() == 0) + { + investIn = null; + } + } +} diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index c039d9e89..a87febd79 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -144,9 +144,9 @@ public Attribute getAttribute() //May be redundant method - public int drawInvestiture(IInvContainer data, int beu) + public int drawInvestiture(ISpiritweb data, int beu) { - ArrayList invests = data.availableInvestitures(this); + ArrayList invests = data.getInvestitureContainer().availableInvestitures(this); int sum = 0; for(Investiture investiture: invests) { @@ -185,12 +185,12 @@ public int drawInvestiture(IInvContainer data, int beu) } - public int maxInvestitureDraw(IInvContainer data) + public int maxInvestitureDraw(ISpiritweb data) { return 0; } - public int minInvestitureDraw(IInvContainer data) + public int minInvestitureDraw(ISpiritweb data) { return 0; } diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 155342578..1de9894d9 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -8,6 +8,7 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.manifestation.Manifestation; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; @@ -26,6 +27,8 @@ public interface ISpiritweb extends INBTSerializable LivingEntity getLiving(); + IInvContainer getInvestitureContainer(); + boolean hasManifestation(Manifestation manifestation); boolean hasManifestation(Manifestation manifestation, boolean ignoreTemporaryPower); diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index a20a52666..f85e719fd 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -10,6 +10,7 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; @@ -69,7 +70,7 @@ public class SpiritwebCapability implements ISpiritweb private boolean hasBeenInitialized = false; private final LivingEntity livingEntity; - private InvestitureContainer investitureContainer; + private IInvContainer investitureContainer; public final Map MANIFESTATIONS_MODE = new HashMap<>(); @@ -95,7 +96,9 @@ public SpiritwebCapability(LivingEntity ent) { this.livingEntity = ent; spiritwebSubmodules = Cosmere.makeSpiritwebSubmodules(); - investitureContainer = InvestitureContainer.findOrCreateContainer(getLiving()); + investitureContainer = InvestitureContainer.get(livingEntity).isPresent() ? + InvestitureContainer.get(livingEntity).resolve().get() : + null; } @@ -147,7 +150,7 @@ public CompoundTag serializeNBT() spiritwebSubmodule.serialize(this); } - InvestitureContainer container = InvestitureContainer.findOrCreateContainer(getLiving()); + IInvContainer container = InvestitureContainer.get(livingEntity).resolve().get(); nbt.put("investContainer", container.serializeNBT()); @@ -206,7 +209,9 @@ public void deserializeNBT(CompoundTag compoundTag) spiritwebSubmodule.deserialize(this); } - investitureContainer = InvestitureContainer.findOrCreateContainer(getLiving()); + investitureContainer = InvestitureContainer.get(livingEntity).isPresent() ? + InvestitureContainer.get(livingEntity).resolve().get() : + null; } @@ -432,6 +437,12 @@ public LivingEntity getLiving() return livingEntity; } + @Override + public IInvContainer getInvestitureContainer() + { + return investitureContainer; + } + //Copy things from an old spiritweb into the new one. //Eg a player has died and we need to make sure they get their stormlight and breaths back. diff --git a/src/main/java/leaf/cosmere/common/charge/IInvestable.java b/src/main/java/leaf/cosmere/common/charge/IInvestable.java new file mode 100644 index 000000000..e5b61f676 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/charge/IInvestable.java @@ -0,0 +1,6 @@ +package leaf.cosmere.common.charge; + +public class IInvestable +{ + +} diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java index 18c0f12ed..59460fa84 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java @@ -5,9 +5,13 @@ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.investiture.InvestitureContainer; +import leaf.cosmere.common.items.ChargeableItemBase; +import leaf.cosmere.common.items.InvestableItemBase; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.Entity; @@ -21,6 +25,7 @@ import net.minecraft.world.entity.npc.AbstractVillager; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.raid.Raider; +import net.minecraft.world.item.ItemStack; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; @@ -68,6 +73,71 @@ public void deserializeNBT(CompoundTag nbt) } }); } + if(isValidInvestitureContainer(eventEntity)) + { + LivingEntity livingEntity = (LivingEntity) eventEntity; + + event.addCapability(Constants.Resources.INV_CONTAINER_CAP, new ICapabilitySerializable() + { + final InvestitureContainer investitureContainer = new InvestitureContainer(livingEntity); + final LazyOptional invContainerInstance = LazyOptional.of(() -> investitureContainer); + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @javax.annotation.Nullable Direction side) + { + return cap == InvestitureContainer.CAPABILITY ? (LazyOptional) invContainerInstance + : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() + { + return investitureContainer.serializeNBT(); + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + investitureContainer.deserializeNBT(nbt); + } + }); + } + } + + @SubscribeEvent + public static void attachItemCapabilities(AttachCapabilitiesEvent event) + { + ItemStack eventStack = event.getObject(); + + if (isValidInvestitureContainer(eventStack)) + { + event.addCapability(Constants.Resources.INV_CONTAINER_CAP, new ICapabilitySerializable() + { + final InvestitureContainer investitureContainer = new InvestitureContainer(eventStack); + final LazyOptional invContainerInstance = LazyOptional.of(() -> investitureContainer); + + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @javax.annotation.Nullable Direction side) + { + return cap == InvestitureContainer.CAPABILITY ? (LazyOptional) invContainerInstance + : LazyOptional.empty(); + } + + @Override + public CompoundTag serializeNBT() + { + return investitureContainer.serializeNBT(); + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + investitureContainer.deserializeNBT(nbt); + } + }); + } } public static boolean isValidSpiritWebEntity(Entity entity) @@ -81,4 +151,21 @@ public static boolean isValidSpiritWebEntity(Entity entity) || entity instanceof Llama || entity instanceof Cat; } + + public static boolean isValidInvestitureContainer(Entity entity) + { + return isValidSpiritWebEntity(entity); + //add block entities + } + + //Alternative for investiture container for entities that can only be affected by investiture, but can't use it. + public static boolean isValidInfustionEntity(Entity entity) + { + return (entity instanceof LivingEntity && !isValidInvestitureContainer(entity)); + } + + public static boolean isValidInvestitureContainer(ItemStack stack) + { + return stack.getItem() instanceof InvestableItemBase; + } } diff --git a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java index 2edb846cf..c7135cfd2 100644 --- a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java +++ b/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java @@ -4,178 +4,212 @@ package leaf.cosmere.common.investiture; +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.charge.IChargeable; -import leaf.cosmere.common.items.InvestedItemBase; +import leaf.cosmere.common.items.ChargeableItemBase; +import leaf.cosmere.common.network.packets.SyncPlayerInvestitureContainerMessage; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; +import net.minecraft.server.MinecraftServer; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityToken; import net.minecraftforge.common.capabilities.ICapabilitySerializable; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.event.entity.player.PlayerEvent; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; import java.util.*; -public class InvestitureContainer> implements IInvContainer +public class InvestitureContainer> implements IInvContainer { - private static final Map, InvestitureContainer> containers = new HashMap<>(); - public static InvestitureContainer findOrCreateContainer(LivingEntity entity) + public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() { - if(containers.containsKey(entity)) - { - return (InvestitureContainer) containers.get(entity); + }); - } - else - { - InvestitureContainer containTemp = new InvestitureContainer(entity); - containers.put(entity, containTemp); - return containTemp; - } - } + //detect if capability has been set up yet + private boolean didSetup = false; + + private final T parent; + private Entity entityAssociate; + + + private CompoundTag nbt; + + public final List investitures = new ArrayList<>(); + public final List swInvestitures = new ArrayList<>(); + private int maxBEU; + private int lastAccessedTick; // Used for cleaning. If not accessed after several ticks, clear it out. - public static InvestitureContainer findOrCreateContainer(ItemStack stack) + public InvestitureContainer(T parent) { - if(containers.containsKey(stack)) - { - return (InvestitureContainer) containers.get(stack); - } - else + this.parent = parent; + if(this.parent instanceof Entity entity) { - InvestitureContainer containTemp = new InvestitureContainer<>(stack); - containers.put(stack, containTemp); - return containTemp; + entityAssociate = entity; } } - public static InvestitureContainer findOrCreateContainer(ISpiritweb spiritweb) + @Nonnull + public static LazyOptional get(LivingEntity entity) { - return findOrCreateContainer(spiritweb.getLiving()); + return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null) + : LazyOptional.empty(); } - public static void clear() + @Nonnull + public static LazyOptional get(ItemStack stack) { - for(ICapabilitySerializable entry: containers.keySet()) - { - InvestitureContainer value = containers.get(entry); - if(value.lastAccessedTick > 20) - { - value.saveNBT(); - containers.remove(entry); - } - } - + return stack != null ? stack.getCapability(InvestitureContainer.CAPABILITY, null) + : LazyOptional.empty(); } - private final T parent; - - private CompoundTag nbt; - - public final List investitures = new ArrayList<>(); - public final List swInvestitures = new ArrayList<>(); - private int maxBEU; - private int lastAccessedTick; // Used for cleaning. If not accessed after several ticks, clear it out. + @Nonnull + public static LazyOptional get(BlockEntity entity) + { + return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null) + : LazyOptional.empty(); + } - private InvestitureContainer(T parent) + @Nonnull + public static LazyOptional get(net.minecraftforge.common.capabilities.CapabilityProvider object) { - this.parent = parent; - if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).resolve().isPresent()) + if(object instanceof LivingEntity entity) { - ISpiritweb web = SpiritwebCapability.get(entity).resolve().get(); - CompoundTag tag = web.getCompoundTag(); - if (tag.contains("investContainer")) - { - nbt = tag.getCompound("investContainer"); - deserializeNBT(nbt); - } - else - { - nbt = new CompoundTag(); - maxBEU = web.maxBEU(); - } + return get(entity); + } + else if(object instanceof ItemStack stack) + { + return get(stack); } - else if(this.parent instanceof LivingEntity entity) + else if(object instanceof BlockEntity entity) { - //todo: save nbt Data from living entity. + return get(entity); } - else if(this.parent instanceof ItemStack stack - && stack.getItem() instanceof InvestedItemBase itemBase) + else { - CompoundTag tag = stack.getOrCreateTag(); - if (tag.contains("investContainer")) + return object != null ? object.getCapability(InvestitureContainer.CAPABILITY, null) + : LazyOptional.empty(); + } + } + + @Override + public void tick() + { + //if server + if (!getEntityAssociate().level().isClientSide) + { + if(!didSetup) { - nbt = tag.getCompound("investContainer"); - deserializeNBT(nbt); + syncToClients(null); + didSetup = true; } - else + // Clean up and decay at the end of every other second + if(getEntityAssociate().tickCount % 40 == 39) { - nbt = new CompoundTag(); - maxBEU = itemBase.getMaxCharge(stack); + tickServer(); } } + else + { + tickClient(); + } } @Override - public T getParent() + public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) { - return parent; - } + if (parent != null && getEntityAssociate().level().isClientSide) + { + throw new IllegalStateException("Don't sync client -> server"); + } - public ISpiritweb getSpiritweb() - { - if(parent instanceof LivingEntity entity) + CompoundTag nbt = serializeNBT(); + + if (serverPlayerEntity == null) { - return SpiritwebCapability.get(entity).resolve().orElse(null); + Cosmere.packetHandler().sendToAllInWorld(new SyncPlayerInvestitureContainerMessage(this.getEntityAssociate().getId(), nbt), (ServerLevel) getEntityAssociate().level()); } - if(parent instanceof ItemStack stack) + else { - if(stack.getItem() instanceof IChargeable item) - { - UUID connection = item.getAttunedPlayer(stack); - Player player = null; - for(Level level: Minecraft.getInstance().level.getServer().getAllLevels()) - { - player = level.getPlayerByUUID(connection); - if(player != null) - { - return SpiritwebCapability.get(player).resolve().orElse(null); - } - } - - } + Cosmere.packetHandler().sendTo(new SyncPlayerInvestitureContainerMessage(this.getEntityAssociate().getId(), nbt), serverPlayerEntity); } - return null; } - public CompoundTag saveNBT() + @Override + public void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldInvContainer) { - serializeNBT(); - if(this.parent instanceof LivingEntity entity && SpiritwebCapability.get(entity).isPresent()) + + var oldContainer = (InvestitureContainer) oldInvContainer; + + //TODO config options that let you choose what can be transferred + + + //forcibly serialize the old web, then deserialize it into the new one + //before, it was just a copy of whatever was saved the last time it was synced. + deserializeNBT(oldContainer.serializeNBT().copy()); + + if (event.isWasDeath()) { - //spiritwebs manage their own containers, since it's accessed so much. - return nbt; + } - else if(this.parent instanceof LivingEntity entity) + } + + public void tickServer() + { + for(Investiture invest: investitures) { - //todo: attach nbt to entity - //entity. + invest.decay(); + if(invest.getBEU() <= 0) + { + investitures.remove(invest); + } } - else if(this.parent instanceof ItemStack stack - && stack.getItem() instanceof InvestedItemBase item) + + } + + public void tickClient() + { + //Anything on client side + //Later phase. + } + + + @Override + public T getParent() + { + return parent; + } + + @Override + public LazyOptional getSpiritweb() + { + if(parent instanceof LivingEntity ent) { - item.saveContainer(stack, nbt); - containers.remove(parent); - return nbt; + return SpiritwebCapability.get(ent); } - return nbt; + return LazyOptional.empty(); } + @Override public CompoundTag serializeNBT() { @@ -318,6 +352,17 @@ public int currentBEU() return sub; } + @Override + public int currentBEUDraw(List list) + { + int sub = 0; + for(Investiture invest: list) + { + sub += invest.getCurrentMaxDraw(); + } + return sub; + } + @Override public int getMaxBEU() { @@ -346,7 +391,7 @@ public InvHelpers.InvestitureSources containerSource() { return InvHelpers.InvestitureSources.SELF; } - else if(parent instanceof ItemStack stack) + else if(parent != null) { } @@ -355,17 +400,37 @@ else if(parent instanceof ItemStack stack) public int runInvestiturePull(Manifestation manifestation) { - ArrayList investitures = availableInvestitures(manifestation); + + /*Steps + 1. Available list of all investiture that can apply to input. + 2. Create an output variable. + 3. Sum max currently available + 4. If - sum is less than manifestation min + T. a. return 0. + 5. for 5x - Start at 1: + a. If - output >= manifestation max + T. a. break. + b. Temp list of all available with the given priority. + c. If - temp is empty + T. a. continue; + d. Find the max currently available beu's for the priority + e. Create temp variable. + f. If - the max currently available is less than or equal to manifestation max: + T. a. For - each in Temp list + i. add max currently available to temp + F. a. see below. + g. Add last pull to output. + 6. clean list. + 7. return output + */ + + + ArrayList availInvestitures = availableInvestitures(manifestation); int out = 0; //Test to see if the minimum amount of investiture is available //If not return - int possible = 0; - for(Investiture invest: investitures) - { - possible += invest.getBEU(); - } - if(possible < manifestation.minInvestitureDraw(this)) + if(currentBEUDraw(availInvestitures) < manifestation.minInvestitureDraw(getSpiritweb().resolve().get())) { return 0; } @@ -374,32 +439,36 @@ public int runInvestiturePull(Manifestation manifestation) //Loops through each priority for(int i = 1; i <= 5; i++) { + if(out > manifestation.maxInvestitureDraw(getSpiritweb().resolve().get())) + { + break; + } //Temporary list of values of given priority ArrayList temp = new ArrayList<>(); - int sub = 0; + int tempTotal = 0; + //Adds investitures to temporary list - for (Investiture invest : investitures) + for (Investiture invest : availInvestitures) { - // remove empty investitures + // remove empty investiture sets if(invest.getBEU() == 0) { - investitures.remove(invest); + availInvestitures.remove(invest); } - if(invest.getPriority() != i) + else if(invest.getPriority() == i) { - continue; + temp.add(invest); + tempTotal += invest.getBEU(); } - temp.add(invest); - sub += invest.getBEU(); } //Don't need to loop through an empty list. if(temp.isEmpty()) { continue; } - + int theoryMax = manifestation.maxInvestitureDraw(getSpiritweb().resolve().get()) - out; //If current total is less than max, pull all investiture from each source of the priority - if(sub + out <= manifestation.maxInvestitureDraw(this)) + if(tempTotal <= theoryMax) { for(Investiture invest: temp) { @@ -410,24 +479,23 @@ public int runInvestiturePull(Manifestation manifestation) //Else, pull a percentage relative to each investiture's total. else { - int sub2 = manifestation.maxInvestitureDraw(this) - out; - int sub3 = 0; + + int tempOut = 0; for(Investiture invest: temp) { - int toDraw = (invest.getBEU()/sub) * sub2; - sub3 += toDraw; - invest.removeBEU(toDraw); + int toDraw = (int) (((double)(invest.getBEU())/tempTotal) * theoryMax); + tempOut += invest.removeBEU(toDraw, true); } int index = 0; //Checking that investiture gets pulled correctly - while(sub3 < sub2) + while(tempOut < theoryMax) { Investiture invest = temp.get(index); if(invest.getBEU() > 0) { - sub3 += 1; - invest.removeBEU(1); + tempOut += 1; + invest.removeBEU(1, true); } if(invest.getBEU() == 0) { @@ -436,10 +504,21 @@ public int runInvestiturePull(Manifestation manifestation) index = index >= temp.size() ? 0 : index + 1; } - out += sub3; + out += tempOut; } } + clean(); return out; } + @Override + public Entity getEntityAssociate() + { + return entityAssociate; + } + @Override + public void setEntityAssociate(Entity entityAssociate) + { + this.entityAssociate = entityAssociate; + } } diff --git a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java index b4b2f9dda..7bf5d4d31 100644 --- a/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java +++ b/src/main/java/leaf/cosmere/common/items/ChargeableMetalCurioItem.java @@ -21,7 +21,7 @@ import java.util.List; -public class ChargeableMetalCurioItem extends ChargeableItemBase implements IHasMetalType, ICurioItem +public class ChargeableMetalCurioItem extends InvestableItemBase implements IHasMetalType, ICurioItem { private final Metals.MetalType metalType; diff --git a/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java new file mode 100644 index 000000000..97b65ac56 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java @@ -0,0 +1,197 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.Constants; +import leaf.cosmere.api.IHasMetalType; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.helpers.StackNBTHelper; +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.api.text.TextHelper; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.investiture.InvestitureContainer; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import net.minecraft.world.effect.MobEffect; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.registries.ForgeRegistries; +import org.jetbrains.annotations.NotNull; + +import java.util.List; +import java.util.Optional; +import java.util.UUID; + +public abstract class InvestableItemBase extends BaseItem +{ + public InvestableItemBase(Properties prop) + { + super(prop); + } + + public IInvContainer getAsContainer(ItemStack stack) + { + return InvestitureContainer.get(stack).isPresent() ? InvestitureContainer.get(stack).resolve().get() + : null; + } + + @Override + public int getEntityLifespan(ItemStack itemStack, Level world) + { + return Integer.MAX_VALUE; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + String attunedPlayerName = getAttunedPlayerName(stack); + UUID attunedPlayer = getAttunedPlayer(stack); + if (attunedPlayer != null) + { + tooltip.add(TextHelper.createText(attunedPlayerName)); + } + tooltip.add(TextHelper.createText(String.format("%s/%s", getCharge(stack), getMaxCharge(stack))).withStyle(ChatFormatting.GRAY)); + } + + @Override + public boolean isBarVisible(@NotNull ItemStack stack) + { + return getCharge(stack) > 1; + } + + public int getCharge(ItemStack stack, Manifestation manifest) + { + List temp = getAsContainer(stack).availableInvestitures(manifest); + return getAsContainer(stack).currentBEUDraw(temp); + } + public int getCharge(ItemStack stack) + { + return getAsContainer(stack).currentBEU(); + } + + public int getMaxCharge(ItemStack stack) + { + final int maxCharge = CosmereConfigs.SERVER_CONFIG.CHARGEABLE_MAX_VALUE.get(); + return Mth.floor(maxCharge * getMaxChargeModifier()) * stack.getCount(); + } + + public float getMaxChargeModifier() + { + return 1; + } + + public boolean trySetAttunedPlayer(ItemStack itemStack, Player entity) + { + if (itemStack.getItem() instanceof IHasMetalType metalType) + { + UUID attunedPlayerID = getAttunedPlayer(itemStack); + UUID playerID = entity.getUUID(); + boolean noAttunedPlayer = attunedPlayerID == null; + + //only allow unkeyed metalminds if they aren't aluminum + if (noAttunedPlayer && metalType.getMetalType() != Metals.MetalType.ALUMINUM) + { + //No attuned player! Check to see whether they are storing identity + boolean isStoringIdentity = false; + { + Optional data = SpiritwebCapability.get(entity).filter(obj -> true); + if (data.isPresent()) { + isStoringIdentity = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(Metals.MetalType.ALUMINUM.getID()).getMode(data.get()) > 0; + } + } + + //if they are + if (isStoringIdentity) + { + //then set the metalmind to "unsealed". Any feruchemist with access to that power can use the metalmind + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, Constants.NBT.UNKEYED_UUID); + StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, "Unkeyed"); // todo translation + return true; + + } + } + + //if theres no attuned player on the metalmind + //or if the player is attuned to the metalmind + //or if the metalmind is unsealed (anyone can access) + if (noAttunedPlayer || attunedPlayerID.compareTo(playerID) == 0 || attunedPlayerID.compareTo(Constants.NBT.UNKEYED_UUID) == 0) + { + if (noAttunedPlayer && getCharge(itemStack) > 0) + { + setAttunedPlayer(itemStack, entity); + setAttunedPlayerName(itemStack, entity); + } + //auto success if that player is already attuned + return true; + } + + } + return false; + } + + private void setAttunedPlayer(ItemStack itemStack, Player entity) + { + StackNBTHelper.setUuid(itemStack, Constants.NBT.ATTUNED_PLAYER, entity.getUUID()); + } + + protected UUID getAttunedPlayer(ItemStack itemStack) + { + return StackNBTHelper.getUuid(itemStack, Constants.NBT.ATTUNED_PLAYER); + } + + private void setAttunedPlayerName(ItemStack itemStack, Player entity) + { + String playerName = entity.getDisplayName().getString(); + StackNBTHelper.setString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, playerName); + } + + protected String getAttunedPlayerName(ItemStack itemStack) + { + return StackNBTHelper.getString(itemStack, Constants.NBT.ATTUNED_PLAYER_NAME, ""); + } + + public boolean getPlayerIsAttuned(ItemStack itemStack, Player entity) + { + //todo clean up + final MobEffect aluminumStoreEffect = ForgeRegistries.MOB_EFFECTS.getValue(new ResourceLocation("feruchemy", "storing_" + Metals.MetalType.ALUMINUM.getName())); + assert aluminumStoreEffect != null; + MobEffectInstance storingIdentityEffect = entity.getEffect(aluminumStoreEffect); + boolean noIdentityPlayer = storingIdentityEffect != null && storingIdentityEffect.getDuration() > 0; + + UUID itemAttunedPlayerUUID = getAttunedPlayer(itemStack); + //null means not attuned at all, so can assume player is attuned with it + return noIdentityPlayer || itemAttunedPlayerUUID == null || itemAttunedPlayerUUID == entity.getUUID(); + } + @Override + public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) + { + InvestitureContainer.get(stack).ifPresent(cap -> + { + cap.setEntityAssociate(entityItem); + }); + return super.onEntityItemUpdate(stack, entityItem); + } + + @Override + public void inventoryTick(ItemStack stack, Level level, Entity entity, int slot, boolean selected) + { + InvestitureContainer.get(stack).ifPresent(cap -> + { + cap.setEntityAssociate(entity); + }); + super.inventoryTick(stack, level, entity, slot, selected); + } +} diff --git a/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java deleted file mode 100644 index ffb473dfb..000000000 --- a/src/main/java/leaf/cosmere/common/items/InvestedItemBase.java +++ /dev/null @@ -1,28 +0,0 @@ -/* -* File updated ~ 15 - 9 - 25 ~ Soar - */ -package leaf.cosmere.common.items; - -import leaf.cosmere.api.helpers.StackNBTHelper; -import leaf.cosmere.common.investiture.InvestitureContainer; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.item.ItemStack; - -public abstract class InvestedItemBase extends ChargeableItemBase -{ - public InvestedItemBase(Properties properties) - { - super(properties); - } - - public InvestitureContainer getContainer(ItemStack stack) - { - return InvestitureContainer.findOrCreateContainer(stack); - } - - public void saveContainer(ItemStack stack, CompoundTag tag) - { - StackNBTHelper.set(stack, "investContainer", tag); - } - -} diff --git a/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java new file mode 100644 index 000000000..d5c7a80d8 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java @@ -0,0 +1,55 @@ +/* + * File updated ~ 24 - 4 - 2021 ~ Leaf + */ + +package leaf.cosmere.common.network.packets; + +import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.investiture.InvestitureContainer; +import leaf.cosmere.common.network.ICosmerePacket; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraftforge.network.NetworkEvent; + +public class SyncPlayerInvestitureContainerMessage implements ICosmerePacket +{ + public int entityID; + public CompoundTag entityNBT; + + public SyncPlayerInvestitureContainerMessage(int entityID, CompoundTag entityNBT) + { + this.entityID = entityID; + this.entityNBT = entityNBT; + } + + @Override + public void encode(FriendlyByteBuf buf) + { + buf.writeInt(entityID); + buf.writeNbt(entityNBT); + } + + public static SyncPlayerInvestitureContainerMessage decode(FriendlyByteBuf buf) + { + return new SyncPlayerInvestitureContainerMessage(buf.readInt(), buf.readNbt()); + } + + @Override + public void handle(NetworkEvent.Context cont) + { + Entity result = Minecraft.getInstance().level.getEntity(entityID); + if (result != null) + { + InvestitureContainer.get((LivingEntity) result).ifPresent((c) -> + { + c.deserializeNBT(entityNBT); + c.getEntity().refreshDimensions(); + }); + + } + } + +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java index d2d32ef58..6db0229d6 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java @@ -2,26 +2,68 @@ import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.IInvCreator; +import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; +import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; public class Highstorm implements IInvCreator { + double x; + public Highstorm(double x) + { + this.x = x; + } + + //temp public Highstorm() { } - - public boolean isHighstorm(Vec3 position) +/* + public boolean isHighstorm(Entity entity) { - //todo: Highstorm Logic - return true; + if(entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + { + if(Math.abs(entity.position().x - this.x) < 20.0) + { + return true; + } + } + } + */ + public boolean isHighstorm(Entity entity) + { + if (entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + { + if (entity.level().isRainingAt(entity.blockPosition()) && entity.level().isThundering()) + { + return true; + } + } + return false; } @Override - public Investiture newInvest(IInvContainer data) + public Investiture newInvest(IInvContainer data) { Investiture investiture = new Stormlight(data, 500); return investiture; } + + @Override + public Investiture newInvest(IInvContainer data, int beu, int decay) + { + Investiture out = new Stormlight(data, beu); + out.setDecayRate(decay); + return out; + } + + @Override + public Investiture newInvest(IInvContainer data, int beu) + { + return new Stormlight(data, beu); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java new file mode 100644 index 000000000..1101c080d --- /dev/null +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java @@ -0,0 +1,15 @@ +package leaf.cosmere.surgebinding.common.investiture; + +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.Transferer; +import leaf.cosmere.api.manifestation.Manifestation; + +public class LightTransferer extends Transferer +{ + public LightTransferer(Investiture investIn, IInvContainer containerOut, int transferRate, int decayRate, int cycles) + { + super(investIn, new Stormlight(containerOut, transferRate), transferRate, cycles); + } +} diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index 1dbf88f26..9d363984d 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -22,7 +22,7 @@ public Stormlight(IInvContainer container, int decayRate; if(container.getParent() instanceof LivingEntity) { - ISpiritweb sw = container.getSpiritweb(); + ISpiritweb sw = container.getSpiritweb().resolve().get(); SurgebindingSpiritwebSubmodule ssm = (SurgebindingSpiritwebSubmodule) sw.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); decayRate = (6 - ssm.getIdeal()) * SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get() / 2; } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java index 49363ad42..d6393e5e8 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java @@ -7,12 +7,16 @@ import leaf.cosmere.api.IHasGemType; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Roshar; +import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.investiture.Transferer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.ChargeableItemBase; +import leaf.cosmere.common.items.InvestableItemBase; import leaf.cosmere.common.properties.PropTypes; -import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; -import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; +import leaf.cosmere.surgebinding.common.investiture.Highstorm; +import leaf.cosmere.surgebinding.common.investiture.LightTransferer; +import leaf.cosmere.surgebinding.common.investiture.Stormlight; import leaf.cosmere.surgebinding.common.registries.SurgebindingManifestations; import net.minecraft.util.Mth; import net.minecraft.world.InteractionHand; @@ -24,7 +28,7 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.level.Level; -public class GemstoneItem extends ChargeableItemBase implements IHasGemType +public class GemstoneItem extends InvestableItemBase implements IHasGemType { private final Roshar.Gemstone gemstone; private final Roshar.GemSize gemSize; @@ -63,33 +67,28 @@ public Roshar.GemSize getSize() @Override public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) { - if (entityItem.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + Highstorm highstorm = new Highstorm(); + if(highstorm.isHighstorm(entityItem)) { - if (entityItem.level().isRainingAt(entityItem.blockPosition()) && entityItem.level().isThundering()) - { if (getCharge(stack) < getMaxCharge(stack)) { //gemstones charge faster in the world - this.increaseCurrentCharge(stack, 5); + highstorm.newInvest(getAsContainer(stack), 10); } - } } + return super.onEntityItemUpdate(stack, entityItem); } @Override public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pItemSlot, boolean pIsSelected) { - if (!pLevel.dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) - { - return; - } - - if (pLevel.isRainingAt(pEntity.blockPosition()) && pLevel.isThundering()) + Highstorm storm = new Highstorm(); + if (storm.isHighstorm(pEntity)) { if (pStack.getItem() instanceof GemstoneItem gemstoneItem) { - gemstoneItem.increaseCurrentCharge(pStack); + storm.newInvest(getAsContainer(pStack), 5); } } @@ -109,6 +108,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte SpiritwebCapability.get(pPlayer).ifPresent(spiritweb -> { SpiritwebCapability data = (SpiritwebCapability) spiritweb; + IInvContainer playerContainer = data.getInvestitureContainer(); boolean hasAnySurgebinding = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); @@ -119,45 +119,53 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte final int charge = getCharge(itemStack); + /* Old code SurgebindingSpiritwebSubmodule sb = (SurgebindingSpiritwebSubmodule) data.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); int playerStormlight = sb.getStormlight(); + */ + final int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); + Stormlight invest = (Stormlight) (playerContainer.findInvestiture(Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING))); + Stormlight gemInvest = (Stormlight) (getAsContainer(itemStack).findInvestiture(Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING))); + + //Get stormlight from gems if (!pPlayer.isCrouching()) { //if charge is less than max stormlight, put all charge into player. - final int attemptedTotal = charge + playerStormlight; + + + final int attemptedTotal = charge + invest.getBEU(); if (attemptedTotal <= maxPlayerStormlight) { - sb.adjustStormlight(charge, true); - setCharge(itemStack, 0); + Transferer gemTransfer = new LightTransferer(gemInvest, playerContainer, 400, 0, Integer.MAX_VALUE); } else { int remainder = attemptedTotal - maxPlayerStormlight; final int chargeLevelUsed = charge - remainder; - sb.adjustStormlight(chargeLevelUsed, true); - adjustCharge(itemStack, -chargeLevelUsed); + Transferer gemTransfer = new Transferer(gemInvest, playerContainer, 400, 0, Integer.MAX_VALUE); + gemTransfer.setKillAmount(chargeLevelUsed); } } //put remaining stormlight into gem. else { - if (playerStormlight > 0) + if (invest.getBEU() > 0) { - if ((charge + playerStormlight) > getMaxCharge(itemStack)) + if ((charge + invest.getBEU()) > getMaxCharge(itemStack)) { - sb.adjustStormlight(-(getMaxCharge(itemStack) - charge), true); - setCharge(itemStack, getMaxCharge(itemStack)); + Transferer transferer = new LightTransferer(invest, getAsContainer(itemStack), 1000, 0, Integer.MAX_VALUE); + transferer.setKillAmount(getMaxCharge(itemStack) - charge); } else { - sb.adjustStormlight(-playerStormlight, true); - setCharge(itemStack, (short) (playerStormlight + charge)); + Transferer transferer = new LightTransferer(invest, getAsContainer(itemStack), 1000, 0, Integer.MAX_VALUE); + transferer.setKillAmount(getMaxCharge(itemStack) - charge); } } } From 72cf5b72bb5d46834b34eb1294e5ffd84212049c Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 6 Oct 2025 17:50:22 -0600 Subject: [PATCH 1027/1090] Power Activator Bug Fixes and Chat Config. --- .../leaf/cosmere/client/PowerSaveState.java | 29 ++++++++++++++----- .../common/config/CosmereClientConfig.java | 2 ++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java index d501f4080..fffbf43cf 100644 --- a/src/main/java/leaf/cosmere/client/PowerSaveState.java +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -8,17 +8,19 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.config.CosmereClientConfig; +import leaf.cosmere.common.config.CosmereConfigs; import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.common.registry.ManifestationRegistry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import org.checkerframework.checker.units.qual.C; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; +import java.util.*; public class PowerSaveState { @@ -101,6 +103,11 @@ public void activate(ISpiritweb spiritweb) Cosmere.packetHandler().sendToServer(new ChangeManifestationModeMessage(manifestation, modifier)); } + if(CosmereConfigs.CLIENT_CONFIG.disableActivatorChatMessage.get()) + { + return; + } + if(toActivate) { spiritweb.getLiving().sendSystemMessage(Component.literal("Activating " + getName())); @@ -110,16 +117,25 @@ public void activate(ISpiritweb spiritweb) spiritweb.getLiving().sendSystemMessage(Component.literal("Deactivating " + getName())); } manifestations.keySet().forEach((manifest) -> - spiritweb.getLiving() + + + spiritweb.getLiving() .sendSystemMessage(Component.literal( Component.translatable( manifest.getTranslationKey() - ).getString() + ": " + manifest.getMode(spiritweb)))); + ).getString() + ": " + (toActivate ? manifestations.get(manifest) : 0) + )) + ); + } public void addManifestations(ISpiritweb spiritweb) { manifestations = spiritweb.getManifestations(false, true); + if(CosmereConfigs.CLIENT_CONFIG.disableActivatorChatMessage.get()) + { + return; + } spiritweb.getLiving().sendSystemMessage(Component.literal("Saved new " + getName())); manifestations.forEach((manifestation, integer) -> spiritweb.getLiving() @@ -135,7 +151,6 @@ private void setManifestations(HashMap manifestations) { this.manifestations = manifestations; } - } private static Map.@Nullable Entry getEntry(@NotNull Map map, Manifestation manifestation) diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index 67dd35ca7..5ea87731f 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -15,6 +15,7 @@ public class CosmereClientConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue hudXCoordinate; public final ForgeConfigSpec.IntValue hudYCoordinate; public final ForgeConfigSpec.IntValue hudSize; + public final ForgeConfigSpec.BooleanValue disableActivatorChatMessage; CosmereClientConfig() @@ -30,6 +31,7 @@ public class CosmereClientConfig implements ICosmereConfig hudYCoordinate = builder.comment("Y coordinate for the HUD").defineInRange("hudYCoordinate", 20, 0, Integer.MAX_VALUE); hudSize = builder.comment("Size of the icon in the HUD; both width and height").defineInRange("hudSize", 40, 0, Integer.MAX_VALUE); + disableActivatorChatMessage = builder.comment("Disables the chat message alerting you when you active or save a power state").define("disableActivatorChatMessage", false); builder.pop(); configSpec = builder.build(); } From 04dfbab054014e5b11728914535be186c596b3e9 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 6 Oct 2025 18:14:44 -0600 Subject: [PATCH 1028/1090] remove unused imports --- src/main/java/leaf/cosmere/client/PowerSaveState.java | 6 +----- .../leaf/cosmere/common/config/CosmereClientConfig.java | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/client/PowerSaveState.java b/src/main/java/leaf/cosmere/client/PowerSaveState.java index fffbf43cf..2f04a3eb3 100644 --- a/src/main/java/leaf/cosmere/client/PowerSaveState.java +++ b/src/main/java/leaf/cosmere/client/PowerSaveState.java @@ -1,5 +1,5 @@ /* - * File created ~ 2 - 5 - 2025 ~ SoaringEaqle + * File updated ~ 10 - 6 - 2025 ~ SoaringEaqle */ package leaf.cosmere.client; @@ -8,15 +8,11 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.config.CosmereClientConfig; import leaf.cosmere.common.config.CosmereConfigs; import leaf.cosmere.common.network.packets.ChangeManifestationModeMessage; import leaf.cosmere.common.registry.ManifestationRegistry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; -import net.minecraftforge.event.TickEvent; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import org.checkerframework.checker.units.qual.C; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java index 5ea87731f..b0a267352 100644 --- a/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java +++ b/src/main/java/leaf/cosmere/common/config/CosmereClientConfig.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 3 - 2025 ~ Leaf + * File updated ~ 10 - 6 - 2025 ~ Soar */ package leaf.cosmere.common.config; From 65fac88454f225fe6b0953970ed6767386ac8a5f Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Fri, 24 Oct 2025 15:55:47 -0600 Subject: [PATCH 1029/1090] Investiture v0.5.4 New processes --- .DS_Store | Bin 0 -> 6148 bytes src/.DS_Store | Bin 0 -> 6148 bytes .../common/manifestation/AllomancyAtium.java | 1 - .../manifestation/AllomancyBendalloy.java | 4 +- .../common/manifestation/AllomancyBrass.java | 27 ++ .../manifestation/AllomancyManifestation.java | 41 +-- src/api/.DS_Store | Bin 0 -> 6148 bytes src/api/java/.DS_Store | Bin 0 -> 6148 bytes src/api/java/leaf/.DS_Store | Bin 0 -> 6148 bytes src/api/java/leaf/cosmere/.DS_Store | Bin 0 -> 6148 bytes src/api/java/leaf/cosmere/api/EnumUtils.java | 2 +- .../leaf/cosmere/api/helpers/TimeHelper.java | 61 +++++ .../api/investiture/IInfuseContainer.java | 36 +++ .../api/investiture/IInvContainer.java | 35 +-- .../cosmere/api/investiture/IInvCreator.java | 12 +- .../cosmere/api/investiture/IInvestiture.java | 16 +- .../cosmere/api/investiture/InvHelpers.java | 58 +++-- ...vestiture.java => KineticInvestiture.java} | 160 ++++++------ .../api/investiture/SpiritwebInvestiture.java | 73 +++--- .../cosmere/api/investiture/Transferer.java | 43 +++- .../api/manifestation/Manifestation.java | 9 +- .../cosmere/common/cap/InfusionContainer.java | 233 +++++++++++++++++ .../entity}/InvestitureContainer.java | 220 +++++++--------- .../cap/entity/SpiritwebCapability.java | 1 - .../common/effects/FillInvestitureEffect.java | 5 + .../eventHandlers/CapabilitiesHandler.java | 21 +- .../cosmere/common/investiture/Infusion.java | 235 ++++++++++++++++++ .../common/items/InvestableItemBase.java | 17 +- ...SyncPlayerInvestitureContainerMessage.java | 3 +- .../investiture/SandmasteryInvestiture.java | 8 +- .../common/investiture/Highstorm.java | 114 +++++++-- .../common/investiture/LightTransferer.java | 33 ++- .../common/investiture/Stormlight.java | 8 +- .../common/investiture/Towerlight.java | 8 +- .../common/investiture/Voidlight.java | 8 +- .../common/items/GemstoneItem.java | 28 +-- 36 files changed, 1054 insertions(+), 466 deletions(-) create mode 100644 .DS_Store create mode 100644 src/.DS_Store create mode 100644 src/api/.DS_Store create mode 100644 src/api/java/.DS_Store create mode 100644 src/api/java/leaf/.DS_Store create mode 100644 src/api/java/leaf/cosmere/.DS_Store create mode 100644 src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java rename src/api/java/leaf/cosmere/api/investiture/{Investiture.java => KineticInvestiture.java} (64%) create mode 100644 src/main/java/leaf/cosmere/common/cap/InfusionContainer.java rename src/main/java/leaf/cosmere/common/{investiture => cap/entity}/InvestitureContainer.java (62%) create mode 100644 src/main/java/leaf/cosmere/common/effects/FillInvestitureEffect.java create mode 100644 src/main/java/leaf/cosmere/common/investiture/Infusion.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5ad21b5f75e4c41e844c96fd58890594bde1e33a GIT binary patch literal 6148 zcmeHKIc~#13>?NnU?7dll>3GJU|~2f$On>0b{ZoBBDhzVZ)bQIkRYf{VUqxNv_n$I z6iX3+>@VF5umiBAE8Kq`<5qynkHiUQFmw@)kaq*H-Z;C>a*^P$icYvAZ; zM+X-h0f_n=Z^mnzC5S}{VhtP}$B|4Lt(|K~-yO9fJan^HiU!`orcPm12U_&Dvgh5k;z8gnh3 mi?w2+wPJ3x6+ch%ie58b14lbg(4RK literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..55f1f5f8f787309746304b694d0d6753e682d935 GIT binary patch literal 6148 zcmeH~JqiLr422W55Nx)zoW=uqgF*BJUcf&DK~NC;Il3=DjjOdR@&d^>$!yr&SL|#= zL|4z#Qlt}+DcmRv3q4chW7*4HF6YzZc(~oJR&pC9tpM+&x1ZYt6`%rCfC^9nDli}g z@*tni2J}pP6e>UkhM|Cc9}3)9lP&0<4g?uRzEqg^zI56wHPO))TycF}?arq#hf1*kwzfpO%Wo&Ov7xB0) entitiesToAffect = playerThreadMap.get(uuid).requestEntityList(); for (LivingEntity e : entitiesToAffect) { - e.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SLOWDOWN, InvHelpers.Math.beuToPower(invest))); + e.addEffect(EffectsHelper.getNewEffect(MobEffects.MOVEMENT_SLOWDOWN, InvHelpers.InvMath.beuToPower(invest))); } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java index 0973d9361..0517ccfa7 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java @@ -67,6 +67,8 @@ private void performEffectServer(ISpiritweb data) String uuid = data.getLiving().getStringUUID(); AllomancyBrass.BrassThread playerThread = playerThreadMap.get(data.getLiving().getStringUUID()); boolean isSingleTarget = false; + + if (playerThread != null) { isSingleTarget = playerThread.isSingleTarget; @@ -83,6 +85,8 @@ private void performEffectServer(ISpiritweb data) //todo, replace x * mode with config based value double allomanticStrength = getStrength(data, false); + int investiture = data.getInvestitureContainer().runInvestiturePull(this); + if (playerThreadMap.get(uuid) == null) { playerThreadMap.put(uuid, new BrassThread(data)); @@ -105,8 +109,10 @@ private void performEffectServer(ISpiritweb data) for (LivingEntity e : entitiesToAffect) { + if (e instanceof Mob mob) { + /* switch (mode) { case 2: @@ -122,7 +128,28 @@ private void performEffectServer(ISpiritweb data) default://stop angry targets from attacking things mob.setLastHurtByMob(null); } + */ + if(investiture >= beuGrantAmount(data, 2)) + { + if (allomanticStrength > 15) + mob.addEffect(EffectsHelper.getNewEffect( + AllomancyEffects.ALLOMANTIC_BRASS_STUN.getMobEffect(), + 0, // no amplification system in place + 20 * 5 + )); + mob.setTarget(null); + } + if(investiture >= beuGrantAmount(data, 1)) + { + mob.setAggressive(false); + } + if(investiture >= beuGrantAmount(data, 0)) + { + mob.setLastHurtByMob(null); + } } + + } if (!isSingleTarget) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index d4bb9c760..5069c74a1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -8,15 +8,11 @@ import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.allomancy.common.registries.AllomancyStats; import leaf.cosmere.api.*; -import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.charge.MetalmindChargeHelper; -import leaf.cosmere.api.investiture.IInvCreator; -import leaf.cosmere.api.investiture.Investiture; import net.minecraft.client.KeyMapping; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerPlayer; @@ -288,9 +284,24 @@ public int minInvestitureDraw(ISpiritweb data) public final Manifestation[] appManifestComp = Manifestations.ManifestArrayBuilder.getAllMetal(this.getMetalType()); + public int beuGrantAmount(ISpiritweb web, int mode) + { + double strength = getStrength(web, false); + double baseStrength = getStrength(web, true); + + int beu = 50 + Mth.floor(strength) + Mth.floor(baseStrength); + beu *= Math.abs(mode); + + return beu; + } + + public int beuGrantAmount(ISpiritweb web) + { + return beuGrantAmount(web, getMode(web)); + } @Override - public Investiture newInvest(IInvContainer data) + public KineticInvestiture newInvest(IInfuseContainer data) { ISpiritweb web; @@ -302,15 +313,9 @@ public Investiture newInvest(IInvContainer data) { return null; } - double strength = getStrength(web, false); - double baseStrength = getStrength(web, true); //gets investiture - int beu = 50 + Mth.floor(strength) + Mth.floor(baseStrength); - if(isFlaring(web)) - { - beu *= 2; - } + int beu = beuGrantAmount(web); Manifestation[] appManifest; if(isCompounding(web)) @@ -321,10 +326,10 @@ public Investiture newInvest(IInvContainer data) { appManifest = Manifestations.ManifestArrayBuilder.getArray(this); } - Investiture sub = new Investiture( + KineticInvestiture sub = new KineticInvestiture( data, - InvHelpers.Shards.PRESERVATION, - InvHelpers.InvestitureSources.DIRECT, + InvHelpers.Shard.PRESERVATION, + InvHelpers.InvestitureSource.DIRECT, beu, appManifest); sub.setPriority(5); @@ -332,13 +337,13 @@ public Investiture newInvest(IInvContainer data) } @Override - public Investiture newInvest(IInvContainer data, int beu, int decay) + public KineticInvestiture newInvest(IInfuseContainer data, double beu, double decay) { return newInvest(data); } @Override - public Investiture newInvest(IInvContainer data, int beu) + public KineticInvestiture newInvest(IInfuseContainer data, double beu) { return newInvest(data); } diff --git a/src/api/.DS_Store b/src/api/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..db5230729bac487d668cd322e4d37e689eaf857b GIT binary patch literal 6148 zcmeH~F>V4u3`M_T3nZE?Q%=JHxWNd)337ozPzn@@0zo}T=iB2Zo789(eM|Nmd)C_B zU+k;_*zSJb0waJG-HDBdi5c?&7aZ}x@#}p1JYBEfUZgEL;3<8?WIwkBDIf);fE17d zQeZ|3$ccLbDoBkOER*qQJ7}qo4l=`d{<^q(!L| zkOKcq0UP%3`yF2@&(>eB=k<@Q`nu7{xSZj~PXH4?ir?sA+%LW$YqE8+Leq~x$eguHEZN`K6D!Fp zGBE(#{9e9*5x|n}#M;BejQM~YzH!9$dign@?)RG)X&)W%ls;mzpWA{IkOERb3P=Gd zFe3%>7+-$Q=$Z5=Qa}pKLjnIj6uPq}TW5Sa7-9q<2bROQj#+{%ULb3-b+SUUoE|J& zEyfV9M>|>ax|(dAy&aarhvl8krx=>`c35FTvl>v40#ab2z@q1)pZ`1hfAjyOMX3~! z0&k{(4cq;8!%ZI7?zWc=PDq=)B&p6-%hu8ga_cBbf{|-3!0Xqyh;{7*& zc=Iip6p#W^Knh3!DR5y0s=&@4FMO_!lLAuU_7(8&L!&$P!Z9&E9UP(sAkG*L<2-r^ zV)Fp87mkUH&@8FMq*}EYmUPBj<@LfbG3l^sKCEuG>QF3h=lLztVLef!6p#X^3f$*% z;q`w*Khyu8lC+WnQs7@HV6*jhz2cLqwoV@BwYJfp>7MgVcjG)L9HJZ(qa1VL<#-uM bnb&;I{a!dG2A%Ps6ZJFTy2zx!wH5dQTMHF^ literal 0 HcmV?d00001 diff --git a/src/api/java/leaf/cosmere/.DS_Store b/src/api/java/leaf/cosmere/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..55f1f5f8f787309746304b694d0d6753e682d935 GIT binary patch literal 6148 zcmeH~JqiLr422W55Nx)zoW=uqgF*BJUcf&DK~NC;Il3=DjjOdR@&d^>$!yr&SL|#= zL|4z#Qlt}+DcmRv3q4chW7*4HF6YzZc(~oJR&pC9tpM+&x1ZYt6`%rCfC^9nDli}g z@*tni2J}pP6e>UkhM|Cc9}3)9lP&0<4g?uRzEqg^zI56wHPO))TycF}?arq#hf1*kwzfpO%Wo&Ov7xB0) pDimension) + { + return Minecraft.getInstance().level.getServer().getLevel(pDimension).getGameTime(); + } + + public static long getTick(LivingEntity entity) + { + return entity.tickCount; + } + + public static boolean isNthTick(long tick, int n, double ofNumSeconds) + { + return tick % SecondsToTicks(ofNumSeconds) == n; + } + + public static boolean isNthTick(ResourceKey pDimension, int n, double ofNumSeconds) + { + return isNthTick(getTick(pDimension), n, ofNumSeconds); + } + + public static boolean isNthTick(LivingEntity entity, int n, double ofNumSeconds) + { + return isNthTick(getTick(entity), n, ofNumSeconds); + } + + public static boolean isNthTick(long tick, int n) + { + return isNthTick(tick, n, 1D); + } + + public static boolean isNthTick(ResourceKey pDimension, int n) + { + return isNthTick(pDimension, n, 1D); + } + + public static boolean isNthTick(LivingEntity entity, int n) + { + return isNthTick(entity, n, 1D); + } } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java new file mode 100644 index 000000000..d78ef73d7 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java @@ -0,0 +1,36 @@ +package leaf.cosmere.api.investiture; + +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraftforge.common.capabilities.CapabilityProvider; +import net.minecraftforge.common.util.INBTSerializable; + +import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Set; + +public interface IInfuseContainer> extends INBTSerializable +{ + T getParent(); + + Entity getEntityAssociate(); + void setEntityAssociate(Entity entityAssociate); + + double currentBEU(); + + double getMaxBEU(); + void setMaxBEU(double maxBEU); + + Set availableInvestitures(Manifestation manifest); + + void mergeOrAddInvestiture(IInvestiture invest); + + void clean(); + + InvHelpers.InvestitureSource containerSource(); + + void tick(); + void syncToClients(@Nullable ServerPlayer serverPlayerEntity); +} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java index 4495e31fe..dfc530766 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java @@ -2,48 +2,23 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; -import net.minecraftforge.common.util.INBTSerializable; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.player.PlayerEvent; -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -public interface IInvContainer extends INBTSerializable +public interface IInvContainer extends IInfuseContainer { - - T getParent(); LazyOptional getSpiritweb(); - Entity getEntityAssociate(); - void setEntityAssociate(Entity entityAssociate); - - ArrayList availableInvestitures(Manifestation manifest); - void mergeOrAddInvestiture(IInvestiture invest); - Investiture findInvestiture(Manifestation[] appManifest); - boolean hasInvestiture(Investiture investiture); - int currentBEU(); - int currentBEUDraw(List list); - int getMaxBEU(); - void setMaxBEU(int maxBEU); - void clean(); + KineticInvestiture findInvestiture(Manifestation[] appManifest); + boolean hasInvestiture(KineticInvestiture investiture); - InvHelpers.InvestitureSources containerSource(); + //int currentBEUDraw(List list); - int runInvestiturePull(Manifestation manifestation); + double runInvestiturePull(Manifestation manifestation); - void tick(); - void syncToClients(@Nullable ServerPlayer serverPlayerEntity); void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldContainer); diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java index fa9c69982..768fdb73d 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java @@ -1,23 +1,21 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.spiritweb.ISpiritweb; public interface IInvCreator //Used when creating new investiture //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. - //todo: make this { - default Investiture newInvest(IInvContainer data) + default KineticInvestiture newInvest(IInfuseContainer data) { - return new Investiture(data, InvHelpers.Shards.PURE, - InvHelpers.InvestitureSources.DIRECT, + return new KineticInvestiture(data, InvHelpers.Shard.PURE, + InvHelpers.InvestitureSource.DIRECT, data.getMaxBEU()-data.currentBEU(), Manifestations.ManifestArrayBuilder.getAll()); } - Investiture newInvest(IInvContainer data, int beu, int decay); + KineticInvestiture newInvest(IInfuseContainer data, double beu, double decay); - Investiture newInvest(IInvContainer data, int beu); + KineticInvestiture newInvest(IInfuseContainer data, double beu); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index df237dbc2..560869885 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -1,23 +1,27 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.nbt.CompoundTag; public interface IInvestiture { - int getBEU(); + double getBEU(); - void setBEU(int beu); + void setBEU(double beu); Manifestation[] getApplicableManifestations(); - InvHelpers.Shards getShard(); + InvHelpers.Shard getShard(); - InvHelpers.InvestitureSources getSource(); + InvHelpers.InvestitureSource getSource(); - IInvContainer getContainer(); + IInfuseContainer getContainer(); - int getCurrentMaxDraw(); + double getCurrentMaxDraw(); void calculateCurrentMaxDraw(); + CompoundTag serializeNBT(); + void deserializeNBT(CompoundTag nbt); + } diff --git a/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java index fc8edd7d8..9aa137419 100644 --- a/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java +++ b/src/api/java/leaf/cosmere/api/investiture/InvHelpers.java @@ -8,7 +8,6 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.manifestation.Manifestation; import net.minecraft.client.Minecraft; -import net.minecraft.server.MinecraftServer; import net.minecraftforge.eventbus.api.SubscribeEvent; import java.util.Arrays; @@ -18,7 +17,7 @@ public class InvHelpers { - public enum Shards + public enum Shard { NONE(0), AUTONOMY(1), @@ -46,12 +45,12 @@ public enum Shards final int id; - Shards(int number) + Shard(int number) { this.id = number; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -68,15 +67,15 @@ public String getName() return name().toLowerCase(Locale.ROOT); } - public Shards[] getComponentShards() + public Shard[] getComponentShards() { return switch (this) { - case DOR -> new Shards[]{DEVOTION, DOMINION}; - case HARMONY -> new Shards[]{RUIN, PRESERVATION}; - case RETRIBUTION -> new Shards[]{HONOR, ODIUM}; + case DOR -> new Shard[]{DEVOTION, DOMINION}; + case HARMONY -> new Shard[]{RUIN, PRESERVATION}; + case RETRIBUTION -> new Shard[]{HONOR, ODIUM}; case PURE -> EnumUtils.SHARDS; - default -> new Shards[]{this}; + default -> new Shard[]{this}; }; } @@ -96,12 +95,12 @@ public Manifestations.ManifestationTypes getManifestationType() }; } - public static Shards getShardOfManifest(Manifestation manifestation) + public static Shard getShardOfManifest(Manifestation manifestation) { return getShardOfManifest(manifestation.getManifestationType()); } - public static Shards getShardOfManifest(Manifestations.ManifestationTypes manifestationT) + public static Shard getShardOfManifest(Manifestations.ManifestationTypes manifestationT) { return switch (manifestationT) { @@ -116,7 +115,7 @@ public static Shards getShardOfManifest(Manifestations.ManifestationTypes manife } } // All possible sources for gaining kinetic investiture - public enum InvestitureSources + public enum InvestitureSource { DIRECT(0), MISTS(1), @@ -131,12 +130,12 @@ public enum InvestitureSources final int id; - InvestitureSources(int id) + InvestitureSource(int id) { this.id = id; } - public static Optional valueOf(int value) + public static Optional valueOf(int value) { return Arrays.stream(values()) .filter(shard -> shard.id == value) @@ -155,11 +154,11 @@ public String getName() } - public static class Math + public static class InvMath { - public static double beuToStrength(int beu) + public static double beuToStrength(double beu) { - return (double) beu /Constants.beuStrengthRatio; + return beu /Constants.beuStrengthRatio; } public static int strengthToBEU(double strength) @@ -167,12 +166,12 @@ public static int strengthToBEU(double strength) return (int) (strength*Constants.beuStrengthRatio); } - public static int beuToPower(int beu) + public static int beuToPower(double beu) { - return beu/Constants.beuPowerRatio; + return (int) (beu/Constants.beuPowerRatio); } - public static int powerToBEU(int power) + public static double powerToBEU(int power) { return power * Constants.beuPowerRatio; } @@ -182,16 +181,15 @@ public static int powerToBEU(int power) public static class Constants { //Tick Counters - //Any manifestations that activate on ticks 3,0, or 1 get free activation until tick 2. - //During this tick, investiture is collected and filled. All movement of investiture objects is handled this tick. - public static final int collectionTick = 0; - //Investiture gets managed. Sources and Investiture are merged and/or deleted as fit - public static final int mangagementTick = 1; - //Manifestations check how much investiture they need and if all sources have the required amount. - // Investiture is counted. - public static final int checkTick = 2; - //Manifestations request beu to continue for another cycle. - public static final int pullTick = 3; + //containers clean up. + public static final int containerTick = 39; + //investiture is transfered. + public static final int transferTick = 19; + + //KineticInvestiture objects decay + //KineticInvestiture calculates next second's max investiture drain. + public static final int investitureTick = 2; + public static final int beuStrengthRatio = 15; diff --git a/src/api/java/leaf/cosmere/api/investiture/Investiture.java b/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java similarity index 64% rename from src/api/java/leaf/cosmere/api/investiture/Investiture.java rename to src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java index 3e7d435ed..20bf72c44 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Investiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java @@ -11,27 +11,27 @@ import javax.annotation.Nonnull; -public class Investiture implements IInvestiture +public class KineticInvestiture implements IInvestiture { - private IInvContainer container; - private InvHelpers.Shards shard; - private InvHelpers.InvestitureSources source; + private IInfuseContainer container; + private InvHelpers.Shard shard; + private InvHelpers.InvestitureSource source; private Manifestation[] applicableManifestations; private int priority = 1; - private int beu; - private int decayRate; - private int currentMaxDraw; + private double beu; + private double decayRate; + private double currentMaxDraw; private CompoundTag nbt; - public Investiture(@Nonnull IInvContainer container, - InvHelpers.Shards shard, - InvHelpers.InvestitureSources source, - int beu, - Manifestation[] applicableManifestations, - int decayRate) + public KineticInvestiture(@Nonnull IInfuseContainer container, + InvHelpers.Shard shard, + InvHelpers.InvestitureSource source, + double beu, + Manifestation[] applicableManifestations, + double decayRate) { this.beu = beu; @@ -43,11 +43,11 @@ public Investiture(@Nonnull IInvContainer container, this.source = source; } - public Investiture(@Nonnull IInvContainer container, - InvHelpers.Shards shard, - InvHelpers.InvestitureSources source, - int beu, - Manifestation[] applicableManifestations) + public KineticInvestiture(@Nonnull IInvContainer container, + InvHelpers.Shard shard, + InvHelpers.InvestitureSource source, + double beu, + Manifestation[] applicableManifestations) { this.beu = beu; @@ -60,12 +60,12 @@ public Investiture(@Nonnull IInvContainer container, } - public int getBEU() + public double getBEU() { return beu; } - public void setBEU(int beu) + public void setBEU(double beu) { this.beu = beu; } @@ -88,62 +88,56 @@ public int removeBEU(int remove) } */ - public int removeBEU(int remove) + public void addBEU(double add) { - if(remove > beu) - { - int out = beu; - beu = 0; - return out; - } - else - { - beu -= remove; - return remove; - } + beu += add; } - public int removeBEU(int remove, boolean upToCurrent) + public double removeBEU(double remove) + { + return removeBEU(remove, false); + } + + public double removeBEU(double remove, boolean upToCurrent) { - if(upToCurrent) - { - if (remove > currentMaxDraw) - { - beu -= currentMaxDraw; - return currentMaxDraw; - } - else - { - beu -= remove; - return remove; - } - } - else - { if (remove > beu) { - int out = beu; + double out = beu; beu = 0; return out; } + else if (upToCurrent && remove > currentMaxDraw) + { + beu -= currentMaxDraw; + return currentMaxDraw; + } else { beu -= remove; return remove; } - } } - public int drain() + public double drain() { - int temp = beu; + double temp = beu; beu = 0; return temp; } - public void addBEU(int add) + public double getDecayRate() { - beu += add; + return decayRate; + } + + public void setDecayRate(double decayRate) + { + this.decayRate = decayRate; + } + + public void decay() + { + beu -= decayRate; } public int getPriority(){return priority;} @@ -159,23 +153,23 @@ public Manifestation[] getApplicableManifestations() } @Override - public InvHelpers.Shards getShard() + public InvHelpers.Shard getShard() { return shard; } @Override - public InvHelpers.InvestitureSources getSource() + public InvHelpers.InvestitureSource getSource() { return source; } - public IInvContainer getContainer() + public IInfuseContainer getContainer() { return container; } - public int getCurrentMaxDraw() + public double getCurrentMaxDraw() { return currentMaxDraw; } @@ -185,7 +179,7 @@ public void calculateCurrentMaxDraw() int x = 0; for(Manifestation manifest: applicableManifestations) { - if(manifest.isActive(getSpiritweb())) + if(getSpiritweb() != null && manifest.isActive(getSpiritweb())) { x++; } @@ -195,18 +189,14 @@ public void calculateCurrentMaxDraw() public ISpiritweb getSpiritweb() { - return getContainer().getSpiritweb().resolve().orElse(null); + if(container instanceof IInvContainer contain) + { + return (ISpiritweb) contain.getSpiritweb().resolve().orElse(null); + } + return null; } - public int getDecayRate() - { - return decayRate; - } - public void setDecayRate(int decayRate) - { - this.decayRate = decayRate; - } public boolean isUsable(Manifestation manifest1) { @@ -220,7 +210,7 @@ public boolean isUsable(Manifestation manifest1) return false; } - public boolean merge(Investiture other) + public boolean merge(KineticInvestiture other) { if(this == other) { @@ -231,18 +221,14 @@ public boolean merge(Investiture other) && this.getContainer().equals(other.getContainer())) { this.beu += other.getBEU(); + other.setBEU(0); return true; - //other.close; } return false; } - - //protected void close() {this = null;} - public void decay() - { - beu -= decayRate; - } + + public void reattach() { @@ -268,8 +254,8 @@ public CompoundTag serializeNBT() } nbt.put("manifestations", manifestationNBT); nbt.putInt("priority", priority); - nbt.putInt("decay_rate", decayRate); - nbt.putInt("beu", beu); + nbt.putDouble("decay_rate", decayRate); + nbt.putDouble("beu", beu); return nbt; } @@ -277,10 +263,10 @@ public CompoundTag serializeNBT() public void deserializeNBT(CompoundTag nbt) { this.nbt = nbt; - decayRate = nbt.getInt("decay_rate"); - beu = nbt.getInt("beu"); - shard = InvHelpers.Shards.valueOf(nbt.getString("shard")); - source = InvHelpers.InvestitureSources.valueOf(nbt.getString("source")); + decayRate = nbt.getDouble("decay_rate"); + beu = nbt.getDouble("beu"); + shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); + source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); priority = nbt.getInt("priority"); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -297,7 +283,7 @@ public void deserializeNBT(CompoundTag nbt) } - public static Investiture buildFromNBT(CompoundTag nbt, IInvContainer data) + public static KineticInvestiture buildFromNBT(CompoundTag nbt, IInvContainer data) { Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -310,10 +296,10 @@ public static Investiture buildFromNBT(CompoundTag nbt, IInvContainer data) array[manifestNBT.getInt(manifestationLoc)] = manifestation; } } - Investiture invest = new Investiture(data, - InvHelpers.Shards.valueOf(nbt.getString("shard")), - InvHelpers.InvestitureSources.valueOf(nbt.getString("source")), - nbt.getInt("beu"),array, nbt.getInt("decay_rate")); + KineticInvestiture invest = new KineticInvestiture(data, + InvHelpers.Shard.valueOf(nbt.getString("shard")), + InvHelpers.InvestitureSource.valueOf(nbt.getString("source")), + nbt.getDouble("beu"),array, nbt.getInt("decay_rate")); invest.nbt = nbt; invest.setPriority(nbt.getInt("priority")); return invest; diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java index 1ff4077b2..9e6817105 100644 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java @@ -8,35 +8,32 @@ public class SpiritwebInvestiture implements IInvestiture { + private IInvContainer container; + private InvHelpers.Shard shard; + private InvHelpers.InvestitureSource source; + private Manifestation[] applicableManifestations; - private int beu; - + private double beu; - private IInvContainer container; - private InvHelpers.Shards shard; - private InvHelpers.InvestitureSources source; - private int lastPullInvestiture = 0; private int mode = 0; private CompoundTag nbt; - private int currentMaxDraw; - public SpiritwebInvestiture(IInvContainer invContainer, Manifestation manifestation, ISpiritweb web) { container = invContainer; - beu = InvHelpers.Math.strengthToBEU(manifestation.getStrength(web, true)); - shard = InvHelpers.Shards.getShardOfManifest(manifestation); - source = InvHelpers.InvestitureSources.DIRECT; + beu = InvHelpers.InvMath.strengthToBEU(manifestation.getStrength(web, true)); + shard = InvHelpers.Shard.getShardOfManifest(manifestation); + source = InvHelpers.InvestitureSource.DIRECT; applicableManifestations = Manifestations.ManifestArrayBuilder.getArray(manifestation); container.mergeOrAddInvestiture(this); } public SpiritwebInvestiture(IInvContainer investitureContainer, double strength, - InvHelpers.Shards shard, - InvHelpers.InvestitureSources source, + InvHelpers.Shard shard, + InvHelpers.InvestitureSource source, Manifestation[] appManifest) { this.shard = shard; @@ -50,12 +47,12 @@ public SpiritwebInvestiture(IInvContainer investitureContainer, - public int getBEU() + public double getBEU() { return beu; } - public void setBEU(int beu) + public void setBEU(double beu) { this.beu = beu; } @@ -65,53 +62,42 @@ public Manifestation[] getApplicableManifestations() } @Override - public InvHelpers.Shards getShard() + public InvHelpers.Shard getShard() { return null; } @Override - public InvHelpers.InvestitureSources getSource() + public InvHelpers.InvestitureSource getSource() { return null; } @Override - public IInvContainer getContainer() + public IInfuseContainer getContainer() { return container; } @Override - public int getCurrentMaxDraw() + public double getCurrentMaxDraw() { - return currentMaxDraw; + return beu; } @Override public void calculateCurrentMaxDraw() { - currentMaxDraw = beu; } public double getStrength() { - return InvHelpers.Math.beuToStrength(beu); + return InvHelpers.InvMath.beuToStrength(beu); } public void setStrength(double strength) { - beu = InvHelpers.Math.strengthToBEU(strength); - } - - public int getLastPullInvestiture() - { - return lastPullInvestiture; - } - - public void setLastPullInvestiture(int lastPullInvestiture) - { - this.lastPullInvestiture = lastPullInvestiture; + beu = InvHelpers.InvMath.strengthToBEU(strength); } public int getMode() @@ -128,8 +114,8 @@ public boolean merge(SpiritwebInvestiture other) { if(this.getApplicableManifestations()==(other.getApplicableManifestations()) && this.getContainer().equals(other.getContainer()) - && this.source != InvHelpers.InvestitureSources.LIFEFORCE - && other.source != InvHelpers.InvestitureSources.LIFEFORCE) + && this.source != InvHelpers.InvestitureSource.LIFEFORCE + && other.source != InvHelpers.InvestitureSource.LIFEFORCE) { this.beu += other.getBEU(); other.setBEU(0); @@ -156,9 +142,8 @@ public CompoundTag serializeNBT() manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); } nbt.put("manifestations", manifestationNBT); - nbt.putInt("beu", beu); + nbt.putDouble("beu", beu); - nbt.putInt("lpi",lastPullInvestiture); return nbt; } @@ -166,9 +151,9 @@ public CompoundTag serializeNBT() public void deserializeNBT(CompoundTag nbt) { this.nbt = nbt; - beu = nbt.getInt("beu"); - shard = InvHelpers.Shards.valueOf(nbt.getString("shard")); - source = InvHelpers.InvestitureSources.valueOf(nbt.getString("source")); + beu = nbt.getDouble("beu"); + shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); + source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) @@ -181,7 +166,6 @@ public void deserializeNBT(CompoundTag nbt) } } - lastPullInvestiture = nbt.getInt("lpi"); } @@ -200,11 +184,10 @@ public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvContainer killAmount) + { + transfer1 = ((cycNum + 1) * rate) - killAmount; + } + else + { + transfer1 = rate; + } cycNum++; - investOut.addBEU(investIn.removeBEU(rate)); + investOut.addBEU(investIn.removeBEU(transfer1)); investIn.reattach(); if (cycNum == cycles || cycNum * rate >= killAmount) { @@ -57,12 +74,12 @@ public int getRate() return rate; } - public Investiture getInvestIn() + public KineticInvestiture getInvestIn() { return investIn; } - public Investiture getInvestOut() + public KineticInvestiture getInvestOut() { return investOut; } diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index a87febd79..1985704a6 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,8 +5,7 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; import leaf.cosmere.api.spiritweb.ISpiritweb; @@ -146,9 +145,9 @@ public Attribute getAttribute() //May be redundant method public int drawInvestiture(ISpiritweb data, int beu) { - ArrayList invests = data.getInvestitureContainer().availableInvestitures(this); + ArrayList invests = data.getInvestitureContainer().availableInvestitures(this); int sum = 0; - for(Investiture investiture: invests) + for(KineticInvestiture investiture: invests) { sum += investiture.getBEU(); } @@ -169,7 +168,7 @@ public int drawInvestiture(ISpiritweb data, int beu) // 1 highest, 5 lowest for(int i = 1; i <= 5; i++) { - for (Investiture investiture: invests) + for (KineticInvestiture investiture: invests) { if(investiture.getPriority() == i) { diff --git a/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java b/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java new file mode 100644 index 000000000..779b7c031 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java @@ -0,0 +1,233 @@ +package leaf.cosmere.common.cap; + +import leaf.cosmere.api.investiture.*; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.investiture.Infusion; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.nbt.ListTag; +import net.minecraft.nbt.Tag; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.block.entity.BlockEntity; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.CapabilityManager; +import net.minecraftforge.common.capabilities.CapabilityProvider; +import net.minecraftforge.common.capabilities.CapabilityToken; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import org.jetbrains.annotations.Nullable; + +import javax.annotation.Nonnull; +import java.util.*; + +public class InfusionContainer> implements IInfuseContainer +{ + public static final Capability> CAPABILITY = CapabilityManager.get(new CapabilityToken<>() + { + }); + + //detect if capability has been set up yet + private boolean didSetup = false; + + protected final T parent; + protected Entity entityAssociate; + + + protected CompoundTag nbt; + + public final Set investitures = new HashSet<>(); + protected double maxBEU; + + public InfusionContainer(T parent) + { + this.parent = parent; + if(this.parent instanceof Entity entity) + { + entityAssociate = entity; + } + } + + @Nonnull + public static LazyOptional> get(LivingEntity entity) + { + return entity != null ? entity.getCapability(InfusionContainer.CAPABILITY, null) + : LazyOptional.empty(); + } + + @Nonnull + public static LazyOptional> get(ItemStack stack) + { + return stack != null ? stack.getCapability(InfusionContainer.CAPABILITY, null) + : LazyOptional.empty(); + } + + @Nonnull + public static LazyOptional> get(BlockEntity entity) + { + return entity != null ? entity.getCapability(InfusionContainer.CAPABILITY, null) + : LazyOptional.empty(); + } + + @Nonnull + public static LazyOptional> get(net.minecraftforge.common.capabilities.CapabilityProvider object) + { + if(object instanceof LivingEntity entity) + { + return get(entity); + } + else if(object instanceof ItemStack stack) + { + return get(stack); + } + else if(object instanceof BlockEntity entity) + { + return get(entity); + } + else + { + return object != null ? object.getCapability(InfusionContainer.CAPABILITY, null) + : LazyOptional.empty(); + } + } + + @Override + public T getParent() + { + return parent; + } + + @Override + public Entity getEntityAssociate() + { + return entityAssociate; + } + + @Override + public void setEntityAssociate(Entity entityAssociate) + { + this.entityAssociate = entityAssociate; + } + + @Override + public double currentBEU() + { + double out = 0; + for(IInvestiture invest : investitures) + { + out += invest.getBEU(); + } + return out; + } + + @Override + public double getMaxBEU() + { + return maxBEU; + } + + @Override + public void setMaxBEU(double maxBEU) + { + this.maxBEU = maxBEU; + } + + @Override + public HashSet availableInvestitures(Manifestation manifest) + { + HashSet out = new HashSet<>(); + for (IInvestiture invest : investitures) + { + if(Arrays.stream(invest.getApplicableManifestations()).anyMatch(m1 -> m1.equals(manifest))) + { + out.add(invest); + } + } + return out; + } + + @Override + public void clean() + { + investitures.removeIf(investiture -> investiture.getBEU() == 0); + System.gc(); + } + + @Override + public InvHelpers.InvestitureSource containerSource() + { + if(parent instanceof LivingEntity) + { + return InvHelpers.InvestitureSource.SELF; + } + else if(parent instanceof ItemStack) + { + return InvHelpers.InvestitureSource.GEMSTONE; + } + else if(parent != null) + { + + } + return null; + } + + @Override + @SubscribeEvent + public void tick() + { + + } + + @Override + public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) + { + + } + + @Override + public CompoundTag serializeNBT() + { + if(nbt == null) + { + nbt = new CompoundTag(); + } + if(!investitures.isEmpty()) + { + ListTag investStored = new ListTag(); + + for (IInvestiture investiture : investitures) + { + investStored.add(investiture.serializeNBT()); + } + nbt.put("investitures", investStored); + } + + nbt.putDouble("maxBEU", maxBEU); + return nbt; + + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + if(nbt == null || nbt.isEmpty()) + { + return; + } + this.nbt = nbt; + if (nbt.contains("investitures")) + { + ListTag listtag = nbt.getList("investitures", Tag.TAG_LIST); + for (int i = 0; i < listtag.size(); i++) + { + CompoundTag sub = listtag.getCompound(i); + IInvestiture temp = Infusion.buildFromNBT(sub, this); + investitures.add(temp); + + } + + } + maxBEU = nbt.getDouble("maxBEU"); + } +} diff --git a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java b/src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java similarity index 62% rename from src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java rename to src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java index c7135cfd2..6f7341f6c 100644 --- a/src/main/java/leaf/cosmere/common/investiture/InvestitureContainer.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java @@ -2,36 +2,24 @@ * File updated ~ 15 - 9 - 25 ~ Soar */ -package leaf.cosmere.common.investiture; +package leaf.cosmere.common.cap.entity; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.ISpiritwebSubmodule; import leaf.cosmere.api.investiture.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.ChargeableItemBase; +import leaf.cosmere.common.cap.InfusionContainer; import leaf.cosmere.common.network.packets.SyncPlayerInvestitureContainerMessage; -import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.ListTag; import net.minecraft.nbt.Tag; -import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attribute; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityManager; import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; import net.minecraftforge.event.entity.player.PlayerEvent; @@ -39,79 +27,33 @@ import javax.annotation.Nullable; import java.util.*; -public class InvestitureContainer> implements IInvContainer +public class InvestitureContainer extends InfusionContainer implements IInvContainer { - public static final Capability CAPABILITY = CapabilityManager.get(new CapabilityToken<>() + + public static final Capability> CAPABILITY = CapabilityManager.get(new CapabilityToken<>() { }); //detect if capability has been set up yet private boolean didSetup = false; - private final T parent; - private Entity entityAssociate; - + public final Set swInvestitures = new HashSet<>(); - private CompoundTag nbt; - - public final List investitures = new ArrayList<>(); - public final List swInvestitures = new ArrayList<>(); - private int maxBEU; private int lastAccessedTick; // Used for cleaning. If not accessed after several ticks, clear it out. - public InvestitureContainer(T parent) - { - this.parent = parent; - if(this.parent instanceof Entity entity) - { - entityAssociate = entity; - } - } - - @Nonnull - public static LazyOptional get(LivingEntity entity) - { - return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - - @Nonnull - public static LazyOptional get(ItemStack stack) + public InvestitureContainer(Entity parent) { - return stack != null ? stack.getCapability(InvestitureContainer.CAPABILITY, null) - : LazyOptional.empty(); + super(parent); } @Nonnull - public static LazyOptional get(BlockEntity entity) + public static LazyOptional> get(LivingEntity entity) { - return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null) + return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null).cast() : LazyOptional.empty(); } - @Nonnull - public static LazyOptional get(net.minecraftforge.common.capabilities.CapabilityProvider object) - { - if(object instanceof LivingEntity entity) - { - return get(entity); - } - else if(object instanceof ItemStack stack) - { - return get(stack); - } - else if(object instanceof BlockEntity entity) - { - return get(entity); - } - else - { - return object != null ? object.getCapability(InvestitureContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - } - @Override public void tick() { @@ -128,6 +70,13 @@ public void tick() { tickServer(); } + if(getEntityAssociate().tickCount % 20 == 19) + { + for (IInvestiture invest : investitures) + { + invest.calculateCurrentMaxDraw(); + } + } } else { @@ -138,7 +87,7 @@ public void tick() @Override public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) { - if (parent != null && getEntityAssociate().level().isClientSide) + if (super.getParent() != null && getEntityAssociate().level().isClientSide) { throw new IllegalStateException("Don't sync client -> server"); } @@ -155,10 +104,10 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } } @Override - public void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldInvContainer) + public void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldInvContainer) { - var oldContainer = (InvestitureContainer) oldInvContainer; + var oldContainer = (InvestitureContainer) oldInvContainer; //TODO config options that let you choose what can be transferred @@ -175,10 +124,14 @@ public void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldInvContai public void tickServer() { - for(Investiture invest: investitures) + for(IInvestiture invest: investitures) { - invest.decay(); - if(invest.getBEU() <= 0) + if(invest instanceof KineticInvestiture investiture) + { + investiture.decay(); + + } + if (invest.getBEU() <= 0) { investitures.remove(invest); } @@ -193,16 +146,10 @@ public void tickClient() } - @Override - public T getParent() - { - return parent; - } - @Override public LazyOptional getSpiritweb() { - if(parent instanceof LivingEntity ent) + if(super.getParent() instanceof LivingEntity ent) { return SpiritwebCapability.get(ent); } @@ -217,11 +164,11 @@ public CompoundTag serializeNBT() { ListTag investStored = new ListTag(); - for (Investiture investiture : investitures) + for (IInvestiture investiture : investitures) { investStored.add(investiture.serializeNBT()); } - nbt.put("investitures", investStored); + nbt.put("kinInvest", investStored); } if(!swInvestitures.isEmpty()) { @@ -233,8 +180,6 @@ public CompoundTag serializeNBT() nbt.put("swInvestitures", swInvest); } - nbt.putInt("maxBEU", maxBEU); - nbt.putInt("lastAccessedTick", lastAccessedTick); return nbt; @@ -257,16 +202,16 @@ public void deserializeNBT(CompoundTag compoundTag) nbt = compoundTag; } - this.maxBEU = nbt.getInt("maxBEU"); + this.maxBEU = nbt.getDouble("maxBEU"); this.lastAccessedTick = nbt.getInt("lastAccessedTick"); - if (nbt.contains("investitures")) + if (nbt.contains("kinInvest")) { - ListTag listtag = nbt.getList("investitures", Tag.TAG_LIST); + ListTag listtag = nbt.getList("kinInvest", Tag.TAG_LIST); for (int i = 0; i < listtag.size(); i++) { CompoundTag sub = listtag.getCompound(i); - Investiture temp = Investiture.buildFromNBT(sub, this); + KineticInvestiture temp = KineticInvestiture.buildFromNBT(sub, this); investitures.add(temp); } @@ -287,12 +232,12 @@ public void deserializeNBT(CompoundTag compoundTag) @Override - public ArrayList availableInvestitures(Manifestation manifest) + public HashSet availableInvestitures(Manifestation manifest) { - ArrayList availables = new ArrayList<>(); - for (Investiture invest : investitures) + HashSet availables = new HashSet<>(); + for (IInvestiture invest : investitures) { - if (invest.isUsable(manifest)) + if (invest instanceof KineticInvestiture investiture && investiture.isUsable(manifest)) { availables.add(invest); } @@ -307,25 +252,30 @@ public void mergeOrAddInvestiture(IInvestiture invest) { for (SpiritwebInvestiture investiture : swInvestitures) { - swInvest.merge(investiture); + if(swInvest.merge(investiture)) + { + investiture.setBEU(0); + } } swInvestitures.add(swInvest); } - else if (invest instanceof Investiture iInvest) + else if (invest instanceof KineticInvestiture iInvest) { - iInvest.merge( - investitures.stream() - .filter(investiture -> investiture.getShard() == iInvest.getShard()) - .findFirst() - .orElse(iInvest)); + for (KineticInvestiture investiture : investitures) + { + if(iInvest.merge(investiture)) + { + investiture.setBEU(0); + } + } investitures.add(iInvest); } } @Override - public Investiture findInvestiture(Manifestation[] appManifest) + public KineticInvestiture findInvestiture(Manifestation[] appManifest) { - for (Investiture invest : investitures) + for (KineticInvestiture invest : investitures) { if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) { @@ -336,44 +286,33 @@ public Investiture findInvestiture(Manifestation[] appManifest) } @Override - public boolean hasInvestiture(Investiture investiture) + public boolean hasInvestiture(KineticInvestiture investiture) { return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); } - @Override - public int currentBEU() + + public int currentBEUDraw(List list) { int sub = 0; - for(Investiture invest: investitures) + for(KineticInvestiture invest: list) { - sub+= invest.getBEU(); + sub += invest.getCurrentMaxDraw(); } return sub; } @Override - public int currentBEUDraw(List list) + public double currentBEU() { int sub = 0; - for(Investiture invest: list) + for(KineticInvestiture invest: investitures) { - sub += invest.getCurrentMaxDraw(); + sub+= invest.getBEU(); } return sub; } - @Override - public int getMaxBEU() - { - return maxBEU; - } - - @Override - public void setMaxBEU(int maxBEU) - { - this.maxBEU = maxBEU; - } @Override // Clears out empty investiture objects from the ArrayList and the game memory @@ -385,11 +324,11 @@ public void clean() } @Override - public InvHelpers.InvestitureSources containerSource() + public InvHelpers.InvestitureSource containerSource() { - if(parent instanceof LivingEntity entity) + if(super.parent instanceof LivingEntity entity) { - return InvHelpers.InvestitureSources.SELF; + return InvHelpers.InvestitureSource.SELF; } else if(parent != null) { @@ -398,7 +337,7 @@ else if(parent != null) return null; } - public int runInvestiturePull(Manifestation manifestation) + public double runInvestiturePull(Manifestation manifestation) { /*Steps @@ -425,8 +364,15 @@ public int runInvestiturePull(Manifestation manifestation) */ - ArrayList availInvestitures = availableInvestitures(manifestation); - int out = 0; + ArrayList availInvestitures = new ArrayList<>(); + for(IInvestiture invest: availableInvestitures(manifestation)) + { + if(invest instanceof KineticInvestiture invest1) + { + availInvestitures.add(invest1); + } + } + double out = 0; //Test to see if the minimum amount of investiture is available //If not return @@ -444,11 +390,11 @@ public int runInvestiturePull(Manifestation manifestation) break; } //Temporary list of values of given priority - ArrayList temp = new ArrayList<>(); - int tempTotal = 0; + ArrayList temp = new ArrayList<>(); + double tempTotal = 0; - //Adds investitures to temporary list - for (Investiture invest : availInvestitures) + //Adds infusions to temporary list + for (KineticInvestiture invest : availInvestitures) { // remove empty investiture sets if(invest.getBEU() == 0) @@ -466,11 +412,11 @@ else if(invest.getPriority() == i) { continue; } - int theoryMax = manifestation.maxInvestitureDraw(getSpiritweb().resolve().get()) - out; + double theoryMax = manifestation.maxInvestitureDraw(getSpiritweb().resolve().get()) - out; //If current total is less than max, pull all investiture from each source of the priority if(tempTotal <= theoryMax) { - for(Investiture invest: temp) + for(KineticInvestiture invest: temp) { out += invest.drain(); @@ -480,10 +426,10 @@ else if(invest.getPriority() == i) else { - int tempOut = 0; - for(Investiture invest: temp) + double tempOut = 0; + for(KineticInvestiture invest: temp) { - int toDraw = (int) (((double)(invest.getBEU())/tempTotal) * theoryMax); + double toDraw = ((invest.getBEU()/tempTotal) * theoryMax); tempOut += invest.removeBEU(toDraw, true); } int index = 0; @@ -491,7 +437,7 @@ else if(invest.getPriority() == i) //Checking that investiture gets pulled correctly while(tempOut < theoryMax) { - Investiture invest = temp.get(index); + KineticInvestiture invest = temp.get(index); if(invest.getBEU() > 0) { tempOut += 1; diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index f85e719fd..8424418bd 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -15,7 +15,6 @@ import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.investiture.InvestitureContainer; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; diff --git a/src/main/java/leaf/cosmere/common/effects/FillInvestitureEffect.java b/src/main/java/leaf/cosmere/common/effects/FillInvestitureEffect.java new file mode 100644 index 000000000..fe71668c2 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/effects/FillInvestitureEffect.java @@ -0,0 +1,5 @@ +package leaf.cosmere.common.effects; + +public class FillInvestitureEffect +{ +} diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java index 59460fa84..d0c5ecfd6 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java @@ -5,12 +5,13 @@ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.Constants; +import leaf.cosmere.api.investiture.IInfuseContainer; import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.cap.InfusionContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.investiture.InvestitureContainer; -import leaf.cosmere.common.items.ChargeableItemBase; +import leaf.cosmere.common.cap.entity.InvestitureContainer; import leaf.cosmere.common.items.InvestableItemBase; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -73,7 +74,7 @@ public void deserializeNBT(CompoundTag nbt) } }); } - if(isValidInvestitureContainer(eventEntity)) + if(isValidInfusionContainer(eventEntity)) { LivingEntity livingEntity = (LivingEntity) eventEntity; @@ -110,12 +111,12 @@ public static void attachItemCapabilities(AttachCapabilitiesEvent eve { ItemStack eventStack = event.getObject(); - if (isValidInvestitureContainer(eventStack)) + if (isValidInfusionContainer(eventStack)) { event.addCapability(Constants.Resources.INV_CONTAINER_CAP, new ICapabilitySerializable() { - final InvestitureContainer investitureContainer = new InvestitureContainer(eventStack); - final LazyOptional invContainerInstance = LazyOptional.of(() -> investitureContainer); + final InfusionContainer investitureContainer = new InfusionContainer<>(eventStack); + final LazyOptional invContainerInstance = LazyOptional.of(() -> investitureContainer); @Nonnull @Override @@ -152,19 +153,19 @@ public static boolean isValidSpiritWebEntity(Entity entity) || entity instanceof Cat; } - public static boolean isValidInvestitureContainer(Entity entity) + public static boolean isValidInfusionContainer(Entity entity) { return isValidSpiritWebEntity(entity); //add block entities } //Alternative for investiture container for entities that can only be affected by investiture, but can't use it. - public static boolean isValidInfustionEntity(Entity entity) + public static boolean isValidInfusionEntity(Entity entity) { - return (entity instanceof LivingEntity && !isValidInvestitureContainer(entity)); + return (entity instanceof LivingEntity && !isValidInfusionContainer(entity)); } - public static boolean isValidInvestitureContainer(ItemStack stack) + public static boolean isValidInfusionContainer(ItemStack stack) { return stack.getItem() instanceof InvestableItemBase; } diff --git a/src/main/java/leaf/cosmere/common/investiture/Infusion.java b/src/main/java/leaf/cosmere/common/investiture/Infusion.java new file mode 100644 index 000000000..4467bbbb4 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/investiture/Infusion.java @@ -0,0 +1,235 @@ +package leaf.cosmere.common.investiture; + +import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.investiture.*; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.cap.entity.InvestitureContainer; +import net.minecraft.client.Minecraft; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.entity.Entity; + +import java.util.List; +import java.util.UUID; + +public class Infusion implements IInvestiture +{ + private IInfuseContainer container; + private IInvContainer infuser; + private InvHelpers.Shard shard; + private InvHelpers.InvestitureSource source; + private Manifestation[] applicableManifestations; + private int beu; + private int currentMaxDraw; + + private CompoundTag nbt; + + public Infusion(IInfuseContainer container, Manifestation manifest, List investitures) + { + + beu = 0; + this.container = container; + for(KineticInvestiture investiture: investitures) + { + if(investiture.isUsable(manifest)) + { + beu += investiture.getBEU(); + investiture.setBEU(0); + if(this.shard == null) + { + this.shard = investiture.getShard(); + } + else if(investiture.getShard() != this.shard) + { + InvHelpers.Shard shard1 = this.shard; + { + this.shard = switcher(shard1, investiture.getShard()); + } + } + } + } + applicableManifestations = new Manifestation[]{manifest}; + infuser = investitures.get(0).getContainer(); + } + + public Infusion(IInfuseContainer container, Manifestation[] manifest, int beu, IInvContainer infuser, + InvHelpers.Shard shard, InvHelpers.InvestitureSource source + ) + { + this.container = container; + this.infuser = infuser; + this.applicableManifestations = manifest; + this.beu = beu; + this.shard = shard; + this.source = source; + } + + @Override + public int getBEU() + { + return beu; + } + + @Override + public void setBEU(int beu) + { + this.beu = beu; + } + + @Override + public Manifestation[] getApplicableManifestations() + { + return applicableManifestations; + } + + @Override + public InvHelpers.Shard getShard() + { + return shard; + } + + @Override + public InvHelpers.InvestitureSource getSource() + { + return source; + } + + @Override + public IInfuseContainer getContainer() + { + return container; + } + + @Override + public int getCurrentMaxDraw() + { + return currentMaxDraw; + } + + @Override + public void calculateCurrentMaxDraw() + { + currentMaxDraw = Math.min(beu, applicableManifestations[0].maxInvestitureDraw(infuser.getSpiritweb().resolve().get())); + } + + @Override + public CompoundTag serializeNBT() + { + if (this.nbt == null) + { + this.nbt = new CompoundTag(); + } + nbt.putString("shard", shard.getName().toLowerCase()); + nbt.putString("source", source.getName().toLowerCase()); + nbt.putInt("manifestations_length", applicableManifestations.length); + final CompoundTag manifestationNBT = new CompoundTag(); + for (int i = 0; i < applicableManifestations.length; i++) + { + manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); + } + nbt.put("manifestations", manifestationNBT); + nbt.putInt("beu", beu); + + nbt.putUUID("infuser", infuser.getParent().getUUID()); + + return nbt; + } + + @Override + public void deserializeNBT(CompoundTag nbt) + { + this.nbt = nbt; + beu = nbt.getInt("beu"); + shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); + source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); + applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + } + + private static InvHelpers.Shard switcher(InvHelpers.Shard shard1, InvHelpers.Shard shard2) + { + int int1 = 0; + switch (shard1) + { + case DOMINION, DEVOTION, DOR: + int1 += 1; + break; + case PRESERVATION, RUIN, HARMONY: + int1 += 3; + break; + case HONOR, ODIUM, RETRIBUTION: + int1 += 5; + break; + case PURE: + int1 += 20; + break; + default: + int1 += 0; + + } + + switch (shard2) + { + case DOMINION, DEVOTION, DOR: + int1 += 1; + break; + case PRESERVATION, RUIN, HARMONY: + int1 += 3; + break; + case HONOR, ODIUM, RETRIBUTION: + int1 += 5; + break; + case PURE: + int1 += 20; + break; + default: + int1 += 0; + + } + + if (int1>20) + { + int1 = 20; + } + return switch (int1) + { + case 2 -> InvHelpers.Shard.DOR; + case 6 -> InvHelpers.Shard.HARMONY; + case 10 -> InvHelpers.Shard.RETRIBUTION; + case 20 -> InvHelpers.Shard.PURE; + default -> InvHelpers.Shard.NONE; + }; + } + + public static Infusion buildFromNBT(CompoundTag nbt, IInfuseContainer container) + { + Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; + CompoundTag manifestNBT = nbt.getCompound("manifestations"); + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + final String manifestationLoc = manifestation.getRegistryName().toString(); + + if (manifestNBT.contains(manifestationLoc)) + { + array[manifestNBT.getInt(manifestationLoc)] = manifestation; + } + } + + UUID uuid = nbt.getUUID("infuser"); + Entity infuse = Minecraft.getInstance().level.getServer().getAllLevels().iterator().next().getEntity(uuid); + + Infusion invest = new Infusion(container, array, + nbt.getInt("beu"), (InvestitureContainer)InvestitureContainer.get(infuse).resolve().get(), InvHelpers.Shard.valueOf(nbt.getString("shard")), + InvHelpers.InvestitureSource.valueOf(nbt.getString("source"))); + invest.nbt = nbt; + return invest; + } +} diff --git a/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java index 97b65ac56..7b1ad55f1 100644 --- a/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java +++ b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java @@ -5,14 +5,13 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.StackNBTHelper; -import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.investiture.IInfuseContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.api.text.TextHelper; +import leaf.cosmere.common.cap.InfusionContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.investiture.InvestitureContainer; +import leaf.cosmere.common.cap.entity.InvestitureContainer; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -41,10 +40,9 @@ public InvestableItemBase(Properties prop) super(prop); } - public IInvContainer getAsContainer(ItemStack stack) + public IInfuseContainer getAsContainer(ItemStack stack) { - return InvestitureContainer.get(stack).isPresent() ? InvestitureContainer.get(stack).resolve().get() - : null; + return !InfusionContainer.get(stack).isPresent() ? null : InfusionContainer.get(stack).resolve().get(); } @Override @@ -72,11 +70,6 @@ public boolean isBarVisible(@NotNull ItemStack stack) return getCharge(stack) > 1; } - public int getCharge(ItemStack stack, Manifestation manifest) - { - List temp = getAsContainer(stack).availableInvestitures(manifest); - return getAsContainer(stack).currentBEUDraw(temp); - } public int getCharge(ItemStack stack) { return getAsContainer(stack).currentBEU(); diff --git a/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java index d5c7a80d8..43d097bc5 100644 --- a/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java +++ b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java @@ -4,8 +4,7 @@ package leaf.cosmere.common.network.packets; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.investiture.InvestitureContainer; +import leaf.cosmere.common.cap.entity.InvestitureContainer; import leaf.cosmere.common.network.ICosmerePacket; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java index 090336809..93e543668 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java @@ -2,16 +2,16 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; -public class SandmasteryInvestiture extends Investiture +public class SandmasteryInvestiture extends KineticInvestiture { public SandmasteryInvestiture(IInvContainer container, int BEU) { super(container, - InvHelpers.Shards.AUTONOMY, - InvHelpers.InvestitureSources.LUHEL_BOND, + InvHelpers.Shard.AUTONOMY, + InvHelpers.InvestitureSource.LUHEL_BOND, BEU, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SANDMASTERY)); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java index 6db0229d6..324c33209 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java @@ -1,44 +1,80 @@ package leaf.cosmere.surgebinding.common.investiture; +import leaf.cosmere.api.helpers.TimeHelper; +import leaf.cosmere.api.investiture.IInfuseContainer; import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.IInvCreator; -import leaf.cosmere.api.investiture.InvHelpers; -import leaf.cosmere.api.investiture.Investiture; -import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; +import net.minecraft.core.Position; import net.minecraft.world.entity.Entity; import net.minecraft.world.phys.Vec3; +import net.minecraftforge.eventbus.api.SubscribeEvent; public class Highstorm implements IInvCreator { - double x; - public Highstorm(double x) + + public static Highstorm highstorm = new Highstorm(); + private double highstormX; + private final double HOME = 0; + + public Highstorm() { - this.x = x; + highstormX = 17750D; } - //temp - public Highstorm() + @SubscribeEvent + public void tick() { + if(TimeHelper.isNthTick(SurgebindingDimensions.ROSHAR_DIM_KEY, 1,5D)) + { + if(highstormX + 3 > HOME + 35500D) + { + highstormX = HOME; + } + else + { + highstormX += 15; + } + } } -/* - public boolean isHighstorm(Entity entity) + + public HighstormLocation getNearestHighstorm(Entity entity) { - if(entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + Vec3 lastChecked = new Vec3(highstormX, entity.position().y(), entity.position().z()); + double home = 0; + int num = 0; + while(!entity.position().closerThan(lastChecked,17750D)) { - if(Math.abs(entity.position().x - this.x) < 20.0) + if((entity.position().x() - lastChecked.x()) > 0) { - return true; + lastChecked = new Vec3( + highstormX + 35500, + entity.position().y(), + entity.position().z()); + num++; + home += 35500; + } + else + { + lastChecked = new Vec3( + highstormX - 35500, + entity.position().y(), + entity.position().z()); + num--; + home -= 35500; } } + return new HighstormLocation(lastChecked, home, num); + } - */ - public boolean isHighstorm(Entity entity) + + public static boolean isHighstorm(Entity entity) { - if (entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) + if(entity.level().dimension().equals(SurgebindingDimensions.ROSHAR_DIM_KEY)) { - if (entity.level().isRainingAt(entity.blockPosition()) && entity.level().isThundering()) + if(Math.abs(entity.position().x - highstorm.highstormX) < 50.0) { return true; } @@ -47,23 +83,57 @@ public boolean isHighstorm(Entity entity) } @Override - public Investiture newInvest(IInvContainer data) + public KineticInvestiture newInvest(IInvContainer data) { - Investiture investiture = new Stormlight(data, 500); + KineticInvestiture investiture = new Stormlight(data, 500); return investiture; } @Override - public Investiture newInvest(IInvContainer data, int beu, int decay) + public KineticInvestiture newInvest(IInfuseContainer data, double beu, double decay) { - Investiture out = new Stormlight(data, beu); + KineticInvestiture out = new Stormlight(data, beu); out.setDecayRate(decay); return out; } @Override - public Investiture newInvest(IInvContainer data, int beu) + public KineticInvestiture newInvest(IInfuseContainer data, double beu) { return new Stormlight(data, beu); } + + public class HighstormLocation + { + public double home; + public int number; + public Vec3 pos; + + public HighstormLocation(double x, double home, int number) + { + pos = new Vec3(x, 0, 0); + this.home = home; + this.number = number; + } + + public HighstormLocation(Vec3 pos, double home, int number) + { + + } + + public Position getPosition() + { + return pos; + } + + public void setPos(Vec3 pos) + { + this.pos = pos; + } + + public void setYZ(Entity entity) + { + pos = new Vec3(pos.x(), entity.position().z(), entity.position().z()); + } + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java index 1101c080d..c6be1eb36 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java @@ -1,15 +1,38 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.InvHelpers; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.Transferer; -import leaf.cosmere.api.manifestation.Manifestation; public class LightTransferer extends Transferer { - public LightTransferer(Investiture investIn, IInvContainer containerOut, int transferRate, int decayRate, int cycles) + public LightTransferer(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, int decayRate, int cycles) { - super(investIn, new Stormlight(containerOut, transferRate), transferRate, cycles); + super(investIn, getInvestiture(investIn, containerOut, transferRate, decayRate), transferRate, cycles, containerOut.getMaxBEU()); + } + + private static KineticInvestiture getInvestiture(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, int decayRate) + { + if(investIn instanceof Stormlight light) + { + return new Stormlight(containerOut, transferRate); + } + else if(investIn instanceof Towerlight light) + { + return new Towerlight(containerOut, transferRate); + } + else if(investIn instanceof Voidlight light) + { + return new Voidlight(containerOut, transferRate); + } + else + { + return new KineticInvestiture(containerOut, + investIn.getShard(), + investIn.getContainer().containerSource(), + transferRate, + investIn.getApplicableManifestations(), + decayRate); + } } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index 9d363984d..8c36ee061 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -2,21 +2,21 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.surgebinding.common.capabilities.SurgebindingSpiritwebSubmodule; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; import net.minecraft.world.entity.LivingEntity; -public class Stormlight extends Investiture +public class Stormlight extends KineticInvestiture { public Stormlight(IInvContainer container, int beu) { super(container, - InvHelpers.Shards.HONOR, - InvHelpers.InvestitureSources.HIGHSTORM, + InvHelpers.Shard.HONOR, + InvHelpers.InvestitureSource.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); int decayRate; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java index 3be82ac6e..2be03a9a6 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -2,18 +2,18 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; -public class Towerlight extends Investiture +public class Towerlight extends KineticInvestiture { public Towerlight(IInvContainer container, int beu) { super(container, - InvHelpers.Shards.HONOR, + InvHelpers.Shard.HONOR, //Feels most accurate - InvHelpers.InvestitureSources.MISTS, + InvHelpers.InvestitureSource.MISTS, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java index 295967b78..02bbfcba9 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -2,10 +2,10 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.Investiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; -public class Voidlight extends Investiture +public class Voidlight extends KineticInvestiture { public Voidlight(IInvContainer container, int beu) @@ -13,8 +13,8 @@ public Voidlight(IInvContainer container, //As we start implementing voidbinding, add that to the list of manifestations. //Not much is known about voidlight, but it's here for the future. super(container, - InvHelpers.Shards.ODIUM, - InvHelpers.InvestitureSources.HIGHSTORM, + InvHelpers.Shard.ODIUM, + InvHelpers.InvestitureSource.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java index d6393e5e8..64e3f8e65 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java @@ -67,13 +67,12 @@ public Roshar.GemSize getSize() @Override public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) { - Highstorm highstorm = new Highstorm(); - if(highstorm.isHighstorm(entityItem)) + if(Highstorm.isHighstorm(entityItem)) { if (getCharge(stack) < getMaxCharge(stack)) { //gemstones charge faster in the world - highstorm.newInvest(getAsContainer(stack), 10); + Highstorm.highstorm.newInvest(getAsContainer(stack), 100); } } @@ -83,12 +82,12 @@ public boolean onEntityItemUpdate(ItemStack stack, ItemEntity entityItem) @Override public void inventoryTick(ItemStack pStack, Level pLevel, Entity pEntity, int pItemSlot, boolean pIsSelected) { - Highstorm storm = new Highstorm(); - if (storm.isHighstorm(pEntity)) + + if (Highstorm.isHighstorm(pEntity)) { if (pStack.getItem() instanceof GemstoneItem gemstoneItem) { - storm.newInvest(getAsContainer(pStack), 5); + Highstorm.highstorm.newInvest(getAsContainer(pStack), 50); } } @@ -142,14 +141,13 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte final int attemptedTotal = charge + invest.getBEU(); if (attemptedTotal <= maxPlayerStormlight) { - Transferer gemTransfer = new LightTransferer(gemInvest, playerContainer, 400, 0, Integer.MAX_VALUE); + new LightTransferer(gemInvest, playerContainer, 400, 0, 5) + .setKillAmount(maxPlayerStormlight - invest.getBEU()); } else { - int remainder = attemptedTotal - maxPlayerStormlight; - final int chargeLevelUsed = charge - remainder; - Transferer gemTransfer = new Transferer(gemInvest, playerContainer, 400, 0, Integer.MAX_VALUE); - gemTransfer.setKillAmount(chargeLevelUsed); + new LightTransferer(gemInvest, playerContainer, 400, 0, 3) + .setKillAmount(maxPlayerStormlight - invest.getBEU()); } } //put remaining stormlight into gem. @@ -159,13 +157,13 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte { if ((charge + invest.getBEU()) > getMaxCharge(itemStack)) { - Transferer transferer = new LightTransferer(invest, getAsContainer(itemStack), 1000, 0, Integer.MAX_VALUE); - transferer.setKillAmount(getMaxCharge(itemStack) - charge); + new LightTransferer(invest, getAsContainer(itemStack), + 1000, 0, Integer.MAX_VALUE); } else { - Transferer transferer = new LightTransferer(invest, getAsContainer(itemStack), 1000, 0, Integer.MAX_VALUE); - transferer.setKillAmount(getMaxCharge(itemStack) - charge); + new LightTransferer(invest, getAsContainer(itemStack), + 1000, 0, Integer.MAX_VALUE); } } } From ca8ae4c0977f358c88e455648d251fc159fc2705 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Thu, 30 Oct 2025 22:22:12 -0400 Subject: [PATCH 1030/1090] minor translation updates for en_us.json, adding clarity to nicrosil metalminds. --- .../cosmere/assets/cosmere/lang/en_us.json | 2 + .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../assets/hemalurgy/lang/en_us.json | 7 +++ .../assets/sandmastery/lang/en_us.json | 1 + .../common/items/BraceletMetalmindItem.java | 47 +++++++++++++++++++ .../common/items/NecklaceMetalmindItem.java | 47 +++++++++++++++++++ .../common/items/RingMetalmindItem.java | 47 +++++++++++++++++++ 8 files changed, 155 insertions(+), 4 deletions(-) diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index ef6528ec0..536a4ebca 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -173,6 +173,8 @@ "keys.cosmere.activators": "Power Activators", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.none": "None", + "manifestation.cosmere.night_vision": "Night Vision", + "manifestation.cosmere.xp_gain_rate": "XP Gain Rate", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 1404bdc07..a239f0127 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-07-09T18:22:51.382172 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-10-30T21:18:05.5359965 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 073e4038e..866bb9238 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-07-09T18:22:51.400483 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-10-30T21:18:05.576459 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json index 4d09c7b50..f53521167 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json @@ -5,6 +5,13 @@ "curios.identifier.physical": "Physical Quadrant", "curios.identifier.spiritual": "Spiritual Quadrant", "curios.identifier.temporal": "Temporal Quadrant", + "curios.identifier.eyes": "Eye Spikes", + "curios.modifiers.linchpin": "Linchpin Spike", + "curios.modifiers.mental": "Mental Quadrant", + "curios.modifiers.physical": "Physical Quadrant", + "curios.modifiers.spiritual": "Spiritual Quadrant", + "curios.modifiers.temporal": "Temporal Quadrant", + "curios.modifiers.eyes": "Eye Spikes", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "entity.hemalurgy.koloss_large": "Koloss Large", diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json index cf22c53a4..a9c6bf896 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json +++ b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json @@ -18,6 +18,7 @@ "key.cosmere.sandmastery.platform": "Use Platform Mastery", "key.cosmere.sandmastery.projectile": "Use Projectile Mastery", "manifestation.sandmastery.cushion": "Sand Mastery Cushion", + "manifestation.sandmastery.ribbons": "Sand Mastery Ribbons", "manifestation.sandmastery.cushion.description": "Masters can use cushion", "manifestation.sandmastery.elevate": "Sand Mastery Elevate", "manifestation.sandmastery.elevate.description": "Masters can use elevate", diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java index 23a25088c..63dfa3ded 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/BraceletMetalmindItem.java @@ -4,8 +4,22 @@ package leaf.cosmere.feruchemy.common.items; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.helpers.CompoundNBTHelper; +import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.items.ChargeableMetalCurioItem; +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.List; public class BraceletMetalmindItem extends ChargeableMetalCurioItem { @@ -20,4 +34,37 @@ public float getMaxChargeModifier() return (5f / 9f); } + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + super.appendHoverText(stack, worldIn, tooltip, flagIn); + + if (this.getMetalType() == Metals.MetalType.NICROSIL && !(stack.getItem() instanceof BandsOfMourningItem)) + { + CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); + + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When tapping:").withStyle(ChatFormatting.GOLD)); + + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + Attribute attribute = manifestation.getAttribute(); + final String attributeRegistryName = manifestation.getRegistryName().toString(); + if (!CompoundNBTHelper.verifyExistance(nbt, attributeRegistryName) || attribute == null) + { + continue; + } + + int strength = CompoundNBTHelper.getInt( + nbt, + attributeRegistryName, + 0); + + tooltip.add(Component.literal("+" + strength + " ").append(Component.translatable(manifestation.getTranslationKey())).withStyle(ChatFormatting.BLUE)); + + } + } + } + } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java index 21c79c3fb..03dbb1083 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/NecklaceMetalmindItem.java @@ -4,8 +4,22 @@ package leaf.cosmere.feruchemy.common.items; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.helpers.CompoundNBTHelper; +import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.items.ChargeableMetalCurioItem; +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.List; public class NecklaceMetalmindItem extends ChargeableMetalCurioItem { @@ -19,4 +33,37 @@ public float getMaxChargeModifier() { return (6f / 9f); } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + super.appendHoverText(stack, worldIn, tooltip, flagIn); + + if (this.getMetalType() == Metals.MetalType.NICROSIL) + { + CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); + + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When tapping:").withStyle(ChatFormatting.GOLD)); + + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + Attribute attribute = manifestation.getAttribute(); + final String attributeRegistryName = manifestation.getRegistryName().toString(); + if (!CompoundNBTHelper.verifyExistance(nbt, attributeRegistryName) || attribute == null) + { + continue; + } + + int strength = CompoundNBTHelper.getInt( + nbt, + attributeRegistryName, + 0); + + tooltip.add(Component.literal("+" + strength + " ").append(Component.translatable(manifestation.getTranslationKey())).withStyle(ChatFormatting.BLUE)); + + } + } + } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java index d136e2ad3..65bbcab2f 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/items/RingMetalmindItem.java @@ -4,8 +4,22 @@ package leaf.cosmere.feruchemy.common.items; +import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Metals; +import leaf.cosmere.api.helpers.CompoundNBTHelper; +import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.items.ChargeableMetalCurioItem; +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.List; public class RingMetalmindItem extends ChargeableMetalCurioItem { @@ -19,4 +33,37 @@ public float getMaxChargeModifier() { return (4f / 9f); } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + super.appendHoverText(stack, worldIn, tooltip, flagIn); + + if (this.getMetalType() == Metals.MetalType.NICROSIL) + { + CompoundTag nbt = stack.getOrCreateTagElement("StoredInvestiture"); + + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When tapping:").withStyle(ChatFormatting.GOLD)); + + for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + { + Attribute attribute = manifestation.getAttribute(); + final String attributeRegistryName = manifestation.getRegistryName().toString(); + if (!CompoundNBTHelper.verifyExistance(nbt, attributeRegistryName) || attribute == null) + { + continue; + } + + int strength = CompoundNBTHelper.getInt( + nbt, + attributeRegistryName, + 0); + + tooltip.add(Component.literal("+" + strength + " ").append(Component.translatable(manifestation.getTranslationKey())).withStyle(ChatFormatting.BLUE)); + + } + } + } } From 2644cba0d0c23d7463ee81d152cdb374157a383d Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Thu, 30 Oct 2025 22:56:25 -0400 Subject: [PATCH 1031/1090] doing it right --- .../.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../generated/cosmere/assets/cosmere/lang/en_us.json | 2 +- .../.cache/60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../hemalurgy/assets/hemalurgy/lang/en_us.json | 4 ++-- .../data/hemalurgy/curios/entities/hemalurgists.json | 4 ++-- .../.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../sandmastery/assets/sandmastery/lang/en_us.json | 3 ++- .../leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java | 12 ++++++++++++ src/datagen/main/java/leaf/cosmere/EngLangGen.java | 3 +++ .../cosmere/sandmastery/SandmasteryEngLangGen.java | 4 ++++ 12 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 36350d8f6..5c9b4995e 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-06-30T20:50:55.317948 Languages: en_us -a428967fe9e9d8ad9fe98f946c480d509ae57e47 assets/cosmere/lang/en_us.json +// 1.20.1 2025-10-30T22:51:22.3937334 Languages: en_us +1630e27aabd5dd01ce609e67c426c1f9c77a78b1 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 536a4ebca..e500153db 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -172,8 +172,8 @@ "key.cosmere.stormlight.transportation": "Activate Surgebinding Transportation", "keys.cosmere.activators": "Power Activators", "keys.cosmere.main": "Cosmere", - "manifestation.cosmere.none": "None", "manifestation.cosmere.night_vision": "Night Vision", + "manifestation.cosmere.none": "None", "manifestation.cosmere.xp_gain_rate": "XP Gain Rate", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index a239f0127..f48f2a807 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-10-30T21:18:05.5359965 Curios for feruchemy +// 1.20.1 2025-10-30T22:55:52.0378675 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 866bb9238..5f4c561e7 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-10-30T21:18:05.576459 Curios for hemalurgy +// 1.20.1 2025-10-30T22:55:52.0763877 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 700912363..811ecb383 100644 --- a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.9125261 Languages: en_us -e677e5d852116803388f5c615265f04527fc493a assets/hemalurgy/lang/en_us.json +// 1.20.1 2025-10-30T22:52:11.8108172 Languages: en_us +6161a4c5ba60d70f40cb12300f565d270eb880b6 assets/hemalurgy/lang/en_us.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json index f53521167..91a8e3917 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json @@ -1,17 +1,17 @@ { "command.cosmere.eyeheight.set.success": "Set eye height to %s", + "curios.identifier.eyes": "Eye Spikes", "curios.identifier.linchpin": "Linchpin Spike", "curios.identifier.mental": "Mental Quadrant", "curios.identifier.physical": "Physical Quadrant", "curios.identifier.spiritual": "Spiritual Quadrant", "curios.identifier.temporal": "Temporal Quadrant", - "curios.identifier.eyes": "Eye Spikes", + "curios.modifiers.eyes": "Eye Spikes", "curios.modifiers.linchpin": "Linchpin Spike", "curios.modifiers.mental": "Mental Quadrant", "curios.modifiers.physical": "Physical Quadrant", "curios.modifiers.spiritual": "Spiritual Quadrant", "curios.modifiers.temporal": "Temporal Quadrant", - "curios.modifiers.eyes": "Eye Spikes", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "entity.hemalurgy.koloss_large": "Koloss Large", diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 4e94ace89..2c1f380a3 100644 --- a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.9515597 Languages: en_us -2dac8ecfdd2afacf3c73015c7e385231576f3e1b assets/sandmastery/lang/en_us.json +// 1.20.1 2025-10-30T22:53:59.8364225 Languages: en_us +101d76286a8eaefff4cc67bb4a5f4bbb5083aa9e assets/sandmastery/lang/en_us.json diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json index a9c6bf896..77ff4b66e 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json +++ b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json @@ -18,7 +18,6 @@ "key.cosmere.sandmastery.platform": "Use Platform Mastery", "key.cosmere.sandmastery.projectile": "Use Projectile Mastery", "manifestation.sandmastery.cushion": "Sand Mastery Cushion", - "manifestation.sandmastery.ribbons": "Sand Mastery Ribbons", "manifestation.sandmastery.cushion.description": "Masters can use cushion", "manifestation.sandmastery.elevate": "Sand Mastery Elevate", "manifestation.sandmastery.elevate.description": "Masters can use elevate", @@ -28,5 +27,7 @@ "manifestation.sandmastery.platform.description": "Masters can use platform", "manifestation.sandmastery.projectile": "Sand Mastery Projectile", "manifestation.sandmastery.projectile.description": "Masters can use projectile", + "manifestation.sandmastery.ribbons": "Sand Mastery Ribbons", + "manifestation.sandmastery.ribbons.description": "Masters can use ribbons", "tabs.sandmastery.items": "Sandmastery" } \ No newline at end of file diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 6241d3c0b..c558f637a 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -42,6 +42,7 @@ protected void addTranslations() addDamageSources(); addMobEffects(); addCurioIdentifiers(); + addCurioModifiers(); addConfigs(); addCommands(); addKeybindings(); @@ -144,6 +145,17 @@ private void addCurioIdentifiers() add("curios.identifier.mental", "Mental Quadrant"); add("curios.identifier.spiritual", "Spiritual Quadrant"); add("curios.identifier.temporal", "Temporal Quadrant"); + add("curios.identifier.eyes", "Eye Spikes"); + } + + private void addCurioModifiers() + { + add("curios.modifiers.linchpin", "Linchpin Spike"); + add("curios.modifiers.physical", "Physical Quadrant"); + add("curios.modifiers.mental", "Mental Quadrant"); + add("curios.modifiers.spiritual", "Spiritual Quadrant"); + add("curios.modifiers.temporal", "Temporal Quadrant"); + add("curios.modifiers.eyes", "Eye Spikes"); } private void addConfigs() diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 42c66f005..b816a6a36 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -122,6 +122,9 @@ private void addAdvancements() private void addManifestations() { add(ManifestationRegistry.NONE.getTranslationKey(), "None"); + // Hemalurgic manifestations + add("manifestation.cosmere.night_vision", "Night Vision"); + add("manifestation.cosmere.xp_gain_rate", "XP Gain Rate"); } private void addAttributes() diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java index 90f2155ff..c503de5f9 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java @@ -110,6 +110,10 @@ private void addManifestations() final ResourceLocation regName = manifestation.getRegistryName(); add("manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description", description); } + + // Temp translation fix - Remove when ribbons are added + add("manifestation.sandmastery.ribbons", StringHelper.fixCapitalisation("Sand Mastery Ribbons")); + add("manifestation.sandmastery.ribbons.description", "Masters can use ribbons"); } private void addAttributes() From eff5af6d2bb42451ce285b3f4013ce8f9cb0499f Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Mon, 3 Nov 2025 20:16:26 -0500 Subject: [PATCH 1032/1090] pretty much done here. I want to create some interfaces IHasAlloy and IHasSize next for the invested nugget class. --- .../AllomancyEntityEventHandler.java | 21 +- .../allomancy/common/items/MetalVialItem.java | 3 +- .../allomancy/common/utils/MiscHelper.java | 74 +++-- src/api/java/leaf/cosmere/api/Constants.java | 1 + .../java/leaf/cosmere/api/CosmereTags.java | 2 +- src/api/java/leaf/cosmere/api/Metals.java | 19 ++ .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 5 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 3 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 25 ++ .../data/forge/tags/items/nuggets.json | 3 +- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 2 +- .../main/java/leaf/cosmere/EngLangGen.java | 10 + .../main/java/leaf/cosmere/RecipeGen.java | 12 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 16 +- .../FeruchemyEntityEventHandler.java | 22 +- .../feruchemy/common/utils/MiscHelper.java | 49 ++- .../common/commands/CosmereCommand.java | 1 + .../commands/arguments/MetalArgumentType.java | 72 +++++ .../subcommands/MetalAlloyCommand.java | 76 +++++ .../common/eventHandlers/ColorHandler.java | 22 +- .../common/items/InvestedMetalNuggetItem.java | 298 ++++++++++++++++++ .../cosmere/common/items/MetalNuggetItem.java | 10 + .../common/registry/ArgumentTypeRegistry.java | 6 + .../common/registry/CreativeTabsRegistry.java | 43 +++ .../common/registry/ItemsRegistry.java | 21 +- .../cosmere/common/util/CosmereEnumUtils.java | 1 + 31 files changed, 746 insertions(+), 91 deletions(-) create mode 100644 src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java create mode 100644 src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java create mode 100644 src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 37155877d..a9bae56b4 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -12,6 +12,7 @@ import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; import leaf.cosmere.api.Metals; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; @@ -49,20 +50,11 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof MetalNuggetItem beadItem) + if (stack.getItem() instanceof InvestedMetalNuggetItem) { - Metals.MetalType metalType = beadItem.getMetalType(); - - switch (metalType) - { - //only care about god metal when trying to give others powers - case LERASIUM: - MiscHelper.consumeNugget(target, metalType, 1); - //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item - stack.shrink(1); - break; - } - + MiscHelper.consumeNugget(target, stack, true); + //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item + stack.shrink(1); } } else @@ -83,8 +75,7 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) final LivingEntity livingEntity = event.getEntity(); if (event.getItem().getItem() instanceof MetalNuggetItem item) { - //no need to shrink item count as it's already done as part of nugget use item finish - MiscHelper.consumeNugget(livingEntity, item.getMetalType(), 1); + MiscHelper.consumeNugget(livingEntity, event.getItem(), item instanceof InvestedMetalNuggetItem); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index a6da9dab6..ad8b57342 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -115,8 +115,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity en metalsInVial.entrySet().forEach(metalInfo -> { // MetalName x Value - Metals.MetalType metalType = Metals.MetalType.valueOf(metalInfo.getKey()).get(); - MiscHelper.consumeNugget(entityLiving, metalType, metalInfo.getValue()); + MiscHelper.consumeNugget(entityLiving, stack, false); }); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 5e332df74..859498e47 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -12,16 +12,32 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.AttributeModifier; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.item.ItemStack; +import org.checkerframework.checker.units.qual.A; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.UUID; public class MiscHelper { - public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType, int amount) + public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, boolean isInvestedNugget) { - if (metalType == null || livingEntity.level().isClientSide) + MetalNuggetItem nuggetItem = (MetalNuggetItem) itemStack.getItem(); + Metals.MetalType metalType = nuggetItem.getMetalType(); + + if (livingEntity.level().isClientSide) { return; } @@ -30,34 +46,52 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if (metalType == Metals.MetalType.LERASIUM) + if(isInvestedNugget) { - //https://www.theoryland.com/intvmain.php?i=977#43 - if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) - { - //todo translations - livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); - } + HashSet metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); + Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + if(size != null) { - //give allomancy - final boolean isAllomancy = manifestation.getManifestationType() == Manifestations.ManifestationTypes.ALLOMANCY; - final boolean notAtium = manifestation.getPowerID() != Metals.MetalType.ATIUM.getID(); - if (isAllomancy && notAtium) + // Ensure it is for Allomancy only + if (metalType == Metals.MetalType.LERASIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASIUM) && metalTypes.size() == 2)) { - //todo allomancy godmetal strength - final double strength = manifestation.getStrength(iSpiritweb, true); - final int minimum = AllomancyConfigs.SERVER.GOD_METAL_EAT_STRENGTH_MINIMUM.get(); + ArrayList manifestations = InvestedMetalNuggetItem.determineManifestations(itemStack); - spiritweb.giveManifestation(manifestation, strength < minimum ? minimum : (int) (strength + 1)); + for(Manifestation manifestation: manifestations) + { + int currentStrength = 0; + if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; + AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); + if(attributeInstance != null) { + currentStrength = (int) attributeInstance.getValue(); + } + + // Let's ensure not to update the base value if it's out of range, + // even if it will get sanitized + int newStrength = size + currentStrength; + if(newStrength > attribute.getMinValue() && newStrength < attribute.getMaxValue()) + { + spiritweb.giveManifestation(manifestation, size+currentStrength); + } + } + } + + //https://www.theoryland.com/intvmain.php?i=977#43 + if (metalType == Metals.MetalType.LERASIUM) + { + if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); + } } } } - else if (metalType != Metals.MetalType.LERASATIUM)//ignore lerasatium, that's handled in feruchemy + else if (metalType != Metals.MetalType.LERASATIUM) //ignore lerasatium, that's handled in feruchemy { //add to metal stored - final int addAmount = metalType.getAllomancyBurnTimeSeconds() * amount; + final int addAmount = metalType.getAllomancyBurnTimeSeconds(); AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); allo.adjustIngestedMetal(metalType, addAmount, true); } diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index a00518601..314bad4f2 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -61,6 +61,7 @@ public static class RegNameStubs public static final String NECKLACE = "_necklace"; public static final String INGOT = "_ingot"; public static final String NUGGET = "_nugget"; + public static final String INVESTED = "invested_"; public static final String SPIKE = "_spike"; diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index 4a1574601..f6cd121cd 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -110,7 +110,7 @@ public static TagKey makeItem(ResourceLocation resourceLocation) return ItemTags.create(resourceLocation); } - private static TagKey forgeItemTag(String name) + public static TagKey forgeItemTag(String name) { final ResourceLocation forgeTagToMake = new ResourceLocation("forge", name); return makeItem(forgeTagToMake); diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 70ae51c85..86399d6d8 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -142,6 +142,20 @@ public Rarity getRarity() } } + public boolean isGodMetal() + { + switch (this) + { + case ATIUM: + case LERASIUM: + case LERASATIUM: + case HARMONIUM: + return true; + default: + return false; + } + } + public boolean hasAssociatedManifestation() { switch (this) @@ -968,6 +982,11 @@ public Item getNugget() var resourceLoc = new ResourceLocation(CosmereAPI.COSMERE_MODID, getName() + Constants.RegNameStubs.NUGGET); return ForgeRegistries.ITEMS.getValue(resourceLoc); } + + public String getTranslationKey() + { + return "metal.cosmere." + this.getName(); + } } private static class MetalColor diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 5438eca89..1ec32ded7 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-04-30T10:54:20.1947047 Tags: cosmere +// 1.20.1 2025-11-02T18:25:53.8151675 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,7 +63,7 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -17ea46c722857735ed9d9f49ea9378791da43f3d data/forge/tags/items/nuggets.json +34932f00ba5047d84fbaf0188279380165a76292 data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json @@ -75,6 +75,7 @@ e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.js 88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json +fad026468e3e70a9536f8778505a17032b075744 data/forge/tags/items/nuggets/invested_metal_nugget.json 6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json 28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json 8208cc064a68c06d411c6a9bea026d2d78c38368 data/forge/tags/items/nuggets/lerasium.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 406ddd03c..27fcd2ba8 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2024-11-04T18:26:44.070954 Item Models: cosmere +// 1.20.1 2025-11-02T18:25:53.8181672 Item Models: cosmere c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json @@ -26,6 +26,7 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ing 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/harmonium_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/harmonium_nugget.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/invested_metal_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lead_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lead_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasatium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 36350d8f6..d0679408b 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-06-30T20:50:55.317948 Languages: en_us -a428967fe9e9d8ad9fe98f946c480d509ae57e47 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-02T18:25:53.8196666 Languages: en_us +74f880a72e7e885faa81c51acfef9f9db984c882 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index ef6528ec0..4dbe71183 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -81,6 +81,7 @@ "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", + "item.cosmere.invested_metal_nugget": "Invested Metal Nugget", "item.cosmere.iron_block": "Iron Block", "item.cosmere.iron_ingot": "Iron Ingot", "item.cosmere.iron_nugget": "Iron Nugget", @@ -173,6 +174,30 @@ "keys.cosmere.activators": "Power Activators", "keys.cosmere.main": "Cosmere", "manifestation.cosmere.none": "None", + "metal.cosmere.aluminum": "Aluminum", + "metal.cosmere.atium": "Atium", + "metal.cosmere.bendalloy": "Bendalloy", + "metal.cosmere.brass": "Brass", + "metal.cosmere.bronze": "Bronze", + "metal.cosmere.cadmium": "Cadmium", + "metal.cosmere.chromium": "Chromium", + "metal.cosmere.copper": "Copper", + "metal.cosmere.duralumin": "Duralumin", + "metal.cosmere.electrum": "Electrum", + "metal.cosmere.gold": "Gold", + "metal.cosmere.harmonium": "Harmonium", + "metal.cosmere.iron": "Iron", + "metal.cosmere.lead": "Lead", + "metal.cosmere.lerasatium": "Lerasatium", + "metal.cosmere.lerasium": "Lerasium", + "metal.cosmere.malatium": "Malatium", + "metal.cosmere.nickel": "Nickel", + "metal.cosmere.nicrosil": "Nicrosil", + "metal.cosmere.pewter": "Pewter", + "metal.cosmere.silver": "Silver", + "metal.cosmere.steel": "Steel", + "metal.cosmere.tin": "Tin", + "metal.cosmere.zinc": "Zinc", "power.cosmere.mode.set": "Mode set to: %s", "power.cosmere.toggle.active": "Power now active: %s", "power.cosmere.toggle.inactive": "Power now inactive: %s", diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index 828a64c1c..4e1023079 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -23,6 +23,7 @@ "#forge:nuggets/lerasatium", "#forge:nuggets/nickel", "#forge:nuggets/lead", - "#forge:nuggets/silver" + "#forge:nuggets/silver", + "#forge:nuggets/invested_metal_nugget" ] } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 1404bdc07..5438f1826 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-07-09T18:22:51.382172 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-11-01T18:50:54.5246299 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 073e4038e..6f5c12cad 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-07-09T18:22:51.400483 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-11-01T18:50:54.5626823 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 479a2b68d..81acd5d63 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -267,7 +267,7 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) .define('I', input) - .define('J', center) + .define('J', center) .pattern("III") .pattern("IJI") .pattern("III") diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 42c66f005..ed2fa2674 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -35,6 +35,7 @@ public EngLangGen(PackOutput output) protected void addTranslations() { addItemsAndBlocks(); + addMetals(); addEntities(); addAdvancements(); addManifestations(); @@ -104,6 +105,15 @@ private void addItemsAndBlocks() } } + private void addMetals() + { + // Work through each metal + for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) + { + add("metal.cosmere." + metalType.getName(), StringHelper.fixCapitalisation(metalType.getName())); + } + } + private void addEntities() { //Entities diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index e81bbf632..986c5e7c2 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -79,9 +79,15 @@ protected void addRecipes(Consumer consumer) compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).getBlock(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), ItemsRegistry.METAL_INGOTS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), BlocksRegistry.METAL_BLOCKS.get(metalType), metalType.getName() + "_block_deconstruct"); - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - + if(!metalType.isGodMetal()) + { + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + } + else { + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + } if (metalType.isAlloy()) { diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 539072b77..15164c196 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -11,6 +11,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; import leaf.cosmere.common.blocks.MetalOreBlock; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -97,7 +98,9 @@ private void addItems() final TagKey metalNuggetTag = metalType.getMetalNuggetTag(); getItemBuilder(Tags.Items.NUGGETS).add(metalNuggetTag); - final ItemRegistryObject nugRegObj = ItemsRegistry.METAL_NUGGETS.get(metalType); + ItemRegistryObject nugRegObj = ItemsRegistry.METAL_NUGGETS.get(metalType); + if (nugRegObj == null) nugRegObj = ItemsRegistry.GOD_METAL_NUGGETS.get(metalType); + if (nugRegObj != null) {// tell the Nugget that our Nuggets are related Item nuggetItem = nugRegObj.asItem(); @@ -124,6 +127,17 @@ private void addItems() addToTag(metalBlendTag, item); } } + + // Add the metal alloy nugget to the nugget tags + final TagKey nuggetTag = CosmereTags.Items.forgeItemTag("nuggets/invested_metal_nugget"); + getItemBuilder(Tags.Items.NUGGETS).add(nuggetTag); + + final ItemRegistryObject nugRegObj = ItemsRegistry.INVESTED_METAL_NUGGET; + if (nugRegObj != null) + { + Item nuggetItem = nugRegObj.asItem(); + addToTag(nuggetTag, nuggetItem); + } } private void addBlocks() diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 11970b6a4..408dd0625 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -6,6 +6,7 @@ import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EntityHelper; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.Feruchemy; @@ -43,20 +44,11 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof MetalNuggetItem beadItem) + if (stack.getItem() instanceof InvestedMetalNuggetItem ) { - Metals.MetalType metalType = beadItem.getMetalType(); - - switch (metalType) - { - //only care about god metal when trying to give others powers - case LERASATIUM: - MiscHelper.consumeNugget(target, metalType); - //need to shrink, because metal nugget only shrinks on item use finish from eating - stack.shrink(1); - break; - } - + MiscHelper.consumeNugget(target, stack, true); + //need to shrink, because metal nugget only shrinks on item use finish from eating + stack.shrink(1); } } } @@ -71,10 +63,10 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) } final LivingEntity livingEntity = event.getEntity(); - if (event.getItem().getItem() instanceof MetalNuggetItem item && item.getMetalType() == Metals.MetalType.LERASATIUM) + if (event.getItem().getItem() instanceof InvestedMetalNuggetItem) { //no need to shrink item count as it's already done as part of nugget use item finish - MiscHelper.consumeNugget(livingEntity, Metals.MetalType.LERASATIUM); + MiscHelper.consumeNugget(livingEntity, event.getItem(), true); } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index b0ea8f3e4..b8cb2b4bd 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -8,17 +8,29 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.MetalNuggetItem; import leaf.cosmere.feruchemy.common.config.FeruchemyConfigs; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.animal.horse.Llama; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; public class MiscHelper { - public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType metalType) + public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, boolean isInvestedNugget) { - if (metalType == null || livingEntity.level().isClientSide) + MetalNuggetItem nuggetItem = (MetalNuggetItem) itemStack.getItem(); + Metals.MetalType metalType = nuggetItem.getMetalType(); + + if (livingEntity.level().isClientSide) { return; } @@ -27,19 +39,34 @@ public static void consumeNugget(LivingEntity livingEntity, Metals.MetalType met { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if (metalType == Metals.MetalType.LERASATIUM) + if(isInvestedNugget) { - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) + HashSet metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); + Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); + + if(metalTypes != null && size != null) { - //give feruchemy - final boolean isFeruchemy = manifestation.getManifestationType() == Manifestations.ManifestationTypes.FERUCHEMY; - final boolean notAtium = manifestation.getPowerID() != Metals.MetalType.ATIUM.getID(); - if (isFeruchemy && notAtium)//don't double up on improving electrum + // Ensure it is for Allomancy only + if (metalType == Metals.MetalType.LERASATIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASATIUM) && metalTypes.size() == 2)) { - final double strength = manifestation.getStrength(iSpiritweb, true); - final int minimum = FeruchemyConfigs.SERVER.GOD_METAL_EAT_STRENGTH_MINIMUM.get(); + ArrayList manifestations = InvestedMetalNuggetItem.determineManifestations(itemStack); + HashMap existingManifestations = spiritweb.getManifestations(); - spiritweb.giveManifestation(manifestation, strength < minimum ? minimum : (int) (strength + 1)); + for(Manifestation manifestation: manifestations) + { + Integer currentStrength = existingManifestations.get(manifestation); + spiritweb.giveManifestation(manifestation, currentStrength == null ? size : currentStrength + size); + } + } + + //https://www.theoryland.com/intvmain.php?i=977#43 + if (metalType == Metals.MetalType.LERASATIUM) + { + if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Full Feruchemist Llama")); + } } } } diff --git a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java index 87fb9dfb6..9b0356302 100644 --- a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java @@ -31,6 +31,7 @@ public static void register(CommandDispatcher dispatcher) .then(SummonCommand.register(dispatcher)) .then(CosmereEffectCommand.register(dispatcher)) .then(ChooseMetalbornPowersCommand.register(dispatcher)) + .then(MetalAlloyCommand.register(dispatcher)) ); } } diff --git a/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java b/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java new file mode 100644 index 000000000..4c7c03287 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java @@ -0,0 +1,72 @@ +package leaf.cosmere.common.commands.arguments; + +import com.mojang.brigadier.StringReader; +import com.mojang.brigadier.arguments.ArgumentType; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; +import com.mojang.brigadier.suggestion.Suggestions; +import com.mojang.brigadier.suggestion.SuggestionsBuilder; +import leaf.cosmere.api.Constants; +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Metals.MetalType; +import net.minecraft.commands.SharedSuggestionProvider; +import net.minecraft.network.chat.Component; + +import java.util.Collection; +import java.util.Collections; +import java.util.Locale; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; + +public class MetalArgumentType implements ArgumentType +{ + private static final Collection EXAMPLES = Stream.of(MetalType.STEEL.getName()).toList(); + + public static final DynamicCommandExceptionType INVALID_METAL_EXCEPTION = + new DynamicCommandExceptionType((metal) -> + Component.translatable(Constants.Strings.POWER_INVALID, metal)); + + public static SuggestionsBuilder addMetalNamesWithTooltip(SuggestionsBuilder builder) + { + for (MetalType metalType : EnumUtils.METAL_TYPES) + { + builder.suggest(metalType.getName(), Component.translatable(metalType.getTranslationKey())); + } + + builder.buildFuture(); + return builder; + } + + public static MetalArgumentType createArgument() + { + return new MetalArgumentType(); + } + + @Override + public MetalType parse(StringReader reader) throws CommandSyntaxException + { + try + { + String read = reader.readString(); + return MetalType.valueOf(read.toUpperCase(Locale.ROOT)); + } catch (IllegalArgumentException e) + { + throw INVALID_METAL_EXCEPTION.create(MetalType.valueOf(reader.getRead())); + } + } + + @Override + public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) + { + return context.getSource() instanceof SharedSuggestionProvider + ? SharedSuggestionProvider.suggest(Collections.emptyList(), addMetalNamesWithTooltip(builder)) + : Suggestions.empty(); + } + + @Override + public Collection getExamples() + { + return EXAMPLES; + } +} diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java new file mode 100644 index 000000000..121690116 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java @@ -0,0 +1,76 @@ +/* + * File updated ~ 27 - 2 - 2023 ~ Leaf + */ + +package leaf.cosmere.common.commands.subcommands; + +import com.mojang.brigadier.CommandDispatcher; +import com.mojang.brigadier.arguments.IntegerArgumentType; +import com.mojang.brigadier.builder.ArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; +import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.common.commands.arguments.MetalArgumentType; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import net.minecraft.commands.CommandSourceStack; +import net.minecraft.commands.Commands; +import net.minecraft.network.chat.Component; +import net.minecraft.world.item.ItemStack; + +import java.util.HashSet; + +import static leaf.cosmere.common.registry.ItemsRegistry.INVESTED_METAL_NUGGET; + +public class MetalAlloyCommand extends ModCommand +{ + + @Override + public int run(CommandContext context) throws CommandSyntaxException + { + return SINGLE_SUCCESS; + } + + + + private static int give(CommandContext context) throws CommandSyntaxException + { + ItemStack itemStack = new ItemStack(INVESTED_METAL_NUGGET.get()); + HashSet metalTypes = new HashSet<>(); + + int sizeArg = context.getArgument("size", Integer.class); + + for(int i = 0; i < 3; i++) + { + try { + MetalType metalTypeArg = context.getArgument("metal" + i, MetalType.class); + + metalTypes.add(metalTypeArg); + } catch (IllegalArgumentException e) { + break; + } + } + + if(InvestedMetalNuggetItem.writeMetalAlloyNbtData(itemStack.getOrCreateTag(), metalTypes, sizeArg)) + { + itemStack.setCount(1); + context.getSource().getPlayerOrException().getInventory().add(itemStack); + } else + { + String errorMsg = "Invalid Metals / Ratios!"; + throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); + } + + return SINGLE_SUCCESS; + } + + public static ArgumentBuilder register(CommandDispatcher dispatcher) + { + return Commands.literal("metallic_alloy").requires(context -> context.hasPermission(2)) + .then(Commands.argument("size", IntegerArgumentType.integer(1, 16)) + .then(Commands.argument("metal0", MetalArgumentType.createArgument()) + .executes(MetalAlloyCommand::give) + .then(Commands.argument("metal1", MetalArgumentType.createArgument()) + .executes(MetalAlloyCommand::give)))); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index e6b545d35..c4a1d9425 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -5,8 +5,10 @@ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.IHasColour; +import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; @@ -18,6 +20,8 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.ForgeRegistries; +import java.util.HashSet; + public final class ColorHandler { @@ -32,9 +36,21 @@ public static void init() ItemColors itemColors = Minecraft.getInstance().getItemColors(); ItemColor itemColorHandler = - (itemStack, tintIndex) -> tintIndex == 0 - ? ((IHasColour) itemStack.getItem()).getColourValue() - : -1; + (itemStack, tintIndex) -> + { + if(tintIndex == 0) + { + if(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem) + { + HashSet metals = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); + Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); + if(metals != null && size != null) return investedMetalNuggetItem.getColourValue(metals, size); + + } + return ((IHasColour) itemStack.getItem()).getColourValue(); + } + return -1; + }; ItemColor blockItemColorHandler = (itemStack, tintIndex) -> tintIndex == 0 diff --git a/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java new file mode 100644 index 000000000..858035349 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java @@ -0,0 +1,298 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Manifestations.ManifestationTypes; +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.awt.*; +import java.util.*; +import java.util.List; + +public class InvestedMetalNuggetItem extends MetalNuggetItem +{ + public static int MIN_SIZE = 1; + public static int MAX_SIZE = 16; + + public InvestedMetalNuggetItem(MetalType metalType) + { + super(metalType); + } + + public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) + { + output.accept(new ItemStack(this)); + ItemStack itemStack = new ItemStack(this); + writeMetalAlloyNbtData(itemStack.getOrCreateTag(), alloyedMetals, size); + output.accept(itemStack); + } + + // Allow Lerasium to have alloy nuggets of multiple god metals in the future + // This will allow for establishing connections with other shards via God metal injestion + // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 + // (eg. Lerasium + Tanavastium + Koravellium) would give access to raw Investiture for surges without stormlight + // but the spren bond would still be needed for use of surges + + public static boolean isAlloy(CompoundTag nbt) + { + if(nbt.contains("alloyedMetals")) + { + int[] metalIds = nbt.getIntArray("alloyedMetals"); + if (metalIds.length > 1) return true; + } + return false; + } + + public static HashSet readMetalAlloyNbtData(CompoundTag nbt) + { + if(nbt.contains("alloyedMetals")) + { + int[] metalIds = nbt.getIntArray("alloyedMetals"); + HashSet metalTypes = new HashSet<>(); + for (int metalId : metalIds) + { + metalTypes.add( + MetalType.valueOf(metalId).isPresent() ? MetalType.valueOf(metalId).get() : MetalType.SILVER); + } + return metalTypes; + } + return null; + } + + public static Integer readMetalAlloySizeNbtData(CompoundTag nbt) + { + if(nbt.contains("nuggetSize")) return nbt.getInt("nuggetSize"); + nbt.putInt("nuggetSize", MAX_SIZE); + return MAX_SIZE; + } + + public static boolean writeMetalAlloyNbtData(CompoundTag nbt, HashSet alloyedMetals, int size) + { + if (size > MAX_SIZE || size < MIN_SIZE) return false; + + ArrayList metalIds = new ArrayList<>(); + boolean containsGodMetal = false; + boolean containsNormalMetal = false; + for (MetalType alloyedMetal : alloyedMetals) + { + metalIds.add(alloyedMetal.getID()); + + if (alloyedMetal.isGodMetal()) + { + containsGodMetal = true; + } + else + { + if (containsGodMetal && containsNormalMetal) return false; + containsNormalMetal = true; + } + } + nbt.putIntArray("alloyedMetals", metalIds); + nbt.putInt("nuggetSize", size); + return true; + } + + public static Color mixColors(ArrayList colors, int size) + { + double r = 0; + double g = 0; + double b = 0; + + double ratio = 1f / colors.size(); + + for(Color color: colors) { + r += (color.getRed() * ratio); + g += (color.getGreen() * ratio); + b += (color.getBlue() * ratio); + } + + // Clamp just in case of rounding + r = Math.min(255, Math.max(0, r)); + g = Math.min(255, Math.max(0, g)); + b = Math.min(255, Math.max(0, b)); + + return new Color((int) r, (int) g, (int) b); + } + + public Color getColour(HashSet metals, int size) + { + ArrayList colors = new ArrayList<>(); + int i = 0; + for(MetalType metal : metals) + { + colors.add(metal.getColor()); + } + return mixColors(colors, size); + } + + public int getColourValue(HashSet metals, int size) + { + return getColour(metals, size).getRGB(); + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + HashSet metals = readMetalAlloyNbtData(stack.getOrCreateTag()); + Integer size = readMetalAlloySizeNbtData(stack.getOrCreateTag()); + + if(metals != null) + { + MutableComponent metalListComponent = Component.empty(); + for (Iterator it = metals.iterator(); it.hasNext(); ) + { + MetalType metal = it.next(); + metalListComponent.append(Component.translatable(metal.getTranslationKey()) + .withStyle(Style.EMPTY.withColor(metal.getColorValue()))); + if (it.hasNext()) metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); + } + tooltip.add(metalListComponent); + + + } + + tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( + Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); + + ArrayList manifestations = determineManifestations(stack); + + if(!manifestations.isEmpty() & size != null) + { + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); + for(Manifestation manifestation : manifestations) + { + tooltip.add(Component.literal("+" + size + " ").append( + Component.translatable(manifestation.getTranslationKey())) + .withStyle(ChatFormatting.BLUE)); + } + } + } + + @Override + public Component getName(ItemStack stack) { + HashSet metals = readMetalAlloyNbtData(stack.getOrCreateTag()); + if(metals != null && metals.size() == 1) + { + return Component.translatable("item.cosmere." + metals.iterator().next().getName() + "_nugget"); + } + return super.getName(stack); + } + + @Override + public Rarity getRarity(ItemStack itemStack) { + if(!(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem)) return Rarity.COMMON; + + Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); + if(size == null) return Rarity.COMMON; + + boolean containsGodMetal = false; + Set metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); + if(metalTypes == null) return investedMetalNuggetItem.getMetalType().getRarity(); + for(MetalType metalType : metalTypes) + { + if (metalType.isGodMetal()) { containsGodMetal = true; break; } + } + + if (containsGodMetal) + { + if (size <= 8) return Rarity.UNCOMMON; + else if (size == MAX_SIZE) return Rarity.EPIC; + return Rarity.RARE; + } + + return Rarity.COMMON; + } + + @Override + public boolean isFoil(ItemStack itemStack) + { + if(!(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem)) return false; + if(InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()) == null) { + return investedMetalNuggetItem.getMetalType().isGodMetal(); + } + return super.isFoil(itemStack); + } + + // This needs to be replaced once a connection system is in place + // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 + // Mixing Lerasium with other god metals or magic systems metals could create connections + // for new Investiture sources and new Manifestations + public static ArrayList determineManifestations(ItemStack itemStack) { + ArrayList manifestations = new ArrayList<>(); + + CompoundTag nbt = itemStack.getOrCreateTag(); + HashSet metals = readMetalAlloyNbtData(nbt); + if (metals == null && itemStack.getItem() instanceof InvestedMetalNuggetItem item) + { + if (item.getMetalType() == MetalType.LERASIUM) + { + for(MetalType metal : EnumUtils.METAL_TYPES) + { + Manifestation manifestation = ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + else if (item.getMetalType() == MetalType.LERASATIUM) + { + for(MetalType metal : EnumUtils.METAL_TYPES) + { + Manifestation manifestation = ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + return manifestations; + } + else { + Manifestation manifestation = null; + if (metals.contains(MetalType.LERASIUM)) { + for (MetalType metal : metals) + { + if (metal != MetalType.LERASIUM) + { + manifestation = ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + } + else if (metals.contains(MetalType.LERASATIUM)) + { + for (MetalType metal : metals) + { + if (metal != MetalType.LERASATIUM) + { + manifestation = ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + } + return manifestations; + } + + } +} diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index bcd12624c..5881b6365 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -15,6 +15,7 @@ import net.minecraft.world.level.Level; import javax.annotation.Nonnull; +import java.util.Set; public class MetalNuggetItem extends MetalItem { @@ -70,4 +71,13 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity return itemstack; } + @Override + public boolean isFoil(ItemStack itemStack) + { + // God Metals should have foil + MetalNuggetItem item = (MetalNuggetItem) itemStack.getItem(); + if(item.getMetalType().isGodMetal()) return true; + return super.isFoil(itemStack); + } + } diff --git a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java index fd81f2b72..496da0f83 100644 --- a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java @@ -4,6 +4,7 @@ import leaf.cosmere.common.commands.arguments.AllomancyArgumentType; import leaf.cosmere.common.commands.arguments.FeruchemyArgumentType; import leaf.cosmere.common.commands.arguments.ManifestationsArgumentType; +import leaf.cosmere.common.commands.arguments.MetalArgumentType; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; import net.minecraft.commands.synchronization.SingletonArgumentInfo; @@ -30,4 +31,9 @@ public class ArgumentTypeRegistry () -> ArgumentTypeInfos.registerByClass( FeruchemyArgumentType.class, SingletonArgumentInfo.contextFree(FeruchemyArgumentType::createArgument))); + + public static final RegistryObject> METAL_ARGUMENT_TYPE = ARGUMENT_TYPE_INFOS.register("metal_argument_type", + () -> ArgumentTypeInfos.registerByClass( + MetalArgumentType.class, + SingletonArgumentInfo.contextFree(MetalArgumentType::createArgument))); } diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index fe9b0dbf8..3750bff0e 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -4,9 +4,12 @@ package leaf.cosmere.common.registry; +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.InvestedMetalNuggetItem; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import net.minecraft.network.chat.Component; @@ -16,6 +19,9 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import java.util.Arrays; +import java.util.HashSet; + public class CreativeTabsRegistry { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Cosmere.MODID, CreativeTabsRegistry::addToExistingTabs); @@ -31,9 +37,46 @@ public class CreativeTabsRegistry { CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); + addLerasiumAlloyNuggets(output); + addLerasatiumAlloyNuggets(output); }) ); + + private static void addLerasiumAlloyNuggets(CreativeModeTab.Output output) + { + for (MetalType metalType : Arrays.asList(EnumUtils.METAL_TYPES).subList(0, 16)) + { + if (metalType.hasFeruchemicalEffect()) + { + final InvestedMetalNuggetItem item = ItemsRegistry.INVESTED_METAL_NUGGET.get(); + + HashSet metalTypes = new HashSet<>(); + metalTypes.add(MetalType.LERASIUM); + metalTypes.add(metalType); + + item.addFilled(output,metalTypes , 16); + } + } + } + + private static void addLerasatiumAlloyNuggets(CreativeModeTab.Output output) + { + for (MetalType metalType : Arrays.asList(EnumUtils.METAL_TYPES).subList(0, 16)) + { + if (metalType.hasFeruchemicalEffect()) + { + final InvestedMetalNuggetItem item = (InvestedMetalNuggetItem) ItemsRegistry.INVESTED_METAL_NUGGET.get(); + HashSet metalTypes = new HashSet<>(); + metalTypes.add(MetalType.LERASATIUM); + metalTypes.add(metalType); + + item.addFilled(output,metalTypes , 16); + } + } + } + + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { ResourceKey tabKey = event.getTabKey(); diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 794f0b2d1..0d1e5dba4 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -8,10 +8,7 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.GuideItem; -import leaf.cosmere.common.items.MetalIngotItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import leaf.cosmere.common.items.MetalRawOreItem; +import leaf.cosmere.common.items.*; import leaf.cosmere.common.registration.impl.ItemDeferredRegister; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import net.minecraft.world.item.Item; @@ -29,10 +26,13 @@ public class ItemsRegistry public static final ItemRegistryObject GUIDE = ITEMS.register("guide", GuideItem::new); + // Add + public static final ItemRegistryObject INVESTED_METAL_NUGGET = ITEMS.register( + RegNameStubs.INVESTED + "metal" + RegNameStubs.NUGGET, + () -> new InvestedMetalNuggetItem(Metals.MetalType.SILVER)); //Mass items gen - public static final Map> METAL_RAW_ORE = Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::hasOre) @@ -56,6 +56,7 @@ public class ItemsRegistry public static final Map> METAL_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() || type == Metals.MetalType.COPPER) // I'm sorry for this Leaf :( >> Gerbagel + .filter(type -> !type.isGodMetal()) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -63,6 +64,16 @@ public class ItemsRegistry () -> new MetalNuggetItem(type) ))); + public static final Map> GOD_METAL_NUGGETS = + Arrays.stream(EnumUtils.METAL_TYPES) + .filter(Metals.MetalType::isGodMetal) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + type.getName() + RegNameStubs.NUGGET, + () -> new InvestedMetalNuggetItem(type) + ))); + public static final Map> METAL_INGOTS = Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() && type != Metals.MetalType.COPPER) diff --git a/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java index e267229c0..6375434c3 100644 --- a/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java +++ b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java @@ -4,6 +4,7 @@ package leaf.cosmere.common.util; +import leaf.cosmere.api.Metals; import leaf.cosmere.common.resource.ore.OreType; public class CosmereEnumUtils From 26c923130c2eafef156713c38bbf3b2e1b9b7c98 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Tue, 4 Nov 2025 20:39:37 -0500 Subject: [PATCH 1033/1090] switch to using interfaces and base classes --- .../AllomancyEntityEventHandler.java | 7 +- .../allomancy/common/utils/MiscHelper.java | 17 +- src/api/java/leaf/cosmere/api/IHasAlloy.java | 23 ++ src/api/java/leaf/cosmere/api/IHasSize.java | 27 ++ .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 6 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 4 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 2 +- .../data/forge/tags/items/nuggets.json | 2 +- .../leaf/cosmere/items/ItemModelsGen.java | 6 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 6 +- .../FeruchemyEntityEventHandler.java | 8 +- .../feruchemy/common/utils/MiscHelper.java | 35 +- .../subcommands/MetalAlloyCommand.java | 9 +- .../common/eventHandlers/ColorHandler.java | 10 +- .../leaf/cosmere/common/items/AlloyItem.java | 112 +++++++ .../common/items/GodMetalAlloyNuggetItem.java | 210 ++++++++++++ .../common/items/GodMetalNuggetItem.java | 97 ++++++ .../common/items/InvestedMetalNuggetItem.java | 298 ------------------ .../common/registry/CreativeTabsRegistry.java | 10 +- .../common/registry/ItemsRegistry.java | 8 +- 21 files changed, 534 insertions(+), 367 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/IHasAlloy.java create mode 100644 src/api/java/leaf/cosmere/api/IHasSize.java create mode 100644 src/main/java/leaf/cosmere/common/items/AlloyItem.java create mode 100644 src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java create mode 100644 src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java delete mode 100644 src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index a9bae56b4..d78b7888f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -11,8 +11,7 @@ import leaf.cosmere.allomancy.common.manifestation.AllomancyNicrosil; import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; -import leaf.cosmere.api.Metals; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; @@ -50,7 +49,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof InvestedMetalNuggetItem) + if (stack.getItem() instanceof GodMetalAlloyNuggetItem) { MiscHelper.consumeNugget(target, stack, true); //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item @@ -75,7 +74,7 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) final LivingEntity livingEntity = event.getEntity(); if (event.getItem().getItem() instanceof MetalNuggetItem item) { - MiscHelper.consumeNugget(livingEntity, event.getItem(), item instanceof InvestedMetalNuggetItem); + MiscHelper.consumeNugget(livingEntity, event.getItem(), true); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 859498e47..9d0188798 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -5,29 +5,22 @@ package leaf.cosmere.allomancy.common.utils; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; -import leaf.cosmere.allomancy.common.config.AllomancyConfigs; -import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; -import org.checkerframework.checker.units.qual.A; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; -import java.util.UUID; public class MiscHelper { @@ -46,17 +39,17 @@ public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if(isInvestedNugget) + if(itemStack.getItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) { - HashSet metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); - Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); + HashSet metalTypes = godMetalAlloyNuggetItem.readMetalAlloyNbtData(itemStack); + Integer size = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); if(size != null) { // Ensure it is for Allomancy only if (metalType == Metals.MetalType.LERASIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASIUM) && metalTypes.size() == 2)) { - ArrayList manifestations = InvestedMetalNuggetItem.determineManifestations(itemStack); + ArrayList manifestations = godMetalAlloyNuggetItem.determineManifestations(itemStack); for(Manifestation manifestation: manifestations) { diff --git a/src/api/java/leaf/cosmere/api/IHasAlloy.java b/src/api/java/leaf/cosmere/api/IHasAlloy.java new file mode 100644 index 000000000..091eb435c --- /dev/null +++ b/src/api/java/leaf/cosmere/api/IHasAlloy.java @@ -0,0 +1,23 @@ +package leaf.cosmere.api; + +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; + +import java.awt.*; +import java.util.ArrayList; +import java.util.HashSet; + +public interface IHasAlloy +{ + HashSet readMetalAlloyNbtData(ItemStack itemStack); + + boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals); + + Color mixColors(ArrayList colors); + + Color getColour(HashSet metals); + + int getColourValue(HashSet metals); + +} diff --git a/src/api/java/leaf/cosmere/api/IHasSize.java b/src/api/java/leaf/cosmere/api/IHasSize.java new file mode 100644 index 000000000..5fc67f084 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/IHasSize.java @@ -0,0 +1,27 @@ +package leaf.cosmere.api; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.item.ItemStack; + +public interface IHasSize +{ + int getMaxSize(); + + int getMinSize(); + + default Integer readMetalAlloySizeNbtData(ItemStack itemStack) + { + CompoundTag nbt = itemStack.getOrCreateTag(); + if(nbt.contains("nuggetSize")) return nbt.getInt("nuggetSize"); + nbt.putInt("nuggetSize", getMaxSize()); + return getMaxSize(); + } + + default boolean writeMetalAlloySizeNbtData(ItemStack itemStack, int size) + { + CompoundTag nbt = itemStack.getOrCreateTag(); + if (size > getMaxSize() || size < getMinSize()) return false; + nbt.putInt("nuggetSize", size); + return true; + } +} diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 1ec32ded7..be08a7f78 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-02T18:25:53.8151675 Tags: cosmere +// 1.20.1 2025-11-04T20:27:45.3615464 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,7 +63,7 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -34932f00ba5047d84fbaf0188279380165a76292 data/forge/tags/items/nuggets.json +8cffcc7211d4653163004dd65e2fe7263b1d9d2b data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json @@ -74,8 +74,8 @@ e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.js 56b70b9f34d9048ca4097c2e77debc2e7ad28c6b data/forge/tags/items/nuggets/copper.json 88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json +857125dd8fd7e0d832180d2e39e2f711f9ecd7e5 data/forge/tags/items/nuggets/god_metal_alloy_nugget.json ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json -fad026468e3e70a9536f8778505a17032b075744 data/forge/tags/items/nuggets/invested_metal_nugget.json 6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json 28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json 8208cc064a68c06d411c6a9bea026d2d78c38368 data/forge/tags/items/nuggets/lerasium.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 27fcd2ba8..2e995d621 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-02T18:25:53.8181672 Item Models: cosmere +// 1.20.1 2025-11-04T20:27:45.366547 Item Models: cosmere c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json @@ -23,10 +23,10 @@ c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/duralumin_in 8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/electrum_blend.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/electrum_nugget.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/god_metal_alloy_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/harmonium_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/harmonium_nugget.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/invested_metal_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lead_ingot.json 8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lead_nugget.json c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasatium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index d0679408b..1aed50a48 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-02T18:25:53.8196666 Languages: en_us -74f880a72e7e885faa81c51acfef9f9db984c882 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-04T20:27:45.3680481 Languages: en_us +bad86594155ebad3bae8ebcdf486cc95dac0f6a7 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 4dbe71183..57680f53b 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -75,13 +75,13 @@ "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_ingot": "Electrum Ingot", "item.cosmere.electrum_nugget": "Electrum Nugget", + "item.cosmere.god_metal_alloy_nugget": "God Metal Alloy Nugget", "item.cosmere.gold_block": "Gold Block", "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", - "item.cosmere.invested_metal_nugget": "Invested Metal Nugget", "item.cosmere.iron_block": "Iron Block", "item.cosmere.iron_ingot": "Iron Ingot", "item.cosmere.iron_nugget": "Iron Nugget", diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index 4e1023079..deeb76f65 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -24,6 +24,6 @@ "#forge:nuggets/nickel", "#forge:nuggets/lead", "#forge:nuggets/silver", - "#forge:nuggets/invested_metal_nugget" + "#forge:nuggets/god_metal_alloy_nugget" ] } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index 4fc3cacf3..b8c9ba0b5 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -7,9 +7,7 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.MetalIngotItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import leaf.cosmere.common.items.MetalRawOreItem; +import leaf.cosmere.common.items.*; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -49,7 +47,7 @@ else if (item instanceof MetalIngotItem) simpleItem(path, "metal_ingot"); continue; } - else if (item instanceof MetalNuggetItem) + else if (item instanceof MetalNuggetItem || item instanceof GodMetalNuggetItem || item instanceof GodMetalAlloyNuggetItem) { simpleItem(path, "metal_nugget"); continue; diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 15164c196..8e971551e 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -11,7 +11,7 @@ import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.blocks.MetalBlock; import leaf.cosmere.common.blocks.MetalOreBlock; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.MetalIngotItem; import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -129,10 +129,10 @@ private void addItems() } // Add the metal alloy nugget to the nugget tags - final TagKey nuggetTag = CosmereTags.Items.forgeItemTag("nuggets/invested_metal_nugget"); + final TagKey nuggetTag = CosmereTags.Items.forgeItemTag("nuggets/god_metal_alloy_nugget"); getItemBuilder(Tags.Items.NUGGETS).add(nuggetTag); - final ItemRegistryObject nugRegObj = ItemsRegistry.INVESTED_METAL_NUGGET; + final ItemRegistryObject nugRegObj = ItemsRegistry.GOD_METAL_ALLOY_NUGGET; if (nugRegObj != null) { Item nuggetItem = nugRegObj.asItem(); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 408dd0625..78478f1fc 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -4,10 +4,8 @@ package leaf.cosmere.feruchemy.common.eventHandlers; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EntityHelper; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; -import leaf.cosmere.common.items.MetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.effects.store.BrassStoreEffect; @@ -44,7 +42,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof InvestedMetalNuggetItem ) + if (stack.getItem() instanceof GodMetalAlloyNuggetItem) { MiscHelper.consumeNugget(target, stack, true); //need to shrink, because metal nugget only shrinks on item use finish from eating @@ -63,7 +61,7 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) } final LivingEntity livingEntity = event.getEntity(); - if (event.getItem().getItem() instanceof InvestedMetalNuggetItem) + if (event.getItem().getItem() instanceof GodMetalAlloyNuggetItem) { //no need to shrink item count as it's already done as part of nugget use item finish MiscHelper.consumeNugget(livingEntity, event.getItem(), true); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index b8cb2b4bd..59422dda3 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -4,22 +4,20 @@ package leaf.cosmere.feruchemy.common.utils; -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; -import leaf.cosmere.feruchemy.common.config.FeruchemyConfigs; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; -import java.util.HashMap; import java.util.HashSet; public class MiscHelper @@ -39,23 +37,34 @@ public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if(isInvestedNugget) + if(itemStack.getItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) { - HashSet metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); - Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); + HashSet metalTypes = godMetalAlloyNuggetItem.readMetalAlloyNbtData(itemStack); + Integer size = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); - if(metalTypes != null && size != null) + if(size != null) { // Ensure it is for Allomancy only if (metalType == Metals.MetalType.LERASATIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASATIUM) && metalTypes.size() == 2)) { - ArrayList manifestations = InvestedMetalNuggetItem.determineManifestations(itemStack); - HashMap existingManifestations = spiritweb.getManifestations(); + ArrayList manifestations = godMetalAlloyNuggetItem.determineManifestations(itemStack); for(Manifestation manifestation: manifestations) { - Integer currentStrength = existingManifestations.get(manifestation); - spiritweb.giveManifestation(manifestation, currentStrength == null ? size : currentStrength + size); + int currentStrength = 0; + if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; + AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); + if(attributeInstance != null) { + currentStrength = (int) attributeInstance.getValue(); + } + + // Let's ensure not to update the base value if it's out of range, + // even if it will get sanitized + int newStrength = size + currentStrength; + if(newStrength > attribute.getMinValue() && newStrength < attribute.getMaxValue()) + { + spiritweb.giveManifestation(manifestation, size+currentStrength); + } } } diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java index 121690116..22cd5841e 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java @@ -12,7 +12,7 @@ import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.common.commands.arguments.MetalArgumentType; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; @@ -20,7 +20,7 @@ import java.util.HashSet; -import static leaf.cosmere.common.registry.ItemsRegistry.INVESTED_METAL_NUGGET; +import static leaf.cosmere.common.registry.ItemsRegistry.GOD_METAL_ALLOY_NUGGET; public class MetalAlloyCommand extends ModCommand { @@ -35,7 +35,8 @@ public int run(CommandContext context) throws CommandSyntaxE private static int give(CommandContext context) throws CommandSyntaxException { - ItemStack itemStack = new ItemStack(INVESTED_METAL_NUGGET.get()); + GodMetalAlloyNuggetItem item = GOD_METAL_ALLOY_NUGGET.get(); + ItemStack itemStack = new ItemStack(item); HashSet metalTypes = new HashSet<>(); int sizeArg = context.getArgument("size", Integer.class); @@ -51,7 +52,7 @@ private static int give(CommandContext context) throws Comma } } - if(InvestedMetalNuggetItem.writeMetalAlloyNbtData(itemStack.getOrCreateTag(), metalTypes, sizeArg)) + if(item.writeMetalAlloyNbtData(itemStack, metalTypes) && item.writeMetalAlloySizeNbtData(itemStack, sizeArg)) { itemStack.setCount(1); context.getSource().getPlayerOrException().getInventory().add(itemStack); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index c4a1d9425..9c1276db2 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -4,11 +4,11 @@ package leaf.cosmere.common.eventHandlers; +import leaf.cosmere.api.IHasAlloy; import leaf.cosmere.api.IHasColour; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; @@ -40,12 +40,10 @@ public static void init() { if(tintIndex == 0) { - if(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem) + if(itemStack.getItem() instanceof IHasAlloy alloyItem) { - HashSet metals = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); - Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); - if(metals != null && size != null) return investedMetalNuggetItem.getColourValue(metals, size); - + HashSet metals = alloyItem.readMetalAlloyNbtData(itemStack); + if(metals != null) return alloyItem.getColourValue(metals); } return ((IHasColour) itemStack.getItem()).getColourValue(); } diff --git a/src/main/java/leaf/cosmere/common/items/AlloyItem.java b/src/main/java/leaf/cosmere/common/items/AlloyItem.java new file mode 100644 index 000000000..88c087627 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/AlloyItem.java @@ -0,0 +1,112 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.IHasAlloy; +import leaf.cosmere.api.IHasMetalType; +import leaf.cosmere.api.Metals; +import leaf.cosmere.common.properties.PropTypes; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; + +import java.awt.*; +import java.util.ArrayList; +import java.util.HashSet; + +public class AlloyItem extends BaseItem implements IHasAlloy +{ + public AlloyItem() + { + super(); + } + + /** + * Returns true if the item can be used on the given entity, e.g. shears on sheep. + */ + public InteractionResult interactLivingEntity(ItemStack stack, Player playerIn, LivingEntity target, InteractionHand hand) + { + return InteractionResult.PASS; + } + + public HashSet readMetalAlloyNbtData(ItemStack itemStack) + { + CompoundTag nbt = itemStack.getOrCreateTag(); + if(nbt.contains("alloyedMetals")) + { + int[] metalIds = nbt.getIntArray("alloyedMetals"); + HashSet metalTypes = new HashSet<>(); + for (int metalId : metalIds) + { + metalTypes.add( + Metals.MetalType.valueOf(metalId).isPresent() ? + Metals.MetalType.valueOf(metalId).get() : Metals.MetalType.SILVER); + } + return metalTypes; + } + return null; + } + + public boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals) + { + CompoundTag nbt = itemStack.getOrCreateTag(); + ArrayList metalIds = new ArrayList<>(); + boolean containsGodMetal = false; + boolean containsNormalMetal = false; + for (Metals.MetalType alloyedMetal : alloyedMetals) + { + metalIds.add(alloyedMetal.getID()); + + if (alloyedMetal.isGodMetal()) + { + containsGodMetal = true; + } + else + { + if (containsGodMetal && containsNormalMetal) return false; + containsNormalMetal = true; + } + } + nbt.putIntArray("alloyedMetals", metalIds); + return true; + } + + public Color mixColors(ArrayList colors) + { + double r = 0; + double g = 0; + double b = 0; + + double ratio = 1f / colors.size(); + + for(Color color: colors) { + r += (color.getRed() * ratio); + g += (color.getGreen() * ratio); + b += (color.getBlue() * ratio); + } + + // Clamp just in case of rounding + r = Math.min(255, Math.max(0, r)); + g = Math.min(255, Math.max(0, g)); + b = Math.min(255, Math.max(0, b)); + + return new Color((int) r, (int) g, (int) b); + } + + public Color getColour(HashSet metals) + { + ArrayList colors = new ArrayList<>(); + int i = 0; + for(Metals.MetalType metal : metals) + { + colors.add(metal.getColor()); + } + return mixColors(colors); + } + + public int getColourValue(HashSet metals) + { + return getColour(metals).getRGB(); + } +} diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java new file mode 100644 index 000000000..17a093288 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -0,0 +1,210 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.*; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import javax.annotation.Nonnull; +import java.util.*; + +public class GodMetalAlloyNuggetItem extends AlloyItem implements IHasSize +{ + public static int MIN_SIZE = 1; + public static int MAX_SIZE = 16; + + public int getMinSize() + { + return MIN_SIZE; + } + + public int getMaxSize() + { + return MAX_SIZE; + } + + public GodMetalAlloyNuggetItem() + { + super(); + } + + public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) + { + output.accept(new ItemStack(this)); + ItemStack itemStack = new ItemStack(this); + writeMetalAlloyNbtData(itemStack, alloyedMetals); + writeMetalAlloySizeNbtData(itemStack, size); + output.accept(itemStack); + } + + @Nonnull + @Override + public UseAnim getUseAnimation(ItemStack stack) + { + return UseAnim.EAT; + } + + + @Override + public int getUseDuration(ItemStack stack) + { + //be annoying enough that people prefer metal vials + return 16; + } + + @Nonnull + @Override + public InteractionResultHolder use(Level world, Player player, @Nonnull InteractionHand hand) + { + ItemStack stack = player.getItemInHand(hand); + if (player.canEat(true)) + { + player.startUsingItem(hand); + return InteractionResultHolder.consume(stack); + } + return InteractionResultHolder.pass(stack); + } + + @Override + public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) + { + if (pLevel.isClientSide) + { + return itemstack; + } + + if (pLivingEntity instanceof Player player && !player.isCreative()) + { + itemstack.shrink(1); + } + + pLivingEntity.hurt(CosmereDamageTypesRegistry.EAT_METAL.source(pLivingEntity.level()), 1); + + return itemstack; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + HashSet metals = readMetalAlloyNbtData(stack); + Integer size = readMetalAlloySizeNbtData(stack); + + if (metals != null) + { + MutableComponent metalListComponent = Component.empty(); + for (Iterator it = metals.iterator(); it.hasNext(); ) + { + Metals.MetalType metal = it.next(); + metalListComponent.append(Component.translatable(metal.getTranslationKey()) + .withStyle(Style.EMPTY.withColor(metal.getColorValue()))); + if (it.hasNext()) metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); + } + tooltip.add(metalListComponent); + } + + tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( + Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); + + ArrayList manifestations = determineManifestations(stack); + + if (!manifestations.isEmpty() & size != null) + { + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); + for (Manifestation manifestation : manifestations) + { + tooltip.add(Component.literal("+" + size + " ").append( + Component.translatable(manifestation.getTranslationKey())) + .withStyle(ChatFormatting.BLUE)); + } + } + } + + @Override + public Rarity getRarity(ItemStack itemStack) + { + Integer size = readMetalAlloySizeNbtData(itemStack); + if (size == null) return Rarity.COMMON; + + boolean containsGodMetal = false; + Set metalTypes = readMetalAlloyNbtData(itemStack); + if (metalTypes == null) return Rarity.COMMON; + for (Metals.MetalType metalType : metalTypes) + { + if (metalType.isGodMetal()) + { + containsGodMetal = true; + break; + } + } + + if (containsGodMetal) + { + if (size <= 8) return Rarity.UNCOMMON; + else if (size == MAX_SIZE) return Rarity.EPIC; + return Rarity.RARE; + } + + return Rarity.COMMON; + } + + // This needs to be replaced once a connection system is in place + // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 + // Mixing Lerasium with other god metals or magic systems metals could create connections + // for new Investiture sources and new Manifestations + public ArrayList determineManifestations(ItemStack itemStack) + { + ArrayList manifestations = new ArrayList<>(); + + HashSet metals = readMetalAlloyNbtData(itemStack); + if (metals == null) return manifestations; + + Manifestation manifestation; + if (metals.contains(Metals.MetalType.LERASIUM)) + { + for (Metals.MetalType metal : metals) + { + if (metal != Metals.MetalType.LERASIUM) + { + manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + } + else if (metals.contains(Metals.MetalType.LERASATIUM)) + { + for (Metals.MetalType metal : metals) + { + if (metal != Metals.MetalType.LERASATIUM) + { + manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + } + return manifestations; + + + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java new file mode 100644 index 000000000..643f278fe --- /dev/null +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -0,0 +1,97 @@ +package leaf.cosmere.common.items; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.MutableComponent; +import net.minecraft.network.chat.Style; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; + +public class GodMetalNuggetItem extends MetalNuggetItem implements IHasSize +{ + public static int MIN_SIZE = 1; + public static int MAX_SIZE = 16; + + public GodMetalNuggetItem(Metals.MetalType metalType) + { + super(metalType); + } + + @Override + public int getMaxSize() + { + return MAX_SIZE; + } + + @Override + public int getMinSize() + { + return MIN_SIZE; + } + + @Override + @OnlyIn(Dist.CLIENT) + public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) + { + Integer size = readMetalAlloySizeNbtData(stack); + + tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( + Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); + + ArrayList manifestations = determineManifestations(); + + if (!manifestations.isEmpty() & size != getMaxSize()) + { + tooltip.add(Component.empty()); + tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); + for (Manifestation manifestation : manifestations) + { + tooltip.add(Component.literal("+" + size + " ").append( + Component.translatable(manifestation.getTranslationKey())) + .withStyle(ChatFormatting.BLUE)); + } + } + } + + public ArrayList determineManifestations() + { + ArrayList manifestations = new ArrayList<>(); + + if (this.getMetalType() == Metals.MetalType.LERASIUM) + { + for (Metals.MetalType metal : EnumUtils.METAL_TYPES) + { + Manifestation manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + else if (this.getMetalType() == Metals.MetalType.LERASATIUM) + { + for (Metals.MetalType metal : EnumUtils.METAL_TYPES) + { + Manifestation manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } + } + } + return manifestations; + } +} diff --git a/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java deleted file mode 100644 index 858035349..000000000 --- a/src/main/java/leaf/cosmere/common/items/InvestedMetalNuggetItem.java +++ /dev/null @@ -1,298 +0,0 @@ -package leaf.cosmere.common.items; - -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Manifestations.ManifestationTypes; -import leaf.cosmere.api.Metals.MetalType; -import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.ChatFormatting; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.Style; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Rarity; -import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import java.awt.*; -import java.util.*; -import java.util.List; - -public class InvestedMetalNuggetItem extends MetalNuggetItem -{ - public static int MIN_SIZE = 1; - public static int MAX_SIZE = 16; - - public InvestedMetalNuggetItem(MetalType metalType) - { - super(metalType); - } - - public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) - { - output.accept(new ItemStack(this)); - ItemStack itemStack = new ItemStack(this); - writeMetalAlloyNbtData(itemStack.getOrCreateTag(), alloyedMetals, size); - output.accept(itemStack); - } - - // Allow Lerasium to have alloy nuggets of multiple god metals in the future - // This will allow for establishing connections with other shards via God metal injestion - // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 - // (eg. Lerasium + Tanavastium + Koravellium) would give access to raw Investiture for surges without stormlight - // but the spren bond would still be needed for use of surges - - public static boolean isAlloy(CompoundTag nbt) - { - if(nbt.contains("alloyedMetals")) - { - int[] metalIds = nbt.getIntArray("alloyedMetals"); - if (metalIds.length > 1) return true; - } - return false; - } - - public static HashSet readMetalAlloyNbtData(CompoundTag nbt) - { - if(nbt.contains("alloyedMetals")) - { - int[] metalIds = nbt.getIntArray("alloyedMetals"); - HashSet metalTypes = new HashSet<>(); - for (int metalId : metalIds) - { - metalTypes.add( - MetalType.valueOf(metalId).isPresent() ? MetalType.valueOf(metalId).get() : MetalType.SILVER); - } - return metalTypes; - } - return null; - } - - public static Integer readMetalAlloySizeNbtData(CompoundTag nbt) - { - if(nbt.contains("nuggetSize")) return nbt.getInt("nuggetSize"); - nbt.putInt("nuggetSize", MAX_SIZE); - return MAX_SIZE; - } - - public static boolean writeMetalAlloyNbtData(CompoundTag nbt, HashSet alloyedMetals, int size) - { - if (size > MAX_SIZE || size < MIN_SIZE) return false; - - ArrayList metalIds = new ArrayList<>(); - boolean containsGodMetal = false; - boolean containsNormalMetal = false; - for (MetalType alloyedMetal : alloyedMetals) - { - metalIds.add(alloyedMetal.getID()); - - if (alloyedMetal.isGodMetal()) - { - containsGodMetal = true; - } - else - { - if (containsGodMetal && containsNormalMetal) return false; - containsNormalMetal = true; - } - } - nbt.putIntArray("alloyedMetals", metalIds); - nbt.putInt("nuggetSize", size); - return true; - } - - public static Color mixColors(ArrayList colors, int size) - { - double r = 0; - double g = 0; - double b = 0; - - double ratio = 1f / colors.size(); - - for(Color color: colors) { - r += (color.getRed() * ratio); - g += (color.getGreen() * ratio); - b += (color.getBlue() * ratio); - } - - // Clamp just in case of rounding - r = Math.min(255, Math.max(0, r)); - g = Math.min(255, Math.max(0, g)); - b = Math.min(255, Math.max(0, b)); - - return new Color((int) r, (int) g, (int) b); - } - - public Color getColour(HashSet metals, int size) - { - ArrayList colors = new ArrayList<>(); - int i = 0; - for(MetalType metal : metals) - { - colors.add(metal.getColor()); - } - return mixColors(colors, size); - } - - public int getColourValue(HashSet metals, int size) - { - return getColour(metals, size).getRGB(); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) - { - HashSet metals = readMetalAlloyNbtData(stack.getOrCreateTag()); - Integer size = readMetalAlloySizeNbtData(stack.getOrCreateTag()); - - if(metals != null) - { - MutableComponent metalListComponent = Component.empty(); - for (Iterator it = metals.iterator(); it.hasNext(); ) - { - MetalType metal = it.next(); - metalListComponent.append(Component.translatable(metal.getTranslationKey()) - .withStyle(Style.EMPTY.withColor(metal.getColorValue()))); - if (it.hasNext()) metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); - } - tooltip.add(metalListComponent); - - - } - - tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( - Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); - - ArrayList manifestations = determineManifestations(stack); - - if(!manifestations.isEmpty() & size != null) - { - tooltip.add(Component.empty()); - tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); - for(Manifestation manifestation : manifestations) - { - tooltip.add(Component.literal("+" + size + " ").append( - Component.translatable(manifestation.getTranslationKey())) - .withStyle(ChatFormatting.BLUE)); - } - } - } - - @Override - public Component getName(ItemStack stack) { - HashSet metals = readMetalAlloyNbtData(stack.getOrCreateTag()); - if(metals != null && metals.size() == 1) - { - return Component.translatable("item.cosmere." + metals.iterator().next().getName() + "_nugget"); - } - return super.getName(stack); - } - - @Override - public Rarity getRarity(ItemStack itemStack) { - if(!(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem)) return Rarity.COMMON; - - Integer size = InvestedMetalNuggetItem.readMetalAlloySizeNbtData(itemStack.getOrCreateTag()); - if(size == null) return Rarity.COMMON; - - boolean containsGodMetal = false; - Set metalTypes = InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()); - if(metalTypes == null) return investedMetalNuggetItem.getMetalType().getRarity(); - for(MetalType metalType : metalTypes) - { - if (metalType.isGodMetal()) { containsGodMetal = true; break; } - } - - if (containsGodMetal) - { - if (size <= 8) return Rarity.UNCOMMON; - else if (size == MAX_SIZE) return Rarity.EPIC; - return Rarity.RARE; - } - - return Rarity.COMMON; - } - - @Override - public boolean isFoil(ItemStack itemStack) - { - if(!(itemStack.getItem() instanceof InvestedMetalNuggetItem investedMetalNuggetItem)) return false; - if(InvestedMetalNuggetItem.readMetalAlloyNbtData(itemStack.getOrCreateTag()) == null) { - return investedMetalNuggetItem.getMetalType().isGodMetal(); - } - return super.isFoil(itemStack); - } - - // This needs to be replaced once a connection system is in place - // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 - // Mixing Lerasium with other god metals or magic systems metals could create connections - // for new Investiture sources and new Manifestations - public static ArrayList determineManifestations(ItemStack itemStack) { - ArrayList manifestations = new ArrayList<>(); - - CompoundTag nbt = itemStack.getOrCreateTag(); - HashSet metals = readMetalAlloyNbtData(nbt); - if (metals == null && itemStack.getItem() instanceof InvestedMetalNuggetItem item) - { - if (item.getMetalType() == MetalType.LERASIUM) - { - for(MetalType metal : EnumUtils.METAL_TYPES) - { - Manifestation manifestation = ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } - } - else if (item.getMetalType() == MetalType.LERASATIUM) - { - for(MetalType metal : EnumUtils.METAL_TYPES) - { - Manifestation manifestation = ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } - } - return manifestations; - } - else { - Manifestation manifestation = null; - if (metals.contains(MetalType.LERASIUM)) { - for (MetalType metal : metals) - { - if (metal != MetalType.LERASIUM) - { - manifestation = ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } - } - } - else if (metals.contains(MetalType.LERASATIUM)) - { - for (MetalType metal : metals) - { - if (metal != MetalType.LERASATIUM) - { - manifestation = ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } - } - } - return manifestations; - } - - } -} diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 3750bff0e..fbc9b5056 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -9,7 +9,7 @@ import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.InvestedMetalNuggetItem; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import net.minecraft.network.chat.Component; @@ -49,13 +49,13 @@ private static void addLerasiumAlloyNuggets(CreativeModeTab.Output output) { if (metalType.hasFeruchemicalEffect()) { - final InvestedMetalNuggetItem item = ItemsRegistry.INVESTED_METAL_NUGGET.get(); + final GodMetalAlloyNuggetItem item = ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(); HashSet metalTypes = new HashSet<>(); metalTypes.add(MetalType.LERASIUM); metalTypes.add(metalType); - item.addFilled(output,metalTypes , 16); + item.addFilled(output, metalTypes, 16); } } } @@ -66,12 +66,12 @@ private static void addLerasatiumAlloyNuggets(CreativeModeTab.Output output) { if (metalType.hasFeruchemicalEffect()) { - final InvestedMetalNuggetItem item = (InvestedMetalNuggetItem) ItemsRegistry.INVESTED_METAL_NUGGET.get(); + final GodMetalAlloyNuggetItem item = ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(); HashSet metalTypes = new HashSet<>(); metalTypes.add(MetalType.LERASATIUM); metalTypes.add(metalType); - item.addFilled(output,metalTypes , 16); + item.addFilled(output, metalTypes, 16); } } } diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 0d1e5dba4..0a7e34ddf 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -27,9 +27,9 @@ public class ItemsRegistry public static final ItemRegistryObject GUIDE = ITEMS.register("guide", GuideItem::new); // Add - public static final ItemRegistryObject INVESTED_METAL_NUGGET = ITEMS.register( - RegNameStubs.INVESTED + "metal" + RegNameStubs.NUGGET, - () -> new InvestedMetalNuggetItem(Metals.MetalType.SILVER)); + public static final ItemRegistryObject GOD_METAL_ALLOY_NUGGET = ITEMS.register( + "god_metal_alloy" + RegNameStubs.NUGGET, + () -> new GodMetalAlloyNuggetItem()); //Mass items gen @@ -71,7 +71,7 @@ public class ItemsRegistry Function.identity(), type -> ITEMS.register( type.getName() + RegNameStubs.NUGGET, - () -> new InvestedMetalNuggetItem(type) + () -> new GodMetalNuggetItem(type) ))); public static final Map> METAL_INGOTS = From 93923b67d8220a7016afd4d079c56da4a903a391 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Tue, 4 Nov 2025 22:06:55 -0500 Subject: [PATCH 1034/1090] cleanup part 1 --- .../AllomancyEntityEventHandler.java | 10 +- .../allomancy/common/items/MetalVialItem.java | 2 +- .../allomancy/common/utils/MiscHelper.java | 94 ++++++------------- src/api/java/leaf/cosmere/api/Constants.java | 1 - .../cosmere/api/IGrantsManifestations.java | 14 +++ src/api/java/leaf/cosmere/api/IHasAlloy.java | 2 - .../FeruchemyEntityEventHandler.java | 12 ++- .../feruchemy/common/utils/MiscHelper.java | 67 ++++--------- .../common/commands/CosmereCommand.java | 7 +- ...oyCommand.java => MetalNuggetCommand.java} | 52 ++++++---- .../common/eventHandlers/ColorHandler.java | 2 +- .../leaf/cosmere/common/items/AlloyItem.java | 2 +- .../common/items/GodMetalAlloyNuggetItem.java | 52 ++++++++-- .../common/items/GodMetalNuggetItem.java | 90 +++++++++++++++--- .../cosmere/common/items/MetalNuggetItem.java | 9 -- .../cosmere/common/util/CosmereEnumUtils.java | 1 - 16 files changed, 234 insertions(+), 183 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/IGrantsManifestations.java rename src/main/java/leaf/cosmere/common/commands/subcommands/{MetalAlloyCommand.java => MetalNuggetCommand.java} (59%) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index d78b7888f..6ca849d13 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -11,7 +11,9 @@ import leaf.cosmere.allomancy.common.manifestation.AllomancyNicrosil; import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; +import leaf.cosmere.api.IGrantsManifestations; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; @@ -49,9 +51,9 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof GodMetalAlloyNuggetItem) + if (stack.getItem() instanceof GodMetalAlloyNuggetItem || stack.getItem() instanceof GodMetalNuggetItem) { - MiscHelper.consumeNugget(target, stack, true); + MiscHelper.consumeNugget(target, stack); //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item stack.shrink(1); } @@ -72,9 +74,9 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) } final LivingEntity livingEntity = event.getEntity(); - if (event.getItem().getItem() instanceof MetalNuggetItem item) + if (event.getItem().getItem() instanceof MetalNuggetItem || event.getItem().getItem() instanceof IGrantsManifestations) { - MiscHelper.consumeNugget(livingEntity, event.getItem(), true); + MiscHelper.consumeNugget(livingEntity, event.getItem()); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index ad8b57342..a46b319e2 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -115,7 +115,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity en metalsInVial.entrySet().forEach(metalInfo -> { // MetalName x Value - MiscHelper.consumeNugget(entityLiving, stack, false); + MiscHelper.consumeNugget(entityLiving, stack); }); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 9d0188798..d439b55af 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -5,95 +5,61 @@ package leaf.cosmere.allomancy.common.utils; import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import net.minecraft.server.level.ServerPlayer; +import leaf.cosmere.common.items.GodMetalNuggetItem; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; -import java.util.HashSet; public class MiscHelper { - public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, boolean isInvestedNugget) + public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) { - MetalNuggetItem nuggetItem = (MetalNuggetItem) itemStack.getItem(); - Metals.MetalType metalType = nuggetItem.getMetalType(); - if (livingEntity.level().isClientSide) { return; } - SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - - if(itemStack.getItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) + Integer size = sizeItem.readMetalAlloySizeNbtData(itemStack); + if(size != null) { - HashSet metalTypes = godMetalAlloyNuggetItem.readMetalAlloyNbtData(itemStack); - Integer size = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); + ArrayList manifestations = manifestingItem.determineManifestations(itemStack); + manifestingItem.grantManifestations(livingEntity, manifestations, size); + } - if(size != null) + //https://www.theoryland.com/intvmain.php?i=977#43 + if (itemStack.getItem() instanceof GodMetalNuggetItem godItem && godItem.getMetalType() == Metals.MetalType.LERASIUM) + { + if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) { - // Ensure it is for Allomancy only - if (metalType == Metals.MetalType.LERASIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASIUM) && metalTypes.size() == 2)) - { - ArrayList manifestations = godMetalAlloyNuggetItem.determineManifestations(itemStack); - - for(Manifestation manifestation: manifestations) - { - int currentStrength = 0; - if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; - AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); - if(attributeInstance != null) { - currentStrength = (int) attributeInstance.getValue(); - } - - // Let's ensure not to update the base value if it's out of range, - // even if it will get sanitized - int newStrength = size + currentStrength; - if(newStrength > attribute.getMinValue() && newStrength < attribute.getMaxValue()) - { - spiritweb.giveManifestation(manifestation, size+currentStrength); - } - } - } - - //https://www.theoryland.com/intvmain.php?i=977#43 - if (metalType == Metals.MetalType.LERASIUM) - { - if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) - { - //todo translations - livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); - } - } + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); } } - else if (metalType != Metals.MetalType.LERASATIUM) //ignore lerasatium, that's handled in feruchemy - { - //add to metal stored - final int addAmount = metalType.getAllomancyBurnTimeSeconds(); - AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); - allo.adjustIngestedMetal(metalType, addAmount, true); - } - - if (livingEntity instanceof ServerPlayer serverPlayer) + } + else if(itemStack.getItem() instanceof IHasMetalType metalItem) + { + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { - spiritweb.syncToClients(serverPlayer); - } - }); + Metals.MetalType metalType = metalItem.getMetalType(); + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + if (metalType != Metals.MetalType.LERASATIUM) //ignore lerasatium, that's handled in feruchemy + { + //add to metal stored + final int addAmount = metalType.getAllomancyBurnTimeSeconds(); + AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); + allo.adjustIngestedMetal(metalType, addAmount, true); + } + }); + } } diff --git a/src/api/java/leaf/cosmere/api/Constants.java b/src/api/java/leaf/cosmere/api/Constants.java index 314bad4f2..a00518601 100644 --- a/src/api/java/leaf/cosmere/api/Constants.java +++ b/src/api/java/leaf/cosmere/api/Constants.java @@ -61,7 +61,6 @@ public static class RegNameStubs public static final String NECKLACE = "_necklace"; public static final String INGOT = "_ingot"; public static final String NUGGET = "_nugget"; - public static final String INVESTED = "invested_"; public static final String SPIKE = "_spike"; diff --git a/src/api/java/leaf/cosmere/api/IGrantsManifestations.java b/src/api/java/leaf/cosmere/api/IGrantsManifestations.java new file mode 100644 index 000000000..cc4de9832 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/IGrantsManifestations.java @@ -0,0 +1,14 @@ +package leaf.cosmere.api; + +import leaf.cosmere.api.manifestation.Manifestation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; + +public interface IGrantsManifestations +{ + public ArrayList determineManifestations(ItemStack itemStack); + + public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength); +} diff --git a/src/api/java/leaf/cosmere/api/IHasAlloy.java b/src/api/java/leaf/cosmere/api/IHasAlloy.java index 091eb435c..786d83d39 100644 --- a/src/api/java/leaf/cosmere/api/IHasAlloy.java +++ b/src/api/java/leaf/cosmere/api/IHasAlloy.java @@ -1,7 +1,5 @@ package leaf.cosmere.api; -import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.item.ItemStack; import java.awt.*; diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 78478f1fc..f28799bde 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -4,8 +4,10 @@ package leaf.cosmere.feruchemy.common.eventHandlers; +import leaf.cosmere.api.IGrantsManifestations; import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.effects.store.BrassStoreEffect; @@ -42,10 +44,10 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof GodMetalAlloyNuggetItem) + if (stack.getItem() instanceof GodMetalAlloyNuggetItem || stack.getItem() instanceof GodMetalNuggetItem) { - MiscHelper.consumeNugget(target, stack, true); - //need to shrink, because metal nugget only shrinks on item use finish from eating + MiscHelper.consumeNugget(target, stack); + //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item stack.shrink(1); } } @@ -61,10 +63,10 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) } final LivingEntity livingEntity = event.getEntity(); - if (event.getItem().getItem() instanceof GodMetalAlloyNuggetItem) + if (event.getItem().getItem() instanceof GodMetalAlloyNuggetItem || event.getItem().getItem() instanceof IGrantsManifestations) { //no need to shrink item count as it's already done as part of nugget use item finish - MiscHelper.consumeNugget(livingEntity, event.getItem(), true); + MiscHelper.consumeNugget(livingEntity, event.getItem()); } } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index 59422dda3..63165d6e2 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -4,11 +4,14 @@ package leaf.cosmere.feruchemy.common.utils; +import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; @@ -23,69 +26,31 @@ public class MiscHelper { - public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, boolean isInvestedNugget) + public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) { - MetalNuggetItem nuggetItem = (MetalNuggetItem) itemStack.getItem(); - Metals.MetalType metalType = nuggetItem.getMetalType(); - if (livingEntity.level().isClientSide) { return; } - SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) { - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - - if(itemStack.getItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) + Integer size = sizeItem.readMetalAlloySizeNbtData(itemStack); + if(size != null) { - HashSet metalTypes = godMetalAlloyNuggetItem.readMetalAlloyNbtData(itemStack); - Integer size = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); - - if(size != null) - { - // Ensure it is for Allomancy only - if (metalType == Metals.MetalType.LERASATIUM || (metalTypes != null && metalTypes.contains(Metals.MetalType.LERASATIUM) && metalTypes.size() == 2)) - { - ArrayList manifestations = godMetalAlloyNuggetItem.determineManifestations(itemStack); - - for(Manifestation manifestation: manifestations) - { - int currentStrength = 0; - if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; - AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); - if(attributeInstance != null) { - currentStrength = (int) attributeInstance.getValue(); - } - - // Let's ensure not to update the base value if it's out of range, - // even if it will get sanitized - int newStrength = size + currentStrength; - if(newStrength > attribute.getMinValue() && newStrength < attribute.getMaxValue()) - { - spiritweb.giveManifestation(manifestation, size+currentStrength); - } - } - } - - //https://www.theoryland.com/intvmain.php?i=977#43 - if (metalType == Metals.MetalType.LERASATIUM) - { - if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) - { - //todo translations - livingEntity.setCustomName(TextHelper.createTranslatedText("Full Feruchemist Llama")); - } - } - } + ArrayList manifestations = manifestingItem.determineManifestations(itemStack); + manifestingItem.grantManifestations(livingEntity, manifestations, size); } - if (livingEntity instanceof ServerPlayer serverPlayer) + if (itemStack.getItem() instanceof GodMetalNuggetItem godItem && godItem.getMetalType() == Metals.MetalType.LERASATIUM) { - spiritweb.syncToClients(serverPlayer); + if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Full Feruchemist Llama")); + } } - - }); + } } diff --git a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java index 9b0356302..8b56b15a4 100644 --- a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java @@ -10,14 +10,9 @@ import com.mojang.brigadier.CommandDispatcher; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.commands.arguments.AllomancyArgumentType; -import leaf.cosmere.common.commands.arguments.FeruchemyArgumentType; -import leaf.cosmere.common.commands.arguments.ManifestationsArgumentType; import leaf.cosmere.common.commands.subcommands.*; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; -import net.minecraft.commands.synchronization.ArgumentTypeInfos; -import net.minecraft.commands.synchronization.SingletonArgumentInfo; public class CosmereCommand @@ -31,7 +26,7 @@ public static void register(CommandDispatcher dispatcher) .then(SummonCommand.register(dispatcher)) .then(CosmereEffectCommand.register(dispatcher)) .then(ChooseMetalbornPowersCommand.register(dispatcher)) - .then(MetalAlloyCommand.register(dispatcher)) + .then(MetalNuggetCommand.register(dispatcher)) ); } } diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java similarity index 59% rename from src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java rename to src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java index 22cd5841e..eb5dcbe42 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalAlloyCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java @@ -10,19 +10,21 @@ import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; +import leaf.cosmere.api.IHasAlloy; +import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.common.commands.arguments.MetalArgumentType; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; import net.minecraft.network.chat.Component; +import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import java.util.HashSet; -import static leaf.cosmere.common.registry.ItemsRegistry.GOD_METAL_ALLOY_NUGGET; +import static leaf.cosmere.common.registry.ItemsRegistry.GOD_METAL_NUGGETS; -public class MetalAlloyCommand extends ModCommand +public class MetalNuggetCommand extends ModCommand { @Override @@ -35,31 +37,47 @@ public int run(CommandContext context) throws CommandSyntaxE private static int give(CommandContext context) throws CommandSyntaxException { - GodMetalAlloyNuggetItem item = GOD_METAL_ALLOY_NUGGET.get(); - ItemStack itemStack = new ItemStack(item); + MetalType godMetal = null; HashSet metalTypes = new HashSet<>(); int sizeArg = context.getArgument("size", Integer.class); - for(int i = 0; i < 3; i++) + for(int i = 0; i < 2; i++) { try { MetalType metalTypeArg = context.getArgument("metal" + i, MetalType.class); - metalTypes.add(metalTypeArg); + if (metalTypeArg.isGodMetal()) + { + godMetal = metalTypeArg; + } } catch (IllegalArgumentException e) { break; } } - if(item.writeMetalAlloyNbtData(itemStack, metalTypes) && item.writeMetalAlloySizeNbtData(itemStack, sizeArg)) - { - itemStack.setCount(1); - context.getSource().getPlayerOrException().getInventory().add(itemStack); - } else + if(godMetal != null) { - String errorMsg = "Invalid Metals / Ratios!"; - throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); + Item item = GOD_METAL_NUGGETS.get(godMetal).get(); + ItemStack itemStack = new ItemStack(item); + + if (item instanceof IHasSize sizeItem) + { + if(!sizeItem.writeMetalAlloySizeNbtData(itemStack, sizeArg)) + { + String errorMsg = "Invalid Metals"; + throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); + } + } + + if(item instanceof IHasAlloy alloyItem) + { + if(!alloyItem.writeMetalAlloyNbtData(itemStack, metalTypes)) + { + String errorMsg = "Invalid Size"; + throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); + } + } } return SINGLE_SUCCESS; @@ -67,11 +85,11 @@ private static int give(CommandContext context) throws Comma public static ArgumentBuilder register(CommandDispatcher dispatcher) { - return Commands.literal("metallic_alloy").requires(context -> context.hasPermission(2)) + return Commands.literal("metal_nugget").requires(context -> context.hasPermission(2)) .then(Commands.argument("size", IntegerArgumentType.integer(1, 16)) .then(Commands.argument("metal0", MetalArgumentType.createArgument()) - .executes(MetalAlloyCommand::give) + .executes(MetalNuggetCommand::give) .then(Commands.argument("metal1", MetalArgumentType.createArgument()) - .executes(MetalAlloyCommand::give)))); + .executes(MetalNuggetCommand::give)))); } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 9c1276db2..ecb56e56d 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -92,7 +92,7 @@ public static void init() continue; } - if (item instanceof IHasColour) + if (item instanceof IHasColour || item instanceof IHasAlloy) { itemColors.register(itemColorHandler, item); } diff --git a/src/main/java/leaf/cosmere/common/items/AlloyItem.java b/src/main/java/leaf/cosmere/common/items/AlloyItem.java index 88c087627..8dc2d7ca9 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyItem.java @@ -45,7 +45,7 @@ public HashSet readMetalAlloyNbtData(ItemStack itemStack) } return metalTypes; } - return null; + return new HashSet(); } public boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 17a093288..5fe1432ca 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -1,18 +1,21 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.IHasSize; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.text.TextHelper; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; +import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; @@ -22,7 +25,7 @@ import javax.annotation.Nonnull; import java.util.*; -public class GodMetalAlloyNuggetItem extends AlloyItem implements IHasSize +public class GodMetalAlloyNuggetItem extends AlloyItem implements IHasSize, IGrantsManifestations { public static int MIN_SIZE = 1; public static int MAX_SIZE = 16; @@ -44,7 +47,6 @@ public GodMetalAlloyNuggetItem() public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) { - output.accept(new ItemStack(this)); ItemStack itemStack = new ItemStack(this); writeMetalAlloyNbtData(itemStack, alloyedMetals); writeMetalAlloySizeNbtData(itemStack, size); @@ -63,7 +65,9 @@ public UseAnim getUseAnimation(ItemStack stack) public int getUseDuration(ItemStack stack) { //be annoying enough that people prefer metal vials - return 16; + Integer size = readMetalAlloySizeNbtData(stack); + if (size == null) return 16; + return size; } @Nonnull @@ -92,8 +96,6 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity itemstack.shrink(1); } - pLivingEntity.hurt(CosmereDamageTypesRegistry.EAT_METAL.source(pLivingEntity.level()), 1); - return itemstack; } @@ -207,4 +209,36 @@ else if (metals.contains(Metals.MetalType.LERASATIUM)) } + + @Override + public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength) + { + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + + for(Manifestation manifestation: manifestations) + { + int currentStrength = 0; + if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; + AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); + if(attributeInstance != null) { + currentStrength = (int) attributeInstance.getValue(); + } + + // Let's ensure not to update the base value if it's out of range, + // even if it will get sanitized + int newStrength = strength + currentStrength; + if(newStrength >= attribute.getMinValue() && newStrength <= attribute.getMaxValue()) + { + spiritweb.giveManifestation(manifestation, strength+currentStrength); + } + } + + if (livingEntity instanceof ServerPlayer serverPlayer) + { + spiritweb.syncToClients(serverPlayer); + } + }); + } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 643f278fe..b21a6db29 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -1,26 +1,28 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.IHasSize; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.Style; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResultHolder; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; +import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import javax.annotation.Nonnull; import java.util.ArrayList; -import java.util.HashSet; -import java.util.Iterator; import java.util.List; -public class GodMetalNuggetItem extends MetalNuggetItem implements IHasSize +public class GodMetalNuggetItem extends MetalNuggetItem implements IHasSize, IGrantsManifestations { public static int MIN_SIZE = 1; public static int MAX_SIZE = 16; @@ -42,6 +44,38 @@ public int getMinSize() return MIN_SIZE; } + @Override + public int getUseDuration(ItemStack stack) + { + //be annoying enough that people prefer metal vials + Integer size = readMetalAlloySizeNbtData(stack); + if (size == null) super.getUseDuration(stack); + return size; + } + + @Override + public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) + { + if (pLevel.isClientSide) + { + return itemstack; + } + + if (pLivingEntity instanceof Player player && !player.isCreative()) + { + itemstack.shrink(1); + } + + return itemstack; + } + + @Override + public boolean isFoil(ItemStack itemStack) + { + // God Metals should have foil + return true; + } + @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) @@ -51,7 +85,7 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); - ArrayList manifestations = determineManifestations(); + ArrayList manifestations = determineManifestations(stack); if (!manifestations.isEmpty() & size != getMaxSize()) { @@ -66,7 +100,8 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool } } - public ArrayList determineManifestations() + @Override + public ArrayList determineManifestations(ItemStack itemStack) { ArrayList manifestations = new ArrayList<>(); @@ -94,4 +129,37 @@ else if (this.getMetalType() == Metals.MetalType.LERASATIUM) } return manifestations; } + + @Override + public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength) + { + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + + for(Manifestation manifestation: manifestations) + { + int currentStrength = 0; + if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; + AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); + if(attributeInstance != null) { + currentStrength = (int) attributeInstance.getValue(); + } + + // Let's ensure not to update the base value if it's out of range, + // even if it will get sanitized + int newStrength = strength + currentStrength; + if(newStrength >= attribute.getMinValue() && newStrength <= attribute.getMaxValue()) + { + spiritweb.giveManifestation(manifestation, strength+currentStrength); + } + } + + if (livingEntity instanceof ServerPlayer serverPlayer) + { + spiritweb.syncToClients(serverPlayer); + } + }); + } + } diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index 5881b6365..0e4e318bd 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -71,13 +71,4 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity return itemstack; } - @Override - public boolean isFoil(ItemStack itemStack) - { - // God Metals should have foil - MetalNuggetItem item = (MetalNuggetItem) itemStack.getItem(); - if(item.getMetalType().isGodMetal()) return true; - return super.isFoil(itemStack); - } - } diff --git a/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java index 6375434c3..e267229c0 100644 --- a/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java +++ b/src/main/java/leaf/cosmere/common/util/CosmereEnumUtils.java @@ -4,7 +4,6 @@ package leaf.cosmere.common.util; -import leaf.cosmere.api.Metals; import leaf.cosmere.common.resource.ore.OreType; public class CosmereEnumUtils From 858bab6d1592c200d2b22076d51cceae15c9b874 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Tue, 4 Nov 2025 22:16:05 -0500 Subject: [PATCH 1035/1090] cleanup part 2 --- .../cosmere/models/item/god_metal_alloy_nugget.json | 6 ++++++ .../forge/tags/items/nuggets/god_metal_alloy_nugget.json | 5 +++++ .../common/commands/subcommands/MetalNuggetCommand.java | 3 ++- .../cosmere/common/items/GodMetalAlloyNuggetItem.java | 4 +--- .../leaf/cosmere/common/items/GodMetalNuggetItem.java | 9 --------- 5 files changed, 14 insertions(+), 13 deletions(-) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json new file mode 100644 index 000000000..e2f75ac57 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/metal_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json new file mode 100644 index 000000000..f4a080dc5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java index eb5dcbe42..e8ad9cc99 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java @@ -59,7 +59,7 @@ private static int give(CommandContext context) throws Comma if(godMetal != null) { Item item = GOD_METAL_NUGGETS.get(godMetal).get(); - ItemStack itemStack = new ItemStack(item); + ItemStack itemStack = new ItemStack(item, 1); if (item instanceof IHasSize sizeItem) { @@ -78,6 +78,7 @@ private static int give(CommandContext context) throws Comma throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); } } + context.getSource().getPlayerOrException().getInventory().add(itemStack); } return SINGLE_SUCCESS; diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 5fe1432ca..43794d0df 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -65,9 +65,7 @@ public UseAnim getUseAnimation(ItemStack stack) public int getUseDuration(ItemStack stack) { //be annoying enough that people prefer metal vials - Integer size = readMetalAlloySizeNbtData(stack); - if (size == null) return 16; - return size; + return 16; } @Nonnull diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index b21a6db29..fc7b0d438 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -44,15 +44,6 @@ public int getMinSize() return MIN_SIZE; } - @Override - public int getUseDuration(ItemStack stack) - { - //be annoying enough that people prefer metal vials - Integer size = readMetalAlloySizeNbtData(stack); - if (size == null) super.getUseDuration(stack); - return size; - } - @Override public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) { From 85de1fba3214a7a89738df001703e422c874102e Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Fri, 7 Nov 2025 08:20:20 -0500 Subject: [PATCH 1036/1090] added compression and decompression recipes. i need to create a new serializer to save nbt data to json for recipes. --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 18 ++++---- .../recipes/decorations/atium_ingot.json | 4 +- .../recipes/decorations/harmonium_ingot.json | 4 +- .../recipes/decorations/lerasatium_ingot.json | 4 +- .../recipes/decorations/lerasium_ingot.json | 4 +- .../data/cosmere/recipes/atium_ingot.json | 9 ++-- .../data/cosmere/recipes/harmonium_ingot.json | 9 ++-- .../cosmere/recipes/lerasatium_ingot.json | 9 ++-- .../data/cosmere/recipes/lerasium_ingot.json | 9 ++-- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 41 +++++++++++++++++++ .../main/java/leaf/cosmere/RecipeGen.java | 2 +- .../common/items/GodMetalNuggetItem.java | 2 +- 14 files changed, 82 insertions(+), 37 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index c0653e228..1f874bd2e 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,8 +1,8 @@ -// 1.20.1 2024-11-04T18:26:44.0719647 Recipes +// 1.20.1 2025-11-06T20:33:20.233296 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json -51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json +d31946cf1a6b3487f9e5c4d7c8169134eb0029b3 data/cosmere/advancements/recipes/decorations/atium_ingot.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -18,13 +18,13 @@ c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decor 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json -878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +4ef4a13eff2e8281fa6019957864080896a2e333 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +92ac28c2747fd19e7f6c2a32b06d47968f090713 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +d0bcd39beb814d93fdb0c7068aacfae33a013747 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -206,7 +206,7 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json -2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json +a01c4b09c3aee28edd3d338701f80adef04f4ed5 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -287,7 +287,7 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json -dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json +8396175c7cdac3962b4e3e708aa76f50969d3598 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -297,9 +297,9 @@ cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_sm d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json +5434dea0787237fdd04c2980e96432bdb11c5648 data/cosmere/recipes/lerasatium_ingot.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json +d38c0f4982c4e0bb0bed4e4f32fd95e187cd67d8 data/cosmere/recipes/lerasium_ingot.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json index abb83a88d..efaae7d5d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/atium" + "items": [ + "cosmere:atium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json index cd1c4e9a2..43215dd80 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/harmonium" + "items": [ + "cosmere:harmonium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json index ac87104d7..3b9b1e517 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/lerasatium" + "items": [ + "cosmere:lerasatium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json index 26dcdef69..e49b50cf9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/lerasium" + "items": [ + "cosmere:lerasium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json index 964b03ae7..c16ed8f3e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/atium" - }, - "J": { - "item": "cosmere:atium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json index f39747934..0349082a5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/harmonium" - }, - "J": { - "item": "cosmere:harmonium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json index 9c9acb019..c5aba8f9a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/lerasatium" - }, - "J": { - "item": "cosmere:lerasatium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json index d4ba9b9ff..7de1b6d41 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/lerasium" - }, - "J": { - "item": "cosmere:lerasium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 5438f1826..92f0137ef 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-01T18:50:54.5246299 Curios for feruchemy +// 1.20.1 2025-11-06T20:37:10.546053 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 6f5c12cad..85835c9a0 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-01T18:50:54.5626823 Curios for hemalurgy +// 1.20.1 2025-11-06T20:37:10.594669 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 81acd5d63..bca555676 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,10 +4,15 @@ package leaf.cosmere; +import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import net.minecraft.core.Holder; +import net.minecraft.core.HolderLookup; +import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; +import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.packs.PackType; import net.minecraft.tags.TagKey; @@ -16,7 +21,9 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; +import net.minecraftforge.common.crafting.CompoundIngredient; import net.minecraftforge.common.crafting.DifferenceIngredient; +import net.minecraftforge.common.crafting.PartialNBTIngredient; import net.minecraftforge.common.data.ExistingFileHelper; import javax.annotation.Nullable; @@ -263,6 +270,40 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .unlockedBy("has_item", has(input)); } + protected void nuggetAlloyRecipe(Consumer consumer, ItemLike output, ItemLike godMetalInput, ItemLike metalInput, int size) + { + CompoundTag nbt = new CompoundTag(); + nbt.putInt("nuggetSize", size); + Ingredient godMetalIngredient = PartialNBTIngredient.of(godMetalInput, nbt); + godMetalIngredient.getItems()[0].setCount(1); + + Ingredient metalIngredient = PartialNBTIngredient.of(godMetalInput, nbt); + godMetalIngredient.getItems()[0].setCount(16); + + ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 16) + .unlockedBy("has_item", has(output)) + .requires(metalIngredient) + .requires(godMetalIngredient) + .save(consumer); + } + + // For items with size + protected ShapedRecipeBuilder compressRecipe(ItemLike output, ItemLike input) { + if(!(input instanceof IHasSize sizeItemInput)) return null; + int size = sizeItemInput.getMaxSize(); + + CompoundTag nbt = new CompoundTag(); + nbt.putInt("nuggetSize", size); + Ingredient ingredient = PartialNBTIngredient.of(input, nbt); + + return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) + .define('I', ingredient) // tag filtered by NBT + .pattern("III") + .pattern("III") + .pattern("III") + .unlockedBy("has_item", has(input)); + } + protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 986c5e7c2..34a03e581 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -85,7 +85,7 @@ protected void addRecipes(Consumer consumer) decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } else { - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType)).save(consumer); + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get()).save(consumer); decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index fc7b0d438..6ac6c69e5 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -78,7 +78,7 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool ArrayList manifestations = determineManifestations(stack); - if (!manifestations.isEmpty() & size != getMaxSize()) + if (!manifestations.isEmpty()) { tooltip.add(Component.empty()); tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); From e3882b64c68cd4b6fe4afcb371120c02d6f193ff Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 8 Nov 2025 09:11:44 +1300 Subject: [PATCH 1037/1090] [Surgebinding] fix chull leash height --- .../surgebinding/common/entity/Chull.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java index f6ba33641..783f214cf 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/entity/Chull.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 3 - 2025 ~ Leaf + * File updated ~ 8 - 11 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.entity; @@ -9,6 +9,7 @@ import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Pose; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Animal; @@ -16,6 +17,7 @@ import net.minecraft.world.entity.animal.horse.AbstractHorse; import net.minecraft.world.entity.monster.Monster; import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; import org.jetbrains.annotations.Nullable; public class Chull extends AbstractChestedHorse @@ -37,7 +39,12 @@ public static AttributeSupplier.Builder createAttributes() public boolean canMate(Animal pOtherAnimal) { - return pOtherAnimal != this && pOtherAnimal instanceof Chull; + if (pOtherAnimal != this && pOtherAnimal instanceof Chull otherChull) + { + return this.canParent() && otherChull.canParent(); + } + + return false; } @Override @@ -53,6 +60,9 @@ public AgeableMob getBreedOffspring(ServerLevel pLevel, AgeableMob pOtherParent) EntityType entitytype = SurgebindingEntityTypes.CHULL.getEntityType(); AbstractHorse abstracthorse = entitytype.create(pLevel); this.setOffspringAttributes(pOtherParent, abstracthorse); + + //todo texture variants? + return abstracthorse; } @@ -70,6 +80,18 @@ protected void dropCustomDeathLoot(DamageSource pSource, int pLooting, boolean p //todo baby chulls drop chips, adults drop marks } + @Override + protected Vec3 getLeashOffset() + { + return new Vec3(0.0D, (double) this.getEyeHeight(Pose.STANDING), (double) (this.getBbWidth() * 0.25F)); + } + + @Override + public float getEyeHeight(Pose pPose) + { + return getEyeHeight() * 0.1f; + } + @Override public double getPassengersRidingOffset() { From b78c28cd4bd3ceeaba84752f7df1a388622df083 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 8 Nov 2025 14:31:12 +1300 Subject: [PATCH 1038/1090] [Surgebinding] New Textures for surgebinding gem items --- .../a42c2d14910c607d1cdeea761ec88e5ad05f96c6 | 62 +++++++++--------- .../models/item/amethyst_broam.json | 2 +- .../models/item/amethyst_chip.json | 2 +- .../models/item/amethyst_mark.json | 2 +- .../models/item/diamond_broam.json | 2 +- .../models/item/diamond_chip.json | 2 +- .../models/item/diamond_mark.json | 2 +- .../models/item/emerald_broam.json | 2 +- .../models/item/emerald_chip.json | 2 +- .../models/item/emerald_mark.json | 2 +- .../models/item/garnet_broam.json | 2 +- .../surgebinding/models/item/garnet_chip.json | 2 +- .../surgebinding/models/item/garnet_mark.json | 2 +- .../models/item/heliodor_broam.json | 2 +- .../models/item/heliodor_chip.json | 2 +- .../models/item/heliodor_mark.json | 2 +- .../surgebinding/models/item/ruby_broam.json | 2 +- .../surgebinding/models/item/ruby_chip.json | 2 +- .../surgebinding/models/item/ruby_mark.json | 2 +- .../models/item/sapphire_broam.json | 2 +- .../models/item/sapphire_chip.json | 2 +- .../models/item/sapphire_mark.json | 2 +- .../models/item/smokestone_broam.json | 2 +- .../models/item/smokestone_chip.json | 2 +- .../models/item/smokestone_mark.json | 2 +- .../surgebinding/models/item/topaz_broam.json | 2 +- .../surgebinding/models/item/topaz_chip.json | 2 +- .../surgebinding/models/item/topaz_mark.json | 2 +- .../models/item/zircon_broam.json | 2 +- .../surgebinding/models/item/zircon_chip.json | 2 +- .../surgebinding/models/item/zircon_mark.json | 2 +- .../SurgebindingItemModelsGen.java | 19 +----- .../textures/item/amethyst_broam.png | Bin 0 -> 224 bytes .../textures/item/amethyst_chip.png | Bin 0 -> 197 bytes .../textures/item/amethyst_mark.png | Bin 0 -> 196 bytes .../textures/item/cut_amethyst_large.png | Bin 0 -> 241 bytes .../textures/item/cut_amethyst_medium.png | Bin 0 -> 206 bytes .../textures/item/cut_amethyst_small.png | Bin 0 -> 191 bytes .../textures/item/cut_diamond_large.png | Bin 0 -> 274 bytes .../textures/item/cut_diamond_medium.png | Bin 0 -> 243 bytes .../textures/item/cut_diamond_small.png | Bin 0 -> 225 bytes .../textures/item/cut_emerald_large.png | Bin 0 -> 273 bytes .../textures/item/cut_emerald_medium.png | Bin 0 -> 224 bytes .../textures/item/cut_emerald_small.png | Bin 0 -> 203 bytes .../textures/item/cut_garnet_large.png | Bin 0 -> 319 bytes .../textures/item/cut_garnet_medium.png | Bin 0 -> 233 bytes .../textures/item/cut_garnet_small.png | Bin 0 -> 188 bytes .../textures/item/cut_heliodor_large.png | Bin 0 -> 266 bytes .../textures/item/cut_heliodor_medium.png | Bin 0 -> 227 bytes .../textures/item/cut_heliodor_small.png | Bin 0 -> 174 bytes .../textures/item/cut_ruby_large.png | Bin 0 -> 273 bytes .../textures/item/cut_ruby_medium.png | Bin 0 -> 237 bytes .../textures/item/cut_ruby_small.png | Bin 0 -> 190 bytes .../textures/item/cut_sapphire_large.png | Bin 0 -> 247 bytes .../textures/item/cut_sapphire_medium.png | Bin 0 -> 223 bytes .../textures/item/cut_sapphire_small.png | Bin 0 -> 186 bytes .../textures/item/cut_smokestone_large.png | Bin 0 -> 302 bytes .../textures/item/cut_smokestone_medium.png | Bin 0 -> 231 bytes .../textures/item/cut_smokestone_small.png | Bin 0 -> 181 bytes .../textures/item/cut_topaz_large.png | Bin 0 -> 280 bytes .../textures/item/cut_topaz_medium.png | Bin 0 -> 208 bytes .../textures/item/cut_topaz_small.png | Bin 0 -> 193 bytes .../textures/item/cut_zircon_large.png | Bin 0 -> 292 bytes .../textures/item/cut_zircon_medium.png | Bin 0 -> 199 bytes .../textures/item/cut_zircon_small.png | Bin 0 -> 153 bytes .../textures/item/diamond_broam.png | Bin 0 -> 223 bytes .../textures/item/diamond_chip.png | Bin 0 -> 196 bytes .../textures/item/diamond_mark.png | Bin 0 -> 197 bytes .../textures/item/emerald_broam.png | Bin 0 -> 207 bytes .../textures/item/emerald_chip.png | Bin 0 -> 197 bytes .../textures/item/emerald_mark.png | Bin 0 -> 190 bytes .../surgebinding/textures/item/garnet.png | Bin 0 -> 360 bytes .../textures/item/garnet_broam.png | Bin 0 -> 223 bytes .../textures/item/garnet_chip.png | Bin 0 -> 180 bytes .../textures/item/garnet_mark.png | Bin 0 -> 195 bytes .../textures/item/gemstone_broam.png | Bin 49883 -> 0 bytes .../textures/item/gemstone_chip.png | Bin 50610 -> 0 bytes .../textures/item/gemstone_mark.png | Bin 50622 -> 0 bytes .../surgebinding/textures/item/heliodor.png | Bin 0 -> 312 bytes .../textures/item/heliodor_broam.png | Bin 0 -> 216 bytes .../textures/item/heliodor_chip.png | Bin 0 -> 197 bytes .../textures/item/heliodor_mark.png | Bin 0 -> 196 bytes .../textures/item/rosharan_diamond.png | Bin 0 -> 335 bytes .../surgebinding/textures/item/ruby.png | Bin 0 -> 300 bytes .../surgebinding/textures/item/ruby_broam.png | Bin 0 -> 224 bytes .../surgebinding/textures/item/ruby_chip.png | Bin 0 -> 176 bytes .../surgebinding/textures/item/ruby_mark.png | Bin 0 -> 197 bytes .../surgebinding/textures/item/sapphire.png | Bin 0 -> 326 bytes .../textures/item/sapphire_broam.png | Bin 0 -> 230 bytes .../textures/item/sapphire_chip.png | Bin 0 -> 181 bytes .../textures/item/sapphire_mark.png | Bin 0 -> 196 bytes .../surgebinding/textures/item/smokestone.png | Bin 0 -> 285 bytes .../textures/item/smokestone_broam.png | Bin 0 -> 224 bytes .../textures/item/smokestone_chip.png | Bin 0 -> 181 bytes .../textures/item/smokestone_mark.png | Bin 0 -> 196 bytes .../surgebinding/textures/item/topaz.png | Bin 0 -> 328 bytes .../textures/item/topaz_broam.png | Bin 0 -> 224 bytes .../surgebinding/textures/item/topaz_chip.png | Bin 0 -> 181 bytes .../surgebinding/textures/item/topaz_mark.png | Bin 0 -> 196 bytes .../surgebinding/textures/item/zircon.png | Bin 0 -> 320 bytes .../textures/item/zircon_broam.png | Bin 0 -> 224 bytes .../textures/item/zircon_chip.png | Bin 0 -> 180 bytes .../textures/item/zircon_mark.png | Bin 0 -> 195 bytes 103 files changed, 62 insertions(+), 79 deletions(-) create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_amethyst_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_amethyst_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_amethyst_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_diamond_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_diamond_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_diamond_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_garnet_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_garnet_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_garnet_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_topaz_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_topaz_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_topaz_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_large.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_medium.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_small.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/diamond_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/diamond_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/diamond_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/emerald_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/emerald_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/emerald_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/garnet.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/garnet_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/garnet_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/garnet_mark.png delete mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_broam.png delete mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_chip.png delete mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/heliodor.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/heliodor_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/heliodor_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/heliodor_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/rosharan_diamond.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/ruby.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/ruby_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/ruby_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/ruby_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/sapphire.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/smokestone.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/topaz.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/topaz_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/topaz_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/topaz_mark.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/zircon.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/zircon_broam.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/zircon_chip.png create mode 100644 src/surgebinding/resources/assets/surgebinding/textures/item/zircon_mark.png diff --git a/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 b/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 index d24d933b7..8609ed118 100644 --- a/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 +++ b/src/datagen/generated/surgebinding/.cache/a42c2d14910c607d1cdeea761ec88e5ad05f96c6 @@ -1,37 +1,37 @@ -// 1.20.1 2024-10-09T13:22:13.2807868 Item Models: surgebinding -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/amethyst_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/amethyst_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/amethyst_mark.json +// 1.20.1 2025-11-08T14:01:31.3831899 Item Models: surgebinding +e797f0f6000c58a24305d96eede7cc5c7bf50529 assets/surgebinding/models/item/amethyst_broam.json +f12008b9216dc96bae966f9bdc9c458623021477 assets/surgebinding/models/item/amethyst_chip.json +f11fb5b2de87bddd0918dffcc40c267bcc6b4da7 assets/surgebinding/models/item/amethyst_mark.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/surgebinding/models/item/chull_spawn_egg.json 63ec6c618a3a23eab4cab9c52d7d3250de9b516e assets/surgebinding/models/item/cryptic_spawn_egg.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/diamond_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/diamond_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/diamond_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/emerald_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/emerald_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/emerald_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/garnet_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/garnet_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/garnet_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/heliodor_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/heliodor_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/heliodor_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/ruby_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/ruby_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/ruby_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/sapphire_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/sapphire_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/sapphire_mark.json +babfe18cc57e87bdfcfab73f064dde614c02a612 assets/surgebinding/models/item/diamond_broam.json +5f23fce6e53790f774a85352e914b0ec47187026 assets/surgebinding/models/item/diamond_chip.json +08286c0383de37301a0a1d602777b28819a5b10d assets/surgebinding/models/item/diamond_mark.json +5b01480d8fae2495bca6c7e6bef2d1f7075dc715 assets/surgebinding/models/item/emerald_broam.json +d0339f99c5d55a97ce8ebb6d7f721061d7933d10 assets/surgebinding/models/item/emerald_chip.json +461b7aa784eb12cafe8eb639feced872e5ea2abd assets/surgebinding/models/item/emerald_mark.json +35dbb677349858f54e2ffe200fbf87a0847f3fa9 assets/surgebinding/models/item/garnet_broam.json +9191bd37cea661375c3e5b1d8a6891812cb1fb31 assets/surgebinding/models/item/garnet_chip.json +ed0f4410947f36fb2c30adc5d2df3d429f5719bf assets/surgebinding/models/item/garnet_mark.json +5d86fe6e34d1fd0b8d634a0b74bf81f866255d5e assets/surgebinding/models/item/heliodor_broam.json +c8f182a4a72ed52aaa15db4adb2e53d2366276c5 assets/surgebinding/models/item/heliodor_chip.json +266acccc694a0c4810b2bf49a73e095aadf178e5 assets/surgebinding/models/item/heliodor_mark.json +3c3cb8fa9c39798de96ff140927bc7e2a2797182 assets/surgebinding/models/item/ruby_broam.json +6699d15c34f15ecdefec16a424c68d85a82905d5 assets/surgebinding/models/item/ruby_chip.json +a91ca4972b8d3422763281c9cb8be570a54a5339 assets/surgebinding/models/item/ruby_mark.json +a1a8e3e7d726a4e405b48cfce1af70ba1a51bb65 assets/surgebinding/models/item/sapphire_broam.json +6765516aa733ab2612ca7218ac3d1d7a36f7dbeb assets/surgebinding/models/item/sapphire_chip.json +e1a1241601f1e134a276a6beac7c6491344a004d assets/surgebinding/models/item/sapphire_mark.json 7817652b27f6e14fee558b9f7ed79a803bcc9651 assets/surgebinding/models/item/shardplate_boots.json fbee7654e8cdfae717bccf39f76848666cc51bb5 assets/surgebinding/models/item/shardplate_chest.json 095355a2bd3bcf962839dd947514af66d6dd9639 assets/surgebinding/models/item/shardplate_helmet.json 0fc29fc960fce820dfb1b37d580efb2bdbd7d052 assets/surgebinding/models/item/shardplate_leggings.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/smokestone_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/smokestone_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/smokestone_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/topaz_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/topaz_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/topaz_mark.json -2665b7471b3a3116438ccdf48879f238af8fb240 assets/surgebinding/models/item/zircon_broam.json -809cf173f3c8accd92ba5f005c1bbead3a286319 assets/surgebinding/models/item/zircon_chip.json -1f7e9135bbe899a8a0a9d72824f1bf7839a18b08 assets/surgebinding/models/item/zircon_mark.json +aeef1a413783b0d7474003797b1593f3b85471b5 assets/surgebinding/models/item/smokestone_broam.json +fd59ca79570b088f9255de834dd00faa2cf49a58 assets/surgebinding/models/item/smokestone_chip.json +273b3611916007e08e308048afb1d444167a0acd assets/surgebinding/models/item/smokestone_mark.json +e934281fad2ba0c4d87f0fbd780838c3060b2b4b assets/surgebinding/models/item/topaz_broam.json +caa692f78e11810525d07377a8be4f74cd609a50 assets/surgebinding/models/item/topaz_chip.json +41bee87d98c052d46e0b281745eba3ff392f42ab assets/surgebinding/models/item/topaz_mark.json +762831b3eb3348ab701a10f2721f2efeb78e63d0 assets/surgebinding/models/item/zircon_broam.json +e93fb3dbb97807ce800252c2d9addb9bdd4f1166 assets/surgebinding/models/item/zircon_chip.json +ebd2644c401d0bbcb5b3addeb93454d0f3092465 assets/surgebinding/models/item/zircon_mark.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_broam.json index 7c440b444..d614e1e7d 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/amethyst_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_chip.json index 3b0063d0b..e9245efd3 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/amethyst_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_mark.json index 613af6df7..01d53a129 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/amethyst_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/amethyst_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_broam.json index 7c440b444..ad771d3f6 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/diamond_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_chip.json index 3b0063d0b..a1414806b 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/diamond_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_mark.json index 613af6df7..5936df26f 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/diamond_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/diamond_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_broam.json index 7c440b444..44578fd53 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/emerald_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_chip.json index 3b0063d0b..abbb15cbd 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/emerald_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_mark.json index 613af6df7..a7018cf2b 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/emerald_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/emerald_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_broam.json index 7c440b444..0da834507 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/garnet_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_chip.json index 3b0063d0b..5656fca9c 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/garnet_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_mark.json index 613af6df7..15551c808 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/garnet_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/garnet_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_broam.json index 7c440b444..625697269 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/heliodor_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_chip.json index 3b0063d0b..3e80ea89b 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/heliodor_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_mark.json index 613af6df7..16af5b106 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/heliodor_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/heliodor_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_broam.json index 7c440b444..908d874c3 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/ruby_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_chip.json index 3b0063d0b..3fee9b5a9 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/ruby_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_mark.json index 613af6df7..d09131b97 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/ruby_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/ruby_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_broam.json index 7c440b444..9e4e89fa6 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/sapphire_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_chip.json index 3b0063d0b..0fb026e55 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/sapphire_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_mark.json index 613af6df7..65be82237 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/sapphire_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/sapphire_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_broam.json index 7c440b444..cf8df002e 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/smokestone_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_chip.json index 3b0063d0b..3401d7081 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/smokestone_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_mark.json index 613af6df7..9cded172f 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/smokestone_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/smokestone_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_broam.json index 7c440b444..a48c9d4c2 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/topaz_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_chip.json index 3b0063d0b..8c59a9267 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/topaz_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_mark.json index 613af6df7..8d603b4c9 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/topaz_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/topaz_mark" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_broam.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_broam.json index 7c440b444..01bf5bc75 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_broam.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_broam.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_broam" + "layer0": "surgebinding:item/zircon_broam" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_chip.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_chip.json index 3b0063d0b..de371c049 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_chip.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_chip.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_chip" + "layer0": "surgebinding:item/zircon_chip" } } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_mark.json b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_mark.json index 613af6df7..0fe19b7e5 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_mark.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/models/item/zircon_mark.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "surgebinding:item/gemstone_mark" + "layer0": "surgebinding:item/zircon_mark" } } \ No newline at end of file diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java index 1c8ba0cd9..cee38f849 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 8 - 10 - 2024 ~ Leaf + * File updated ~ 8 - 11 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding; @@ -7,7 +7,6 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.surgebinding.common.Surgebinding; -import leaf.cosmere.surgebinding.common.items.GemstoneItem; import leaf.cosmere.surgebinding.common.items.ShardbladeItem; import leaf.cosmere.surgebinding.common.registries.SurgebindingItems; import net.minecraft.data.PackOutput; @@ -59,22 +58,6 @@ else if (item instanceof ShardbladeItem) continue; } - else if (item instanceof GemstoneItem gemstoneItem) - { - switch (gemstoneItem.getSize()) - { - case BROAM: - simpleItem(path, "gemstone_broam"); - break; - case MARK: - simpleItem(path, "gemstone_mark"); - break; - case CHIP: - simpleItem(path, "gemstone_chip"); - break; - } - continue; - } //else normal item texture rules apply simpleItem(path, path); diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_broam.png b/src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_broam.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ad9b4db469fa92ee6128da00dded00443e6ac2 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_h|ehFJ6_ zCrGd!W-t&6DtP+x`+tLNeJ1LTUp1sAnl6@h+p_jW!snmn8bvxcOb*Yfsyq1nKMxT2 z-!n9LW4WU_@zJq>W1;Np7OqG?lp4J6|EvFO8~Y``Y_&HA$v%9!`gg?D#2pX*tzHk( z#UpIqW@N;&_8OEZ?Lo9le z6C_veWgbf3M$XWB>#u>-T<`-v|UJL%J>+Fz!y9!|=>!hN6LC p$#dfe-EJjEySd+b6tiw*U}*BN`}-{0q6X*`22WQ%mvv4FO#lE*Of3Ka literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/amethyst_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..04d30cc018505b02f1209a611299b8bb6a2756f1 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le z6C_v-_)o<3Ieg z-*oK8KW7a#gNMdv6ut=_o?Onuqc|=0e=V=;hF|kpV;}rmy}rOqd9zt^N2++?KR31) r=UO@wg^x?>zUUGcza=Q&x`ctDE80u6{1-oD!M^hCMvOeS;@Q8Z*EEt6E4>4L`1~;0eWO}oPS%%s4}- nWF5<5*rdqA!&70(&&R+J$L0F7L~@}d(Af;0u6{1-oD!Mzopr03th5 APyhe` literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_amethyst_small.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_amethyst_small.png new file mode 100644 index 0000000000000000000000000000000000000000..7dd4708d4d7694b612955a0e22929f040c31dca5 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Dm`5sLo9le z6C_v{H#9a1&QIC*|J8qkZ%29;R$NWG`se+Z&Hw-V+5eVLy7^Upx|LYWtl!ydBqe(9 z8Gm_NcRX8A*zDl)_3w;h_MAF>Vfyd64=-N+y+rx|5NvpV#kbAf|GlwIZRz~PvmcEv n{W%X57D&3;di{MfI|D=MIo+(D`CWg2j$rU~^>bP0l+XkKYP)Px#%t=H+R5*?8kRcAjKoCVAq_&nOdx3&036cXKD7XqZ1EMEEa0U=n_$mYhLDEVj zf{*}pbATdX8?tQ^5)6W`Hb48{%pdscYc)(`7KXX$U9UF)qSdnW-!jAg&__8fY}+n; z5h2=a2p~5hO_SK`dbqAz1Vsd;6#aImvVvtAha{!f^-xM7A^@!8m{XR01~_MTNK%y3 z;_~WV7cNy;%;$|{zkfmu9k;v6BbIKUFRrIo!QNFO0tAz3J{XUR_3NhB0yIRw>%zaG Y2X^C83sB5NhX4Qo07*qoM6N<$f&gV{djJ3c literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_diamond_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_diamond_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..e393b789de6f237d638191937aa9566295279f3a GIT binary patch literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|)_S@)hFJ8z zooLN<$U(%_|47*_mQCWU)t94QNa<{vq`8Sr_fE?Kjh8v1B06o2Cw-=~9#M-pBEIGF zq3F1KJKwX{*Tzpw(fhpTWmW67q_+W0n={>J9no0Iup=g)p;zRS5QBka|BBaA4B5Jw zLXTrq*D0{&lviI;Iks&AXIu*-+oYSU?-Xm~0y1Rho)UVk>%PI@7doFbz6<2Mps;;%(c3W%dct0I+l&IxD}!r)mN^`@DRK9mT?glMVyJ$-M3$uJ^WC5(c^5 zTNnR0#FX&%#MaCUk#5(&C%sfZa3yq!VoBkd%a#ms+pU+aJHqQC>>%&|dBXiu{}-AU XNbCI+6F7bi=u8GrS3j3^P6Px#%Sl8*R5*?8k|7JiU=W5Mjba}b`(P$PFs>;^gWaMa_zT1!`vt;^#V#%z?Sg57 zpa`-iivz*n&N7g>?-MO1pLX26@4avbe{$MR8%fpPn^~3kD52PqBX;Bn3rjMF33;V> z8M2E5hJ_{oMzsbVE1ODb0PNxb04rZ+R_r|+hffkD__uS)jPS0UQyRRAFWZf7k3PZr zzE9OgqyC}60mkzY0MqM={@Dd!P-6bhJ XXk|q!w8x#%00000NkvXXu0mjfP%Cda literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..82322ddb70b2c9443857185f73df6018cc57153d GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_h|ehFJ6_ zCrGd|^Gkd@#b*4+{o(qfA?KU?H$QF?Ys+5$&Tx-SHJ4V!Q+qS#4cY(heER?G|8*d= z{eAyq@#*@um9zd!mRyWEa^S#$meV~T^)WxccPxmt;B9F1yuZ!Z00=s&BPOLCIK6rK zgIVkM?m9j}_oeRzQ;r3v89sgvIs5-n`Q(4*wb9*I|MOHV7K}Zdn&eckz`#&tX!T-_ TRn0n}D;Ydp{an^LB{Ts5@r`2j literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_small.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_emerald_small.png new file mode 100644 index 0000000000000000000000000000000000000000..860b0658c90daaa82e1e631793697cc04bd51058 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|T0LDHLo9le z6C_v5hN^YPx#`AI}UR5*?8(7$TJP!z}Uui_Mg5Qpd`r3IJbASH{>klDoth(l=U3v?*hzJqk> z6F7;>oeQptbZM8OV0uXwhZdI(=@1n1r%gwPp6T*C+|Rw|z<-s}!L4}_?az1NGSg32 zC4JemP7sa*egKlF2&tq4(XrvW4=aWDya0Yj%9+G!z)Hcx7}2pAx`V`6#Q>nLZkRvK zVhk9%16-|@i{t{raS(=KzkTEExY#2r`IbNXe_YS0Am(g+%Ha!)!f}&DR3zuc+nrbVIkQo5 zrZ?wmMI8&%^ATqcDCnM3*jZ}F+`LKKFV!OU!=F!;Y;DW+B_-6>r+m0R;b101n7GZ~ zPct9>{GHEpo?kY#;^R|czq1y+Gk(97Q$DQS_TMq4i3bGw_x(F48DFuO-SWY+y4~(k dA(wa=7!>8ruBx}VP6j%c!PC{xWt~$(69CLGSPuXI literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_garnet_small.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_garnet_small.png new file mode 100644 index 0000000000000000000000000000000000000000..4f35459a486b69a2c5d22ff33e7d0b43af7add48 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|$~;{hLo9le z6C_v{Gw`nvzWhI4ecAu{6RgByW=Y%DD9(}P`9C`@HswevgRtLXV<*XZ@pk7YDC!=b zaAs-CWmOB_ig~d|6)d;*CO+;}-*NZ+fddVfGf&2N{cqmEA}Ij`*J`WJ8+^ZQJ148K hDMfGT{~vSgEr9mw%ZK|nS8xJZ44$rjF6*2UngF_8LY4pk literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_large.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_large.png new file mode 100644 index 0000000000000000000000000000000000000000..6ddf8bab89e23182ed1a6d303f0e0fca95ed5cc2 GIT binary patch literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|j(EB_hFJ6_ zCrGf0FuUb6Nhh=ZTipFq|6fC>F1Oj)y4+kIo;{a%Kw!S!yVM_l--sP{YZLxoDA}~= z=l{o<|NsB5<2)#D_V54yid+Bt*+2i=ANlU1{Or>+415}I_3-W6_wU4qM<4wU#Z~OC zwPId)pnn)V MUHx3vIVCg!0Ksr_S^xk5 literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_heliodor_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..68e7d0b56c4cafbbb8f8cfa793c2efd325cf7989 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|=6bp~hFJ6_ zCrGd!W-xd(>4t>%2l<)r_y1rH+p4p}# znk4J&cOU)m=%fFfQyZin?Ek_1cufOG+xF~7lKb}k^O*EH@PH5dx&Owp7KK*z1q=*w Xi&Xe49LrRIb~1Rn`njxgN@xNA5phJ; literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_large.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_large.png new file mode 100644 index 0000000000000000000000000000000000000000..57ba9e24d65233414fef09f4ccdc83c5e8a2a4bb GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|PJ6mIhFJ6_ zCrGgN9MQ-UdHlEk%=-GTlI!|gC3-JT^yC47Pi191FApBn$SRP!pmFTCy_Hd?OBp6ZAH zK80)l0}cFt@#!a522WQ%mvv4FO#n*vdjtRg literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..6683a94c768d47f7ac090eead2040fd9b1f85977 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|mV3H5hFJ6_ zCrGd|^Gk4QW{5og+ka+#{Z~m>es0CH7bkl1d@3vB0fF3^oDx|xI5OKBwJ%RMu&Mbf z=`0&2u5kOzqIG8q7A~0h@Zam|2;D=kS;b0I+ak{e@+=Zs!xOC+momfMWrm?i*T;YR zC(r-?|NE`2|I@p&|Hdz0|KGl|@u9umR|z#UpzQUjAxRZ~ADJIMIsLi>5PZ1Rqu7`u e9q1=lz`(%VW&B*X*z6O~$qb&ZelF{r5}E*DqFf#T literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_small.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_ruby_small.png new file mode 100644 index 0000000000000000000000000000000000000000..e6aa63688af8f25be82ea401043c4fb912a8a12a GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Dm+~rLo9le z6C_v{H#9a1&QDn^@xDH#?(gdJ60agZWcKy>Bu&`9IXM9cGEVy(SjD%Tkp~Dqm6h@6 zygJ46dhugPxqZKSLV1PlZYR!)-~Xfcvd|nokd_%wWsVkndTPoB1Z|ZThqzZK2r)C; gd??72v0-4a+9dsZ|G%|8KsPXWy85}Sb4q9e09zDA%m4rY literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_large.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_large.png new file mode 100644 index 0000000000000000000000000000000000000000..99383f78af0acabee582c5a0cd7f51231dc667de GIT binary patch literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|HhQ`^hFJ6_ zCrGd!W-wU9&B1-`&++9C-~JX8vDJ`CJUHwBJUhXHe{03XC9kM_k<8n>Wj!4?sc4!H8mf)8XG118Rcj68-FnVVVrY+Q&VHSBhR8n rh65d}X@co{Hh%biHjc-ZnVaE*ruC*Z9d&6y$1`}k`njxgN@xNA-ez7u literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..d12debba21b48c15f3be8789b08518b1b2ad8f21 GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_r3fhFJ6_ zCrGd^ZfI;2oV{Q}!rA(qNBQ@+C#*OwARxBp=lhq!2M+*2!Rw>0Y^I#GZOP%^3=M#w zrsf0JVF9rmv&tQs#xFXIjbkcT@`yJ}Hu25a!1?Y*>GX%EPVX=HwpLtRQUVC<4CIdo zbU$q3KXY8NFIF(wqAXSZ@NxF_0je_%bq`B*oKZR#!Tj<4?7b0J`E?i=R=(0pD*h^F Q2y`Tar>mdKI;Vst0Jkqwng9R* literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_small.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_sapphire_small.png new file mode 100644 index 0000000000000000000000000000000000000000..693bf3eff349572466f978256b57309dff039fe5 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|N<3X0Lo9le z6C_v{H*hrwPG?!3ajQP%-}mdAH>^6UbwYF2H~SmP{f$8I@LG2_PyW3v!esKvPnBh7n@X&+z gv-etD<i_@% literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_large.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_large.png new file mode 100644 index 0000000000000000000000000000000000000000..69e228eddf516380b46bc8a9e9f65d035ffdc84f GIT binary patch literal 302 zcmV+}0nz@6P)Px#=t)FDR5*?8k+Dj{P!xtgi<2POMG|l-wjJ6nbaANZT8XNHdN? zvfI7czu@~X<^7$j^^W3nMmyXIs36U{EBJr(2SoT(mqO8fHvj+t07*qoM6N<$f~FIH AOaK4? literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_smokestone_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..b357e38182b359106dba4846c527e2ad63764bc7 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|7J9lkhFJ6_ zCrGd!W-xd(`Hbe7|NUp?U$Pf;w&k|#{dR0wfnlg8CmS1E+y57B2@(^6XZ*K6dVIR0 zdu(ST5Ij6}wweb7w$I<6Q1SDLYFlbVECX|R-o4}DQDQZ-f@^9dC4eB$zW(5W0|!3H&sOyL zVe)!~w&9(+e@zdsc0ad>?Yzvoeg6Igi>iM%hbJ#TFR`z-qW?0(oJ0XBsgLqA`?Y!4 bFVaql#{14a*+SzepOJvgK)utP02 zXHRw>^TthurxMf4(jp)9bGoJ#-U$Bl@R!juUZw8Cb{}+HGMN|>e)8%HuQ<)t<9#^A zEjKD>T1DJBAeZ664>OtjZvO<1y(w7{9c$KciRE?el3tAooKb2eH4F(chd#dj$oBcb zRky6)0bGln0!ytLg+xQY$Fi!X#VlH3^(IVDV)|p=DHb1e9uzk#PUtVWv+IfS+;>fL b{_Eb`^eMbNEuj86(02@;u6{1-oD!M<$hL9@ literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_topaz_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_topaz_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..587e9771580b3eef83f6988486059adfcbc74899 GIT binary patch literal 208 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|x;$MRLo9le z6C_xf`6UWH&u~rp+keJC`n$yHD6yDXvVVLfC4j)rrjl1MIpIhDS%Ecd20(D)#!g3x z_A1kb!ZZP_)S9vS;F&nP%0 zz*$iB@a*O76}fGUb1p_C>UIhB%DTrt4zb?Az%VVqAZ5itzav0bF?hQAxvXWhkHeF?40|H5F za}dRL@b`3yYq`4{FLPV)?%0&0d3g5ne93uxe)I$zGXsIJ*}-c4dV!@g8RHegBDxPT jZ+!eBd(JC1IR=K$6{?FR_OCJmI)lN})z4*}Q$iB}k#|N( literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_large.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_large.png new file mode 100644 index 0000000000000000000000000000000000000000..64e53fd82b0fe2ad0e49eb0b2141be1f421ffc75 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|?s>X6hFJ6_ zCrGgN++exe68b+``2N>#W^GksIkTEeog_d&Ztu=Uy}$Bz1=M0@nXY{!ap&(Pi6<^5 z67Tj_AN=s}dOcgBnIN02o~p?8#2pOFA`iz&x7yb_3Y#rmq36JE&KH-O00cYg-UuAN z9dEy3)xlRyQ?t{IT8x(%$Jm#3G%{94B$z+A`F%f6|Ghg272lt#9zN&08EmuNAEye* z+1ds%U~3fR3frpR$2}-9Gdj=_E~~fn|E@oeB)IPX`*rZco8Rtj+V|frd~tBrgbRzg g*e;mz^D!{YoFBN(ZTI|Epidb*UHx3vIVCg!0BqQI&Hw-a literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_medium.png b/src/surgebinding/resources/assets/surgebinding/textures/item/cut_zircon_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..b262e76a3f08bbecbbc7ad31ccfa45d51101dec9 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|8a-VcLo9le z6C_v{H#9a1PH&mL;Z=RgzjfQUZ(NmnaA{pj*)VYfAXpP)Jh?HEm-+B+eSOJ$|9&-kOO`PM6`WS^aZu)Y pz~dsTr#i)9&!@L?ep{Kj8CBPtuYwmUlmxx zX7l^s^u*`OB6*g_+bG=Uwu zAGa^5;?pxz=b#FU$E%pH2V60JxGD1zopr0FIYgz5oCK literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/diamond_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/diamond_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..cd4cf5b19b3609f89bbe5d1770f1c69df1e58143 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le z6C_vlR?|0US&)PJ4Y2m}kO-?si=dXTNh$;s&myA02PIXCxyJ5--y qSn}NXLAP7U(QfXy9_5^d3=HP}_RFVbm4yOb!rOEZ?Lo9le z6C_v-QbH>Ez_pQ@lOr;OnF{ u40mT580I{(Sj-yx@sX4Dqs0?M7#MEyJ67&cQCkCa3WKMspUXO@geCx#gHcfc literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_broam.png b/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_broam.png new file mode 100644 index 0000000000000000000000000000000000000000..e69f86fd7cdc0fce521bcd1c0bd90cd652db8224 GIT binary patch literal 207 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Iz3$+Lo9le z6C_vF0PA)>Oi@u65*s?H0h@A0**2G@)X zR<(8fYtP=}V{zai!`+z%hB=Qcd|ku$?6}ZZAwGeLVPC7Q$FF&JmI58c;OXk;vd$@? F2>^YMRMh|g literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..c7835f8f0d0ae99d01ee7a1e139c287e95a3a86a GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>OEZ?Lo9le z6C_vcWJQY3os$Q+6@%Q?DMg~AovVQM}`HhW@j#C4t6x!$Wer#-i<1<6i rz_8@G@q=!+lB3<+Z#{}xH!?6JTH8NsborJAbP9u~tDnm{r-UW|s9jDi literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/emerald_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..2040748564a6563a7803aefb6cc379194db610bf GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Dm+~rLo9le z6C_v8p*pjFhs~q!NnLa{e#;f8$7@ l8~3h9M_bE|xGQQhFqkI0DgB%qQVnzigQu&X%Q~loCIFr4M}zPx$B1uF+R5*>*lCev}KorJ*Eef_s$5dOV?h?8=`5y=lPOfoqa&`*D$yt{U?b1yO z5-8Np0UazVMd~PBlA4NkXbAD?z&=DOoen}O!n?NaY8`gyZo}kciXFvuqWjFSL`w9cx(Sfezt{Q@I_I5y)DZ3SeGy`Y&qgu U{XC81GtiL?p00i_>zopr0RMeiDgXcg literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/garnet_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/garnet_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..f25452d035cf0f72aa7318a65a2518d243f9771a GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;qG}Lo9le z6C_vPpG@Kda}mXJ{|#pEx*m7nl~9Rz0;_@RiMAu(zF6G_^}<(W(H4JKbLh*2~7a2%t90Z literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/garnet_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/garnet_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5462c2d169d2d007449397cd258e9951ddda23 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|YCT;XLo9le z6C_vKg@&Mf_M|9Sw+>i>p3JO01Yo^v*1>G>V+ZddQoJH~Zk rE~oHewLash3!?gZTa@j%JQ*3P)9i26O^g2nbO?i|tDnm{r-UW|iSDJ%+z!%=S^%HMDd;Z-Q@4ovDr{np(r~2u9n4fy> z-UEL6)~z?c^|c56_}=;A_AtM2cK_*a69pFSz& zgSX#(_u1R^`NR3Pe@bOzp69oHd}_#-FwF65ZtGmDJ4)ZlL#E=XQm0zqzWmP#pL;kh zr_VLr<;VEb(z{k@^23+bk5A*B`K9^ZeE;GRKdY{P_Q8wi7w3;&JU{U2>wkXi1FY@cyVu{?JC=L* zu0QeUqJ4#FTrSAopMLcG`yR}9o|_+?zx;5V+gBLomtW21(ZzG~>+8AUaen;z;fu57 zz_ao%k41=u5^^fZHM~mlkbz1P#`C~td z5KsL@{|SG18c&z=hxdAR;Ot)i!hGk!{TEJdU+?Q_eg4wKkKXKoAdEy5jA;!ckHI~ zk$1fQRj*_3r{J<;oLx3spUuYhg|%*)2i_xleadSXQZJ|L=@WJNm+uytd+FufUwX~4&+jPt_441} z^9la_^?&~3_s>{jJ|@z#Th(`>xmZ@dwf^0+XRpmKy}LPMWghJY;okT!?|J-R&?>Jl z*VWWZHsukr_vljRRQ(H=zkBKIE&EqG&xc_QBRWm_IqMe_vcWHTW`|`6=(m0e)0^*z zy5SW&O?LQQ1y4EFc$s|9Li4-c4pZi56Wr*GDn_^YUBTsE`y%Um?J}c90*bI?`4FPD zgY#PJ?eCgjxUZIrd%J65sS{I1#ex}SYEsl{i(8jm~O2 zZXTDOl#SM8UJZGs6l))CZZnhj$}69%e!HwH&4SrtWZ7fPa&2PP2Q_B4S9(|$@0MZn z+N(k@y+cCvgvg^iMJCwCA%>~o%^^;9^BfDKBHzx8h{NPq`@wJm;u2%7n5fm;$7P~6 zleXDB*pN*NI~rn~GUcZ!&!=%=qc@Ms`aUm$$&4GvY?_SDhGNoLZ${6V$8xCc`{)o) zg|#r8=4|E+aFB+;lo{PP%}YOSpJU(*jXnD~ULAnJEXQiUPx;m(6n=EC)FDSuu|}5^8cz<}``EcjMG+Gnnn~8si)T-h-L) zA+uieS41@qE}wKT11}slk86rW9%od&&pCyKoNcEg7HR6eRTz-I-})}C-Kbq2acEet zxY}CdicDdI6xMAX?dJ2SP3YONLDnl~qmi{Akb8#_GJ4i*uhM}MGd9zGt8*u(G`u#HW*^;BbLe9y|`_c8wj2fFZ`xB^O?6eM<4XhIHLTZg4 z(PV?SMc(@mH~RqEDT^vZz8r>4F|n+lnexCv(hH7j>^JKPJr$Ffh-|XOlA(Npyh~?O z@S_>VD2j2bOcZ(1PeJ2AOm50_6dfG`7771iVzL^SZ1cO+XoI%M*P=}3dfwIRdB~hq zVR1|Br|s)iXv~-?ROV6EnOe-01yQa=l2-XQQ{X4NSbwn_jW3Bj{Md+ z;@b|MHQ_K%D$8^6eJwgVj!yNXw*hy0^SjXMh=urHI8J^MpGglQ6Ki7|1o z`Dn7yYEHC8zJ>*}q&SC#DsTmEFfN-1J@BrGb1J?s$A^tX!!q#^8x{NQb42Llq7`q5 zL$(BwRbnK(6m1q8`Z3te`ri1QCDCZ+Nnv4e>$8}TSR@q;tJNDFH_Mk14}Ka5fO5vA zP!1W9(1=I9^xhPGuwk=JGhxQm@wzZ#IKUI@H7r&S1!gyH_H#_%=VnC9d%R|X zB9RF(B~w7-_qcNNxP85dFPu1)gXjt6k^6pDQ#KB95y3Mo;bvJ~h9&fa&rk~->ydX2 zx#f6b%)&@Gh=acMU6y#vA*Y!hJ%TZdPwt37P(>)!0fAAQV=HU);&mZ5jkseJ+rcpL zCj#b4JHV5;Sx=yz>>?qp$vNN_pBh`MY*zI6#2inYsCn}o{b21l&YAa1-1)0=4@-^h%^_CEAK;5ujU@*jttN)b;HWM6X zvrG&#@ENf?!aih#8JLZkQ$Ap9r+%I$Uu@sUiKt_+1P7pbqN96$A?`2|AroIIq;>PS z7KaQGE2x0K8u}GyD)MadK%BX|wny z#Eh&Qz`Fsx8hgL_JmQ2;RyhJQ0)8|NXK1jPUe77FR)gt`n|*SQ2`C;SUuZA|WEHFy zZwdd)=aJZ5qbxViam4#rf@9QA~@JEDFT4a@0!G@;`aIlL>o+jmD8aA z3rU1x)-eux`@8V}LJZ7oP^PG~C`?&lA_GBEvDu&Sz+UsRI;d#o)z(JP&Sk9{pI`MbpWoysE(QAgoFDQActN9H5u>n zdGi_aeUE|gc}C6y?s&kj#34Jpz-Wvi*YF0`fa< zmI*&9H+#v$@pi z$qDSv(9!-Xp|J;7!kkSOt0?=}FYLk$@Q8DsyIF14s{}uG_6|kL0T6tGSTx|v>E61a ziR<04*=~m(t4bhDpfQ3C5oxfGKv=LetS>g@IsU0EJ!(1hx?S7>q>m9M92M z?ZOTA5y&P;Hgp`w$YC1M69M@m8RLt>VSu;et6}nB?C8Rt@C?O+nGLZgD4IzmVrTQQ z*ldTwf~`S)GNdp{EQ-hnPsq%n*W`$d-kv)N%apVD=o~x&qFM3DbphH3TF#(&)Al@H z%*oDs3?exkFn7Zl8VVv1OPvI#5aV?tID5utv}Q=Cw(gTKMMLe6gC z;%L2M9sDkMTmpqb!(Rf{-#$ljU{3E(>U9UmX-H-&poCqNMeEYb-zb5OMqXI() zzeg+L5CTuzo;Ym|;2@jV9xY7n7rziF8 zCC&zdABlD?0jb$+)4&W|K~7d;KCvCYmzWQKJdP8JbR~Bv2}p@Wi9n1|&gG~Izj^IN ztIh&3iPsESNPK{T6wkuJ<|`=b?f!&-^*yLNdX-$jgeyYGF>xpz2zRgJFfE(c3m+0B z5Acjt1Jv2!0Qi_WSc4)N6G)J5-ACLarzQn1hicAw;0zzt zF_2>PAnkI7NT`u6A`7O*QQ>fI9+w}Bc>#L_dtY$??2smgVU1P4I( z=r0_B*+Hiu^GYretbBVefP|qZd}Ispw1iWG11uS3089bdH1=+@{{^NIaih^+lD_8* z5sSio$=m?6V1`A-X>&Z(!)GG!0QVJ|4=62e3E(ApKC%D+TE@7|_*cIy&MSh?WfCOR zVrxlNfty4;;?d-j-Hww3iGt-}ERadoJ_znR!^&7-Q4kX0ify-#gDv2yFe&mdm$?%x zIO8%ic_L8n5I5^W02lC8mMV8S$Hz(DN-TKP(L-J_Ge%^q+z(EWCX})#CKWCj9`!(k zE37aDjSqZmGtPu{RO}bIrXmWKCe(?M_z~aU7Ra20UYo}iS85d4_JAXR9U^QWi5f=C znVp8fdpGMse2|I72f*?0a{xXdodhf;Nk||MRBjPBpGWbRixG7LGz4TKxJfVBd|X9q z$vS~JY+o<(*tsXMM>-V;SaSH#FK|#sJ$a%*W0uWvEuJ@T;#ixB>FuzNLAV9vtEQ(WoHA6ZnR)=oVmg{E4`TXesfd#{v&gf$Im|lb+mcw?_aSi-i!*DS@&^=k#ho+%Vw=fOCo4 zbu_YwF~gTrMBd^9;7aWG8kfk4&Nhb|KP2@?`V7 zU{iVG1$Z5T&;n-*=bN{JnM?&#pBvyNQ?Brha7&;NkC`FqC44ynPiAy|L3pJ$`{YxO z1ylpvyPk-BR3fW@SQ)`KevU`SZpY(f(fc(+AQ~y&vOh7 z^N*HivB@J#J`H?NNgCbyd9y!3n#C1f>T^);WC|r$?%0Kqr0@u_<0iR)3HmJ5Qb_Wo zyU>6fMS?9j59Aqe>?Vjr+t&-192NmWpacHb%1sw`4FD4^@B-P|Z}z{YX~H$c|3XJ2 z4uYHTXU0{4EC&VEY}_srWG^AP;jcnY6mBQ$MfRArC!qj|g3RmowTGt)4u{zgv;@}% zb+bYY1RtaWV83tY`@-0Q8%10TL?m2m!ad9oK@q+^u{*Bbuz6f$D?v2`=IF`&lKBG1 z9D!tp0B6gA0ywwXKFYfYJcv6$!dQ0kSA}kfPpF7F>`X+n^*kcpqZU#dX*hx+kXu}w zh#dmva1d)2%;)xZNwU}@_rU9D8j)2yAU zfEm0CxSe|YxC}_K!bw^zdC}POt{^^>>HTae(|}sA**5{2VDp4FjE(`sN8b~>6WmI~ z1#Kk9#oxSMgb2B?%yCln!iKWRh##L55WsV`2Lt5|@G8Kz!Q>5__5A|JjSMe2ot(HM2sbJkqIj)g5Oani zZs+Fp!e$X$VPS!UL{A9LL^TU30&6)14x_gDUF3-&;^1TA%<%?ff_ev11Ee-1hPV&g zIl2o_9wNzTq$UH7i14-vzx##Vg&Ktl*?hK_iS-70hI@wtj3>gPc>*jHnWB`C*w${g zLr}AcR&bY84^P37IYcnf{G?}qvK%!F%Vzzx%yAA3A$}V-rmy10ogrPd0Ro;C#J?7Y1&d~Lq*$lzEuUI zJ@6QXgO!lZ_(YJeMM{IJyd%|Os;bg^wrc$voLlRZsA47ofOTg$g?<(sJU((MU?)|E8uScOvt{j6J0K+Nmb*ZimQy4i=H?jCDZ=jzIk z#kUPC$kNt%EKQwvb&P!Xz>*}s8qRfp_J5w7l)TRlwshR_Wbh@eW21A|Rj%lAE622AMH*PH#x~Tysy#Y)eatIFGH)p+DwV8c zp#Ct_U5#ip2Hk&PNl1IuP6g-dGGC8rP*vyaq5)qeTYKo3q7ymUx-)I4)(vP_+kkwj zF62!-v~SFucrUhj7p#afdao!O9_*Ud>bgBJ$WR*3$%!5ND|)ibRTE35R~E4@>qEy> z##8F1;;6Li*L-J4sj~SBxv__iX=p-QSGw_CQOaXgWlhZiFQX%5Ro#I>l2`8X&KIre zqHI9bpdO8@jSp2-H;0xa`l5qx#FBSzJ*KK++jFfMI`*JG^tD(4TNg}-Q;n3As*R;@ zjU#CEAso^rr7k;#_I7Q1smxu@TwPuB$F4fG-6a`?9F=&(V_F7Ip?1=WqLX;Y>%_ zDSGM9*IHGzE!nL$l=8KT^DWv>HG&qmheWyQsv2joEjZMo6hf>}>P2H(EDj};2fo%~ zHXNHL)^t^PoVupyumHBhE+0B?t!o?Cd4+4RYOc_=O=DZ!APyXE#-XpZ1t*kfpyqV1 zCLiQScO`CSYwLp!Mpr0QR~>9s^APJAiWYyiX=KWrp#xv*aEZ}3t;OW-4o)3g@`j=X z+g2Ys-E_HtA1^GI9?In!ECPK3Mv(L;7Y0djAEE84$q2noYOkHm8$KfYpwO>f+oIwt zoR&SN;Poe2aj!c|I}6#0Sh6oUHX72B)7_qvcm1TYoivGPg6~#?(A7SaU8!mhcQ@|Q zwXZ)(jS#g}co%3UG0KhVFqH&Ap{5tc$FJz! z1B&c%<_>+cEDfPAR#P`!j#1nG&5D#2TCv0xE$U`pg745btBSa=h`!3(1~h4pO?$(W zjSpR3_?WK}&ygccG#&1qtxZa9^%K&^u2iOO%Nz^T#XSe~`kPNYNd}Xw7;@KecyO{4 zEA+&Zcy_8Y2(5A$xgxc;x^3{UAu?Q^m0B58dg)Qq7Gsq7CX7!)H%<9E=802=&~}|G zgp^-3VUJ3`o@YVKURALSMEE>e0y34cLYWi|!9_~?s6l@0WOF`Q*P1VO6s@G@`Q(%A z3VsS9O`{9%Z}3eyD;bkJ}q-NHGv$tNFQTljbwl@f|x z)9r^5uJ@DJo_rEPBn&~R zG^QjD-Tuv;)`TBf0CSo;CGk&ubA8g61#t`5R8lAGd6J;tC@>rFx0GFZ@=3A066WE0 z0~(}Gwq<0vr+FK^NIYJ%YOyMj*pRq9rA^!ulEAK@dvQ!4{!^))SlcI`6!jqSA+lx|tx^|M0vRpgClN;M z3plRz(34NfJW*icQHe8_8tvoX6e|c21uG+xp4r!w?E0IC+GBbMZPMxj7&dgV+=ne+ zKUsA^jkpBGr4Lr%|MLjmN`p_GlG_Fku>v|I3m`#KWo#SCxKL$O7FE(?WC6u%>bekD z8Dfj@!9-)WIft1S>a4)hramD;Dub*`>`vmgfM-tMK|`q@1m}Ik z^6Qj@a-!y>HwQdoeb+q&i zYmkVBu%%UXYK4fH0VDAGz=LI{&e2_u7UJ)jBOlkhZ@Cq$OQjb#?1QXuV2{TKwTXz2$xf=tX) z>bs!!p!1{~*SU(H3R)l0yG7f?)cSg$g~F5Fx{P`@dvb(1DBFhQA6A(41s!cD=Hsa2 z;}C`0)&tbt3MX(eg0%28VpIU`6oE7<;&G}NvuSrcHPZuRLE zC)d^k6hZN41xHN)@{0 z2Y+u9D+CDu7*5oYTk#Am70odTy?|gl?9JiPYE=p-S%Ki8Sy-W_EZGrg%r39U&ZnO2 z$fb2153DkTFV7i)^?;?rFefac*2JLr{u1BqKu&fAloPXDl3q%U7GvmIW-7VELQWY| z^oGM@tFqqL80Jd<0bU*ZP0~nov4hJlWDpuLK|s@(M4Ee0!a@lb1d1to0UIuZS75jfm0>@d}bZAn)n zY?>$(GODFXAO-B%vHMvwy)JL@s#f0~ahFIRWM3-!Q*khv{HnwKM}e+-S3K5|bL%CW zL0&bnE99zf@NLl1+gz^6w=9*z}EZHbl0bBrso^oA*lm_>Zhd1 z0lE)LD7}}+B2${aj|h78G_I|0f#%yy?Raw9#s|aXS%Bv!x1E>ZdLa(gWiJ^jk zlHP@dgqb|NGl=|=J5%I%tz}EeH{=M>yO=ceEv_8-NlZ=Zo49)gsTpu*Io)N`)%0{K z$xCvG%G8t6(xr{~4E3saBaSt33yvpQ`f6WOr0ca+9SaM_57%k+$6)@{4NsB@YZygh zv^1x%HH;KmIm&2ZXb^yKMuDs7lbO&9V5xAD;CXfAq(v{_2!JsJl6k;nG2!bLfcaJ- zgQ$;ng-B#I1Y6YYMAM~kU6QZIev_0Jj6v&5fSc7q;F4Fw?Vy%`?uiHw>Fx;AbF#Q1 zOytugLZgNdUl)d3A_6I}qet#aAg>upj3x=C)j|-FG$o{z)-#cWe+^3y#<4+4;RedC zz)1rZLF?9~+1pI{T85z7Y0`DXz&r1eM%r~v;sq8L(wExL5-}jS$4|LD*<>}9HdQU{ z=jxOURgo(;0+~U;8<{6-iv~vgEtI5vR}fr}mShmA7BH7f&sXDO8q*pwTD^u8`h;7Rk;H|EPa?OQGjIjzQ(PcugFEc81Ri0u9*%~9BB^h7NAC(XCtQ(2 zTLkH@z(pm}@`MJV07ewtgjrhK99~~i{!Z9n~liu4g8Gb_7rJX9z)WBY^)ju&dRp)0xis; z)L}a69Y+JI6wxf1T*|qXOL&feQAf%V#~&6QX>lZVm3s2!t%+SQLL|sjyMoVO&_JDr z8??wIa-n*cmQNIzQSCAHbo|}N1HL-p)cNAcvHz$-k$mWgwAR2!Mj1KM)(JTRvcq8F zPwy-fgn$Nm5z(v=Zj&RnN3Rm@2&^M)=?>o|uT_-z30zG;Tjw%0T1df!viPi*eka)l z@H{AzcvM}Jh=Yx#yTL%$O8B9)tr{rU<{B7kPbqezQvfxGDSVfXoH>M1ig7PBD40EH zJsEb-n(w3kU+;`Ndai_MprgX(-=PJ7*wjc^z#r**nedGaRG%ZI(7Og&IbId?G_f(R zL!W?D(G3O0S|Uy}_%ga7#Zz7GjO4edx`B3y>tGU=9|(}c_v;G5Tm=Dw=LWC~ zEj2OP2m*~eWFXP3nyf16Y#_7=qG<4+)RW*LtdFI1Vbv;-8KJU3O2uF09*4w}r14u^ z8iMxSH!U;)cyf>dk>w_V&XN#4c2~-ySEwe=2d=00&Wc~Nla%yCvb?Z4@gNiP1YbRJ zp27h?YFFsAKw{H?L69F1UzdC%fNcfs6cT(Y=gr+4K!2QMl0KrXOI5&rZ?WK2F0~_v z=ZSixxdvEu0Y0{VlL!LV5y?s%(S5C=uJn-2J1zr)?tF#L@}`!|4P$A5ED~{{(DrLf zmL`-tb`tI;U?Po6p@OMY3`~6q^y(74n_!ONq6qL7>JkVAVrZM-q|gXZ>IX{JX4OLg zKrM+};t{B7O^Q_qKN4($M00D`S{h1WfNUtJ;cXotWMXZD zdnzBn{UuXzDO=|9}*s(qOSq z%$2Mnr_`4nv88x&keX`xUO+`)yHnmdyhc2+n!*tB14tlPILbua9m3LTUp2$E1eR2D zD8H5i$&(Zta8y)>dj`ecCagYT5xilkW`EuKZsXq&t)t`1&@{W90ZgPQ4o(6@B`Wz+ zCylBGLC22RQwqgOY!amK8=?dj$mhs!66$tB=C5{`F74S`(0%H{D4^-~6;xdB3XB;| z^$nfWZiuhimf}lmS)(eiU8x+XwlXe~YrUY=`QE?%G_n;FvKjb;L93(3U5dB+cS`!1%rk_ghNM8O7>5s>6VQPQj3g_bG9vsb zn%~f#WsR9=?%8=LHYhU+;}V`64`KT0Dt+ne2H^urG7lFdv?*U#%7@@~QfagMCh$>% zb1WPjUF@x@yWW)oa*?nc$@;BcGWL=9R-rTCOzo>ReErD=B#&UH#(R|5kmgGb_!XIN z$O8M?s$M@yMIvJbxTMfQB!Q0ud+{6r7^6t+3hb35=ZRmAbHFAPJNs=YWTT?8lBz98 zfr)RjAdnaU&S9L1WdeP~H76#}!jVe&x|D?-D+!SGb9e(>AF)OQ5pq@q=K^;g*dm3( zIEqt_ls=q4@%ZqEcD$4t+8kC5ubyh-R9uL+dF(es1zHYkMp5}8ekYZSkTanQ!SmQ# zjCd_WoWvvNNl!eSX~c9b2?cwC^vHj?W(Cx8U%BP=HzC-PFegN#Vo4+c>^eaIC;cc~ zoRkceq~LPmZdAcdpM?H`rwA=$$Ah747Gg5wBv{$4OV~6j?df+(@|n9^g~K3B!iZ;% zuM9GivfYr6X=BhqT)VWu#LIlDlQbOcs6<5RC;_HqOq?hl3NJ=RYBPhMbj%10zZ#Bak!S;A%bE_#4Zq! zaGqL|KzzB3VO}MSqQim*Ew3R|@>7&^EU&AGx+hoD!6uh5I6-MG69?Y-kmrg;bV^)*4>C@|AZ3Q>db5xuN0-U<-v< zCNvmYk1S$_ ziH)Hv))chuBpwC;XWGI_b$Dk9t?5gMccwDZ>t-D-L#TvcLb4Q=X6mevBZ1>XTZ)|q zgL_S6Nu<{h8j$=>oRzZ4SqbPPIKnrRA);j{+g!YaF_5*TyC^Xde*^SM;FkDiMa=-G zlN839b4DFerw=0q`LjSesVC{%3QL370e>DDB8^|;WWz!L@orK&fy@PD1CUiZO~`0z z{6S&5TwsqyPGNskV?lOC&r=e=YHH3TrwpQ*FhY~_6sQPTfxX$`jhp%OBy)0p3p{76i(Lu1qz}<;iAQAd^^9N}8Co zOwAK*#Sg)dyqxD|ZyYBUE-`s9+`Y9K1W_!~0I%63sQ?*2_1}Ovz;iR}s{GrXA8YpwBQ0A~3F7*)jDtaiVqrggpO{}dz zO7yTZZ&+J`bPf!_Fyz7HlfI)p6dw4>NaBD=DFrQ#I01W`$6Un@#K}_X1afy{Nua=( zsutu8gC;9P;-6qy5Th2BTEYqftCP4Q04pz9Gr|UG}vsZ2ppLjEB0E|xG*U zs0BLg373w;j3m%r%}NVN@~L1pDq**|pnz%|O1Vg3$_fQMRWMu%tSqV06yFfP0B)o- z+yF@BNh%ukkrmWw3Tnd2*7wMkPTabOeG}29W4n2Wt>kE#ybW8 zwq~V;K(-<1vWb`_N`Wyc0C@H{MDEB29xHu9Fa+tqb=QB}}Xkkz-9w z0O^z+=C|3Kl6!NGJY_&Tq~Ap=>`pdY+ri_cXcO?bOhk2XeqkI~I#b`&LJ*b1xC7Xv zan~w+B73k8*AYrwn%w zqO5M2E_GrlPC20smo`WT3Y>D$2_^hhh&R$_1m7$reKd8DL^yVA7rkz-qyXrnG#mdI zgnBpHtynb$Qo{8Ebh&BfHWDqvHUy2`A?viFB;6K5Yo-w@v4P!edA*>VRdO+|MN zMN2FxrCfCJ0XU`^ed3$&^{Igjw2E0PY4IPiM>XaCCiW9 zTd1t5Z=xGJsBdVo-C1G1SYNvF08|m_C%#EPO!5s(b;ng@oeT~ynMihqg4ooPROg9o zUp~3L{sN^#C9{EXcbT!JY)*VPtRUIx6mDEn*GD!;N&;@k*B7irp}{1JwPu7^+tNxK zBfd?Dm6#{(a6${lLaE*AYi?$RmqbYt>5}>0?aF4JH8I_>^8{kXdTJc6Rr(@@XszRn z0XYM+CiE?p7su`=^mR&GxF3L~T<9UPG$b*lX$e&sIOvJBg`g+70{G;+h?xkR^pK`^ zFpx@$GesXMGC9<3aXQvr*<887fjD+;Y4>s5H?hk{ev|reSR)>Pg2E`)mW(Y*AM_X> z9p53L6`NI@h84)|h} zW2C;xctPYzC0l3>Ww^9U@m?u{UP=Ns1Wj9ZPT~IaHB$Qjx(kx+DXqSHMH_)~H70Bs$*GWYmz)`CJ)uN!`?R#APvx(q`#DYF8Q(5z!2!SxQM`zsDwS$ozy|LW>f_#FJ7Plv`U$*9)FR z4R+KukU6c$_M{?o945TyAg#Ms|CS~aaIElzsEld=`V-&87pHR`{>4o(W2Ad+vi8Q@ z;I`T?JPGJgERiNTBGN|)32j7Nf9^T>(x84E6pl)-M~mK zktU>n6%-U2X{5A?VCTn;7AhmF!>v!3p0V^OM`uFihK83yB4{0TeEY+7JUfG=dr1xiNhxPVTVE^^BzICWayJ5nbE)`~ z=#8`vX{$F>aBb^A#>G^mt!VcQ%T!J_Z9IW_jHR%XD-B|TY0wbs9w`abE7DGycKA@D zWuCck-?>kMI%8&=+7*i2DCZ-wdxxKEH${G7wX>!aFTkPPX)u64 zuCRkb&IJak?u%SU1JI0-hF7r8Q*!ELE2sbj(GLlqnnFjp=t3zp!7A~adnj@>p2bn% zz@Sagw=f;(7fuZYcOTM&FQIQ~%}8re%o41=^_zU17O(|baAF9X*iTB?i7s%~U?9mn zw|B;ZiAWOmy>WPuWA1&EH61J}C1!p@H`<8q2&+)Dc~0$49+DdZtcxVd)MTXWKk#;ySBV!!Gt&}1QfEF z2{cPCfTFPlV=UHanGzbR_-Wwy(XVW_RC1CGg%6HxXcJmfs3ySM z@R2Y5gtasXn~RG-pS#ZviZEvMO)5$BEHy;}w3~ljN?1*&}Bb z{z2lbJozLM69^H(x%6^JT_+^riP3^5Ny`AB2)V^)-_@&EzR8o{lt_n;Rl*7qa55qB z05egekXp(Y^-ITjEBYEsq_ieWJ(xv{f{gm9*rn`oo zeDVgn0^^#Er&wzeZ^12|R(g@A1**azPt>X+#NQliHOhp1i?mNsOUb zX{1S&H~N+g9j+i47@RivJqeo)XA(voVAhRqV}h3T*gS7AS~$MkJ|HD#ya5#mFhK&0 z2Cm#%0J|e`R)D>LyvUH-7Cw#BcUn`> zmkx6*eZ5Sof{F{cj@=bu3m>;D)OJ%@14M#D#5`e{fSAz6NP3|sD;K1y=*VxvNr4|j z2lka|MUGHd%@WFTb1cYXVr^UOuzE*kVKYH=}!D(|ozI<=Ke^K5a=SLUk4YeKJ0r`-^!xx%}(1`;RVq-u6uM^of|ov$N^6unS28 zt+REX;G&z1_843aVQi0g@1}XsSI@ut;>=5>J#&`3Ooiu_IaT^JcVC_JYku`(kIt8i zSNn%^`2wSV`lOuBhxzuiSM$1E*SEj&U1#^F^H(2z)ybWMLqEU&%KY#RgMZLJ?C;GN z^TS6^pDYj0@7+GT*S|2|d2s)Q+ZX4z`v(tRIvabL_MKPmPfzvo(WkB#^YC{b^{=EC zXq=3q?-7@_xP^|Iv&l2?4WErjb~MvGhPYhK{NooWoT}o~#N!v}a_hzy`};4<)6*w+ zeh*V2`!@ET?)iS2hRjO~m$+~y;~>T1b5Pti^Knx_h!GC_xz73HwToW0OYuB{ zR-j<=8yy~9Y>>EB;qLV2ohMc5?$6CmEILs%k1n2@m(zX9bL)YU=ch|`F3NY+PVzS> z;AdraLtC^?=nqX5fhdU2Rxcv|xiWas5==MT?bIJ@7!bYRQj}4rHkTS zm!X*-jStTrh~~WdtLK_de*4-fYk|t``NLaZd(e;XoiA?B_fbL*Pu}{LfB&;jec7#B zpA?^I%ICvh{@^=*{Of=6YrpW%{Ly!O`rXfJKIh~Me)w0u;vMh!l3)DYul>{lWis@?+Dt-uvqB{(WEfAO7k)&;Ha~-}J8@eE$#q%)fcl zoBr3Ye#ftW$1lJ7>i7P|fAXn+^WXi{m;Lf5-}>SY{QT$rG%Bi@BWJa^Wf{g=x1O1&F}w(fBybAo&3Oy zC;GR3?k9isPyV%k`?=E(e%&8=<+uLPXMOJ7zwz_)fBeIL`@4SR(XX9;;lFsto8SLC z_Om|n+s{{D{3kx`yZaA+zx}Zv|Cc}b4}a`m-<>|=7XNvseMj@5>RbNY{{{Vgn{WUC diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_chip.png deleted file mode 100644 index 60e031bd27684ce59fb71553d77217f883628adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50610 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 vf3|(g*Z#tnef9_c&u{{UV?n diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/gemstone_mark.png deleted file mode 100644 index 0ad4cfd16f9fc77767e9f613327cdfcb41f20509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50622 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 MUF|=q|KivDUoAF^k^lez diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/heliodor.png b/src/surgebinding/resources/assets/surgebinding/textures/item/heliodor.png new file mode 100644 index 0000000000000000000000000000000000000000..65ac4d1fe064df81618d8d25cffaa927ae5db458 GIT binary patch literal 312 zcmV-80muG{P)Px#@<~KNR5*>*kuht+P!xqf#Zsgg97Dy$q3EQG;8vkOphIRm3H}m)gmY&HH%Fb{ zl1z~dSwe!)B~2(rGQ>d)ZQiY2^=$9ld(J)gUATEvByu%r=4Eal9GGpswf>qU9#7u@ z$Re*)-R5PJiX=ArFOY`NXq^gaNaF9vB9G-_`zuLRTr3U2wBTV>P)4UKw#o(q5`QQ1 z+8<<*M*mdKI;Vst0RA~ulmGw# literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/heliodor_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/heliodor_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..03abdba880bdbca3ce3deef53e284d8a027c4449 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>OEZ?Lo9le z6C_vf3ocaI0+|45jNg7R8|NFdP`W|1Kng9eZ;;J9oGXufm9I?e7Pxu}&^WU6l;GB^3 q;#~Rx@!l6*;^Ma^KI2MaWSH{XLGH5O>!U!YFnGH9xvXO5T>Lo9le z6C_vzUUGcza=Q&x`ctDJKZ5Be$p8|pi3A$UHx3vIVCg!0N)i$!vFvP literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/rosharan_diamond.png b/src/surgebinding/resources/assets/surgebinding/textures/item/rosharan_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..8807fb3c47ad87eb9d1c9d6479dcb360dbf625da GIT binary patch literal 335 zcmV-V0kHmwP)Px$2}wjjR5(v#WS|f*QmCJSx(4JH7XHWOqL(jUfu&Y0TZ&>SoCDIFo}A1eB_+kc z%gYNl=kw>!3@{85Y-(#qF$8P?OfyU)hz4PF%^3#>ZNGW*Cc`tRzn{E$4c7SJ%^U0nz`Wt> z;|o^cXlKi?|IlH$OOD*Q&Y&P70yY5Ic8~&;5Dklp{+|L0NO3U~+d&#Z2JG0l33n`j zOoJH!^2UbUyBR=U0y!U>(_zlTNJt<Px#=1D|BR5*>zl06E-KoEsLC6*}-b`~kpd4yEff~DAbfgC|{3JXCS#S3@>J8d-h z1A#;_om!?9#>R-mY>1Ukx66F*z12~~1AaMtX_mSEp zeUZcmxceahtF6!Sa$uA(HRTjE%Oo6*bKR9ssM|JoKP28qthPSYTID+dfZbs7g6E!> y8K3kfx`r;TMiZXDKKDETCHx_fUX(oWf9e4RuTYSOd2jIm0000U<0U literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/ruby_broam.png b/src/surgebinding/resources/assets/surgebinding/textures/item/ruby_broam.png new file mode 100644 index 0000000000000000000000000000000000000000..a81b1fcacded3842d18d2a45324ecc304aaa96ed GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|W_h|ehFJ6_ zCrGd!W-xd(dC#XWzw0HU-De4}kK*Y)G3z3)@(Ri6cb#L{MVj2$6aAVphM1oMV|U&-{gPw`_5quH(8_|7n9+>hueddVe=f< VIj540{sLXe;OXk;vd$@?2>_BuSZDwM literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/ruby_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/ruby_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac1b93ebf3e7c18c9fac8907770e160a9e1635d GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|vOHZJLo9le z6C_vOEZ?Lo9le z6C_vg>aU+lS!p8s3DzQAm8A7io*GjriTH?|vd vByZQhus17Yi@DgbuA*?E?8iV4Ed~awRJ-2YOL-;$oxgTe~DWM4f_mE8S literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire.png b/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire.png new file mode 100644 index 0000000000000000000000000000000000000000..9ae0a8513baa244e45622bad465556db9041ab25 GIT binary patch literal 326 zcmV-M0lEH(P)Px$07*naR5*?8ku7h+P!xtA)@wFXvlX>aH3iB30b&M+AjsKC6#Ew_BoaKDkW8Rv z5Rf(@X>yYalF_bWH7p@(?gZI|ehf2%*z3;8`#$H~d*EMxR;j3YdGn--`k(KEoL>|L zTa8Z238vwXLLbYrFFnDg` z1__g?#1S*_!L%)QN^1W_7SJD#>5V)Mn@pvC!d8UDe)#(z{20B>lHTZ0pOOablq8C( z0K|TXBW7HES!~6AV(q?;oUd|#)LD${2L({MZ4&z-rfsEG{xDtvNTQeg6^cMv9S6@x Y-vq^FtU9H%N&o-=07*qoM6N<$g0Js`>i_@% literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_broam.png b/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_broam.png new file mode 100644 index 0000000000000000000000000000000000000000..92a95138f672b160b0fb30799d3f3f3534c93f4a GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|7I?ZihFJ6_ zCrGd!W-t&6DtP+x`+tLNeJ1LTUp1sAnl6@h+p_jW!snmn8bvxcOb*YH60Uw~&&Cs_F~916&DR6L>q{+JBLsoi^v3Q}~`87y5o^ csIW3HTsiKz#WiYwD9~yKPgg&ebxsLQ0E)jxW&i*H literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/sapphire_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..516a2fcd6d8ca559ede1c47e1288212b5e33d13d GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le z6C_v#jp6^4 zvwPm!wRZPl>Hd!0d!^HZo7%mwPx#*GWV{R5*?8k~<2*KomufkjhFMF(y?&f?yZKQWqdtMO=g+?n+4E1{6|=V3AG> z6|AE9Y+`I=$V`&n!dne@IOn~Afqxox7pu)$=v@|P1i@Bej5=`QjbxXn2>=7j1`tI_ zLx(5ch`!kcVCXvR!c$2Uo+G)5Q3VfO2Y}1%DP@l&rPDQ~r1lBLJd(6DT~DRpa(ha+ z2*$5Bw$-Z^WN`+bI`w$i%X72U#gTe~DWM4f(neH- literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..af737d223ec86e70c99853c23c173be12c93a4e1 GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;zM~Lo9le z6C_v@r_DL%6uxK2g}xse cDy$3)?zf$!*41s83$&WS)78&qol`;+05f4k;{X5v literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/smokestone_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..045b42eee9965f126a614b2d9dcf64cebb5739fe GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le z6C_vzopr0OHzAEC2ui literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/topaz.png b/src/surgebinding/resources/assets/surgebinding/textures/item/topaz.png new file mode 100644 index 0000000000000000000000000000000000000000..4f11eefc84e45b4f3fd4dc9c3d5e3ee3d84f6747 GIT binary patch literal 328 zcmV-O0k{5%P)Px$0!c(cR5*>rld)<7K@f&N#Wrxwg2e{n1B3`-A;NK0TET~~Oc%%_1new*2p_;o z1Q82CNn;@(v(|anz`u z@3FA}1X|IB!zH93iFNqOpxpt$Y<2*Yfv8dSAl?K3gLa4L{p|!8_5oN<76e*(wRs7U z47Y+iueSSa51hbtF4dm-9)B^MTSB3MxIz-PoGdaYyt+bcEPw0&RL&Wi2?(^pY<4Nb zoKP1ZJiyfzVq?9I(gY%)TzO(P{Yg07owRSx^+FEvGcY_E6!`C?X V=;Lkg=L22I;OXk;vd$@?2>>6ASik@P literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/topaz_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/topaz_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..b88b72dbf417a9f5c66900aea93313c35cab4dee GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;zM~Lo9le z6C_v@r_DL%6uxK2g}xse cDy$3)yPrDFX~FVdQ&MBb@03aSjXaE2J literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/topaz_mark.png b/src/surgebinding/resources/assets/surgebinding/textures/item/topaz_mark.png new file mode 100644 index 0000000000000000000000000000000000000000..859748f9e67076517fb4bd2beb32e1ef9e567398 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le z6C_v;TerTbk9QVa^Y6I9gMX{n7nn^?Vtc$R*ZjjS32ldR sH6NbY7Uwb?!}sjC(Dy?_g_VIpXQhMB%ae?iK$kFhy85}Sb4q9e0A`>{d;kCd literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/zircon.png b/src/surgebinding/resources/assets/surgebinding/textures/item/zircon.png new file mode 100644 index 0000000000000000000000000000000000000000..d41eb54a28a4b765356ef6eafd8e6f90c85e4317 GIT binary patch literal 320 zcmV-G0l)rPx#`bk7VR5*>zk+BNGFcd{^B}j2mbZ~GJghj?Em_TGHlEk89&TvxP^Uu@T-KLI99?NWm6v_XlYA z2U<8v6SS(HQ5~~|x$hyItv(R(UI-FrPr1BCj!^+AoUOop58U@O|9HO{cMU)w=GOkB zGywplm%VnTT8OhJeH0+xAZjNNTmkY`Xj3@dB`QTnfp(J+f#B-=_ISW$>^lGe7Rd&+ zqO11w@;7NS?Ub6*Z}hNEx7w>DmodcI88iU{K#*>^u6fjVK5PXL#OCM2|DhLOdv~@x SKyds30000(oXdNPP8{w})pZ&;LZJ^1ZhHH4MkT$sgiqzVXlb|HjV8CZe$)A30e+igf_`;Kyut VeY=WxH9%J~c)I$ztaD0e0suGPS?d4* literal 0 HcmV?d00001 diff --git a/src/surgebinding/resources/assets/surgebinding/textures/item/zircon_chip.png b/src/surgebinding/resources/assets/surgebinding/textures/item/zircon_chip.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fe8a63deae7ade21d06d5f9cf565a99845f151 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;qG}Lo9le z6C_vgTe~DWM4fwzNq# literal 0 HcmV?d00001 From 51792d9004eb7cf40bc582c3cdae1bc3db6bfbdb Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 8 Nov 2025 14:31:33 +1300 Subject: [PATCH 1039/1090] [Cosmere] New Textures for metal items --- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 120 +++++++++--------- .../cosmere/models/item/aluminum_ingot.json | 2 +- .../cosmere/models/item/aluminum_nugget.json | 2 +- .../cosmere/models/item/atium_ingot.json | 2 +- .../cosmere/models/item/atium_nugget.json | 2 +- .../cosmere/models/item/bendalloy_blend.json | 2 +- .../cosmere/models/item/bendalloy_ingot.json | 2 +- .../cosmere/models/item/bendalloy_nugget.json | 2 +- .../cosmere/models/item/brass_blend.json | 2 +- .../cosmere/models/item/brass_ingot.json | 2 +- .../cosmere/models/item/brass_nugget.json | 2 +- .../cosmere/models/item/bronze_blend.json | 2 +- .../cosmere/models/item/bronze_ingot.json | 2 +- .../cosmere/models/item/bronze_nugget.json | 2 +- .../cosmere/models/item/cadmium_ingot.json | 2 +- .../cosmere/models/item/cadmium_nugget.json | 2 +- .../cosmere/models/item/chromium_ingot.json | 2 +- .../cosmere/models/item/chromium_nugget.json | 2 +- .../cosmere/models/item/copper_nugget.json | 2 +- .../cosmere/models/item/duralumin_blend.json | 2 +- .../cosmere/models/item/duralumin_ingot.json | 2 +- .../cosmere/models/item/duralumin_nugget.json | 2 +- .../cosmere/models/item/electrum_blend.json | 2 +- .../cosmere/models/item/electrum_ingot.json | 2 +- .../cosmere/models/item/electrum_nugget.json | 2 +- .../cosmere/models/item/harmonium_ingot.json | 2 +- .../cosmere/models/item/harmonium_nugget.json | 2 +- .../cosmere/models/item/lead_ingot.json | 2 +- .../cosmere/models/item/lead_nugget.json | 2 +- .../cosmere/models/item/lerasatium_ingot.json | 2 +- .../models/item/lerasatium_nugget.json | 2 +- .../cosmere/models/item/lerasium_ingot.json | 2 +- .../cosmere/models/item/lerasium_nugget.json | 2 +- .../cosmere/models/item/malatium_ingot.json | 2 +- .../cosmere/models/item/malatium_nugget.json | 2 +- .../cosmere/models/item/nickel_ingot.json | 2 +- .../cosmere/models/item/nickel_nugget.json | 2 +- .../cosmere/models/item/nicrosil_blend.json | 2 +- .../cosmere/models/item/nicrosil_ingot.json | 2 +- .../cosmere/models/item/nicrosil_nugget.json | 2 +- .../cosmere/models/item/pewter_blend.json | 2 +- .../cosmere/models/item/pewter_ingot.json | 2 +- .../cosmere/models/item/pewter_nugget.json | 2 +- .../cosmere/models/item/raw_aluminum_ore.json | 2 +- .../cosmere/models/item/raw_cadmium_ore.json | 2 +- .../cosmere/models/item/raw_chromium_ore.json | 2 +- .../cosmere/models/item/raw_lead_ore.json | 2 +- .../cosmere/models/item/raw_nickel_ore.json | 2 +- .../cosmere/models/item/raw_silver_ore.json | 2 +- .../cosmere/models/item/raw_tin_ore.json | 2 +- .../cosmere/models/item/raw_zinc_ore.json | 2 +- .../cosmere/models/item/silver_ingot.json | 2 +- .../cosmere/models/item/silver_nugget.json | 2 +- .../cosmere/models/item/steel_blend.json | 2 +- .../cosmere/models/item/steel_ingot.json | 2 +- .../cosmere/models/item/steel_nugget.json | 2 +- .../assets/cosmere/models/item/tin_ingot.json | 2 +- .../cosmere/models/item/tin_nugget.json | 2 +- .../cosmere/models/item/zinc_ingot.json | 2 +- .../cosmere/models/item/zinc_nugget.json | 2 +- .../leaf/cosmere/items/ItemModelsGen.java | 37 +++--- .../cosmere/textures/item/aluminum_ingot.png | Bin 0 -> 323 bytes .../cosmere/textures/item/aluminum_nugget.png | Bin 0 -> 150 bytes .../cosmere/textures/item/atium_ingot.png | Bin 0 -> 280 bytes .../cosmere/textures/item/atium_nugget.png | Bin 0 -> 162 bytes .../cosmere/textures/item/bendalloy_blend.png | Bin 0 -> 354 bytes .../cosmere/textures/item/bendalloy_ingot.png | Bin 0 -> 335 bytes .../textures/item/bendalloy_nugget.png | Bin 0 -> 199 bytes .../cosmere/textures/item/brass_blend.png | Bin 0 -> 350 bytes .../cosmere/textures/item/brass_ingot.png | Bin 0 -> 344 bytes .../cosmere/textures/item/brass_nugget.png | Bin 0 -> 182 bytes .../cosmere/textures/item/bronze_blend.png | Bin 0 -> 312 bytes .../cosmere/textures/item/bronze_ingot.png | Bin 0 -> 337 bytes .../cosmere/textures/item/bronze_nugget.png | Bin 0 -> 211 bytes .../cosmere/textures/item/cadmium_ingot.png | Bin 0 -> 380 bytes .../cosmere/textures/item/cadmium_nugget.png | Bin 0 -> 172 bytes .../cosmere/textures/item/chromium_ingot.png | Bin 0 -> 340 bytes .../cosmere/textures/item/chromium_nugget.png | Bin 0 -> 188 bytes .../cosmere/textures/item/copper_ingot.png | Bin 0 -> 362 bytes .../cosmere/textures/item/copper_nugget.png | Bin 0 -> 203 bytes .../cosmere/textures/item/duralumin_blend.png | Bin 0 -> 379 bytes .../cosmere/textures/item/duralumin_ingot.png | Bin 0 -> 258 bytes .../textures/item/duralumin_nugget.png | Bin 0 -> 135 bytes .../cosmere/textures/item/electrum_blend.png | Bin 0 -> 345 bytes .../cosmere/textures/item/electrum_ingot.png | Bin 0 -> 358 bytes .../cosmere/textures/item/electrum_nugget.png | Bin 0 -> 183 bytes .../cosmere/textures/item/harmonium_ingot.png | Bin 0 -> 350 bytes .../textures/item/harmonium_nugget.png | Bin 0 -> 195 bytes .../cosmere/textures/item/lead_ingot.png | Bin 0 -> 293 bytes .../cosmere/textures/item/lead_nugget.png | Bin 0 -> 165 bytes .../textures/item/lerasatium_ingot.png | Bin 0 -> 293 bytes .../textures/item/lerasatium_nugget.png | Bin 0 -> 168 bytes .../cosmere/textures/item/lerasium_ingot.png | Bin 0 -> 277 bytes .../cosmere/textures/item/lerasium_nugget.png | Bin 0 -> 145 bytes .../cosmere/textures/item/malatium_ingot.png | Bin 0 -> 347 bytes .../cosmere/textures/item/malatium_nugget.png | Bin 0 -> 171 bytes .../cosmere/textures/item/metal_blend.png | Bin 50729 -> 0 bytes .../cosmere/textures/item/metal_ingot.png | Bin 49943 -> 0 bytes .../cosmere/textures/item/metal_nugget.png | Bin 50594 -> 0 bytes .../cosmere/textures/item/metal_raw.png | Bin 50813 -> 0 bytes .../cosmere/textures/item/nickel_ingot.png | Bin 0 -> 334 bytes .../cosmere/textures/item/nickel_nugget.png | Bin 0 -> 171 bytes .../cosmere/textures/item/nicrosil_blend.png | Bin 0 -> 325 bytes .../cosmere/textures/item/nicrosil_ingot.png | Bin 0 -> 298 bytes .../cosmere/textures/item/nicrosil_nugget.png | Bin 0 -> 190 bytes .../cosmere/textures/item/pewter_blend.png | Bin 0 -> 314 bytes .../cosmere/textures/item/pewter_ingot.png | Bin 0 -> 377 bytes .../cosmere/textures/item/pewter_nugget.png | Bin 0 -> 197 bytes .../textures/item/raw_aluminum_ore.png | Bin 0 -> 376 bytes .../cosmere/textures/item/raw_cadmium_ore.png | Bin 0 -> 474 bytes .../textures/item/raw_chromium_ore.png | Bin 0 -> 455 bytes .../cosmere/textures/item/raw_copper_ore.png | Bin 0 -> 563 bytes .../cosmere/textures/item/raw_lead_ore.png | Bin 0 -> 417 bytes .../cosmere/textures/item/raw_nickel_ore.png | Bin 0 -> 397 bytes .../cosmere/textures/item/raw_silver_ore.png | Bin 0 -> 491 bytes .../cosmere/textures/item/raw_tin_ore.png | Bin 0 -> 446 bytes .../cosmere/textures/item/raw_zinc_ore.png | Bin 0 -> 410 bytes .../cosmere/textures/item/silver_ingot.png | Bin 0 -> 361 bytes .../cosmere/textures/item/silver_nugget.png | Bin 0 -> 260 bytes .../cosmere/textures/item/steel_blend.png | Bin 0 -> 296 bytes .../cosmere/textures/item/steel_ingot.png | Bin 0 -> 373 bytes .../cosmere/textures/item/steel_nugget.png | Bin 0 -> 204 bytes .../cosmere/textures/item/tin_ingot.png | Bin 0 -> 341 bytes .../cosmere/textures/item/tin_nugget.png | Bin 0 -> 241 bytes .../cosmere/textures/item/zinc_ingot.png | Bin 0 -> 318 bytes .../cosmere/textures/item/zinc_nugget.png | Bin 0 -> 223 bytes 126 files changed, 136 insertions(+), 139 deletions(-) create mode 100644 src/main/resources/assets/cosmere/textures/item/aluminum_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/aluminum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/atium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/atium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bendalloy_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bendalloy_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bendalloy_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/brass_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/brass_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/brass_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bronze_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bronze_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/bronze_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/cadmium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/cadmium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/chromium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/chromium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/copper_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/copper_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/duralumin_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/duralumin_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/duralumin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/electrum_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/electrum_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/electrum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/harmonium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lead_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lead_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/malatium_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/malatium_nugget.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_blend.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_ingot.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_nugget.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_raw.png create mode 100644 src/main/resources/assets/cosmere/textures/item/nickel_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/nickel_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/nicrosil_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/nicrosil_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/nicrosil_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/pewter_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/pewter_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/pewter_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_aluminum_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_cadmium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_chromium_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_copper_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_lead_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_nickel_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_silver_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_tin_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/raw_zinc_ore.png create mode 100644 src/main/resources/assets/cosmere/textures/item/silver_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/silver_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/steel_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/steel_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/steel_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/tin_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/tin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/zinc_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/zinc_nugget.png diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 406ddd03c..7e15aac5b 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,61 +1,61 @@ -// 1.20.1 2024-11-04T18:26:44.070954 Item Models: cosmere -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/aluminum_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/aluminum_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/atium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/atium_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/bendalloy_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/bendalloy_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/bendalloy_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/brass_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/brass_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/brass_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/bronze_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/bronze_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/bronze_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/cadmium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/cadmium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/chromium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/chromium_nugget.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/copper_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/duralumin_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/duralumin_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/duralumin_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/electrum_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/electrum_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/electrum_nugget.json +// 1.20.1 2025-11-08T13:50:38.9083728 Item Models: cosmere +ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json +8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json +4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json +0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_nugget.json +0f98979d062133ede87d33109e00afc8ee1d11b1 assets/cosmere/models/item/bendalloy_blend.json +ae071fd93bf4d6381661fc2b579fe09106c9b82c assets/cosmere/models/item/bendalloy_ingot.json +6b595f03ec49392149f6e01068d5cf2a7cc0407b assets/cosmere/models/item/bendalloy_nugget.json +646fd8449268df9514a39cd707ac6ad5a7b6be1d assets/cosmere/models/item/brass_blend.json +7babfcc0edaffef08b111bd9290df6d04c644ed8 assets/cosmere/models/item/brass_ingot.json +0b188ff28a3af4f8513fa29f7667ea531fc5d94e assets/cosmere/models/item/brass_nugget.json +56cdc236f99ed441213d5d50319613213c676111 assets/cosmere/models/item/bronze_blend.json +3b890284183cd04d9f107c10bdc01f2a5afad670 assets/cosmere/models/item/bronze_ingot.json +e00fd350bf851551ba15797b5d493e43c0aa14b7 assets/cosmere/models/item/bronze_nugget.json +0ff6f3de421a80839998f8ae95f9f9a05a4ffc0b assets/cosmere/models/item/cadmium_ingot.json +b518db4e4e1664b81b3f5b6efc827a3c371fcfed assets/cosmere/models/item/cadmium_nugget.json +f3da55b7ff1f005f2346bc86c839bd886f38915f assets/cosmere/models/item/chromium_ingot.json +05986a77ad11ceb4a9af904b17d57e81a051d438 assets/cosmere/models/item/chromium_nugget.json +fac9d3382c68e92ad6167f2b64c23141cddd9573 assets/cosmere/models/item/copper_nugget.json +d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_blend.json +5f7241be8076be1e1e4f2717850f9c97c20ed351 assets/cosmere/models/item/duralumin_ingot.json +90493993464f98a65bf0399cdc4b385662fc2f4c assets/cosmere/models/item/duralumin_nugget.json +7f1c2aba76d0cfe4c1b46a095ab28fcb27eb2076 assets/cosmere/models/item/electrum_blend.json +ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json +85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/harmonium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/harmonium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lead_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lead_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasatium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lerasatium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/lerasium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/lerasium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/malatium_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/malatium_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/nickel_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/nickel_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/nicrosil_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/nicrosil_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/nicrosil_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/pewter_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/pewter_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/pewter_nugget.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_aluminum_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_cadmium_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_chromium_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_lead_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_nickel_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_silver_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_tin_ore.json -d819803d18e98b518d65a0c0e996f55169180013 assets/cosmere/models/item/raw_zinc_ore.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/silver_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/silver_nugget.json -8325615b8496c2a0f9e32fa5abb910345fecab73 assets/cosmere/models/item/steel_blend.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/steel_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/steel_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/tin_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/tin_nugget.json -c53339be6912e7d509624d7f73722bc76ea92beb assets/cosmere/models/item/zinc_ingot.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/zinc_nugget.json +0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json +4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json +31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json +c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/lead_nugget.json +998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nugget.json +7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nugget.json +8f9ecdfe13399031e5a39d1145e2866c39a9cf1c assets/cosmere/models/item/malatium_ingot.json +f57901c7644ff165eb5c89a41d9f0c69ec03a6c4 assets/cosmere/models/item/malatium_nugget.json +d7c618ca7626312d43f57accc1b339af9936a5c7 assets/cosmere/models/item/nickel_ingot.json +46c31e028d09311d398f53335c563035e96fc2a0 assets/cosmere/models/item/nickel_nugget.json +849e558e09c4c3e61d84ea170d02a663b68612e2 assets/cosmere/models/item/nicrosil_blend.json +c80c8ace3cc7a8609cfefd970eea5e727a254828 assets/cosmere/models/item/nicrosil_ingot.json +5995927925782312bc72abe0d0abc23d4a498334 assets/cosmere/models/item/nicrosil_nugget.json +2b2586629b25efe942c4afb6c908eba6cb7e1404 assets/cosmere/models/item/pewter_blend.json +0666403a444f6d8a1327e9f5c8c32f30826f1b50 assets/cosmere/models/item/pewter_ingot.json +0c05924f48e0801c5b8cf80e659cf2eedccae883 assets/cosmere/models/item/pewter_nugget.json +13be0a3ba908dc8511928699185513a7568efdbe assets/cosmere/models/item/raw_aluminum_ore.json +305f6f5228b2cd90b62399ff3775660ed385a19c assets/cosmere/models/item/raw_cadmium_ore.json +a07a3f596e73c5faa3f83e1ff7664623d3eaf973 assets/cosmere/models/item/raw_chromium_ore.json +1435eb55decdd62a0de07873ea317cc708d70fb5 assets/cosmere/models/item/raw_lead_ore.json +d910cc40e5b953a0ea542c1fe0560a3d0c26fb95 assets/cosmere/models/item/raw_nickel_ore.json +d13608e9cf2b63cce000390d86297abdd15ffbe4 assets/cosmere/models/item/raw_silver_ore.json +2474b00f8329d13196cf930176bfa7d6eda9fb9f assets/cosmere/models/item/raw_tin_ore.json +01c3d73e21fd81e24c7dd84b8cde32700903d805 assets/cosmere/models/item/raw_zinc_ore.json +48c097a72c5ec827db8f5f5be3ff86ff3ab55f4c assets/cosmere/models/item/silver_ingot.json +07118efcc0d8c84ef3f86877e37660d5cec23e5e assets/cosmere/models/item/silver_nugget.json +d4431a9f3bfcf529871d7eb9bca4579db5f04e8b assets/cosmere/models/item/steel_blend.json +55376e3b0a27ff269117f03e9057dc41990b48a8 assets/cosmere/models/item/steel_ingot.json +799cc8cc78ae34890ff7cb0addd4e2878b6cb803 assets/cosmere/models/item/steel_nugget.json +1632cb3a8e1952ff7301c3d82836f1177ae04700 assets/cosmere/models/item/tin_ingot.json +99a3852f8768de2e239340cf21a0aed96410caf6 assets/cosmere/models/item/tin_nugget.json +ed4a04b929d58a99b5e0b06ddde711944ee54f37 assets/cosmere/models/item/zinc_ingot.json +9620f2acfd4f8e0f8cc1058b14c3d3b0e70f61a4 assets/cosmere/models/item/zinc_nugget.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ingot.json index 5c9389bbb..2645d949f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/aluminum_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_nugget.json index e2f75ac57..99984c4f8 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/aluminum_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/aluminum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_ingot.json index 5c9389bbb..32197f7b3 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/atium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_nugget.json index e2f75ac57..5bcb4cf96 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/atium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_blend.json index 745ba787d..1016dff08 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/bendalloy_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_ingot.json index 5c9389bbb..6d177e2df 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/bendalloy_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_nugget.json index e2f75ac57..8bae6584c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bendalloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/bendalloy_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_blend.json index 745ba787d..c74d2b1a9 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/brass_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_ingot.json index 5c9389bbb..f1ec94150 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/brass_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_nugget.json index e2f75ac57..3fdd8d861 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/brass_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/brass_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_blend.json index 745ba787d..169102f1e 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/bronze_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_ingot.json index 5c9389bbb..a210f4e23 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/bronze_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_nugget.json index e2f75ac57..10a7f6e09 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/bronze_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/bronze_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ingot.json index 5c9389bbb..f3aed8539 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/cadmium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_nugget.json index e2f75ac57..067ee8d9c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/cadmium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/cadmium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ingot.json index 5c9389bbb..9ed14d503 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/chromium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_nugget.json index e2f75ac57..de8944369 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/chromium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/chromium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_nugget.json index e2f75ac57..5d886b3ff 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/copper_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/copper_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_blend.json index 745ba787d..459ef619e 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/duralumin_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_ingot.json index 5c9389bbb..c224da41d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/duralumin_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_nugget.json index e2f75ac57..c48149ab9 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/duralumin_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/duralumin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_blend.json index 745ba787d..d03f62b35 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/electrum_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_ingot.json index 5c9389bbb..ea9a25bcd 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/electrum_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_nugget.json index e2f75ac57..df011b53e 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/electrum_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/electrum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_ingot.json index 5c9389bbb..df0679516 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/harmonium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_nugget.json index e2f75ac57..87d5a9720 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/harmonium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ingot.json index 5c9389bbb..63f7bd1d2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/lead_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_nugget.json index e2f75ac57..4e0f8b630 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lead_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/lead_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_ingot.json index 5c9389bbb..9b23552b4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/lerasatium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nugget.json index e2f75ac57..9952b7116 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/lerasatium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_ingot.json index 5c9389bbb..8bf3a53e7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/lerasium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nugget.json index e2f75ac57..fb9f1d549 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/lerasium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_ingot.json index 5c9389bbb..f0416d0cb 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/malatium_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_nugget.json index e2f75ac57..b492020f4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/malatium_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/malatium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ingot.json index 5c9389bbb..b11293c57 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/nickel_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_nugget.json index e2f75ac57..254548e74 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nickel_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/nickel_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_blend.json index 745ba787d..f229935db 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/nicrosil_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_ingot.json index 5c9389bbb..397271e5d 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/nicrosil_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_nugget.json index e2f75ac57..45254f4d7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/nicrosil_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/nicrosil_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_blend.json index 745ba787d..10789e1db 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/pewter_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_ingot.json index 5c9389bbb..cf3c491d6 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/pewter_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_nugget.json index e2f75ac57..883097f64 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/pewter_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/pewter_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_aluminum_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_aluminum_ore.json index cc5a03884..fcf574b32 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_aluminum_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_aluminum_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_aluminum_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_cadmium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_cadmium_ore.json index cc5a03884..07d9de7cd 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_cadmium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_cadmium_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_cadmium_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_chromium_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_chromium_ore.json index cc5a03884..19ca6e5db 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_chromium_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_chromium_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_chromium_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_lead_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_lead_ore.json index cc5a03884..a1671093a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_lead_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_lead_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_lead_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_nickel_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_nickel_ore.json index cc5a03884..1285a0b00 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_nickel_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_nickel_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_nickel_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_silver_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_silver_ore.json index cc5a03884..06ce16856 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_silver_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_silver_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_silver_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_tin_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_tin_ore.json index cc5a03884..5fe6ef2ec 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_tin_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_tin_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_tin_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_zinc_ore.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_zinc_ore.json index cc5a03884..1604e08ee 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_zinc_ore.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/raw_zinc_ore.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_raw" + "layer0": "cosmere:item/raw_zinc_ore" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ingot.json index 5c9389bbb..412194e59 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/silver_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_nugget.json index e2f75ac57..8e2adf519 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/silver_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/silver_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_blend.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_blend.json index 745ba787d..5d6129b16 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_blend.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_blend.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_blend" + "layer0": "cosmere:item/steel_blend" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_ingot.json index 5c9389bbb..b3afb16cd 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/steel_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_nugget.json index e2f75ac57..532425a1e 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/steel_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/steel_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ingot.json index 5c9389bbb..184f47f7c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/tin_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_nugget.json index e2f75ac57..a0059449f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/tin_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/tin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ingot.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ingot.json index 5c9389bbb..514cd1973 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ingot.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_ingot.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_ingot" + "layer0": "cosmere:item/zinc_ingot" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_nugget.json index e2f75ac57..6543d5982 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/zinc_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/zinc_nugget" } } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index 4fc3cacf3..838327eb7 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -1,5 +1,5 @@ /* - * File updated ~ 6 - 8 - 2024 ~ Leaf + * File updated ~ 8 - 11 - 2025 ~ Leaf */ package leaf.cosmere.items; @@ -7,9 +7,6 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.MetalIngotItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import leaf.cosmere.common.items.MetalRawOreItem; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -43,22 +40,22 @@ protected void registerModels() { continue; } - //otherwise set specific textures based on these item types - else if (item instanceof MetalIngotItem) - { - simpleItem(path, "metal_ingot"); - continue; - } - else if (item instanceof MetalNuggetItem) - { - simpleItem(path, "metal_nugget"); - continue; - } - else if (item instanceof MetalRawOreItem rawItem) - { - simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); - continue; - } + ////otherwise set specific textures based on these item types + //else if (item instanceof MetalIngotItem) + //{ + // simpleItem(path, "metal_ingot"); + // continue; + //} + //else if (item instanceof MetalNuggetItem) + //{ + // simpleItem(path, "metal_nugget"); + // continue; + //} + //else if (item instanceof MetalRawOreItem rawItem) + //{ + // simpleItem(path, rawItem.getMetalType().isAlloy() ? "metal_blend" : "metal_raw"); + // continue; + //} //else normal item texture rules apply simpleItem(path, path); diff --git a/src/main/resources/assets/cosmere/textures/item/aluminum_ingot.png b/src/main/resources/assets/cosmere/textures/item/aluminum_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..00f74d4814f03e1e8ae200c89f5e7d78ec8fa2a0 GIT binary patch literal 323 zcmV-J0lfZ+P)Px#{YgYYR5*>*kugidKoo$#LMB0x;u0>C5E6=o4*DBhTsjs?$7BqYc5X8Zf@@~M z-{9!fp@kMwG&RtvK~Rv=KadW3XKG^TsBgK)@xJf9cL)DID*F_*9WRynU2wa@X#0SU z+X5hrV!%tYl0tz5{b3J)ze3yb((4K9bfxVTK4ohweN$2^BG%qLH!U`~*gyeDt0KQ^Ucp+HJxUIzZ1*aFS{ VXt{1$q`LqB002ovPDHLkV1g&siIM;S literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/aluminum_nugget.png b/src/main/resources/assets/cosmere/textures/item/aluminum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..67091be947cc483d8ae1b276674c53fe8706a31d GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`v7RoDAr`&K2@e~N}E04cwiZq^n y_-1hh{4m<&t;ucLK6TwMm?VZ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/atium_ingot.png b/src/main/resources/assets/cosmere/textures/item/atium_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..8cfb22d50ea2fd7b126390b0017a6c6f5bc1aec2 GIT binary patch literal 280 zcmV+z0q6dSP)Px#(n&-?R5*?8kUI*(Komt!L{Jn`_^XV9on%J}?nJ@H)o5##Mze-NYy^#s@l!-2 zkpyEQ3FKoM8w+nW!<&2Fy#s%JEh%f*QCfa*-Wa>oxA`p7px*;vYZ$Q9{WORaH%ClB zTT#OMVyP#RUUCx|rJK~A_ z!Fz*D02xmvI5#`7^<#yn>jH3h9;}2Q=Xv2QfM!+zsFlmUT&dD*)Y+Rytjjr^#p9;} e0!WtWxAX!Kzg7~J0qDj60000=r~kS+ITB1eSf?|_+tnxC*qF?I z_+{{Ni5(Um$?@m^cj-kR&t6|&akVdnfx#zAYMJEU205TT44$rj JF6*2UngGYPIn4k7 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/bendalloy_blend.png b/src/main/resources/assets/cosmere/textures/item/bendalloy_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..28a6fcfa4838172005dd57050ec29953c8852569 GIT binary patch literal 354 zcmV-o0iFJdP)Px$97#k$R5*>@lCes|P!xv0itV6;NG?(+cCiLJ*cUJXoke^BAE1kQ0S8SN*9JQE z0r~<`oH{r;3pxZeE_DgvhCr}`9paRjCY8*3rpx{R^Zn;=FZ}tcRT)kXwv+UH|Mpq( zZ&o$iH)lT=gK1KPtOev#MN387KLlVjR-r#xfs_EnRI5Ls({27bWd=x7g-}YV_SGFb zyIXj!Ujo#MsrF!s5DNC~InHnffam%MpiQMJ_m`{*;NkHDfVNf#pwn$~Z8> z`MCOI0fDDY*>2Zbc%clFO?ToFzBt*?FL)PgmNeC2jJ8zz`8U>4zwRWzHjrNRI4 b14f2(TeJK;KW{q$3?T+jS3j3^P6~iyH}e>_}BLd&sg`;< jlbV0a&psB|z`!6Op;VD{?)e*_V;DSL{an^LB{Ts5NxDb0 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/brass_blend.png b/src/main/resources/assets/cosmere/textures/item/brass_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..51d30e41d6c58bea2e710ee65bfa86d88e4732c3 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%zB|KdmLo9le z6C_w!4$g{t{XaWv?SJ8=KTfc0|8Kx^`Op8u$NvAf&pDFG!M!Q%bxRJ%^W(y8ruqAw zOg`*100EZk9foTXHGaxps+l6Vno<8=oofe|lp)J?3BxtHnu$NQtZ#YvY3gns5D+?a z=SJ*?W!HYy7x?lsGq09o27<%OYgG$)ck{<3ap>tauXrZXyqo8lklGB-`F#3G7FL=Q z5_9)TAAZ+7T>=D3N~Z{heFR#);T6!1FAH`syqoVNZ&{(hx;w+*z~ScLo`o6~a~3W< zFuM^5z&2-pzmxFd{-+MXqYNp{zoz-LvCHZ3Tzj{ZF`W5w&sByQiU;+iJ~Y@?{WENH j+rze?nsfHCgUk#Y9v0=wW^9QE1{i~Px$5=lfsR5*=eU>In?NQ|N*6Wsp8*fs^bQ1q}6qsclU8^ZYUgkjCwum3}ukHQUM z#H;DY6NDs(4BU{lQ5LA02qK6(gHDrfq{YH=R=00GYe2OFfcGMNCtpEpW@*dH?EIp@@V`IFrCPq%+V8*`X`i-~;do!SpVhfJR|Imz$*zvGV` b7tk&H59*zBoAvM(&>;+-u6{1-oD!Mhz;*_^a|rym+^m_u*R$jv4@-9rEo?XwsjrJ+VN=i^!J7e)$UGV zJ&lSRrQWGlNMzi0HQ2Lve}7`#{g@qYDVA((Y;D`We>V(K2{XR4>oc3)@k0j=94L5w zPP)y(Hw{|+n;n}UzM@*f@NmS9TxJ;KyY~W^!Xdw8|P}g zuLl~(cHhBx$N$7S_iYm!8yg>9czwP{f^C6xi}&FN%nWg{Nm5~JF4_To&*16m=d#Wz Gp$Pys?}RA; literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/bronze_ingot.png b/src/main/resources/assets/cosmere/textures/item/bronze_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..f37adae67052aa878d96fe5970a120f9fc6af285 GIT binary patch literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4(FKV3hE5aSXBOO-_)IR5%*+vA%2R zqxzg8ogXF#Z?O9QT)DH_yuh3nlB5Yc}Vvv;QAsx|W;zFH_+;Crh~FyLk_&*$IIj0}Ka&+k9n z>)4ffrj?2sxlH|Pyl3zJ{zf2Byn0aR(f{f5B|yOC$j^W)izPn1`KZmNxx)DQ_p_-x zDu2qwDEn;QwNB{pTI>7=Nj?T_J`Xn^UoWvvE~+uu*vg^s;MvpPC9afCmC&1K(Ya_M z&``(N@Xo}~zk1sa2=tDnm{r-UW|Pe6(k literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/bronze_nugget.png b/src/main/resources/assets/cosmere/textures/item/bronze_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6e0e0704a8b4a2ae4b0c2862c333d53df6c38c GIT binary patch literal 211 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`vpiiKLo9le6C_wgnB8K8G^cg_ zPkdu}{QcvQ_TbO6rBDBhziIpM|J1v}|CFWM_+}J%?y30G)d&QRPGLPD`k>zw@zshJ zycf20Crp?intWqtm2vZ~bwYmEH$9m2;$&~ygh`^w72ke{9zJ{edx2ELRo3nA_9P|% z0a);&t++(q-O9rSFTSR)VeB+6nfSNI`?E#^1HPx$Hc3Q5R5*>zl0QqsKp2Ogme7v=p(=>@1xl%d{Rj>^sAOmaM<)f{oC^-(R1gsa zXOS*uDA=JmI#sZtN)#N5m4HPON(X5w)*;-Pm{8pGH@$cFKF@nc0)L&@Z<UKfnyZJCfHW=& zfpz+kqrYs}fS_%5x!mKeJ)F~7d>)^=JYDkI-k&Eu=G>m>FoDB5Zh1cw3j@R2sXFQY TH`26$HZpj+`njxgN@xNA){95D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/chromium_ingot.png b/src/main/resources/assets/cosmere/textures/item/chromium_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..156c4687dcfab45e8eb41fa42cb659671e00d089 GIT binary patch literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%z`8-`5Lo9le z6C^SYcz84}?!8+tQT>0Sv&5@Nj!d(S+Y*0#`DyI)!hV-xL@dMRt4D6J>9H9 z7mjZR24*G+7S;clVibKYFF!wDQtr;4M&mg%5_)8#%MEtywpeuI--BnoZRO|Z8QIkR zk?6a~=%u3*xn+)`n%<;FAV~bVNHxMV!Suny!|gmE(4_Q;=eYm8M3C`^zrVj9C{k2Z zWOU%lAtr&ttncsdN%^6o+PF|Kjggs|xhri4W5B`xpFVx!c|Xtg=!K4ToRSMXG)|uS h@BZxZWs3?1hLtnQznGco_kg*^_3W0VO?BJA1M;8adp-W%D*>~ugN9dTXgJj4cbSV@I3ABZP z4gnRCA&}uZNUpi1q^thZ<>!9?IrrQH|3<#&3g2_ZzONmF>a$~80KB~CJU*`_r?)}Z z7enIBj-;qaiVDXxxE~DxL>;0Xs?~r@0~xXpW$8+WCPl?ZUedKX>JXEn zf-vB6@`U!fP%1g5p}@7b1WuYikQCKXxNCJt^O9MdFrlif9;rWCW@hvjG43jHm81AzUk-JW>cSO5S307*qo IM6N<$f(CG&CIA2c literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/copper_nugget.png b/src/main/resources/assets/cosmere/textures/item/copper_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..9073dd827e886c1a157ca254e3a7eb7ff10cb64c GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`lRRApCCR$26LA0UdZ~m2O|)#3NBa*D-jy`njxgN@xNAz4B1R literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/duralumin_blend.png b/src/main/resources/assets/cosmere/textures/item/duralumin_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..ff9e07896b204289c0bdcc59feb844093bb9d7fc GIT binary patch literal 379 zcmV->0fhdEP)Px$HAzH4R5*?8kUdBOVI0PPhc12D$6z$b6^#ikB2Gp|21RZ`a}cx_G}KT*Ta7g~ z2Q|crfd>jUm0oe#6*bs#NeL1(3v$<_+y_`=L(lZSyzlS%KhGcjC3JdB%r9E@d;T)* z`7d+=Vu^VBT&w69M%7~?*kLzta(qNVDqwv}MFFsa!C|%z4;;M#uJc#aDmo+MW4~LXD28}`ePeodisW1pIV&Tbp4o@tsL)#C z%GxRov&p0Sz}IJ;Kvy^SrCa)j26@q*9IzunI1;r|%S+TMIsm1Tf?ICbQz0CQT0a4Q ZPv4U7h(_A?0n7jZ002ovPDHLkV1l?coy-6L literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/duralumin_ingot.png b/src/main/resources/assets/cosmere/textures/item/duralumin_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..7596ac6dad73c17dcfd31b4f8baf228a7f75dc02 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|_ISEDhFJ6_ zCrGf0FuOT%>D;aTclgHf^1Ooq{fZ518i643=cLMlvJ@YoHbo5?@ACQoyQiN?uK4uG zk{Jk^n_5(2-Z6&g*xJo}_-v)R`(Fwo&A-Q9Rp)!U6t()wD^AbcXsxNf(FK%ZN>@Rtfk76|GT9v za-Kd)9NE&}?4!PC{xWt~$(69DL< BU&{ah literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/duralumin_nugget.png b/src/main/resources/assets/cosmere/textures/item/duralumin_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..01b3134b86efd18b5e362147c6111230ddcc99ef GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`ex5FlAr`&K2@H4$41_p-d4dT6(A-^^NO=j?P^>bP0l+XkK1tc@H literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/electrum_blend.png b/src/main/resources/assets/cosmere/textures/item/electrum_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..ce99db19c4f29b46b2b44cbe05995e66078a3365 GIT binary patch literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%zg*{yyLo9le z6C_xBcBq)0ee;7q`S;TB2O;gDNte&`{nwl4#{&ZG-*r-d{EQZImAmPn7Nb_op=nqE z#CP_5YC3rIGH2h-$oY$R^sz<;H?{w)SJq{1V>dr<{3h<|nS#%!xYd6igTe~DWM4f^5coQ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/electrum_ingot.png b/src/main/resources/assets/cosmere/textures/item/electrum_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..4f0bf8a1ce64931a11434a7a04971be4a7e2b3b8 GIT binary patch literal 358 zcmV-s0h#`ZP)Px$AW1|)R5*>zk+Dj{P!xv0ixHDG5O6HXP!Jbgx`z(UppPJ3#8+^(i?1Lq;!?<9 zp$>{I&bqWqDP)Lbvk-8Ni^RoT?@g{!aPglGocsOfzvsXoCDwT~zBn(d`tambW2|++ zZWIFGcmZQ5RTE=^I;hI=0&cG_WfEZm4~~vCsL0bFO)M2QO{@UbsK`@pMx*Z?)M0gE z1*>)WA$O`T(eZ*t+#*kLyg)*ec%bzyfGn9q6jJ0Vw(BD{gscG`hG!&;m4w>6+sy>i zyGOcF$otz1w(DcNK9hK$ffYQApSZez7Mekp%$X{uGr_ZE#%!5M81;<(UZ>pOY0+x$ zv9t11 g+3)>Xqk(~8!9V5J^&clm0xf6oboFyt=akR{0F{D8$N&HU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png b/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d8409a6589292dbb0d70e054a22f9c0677056d GIT binary patch literal 350 zcmV-k0iphhP)Px$7)eAyR5*>zl0R$0Kp2OgKqwsqBL=$|IJl(>JVpTQ-a?s}I7ans+F%lkgh`;r{&JI*dmH@$AEo-fWXEoQ4g zfsOhZ0KQ*lbU(5rxdH`-%@Baq>P^?O5+@6pU^YtR`(>`LZn=wlj;r9X8R`bJQKeY$ zC>A^b#^VS5-Zkw~NY-B;mPiVzq2y@}KyWHJ`uVg40JHfFDWslcPE#NuD18=nrE1FGTH5T5C0^Rs$A`1n)S|>rN*_ w3(DP~KZuzrA?)TjLZ{W)V1gE%8@yPG5Nl5tpZDxgd zM+b-ThtC`aAn@j1?VN`nd)ar?9B6o`0y5yzqFw)IRaq7E_UFf?%-CF~8MZZoRZ>Di lB8X}6!-oytpEVj7819B^Brm+nJ^|<|22WQ%mvv4FO#p(~Nf!VB literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lead_ingot.png b/src/main/resources/assets/cosmere/textures/item/lead_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..55123633002c5225f7a02b9e4f5a76ec3cf34091 GIT binary patch literal 293 zcmV+=0owkFP)Px#-$_J4R5*>zkv$8-Kny^i;Luu?Qcw^?5Sq3dlNSaj$U@(dC zT0Xi^&MSHCgz0Ee4kj^xX{y4yP=vjRQt|Yu z!X-sT(qf0Dqy!MmyR+wb!T(p9kM=4kFZ(JV`{v~8?25hClNcGkii_-!m6ezWw2Hyg L)z4*}Q$iB}-{U&V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_ingot.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..40694c2926a8a003cf244c9749562ff620fc3490 GIT binary patch literal 293 zcmV+=0owkFP)yZI<{S~pLQ-&TbCPm2F}?6!>`mQ0LO@(=dO2 zeK$7obXcD@9QcOGaNrZgYYzL2L`YU|OAnx>yW5bSSFkPP25OR06tC-8ZubCm+r9G! z_PPpEvf)1s0On5%T3k6`ndW>KdHsK|Zm@az0N_iMHTawVkO)a4qyrlpOecYNJHD#` rirtYzr%xgzfCK4r3d*Dj{69JYatCHE+iQu%00000NkvXXu0mjfh6I2( literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..0d0ae88f656d76999ec9ba7ad0f7fc1d56cc2c42 GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%``JOJ0Ar`&K2@jXc;`UH!JnoVIsaH{ov2@@wG=X1;dynfZ)<3DTyPlp^_lH z>}%e^Oop&}SJq{Jo(l=IecoSNae70}Uzs&og={>V<`-tlu>x)1)U2s8<tJ~Cd@l}00=(3I9bcqCdu=Eqh!;%J)J(~C=uF}DHRVE};b`iwxRCbbF5 zpeoz-dAPfgNsK!1JigEl13p*pSdNF~ zc#NZ-1{Uxjdgb=%&Cm?ec*cb9)78P#Map!MN*I(gb~`O`e9)lLJYsM61AutGloJ6B ttbAe96zU)ACYDucbUQ71qu;B>Ar`&K2@zopr09ph=ZvX%Q literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/metal_blend.png b/src/main/resources/assets/cosmere/textures/item/metal_blend.png deleted file mode 100644 index adc5358beb8ace45730bae1cae045e6d0da38aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50729 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 O;qDFX57ck{`u_`LinpWy diff --git a/src/main/resources/assets/cosmere/textures/item/metal_ingot.png b/src/main/resources/assets/cosmere/textures/item/metal_ingot.png deleted file mode 100644 index ec32d35a062fc83f29b96f5260af42604e9f6bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49943 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�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 QKOgQs(*8*OhyKL>1xQGDmjD0& diff --git a/src/main/resources/assets/cosmere/textures/item/metal_raw.png b/src/main/resources/assets/cosmere/textures/item/metal_raw.png deleted file mode 100644 index b06053bf5365ec4698957aa838a571d471dbcc4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50813 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 SZ-tx>V3wH3&gZW-oaFXwahcMDL7Q&oA| zcbs_Ib-Kb&x{}(JD0}40qCbe7m3yxwV}cEv+dKX z=h)=ldrGFm#41q*2{{?Dcxu=Ct}QeKUpE6`!bFItW~>)qToDNyLujIQOWc%iYX<7r zi|<<GHuVo_JZ=FLU!4i5%_7?Gej=Zjv~l-`3@b% zC;|Xxl}7GKaZgnE3{Ky8O<`YJ!m-TtGO-RSKESo_u83NAzg?lXo6Z_25&#kJiOK}V zgfT`k3q9JoAYDa!-V;p<`WPm#FG?$FgraJeRF*Ht!aPRSwjo~b^=%ra9AYkku7%55 z0-vj&oqWz+KKzhOqkKDHk`EjrCZYPk$Y>imqg_7p(Q&5}@-v%+o_R98(~OXq`RBdr zdxn+neqX+hp~8?dj2gI^^xll}DS4mRG0l4FnN0DEMByRjBk>4V5<3h`shDIoTj=rla3)c$vn&T9kCg!h}EFK+=hnbxz8fcv?`-B$VB#g)4;}FJnp!M&^=hG*;J5zCkr@wx+7?1nu;C1Kkbx>6YFMasv)_DBH z$;+-@+xh6nw;rGFJni9ccXzs*)9G~QDujEHx5pZ54zj8A3Yj6 zdF^YD-x}}hko=hbHX5KxbPwJks5|F^$)+Ui(wL3e~rvb4<^7uO zd;5QLzfWmzy$*9vq)bf5CQSnevLltnZv~hU%jECS{r|E_pYmnKX`Yw?+9&Cd@)_Jw z29{6!6^Dxd?OZ?R*(be>Uc5{85Qb*#p-wM#cyzYH;ueRy@tfD~b*Y=buQz7VilaF> zeQ=r&w>i(X2THCV&)m5<-^Dx0KfwWC_^3nM33J{N>ZV@F@eBzKST@mfP8dd~HT7N= zOMdP6&e4sdTiv7QLE_w{k854JINoI$>gi;-b97rg=lMT+ux{lqpFCtOaJe0S^QtFr zcf*^f(}U?2PUz0nSH1G!<-he$uUvV?Z@i{19`fJ%-S1S7JohVJ@Uw4!Sbyb5Uh>Xo z{opqrsF!@{*MIJB9sJGbyiuS2kFWa4=J0vX`P|dL^-Wdw(pSIiU;X0uebbvh@SX4a z^~ZkkH=g;z7eDm3f8+%pe&>gO?&rVaZ6Ck$jO^nt_@y8F!(aN5kG%iKKlbD&e)khU z@v*=5_U5nt{3i~cdHenE3%`Hozr642uYIL`@4MggWuNwY-}|HHk>7Lw?c+cD>Hq%4 zul?v7|Kz9c{F#@3@cV!1V_*EeU-vbi^>v^Bvgvyd4&HP9iTCvX?8?9SpTF>VfB!|l zS6};vU;n_zU;mJO@BMFk@C#r1tM7lsTYme)&z^65&y|<{gYW;EpLpwMyfOQ^51(8y zzi{}02mktqK6d0KzB_y9cam@U+He2hul&IO`sR21^Y8iTHy`|? z=iT_&FF*X?Z+*@O9(=|JKli(S{F!fh#jlQk5S~AO$5;LGPd@kh^XC`7|K@kS`I+ze z$VWf=LHCL;`GFrfec{Q!_}QPSU-b_4k^lb3-+1FMneY3R)7u})f9i{0{I37-gFo~~ z?;iUXeEA<<{rwj`>(gHUY5(@qzv0P0{yPsHKKC6T_5GDE`Q`8ahj06#pZm?1yz|>m z-~NJcx$(wK{@6GC$A_QuGoSJ6Z~M$w|IrtHBFAm`1yZ`_I diff --git a/src/main/resources/assets/cosmere/textures/item/nickel_ingot.png b/src/main/resources/assets/cosmere/textures/item/nickel_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..4e0eb9e9531843f5b5077d851a33b29f460cc7a3 GIT binary patch literal 334 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D%zIXqn)Lo9le z6C^SYc=Rl4YMSuh;9Co4cEFbn0*f~;-P-u@`g(nXhyP!+C0vaN5cu@}^mT2GA9sHX z|G&T2{-gX&SDhD96LVcQO>OM$Z3pAl&XESz*N@y zvxIA0SQmfm`Ia-5m9LbTf#C4=_5GcfdLA{+zCPdhgx5#IIX0ye9lh_%9NlTqTm9`` zN&*nv*!NjOxs6f4zRqbQ>wGsJW`#-D{!2bP0l+XkK=6sUI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/nickel_nugget.png b/src/main/resources/assets/cosmere/textures/item/nickel_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..3dfee817001d7d5d811c44caafea7a6286e5a999 GIT binary patch literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`MV>B>Ar`&K2@B9~@*>-Q zZcaC}sr$ycoKeRjRYF2yncs@k8=JqYF$2NjZ*$!}xtaaTv*-MiV_m_(aOHqzl)Q$J Q2her~Pgg&ebxsLQ0OxExyZ`_I literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/nicrosil_blend.png b/src/main/resources/assets/cosmere/textures/item/nicrosil_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..2334170d0ce66521af227e56281a6841bf052aea GIT binary patch literal 325 zcmV-L0lNN)P)Px#|4BqaR5*?8ku7WjK@f#M5`0Ckq6ADUaOLORH8qGLFqm4BOR5oAGzkewX-Gvy z6Y4P-1PCOK{zxZlKIE}PjV(~H&Z7Qx z+s}gO8x*q7X|GD#QT<*r#?a?6NL}3ipC=Tw4)rS?KL7+RXCk*(@iwpBDt9MLA|Py1 z5(qzd{P@^}!yL_;lhX{IJV`YG0h{W7YX hTFx3Xi%pz?;nC#ixtW`GZ3g<6!PC{xWt~$(69BNobW{KU literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/nicrosil_nugget.png b/src/main/resources/assets/cosmere/textures/item/nicrosil_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..a112c80c4ae5e84348cf4c87b48e6cc5821168e3 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Dm+~rLo9le z6C_vPx#^hrcPR5*?8lA#L1P!xv0!Lm#Qu^9$?0Fz)_Fs|Cy)~t5HB={C0m=*^!DQGbY zyC5jsAi{9?0yEuTv=Xn4$TP;2vt>W0S-^EG?wm`|s4U6)R~jT)>5Jo23Na!J3}<02(Oh}w>~ z`@MdM`{NN4P>HVRv#wPe(Q6qF2IV`f>$>`_gr+st9?~bU?vQ>TFK0`6jUSX54gdfE M07*qoM6N<$f>y+Vn*aa+ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/pewter_ingot.png b/src/main/resources/assets/cosmere/textures/item/pewter_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..a142c540df7f3b98a67deb54c64a050739dac7a9 GIT binary patch literal 377 zcmV-<0fzpGP)Px$Gf6~2R5*>zk}+$-KmbNxBw&TW;bJ-k+*}+g!8x;*Or@e@H~*1S9XfTD>Lz69 zC|&#oRVcZG5+Y(03hB~IbKv0Ce$(CYy?1xq!C%L^q%;V_ygYxN%?i%G1b7&a0obRh zUdpw^ItSd3MuyN4q8Mw*<7C1-iY$8&hItv#WnKI_o!F--ju4y<2OJ^TrzsuZ2goY` z@7pcycDpE-MRv7X2wSZdP0uq2Bf92QXI34t6Gg?mH}|n?UG0dK&5PsmEv=^y9m}NumJi& zkav8aSSjv?Ltd9l1HNuF0C-!ijH}F}$g=eS$bX)uuxsFBv!T>8Vl4E7!1z$-fd7|o XXf>V`KNfSj00000NkvXXu0mjfTIQk2 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/pewter_nugget.png b/src/main/resources/assets/cosmere/textures/item/pewter_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd2f273d1c8dd44f65f772fca1d0d225eaf2da5 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>OEZ?Lo9mV zPEh1(a1e2spCtA^**tISZJSwFHFAOtZpI3Tn00KZV98DTvHR+yEi>)U$g|be^q(l# zn7ZrUp3LZr+FeV7!b7j~zu$UHLb>h8!m7+^7qfW}yqxpGQ{`g`pY{1Q*EY$!zi5|X uFz^#*xV?#md5^MK<-eXAyv^6YGv_r-R%eyF)W!jH3WKMspUXO@geCyGXi9qk literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_aluminum_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_aluminum_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..1a89c32d3df9851b5de942ee0078192ffa9e0eb3 GIT binary patch literal 376 zcmV-;0f+vHP)Px$GD$>1R5*>rld)@qKorJ5OCV8*QP&pQ1Sw=GL^23n0vTPq_Rn;8bV|lTk(h!B z6p}k@;nc|v={<5H&5)sQd+&YUkGps8fd3BdlE7aC&3PV2q2l=y;4gw^?t7H)vrp`^ zodW4~8H1PC1^~wH1J!KHRKOCVwN27^ZU6wD7qBf8JTH(YTO1DzaTIDjX|^2)mSd99 z9t}^%uWvd5&kN+NP{4Er%P}#zza`UZ{YD~hHU$8rn+!sf=nr%ia6B*?l3|>hLX-di z!_WyPM2WiU0LZ8-RUl!UG4uyI_3EnZ1^`fmoH2OwCyXa|G{`jBD*7AzE{D8^q)UiB z8iMBq4RX1BrWa675J#cb-Z}tSt#x>_DK;NFR;SM_t8~q$$O$~;?;lQ>i7ZN W>yvU&u=yYW0000Px$lu1NER5*>Llf6paTSo{Si1h^A!Nk zb18W)YM~hsAQ~U0T7IG7IJh4^+ncMwIRTvKO3f`~4Ly_wzmqF~QK>UCImUD0DLCBo zTq#(WUR7EhksgyMH5LhkMdF6zU{vZq|AkgzH5QTPe=YD`!mOeHiQln40VDdtE|7Re QkN^Mx07*qoM6N<$f?Hw6p#T5? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_chromium_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_chromium_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..270e03afb4b96fd4f69f8ae08764cf14414d3fc2 GIT binary patch literal 455 zcmV;&0XY7NP)1uMJ=8JD#zU--LyTS;CR))MFo3m-Gz`|f_vxA33xRu5{`+I;ow;>$&o+3hVV zm5OT!!;t&iyR{*nHD|ZCIB7PKTC0@Y+CnQup;)9B1PuEFhW$aJQA)W!VEJ;`A7G3@2!Sz%z5P8#;fT#=o4l>p z=K!D2&%H!Iq#_S+^o0=YJl|pbW6UTVk>Abp`pwbuOXdsD0|P5#j5EixnEG*p)`u3E zT+Ti3PTx~1mgWft%cI1z7=Ze5gO>*fNUa?strWiRry&BgKeqXLb3?atiIkE|E=Mm2 zcyV}$UVvVOn+Q1jbmqo@hs}JuzIH}?XXO|~D)OY1i3Z>I(Ml0?d(JF`NCc$*EDI-6 xk!S02xtv(-WHPavO9%W-HfZ^4ALDzJ{s06g!Oxwy;h6vc002ovPDHLkV1il_(wG1M literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_copper_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_copper_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..70bc208ebd187ec899dcfda9faa8764ae0b0f9d3 GIT binary patch literal 563 zcmV-30?hr1P)rMr3h;cC7)x4@tE@-}iM{8}s4`#sSzXWXZ`InS4cXTIAV# zw*l|~j`<+G29NJDDQU+hJ7Nj?68Y!20J2LPU6oEPmQlG+&?y$VU~j6b1t z;bT(=;6Wm606421owmG>Cm1*L^ansy5S!YF`ua+my+W3dKfv41U(AO@*l-SVF&-{s z7tA6DT&C*!N*YHjVHXi#dvb>S=}#^Id=Ez-9Sgs3w_6;vdblsbscx=nM<+QYa7pju z8lUFPx$TS-JgR5*>*lFd%SKoo^P+L{m`DU1agtcfu$Sdb9k#7E^#2pfVci69{0(DGBN zcBqR=rICPJ?`D#l`R3kp=D@$N%()Bq&4=h%zujqN0E}~x)3{CgTAiS>FKB_HRL%3)adE7Aq#wdgzjXNs*0BeB*d0lPFxh2w+>xYM6UnIs3MoAR#{Djao@4D!Vh^?(H-Ssl zJd4*2LYT;rWH#tC8}t)Nq4F{G9HH|0W#WEzf1~_qzZDt7STgj#WRJxJ*(jfScsTFPx$M@d9MR5*>*lD$sCP#8cDhQWjdQcB_uNe3sL92_Je@d?TbZV-4HMJ7_n`aj|$N zB>;=nXY$xx0uZ`ULiquzXT r0kI#)nPJ;=06D_1U-?ifz(0!*>us>VB(?6400000NkvXXu0mjfQI)Bl literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_silver_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_silver_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..0ff57d2dd05db6a2ea24e0d3a34625f679b92600 GIT binary patch literal 491 zcmV1u~v|t>{h1+VXA(Z?e2BDijlt4(mLk6ePsa*n2%_wxp;?N9&AVP$SAc9UI zQ-=i7h72tfilJ+0j2Lnum_%=lR0Pr6q29y2iDW7CT@Huyz2AAy^Bwp{N&OCAzFIb{ z`%HSRr+%=Xar46pkL3}X`fm<39l+>rB;99x^3+Ep8U|o?dYnT|r>$R#y1mV9(L}PE z-@IL7c6uCucs$ATg%?!I6}*#v0IKB*k!To2cC!9{gG_o&8nl`hLjiG1DwQC)x=*8C z0}yK=TO<+<)A@B~XHdu%0ay$L#G4!S8ZNho#JksmMLeDqwLK7zk2F34itOZ|^b?oc zLnInD0p2SIz*KO4<=NZ})pCUa#}E&Ohbet4(WuvGHFd_^6KKr~uC8zJ1%u?$Y4Z6U z31Gk+%a>eEfI2?XXw+-y?H1liKl@v|D6*5berby@8UO-{N!--ePoHtQJ+?7gB^caA zvi&?+c|_;5CH94Ek@Ao4BEBtwDRW!^=j{^=;}-Y}xZ4a}KT%a<#zSRPn9X8UjTx4d h{iUig!!-OC{Q+Zsz10l6o7(^Y002ovPDHLkV1gci*vJ3? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_tin_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_tin_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..12316e3da62d8a319f875151dba240792e63d79e GIT binary patch literal 446 zcmV;v0YUzWP)Px$cu7P-R5*>rlCeudQ5431PeO-!LrT3@81+CQ8xkQ5Dwl|+aBOaDskuL)xxb(x zXb763A*96&Y>}1>3@Q|T*LY9l)u4l~rFYY;92)wTbI!e-@1E~F7ycVccahv!a=YuB zvumZV;|qqmo40oN0I0VdnpFWXkWl%qc|4#}Z#e)otAeNz0pRdpzmLS{CH0m=>G474 z9->A>*73wbpG+xXaXL!=%Xs4fRmMU#^ScM9Cr2bwYZ$r?z@uqW$Y!uiK}grIOaXw? zu)ik&C}cB~!ZW;9p5$43*w;f6n~MXu#oWCjJ#ZSfd;y^5yvXQ(>i}Sx0^72w)XJ!% zLFt8@pi(OXFcO|&LLI|01^$n_`E;6QRWLuP$*r89ACug`l`DxY&$^m6MKBb^wmx-k zZtq~|I{D|4G}DuGb$QYI6JyJ>Ju3oOSzRZQT9Y1Grl39S!~fQycz4Uduj-MmtgcHR o0E8%0%-t&k34WT++rppm4tr~<_jz{HQ2+n{07*qoM6N<$f=VyR)&Kwi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/raw_zinc_ore.png b/src/main/resources/assets/cosmere/textures/item/raw_zinc_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..8849c8ed742bd009809318959739c52a77f4a5b3 GIT binary patch literal 410 zcmV;L0cHM)P)Px$R7pfZR5*>*lD|s=aTvxwT0u%y$bpC`QDDe92q6f8lC%U(4X(8$wD$+t9<&v- zG}n+gwKQaHC2k@O{XmK9@G?)&8n2=5IM39jrDuA-&&%_?4-a4X_i)&W)y#%&%$H~9 zeS15`?c$^3eH2-yDJcN@C?m%pvDYsE(3BJo4o?Oq8Z(A@F_H@h1AJ;9c>MxRNx|iD zvbU;eCa^aZx-OuR- zirVQbbLdZtCsTTKDQb3LqYU7)MVqAQT(|f)pbTZK1TdJ9KQ{AY^lNa_s~709^%Lii0AQ;-*7DT#JiCQ37p6 zX-X-SBt|HRN*v<7CQ<9EzvT;`i@6@jgY8@Sr7O2cjbb3w=_KUW^8V(MwSnW z3ef3}WLE*iVIj@y8lCQlqk}^#wJL${Mn|~6a{wrpU^0FtuWLNL&E$@5Zapr}PZ6#Dc86zwzb^p-cC{7X>#wh?tk8A2_~+Bz>Hqcb*Z!>ka_RAZY5seE z{)0sF@;v`vylRwqc~4cUdDo2AbtcY!e%fKD4R{>b%IED#-*9PaV#eE;reNMMW;5Ac zM-|jgoK0A&eb^xLpk3SZe)&fx4A}~HJHEFh3Qwv1ek_*_2-^DdLu! z;N{7UK=APA<8}*EV}l2t>>ErzygY0@XI48W1H`G!LM+7(8A5T-G@yGywp6 C<8ROa literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/steel_blend.png b/src/main/resources/assets/cosmere/textures/item/steel_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..56254c227e2f4b56bfdd5cf0823928b0b930d25b GIT binary patch literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|9(lSrhFJ6_ zCrGgN++dk2d-vbs?zeaMbFYr#aZGpL{$KALAJ3^%UOXTmZJwJ}@$r$VpR)nW8l9Z~ z+FGX${`~&l-f5zJ*&~B4Ig!4pt-5WOxj$`|lmLQv_x2tyc={@|E%~^=(VhAN_I3TN zk(<}|tKWHPz-u7&jCW34KuEyP{M5{IA08deX5-`x6yg2;?!I#c=gBf2eGRP@2^9-B z?`1vesvozcdhR-Siv_p^WJ kx^~3zMD&Y?1{)X{4lhozY?~=-0Q4<`r>mdKI;Vst08A`%H~;_u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/steel_ingot.png b/src/main/resources/assets/cosmere/textures/item/steel_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..9403b5769dca141ca4c9f2c0672e18f710660f38 GIT binary patch literal 373 zcmV-*0gC>KP)5=EaBi`#LdY37hp0wASCN{MOa*jQg<#j+TD z3=m>)q61WGbq@CTxNY1eCR)}qz8|pb7GvXTtxo5)6X%*^yHP&B3V`R8xW2jpmPx$4@pEpR5*>zlCeqyK@>&LN~(a}rU_w65o|QE$uCGM#m+idNh~BnzQE4f+D^2R zd_W+?!fb2=u}X&BEwW|EK&rLL46|`3+ljXt?tAyVna99isNL>^_E;!|3?(v@h?)RE)P#Z9+SxQdzrXM+ zz6om3Zn@0C-ac^@74IOJ1k{h}_!XbkQWMM0WF(ZF{%EzC z{pa{Jv40goJFMmI{LtGJGe8_L@`=$xXIU6dg}?A)7H}~<70%!{siSF^*3F#n z3_O1wVy8wV9}x~)?>O=4y{)5$ oXfUP)Px#_(?=TR5*?8ks)itKp2LfgV=+ORJ5Y1f1oqzA82)aWn@i$OH3FOlO3C@nn*>d zDXZ9~0~>{j4U&++{eVn;w}zBZInmb~-*@lx-hFp)kvhk;2

29Y;&cIp;t@-~*tw zE3H~W)Tt8y!Y}~9n4-~_kSMw*j+V+ Date: Sat, 8 Nov 2025 14:32:00 +1300 Subject: [PATCH 1040/1090] [Cosmere] ColorHandler no longer colors surgebinding or cosmere items --- .../leaf/cosmere/common/eventHandlers/ColorHandler.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index e6b545d35..c5a300573 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -1,5 +1,5 @@ /* - * File updated ~ 9 - 3 - 2025 ~ Leaf + * File updated ~ 8 - 11 - 2025 ~ Leaf */ package leaf.cosmere.common.eventHandlers; @@ -71,9 +71,10 @@ public static void init() else { //todo temp? - if (!itemNamespace.equals("surgebinding") - && !itemNamespace.equals("cosmeretools") - && !itemNamespace.equals("cosmere")) + if (//!itemNamespace.equals("surgebinding") && + !itemNamespace.equals("cosmeretools") + //&& !itemNamespace.equals("cosmere") + ) { continue; } From d4525705a3bd80b2261843a03b4e710a53515f79 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 8 Nov 2025 14:32:22 +1300 Subject: [PATCH 1041/1090] [Cosmere] New Texture for coin pouch --- .../allomancy/textures/item/coin_pouch.png | Bin 3277 -> 374 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/allomancy/resources/assets/allomancy/textures/item/coin_pouch.png b/src/allomancy/resources/assets/allomancy/textures/item/coin_pouch.png index d1366278cd616123f7e05f8516fef4a4e506daf6..3c13f9f651c7b13cc43c72123678d1bc827f187c 100644 GIT binary patch delta 348 zcmV-i0i*uS8TJB@BYy!sNklf)0Xjy1RGp-TU8z|3)f_XjFAS zygzT6v3Fw+8&%!Ur)AnB2YcuNu)4eyYc>~WU=KZ1O{QEZ3V)$J^e7jKHaYKRu~Y(-rz=4}g|o{%(YNDeE8Z6tS!U01r-=5BF2>SI@6PH)BvQW&O%p z9#xasJy67X^V$I5?BXV(NllB7_xH%@V`1Oy(d{^bZ;u?TCpVHnN)iK+b;~fxNDF`) zNgUfkfZ+20a#iz-0IYAWB)1Tbo70uZD5@qyCtxQjgu%Ev{0g9Ia^&^Ey#M|-lX9ko uAYOHQYck5W@c!`y_@TyWqcFn4Kf@Q7RdW|A#E~!n0000KLZ*U+< zLqi~Na&Km7Y-Iodc-oy)XH-+^7Crag^g>IBfRsybQWXdwQbLP>6pAqfylh#{fb z6;Z(vMMVS~$e@S=j*ftg6;Uh>2n?1;Gf_2w45>mM5#WQz#Kz&|EGkvK~TfD`~gdX7S-06<0ofSs5oQvjd@0AR~w zV&ec%EdXFAe}CrF0DztNnR@{MTa+Oc0iclpAQNSXL;z?z0IbheibVieFaQ*0OT;+< z*ew7sNmph_0I;_Jz|Ig0vH%DS05DOAg((08djMd_BO`bKgqZ*oM)FrY@hh$n=PCdI zc$u<1xgb(Nf#>=Hemu`nm{hXd4HK1GJ!M?;PcD?0HBc-5#WRK z{dmp}uFlRjj{U%*%WZ25jX{P*?X zzTzZ-GJjoxM+Erb!p!tcr5w+a34~(Y=8s4Gw+sLL9n&JjNn*KJDiq^U5^;`1nvC-@ zr6P$!k}1U{(*I=Q-z@tBKHoI}uxdU5dyy@uU1J0GOD7Ombim^G008p4Z^6_k2m^p< zgW=D2|L;HjN1!DDfM!XOaR2~bL?kX$%CkSm2!8+oM4*8xut6L2!5A#S1{}c!+`$X{ zU^aw8B*el(5JC!MfE;pQDXfA*D2C0j9V%ci)Ic3Hz)@(1lW-0$!d18qJ#Y{DVF;eV zD7=9Q1VP9M6Ja6Rhyh}XSR;-I7nz0lA;Cxl5{o1t$%qtDB1@4qNHJ21R3KGI9r8VL z0)IJ&Tt>Q)JIDYsg8YWOM=_LvvQa(M47EeKs5csfMxqPQWOOl_j~1Yt&~mgIJ&ZP? z=g_NY5897DL&q?{=okkx#B4Aw#=}CfI4lX1W6QB3tPHEh8n9NZ1G|a!W6!a71QLNo zzzH@4cS0ax9zjT0Oju6XNT?tjBs3A)34b>U1B6k+CnA%mOSC4s5&6UzVlpv@SV$}* z))J2sFA#f(L&P^E5{W}HC%KRUNwK6<(h|}}(r!{C=`5+6G)NjFlgZj-YqAG9lq?`C z$c5yc>d>VnA`E_*3F2Qp##d8RZb=H01_mm@+|Cqnc9PsG(F5HGhv< zLam{;Qm;{ms1r1GnmNsb7D-E`t)i9F8fX`2_i3-_bh;7Ul^#x)&{xvS=|||7=mYe3 z3=M`AgU5(xC>fg=2N-7=cNnjjOr{yriy6mMFgG#lnCF=fnQv8CDz++o6_Lscl}eQ+ zl^ZHARH>?_s@|##Rr6KLRFA1%Q-6J~MpZLYTc&xiMv2Yk#VimzG$o zNUKq+N9(;duI;CtroBbGS^I$wLB~obTqj3okIn_1=Tq5J-KPqt7EL`m^{y_eYo!~Z zyF_=tZl~^;p1xjyo=k72-g&*}`W$^P{Z##J`lt0r3|I!U3?v5I49*xl#WitnJRL8` z+woCDUBf^_rD2s}m*Iqwxqs0-qt!-@Mh}c>#$4kh<88)m#-k<%CLtzEP3leVno>=< zrYWX7Ogl`+&CJcB&DNPUn>{htGUuD;o7bD)w_sX$S}eAxwzy?UvgBH(S?;#HZiQMo zS*2K2T3xe7t(~nU*1N5{rxB;QPLocnp4Ml>u<^FZwyC!nu;thW+kdXMZMJ=3XJQv; zx5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C^>JO{deZfso3oq3?Wo(Y z?l$ge?uXo;%ru`Vo_|?0bI`-cL*P;6(LW2Hl`w1HtbR{JPl0E(=OZs;FOgTR*RZ#x zcdGYc?-xGyK60PqKI1$$-ZI`u$xr8UFki1L{Ox>G0o)(&RAZ;=|I=wN2l97;cLaHH6leTB-XXa*h z%dBOEvi`+xi?=Txl?TadvyiL>SuF~-LZ;|cS}4~l2Y<3>Wmjgu&56o6maCpC&F##y z%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47EtUS1iwkmDaPpj=$ zm#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kwJ{5_It`yrBmlc25 zDBO7E8-Isy%D(e4|2y!JHg)!SRV_x(P} zzS~s+RZZ1q)n)rh`?L2yu8FGY_?G)^U9C=SaewW{1JVQi2O|!)*SXZy9nw8iQjgXv z>qid9AHM#b?{_T?HVsvcoW|lKa720J>GuiW_Z|&8+IEb4tl4MXfXY$XCot2$^elGdkVB4a$ zdw=I+&fjVeZ|}Mgbm7uP|BL54ygSZZ^0;*JvfJeoSGZT2uR33C>U8Qn{*%*B$Ge=n zny$HAYq{=vy|sI0_vss+H_qMky?OB#|JK!>IX&II^LlUh#rO5!7TtbwC;iULyV-Xq z?ybB}ykGP{?LpZ?-G|jbTmIbG@7#ZCz<+n3^U>T#_XdT7&;F71j}JoykC~6lh7E@6 zo;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|zrTyx_>lv@x z#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fdMgRZ-_(?=T zRCwB?le=qFQ4oi}Ip^NHn{3Pm!3}w;Bp6802#S$Zf~J!MC1NFF;RDgaPS8g32UywI z2MY_q!bY(WMXRWZ1Pq9em_l*g?0;@H`?&X>v53SxHihH|(+ubL%?xu!RF!Q>RaawR zcLxXdbkft7K~=eV>V)>CtoEfWs!H#UBuCp?7}?jg>hadX+S6$&VaWT>^8jRXB?kL? zc|AL)-3>;*mEEQW)&Y{fj~cT!C7Jdv9f~cDsgzzhJ`6xUtnlE)lmM)I9e=r)r*CK0 zRk$#5iPP84lFT$S`{NgY{0%k%o=p8Sj~*J-ni!qD_mITSG&d$LvNzo#8%L0hTeyC5 zM4dVs5(#qoB455PkXu^j>h1H)fBMdyyOXjd;MSQ@6_n7$L~%?QJMznA7V|}lg(b!> zkMZv1H1{7pt3Lt`%GDa8LVv>Z5mg#}kDks}e9toT<^%hW^fPvFKZdNCRIMO@XD!xRtPw=O2pELG56CTKY1x&o4_I6-@w-%_ zSgjDo5rOB?5Cn)Z1fEAza}&jE0V}fg7S0_TRxyzDJOa6$f{S_l zYULwIy<-|5KCITrnp<(yqKGh#se}>Fr$5S;9sI8h+ti-{0EpA#WjJ%wJpcdz07*qo IM6N<$f-=Y^L;wH) From 891aeeebe8a5c2fae7a9cdfd4c2ec74a495830e0 Mon Sep 17 00:00:00 2001 From: Leaf Date: Sat, 8 Nov 2025 14:32:50 +1300 Subject: [PATCH 1042/1090] [Surgebinding] blocks added to creative tab --- .../registries/SurgebindingCreativeTabs.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java index 72bfa7df1..48ae5c9aa 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/registries/SurgebindingCreativeTabs.java @@ -1,16 +1,19 @@ /* - * File updated ~ 14 - 1 - 2025 ~ Leaf + * File updated ~ 8 - 11 - 2025 ~ Leaf */ package leaf.cosmere.surgebinding.common.registries; import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Roshar; +import leaf.cosmere.common.registration.impl.BlockRegistryObject; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import leaf.cosmere.surgebinding.common.Surgebinding; +import leaf.cosmere.surgebinding.common.blocks.GemBlock; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceKey; +import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.CreativeModeTabs; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; @@ -29,7 +32,7 @@ public class SurgebindingCreativeTabs .displayItems((displayParameters, output) -> { CreativeTabDeferredRegister.addToDisplay(SurgebindingItems.ITEMS, output); - //CreativeTabDeferredRegister.addToDisplay(AllomancyBlocks.BLOCKS, output); + CreativeTabDeferredRegister.addToDisplay(SurgebindingBlocks.BLOCKS, output); addFilled(output); }) ); @@ -62,6 +65,14 @@ else if (tabKey == CreativeModeTabs.NATURAL_BLOCKS) CreativeTabDeferredRegister.addToDisplay(event, ore); }*/ } + else if (tabKey == CreativeModeTabs.COLORED_BLOCKS) + { + for (var gemstone : EnumUtils.GEMSTONE_TYPES) + { + BlockRegistryObject item = SurgebindingBlocks.GEM_BLOCKS.get(gemstone); + CreativeTabDeferredRegister.addToDisplay(event, item); + } + } else if (tabKey == CreativeModeTabs.FUNCTIONAL_BLOCKS) { From 82b2f68750c3215c729fc94c903b5d5b6c545eea Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 7 Nov 2025 23:35:25 -0500 Subject: [PATCH 1043/1090] new crafting --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 1106 ++++++++++++++++- .../recipes/decorations/atium_ingot.json | 35 - .../recipes/decorations/harmonium_ingot.json | 35 - .../recipes/decorations/lerasatium_ingot.json | 35 - .../recipes/decorations/lerasium_ingot.json | 35 - .../data/cosmere/recipes/atium_ingot.json | 54 +- .../data/cosmere/recipes/harmonium_ingot.json | 54 +- .../cosmere/recipes/lerasatium_ingot.json | 54 +- .../data/cosmere/recipes/lerasium_ingot.json | 54 +- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 53 +- .../main/java/leaf/cosmere/RecipeGen.java | 17 + .../leaf/cosmere/client/ClientModEvents.java | 8 + .../client/gui/MetalworkingResultSlot.java | 33 + .../client/gui/MetalworkingTableMenu.java | 185 +++ .../client/gui/MetalworkingTableScreen.java | 44 + .../java/leaf/cosmere/common/Cosmere.java | 2 + .../common/blocks/MetalworkingTableBlock.java | 38 + .../common/recipe/MetalworkingRecipe.java | 168 +++ .../recipe/MetalworkingRecipeBuilder.java | 184 +++ .../cosmere/common/recipe/RecipeTypes.java | 11 + .../cosmere/common/registry/MenuRegistry.java | 30 + .../textures/gui/metalworking_table.png | Bin 0 -> 1332 bytes 24 files changed, 2026 insertions(+), 213 deletions(-) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json create mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java create mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java create mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java create mode 100644 src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java create mode 100644 src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java create mode 100644 src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java create mode 100644 src/main/java/leaf/cosmere/common/registry/MenuRegistry.java create mode 100644 src/main/resources/assets/cosmere/textures/gui/metalworking_table.png diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 1f874bd2e..ccfd3ffb4 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,8 +1,7 @@ -// 1.20.1 2025-11-06T20:33:20.233296 Recipes +// 1.20.1 2025-11-07T23:11:34.9448989 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json -d31946cf1a6b3487f9e5c4d7c8169134eb0029b3 data/cosmere/advancements/recipes/decorations/atium_ingot.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -18,13 +17,10 @@ c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decor 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json -4ef4a13eff2e8281fa6019957864080896a2e333 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -92ac28c2747fd19e7f6c2a32b06d47968f090713 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -d0bcd39beb814d93fdb0c7068aacfae33a013747 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -72,6 +68,7 @@ c7e6aa166c29193cf7a83b19845f75beec514cec data/cosmere/advancements/recipes/misc/ 4b16a3704599e05a64dea1ec6cbe9668fde79478 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json c9fe0f3e92644b7a6d3028dfa13e4ffa12af4d18 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json a5ec44e370311037f941a04ed8f4389450649db7 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json +6abdb4902ce780e0cead7ce1420b9840fe43ebce data/cosmere/advancements/recipes/misc/atium_ingot.json c643a34c452d8168369c02896ce61fe422011971 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json 11d6f0c8cea954b1b2d9b056bc85d0f57f98fe44 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json 654e4bcd5a4be48d8530a8ff8d400864255f31aa data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json @@ -137,12 +134,559 @@ a0b1993f5f6ef980f0fe9c351db512ac0e84af31 data/cosmere/advancements/recipes/misc/ 5555e5c100bd7b804344ddfb6c6ea80ed204f175 data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json 0e10b0fb67bddbe8e023b18f0e9974e883f534d7 data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json 16785ac3722c92b31faa145ddffe92f3257ed0f2 data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json +1afc74fad4d9887a309081fc605bf3480ce24d0e data/cosmere/advancements/recipes/misc/harmonium_ingot.json 74ec3e1d84e37bd79d815de56b4ba08447a6852d data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json ab3af6154116ab63676b766b762a6d6775d08e39 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json f74b4d5daf0b2de67ac1279f4431a8d0a40536a5 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json 4677ad6ab84978723788a61856fa18de55cb3f20 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json 78c7450aab83fb92a217ed88c34730957c67bff1 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json d576db25f5c71b4c77958c2104444e7523b04032 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json +b3cd6fe962db54060605e33c3457d8852950bfa3 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_1.json +00e54711ea6edc6d08c85bfe9892687471a3c09b data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_10.json +039ae6d634594b918ed72dfc4c847a7c58f9de00 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_11.json +9d2ea1cb6e029b25dd68d6b32eeed1359dbedbf5 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_12.json +3d4704c6167714aa2bcea976b1d4c2754212fd80 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_13.json +9b34087f60ef32c4c7663f424ad5188493559c23 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_14.json +6736b3c157bf426080d857eee62817e276929e59 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_15.json +e3ce6df567e12b2358beca3ad211fbea3cb632f9 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_16.json +058b0784b7f66091fed5aa71a19f4fee3c77480d data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_2.json +676ff2b0e62abcd62ed97b443ce26f5255863d85 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_3.json +70afd5eadef718ce1220fc3f91f4a2974bd266a5 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_4.json +bfa674450a70ad28c01ad619dc0e5c86af99e112 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_5.json +e769c40c127a9a24309c127c2331fdd10000f304 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_6.json +17c40f924da4f5d5c0b109b577605662b6183655 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_7.json +3f1194acb9acd4691846a11486bd924a90f7c830 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_8.json +0deec54a66f66b20f41c19044dd9132a14faafa2 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_9.json +71f499783964816c0384ef693ad9b761c0601321 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_1.json +1e8c0e010d99aea06c804197057a2c93d9a9ef26 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_10.json +4f79950c1b0e73428585af6ab8914032ffcaa280 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_11.json +6e964b304a59d7e7f5d7bb8c3cc9ea9455f875fe data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_12.json +71bbc18d4f29481839c84ea3998d95632d2d4f32 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_13.json +a8b1f0f5ff8b5cf05595b6b8c4dd89ca49c1d0d0 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_14.json +16cc117d6dd3c7ba825f13b93f340a0320b4629c data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_15.json +272c8ec5e9ce9227f6c4b7c1733f42f8df4e4c68 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_16.json +2ede56b7fb309e999bdb192891916e043adee463 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_2.json +467c0c752a89672d3d85943f84a3daa80d6ed69b data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_3.json +d95a7abe27de3a99c4dea1761ec841d6bb1c530b data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_4.json +586b7c01059022afdb038102489250820d406716 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_5.json +7498d478a9784302b07f28327bcaeddfd355f90c data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_6.json +c079f5bfed926787e54394321d51ed68648f3efa data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_7.json +394de4b61440a5d274a7e259e4e4d49bbef0f585 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_8.json +60c95d5d7b833695112ffaf83057783735a539b0 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_9.json +b1ae22b07a72fffe1586362d339a55840e26964b data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_1.json +103db1714a36025670a3ff69321f97f7afa54637 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_10.json +6a3c703cefee3f792021c0d3298f5ddec106e1b2 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_11.json +db0181cb8cfea14599c0d9dada3b6fa05886a92e data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_12.json +9458482b317428449b273a870ef8d3d0e2b69d47 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_13.json +81ff06b3c204bb6e34c6c651539dfa295663b9c9 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_14.json +c92b5c3a6fd6367422f513c7e19c9e10d4fd20c0 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_15.json +7dc06cab14909ae042d98f5faca468b7c79bedda data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_16.json +156941a7d221900043cb110cb421b3a83694b5b7 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_2.json +120fc5b86ddaf9f724b19e3421f45d88a3e6e2ed data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_3.json +c1636ecdeed94b1f49d0febcc64c09a11bfe416d data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_4.json +fbc01d2aea8c69941526553026a33646e75f8fca data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_5.json +549f3cc55422cd12398069fbf2e134fe1a2e5877 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_6.json +34bfa9edf357bf0206c9b14384964a9304ebcc6a data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_7.json +33dd5043fa6da893c2d2dec7ed61ade8c4e81987 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_8.json +bb60c412a2985195927ae53f1122ddeaaf3f7773 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_9.json +f11a3fd5ca1b6f0bbf7d301497b02ab8b538ca04 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_1.json +66e49427e47a0876290cabb75010d7d42bf44f5f data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_10.json +ff472207b5cd771273b17ddf7001689a05d96cf9 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_11.json +6b099cb28b06f3a7a5ec39085048681665d46a23 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_12.json +d004a73ab4dadabbf4600d4915f5b47169e01010 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_13.json +de87deb8eec148bbe1ea0281fb2857fc3f7f0a0e data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_14.json +50ed9beb5dd68cabef92d8c9df2384293aa68124 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_15.json +899a3ebf4bed72edc0876ccdc184fa7cc4aa3a55 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_16.json +a9013fa73b25295eb7afd2088bd2d08bb81dacf8 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_2.json +9edb32b08f6ad71d33e28dc16d8b5ac66b24359d data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_3.json +05cd927c1948a0e89dfd9277aec6a59c5de6fe3b data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_4.json +08985dc022f06a0472c0e33b373899f844be8856 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_5.json +28222e50caaeb9c9219f96d0d2fb7436a75b70f6 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_6.json +6f8133e03da0e22fae0d7638d772aa2f780f51cb data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_7.json +41584188bc76d9387f302223e53ddac3e0cda6bf data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_8.json +398481e06c8fde90f611003f38f31e4283a18f2a data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_9.json +debe4fc49233287aa0e46572d93bc8c672f7607b data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_1.json +1bbfbec924204a2b8399d8aa2b243f3d4a31d6a5 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_10.json +5857c9346bfe0088a1b9dbb6e6956a487764ad6e data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_11.json +ade7d654e0939ba6711835fece6c0624bd339faf data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_12.json +f654afd6588ae2bfaf2cd9d5fbf6a2c27919cba7 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_13.json +bdcef26d62721cc072cff3dee9d78a9cdcef5a37 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_14.json +bbe13a3fff584d50358c87b26b28be176dfd644e data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_15.json +b4ce2b025730b001e82c31582bb56ec107d910f0 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_16.json +f0e0cc127fb082dffa0815379f2a504024787ac2 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_2.json +f72cc8f17df5c3f168e36b94fa863bfe26b6bbf2 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_3.json +c1daae6e4e0580988e07db688561e2820787e284 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_4.json +be9aabaa50350d4d30786e50e119899ba0ca2d37 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_5.json +31feb59262d4c0ba184f9e7a75e0a1ee7c43ca84 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_6.json +1fd94f15f9aabcece69ae333911f4438ba5fa353 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_7.json +678846478b8648f36300c9df2b7feda0c086e163 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_8.json +7982fd2cce895fd1d595d04aff06a938c5aa4b52 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_9.json +d6f6de9f9643022a2eee244590b1df6a231baae2 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_1.json +6d15348541b01240f9d0a77fa3e60dc5e8b8bbc0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_10.json +3d150761dc348731d0eb1540eae55f683e66fc44 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_11.json +38884bfae8d8d93c9006842fcbd49956385eb5df data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_12.json +c46b9ad70cb2ac29a78fe3a5125c1d6266dee7e1 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_13.json +4d474241a781fd0e05fef2920a4442356748e192 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_14.json +54e7b5589f5aadaedd93d90fc1978a92d2d95088 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_15.json +61807fc7a726498e193b3e98a3290c9a7818ffe0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_16.json +1f74a8c59aaab1fc0e58b0fff7631763738ca09c data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_2.json +faa03b411e1f490d2dd38fefd8299748f8e1b0b0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_3.json +aeb971f359c5dd490523ff645e7695c3e65a3f9b data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_4.json +e6f1a2727df0e55134cd02da3f51fd2eb22df8eb data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_5.json +5ce07f66124bac0f1135c4d072007eaa3c90be2c data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_6.json +4476c59a48bfbe103cd5aa095b95cf185045553b data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_7.json +0056661d043ae754bc191e940eece92a8a59bb0a data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_8.json +56735509b2cafa9182340b4d921bc0134b035ebd data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_9.json +92318ca90607cce4030ce792d6b03bda5d5872d5 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_1.json +3b345df6d048470634479b305912861225f5847c data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_10.json +8cbc33fb700008cd9036eed5ff9e6f3a15d9620a data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_11.json +a2423d585e2b33f9ef1ee5caddcb47cdb646004f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_12.json +1b1c6c720f6c582d69120d2479c457760e95b2e7 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_13.json +32cedb4f039c46028a153092f2b35e4db27c0ab1 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_14.json +6ae8d2ecb43737aab0d0f039f290a09ec7530bb3 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_15.json +0348307144f9597827c8b4963afc914ff3f6fca7 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_16.json +4595fbf512f19848e6866209a78a78f8296d2057 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_2.json +632b0e4cd5864c0271d046af6deaeef58062be5f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_3.json +739c213477d8f8bc5e7a05c5baca03b822369d70 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_4.json +37c56302a196a0ba0fce2f79aa7db5ad7215da42 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_5.json +9d9a285798bd399785e511b84e3859ddda955bae data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_6.json +c222c590070c39651a030ec2d8b381c8a74f216e data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_7.json +8a49021e152048c3420ebb7a8be78a65217f1878 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_8.json +122c8f38beaae9ea26a79058c169054bff681f7f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_9.json +da1fb65de55e3ee7d8ab04188de90a16e6fd9eb3 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_1.json +cc11c1301ca31cd529327e54f9134eb208da3c4e data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_10.json +1432c05d7c6c985cbd395c4efd035f771a102306 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_11.json +e0c5bd49e31bcff647510971a5ba5fb01feca945 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_12.json +c9204e8578751eee1892d907e490de4057cee097 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_13.json +e7231150c84670d13a6a062b721ef93a72eead4a data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_14.json +cf0913698bf73e89db7dada48666faeafb038398 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_15.json +7416d49aee954a9561f88a719a9e5ce222d85fbe data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_16.json +d6ca86fded32c6892be9571148eded1f76992f6a data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_2.json +2170af2326a945844476827c2d92a65ab3014cdf data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_3.json +844758ae5e8a816acc96d91776c3d3b984358383 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_4.json +44f57b5be61062315deee9d49d589beb16829c47 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_5.json +12594d781815477b1ca4d9eafe35aa1dc358f5e9 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_6.json +80cf20c6ebd469c783c1aed28a090e66bb97fe57 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_7.json +c17607f72da86ee4a9bc67fcb5bb0f92be2e91cb data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_8.json +ea9971a7d4d8db75ca062d662f3d07aef23ab9d2 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_9.json +684ff3243a45529da2e2eab1341dfbd164d78d17 data/cosmere/advancements/recipes/misc/lerasatium_ingot.json +81fa19689170bf1ae0a9a4f1f3fafb36f3636638 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_1.json +da01c97bea3dc896ed8753e6656452d9f0d83207 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_10.json +a9172713e6ecd7330a907e67bf6b3f95e346c4a1 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_11.json +11a64682491d4b6e9bc2d2bad57739b02de072cd data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_12.json +3e25b38a7fa7521a45209879b7b5424af92c71aa data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_13.json +83f00c488099f4ac599ddcbb8ad57e93646f18d5 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_14.json +309cdc4ab31e85915da3bd52f11942aa75b3392b data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_15.json +fcff8c26d2acebbc0bd776c9232ee5ce65369624 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_16.json +6cf54e308430b16f7b2d9d7f2aff699d5a788f6f data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_2.json +51a998a0f674e6be323fbef6ced9928ef68dab1b data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_3.json +2bdf7e017e33717c3502bf5834b221e73f792add data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_4.json +de9c80efa546d182242698e3332c4c567e755a79 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_5.json +600b5362d08a4f74bd75b76ceb4b250df1a6e7a3 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_6.json +0c2bb527975d59e8453cea32b23d362add80ee66 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_7.json +b66670dae64b60c18ebfa04d44c216aa711b6344 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_8.json +b02ce86aae636f091d89e717fbfd1436b2722172 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_9.json +f97d791086dd8cfd3ede4f7ced3ca307912c9dac data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_1.json +1cfcb7ae79a49588eaef625bdd48da7d0e1018cb data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_10.json +b839fdd98a08798050aa1920c1adbed0f03f3e14 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_11.json +774d2008bd6d52415a23cd3db7906150e296a9d4 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_12.json +c00b4789f7d3298268882094f47cf77fc16ae76b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_13.json +6510e15777a79ca714e6a53ffb5b47cd61b7ffbe data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_14.json +824be048b942d525e6ced2fd64e9f1630449fb1b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_15.json +023bee7dfd8158369c3621fc7ea3152f0499eb32 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_16.json +edb9c99c9681d998ae86d5b9094cb811ab1151a1 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_2.json +7476cbdad1bab7d1ef458ed64ecb58e44c5e5abe data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_3.json +56f0bc4cbf8e063f4300c2a1f85a00bd8d0e7ae3 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_4.json +5505b95b94326cfd364165c6d4a607bede3a682f data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_5.json +a51370640e3673f1226f9abbbcfdf1b407466589 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_6.json +2eb2302e8ef37075eada8d7ecd934b3fd98a7a4b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_7.json +d761331d96d271cff89c22056d3337483143b83c data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_8.json +3aea6da2a43456ca49e665986e1f917d2b1f053c data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_9.json +2c7fda5937802ca5c4e86818674d1e24d1bad524 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_1.json +94c4458a13d78f01a74aa94dd5c286639bca4dd2 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_10.json +7f924485733331c06fb44b1a1480470dc6cb3c6e data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_11.json +11490a6107b152e50ecd783931f37df458508b48 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_12.json +add125f6040f3181a9f99507eea9603be2e39ea1 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_13.json +feed372aa0082af8b0060058baf91c00f61ce7e5 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_14.json +014f649b48f1c7144c0ef41c005fbe1795f4c06a data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_15.json +e7aaa50e16a90bce4d76ddee3ceccb36436116fd data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_16.json +389b459ab34b9d02feaee8097628e44ab45d9f45 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_2.json +afa9320567fe3ada080ca8500ce30407f5066b5f data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_3.json +51d6e6d62d98f74969cccc45355fd02644a1b6be data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_4.json +f00194a5fe24529dcd921559691a3495e26ef95b data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_5.json +dbf8a86a467d4e7e8678383a16d46d646476a1c9 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_6.json +53cf810375e5e7017ee67bd289692dfc92269208 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_7.json +3227a32eebe50a6a31dd69e4c081772ce6cca869 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_8.json +51ac0fe63ffed849f1f604252aafbec6dc36d939 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_9.json +c133a82cebcdf6d26f3d644c526ad5f41ba4f873 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_1.json +340df952e1f2e3534c4ad9d352b122821d940e0e data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_10.json +a1a32b39f5fcc0a018d3b050b4a1017ff1158743 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_11.json +25a0900b1bde53c4d92243277816b2733fb67ed7 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_12.json +08fd130445a81e40cf6116bda682707e87b2e699 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_13.json +cb5fc5ee9c1b7d0582b62fc67d9e04ad4ecff647 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_14.json +c2f1c21cf3dfe7a0662491a72722ab5bbb236515 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_15.json +6a3b3f7f17e09652728b2d06cdae2bde0a64a18b data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_16.json +8dc6ac2350e95d25e932d29fb111481ded263c96 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_2.json +dd7a1ad5afecd9fa6bc89db3543437fe5ac1d3d6 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_3.json +1d1d86965cbd974bae488ec3fb7050eb3223285e data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_4.json +760f4bb8653270de5ec6e19410b86297e20cc577 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_5.json +29f418a3c802fde9ad137a2f858cf712bbc13d02 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_6.json +97868dfca26e1381d83050003bb7719007ece60c data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_7.json +add37e2e823a8ef057dd7884a3998388814c0613 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_8.json +d25ba6e43ec5972e376efe77fa4b6e228974e60b data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_9.json +eb00f915e7a395ef6edd08683ef50adfbc7a81d1 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_1.json +bdc409a7c55ec6a4ac66f249f90b78925b475af9 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_10.json +328c3a072da991504c315ac6e7377239c8212246 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_11.json +a3228a5382038f7ab8241eb8fba7083074a3f314 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_12.json +1c6b79b92331f59cc38fb954b3c33466b956de6f data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_13.json +1bdab356cb6889cd99daf3e48ac543060b4738b0 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_14.json +c7805a6e0222f6fb821de813aa64dfd0d3e68290 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_15.json +7ac95bed0f027109fb49f6a209ebc26da4fd46c3 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_16.json +1a32dda9d0addee2ed90382ac4bc4ba4cbad1c39 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_2.json +0cf661a830ca5c8a1053771ddc8e9c9beb0f1376 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_3.json +3a1e8a6e8005e25eb79918b429771df18d383a16 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_4.json +efcfcf046a987c455bebe33fb87a4c8bfcabeb5d data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_5.json +7e221d45c49abaa4a9d31b66a39b7e774b0a8a26 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_6.json +337f94466a27734bcf52704b10ddfbb9a5668fea data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_7.json +0b7fcb8d79688356e32e0c552f13f353a160f5e6 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_8.json +8d86da003ca887bfe741fd0e3e6071f636957eec data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_9.json +5d31e54ddb7cc7da35392bdf5fa6bdccead83c8d data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_1.json +8d9277156181560fc5549f0a02c62f1840d60f7c data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_10.json +0992195f77ff0cb816deaf1d17d9e0f2f5e60b72 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_11.json +08663a945f47c9bf8887f4b0b1a7d2250c7e4c23 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_12.json +338437bd55cf47e9ccc22ee0384a364256fd8e8c data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_13.json +70b456414089e0f9b2fcf81da8bea4aeb4a72917 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_14.json +9991399f130c51c3bc4ad6382757af4d79923c9b data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_15.json +fe0e97d0f667c498c2426450701caa81ee0d9153 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_16.json +0cf1fef0013cbb5ef229fc97f4b9421a1ad32165 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_2.json +3043ea601b868774059d0c6a5dae10416fa97ba6 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_3.json +a3aa824d3d6591208821901a2aadca290085c415 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_4.json +e68cb083c0eb733c5d7e1ca2c123fd26ed1912f2 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_5.json +0b1151942bd704f1ae04f32046ee72ed538e8df7 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_6.json +00d6a1d3573d3ad75d4468287f4cba03cbe3e0b9 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_7.json +fcfdcfb4ded7bf639635c10269209a586b93f512 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_8.json +66d1760f812fd9f2e3984434cc7c4680ec165c47 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_9.json +7de3effbbf1efe2a8d3efb5b5a3b7b54bbe58c0f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_1.json +ef1ce4a5d3ed19f279707065c1c6e776037225c5 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_10.json +4af3cdaac9a53d7d6fbb5d93b900eca37b7008c8 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_11.json +ad2e460e9200ebaabf30b3ce24c083e42e2b8161 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_12.json +3ddbc44ec0e742828d23c5ca6095cd7c7ccd05bc data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_13.json +6c3e5a45b1a8b3ccffb1d104be15dbd6a6dc1901 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_14.json +56b8dcd29ec182ba6f28f21deea9ce249a1efb9f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_15.json +1311e77b5f7fc25c0f79886c62ca428a6fe957c0 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_16.json +d9d439cdb5a000cebf13f8b361e9f57ce8dc3ca0 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_2.json +397218e247bbfb8c18c3b68e700ec4b9f07cb840 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_3.json +e2eddbd7a64d023c8f1e71a90a279dd4bb9dd288 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_4.json +ef8b01244f894661ff4642a5157243ccccd1c17d data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_5.json +e857dd3ea6d59a3e5c3ffbc26966c531e7b1a4c9 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_6.json +6bb3173ef5fb5ae6a18df108b93ea56cedb3ec2a data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_7.json +01022b9968c3e4ff48f8c698afbdd6ab5eafd674 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_8.json +4c82872a94b9d42f41c1489e8e88b4089aa4551f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_9.json +9a075fc8854fb22d7b889a4758c0ce2f49e09d98 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_1.json +eb70ff4116ca57e106b736ac47a044997c9ce3ad data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_10.json +b8dbbd559c04dfeedc8ad610bcb219584d6f5f77 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_11.json +ba84b7d1b37800e2c539e2479f1b12c620553fcd data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_12.json +a5f74918d8040c62ba5f84777b6c3fef9e31944f data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_13.json +ca2ae3ab46519590722f7f1c37dc385242f362ba data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_14.json +2b500a27deba6a38609ea400c190134e37201313 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_15.json +7c6d76c6e16b947c67617cb353f851e63219245a data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_16.json +a1b0ad4c240e00baba9592e7afa0d0d1b09ea72f data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_2.json +10d344af8f6135d77b62617733a14cfaa18e19f8 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_3.json +6683a377059ee830a82cfaecf7768b26760d989e data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_4.json +21c0480e41c24e65b325adfa71447fd70abb5cb7 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_5.json +cfe3a7db2ccf2a50f57a194e47ab89afabe03239 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_6.json +0f45a6452f97fab061a791c1d16332a368267b0e data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_7.json +a390e33573953e8f3d920f5d72112936fe042248 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_8.json +e00a09432b01a10664c6a507a6c595dec1d36725 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_9.json +a20abd4a9548906e588b51d60ea0151d665b6da6 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_1.json +75de1bf4b53a5c2db523bb6e0d861a125fb613d3 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_10.json +a099a7de0685c9ced82e3f29224d9b1db70a868c data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_11.json +02fe793cafcaae53591a75c621ea1a72bccb2097 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_12.json +7c1facbc00337991a5b6e3ff98b27fb006c54b8d data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_13.json +03b30fab5ffc74c65c3eb7d0fc5ffe92a218b04f data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_14.json +a7979ee0205fa19598573f11d169c5914df8211d data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_15.json +f70339ee80f8dc87ef62932accf646655ed24b56 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_16.json +5b7e220222a8c4ad9db4f02e8392b97e89184884 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_2.json +05b15db7347c0aab2bbb76389202398b74e32a7a data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_3.json +186d4b9001bc35f2887cc51dfc222bf657132064 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_4.json +3fa81b817ec12979066f7526ca3c1d208c573d38 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_5.json +566464c5fc800573b26f0ca96bb9cc2088bda5e4 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_6.json +db40088817c8450f90317c3882e205c792ef4de9 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_7.json +35d0f22041d0cf006423a13badd6d3d0e83a064f data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_8.json +2226e950ee46eec56ae7530e78270329936908d4 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_9.json +89c659ed575a318f9b4dca538bec34d7fd2e961b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_1.json +201894f46d7d40bb01e54623b15212a77fc626d4 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_10.json +35da15e616e9e0d5fff91c0b435236605d677edd data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_11.json +038aec9cbd92eaf37ddfc80bb2cbcee281f1364a data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_12.json +4b1476831d6c69176ed23bcfbdbb416768eb64d0 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_13.json +0189f990bf054c23d0b5e6a57c9fac6e6b60cd32 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_14.json +fa8541527ee876d0dc6378e6b2f7357c60080e7b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_15.json +4092b95e2d73e83b075178b6447569c4177ec9e6 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_16.json +04dbc4ce402e48ee48ff55cfd454ca213ecb5b36 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_2.json +d8547aed3b0fb455628bc44a9c45bc275d9fb322 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_3.json +812931e7dd23cee9c212e3886fbf4c920d7de14d data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_4.json +732a8a0a02677446b6a1c1a53e9f33edc6e8fdc1 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_5.json +77d6c75c63a90c1d21030ee54f42193a64afb500 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_6.json +da02ef46d4bdae3df62f8b415b716a100f6b786b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_7.json +592d42d6d22cbce65968945284732c06c67c59e4 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_8.json +9923ec15d0e2f52beb4bcf3d55faf69e1ec053d7 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_9.json +8b62f05d2dd0c1ccb37fcba82a9bb80752e37af9 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_1.json +aa246f6b4399e08da5eabde67299a941db6d93e5 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_10.json +c2589a182348afea7342567064377ea87afd7d4c data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_11.json +e16f325d6a8bffe3107f460903473837ecde7065 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_12.json +6f7df23a72c46c2ae774a4544cbc4a02456863d2 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_13.json +7a41b82ebd4a210e602a9352d282c874e756233c data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_14.json +85efeb3c226c9c61ce9c4729f26d8b1ca8c942fd data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_15.json +4dafdc3c21bdf654208d637bea17822e15b94242 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_16.json +10a17c1ca9b7285af3ca242473fcd10ea356d784 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_2.json +b00ec4a67436d0360131619f250056a197260d94 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_3.json +5775084c6a18e30889e6b15eeb076422299c37bd data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_4.json +61c786a4b6edcc11b2bf45fd0183aa8e7db2240e data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_5.json +e09e070dfd6ec48432faf45588f547ab968c5687 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_6.json +6b456c38db1f70a2a2a062b2fee132d9e87697f7 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_7.json +f59661395db584524d14258193f01c82d89914b0 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_8.json +5b853ea8a968c47f9daea6fbe9c7dab5d0c000ce data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_9.json +8ecfd4d16c9e70ad5dc90a401a8f1aa97cba38c7 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_1.json +1f826b2d858e37a2e1fab9f3b2fbf83f6d05008b data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_10.json +c39b0fd921ff17ecf7b7bb148e2fc14c3a1c3a68 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_11.json +3c7592ca9cbd721e4cf6de1b385d9c784bec1395 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_12.json +0f8b9d0fa290b883439d724352eb88701531f71d data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_13.json +548fb1b9067e5ce4bb8afa8850089db917fd98a8 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_14.json +56c1d76c4e253fccf7f8f08bcc9eadde5497a29b data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_15.json +e6e0623b941cc07ac6bfcdb45328b8e94fa987af data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_16.json +9a08275e5f98b10bba37976d46c5118355ec5207 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_2.json +9a60fac30595688938e478fc81683e661ba23add data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_3.json +71d5b5c8a7bf44b213dc41b118cbdc443c4509bf data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_4.json +a951717b1c32a2a4a4f0df5c66f4e66252d134ce data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_5.json +345b754add8150a781703c837d466ac115614229 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_6.json +e0c704c3576ac327c25ffc2349af868e00407f7d data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_7.json +617d99dacd20f57c88b74d06f4594bbe7dc774d2 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_8.json +d17775c55e1a91933fa6ea07c6c5b1a84aa6cb31 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_9.json +e0abb16ca86e35d0b532c5d3a56dde0dd93e8fb5 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_1.json +e9fe751bde9c676dbc6540c608c7d206bd222eb6 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_10.json +03ecea921a2066adeb4a2a4087609dc1b43d543e data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_11.json +f4745fefae33c5aaba5dc66138c8875ed660e66e data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_12.json +6ece7254d9c09277be5a66742cfb7baa9d289b9c data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_13.json +441c8df2e4bdf1541714a9a063ec42dc1a8ba108 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_14.json +25cc3bd4e68c2c2dd0d046288686486547839d84 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_15.json +2b11e0f3f70eab8b9b5aedc6aaa94798e0ea1edc data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_16.json +a3f22881220b0ef034ab8af6b69af05bbbcfd2f7 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_2.json +b7c3cab99222a7574bc07d6abc195d2b728c6be9 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_3.json +2b1403d39d77e12707f349e57f436d2008746918 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_4.json +74ac8068deb68ec3ae076ba3cae6731a5abe4ce0 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_5.json +4a9359d9a9d34bba3d4d30b2ba682720ff4f235c data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_6.json +6f61736f65229b7e05740126a887717dff0ed035 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_7.json +1a26f4863d1c13621671d25aea2f35b741eeb928 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_8.json +a47ce533454acb6f2690e96f59832ed67383ef73 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_9.json +277e2c0a173b9a513b089ff306bc4c34ccee19b2 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_1.json +af292fa7e01144f6b8ed50a6495cc2245268b089 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_10.json +31c372f337b916ea79e084946226f136eb7219f2 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_11.json +40a5de901bfeb93a4ba923fdd25046f71f5376f7 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_12.json +79269cd4cd51537cb0e744282c5ba2ffb55deb59 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_13.json +2474b9109f3bf93614b45635d7492d940848b1f1 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_14.json +538cf71b3fecd388477434a6ceff65c4873bb905 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_15.json +02c8318da22629192e582887ecea88c613dac504 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_16.json +f0908374789712eb4712016f68ad0e80cb61814d data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_2.json +c968b6e66360657e152b12bf971a7bfea4a55289 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_3.json +22fcf172227fd5fbf55f57b8ca0de702a549acb5 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_4.json +7a0f7fd1ad2e790a2dc0acca25c9f0695478557a data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_5.json +88e6b459e8a60a5c0cabbf2cf78ec811e6b88eb6 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_6.json +bd119415e3488f7aee7fa79b9619eaf6fd782e91 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_7.json +1312d128464c7742a2ba23677c509887df1d5b1c data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_8.json +f64f0f43e3e7450003945c142463b61a136a7c32 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_9.json +39e76bec04b0b1f5c215b23c861b94586c4415c3 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_1.json +ce5836306870675fdc87146cd22e52ec7ee871d4 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_10.json +69c76ca4b30827cfeedd04db365986797b59764d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_11.json +d9ec9e5e9744cc1f20292494bb4010d89e34eab5 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_12.json +cdc7f901725a504be64f8569f7420de830ee083b data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_13.json +1df07ba643900026d79550c187372d7b991e5c3d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_14.json +83b73c48db76a0b4672d745f375dcd6c2a5febe6 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_15.json +46843551fcc5c0be08be05e287dd03e7fc963e77 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_16.json +b2f1528da9aad7620bb37e4b2d725bddd6c3091c data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_2.json +be24e4c8062e7dbd8b64517c40bc71db114779f7 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_3.json +54f02a3c0f17bb4dab44c157004295563862b536 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_4.json +8eb0666b97dfc3ff57aa2646a07ba8082eca3a7f data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_5.json +f0222ccc2e60ebe981f82d3e8740ae4804ec6f0e data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_6.json +4ef80e67b19792451fcdb1fd92e60963494dca63 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_7.json +1c1cb61bc4f9655ac075db6f84907def0e4c477d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_8.json +18dc48698802ccce5223f80ec92b389258d3d087 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_9.json +10d1558cdff2e4536283d28b5ccbedce65b37b58 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_1.json +76fd7b441c62e0549b0121b9a788bb0c21edd6cf data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_10.json +3552ac4bfdd7b780d0d12d7685bc9ae623bf5565 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_11.json +5751d42a089d27fc7fd79a8deb4dbf27e033a855 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_12.json +86b9a0a823950d65979598b6b839f6f8b35f8553 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_13.json +e9150765ccc75a37ee996bdebfc7be3753e693c8 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_14.json +28948b1a0e8777d543018002abbce85816543023 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_15.json +529e9b471586256805c658aa0952da373a7ec60a data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_16.json +b097681839cb1e70a8b44af50de63a50067d154b data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_2.json +fb8beae4dfc0bd6863200b5556f9c040d0b77892 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_3.json +a617242d1ac4bab49694f3fc99841fc40f8bfba5 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_4.json +6a86687d31ce35eb8c1abf60ef557eab3cde6421 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_5.json +495b0553efdeacde37aa87e6a08d1751a60f10da data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_6.json +8f8d1d7e9e069adc4c347cac2f69682ead9e5c6d data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_7.json +21c8765a349ce0b9d0a8c885521fc9d86a893a34 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_8.json +b6c083534b7dbc51f5a10214a75a901d2b2e691c data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_9.json +fdc391a54d8f6971c25683f87b24ad2a1595ee82 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_1.json +73791d7a78b25fe1c1547f9c9d8afadd7d004fae data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_10.json +65495b3db392fd995fda51e285794503562537e9 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_11.json +6e03d5a7bbc27672c57ffecd405c09b8e6b0e882 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_12.json +7c0764136c3c21979bd29b4d4bda3f33ed7514a4 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_13.json +57e0039616231fefefae816621c5cb988afcd691 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_14.json +552164e53f0e1be9d67611307086aeaf67ea397e data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_15.json +1ab7224840692ac6c46bfc30bef66b7d49213258 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_16.json +308b54db315c0668aff840e1142ec241ced8ecda data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_2.json +db5b946fe10c06babfeaed9cf222dc98281dbbee data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_3.json +07802b7407bced00288f8d7184424ef588720cc3 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_4.json +994c853be11fc1034fcf19804e40f6295ce32dee data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_5.json +692d2b162e478d22cedc81ec6aa9c94492103b3d data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_6.json +9cd7ff346605bb957817b1be266697fa691c4a94 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_7.json +641b0f603b31af13648b0cc4e70a677f5bc7343c data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_8.json +5f0008d0d89df718eba196b69ca141633db69b35 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_9.json +9284befd1c2b3bae90923e5f176cd65d2454c6f6 data/cosmere/advancements/recipes/misc/lerasium_ingot.json +7742bf30ccc675a52ee78ffe8d3aaf9bb9167e86 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_1.json +6682b415c68aca3bd7af8f2eb138be899f557fd2 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_10.json +2e131fef14edcf0ef5589ffeb209a3ea91587d2e data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_11.json +e747e05b6686e116a54afe21e7d2bfc7f94461f7 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_12.json +7e3217e0c7db7f3017fb3e9a67248a1a16dbb3f2 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_13.json +ae8dd167facb1a501f805b785c7288a276820be0 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_14.json +d0bcd447c88d9a3fc3069afb92efcd73ce2e70ff data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_15.json +37e77afda748fbd9dcf67510c2bb2fd1d0e1f427 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_16.json +54c2b872b70535120bf7f4708e894938cd97489b data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_2.json +599a92871bd4b610558b37cb349176157b737d69 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_3.json +6363d84727a25472da2863d3c31a6ffd0178c3b6 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_4.json +d993d0acc28d500875220bc95ee26b357a72755e data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_5.json +e8666f41677734cf3258c67872050027cb54f4f8 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_6.json +f207e0d4f87bbf221186683d2a944bdd6de0766d data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_7.json +936afebf3d1b018726b9dcd635a788aeb5fadab5 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_8.json +4ca544c71f613be39a4a6a8c6bfb6d7fadc793cb data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_9.json +cf0209d8f4caca6e982d6d132b56e6c3b8fd6b4b data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_1.json +af0ccb6a847f82ff7b6aacf06cdb063a57f8a44b data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_10.json +c48e14be6989156a19cd6f2d72439a880e1e5634 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_11.json +b2255a6df614ce81d0ad30ca702606dbc0c673e8 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_12.json +731b4dc71294db700dd6d804bc1721ad80ddae93 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_13.json +d261c56f1f2c88b0c817ab286c36b43f00df1d0c data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_14.json +ea357772d27fc4da01a85f3f68539d3d94387170 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_15.json +9d75faa6abf3a2125291499f7473b59223585184 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_16.json +bcac2ef2a59be61d1b043950b8d613f455ea7018 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_2.json +039dc6bee8708befc7bcbfaec5ebdd78d831ab5c data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_3.json +97308874f454cdee98c5858a469a2a57acb783cd data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_4.json +f22aab5a20c6bd64c92462577be29f8d6f7459b4 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_5.json +ef45e56394a01adf35553221667ec3d9377ca24f data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_6.json +fa7179987d8c0e53dc2d60b9d510750b62be3a34 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_7.json +24647f42ed4abd0e02a25a2488044e7a4a675810 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_8.json +8a714b31551326c43da241f4d87a27861d7dace8 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_9.json +57df8df3d9576a5a26a69f1becde58654acdb201 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_1.json +2e3dc8b6d4c71df4787056c0417f8c71805e7546 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_10.json +11b658bbc68fde81980e26decd5bc9608a0fffbb data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_11.json +a11c30bf3cd042a621d61a2cb0a98d6a29a5cde7 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_12.json +770e120590b46bf55a181cb681edd89bec95f01b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_13.json +7fd7af49ff3cdba087a4706c05eefba1b83fc723 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_14.json +5e37904a5dfbbb6ced67ac0d89688c9c88be621f data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_15.json +337b53b8af5ff482c620e1cd87d0d3bd7533439b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_16.json +24ff4902ba7ef9027a9b8630a66c31256a18de57 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_2.json +1fa68478619396ce8acc38e93b0003bbea74295f data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_3.json +1f839f121051193494def564a4524e3a4bb70758 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_4.json +6478054a2e98fa1a6a1cfdb785f6fcb9b5d6680b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_5.json +2de4c390e17941889ffad9718f13e97a544ee14c data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_6.json +0d4b083b70fd163d62a93658b81aea6f64a6d4d3 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_7.json +c0bb369cdfd2c3d544427c636df6e1f0426cfefc data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_8.json +4c4841dc3f76f23e10a3d3bb4c2e2e471b812e04 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_9.json +0a1456bd65af5cd8d7b3b74709a90afae6b6d4a8 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_1.json +4f71ec0de8f3fadcc300a905f281e469288319bc data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_10.json +6f7800692e1be8aaee871ff08532daea3def04f3 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_11.json +f0b3d3bdc0e05492f5cbaf47268a65bf273e5845 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_12.json +6b0a87d933ae19b846ef9528a17370bbe67c5b04 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_13.json +2058c8f7bad9fd9a0212d77fd8d1fbf889f06c0b data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_14.json +0413e657389259a8a222347cda797fedb2b3e95e data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_15.json +4c8b7cd34e85c21f61bda70ca63b43c9b4ec65a2 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_16.json +aedbedf908c80be12623dcd9bd390654fb90cf72 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_2.json +fd71197910507052aebbd2f63f0056b8f71c2b4a data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_3.json +80d9dd902b6ce9e217cdc7e0f008d33fddba6abe data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_4.json +3fb1810d74406aa0894a64b57d5669cc39b916f3 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_5.json +d5dfa4bc148ac583a916258586a9a4baaf9122c7 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_6.json +474e9b5b0aaa22a3ee56a9d2f0211e1aa1ab5a5b data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_7.json +60421e7a8a02b3d01e1bf5bdac5e282cd6427c0e data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_8.json +1a9916bd0ed400b63c2eeb0078757c053d916bb9 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_9.json +4de1b470fc6ae11dc8a26e53c87d5c913872ef72 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_1.json +c831dda0915d6b957a41d36f295189cdd6d1800f data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_10.json +c71c31b59ddc3786e8d8604c3b7e275d7a591dd5 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_11.json +af936f5104e242adc58ee9c1dbdff709329d57be data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_12.json +e97dd34392f5b981dd1181bed22af8a899d65066 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_13.json +faa0498a5124a4410804ff492b59730670a68ebb data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_14.json +f18b699feeb6ab433dc31f36792f1b8531108b3b data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_15.json +b0a7d38d3e7a7c0f4c0aa9dc5306163b18295b44 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_16.json +f85cbcd0c346c6c5312da9a220b58ca48142ff33 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_2.json +1a756b31357f18b59d9d535a359ef8613b60b86b data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_3.json +1de103ad92ffeb3b952e1b253c0c6a86e7a0d36d data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_4.json +6c30fdb52356207f48477e10313a64906573a66c data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_5.json +0f0977881f911c0ebbac76cb1a53f74ed1e9a144 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_6.json +25ede8039a8940b9c2eff1d9e5bbe3c9c0ac0617 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_7.json +3bf0847379d8aa31454927d996a43a9fdd5236dd data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_8.json +8494590bc77ed4824e52914965300fbc1242a7aa data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_9.json +cd77ca84d66e54dffcde79b4dbe8794ed1dff9a3 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_1.json +54b1d820917456acca6f4970fa5cdebfc528d907 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_10.json +6f2fcabdd259e4d9578a7fcddf5b4bf3f70c8bd0 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_11.json +8aa9d3fb2c0890fc3309d13863b0b0ac2d01112e data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_12.json +520418e241c90f7152128aa29183ace07e6dbe6b data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_13.json +5bf53731eafa71983ed03fff66d3a86d1688207a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_14.json +e97b4a16ee482ed3546398fd310e837b96180fb5 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_15.json +f8ab9b36c62f44b5130b79f764719aae353c2472 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_16.json +6a5dfa5a05ecdb059de2f2567114a76358860888 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_2.json +383d0ed46677030f7a028cb1864c3e35bad47f9d data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_3.json +d528da914149697d959bbc031d3116bad5f061de data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_4.json +79ad1c1a078e4d00f4aec1e633d643066b5f8c54 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_5.json +ba12c105bc7c0b02615559da2f0eb303addf07f5 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_6.json +bba9a2fa218e450e76c48986c24c5826b7b1a84a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_7.json +dac67b9041e417a11af1166a37c20183d8f5200a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_8.json +14ec53b75b621ddbed4bd175e8b77bd3f8fb4d78 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_9.json +91613bdb592c6677a75ba74aba2d66a996c7dcf5 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_1.json +b02a6efb7fef8a453d42cab7fd487fd5681d3e5d data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_10.json +1285c8840600ef52454882bb613bd7adc0d9f6bc data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_11.json +e4c4001f143fb82ed5bccebef2b79830283d9ae4 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_12.json +12bcf72e93bc719e2f2c3708f98480c3a04e401d data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_13.json +340ef8c1a4e6581c833886c88da628a117912f63 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_14.json +fc430cc4e0c577fd3da15353235f5baf2cb66d1b data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_15.json +392b2502eadbcd250c7468558f79f5760d140332 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_16.json +3f00432851cfc9ccf0fb2962f980ce1eeb14670b data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_2.json +f855d96ca5246474eb497cfc1163ba92679276fa data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_3.json +e00becf5f5d656e9f23925ed4450dcd3c6ea4c6f data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_4.json +4227215557bcf2e59e57ace601ddaa2fc26a1a9f data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_5.json +d5b9daf45ba7e2b39b01130ecac66e1dde017b8e data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_6.json +a0e597597c0fc64e80ddf9d8c8aa2b6d14471997 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_7.json +5d6946c5d633e763a6535c8f322d55fdcf9d480e data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_8.json +6f37e7acf045630551a0fb2d6c527d99b592496a data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_9.json +277ff0b95567713e2e85c77d2878346030bb950e data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_1.json +75c6f8edb27c0f4e09b25348e9950a388b85953d data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_10.json +5c5439822c8bb35022c03661ec9e39d4660fa7a1 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_11.json +c72c458b328ce5769d22edb595b05cfbcacbf17e data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_12.json +7da5d9e1ffcaf5534f74d18063d5e4db2e9c2c3b data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_13.json +27090756256522b016f995718a9db38c8104213d data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_14.json +e9cce962343dff16ec0258bf13c81430fb9dc5f1 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_15.json +45b6c1f28299fb1e5ac7680036f2baaab5f1f187 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_16.json +176e2c32c59ab7b46e68ce4a83034e4e61590554 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_2.json +91573264505bef72f6f0090473198264949385ef data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_3.json +4cd0f287b00bb699b36088eb747abb72e2a01289 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_4.json +94b93277309a5623f4d79fd0a4ef10bd46d973dd data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_5.json +7b0380d48293671a9acef8fc894f5dadf99fc7a4 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_6.json +4d12f101c455000b81b4ccfd39042e2e6874f399 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_7.json +0d52765de141e2910225d327a686f869365d1fe8 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_8.json +b54cdae6c649ea2a10afacdc09341cead1537a4a data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_9.json +378d0f558c8a789149da1d7f94bf3c7cacb59707 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_1.json +65349ef0e61e93add60d563f1e2eabfc2377dbc2 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_10.json +ac89690e23cb55088e9ddce076e2571a45252c12 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_11.json +4fc18ff4278a13dc5a50b02ffdfd40517bf88422 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_12.json +938509189156ed763c976d3446a129b2305c2f63 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_13.json +b2349a4cba79b6858bd261041565c2c1ba7d859c data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_14.json +d354bbb65464230e8547f6d0a4b71ef38b70edc2 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_15.json +5daa300141f167f8f279d639f4123da433aa9f72 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_16.json +fb98e7e9512c772df462eb3a4b8b44fac4d6d43d data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_2.json +36b55643c840f3a789ee35d7127aedd400af705e data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_3.json +29a3b4d4c1c4930f2bb7626251b4b64c1a63d6c3 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_4.json +34280d116b504fdb4ee2a0ab6364562faa25d7a0 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_5.json +12039d2ac73a53ff55d4c8d73fe1354d39d1b60f data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_6.json +60176ac2b0d61cc67bff63cd8dfbc2b06b106e4e data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_7.json +3984cd60147f704670dad4b4fd7978690033aa76 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_8.json +155c7e2cbb6508cf287b763c3d63223c321cdd1a data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_9.json 08b7debec020216a21c67912eeb8cfc7fdddc3c2 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json 8110c799bbb2a42d7921bef97593bf5c47f32416 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json 6b963b370cd777d523d2d29087b4ffafbf3e9d66 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -206,7 +750,7 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json -a01c4b09c3aee28edd3d338701f80adef04f4ed5 data/cosmere/recipes/atium_ingot.json +3155cfd98caeacb52d603df6e81a487de4b354f2 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -287,7 +831,7 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json -8396175c7cdac3962b4e3e708aa76f50969d3598 data/cosmere/recipes/harmonium_ingot.json +8fcfa2862627e0ac91a8556240985d260b946029 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -296,10 +840,554 @@ a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_fro cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +e42aa4a681e24370baa4f55df8f71b67219ab86e data/cosmere/recipes/lerasatium_aluminum_alloy_1.json +fa006e2275cde000f3a079e7a149bcc77b62a993 data/cosmere/recipes/lerasatium_aluminum_alloy_10.json +f07a257003e78d624df298e4a1295907a2dc6499 data/cosmere/recipes/lerasatium_aluminum_alloy_11.json +08fcd8f5bdf2dca2040a0af19d48f2e50ce2f7a1 data/cosmere/recipes/lerasatium_aluminum_alloy_12.json +400e0fc192b3af346dd62ef46cef0420e3aa38a4 data/cosmere/recipes/lerasatium_aluminum_alloy_13.json +06ead81aa9a143aadf7980b4f9c7cb00a127dd4e data/cosmere/recipes/lerasatium_aluminum_alloy_14.json +7467473e355c279f5c8ce98f0afa870060238fa9 data/cosmere/recipes/lerasatium_aluminum_alloy_15.json +54d438cac32e8698d5c590193c698b92c48579eb data/cosmere/recipes/lerasatium_aluminum_alloy_16.json +5b6467ac7c474de9fa5a64f4e3d7896a15c110c0 data/cosmere/recipes/lerasatium_aluminum_alloy_2.json +f5fdb08fa13a70ade1332b764fb6fd23ce992d68 data/cosmere/recipes/lerasatium_aluminum_alloy_3.json +eaeecc42108957d9f1338b20104cf0fb06525d75 data/cosmere/recipes/lerasatium_aluminum_alloy_4.json +0bb61df3c6e2d75b353a5611147ec6d6f7dc4fb3 data/cosmere/recipes/lerasatium_aluminum_alloy_5.json +56f7f559b270976b814d4bf5db84cefd46035aa6 data/cosmere/recipes/lerasatium_aluminum_alloy_6.json +c5134605f5c2a11e710c57fc92aabc13fe24b438 data/cosmere/recipes/lerasatium_aluminum_alloy_7.json +231b5718090ff384ece8a9790301f87911dbdd03 data/cosmere/recipes/lerasatium_aluminum_alloy_8.json +4fac76e6677ae021ee57a34ba440cab00868c20a data/cosmere/recipes/lerasatium_aluminum_alloy_9.json +5149ec118060e106f1c78b597b258e1451ef9b70 data/cosmere/recipes/lerasatium_bendalloy_alloy_1.json +f1421bf0df4b847463488ba5107dcf2ad636aad6 data/cosmere/recipes/lerasatium_bendalloy_alloy_10.json +e9c699d5b834662e14561086479dae9b5631e88d data/cosmere/recipes/lerasatium_bendalloy_alloy_11.json +ecaacad0159b94e41c34d63a5bc44da92910f8e6 data/cosmere/recipes/lerasatium_bendalloy_alloy_12.json +fba252c77ba932e87c3632759ef83765ee63c3ca data/cosmere/recipes/lerasatium_bendalloy_alloy_13.json +f65619f27bf637b2245c93244e6bddb4bf403713 data/cosmere/recipes/lerasatium_bendalloy_alloy_14.json +b3ae6f41f0266940fd6cdab3b4c56c272a2296c0 data/cosmere/recipes/lerasatium_bendalloy_alloy_15.json +847478d6ef76656a51e33357c8194d74f6380d28 data/cosmere/recipes/lerasatium_bendalloy_alloy_16.json +b6681212deb51665c5d8d4ccb04f2ade6685ad87 data/cosmere/recipes/lerasatium_bendalloy_alloy_2.json +45ad198b42cea42cc9ee25bfa8cea2ca74f58540 data/cosmere/recipes/lerasatium_bendalloy_alloy_3.json +8779fd37dc7d2bdf4f912de635be7e227862b50f data/cosmere/recipes/lerasatium_bendalloy_alloy_4.json +0e3e968a8d5a9e63abf720445b1f4ddaa81b61cd data/cosmere/recipes/lerasatium_bendalloy_alloy_5.json +141c37005da47c234f62acf50edb572ecea2e464 data/cosmere/recipes/lerasatium_bendalloy_alloy_6.json +b91e133144fadff772513ef2f1fe2a0036b47f37 data/cosmere/recipes/lerasatium_bendalloy_alloy_7.json +75fdad2737f4068d9891d5bab2de2b48306073cd data/cosmere/recipes/lerasatium_bendalloy_alloy_8.json +a591e9d1e5876f8dc73819c4f0bf1cd6a3cb2383 data/cosmere/recipes/lerasatium_bendalloy_alloy_9.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -5434dea0787237fdd04c2980e96432bdb11c5648 data/cosmere/recipes/lerasatium_ingot.json +159d301af908a999f8b074bb855352e7f2997a4d data/cosmere/recipes/lerasatium_brass_alloy_1.json +b98be440766d9875dd60ee2bc5c9bd059c140339 data/cosmere/recipes/lerasatium_brass_alloy_10.json +1e230b3b5858cf1f50891969a8ea2b47190757ac data/cosmere/recipes/lerasatium_brass_alloy_11.json +f74793ca21d0ffaaba5d134bdb611e509bd956e5 data/cosmere/recipes/lerasatium_brass_alloy_12.json +ec21e63e3aabd387bce9cf2fee0c15959d5e36da data/cosmere/recipes/lerasatium_brass_alloy_13.json +98aec3bd3f17c9f838bd4b47c61327d3cc7fb151 data/cosmere/recipes/lerasatium_brass_alloy_14.json +4b4ab44b69eeaadedc6d195b60e15731d37f99e1 data/cosmere/recipes/lerasatium_brass_alloy_15.json +92c70c15c42bdd1236b9b94e11aa6e388444a021 data/cosmere/recipes/lerasatium_brass_alloy_16.json +1730d63ca0a0f1ec3adb4d5ad67be116d403fdfb data/cosmere/recipes/lerasatium_brass_alloy_2.json +8b7d1f9eeb46c6b92ba02d8071a90553dd476b02 data/cosmere/recipes/lerasatium_brass_alloy_3.json +e52bf11859207d89360f547fb804c94aad669310 data/cosmere/recipes/lerasatium_brass_alloy_4.json +39fb13647615461262f8036dc7860cc1657a4d68 data/cosmere/recipes/lerasatium_brass_alloy_5.json +1ea069209d9cd4bee93653892ea0382e106ccafa data/cosmere/recipes/lerasatium_brass_alloy_6.json +076d152a39c140d83515cfe82fa3d92cf7465ffe data/cosmere/recipes/lerasatium_brass_alloy_7.json +950e5813b30f9f952a4bd1bdea78b11af817ba02 data/cosmere/recipes/lerasatium_brass_alloy_8.json +3e1ba8b37714f16bf6b4ceb7b0d000130b90ff8d data/cosmere/recipes/lerasatium_brass_alloy_9.json +35d52674558b6554c3004693bbb3e6a7a9f134a4 data/cosmere/recipes/lerasatium_bronze_alloy_1.json +b4d1a5db09f78eed29d3851ccf5ba5219987852b data/cosmere/recipes/lerasatium_bronze_alloy_10.json +2c2b5bc6428c8f30e471c4dc9accecb465ea8a82 data/cosmere/recipes/lerasatium_bronze_alloy_11.json +bffab085dd35c8a2580854f7ab2ee04636a4789c data/cosmere/recipes/lerasatium_bronze_alloy_12.json +2d4f7a09b7cdbc0a1c6086d59aa917bc26a2abbf data/cosmere/recipes/lerasatium_bronze_alloy_13.json +781278c742e3839c63f42c57a5118cda52dd49a4 data/cosmere/recipes/lerasatium_bronze_alloy_14.json +1cf4d21a18334f9a862daa19e3e3f790dab953c9 data/cosmere/recipes/lerasatium_bronze_alloy_15.json +4b00bd110dbbdee946b6f9ea92004153adc960fa data/cosmere/recipes/lerasatium_bronze_alloy_16.json +ff7a348f3c18c6279793cd37c76057d4c144e4d5 data/cosmere/recipes/lerasatium_bronze_alloy_2.json +40892b1b58a72af809b665d2bf645ab767a286f2 data/cosmere/recipes/lerasatium_bronze_alloy_3.json +11f9f4f1b590a9ac228021e030f4e3cb8db95869 data/cosmere/recipes/lerasatium_bronze_alloy_4.json +32784655bbd6ff9113753c04e38e45dc0c1d1b60 data/cosmere/recipes/lerasatium_bronze_alloy_5.json +0ebb1f743c1bc8d74b09d5fa73c0ccc323164b33 data/cosmere/recipes/lerasatium_bronze_alloy_6.json +5a860b39a6edbbfa9e90771d9ade6b7c4d368fcd data/cosmere/recipes/lerasatium_bronze_alloy_7.json +de2f947009417424d1e0acbea559780caf63223e data/cosmere/recipes/lerasatium_bronze_alloy_8.json +adf10441d812c3f7fd72dde3a8571c5a5458de4c data/cosmere/recipes/lerasatium_bronze_alloy_9.json +e378e8f7cdc40f438153ab50251f043049646c6c data/cosmere/recipes/lerasatium_cadmium_alloy_1.json +dd29883e04d295b66dcdf67b275f37af3f0804c7 data/cosmere/recipes/lerasatium_cadmium_alloy_10.json +7018f40f2c57dd4bfc4cf57059767a1fa97fb5f4 data/cosmere/recipes/lerasatium_cadmium_alloy_11.json +8322eeb3f19d461eb95d6dd79a5a2197160d7181 data/cosmere/recipes/lerasatium_cadmium_alloy_12.json +d3aa69a1f84a0599141207dc139de0ab3f272027 data/cosmere/recipes/lerasatium_cadmium_alloy_13.json +30e015de85af635886743fd1927e0ef0edcf7aa6 data/cosmere/recipes/lerasatium_cadmium_alloy_14.json +3c71fdbf4d41d218d9159a8a996c608ff2a9809a data/cosmere/recipes/lerasatium_cadmium_alloy_15.json +3ccc7ef69f0e511ce6604229eb2793171df58e87 data/cosmere/recipes/lerasatium_cadmium_alloy_16.json +a40dc78fdbf6b83635071fc7633f6cea251844db data/cosmere/recipes/lerasatium_cadmium_alloy_2.json +808772c961e7350641c041ff5f3044d60462c30e data/cosmere/recipes/lerasatium_cadmium_alloy_3.json +c62a379376a549ec0fd69b147b1f8936105c0106 data/cosmere/recipes/lerasatium_cadmium_alloy_4.json +caaf0fb56927850c00ada8db0226497a10111b3c data/cosmere/recipes/lerasatium_cadmium_alloy_5.json +9f41ec07a37671d52dc241733631816e06f8a8cb data/cosmere/recipes/lerasatium_cadmium_alloy_6.json +c9c4a5a6bc9f36cde547d4a44ad755f52bbda3d6 data/cosmere/recipes/lerasatium_cadmium_alloy_7.json +f89b9f388e703dcbc2e00120ff1f3d1247bd218b data/cosmere/recipes/lerasatium_cadmium_alloy_8.json +b8cd2ae6e2af895ff24a231c8345d5f2c0d7e27a data/cosmere/recipes/lerasatium_cadmium_alloy_9.json +feeba4b79f66f16d80a55ee48337bdad2b20f040 data/cosmere/recipes/lerasatium_chromium_alloy_1.json +66659ec04aab2007d87c94940bba7c2b74522147 data/cosmere/recipes/lerasatium_chromium_alloy_10.json +5ce67ca88f60047d62608aa0ff39c58e797fda9f data/cosmere/recipes/lerasatium_chromium_alloy_11.json +33955d4a6ec6ae502a95620438614a6e352a2d83 data/cosmere/recipes/lerasatium_chromium_alloy_12.json +50490de88ca08a29487533d013898f65d5611e53 data/cosmere/recipes/lerasatium_chromium_alloy_13.json +2ae485b8a945bce12bfe0f3a123f864a32b6b13c data/cosmere/recipes/lerasatium_chromium_alloy_14.json +15a5b1002a90110c3f8258c1b9a712ce86170321 data/cosmere/recipes/lerasatium_chromium_alloy_15.json +ab5745ea8758f86b9f8a7a6fa58de804fce6ec76 data/cosmere/recipes/lerasatium_chromium_alloy_16.json +80c26bb520ba031ceedc12ae99c5714952e833ad data/cosmere/recipes/lerasatium_chromium_alloy_2.json +d24929ddec1b145bc9e5a694f9b05a1c9a3028dc data/cosmere/recipes/lerasatium_chromium_alloy_3.json +271eadcbe50c86994a6a3a810e847aaafbb685d0 data/cosmere/recipes/lerasatium_chromium_alloy_4.json +bdcbb91f59d1a92ead75b132e857807b7c6c75e5 data/cosmere/recipes/lerasatium_chromium_alloy_5.json +4727b5f8ce63d09a2090756d016b80db958c7d80 data/cosmere/recipes/lerasatium_chromium_alloy_6.json +9bc3c11a8477b7bf80e52b31386f40dd329ce51c data/cosmere/recipes/lerasatium_chromium_alloy_7.json +1a828f87a507806c47c186792a4dbb157dcebda1 data/cosmere/recipes/lerasatium_chromium_alloy_8.json +8a43bc118cce2785055478926998f857b2a108f2 data/cosmere/recipes/lerasatium_chromium_alloy_9.json +0ecb8bd6b14ce913dafb4f31aedc0110209b6437 data/cosmere/recipes/lerasatium_duralumin_alloy_1.json +c12e371cf6a671ac535e55715fd5964acfa1d125 data/cosmere/recipes/lerasatium_duralumin_alloy_10.json +3fc7051be7cfad68b60dc194dfac963f8589e5ef data/cosmere/recipes/lerasatium_duralumin_alloy_11.json +77d85edce12c010eaf1dcdff2889516c00c79ee9 data/cosmere/recipes/lerasatium_duralumin_alloy_12.json +58b94d80410305df9e114ea6474bf103dc3d2924 data/cosmere/recipes/lerasatium_duralumin_alloy_13.json +4639b07eab3e452be6aa276239a2e07552037c96 data/cosmere/recipes/lerasatium_duralumin_alloy_14.json +a8d712e6087d29d8e6f9fe773781e5e47db5ba6d data/cosmere/recipes/lerasatium_duralumin_alloy_15.json +3a76079a1d2e7177dc5ac8d50ccee342cc4f7414 data/cosmere/recipes/lerasatium_duralumin_alloy_16.json +407a1d926bc4afa8f46df8be5ea8cdae2729deeb data/cosmere/recipes/lerasatium_duralumin_alloy_2.json +71f9ada57b36f8f0f366e981731bab4e22dcd9b8 data/cosmere/recipes/lerasatium_duralumin_alloy_3.json +165f1b2ce047c9dfa4d51f231d53f372f41dde99 data/cosmere/recipes/lerasatium_duralumin_alloy_4.json +f1825daec9a435cde403a4f32c4843908fc4e791 data/cosmere/recipes/lerasatium_duralumin_alloy_5.json +28fa28dbb88ee4cbb56a7f3cb30eea594c65dffe data/cosmere/recipes/lerasatium_duralumin_alloy_6.json +619beb4af76c720211fcc1bbecfa7c4508d46d18 data/cosmere/recipes/lerasatium_duralumin_alloy_7.json +eb774c98375f12a1e46c203809411241690af334 data/cosmere/recipes/lerasatium_duralumin_alloy_8.json +60dbf3e1d99739b305f80c88d9c17c6d10901696 data/cosmere/recipes/lerasatium_duralumin_alloy_9.json +57963f21f052f129841a0e90044aa6ddb4a16f05 data/cosmere/recipes/lerasatium_electrum_alloy_1.json +486ba74e68e355536b612eb71b65013a4f262fa0 data/cosmere/recipes/lerasatium_electrum_alloy_10.json +2d719acf43a3f9dc412464844c88ea1869fb307a data/cosmere/recipes/lerasatium_electrum_alloy_11.json +0f798883ffa1beb5c1c7b11b18cd562f7c560980 data/cosmere/recipes/lerasatium_electrum_alloy_12.json +959a7469924b69b4dc537ab9f41fad391fdc7764 data/cosmere/recipes/lerasatium_electrum_alloy_13.json +e09d0f1045e1daec994d47c166e313f666a9bf48 data/cosmere/recipes/lerasatium_electrum_alloy_14.json +25fa4e34fc30387a14239f11bac747c18a68bfb7 data/cosmere/recipes/lerasatium_electrum_alloy_15.json +b5b4ed3c0a260b450989e55201e6e55768495eab data/cosmere/recipes/lerasatium_electrum_alloy_16.json +369d6ac7d55bea01fd49de7520ede894e6a8247c data/cosmere/recipes/lerasatium_electrum_alloy_2.json +a49fd5eb97f8620d85b19e32fe0d6777a9f52511 data/cosmere/recipes/lerasatium_electrum_alloy_3.json +f481c2a41250dc4bea42589a278943b53d0be8a1 data/cosmere/recipes/lerasatium_electrum_alloy_4.json +51aa6b40c81ec5376b242d2c546120f84e7f5256 data/cosmere/recipes/lerasatium_electrum_alloy_5.json +c754c8adf9e29207ba2dbcab84e22eb00b722af0 data/cosmere/recipes/lerasatium_electrum_alloy_6.json +569c5fd7c009b7552fa11f8ee075da10acc55e8f data/cosmere/recipes/lerasatium_electrum_alloy_7.json +59b23da0139f19df16e981c0c514cf91c51da180 data/cosmere/recipes/lerasatium_electrum_alloy_8.json +9a2b7232012adbb6e8ccce3b230079f92132a5dc data/cosmere/recipes/lerasatium_electrum_alloy_9.json +db4272d9b763609ba79a2ea4d7fbc0adacd269f2 data/cosmere/recipes/lerasatium_ingot.json +e1b7d9f6de850519d676f52f0d5586e240f58473 data/cosmere/recipes/lerasatium_lead_alloy_1.json +bc017301393a2ebe71fe500bcb0bb098934d0314 data/cosmere/recipes/lerasatium_lead_alloy_10.json +02d234f2584ff929eb6c3f83546b7d48b07ea206 data/cosmere/recipes/lerasatium_lead_alloy_11.json +9cfc6a67cf6cb96725f5d8e9679c3940b00468f7 data/cosmere/recipes/lerasatium_lead_alloy_12.json +42f90e14903deb04c8079bc83026baf119384b7a data/cosmere/recipes/lerasatium_lead_alloy_13.json +4f509debd88415040da0c9720398fbb77ee55abd data/cosmere/recipes/lerasatium_lead_alloy_14.json +8798b44c044372bbf501f39b1c2edc54041edf50 data/cosmere/recipes/lerasatium_lead_alloy_15.json +d73e4113ed5d2381a4c91e5568416ddfebfb0105 data/cosmere/recipes/lerasatium_lead_alloy_16.json +92c49d44212a216d0748ceba35e221efd285be8b data/cosmere/recipes/lerasatium_lead_alloy_2.json +dce3be286c61a20e2c98da00a5d859cf6d8569aa data/cosmere/recipes/lerasatium_lead_alloy_3.json +77d0ad4ab84b5cc686804f0b5d5ea16c7484b0e5 data/cosmere/recipes/lerasatium_lead_alloy_4.json +6ad73969edda4a12b4522a3f9d01b3b910559581 data/cosmere/recipes/lerasatium_lead_alloy_5.json +c8d21d4807680cd9270ac6eb1444281bc79d8cfd data/cosmere/recipes/lerasatium_lead_alloy_6.json +35ce329767c8d3476592adc61c7ee12fc85094b4 data/cosmere/recipes/lerasatium_lead_alloy_7.json +f8446fae2fe823ada59e5c862dba6d23787d348b data/cosmere/recipes/lerasatium_lead_alloy_8.json +d39b291eb258415aec90e736c8d6990c31ab52ca data/cosmere/recipes/lerasatium_lead_alloy_9.json +65b4c038c57623b656886a8b8d3d118c60fae8f3 data/cosmere/recipes/lerasatium_malatium_alloy_1.json +6724c478f93e5bd8e684d543679f2c358d4c2510 data/cosmere/recipes/lerasatium_malatium_alloy_10.json +3e8d3daffc15fdaaa6c0e6d8d81305426cf9bb79 data/cosmere/recipes/lerasatium_malatium_alloy_11.json +f229064372846930c106823b0e3d1afca1f2f998 data/cosmere/recipes/lerasatium_malatium_alloy_12.json +3d75e6fc6a8493c27e14245ed9b5e136fb413f21 data/cosmere/recipes/lerasatium_malatium_alloy_13.json +84cafad6dd81bd1249dcee4ad5ff16aa3f252dee data/cosmere/recipes/lerasatium_malatium_alloy_14.json +e35940e3ad7d5f105decf8bc270ec562e6cfad12 data/cosmere/recipes/lerasatium_malatium_alloy_15.json +346b77cc00ec77953331c559bbc005292df49bfe data/cosmere/recipes/lerasatium_malatium_alloy_16.json +94e0f224382c3e9e152880a34958397e745f4027 data/cosmere/recipes/lerasatium_malatium_alloy_2.json +3486a0ec486d2b8b9de6c83f85bf2eb4b2685af5 data/cosmere/recipes/lerasatium_malatium_alloy_3.json +37a95c72c9d55e57c9e9307d324df389699e47a0 data/cosmere/recipes/lerasatium_malatium_alloy_4.json +a693553240c009186701d1da7a158888b927830a data/cosmere/recipes/lerasatium_malatium_alloy_5.json +d874c0ac2be3b98493a7dd91a0ce4bbfa721e40a data/cosmere/recipes/lerasatium_malatium_alloy_6.json +9184cee4d5295d6e18ba79379137a52deb05fd14 data/cosmere/recipes/lerasatium_malatium_alloy_7.json +766d873ae54a59091c7a5be7dfc3056eec182d9a data/cosmere/recipes/lerasatium_malatium_alloy_8.json +2f36d284c7f1d490eb9505b50590223068effb10 data/cosmere/recipes/lerasatium_malatium_alloy_9.json +07db9aa9ba52a7cb6e66673a50bb759de103ce64 data/cosmere/recipes/lerasatium_nickel_alloy_1.json +e2675ba3856b2483016093cfa8f6ee28be18553c data/cosmere/recipes/lerasatium_nickel_alloy_10.json +7d954a0504196e3e506ba98beb20de5abcaa32c5 data/cosmere/recipes/lerasatium_nickel_alloy_11.json +8996fd6b3273c4fc6d4cb98812a2a5ba940d0b71 data/cosmere/recipes/lerasatium_nickel_alloy_12.json +78ffcf15a0d8b7a69c310bd73c639605e3b1536d data/cosmere/recipes/lerasatium_nickel_alloy_13.json +751725a073c9efb4e6312d122dd71975b612df85 data/cosmere/recipes/lerasatium_nickel_alloy_14.json +727c08e22a8e999b6801d6409ca82eff19297ab7 data/cosmere/recipes/lerasatium_nickel_alloy_15.json +16179d426684c7ac9c1457d42e2d9dd43ffe7126 data/cosmere/recipes/lerasatium_nickel_alloy_16.json +44265dd7cf7f931d4b9409c2164015c45d1387c7 data/cosmere/recipes/lerasatium_nickel_alloy_2.json +33a59a0ac25f1051842d1c1d52043ef7fb1be6aa data/cosmere/recipes/lerasatium_nickel_alloy_3.json +92299d3ba97fee5947113867bfb7082961968412 data/cosmere/recipes/lerasatium_nickel_alloy_4.json +d5154bf8256e472b768c15c1e42be44c7171cfc4 data/cosmere/recipes/lerasatium_nickel_alloy_5.json +d42de7b5135778a56a2159b9890a794696bc37a3 data/cosmere/recipes/lerasatium_nickel_alloy_6.json +50dd3391c77674149bb8e5858b15c92239840f8c data/cosmere/recipes/lerasatium_nickel_alloy_7.json +c5a59baf4a83bd55afa0c8cafb76c542cf53ef2a data/cosmere/recipes/lerasatium_nickel_alloy_8.json +0a88a2bc2f911e960588a693de0030fe12cde9cb data/cosmere/recipes/lerasatium_nickel_alloy_9.json +8368957230e821917c0a273cbfa152161c3dd91e data/cosmere/recipes/lerasatium_nicrosil_alloy_1.json +113e4d91c7f3cdd0feb158d93cfa387255f8e795 data/cosmere/recipes/lerasatium_nicrosil_alloy_10.json +ef8d403b35e4287d94de2ad1ed9a49bfae80f90c data/cosmere/recipes/lerasatium_nicrosil_alloy_11.json +b31086c01cd4a62e8c1295cb0e861727b077594d data/cosmere/recipes/lerasatium_nicrosil_alloy_12.json +ae4397ae3b273c6b10a3843739f62b0be3c81372 data/cosmere/recipes/lerasatium_nicrosil_alloy_13.json +9f41895428384eabb95937d0224d7df44a5ccd60 data/cosmere/recipes/lerasatium_nicrosil_alloy_14.json +9ed13af2fd109c765eb106e530c29e85fe5d060b data/cosmere/recipes/lerasatium_nicrosil_alloy_15.json +0f23c32360fd5012d95b859d4c159d3702664ac4 data/cosmere/recipes/lerasatium_nicrosil_alloy_16.json +1c84c2705eaa2ac763c8d5da11eccca9a1838d5c data/cosmere/recipes/lerasatium_nicrosil_alloy_2.json +3e15ae5ab6a21f41be4805d803d074dc4ab3a21c data/cosmere/recipes/lerasatium_nicrosil_alloy_3.json +c296c618dc337d817aa2cab6c9dc7e6b8a02504a data/cosmere/recipes/lerasatium_nicrosil_alloy_4.json +a30214cc4cbd005688983001f4c41078a9e6be4b data/cosmere/recipes/lerasatium_nicrosil_alloy_5.json +7b0b445aa9165bad2268dba6721ff2e6df850aa1 data/cosmere/recipes/lerasatium_nicrosil_alloy_6.json +df401d5b50524be0d747dc40c2ff708797c71d84 data/cosmere/recipes/lerasatium_nicrosil_alloy_7.json +8f83324b07a4eba2075f99eaac7cfa58f077aa4b data/cosmere/recipes/lerasatium_nicrosil_alloy_8.json +4123608b14ec9ebac0b8529ccd79d708030abb27 data/cosmere/recipes/lerasatium_nicrosil_alloy_9.json +07b15ba6c3a870f048351071303f739e0da154b3 data/cosmere/recipes/lerasatium_pewter_alloy_1.json +a80dfa216e8345a263383e57b6ef570e4d2e2e7f data/cosmere/recipes/lerasatium_pewter_alloy_10.json +7aa8d8d87305fadfff6c20008bd79c3da62d1133 data/cosmere/recipes/lerasatium_pewter_alloy_11.json +06d84b88e78b7158a771de50a90746a633d41c6a data/cosmere/recipes/lerasatium_pewter_alloy_12.json +c1dd9aa4d950ea0923fb35cc0cb840e9f82f8e0e data/cosmere/recipes/lerasatium_pewter_alloy_13.json +1bd3e5e9c33a46367a052a6f093626b8382bed23 data/cosmere/recipes/lerasatium_pewter_alloy_14.json +af7d88c1fe775316f572d1e76afbbed4210b5b62 data/cosmere/recipes/lerasatium_pewter_alloy_15.json +166fed42922ce20d6bea91c1b31898d4878ab2e4 data/cosmere/recipes/lerasatium_pewter_alloy_16.json +724a3ff0e061b6e3415929bcd244337acce5aafe data/cosmere/recipes/lerasatium_pewter_alloy_2.json +c3d7abf55386d271e62cf15e68c90d55ba76fac3 data/cosmere/recipes/lerasatium_pewter_alloy_3.json +73d69db06826e85aa6c21e8003370ea87d5409c5 data/cosmere/recipes/lerasatium_pewter_alloy_4.json +114374c15353156500a2ed9a181b2e495865bc23 data/cosmere/recipes/lerasatium_pewter_alloy_5.json +d7b488991fdc236c7dc17ba23f1d027d31fee010 data/cosmere/recipes/lerasatium_pewter_alloy_6.json +636b30003b5fb7a67399f4e8a1ae9bf9f25ca4bf data/cosmere/recipes/lerasatium_pewter_alloy_7.json +361966d21a7b0405a06687c8f2669fd5a910acfc data/cosmere/recipes/lerasatium_pewter_alloy_8.json +52666ad2c6f335fb77bc67ec119275516e808302 data/cosmere/recipes/lerasatium_pewter_alloy_9.json +0b1b7045abe3afeaacd3393f4c473d9aa7075349 data/cosmere/recipes/lerasatium_silver_alloy_1.json +77549a08dd44c3f1dcaf5081ec7530e75cdf1c69 data/cosmere/recipes/lerasatium_silver_alloy_10.json +bf8d47f81755505d9f91c0dbe2d2d42e3eb5430c data/cosmere/recipes/lerasatium_silver_alloy_11.json +f26d0a7a8aa0b6549ced0646cdb0ffad4deddd6f data/cosmere/recipes/lerasatium_silver_alloy_12.json +ae4b6de99d9e7be013449805dc3ce5ab24bad7a6 data/cosmere/recipes/lerasatium_silver_alloy_13.json +55672c58beea4f16c90d21b8027749becffa4628 data/cosmere/recipes/lerasatium_silver_alloy_14.json +a23fbab2b353ba753095a5e6fbe7f1f9a355ea26 data/cosmere/recipes/lerasatium_silver_alloy_15.json +8b9c5f836e131669ce31cba6cf5f09fbd3ab1702 data/cosmere/recipes/lerasatium_silver_alloy_16.json +72b7c697885d79d568d981a6da87fba3f42ec05b data/cosmere/recipes/lerasatium_silver_alloy_2.json +37c737313057ed7f96687b273976427d115a30b5 data/cosmere/recipes/lerasatium_silver_alloy_3.json +f8be1a5096f0b8cead8985293f9d417883c97b9f data/cosmere/recipes/lerasatium_silver_alloy_4.json +623830592af3102d30fe7c1bfacea4870b1bd1ae data/cosmere/recipes/lerasatium_silver_alloy_5.json +65425f19dfa1b1b8c1dd377bab2a74b359671628 data/cosmere/recipes/lerasatium_silver_alloy_6.json +aee9b398333337d8dd3c8baa2a0284ee9f179c6d data/cosmere/recipes/lerasatium_silver_alloy_7.json +658d87e1c94d3222fae3b7ce195bc7ee04957e1e data/cosmere/recipes/lerasatium_silver_alloy_8.json +8f35be53fba7fa8a7b35c6539a48645d177b81fb data/cosmere/recipes/lerasatium_silver_alloy_9.json +ce73f28d9f88a97ac8ae8e5e8c139f754904e6e0 data/cosmere/recipes/lerasatium_steel_alloy_1.json +ec522d56be8227bb3710979c4f10ebef06f1dc7e data/cosmere/recipes/lerasatium_steel_alloy_10.json +16a1e8a9f8507580c5c24a0a80b18ad889e79629 data/cosmere/recipes/lerasatium_steel_alloy_11.json +6637af191944b75c071396d098b75423d199ed77 data/cosmere/recipes/lerasatium_steel_alloy_12.json +d9af08e676787387c0515a459a8bef88215d8647 data/cosmere/recipes/lerasatium_steel_alloy_13.json +d2202ae13f9ad9a32536f905297760d08add072e data/cosmere/recipes/lerasatium_steel_alloy_14.json +b25dcbdac21605fd80168ab087e6c1ed78af7fd5 data/cosmere/recipes/lerasatium_steel_alloy_15.json +160cb8202756637396db056878aa20f6097b50db data/cosmere/recipes/lerasatium_steel_alloy_16.json +26ccf7f2cd8f35f83b30282bae1b6f1fa6bf14e4 data/cosmere/recipes/lerasatium_steel_alloy_2.json +99231b35f224aafe02fb88c33c36c03b6e241325 data/cosmere/recipes/lerasatium_steel_alloy_3.json +9d15cc2d5d2b4df0bd0e5061d0c8df6a6b89b444 data/cosmere/recipes/lerasatium_steel_alloy_4.json +03ab4128c824e95b66420adcfd70ed0371622a69 data/cosmere/recipes/lerasatium_steel_alloy_5.json +f8c9ef9930547dacc9c87874e0b4e60bdd321adc data/cosmere/recipes/lerasatium_steel_alloy_6.json +20fe813d780c68eb3ea5fc4ffa9f66767e50afa6 data/cosmere/recipes/lerasatium_steel_alloy_7.json +e759e9a6ef2748609f2ecb1022ea1f7727c9d6d3 data/cosmere/recipes/lerasatium_steel_alloy_8.json +58f35a7af86dc3a654ed649c20f33e21b4957750 data/cosmere/recipes/lerasatium_steel_alloy_9.json +edca58066868645f12e23e42211ceebcfdc1815a data/cosmere/recipes/lerasatium_tin_alloy_1.json +ae28416bf24cad638283aa0512770ce5e7099f58 data/cosmere/recipes/lerasatium_tin_alloy_10.json +58e409f84213d72418d5a4ebc509c589b375404b data/cosmere/recipes/lerasatium_tin_alloy_11.json +65d39e6b2ae7f0351fc94aa4d95c2198c9580116 data/cosmere/recipes/lerasatium_tin_alloy_12.json +f180d061d6ba544b19926ec1fb67b01a15bb1357 data/cosmere/recipes/lerasatium_tin_alloy_13.json +5ada60cceb1d2cb38e212445db4b8825a131f1c9 data/cosmere/recipes/lerasatium_tin_alloy_14.json +413b5c2f7e365eb54b3bd26cdbc7006f72a7934f data/cosmere/recipes/lerasatium_tin_alloy_15.json +7aa29062bd6d98a4528c60be402cf250bc06c9e5 data/cosmere/recipes/lerasatium_tin_alloy_16.json +84800d069bfe242dc627462da4d9e7651fdda36a data/cosmere/recipes/lerasatium_tin_alloy_2.json +7d0acaf85c2a6be9354fc88e3a9976f45ca9beeb data/cosmere/recipes/lerasatium_tin_alloy_3.json +5fa4d957fcf80ddd2fe84e005dee304262f40b93 data/cosmere/recipes/lerasatium_tin_alloy_4.json +097949ce5d44678bb7c8b48a5611378b9b9b01d6 data/cosmere/recipes/lerasatium_tin_alloy_5.json +b50a84e301d1f047a63f4051051d40d4386cf56b data/cosmere/recipes/lerasatium_tin_alloy_6.json +51152b3f6c27fd3ae481ffed22564df61623d547 data/cosmere/recipes/lerasatium_tin_alloy_7.json +60b1c406a97b654261d97cc98e58d81f7e1ae4df data/cosmere/recipes/lerasatium_tin_alloy_8.json +a34685a6acb8b61129add02b646717910181c482 data/cosmere/recipes/lerasatium_tin_alloy_9.json +5249db13aeee901cf2258601cee9e9bfc54c693a data/cosmere/recipes/lerasatium_zinc_alloy_1.json +e20bbbcbe54c170e00f6da191320c0a15f0b38c4 data/cosmere/recipes/lerasatium_zinc_alloy_10.json +f71ffb0b4da263138e99fc7b98cdbb8a47a6a332 data/cosmere/recipes/lerasatium_zinc_alloy_11.json +ce6483336ab2bff82438f155e5c009ba9973a782 data/cosmere/recipes/lerasatium_zinc_alloy_12.json +0d974f70c6a3aecd1a63620449e5872860aafcc0 data/cosmere/recipes/lerasatium_zinc_alloy_13.json +c0094ac30a0f03d9ceb60ec4dfcd39ee954cc423 data/cosmere/recipes/lerasatium_zinc_alloy_14.json +9080136fef34cfeff677a013f124b17c474f2820 data/cosmere/recipes/lerasatium_zinc_alloy_15.json +304558771ba08f26492a51c1661ef6d591944f57 data/cosmere/recipes/lerasatium_zinc_alloy_16.json +58cb996379fcdf33c6d859d207c27ee0e33b95ab data/cosmere/recipes/lerasatium_zinc_alloy_2.json +b3242b21683507de33509d091189f89966d05185 data/cosmere/recipes/lerasatium_zinc_alloy_3.json +2d66f3ec79e453e200fe8a421211f01dda0e9fb2 data/cosmere/recipes/lerasatium_zinc_alloy_4.json +b2afa78942bf8cf7c3998025bc7f65acf0f4eac2 data/cosmere/recipes/lerasatium_zinc_alloy_5.json +96fbea06a9807316d77e1eaa7795a9c5b5d6318b data/cosmere/recipes/lerasatium_zinc_alloy_6.json +5666a92e33e9cd38be4497af79a4e5c07df534c1 data/cosmere/recipes/lerasatium_zinc_alloy_7.json +849457f3d9ab47a66ab345d22a6f993e5d77580a data/cosmere/recipes/lerasatium_zinc_alloy_8.json +7ddc796f26cd672fec9a06ac82113cda5fcbf6b2 data/cosmere/recipes/lerasatium_zinc_alloy_9.json +b412ede5c211bdc4598d9ea8bb4701c5ad02f7c8 data/cosmere/recipes/lerasium_aluminum_alloy_1.json +e0161468d17ea44c919b5596f649a1aa763ea406 data/cosmere/recipes/lerasium_aluminum_alloy_10.json +4740cf7b1e95dc73295a1aef995e8ad4c573c25b data/cosmere/recipes/lerasium_aluminum_alloy_11.json +cbc39ed10a85275b0056a001ab421b86813c5879 data/cosmere/recipes/lerasium_aluminum_alloy_12.json +818c59e10d9cdbe6a83f56d1ec0d97877909b884 data/cosmere/recipes/lerasium_aluminum_alloy_13.json +8cc5a3de63be74f12c9d89b7dbc31474d06d76f7 data/cosmere/recipes/lerasium_aluminum_alloy_14.json +d9bc4641efacd2078fd61e7c9a7f4564c9665a39 data/cosmere/recipes/lerasium_aluminum_alloy_15.json +f196fc89c4bf09369038aa7df659c751ef634623 data/cosmere/recipes/lerasium_aluminum_alloy_16.json +9b2d1df9e6ab66df4356329eb68c5ec8bc6b8e0e data/cosmere/recipes/lerasium_aluminum_alloy_2.json +dc674f7928e3ebe5dbd298774f0a17f837a9bc59 data/cosmere/recipes/lerasium_aluminum_alloy_3.json +4d537c319af8b114e0c0c3e90be13c60ed22b5e5 data/cosmere/recipes/lerasium_aluminum_alloy_4.json +1f2a1b8af88027737a1b84324d4d80b20befc78a data/cosmere/recipes/lerasium_aluminum_alloy_5.json +b831537b6484ae2eb87d64b65f7f27a1a5d5df89 data/cosmere/recipes/lerasium_aluminum_alloy_6.json +6d33920eb5bc413e69cf69d1729f706ff5fc8f55 data/cosmere/recipes/lerasium_aluminum_alloy_7.json +7c770eb823490f637359152a41cfba4e2bcb58e6 data/cosmere/recipes/lerasium_aluminum_alloy_8.json +8028b676d3d73c41347bae0d56ad6c53c7608151 data/cosmere/recipes/lerasium_aluminum_alloy_9.json +7e156a75072c2f3dd412167cb7a1c5aa0b30793e data/cosmere/recipes/lerasium_bendalloy_alloy_1.json +05b11ad9bc127f6d4b862c22abaeb12ef367308a data/cosmere/recipes/lerasium_bendalloy_alloy_10.json +10c16a8082cb91a94ee16fbf0976a87899d95e66 data/cosmere/recipes/lerasium_bendalloy_alloy_11.json +36e0c5ba0d6a63d1bd25d4d22a0864329e94ca27 data/cosmere/recipes/lerasium_bendalloy_alloy_12.json +f9e16a2e4dcc8d472c160ddd1263115f7c90e021 data/cosmere/recipes/lerasium_bendalloy_alloy_13.json +d6c61212dc079cb5e94249aec07650dda098ea4c data/cosmere/recipes/lerasium_bendalloy_alloy_14.json +d3f104a6d4a003b14bb1d4167018a22964d9e230 data/cosmere/recipes/lerasium_bendalloy_alloy_15.json +d8f5356e5d6c99caa66b080e745ebcfe69b22beb data/cosmere/recipes/lerasium_bendalloy_alloy_16.json +b98dcc7d61d78149e6cec708afd33ba50212f2ed data/cosmere/recipes/lerasium_bendalloy_alloy_2.json +8fb046f1c20a371d94661600d3a0c89c23c72599 data/cosmere/recipes/lerasium_bendalloy_alloy_3.json +c0757cd59239ee2191d237ec7a7c68f9ac51d1b6 data/cosmere/recipes/lerasium_bendalloy_alloy_4.json +d379d715eaa20e651432aab37db7cadb4869879a data/cosmere/recipes/lerasium_bendalloy_alloy_5.json +3a65b934d89ded36cbba9bd299b209906b479eef data/cosmere/recipes/lerasium_bendalloy_alloy_6.json +b021286d6ce8eb7a5a22f488de9b508a54b458d5 data/cosmere/recipes/lerasium_bendalloy_alloy_7.json +06f614c24a8cb87696e13473ac8a8b3b22228aac data/cosmere/recipes/lerasium_bendalloy_alloy_8.json +25251a8b761bc429399e23e096055b1fce71281f data/cosmere/recipes/lerasium_bendalloy_alloy_9.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -d38c0f4982c4e0bb0bed4e4f32fd95e187cd67d8 data/cosmere/recipes/lerasium_ingot.json +76c7e78af100d3be0ae83429ee8fbde9341ecc24 data/cosmere/recipes/lerasium_brass_alloy_1.json +9f35b15f48f7bad149cbfef38dc012f8705f18fa data/cosmere/recipes/lerasium_brass_alloy_10.json +3b175be82e6ebe8766145e92a6b3c44095258b76 data/cosmere/recipes/lerasium_brass_alloy_11.json +0dc9bc43861e0e406f0ee9ffc0d57d3ebff4f585 data/cosmere/recipes/lerasium_brass_alloy_12.json +1792c1c501ed2859a9ab19bd63146aecba776867 data/cosmere/recipes/lerasium_brass_alloy_13.json +0b284729fe82d4b3a87abf3aa66c3a808bf835c2 data/cosmere/recipes/lerasium_brass_alloy_14.json +606b423dcea879b83e72f92f838c89ec3055046f data/cosmere/recipes/lerasium_brass_alloy_15.json +8fdab6614e05c4422c9835110ecce75ac2523b1c data/cosmere/recipes/lerasium_brass_alloy_16.json +9e634b476182ef572643e294c072fc6a8f8fe4e6 data/cosmere/recipes/lerasium_brass_alloy_2.json +ce1315d273abbd872c4ca706d36e466e98656ccb data/cosmere/recipes/lerasium_brass_alloy_3.json +4963653bd745b941c5427bb267419e76bcbcab65 data/cosmere/recipes/lerasium_brass_alloy_4.json +642e95b502516ce6d16890e6692454178ad1c755 data/cosmere/recipes/lerasium_brass_alloy_5.json +7ceb62ad94ba8f4218c8c80199b2ff8da42f662e data/cosmere/recipes/lerasium_brass_alloy_6.json +3b712298b01c04a81fd6c0d2d619b3fff6c60c8d data/cosmere/recipes/lerasium_brass_alloy_7.json +2788421746ca84f9c8026bb9ded440f5c7abf97d data/cosmere/recipes/lerasium_brass_alloy_8.json +acb50488d8aac04df51551edbb080bc253cdeaee data/cosmere/recipes/lerasium_brass_alloy_9.json +bfd6d458394bb1a381c71307851d9bbec5280588 data/cosmere/recipes/lerasium_bronze_alloy_1.json +45903e12fbad448b757a7753dc40b15e4e7407da data/cosmere/recipes/lerasium_bronze_alloy_10.json +a02dbd6fd4e74681a7d7a5d528a1d51cb289760e data/cosmere/recipes/lerasium_bronze_alloy_11.json +4bf483e7711c32455f38f447f5deadae5614bab8 data/cosmere/recipes/lerasium_bronze_alloy_12.json +bd1bf0a7a611c6e5e110640456d2c66f65838cfd data/cosmere/recipes/lerasium_bronze_alloy_13.json +d32440a4f36b1b75370fe4fef6e7e1a6bad081ce data/cosmere/recipes/lerasium_bronze_alloy_14.json +ee05afc06d24515fb4c85719b6ce435b42e475a6 data/cosmere/recipes/lerasium_bronze_alloy_15.json +29372a8e755315649bf2f3b6fde4e3860b3693ec data/cosmere/recipes/lerasium_bronze_alloy_16.json +38c2a3d07b3a6b2f914414ccf10570a9f691fe8b data/cosmere/recipes/lerasium_bronze_alloy_2.json +3cba47ec2a5e48439bc257a47facbd702b82488e data/cosmere/recipes/lerasium_bronze_alloy_3.json +3396081487e7bd63fe870597982122398b6e3120 data/cosmere/recipes/lerasium_bronze_alloy_4.json +5e6fa76551b2696ca57691a219f273b69132e24b data/cosmere/recipes/lerasium_bronze_alloy_5.json +27c903ee6fcf27ecc55ffb0ba8054fee5f25f36c data/cosmere/recipes/lerasium_bronze_alloy_6.json +71fd43cbcd70608cdcfbe0d24f99244fce9d70b1 data/cosmere/recipes/lerasium_bronze_alloy_7.json +cead90fec212f9d120d1c757928da95c1487fb10 data/cosmere/recipes/lerasium_bronze_alloy_8.json +e68608519f3758c724e41b7e6aff1bc12b8c1969 data/cosmere/recipes/lerasium_bronze_alloy_9.json +26106af4ed33eb222e5e3ecf46f1aa6cd539f98a data/cosmere/recipes/lerasium_cadmium_alloy_1.json +b97fd4c2299f22679c03bac8e74847ed26670d9c data/cosmere/recipes/lerasium_cadmium_alloy_10.json +23d4eb914e369105c17358a5244b66bb744bebdc data/cosmere/recipes/lerasium_cadmium_alloy_11.json +1674610b92fc01ae32a4f52ef816117a794da395 data/cosmere/recipes/lerasium_cadmium_alloy_12.json +318123e5e4ef56fb04d46b7f56408d6ef626bec6 data/cosmere/recipes/lerasium_cadmium_alloy_13.json +9ddb3d66965319460ddb7fa34e2ceca5ed3bb574 data/cosmere/recipes/lerasium_cadmium_alloy_14.json +14928e95fb68fa6a334a828d703f87576948637a data/cosmere/recipes/lerasium_cadmium_alloy_15.json +1d7e66b0a1f43a4afd9ec47a4de8285a01e8b9dd data/cosmere/recipes/lerasium_cadmium_alloy_16.json +741b4bb9015f149a2e9dbbc6fbbe0ef1d63b4301 data/cosmere/recipes/lerasium_cadmium_alloy_2.json +4c4d5d98f94d1feb6e5f4d3abb5c4d1ef056f017 data/cosmere/recipes/lerasium_cadmium_alloy_3.json +cb188cceffa2422838d3822789c2e02b05328d10 data/cosmere/recipes/lerasium_cadmium_alloy_4.json +a41d9bd6a9f45678550a56531af456ed316727fb data/cosmere/recipes/lerasium_cadmium_alloy_5.json +c753ba90106c10818bfbce7c6522c369c6f02e89 data/cosmere/recipes/lerasium_cadmium_alloy_6.json +fabe4f1162ac633d41417fd6bdc57b28b6f3eb61 data/cosmere/recipes/lerasium_cadmium_alloy_7.json +c2fc73c463e9afb8e0f9e1f20378966e71f61e58 data/cosmere/recipes/lerasium_cadmium_alloy_8.json +427eb60d8edd8d01961815b8d362f186918e218e data/cosmere/recipes/lerasium_cadmium_alloy_9.json +edd5065c400b1da9c11f9f78d475e875e6a067af data/cosmere/recipes/lerasium_chromium_alloy_1.json +6abaa635f9520b1bcd41a5482470457258f7b5fd data/cosmere/recipes/lerasium_chromium_alloy_10.json +dbbc7ac39917a6336413811d26171e49fd6c3699 data/cosmere/recipes/lerasium_chromium_alloy_11.json +5fcc264e40a0390de68ebd965f86064f710eb439 data/cosmere/recipes/lerasium_chromium_alloy_12.json +9273724401dd2975e3e4d3b6d1070e3bea10dc76 data/cosmere/recipes/lerasium_chromium_alloy_13.json +a93ec4161b612cc286fd1928e417fd8539f96d3c data/cosmere/recipes/lerasium_chromium_alloy_14.json +22e9c21b30944a01a372a8d0e1f5d2d05be9665b data/cosmere/recipes/lerasium_chromium_alloy_15.json +18cd310dc44e6640feb2aa6fa654d035ed12bdab data/cosmere/recipes/lerasium_chromium_alloy_16.json +730b1de50f5ae54e53a3b37b53defe5009323ce8 data/cosmere/recipes/lerasium_chromium_alloy_2.json +b8f4c1341c58ab0ea4a40130bd9fae285fad2211 data/cosmere/recipes/lerasium_chromium_alloy_3.json +1cb644b7cf840ac7824a7f63df9c42d460552f08 data/cosmere/recipes/lerasium_chromium_alloy_4.json +63bee35d004d9d728af91c3d98f27a21a5df2cf1 data/cosmere/recipes/lerasium_chromium_alloy_5.json +999e4325f2351c3a94bbb4ca025b17bf6628ff14 data/cosmere/recipes/lerasium_chromium_alloy_6.json +200f4179053dcc6f1b122e9ec28cb5672ff7d645 data/cosmere/recipes/lerasium_chromium_alloy_7.json +b8781f66e1e1152071cf26ba2c51286d91c6fbd9 data/cosmere/recipes/lerasium_chromium_alloy_8.json +c48aa92410aa9ff033bba5b114ffb2444b3c6085 data/cosmere/recipes/lerasium_chromium_alloy_9.json +923e8fe20fd7e3c3b8b19ffe84ff86e6a2a1c6db data/cosmere/recipes/lerasium_duralumin_alloy_1.json +b156a6cf04183cb7dfc63dcf27cffeb64034580d data/cosmere/recipes/lerasium_duralumin_alloy_10.json +58968a37e03905071e8f59d497f914112895f2b0 data/cosmere/recipes/lerasium_duralumin_alloy_11.json +3e29f70395d031473d215d92e3a444e116b9ec26 data/cosmere/recipes/lerasium_duralumin_alloy_12.json +d616daae526162eda73146013b7273457b0116b2 data/cosmere/recipes/lerasium_duralumin_alloy_13.json +84bb8bfa4e575d1c5be604a3ae5ccbd2e202e472 data/cosmere/recipes/lerasium_duralumin_alloy_14.json +bbae1d78a90d1a100c689e853082f86c0eef3eb6 data/cosmere/recipes/lerasium_duralumin_alloy_15.json +a94875ca4da57ac9f02a4da7088eaa202baf27f7 data/cosmere/recipes/lerasium_duralumin_alloy_16.json +a2aa330ea09c22e515c98506716dd17f39b49591 data/cosmere/recipes/lerasium_duralumin_alloy_2.json +070e931a06421f6e70af89b30695bc154ee7e5c8 data/cosmere/recipes/lerasium_duralumin_alloy_3.json +ae98c264cf8fade18dbb0d1a4012cf5e9917ae02 data/cosmere/recipes/lerasium_duralumin_alloy_4.json +2d2e70eab98825ecfef8c2f287adafcfe6cae44e data/cosmere/recipes/lerasium_duralumin_alloy_5.json +a7d11fa10eb97908254a5d32d756be3cfeaba6aa data/cosmere/recipes/lerasium_duralumin_alloy_6.json +161212e5c310cce16290778a301c306a10f5c034 data/cosmere/recipes/lerasium_duralumin_alloy_7.json +efdb69a3fe067343251799c17a0510df2f109095 data/cosmere/recipes/lerasium_duralumin_alloy_8.json +bea29efdfc0f7fa653732f7c1847dfb6e6c0e70c data/cosmere/recipes/lerasium_duralumin_alloy_9.json +927024e76f4c3e908c4505101e292517f75e38fd data/cosmere/recipes/lerasium_electrum_alloy_1.json +8af88e1d5012f6a4422144a432d1861fa7b018eb data/cosmere/recipes/lerasium_electrum_alloy_10.json +8b1ebb323ab47987db5bb497322327311ca1d690 data/cosmere/recipes/lerasium_electrum_alloy_11.json +cc7f0afc8875c6170a9292fd728e02989d8cf4fc data/cosmere/recipes/lerasium_electrum_alloy_12.json +2162b267142c47281bb036031e1aedfa313fcc1a data/cosmere/recipes/lerasium_electrum_alloy_13.json +50776f324de2676a31b720b9ff6e8c2b885ebaf9 data/cosmere/recipes/lerasium_electrum_alloy_14.json +4a2d9806dc75f2284971bbbdb820a3a996f3b368 data/cosmere/recipes/lerasium_electrum_alloy_15.json +1bbdd924ef4608cf6806917262a1dc8b4521a008 data/cosmere/recipes/lerasium_electrum_alloy_16.json +d46464fbaa6e12b592b6d5c23793b8d123423dcc data/cosmere/recipes/lerasium_electrum_alloy_2.json +be3f202f84c1c3d7fd4590fc84810c41c2d842d6 data/cosmere/recipes/lerasium_electrum_alloy_3.json +ccf48c771d67a4a81050dc393485b6ebf3444ceb data/cosmere/recipes/lerasium_electrum_alloy_4.json +47a05cd640132ba384dc25eaf006403487496e32 data/cosmere/recipes/lerasium_electrum_alloy_5.json +908ef7aea3646a03d9176b7ce6909bb3bcc545f6 data/cosmere/recipes/lerasium_electrum_alloy_6.json +d6833d4dd1be623e01702bcd06245af2127f8763 data/cosmere/recipes/lerasium_electrum_alloy_7.json +5034dafd7f0b594fde8e015cccddec121b25afb9 data/cosmere/recipes/lerasium_electrum_alloy_8.json +46adf1fcd0c088faa3d9bc33325feaff0f03f6f9 data/cosmere/recipes/lerasium_electrum_alloy_9.json +a4f7ae18f7da78c725539e289cbd2c9d8e6b6981 data/cosmere/recipes/lerasium_ingot.json +b40c8d87c336e379ceb256caa51dcfab0ea3629c data/cosmere/recipes/lerasium_lead_alloy_1.json +0c47d29d10cf08a68651f2b3d66313c2d5f17243 data/cosmere/recipes/lerasium_lead_alloy_10.json +3b280c59ff325919085eb35353a7184436810633 data/cosmere/recipes/lerasium_lead_alloy_11.json +de494367ce555c9d03bb8ac85a54709e864e059f data/cosmere/recipes/lerasium_lead_alloy_12.json +c6fa10e2eacf77d008ba67d32a1d3c5fabc27686 data/cosmere/recipes/lerasium_lead_alloy_13.json +d4eb60fde63b11fe2b70bb8a01ad7d37c0370e74 data/cosmere/recipes/lerasium_lead_alloy_14.json +252aa9cc2f6bdf2815fb2bdb57e55a0f5e5dfda4 data/cosmere/recipes/lerasium_lead_alloy_15.json +bba79fe2552c507ef3704f812a043a9caa7ee94d data/cosmere/recipes/lerasium_lead_alloy_16.json +8648174950e901a66b56a849e17fbe2e60fb8039 data/cosmere/recipes/lerasium_lead_alloy_2.json +39f28362a7290c9432a6b39c0b9fb5ef2084273a data/cosmere/recipes/lerasium_lead_alloy_3.json +efce7628f993c24bb4299ef4801c649c797c7b2e data/cosmere/recipes/lerasium_lead_alloy_4.json +31fa9867ac86cc3f1110d1c85cb92c884d32d55d data/cosmere/recipes/lerasium_lead_alloy_5.json +d0096540b2016618cfbaf8ba32f0bfeb5c01f53a data/cosmere/recipes/lerasium_lead_alloy_6.json +411820ac98799beef895af163ada1b2f74efa1fe data/cosmere/recipes/lerasium_lead_alloy_7.json +2fac02420bd32a246d216017937aade691ff9418 data/cosmere/recipes/lerasium_lead_alloy_8.json +91d322fc38b2196cf8f3e930c498843419d32dce data/cosmere/recipes/lerasium_lead_alloy_9.json +27253d3d1fbe7ed975577d1ec000d245a2cc6359 data/cosmere/recipes/lerasium_malatium_alloy_1.json +b7003841337b22cc7bda5033c5bf338d0c8fa563 data/cosmere/recipes/lerasium_malatium_alloy_10.json +98fa2436e60deeefeafa7fd36ded403c3360de66 data/cosmere/recipes/lerasium_malatium_alloy_11.json +b3f8f3f2505ac548dc3084e36f9aac3fab01f90c data/cosmere/recipes/lerasium_malatium_alloy_12.json +7df28f64350fb40927ab0f5ffcc01310bcc84d50 data/cosmere/recipes/lerasium_malatium_alloy_13.json +ca5313a846538359f862493f0a86722314d66121 data/cosmere/recipes/lerasium_malatium_alloy_14.json +f0cadc79bc036c63ccf3389973eaa01ce3c9a7f4 data/cosmere/recipes/lerasium_malatium_alloy_15.json +8d0c4046332804658ed1acb7cafa485afa4c4952 data/cosmere/recipes/lerasium_malatium_alloy_16.json +00d87b927154bbf0f9db9f186de067ccbc80a13c data/cosmere/recipes/lerasium_malatium_alloy_2.json +60917c1977c40ba5260b34ffdc920f30072d0e68 data/cosmere/recipes/lerasium_malatium_alloy_3.json +c3b76e5e1223b5a41bd80d66aaa7eed43577d6d4 data/cosmere/recipes/lerasium_malatium_alloy_4.json +2c3434d0ffcffa8e1ca92035d6f89ccef1d3fb40 data/cosmere/recipes/lerasium_malatium_alloy_5.json +2f1bfaa406b951e6699c8a3491d5cc5a69df17b1 data/cosmere/recipes/lerasium_malatium_alloy_6.json +f7f425daac8dcf9c8dbb550ac6a7fb888a2aeddb data/cosmere/recipes/lerasium_malatium_alloy_7.json +532087e9855ea29d0784828a593bab062c9aabfc data/cosmere/recipes/lerasium_malatium_alloy_8.json +9e85fa5fbca8ded76170c5c0ec61a1d3819bd7bf data/cosmere/recipes/lerasium_malatium_alloy_9.json +48f455c794b64636ca7b0ff6ac5c13a5c91e75c0 data/cosmere/recipes/lerasium_nickel_alloy_1.json +75e0107a8f828f070ebda91e12a4d540b7232a31 data/cosmere/recipes/lerasium_nickel_alloy_10.json +123640370150f4ebfc6d8c9dda2684d16398e195 data/cosmere/recipes/lerasium_nickel_alloy_11.json +702eed904122553d0c586bfb9fe1709a408fb84e data/cosmere/recipes/lerasium_nickel_alloy_12.json +6db2298c2637db5e7e524e40f63fe99eecae5c94 data/cosmere/recipes/lerasium_nickel_alloy_13.json +ec8eda2d76119a53f5cace588e0768f5682d9d4a data/cosmere/recipes/lerasium_nickel_alloy_14.json +fe8fa676385165c7078beba9bcf09d67464982f6 data/cosmere/recipes/lerasium_nickel_alloy_15.json +c186159f6a27c489e283565a335440981052b142 data/cosmere/recipes/lerasium_nickel_alloy_16.json +0d58fde3d1d4eb56c2e71bef3c686509409cb9bb data/cosmere/recipes/lerasium_nickel_alloy_2.json +e6bd83e2f60897f4c28f844c7182eeec688832fb data/cosmere/recipes/lerasium_nickel_alloy_3.json +ff99b94274938397f43ba84aa9f0143e83f561c4 data/cosmere/recipes/lerasium_nickel_alloy_4.json +4f5d871582ae537a12fee3fe88a491323d9a171f data/cosmere/recipes/lerasium_nickel_alloy_5.json +d6fd5560ff1feb5b44e1365a65296e7f01a5c214 data/cosmere/recipes/lerasium_nickel_alloy_6.json +93136781fac7214828aed79712115c187565075b data/cosmere/recipes/lerasium_nickel_alloy_7.json +2c012e151c96b20ae9fed34a862f02ea911de522 data/cosmere/recipes/lerasium_nickel_alloy_8.json +7469d084f3a20d189869d861a54b34abb5f2287e data/cosmere/recipes/lerasium_nickel_alloy_9.json +d616c1e86cc45319992920f28764bebd1ff8831c data/cosmere/recipes/lerasium_nicrosil_alloy_1.json +d856a1a9888d065dc4a6844e6041c643157d2be0 data/cosmere/recipes/lerasium_nicrosil_alloy_10.json +0c722e5ea3630aa9d728d7fb1828d5cd93560a77 data/cosmere/recipes/lerasium_nicrosil_alloy_11.json +060a3f267cd66ebd597815e6d9bcad5827df26a3 data/cosmere/recipes/lerasium_nicrosil_alloy_12.json +5bd541c41b615d011f5b14e38f761f7f66daf035 data/cosmere/recipes/lerasium_nicrosil_alloy_13.json +da843ca0150cb3a2962b75c906947aed446d6908 data/cosmere/recipes/lerasium_nicrosil_alloy_14.json +fc239e091cc9061a5ba8e5e8e10f29f54c2982d5 data/cosmere/recipes/lerasium_nicrosil_alloy_15.json +2c39a89e7ff6fc9a40535ceb1814b30a2983895e data/cosmere/recipes/lerasium_nicrosil_alloy_16.json +f922dcc8bcdf1a37a9e4ecdb2cd3934165cd257f data/cosmere/recipes/lerasium_nicrosil_alloy_2.json +f6519eadfb1bf979720a9827e226742447c3b4c0 data/cosmere/recipes/lerasium_nicrosil_alloy_3.json +306898b1685ca14e51522e2227337ed6a844f7d1 data/cosmere/recipes/lerasium_nicrosil_alloy_4.json +3a39b7f4f33815609cdfe81e5f3a66688cedee51 data/cosmere/recipes/lerasium_nicrosil_alloy_5.json +5cfc1f09061846b39e1bdba7143592518b71a184 data/cosmere/recipes/lerasium_nicrosil_alloy_6.json +7273082fe893faed926aa668fcfea076cb100552 data/cosmere/recipes/lerasium_nicrosil_alloy_7.json +106cbc94d64aa944c15ce404c1fde165c73fd091 data/cosmere/recipes/lerasium_nicrosil_alloy_8.json +f385713c53c2cc5cfc74f1d2134f261796758621 data/cosmere/recipes/lerasium_nicrosil_alloy_9.json +5ff0977e0a07c14b72abfb07a9bdfc54ae30b61a data/cosmere/recipes/lerasium_pewter_alloy_1.json +d809f4036c8713ca224b50f1a8c9fbd068634b65 data/cosmere/recipes/lerasium_pewter_alloy_10.json +0d3ea2b8254e243528ccc84dc0eadcbf251a355e data/cosmere/recipes/lerasium_pewter_alloy_11.json +2ee7d54b515b673a00af8715d25232378e53858c data/cosmere/recipes/lerasium_pewter_alloy_12.json +289d2d71f208957f2c231126abe89bebaad6c706 data/cosmere/recipes/lerasium_pewter_alloy_13.json +489a1eb07e920444feb7305b56ebd66da30654fb data/cosmere/recipes/lerasium_pewter_alloy_14.json +618aac68e0508ea7037e6b280cb8887974647826 data/cosmere/recipes/lerasium_pewter_alloy_15.json +5ad458692bc324710222022b983c36a0f6357ecf data/cosmere/recipes/lerasium_pewter_alloy_16.json +bb3f06c9e702f68feacfc44981d93a82de25f992 data/cosmere/recipes/lerasium_pewter_alloy_2.json +1e9ac1e2e3abef1acf9a013f9f9a6d55ce3d63b4 data/cosmere/recipes/lerasium_pewter_alloy_3.json +0a64603c6e456bc4611243f719a19df80c08bc1d data/cosmere/recipes/lerasium_pewter_alloy_4.json +4dbd2a5a74211bf683386ce96a26a3e23d3b42bf data/cosmere/recipes/lerasium_pewter_alloy_5.json +c851c10edaff1d0598d4890487f07696275325a4 data/cosmere/recipes/lerasium_pewter_alloy_6.json +ddaf32dd49b1e25463d7267e2370f3f4a4806976 data/cosmere/recipes/lerasium_pewter_alloy_7.json +4395ed85053674df3dd6117b314b550be59d3aba data/cosmere/recipes/lerasium_pewter_alloy_8.json +c61e4c4573e3aa6c8d7e7aff1f85dfe3d9897c2d data/cosmere/recipes/lerasium_pewter_alloy_9.json +45dad67787028e747160ff4fd1500f86160e13cb data/cosmere/recipes/lerasium_silver_alloy_1.json +879330f54223da16139df86abf6c84df3091c222 data/cosmere/recipes/lerasium_silver_alloy_10.json +178634d8af03793a833634a4c449bd9a914a916d data/cosmere/recipes/lerasium_silver_alloy_11.json +0225a06d0cef0256130368575272533497e5aa65 data/cosmere/recipes/lerasium_silver_alloy_12.json +f61aa50c8425265d5fc1ff40e21a400ccd3b31b4 data/cosmere/recipes/lerasium_silver_alloy_13.json +351acde007348522857d0498e934b38a62c6cc21 data/cosmere/recipes/lerasium_silver_alloy_14.json +db63e361b6f19b97798e128033a9875a12e66011 data/cosmere/recipes/lerasium_silver_alloy_15.json +d6b322cf8e00253d0d860345cda3aa05f81534e2 data/cosmere/recipes/lerasium_silver_alloy_16.json +ad6d5453528f1196d9e812a2ff53bac2dea8dbc9 data/cosmere/recipes/lerasium_silver_alloy_2.json +4d9d6c267d68fc0455e2879b03340ddb7958088c data/cosmere/recipes/lerasium_silver_alloy_3.json +1a0f40a3fb7b322512f058075324480027750243 data/cosmere/recipes/lerasium_silver_alloy_4.json +864b5b7d807bbcab7ce319490518c3e6f0a3663f data/cosmere/recipes/lerasium_silver_alloy_5.json +0a2b7391c1bea7c2e99c82ae002fd532d0199f55 data/cosmere/recipes/lerasium_silver_alloy_6.json +6428c229781a80d18ec906e442b85fc447e03354 data/cosmere/recipes/lerasium_silver_alloy_7.json +1942b1276b7d1afa49e4cb6c4df38a28544d9b90 data/cosmere/recipes/lerasium_silver_alloy_8.json +ff7614e3e35e55cd4a7c1dbdc65f4a28e5a28f7c data/cosmere/recipes/lerasium_silver_alloy_9.json +5c750462a2a8d59390751aa0f93c472e345659db data/cosmere/recipes/lerasium_steel_alloy_1.json +1f492d66dcfcd4768ff132f31ff95f1ae8ec39e4 data/cosmere/recipes/lerasium_steel_alloy_10.json +582b09f9400e885f22899d4374f441e23afd8362 data/cosmere/recipes/lerasium_steel_alloy_11.json +5a0030f71821d9d7db319f9dd14678ff527d6af8 data/cosmere/recipes/lerasium_steel_alloy_12.json +b4a9946e7c7bfab881dfd19685100327803be4cc data/cosmere/recipes/lerasium_steel_alloy_13.json +d7b12511e4e9c144843033a2a4f8ea41008f37df data/cosmere/recipes/lerasium_steel_alloy_14.json +597a54e0d71adb9765df88d771ef9aac7277dd3f data/cosmere/recipes/lerasium_steel_alloy_15.json +32cf0ac059308064211e156ebd97f9a96a6b9f7d data/cosmere/recipes/lerasium_steel_alloy_16.json +b76286ad2912f9277de0f19a8b767e994192c9c2 data/cosmere/recipes/lerasium_steel_alloy_2.json +e71be3a31a042b37a6310ae39086fff639ca7785 data/cosmere/recipes/lerasium_steel_alloy_3.json +cc1f5508f41a004ed3a0e05cbb22b962cc36b7cc data/cosmere/recipes/lerasium_steel_alloy_4.json +1c38593113deafca3de2b194a26ca48a51a62826 data/cosmere/recipes/lerasium_steel_alloy_5.json +66c4a48eed6df90a6aae04050377975a37b639cf data/cosmere/recipes/lerasium_steel_alloy_6.json +a89db067465587e9558b6f18ab72db0788e98751 data/cosmere/recipes/lerasium_steel_alloy_7.json +952dfc2f64de51fc8389eece21cfafec99156956 data/cosmere/recipes/lerasium_steel_alloy_8.json +eb629b154bc60591f210d7375a2ac4d1d42daa3f data/cosmere/recipes/lerasium_steel_alloy_9.json +01328cb4bdf3c0df18c7fc1ac21fe2b1b789f5e4 data/cosmere/recipes/lerasium_tin_alloy_1.json +39228395c341ba238c633d165b28740fa9debcde data/cosmere/recipes/lerasium_tin_alloy_10.json +7d2643ba9146a6fa12a0d0facafef8b778d5e50d data/cosmere/recipes/lerasium_tin_alloy_11.json +23f366d84695fae8b679d4caf1a4dd91b4f757d0 data/cosmere/recipes/lerasium_tin_alloy_12.json +ca88dc4225abc087550d2ddc2b01e10d48779402 data/cosmere/recipes/lerasium_tin_alloy_13.json +304cc281c682bc366c7e2118fa1d7ddee548ba75 data/cosmere/recipes/lerasium_tin_alloy_14.json +c659c449afe516ac6a776cc8d76981e97889e15d data/cosmere/recipes/lerasium_tin_alloy_15.json +53161f17cd9842049a4bb0c4dffafd2932c5fe34 data/cosmere/recipes/lerasium_tin_alloy_16.json +269f572bca146137606137cdc16037dd85b2ea00 data/cosmere/recipes/lerasium_tin_alloy_2.json +c286748c4a2d09184746a4cec746bdebcadf72d2 data/cosmere/recipes/lerasium_tin_alloy_3.json +3d8383c35b9aa17f79f4e7138c242d4eb60c34d5 data/cosmere/recipes/lerasium_tin_alloy_4.json +615c25e35a4665b8e4ae877d3e17970a1a5db6f4 data/cosmere/recipes/lerasium_tin_alloy_5.json +76d5e4d4001136dc226c77febff887096a6d21ef data/cosmere/recipes/lerasium_tin_alloy_6.json +4ea68a31b8d6092181ca04328df74b42c1db97d6 data/cosmere/recipes/lerasium_tin_alloy_7.json +aa7aeb63fb3ce10dfdad798e914e92f156d83231 data/cosmere/recipes/lerasium_tin_alloy_8.json +e26e91a9299d3b10142940a8b13e1ccb93823541 data/cosmere/recipes/lerasium_tin_alloy_9.json +51b5bd09d86971fd51212770781f33be3f0dfb09 data/cosmere/recipes/lerasium_zinc_alloy_1.json +3501cb9e29cdee586de3a8abdc88a725fc1e4216 data/cosmere/recipes/lerasium_zinc_alloy_10.json +7c3c756dbdd6c6e7d39c28d4a0b5c6b9d36a6538 data/cosmere/recipes/lerasium_zinc_alloy_11.json +178eec2c51a604053669a1ace74cb0503997e33d data/cosmere/recipes/lerasium_zinc_alloy_12.json +15b3dea5505e83cea0576d3af72cc8b3cda3b1f8 data/cosmere/recipes/lerasium_zinc_alloy_13.json +85ff43b7322b1da4d6c2d27c7db8f03bd2bd7493 data/cosmere/recipes/lerasium_zinc_alloy_14.json +0a2c5672849383c04862ec5dea46c1ffa1547b29 data/cosmere/recipes/lerasium_zinc_alloy_15.json +40064a5f08ca537e730aae27df478795e3f20e9f data/cosmere/recipes/lerasium_zinc_alloy_16.json +6dfd7b1485df1e24c2980794141e580cae10e9ee data/cosmere/recipes/lerasium_zinc_alloy_2.json +4a2103550103be00536943e45369d54e94f6ab30 data/cosmere/recipes/lerasium_zinc_alloy_3.json +84e989f2a5506a81a114faa58addb1c5ceb74237 data/cosmere/recipes/lerasium_zinc_alloy_4.json +3184ba956a3676e73e4e6ba4eae7ee9b134198e0 data/cosmere/recipes/lerasium_zinc_alloy_5.json +65d1db430f9b0b941d5b124ab9063f5583ca5693 data/cosmere/recipes/lerasium_zinc_alloy_6.json +054dac36ed4d15de3ac087b7b9d9074303992e76 data/cosmere/recipes/lerasium_zinc_alloy_7.json +6d1aa022f5066475f88c6e78c7db33f139709ee9 data/cosmere/recipes/lerasium_zinc_alloy_8.json +e570bdaf231222e9e0c55e8a544db51ca147f485 data/cosmere/recipes/lerasium_zinc_alloy_9.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json deleted file mode 100644 index efaae7d5d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:atium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:atium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:atium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json deleted file mode 100644 index 43215dd80..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:harmonium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:harmonium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:harmonium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json deleted file mode 100644 index 3b9b1e517..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json deleted file mode 100644 index e49b50cf9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json index c16ed8f3e..adaa2c0d6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -1,20 +1,54 @@ { - "type": "minecraft:crafting_shaped", + "type": "minecraft:crafting_shapeless", "category": "misc", - "key": { - "I": { + "ingredients": [ + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" + }, + { "type": "forge:partial_nbt", "item": "cosmere:atium_nugget", "nbt": "{nuggetSize:16}" } - }, - "pattern": [ - "III", - "III", - "III" ], "result": { "item": "cosmere:atium_ingot" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json index 0349082a5..df415e875 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -1,20 +1,54 @@ { - "type": "minecraft:crafting_shaped", + "type": "minecraft:crafting_shapeless", "category": "misc", - "key": { - "I": { + "ingredients": [ + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" + }, + { "type": "forge:partial_nbt", "item": "cosmere:harmonium_nugget", "nbt": "{nuggetSize:16}" } - }, - "pattern": [ - "III", - "III", - "III" ], "result": { "item": "cosmere:harmonium_ingot" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json index c5aba8f9a..d5eeb63f8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -1,20 +1,54 @@ { - "type": "minecraft:crafting_shaped", + "type": "minecraft:crafting_shapeless", "category": "misc", - "key": { - "I": { + "ingredients": [ + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + }, + { "type": "forge:partial_nbt", "item": "cosmere:lerasatium_nugget", "nbt": "{nuggetSize:16}" } - }, - "pattern": [ - "III", - "III", - "III" ], "result": { "item": "cosmere:lerasatium_ingot" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json index 7de1b6d41..a066875f1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -1,20 +1,54 @@ { - "type": "minecraft:crafting_shaped", + "type": "minecraft:crafting_shapeless", "category": "misc", - "key": { - "I": { + "ingredients": [ + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + }, + { "type": "forge:partial_nbt", "item": "cosmere:lerasium_nugget", "nbt": "{nuggetSize:16}" } - }, - "pattern": [ - "III", - "III", - "III" ], "result": { "item": "cosmere:lerasium_ingot" - }, - "show_notification": true + } } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 92f0137ef..8a412e5c0 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-06T20:37:10.546053 Curios for feruchemy +// 1.20.1 2025-11-07T22:55:54.4904616 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 85835c9a0..273b83185 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-06T20:37:10.594669 Curios for hemalurgy +// 1.20.1 2025-11-07T22:55:54.5240025 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index bca555676..5d034caff 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,8 +4,10 @@ package leaf.cosmere; +import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.helpers.RegistryHelper; +import leaf.cosmere.common.recipe.MetalworkingRecipeBuilder; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import net.minecraft.core.Holder; import net.minecraft.core.HolderLookup; @@ -270,45 +272,52 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .unlockedBy("has_item", has(input)); } - protected void nuggetAlloyRecipe(Consumer consumer, ItemLike output, ItemLike godMetalInput, ItemLike metalInput, int size) + // For items with size + protected ShapelessRecipeBuilder compressRecipe(ItemLike output, ItemLike input) { + if (!(input instanceof IHasSize sizeItemInput)) + { + return null; + } + int size = sizeItemInput.getMaxSize(); + CompoundTag nbt = new CompoundTag(); nbt.putInt("nuggetSize", size); - Ingredient godMetalIngredient = PartialNBTIngredient.of(godMetalInput, nbt); - godMetalIngredient.getItems()[0].setCount(1); - - Ingredient metalIngredient = PartialNBTIngredient.of(godMetalInput, nbt); - godMetalIngredient.getItems()[0].setCount(16); + Ingredient ingredient = PartialNBTIngredient.of(input, nbt); - ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 16) + return ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output) .unlockedBy("has_item", has(output)) - .requires(metalIngredient) - .requires(godMetalIngredient) - .save(consumer); + .requires(ingredient, 9); } - // For items with size - protected ShapedRecipeBuilder compressRecipe(ItemLike output, ItemLike input) { - if(!(input instanceof IHasSize sizeItemInput)) return null; - int size = sizeItemInput.getMaxSize(); + protected MetalworkingRecipeBuilder alloyingRecipe(ItemLike output, ItemLike input, ItemLike godInput, int size) + { + if (!(godInput instanceof IHasMetalType godMetalItemInput)) return null; + if (!(input instanceof IHasMetalType metalItemInput)) return null; CompoundTag nbt = new CompoundTag(); nbt.putInt("nuggetSize", size); - Ingredient ingredient = PartialNBTIngredient.of(input, nbt); + int[] metalIds = { godMetalItemInput.getMetalType().getID(), metalItemInput.getMetalType().getID() }; + nbt.putIntArray("alloyedMetals", metalIds); - return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) - .define('I', ingredient) // tag filtered by NBT - .pattern("III") - .pattern("III") - .pattern("III") - .unlockedBy("has_item", has(input)); + CompoundTag godNbt = new CompoundTag(); + godNbt.putInt("nuggetSize", size); + + Ingredient ingredient = Ingredient.of(input); + Ingredient godIngredient = PartialNBTIngredient.of(godInput, godNbt); + + return MetalworkingRecipeBuilder.metalworking(RecipeCategory.MISC, output) + .resultNbt(nbt) + .requires(ingredient, 15) + .requires(godIngredient, 1) + .unlockedBy("has_item", has(output)); } protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) .define('I', input) - .define('J', center) + .define('J', center) .pattern("III") .pattern("IJI") .pattern("III") diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 34a03e581..b1d5d9788 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -89,6 +89,23 @@ protected void addRecipes(Consumer consumer) decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } + Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; + + if(!metalType.isGodMetal()) + { + for (Metals.MetalType godMetal : godMetals) + { + for (int i = 1; i <= 16; i++) + { + alloyingRecipe( + ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(), + ItemsRegistry.METAL_NUGGETS.get(metalType).get(), + ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get(), + i).save(consumer, new ResourceLocation(Cosmere.MODID, godMetal.getName() + "_" + metalType.getName() + "_alloy_" + i)); + } + } + } + if (metalType.isAlloy()) { Item outputBlend = ItemsRegistry.METAL_RAW_BLEND.get(metalType).asItem(); diff --git a/src/main/java/leaf/cosmere/client/ClientModEvents.java b/src/main/java/leaf/cosmere/client/ClientModEvents.java index 092378426..d0defa633 100644 --- a/src/main/java/leaf/cosmere/client/ClientModEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientModEvents.java @@ -6,12 +6,15 @@ import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.client.gui.MetalworkingTableScreen; import leaf.cosmere.client.gui.SpiritwebMenu; import leaf.cosmere.client.render.CosmereRenderers; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.registry.MenuRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.renderer.texture.TextureAtlas; import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; @@ -88,4 +91,9 @@ public static void renderSpiritwebHUD(final GuiGraphics guiGraphics) }); } + + @SubscribeEvent + public static void onRegisterScreens(FMLClientSetupEvent e) { + MenuScreens.register(MenuRegistry.METALWORKING_TABLE_MENU.get(), MetalworkingTableScreen::new); + } } diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java new file mode 100644 index 000000000..6c46a56c0 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java @@ -0,0 +1,33 @@ +package leaf.cosmere.client.gui; + +import net.minecraft.core.NonNullList; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.Slot; +import net.minecraft.world.item.ItemStack; + +public class MetalworkingResultSlot extends Slot { + private final MetalworkingTableMenu menu; + private final Player player; + + public MetalworkingResultSlot(MetalworkingTableMenu menu, Player player, int pSlot, int pX, int pY) { + // slot index, x, y are controlled by the menu when adding; we just need a dummy container for ctor, but we won't use it + super(menu.getResultContainer(), pSlot, pX, pY); + this.menu = menu; + this.player = player; + } + + @Override + public boolean mayPlace(ItemStack stack) { return false; } + + @Override + public ItemStack remove(int amount) { + // allow removing crafted stack even if container impl disallows normal removes + return this.getItem().split(amount); + } + + @Override + public void onTake(Player player, ItemStack crafted) { + crafted.onCraftedBy(player.level(), player, crafted.getCount()); + menu.onCrafted(player, crafted); + } +} diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java new file mode 100644 index 000000000..19c7e0782 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java @@ -0,0 +1,185 @@ +package leaf.cosmere.client.gui; + +import leaf.cosmere.common.recipe.MetalworkingRecipe; +import leaf.cosmere.common.registry.BlocksRegistry; +import leaf.cosmere.common.registry.MenuRegistry; +import net.minecraft.core.BlockPos; +import net.minecraft.core.NonNullList; +import net.minecraft.world.Container; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.*; +import net.minecraft.world.item.crafting.Recipe; + +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.Level; + +import java.util.Optional; + +public class MetalworkingTableMenu extends AbstractContainerMenu +{ + private final Level level; + private final ContainerLevelAccess access; + private final Player player; + + private final CraftingContainer craftSlots = new TransientCraftingContainer(this, 4, 4); + private final ResultContainer resultSlots = new ResultContainer(); + + public MetalworkingTableMenu(int id, Inventory playerInv, BlockPos pos) + { + super(MenuRegistry.METALWORKING_TABLE_MENU.get(), id); + this.level = playerInv.player.level(); + this.player = playerInv.player; + this.access = ContainerLevelAccess.create(level, pos); + + // Output slot (index 0) + // was: new ResultSlot(playerInv.player, craftSlots, resultSlots, 0, 134, 44) + Slot result = new MetalworkingResultSlot(this, playerInv.player, 0, 134, 44); + result.index = 0; // ensure index 0 + this.addSlot(result); + + // 4×4 crafting grid (indexes 1..16) + int index = 1; + for (int y = 0; y < 4; y++) + { + for (int x = 0; x < 4; x++) + { + this.addSlot(new Slot(craftSlots, index - 1, 22 + x * 18, 17 + y * 18)); + index++; + } + } + + // Player inventory + int invY = 102; + for (int r = 0; r < 3; r++) + { + for (int c = 0; c < 9; c++) + { + this.addSlot(new Slot(playerInv, c + r * 9 + 9, 8 + c * 18, invY + r * 18)); + } + } + // Hotbar + for (int c = 0; c < 9; c++) + { + this.addSlot(new Slot(playerInv, c, 8 + c * 18, invY + 58)); + } + + // Initial compute + this.slotsChanged(craftSlots); + } + + @Override + public void slotsChanged(Container container) + { + super.slotsChanged(container); + if (!level.isClientSide) + { + updateResult(); + } + } + + private void updateResult() + { + ItemStack out = ItemStack.EMPTY; + + Optional> r = + level.getRecipeManager().getRecipeFor(MetalworkingRecipe.TYPE, craftSlots, level); + + if (r.isPresent()) + { + MetalworkingRecipe recipe = (MetalworkingRecipe) r.get(); + out = recipe.assemble(craftSlots, level.registryAccess()); + } + + resultSlots.setItem(0, out); + broadcastChanges(); + } + + @Override + public void removed(Player player) + { + super.removed(player); + this.access.execute((level, pos) -> this.clearContainer(player, this.craftSlots)); + this.resultSlots.clearContent(); + } + + @Override + public boolean stillValid(Player player) + { + return stillValid(access, player, BlocksRegistry.METALWORKING_TABLE.getBlock()); + } + + @Override + public ItemStack quickMoveStack(Player player, int index) { + ItemStack ret = ItemStack.EMPTY; + Slot slot = this.slots.get(index); + if (!slot.hasItem()) return ItemStack.EMPTY; + + ItemStack stack = slot.getItem(); + ret = stack.copy(); + + final int RESULT = 0; + final int GRID_START = 1, GRID_END = 17; + final int INV_START = 17, INV_END = 44; + final int HOT_START = 44, HOT_END = 53; + + if (index == RESULT) { + if (!this.moveItemStackTo(stack, INV_START, HOT_END, true)) return ItemStack.EMPTY; + slot.onTake(player, stack); // triggers onCrafted → consumes inputs properly + } else if (index >= GRID_START && index < GRID_END) { + if (!this.moveItemStackTo(stack, INV_START, HOT_END, false)) return ItemStack.EMPTY; + } else if (index >= INV_START && index < INV_END) { + if (!this.moveItemStackTo(stack, HOT_START, HOT_END, false)) return ItemStack.EMPTY; + } else if (index >= HOT_START && index < HOT_END) { + if (!this.moveItemStackTo(stack, INV_START, INV_END, false)) return ItemStack.EMPTY; + } + + if (stack.isEmpty()) slot.set(ItemStack.EMPTY); else slot.setChanged(); + if (stack.getCount() == ret.getCount()) return ItemStack.EMPTY; + + slot.onTake(player, stack); + this.slotsChanged(this.craftSlots); + return ret; + } + + public ResultContainer getResultContainer() { return this.resultSlots; } + + void onCrafted(Player player, ItemStack crafted) { + // consume ingredients using YOUR recipe’s remaining items + NonNullList remaining = getRemainingItemsForCurrentRecipe(); + + for (int i = 0; i < remaining.size(); ++i) { + ItemStack inGrid = this.craftSlots.getItem(i); + ItemStack rem = remaining.get(i); + + if (!inGrid.isEmpty()) { + this.craftSlots.removeItem(i, 1); + inGrid = this.craftSlots.getItem(i); + } + + if (!rem.isEmpty()) { + if (inGrid.isEmpty()) { + this.craftSlots.setItem(i, rem); + } else if (ItemStack.isSameItemSameTags(inGrid, rem)) { + rem.grow(inGrid.getCount()); + this.craftSlots.setItem(i, rem); + } else if (!this.player.getInventory().add(rem)) { + this.player.drop(rem, false); + } + } + } + + this.broadcastChanges(); + } + + + private NonNullList getRemainingItemsForCurrentRecipe() { + Optional> r = + level.getRecipeManager().getRecipeFor(MetalworkingRecipe.TYPE, craftSlots, level); + if (r.isPresent()) { + MetalworkingRecipe recipe = (MetalworkingRecipe) r.get(); + return recipe.getRemainingItems(craftSlots); + } + return NonNullList.withSize(16, ItemStack.EMPTY); + } +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java new file mode 100644 index 000000000..457290150 --- /dev/null +++ b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java @@ -0,0 +1,44 @@ +package leaf.cosmere.client.gui; + +import leaf.cosmere.common.Cosmere; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.player.Inventory; + +public class MetalworkingTableScreen extends AbstractContainerScreen +{ + private static final ResourceLocation BG = new ResourceLocation(Cosmere.MODID, "textures/gui/metalworking_table.png"); + + public MetalworkingTableScreen(MetalworkingTableMenu menu, Inventory inv, Component title) + { + super(menu, inv, title); + this.imageWidth = 175; + this.imageHeight = 183; + } + + @Override + protected void renderBg(GuiGraphics gfx, float partialTicks, int mouseX, int mouseY) + { + int x = (this.width - this.imageWidth) / 2; + int y = (this.height - this.imageHeight) / 2; + gfx.blit(BG, x, y, 0, 0, this.imageWidth, this.imageHeight); + + } + + @Override + protected void renderLabels(GuiGraphics gfx, int mouseX, int mouseY) + { + gfx.drawString(this.font, this.title, 21, 6, 0x404040, false); + gfx.drawString(this.font, this.playerInventoryTitle, 8, this.imageHeight - 94 + 2, 0x404040, false); + } + + @Override + public void render(GuiGraphics g, int mouseX, int mouseY, float partial) { + this.renderBackground(g); + super.render(g, mouseX, mouseY, partial); + this.renderTooltip(g, mouseX, mouseY); + } +} + diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index aa719c43d..7b59a9ebb 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -70,6 +70,8 @@ public Cosmere() LootFunctionRegistry.LOOT_FUNCTIONS.register(modBus); GameEventRegistry.GAME_EVENTS.register(modBus); ArgumentTypeRegistry.ARGUMENT_TYPE_INFOS.register(modBus); + MenuRegistry.MENUS.register(modBus); + MenuRegistry.RECIPE_SERIALIZERS.register(modBus); CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); diff --git a/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java b/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java index 2b368d8cd..cd0d5e874 100644 --- a/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java +++ b/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java @@ -4,8 +4,22 @@ package leaf.cosmere.common.blocks; +import leaf.cosmere.client.gui.MetalworkingTableMenu; import leaf.cosmere.common.properties.PropTypes; +import net.minecraft.core.BlockPos; +import net.minecraft.network.chat.Component; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.MenuProvider; +import net.minecraft.world.entity.player.Inventory; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.network.NetworkHooks; public class MetalworkingTableBlock extends BaseBlock { @@ -13,4 +27,28 @@ public MetalworkingTableBlock() { super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); } + + @Override + public InteractionResult use(BlockState state, Level level, BlockPos pos, + Player player, InteractionHand hand, BlockHitResult hit) + { + if (!level.isClientSide) + { + NetworkHooks.openScreen((ServerPlayer) player, new MenuProvider() + { + @Override + public Component getDisplayName() + { + return Component.translatable("block.cosmere.metalworking_table"); + } + + @Override + public AbstractContainerMenu createMenu(int id, Inventory inv, Player p) + { + return new MetalworkingTableMenu(id, inv, pos); + } + }, buf -> buf.writeLong(pos.asLong())); + } + return InteractionResult.sidedSuccess(level.isClientSide); + } } diff --git a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java new file mode 100644 index 000000000..3ea465400 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java @@ -0,0 +1,168 @@ +package leaf.cosmere.common.recipe; + +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonSyntaxException; +import leaf.cosmere.common.registry.MenuRegistry; +import net.minecraft.core.NonNullList; +import net.minecraft.core.RegistryAccess; +import net.minecraft.network.FriendlyByteBuf; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.GsonHelper; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.Level; + +import java.util.ArrayList; +import java.util.List; + +// Shapeless4x4Recipe.java +public class MetalworkingRecipe implements Recipe +{ + public static final RecipeType TYPE = RecipeTypes.METALWORKING; + + private final ResourceLocation id; + private final String group; + private final ItemStack result; + private final NonNullList ingredients; // 1..16 + + public MetalworkingRecipe(ResourceLocation id, String group, ItemStack result, NonNullList ingredients) + { + this.id = id; + this.group = group; + this.result = result; + this.ingredients = ingredients; + } + + @Override + public boolean matches(CraftingContainer input, Level level) + { + if (input.getWidth() != 4 || input.getHeight() != 4) + { + return false; + } + + List inputs = new ArrayList<>(); + for (int i = 0; i < 16; i++) + { + ItemStack s = input.getItem(i); + if (!s.isEmpty()) + { + inputs.add(s); + } + } + if (inputs.size() != ingredients.size()) + { + return false; + } + + List pool = new ArrayList<>(ingredients); + outer: + for (ItemStack s : inputs) + { + for (int i = 0; i < pool.size(); i++) + { + if (pool.get(i).test(s)) + { + pool.remove(i); + continue outer; + } + } + return false; + } + return pool.isEmpty(); + } + + @Override + public ItemStack assemble(CraftingContainer input, RegistryAccess access) + { + return result.copy(); + } + + @Override + public boolean canCraftInDimensions(int w, int h) + { + return w * h >= ingredients.size(); + } + + @Override + public ItemStack getResultItem(RegistryAccess access) + { + return result; + } + + @Override + public ResourceLocation getId() + { + return id; + } + + @Override + public RecipeSerializer getSerializer() + { + return MenuRegistry.METALWORKING_SERIALIZER.get(); + } + + @Override + public RecipeType getType() + { + return TYPE; + } + + @Override + public NonNullList getRemainingItems(CraftingContainer input) { + NonNullList list = NonNullList.withSize(input.getContainerSize(), ItemStack.EMPTY); + for (int i = 0; i < list.size(); ++i) { + ItemStack stack = input.getItem(i); + list.set(i, stack.getCraftingRemainingItem()); + } + return list; + } + + // ---- Serializer ---- + public static class Serializer implements RecipeSerializer + { + @Override + public MetalworkingRecipe fromJson(ResourceLocation id, JsonObject json) + { + String group = GsonHelper.getAsString(json, "group", ""); + + JsonArray arr = GsonHelper.getAsJsonArray(json, "ingredients"); + NonNullList ings = NonNullList.create(); + for (JsonElement el : arr) { + Ingredient ingredient = Ingredient.fromJson(el); + if (!ingredient.isEmpty()) { + ings.add(ingredient); + } + } + + if (ings.isEmpty() || ings.size() > 16) + throw new JsonSyntaxException("Shapeless 4x4 requires 1–16 ingredients"); + + ItemStack result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); + return new MetalworkingRecipe(id, group, result, ings); + } + + @Override + public MetalworkingRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf buf) + { + String group = buf.readUtf(); + int count = buf.readVarInt(); + NonNullList ings = NonNullList.withSize(count, Ingredient.EMPTY); + for (int i = 0; i < count; i++) ings.set(i, Ingredient.fromNetwork(buf)); + ItemStack result = buf.readItem(); + return new MetalworkingRecipe(id, group, result, ings); + } + + @Override + public void toNetwork(FriendlyByteBuf buf, MetalworkingRecipe r) + { + buf.writeUtf(r.group); + buf.writeVarInt(r.ingredients.size()); + for (Ingredient i : r.ingredients) i.toNetwork(buf); + buf.writeItem(r.result); + } + } +} diff --git a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java new file mode 100644 index 000000000..7ea46b5e4 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java @@ -0,0 +1,184 @@ +package leaf.cosmere.common.recipe; + +import com.google.common.collect.Lists; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import leaf.cosmere.common.registry.MenuRegistry; +import net.minecraft.advancements.Advancement; +import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.advancements.RequirementsStrategy; +import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.data.recipes.CraftingRecipeBuilder; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.ItemLike; + +import javax.annotation.Nullable; +import java.util.Iterator; +import java.util.List; +import java.util.function.Consumer; + +public class MetalworkingRecipeBuilder extends CraftingRecipeBuilder implements RecipeBuilder { + private final RecipeCategory category; + private final Item result; + private final int count; + private final List ingredients = Lists.newArrayList(); + private final Advancement.Builder advancement = Advancement.Builder.recipeAdvancement(); + @Nullable + private String group; + @Nullable + private CompoundTag resultNbt; + + public MetalworkingRecipeBuilder(RecipeCategory category, ItemLike result, int count) { + this.category = category; + this.result = result.asItem(); + this.count = count; + } + + public static MetalworkingRecipeBuilder metalworking(RecipeCategory category, ItemLike result) { + return new MetalworkingRecipeBuilder(category, result, 1); + } + + public static MetalworkingRecipeBuilder metalworking(RecipeCategory category, ItemLike result, int count) { + return new MetalworkingRecipeBuilder(category, result, count); + } + + public MetalworkingRecipeBuilder requires(TagKey tag) { + return this.requires(Ingredient.of(tag)); + } + + public MetalworkingRecipeBuilder requires(ItemLike item) { + return this.requires(item, 1); + } + + public MetalworkingRecipeBuilder requires(ItemLike item, int quantity) { + for (int i = 0; i < quantity; ++i) { + this.requires(Ingredient.of(item)); + } + return this; + } + + public MetalworkingRecipeBuilder requires(Ingredient ingredient) { + return this.requires(ingredient, 1); + } + + public MetalworkingRecipeBuilder requires(Ingredient ingredient, int quantity) { + for (int i = 0; i < quantity; ++i) { + this.ingredients.add(ingredient.toJson()); + } + return this; + } + + public MetalworkingRecipeBuilder requiresRaw(JsonElement rawIngredientJson) { + this.ingredients.add(rawIngredientJson); + return this; + } + + public MetalworkingRecipeBuilder resultNbt(@Nullable CompoundTag nbt) { + this.resultNbt = nbt == null ? null : nbt.copy(); + return this; + } + + public MetalworkingRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { + this.advancement.addCriterion(name, trigger); + return this; + } + + public MetalworkingRecipeBuilder group(@Nullable String group) { + this.group = group; + return this; + } + + public Item getResult() { + return this.result; + } + + public void save(Consumer consumer, ResourceLocation id) { + this.ensureValid(id); + this.advancement.parent(ROOT_RECIPE_ADVANCEMENT).addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)).rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(id)).requirements(RequirementsStrategy.OR); + consumer.accept(new Result(id, this.result, this.count, this.group == null ? "" : this.group, determineBookCategory(this.category), this.ingredients, this.advancement, id.withPrefix("recipes/" + this.category.getFolderName() + "/"), this.resultNbt)); + } + + private void ensureValid(ResourceLocation id) { + if (this.ingredients.isEmpty() || this.ingredients.size() > 16) { + throw new IllegalStateException("Metalworking recipe " + id + " must have 1..16 ingredients"); + } + if (this.advancement.getCriteria().isEmpty()) { + throw new IllegalStateException("No way of obtaining recipe " + id); + } + } + + public static class Result extends CraftingRecipeBuilder.CraftingResult { + private final ResourceLocation id; + private final Item result; + private final int count; + private final String group; + private final List ingredients; + private final Advancement.Builder advancement; + private final ResourceLocation advancementId; + @Nullable + private final CompoundTag resultNbt; + + public Result(ResourceLocation id, Item result, int count, String group, CraftingBookCategory category, List ingredients, Advancement.Builder advancement, ResourceLocation advancementId, @Nullable CompoundTag resultNbt) { + super(category); + this.id = id; + this.result = result; + this.count = count; + this.group = group; + this.ingredients = ingredients; + this.advancement = advancement; + this.advancementId = advancementId; + this.resultNbt = resultNbt; + } + + public void serializeRecipeData(JsonObject json) { + super.serializeRecipeData(json); + if (!this.group.isEmpty()) { + json.addProperty("group", this.group); + } + JsonArray arr = new JsonArray(); + Iterator it = this.ingredients.iterator(); + while (it.hasNext()) { + arr.add(it.next()); + } + json.add("ingredients", arr); + JsonObject res = new JsonObject(); + res.addProperty("item", BuiltInRegistries.ITEM.getKey(this.result).toString()); + if (this.count > 1) { + res.addProperty("count", this.count); + } + if (this.resultNbt != null && !this.resultNbt.isEmpty()) { + res.addProperty("nbt", this.resultNbt.toString()); + } + json.add("result", res); + } + + public RecipeSerializer getType() { + return MenuRegistry.METALWORKING_SERIALIZER.get(); + } + + public ResourceLocation getId() { + return this.id; + } + + @Nullable + public JsonObject serializeAdvancement() { + return this.advancement.serializeToJson(); + } + + @Nullable + public ResourceLocation getAdvancementId() { + return this.advancementId; + } + } +} diff --git a/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java b/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java new file mode 100644 index 000000000..19b764191 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java @@ -0,0 +1,11 @@ +package leaf.cosmere.common.recipe; + +import leaf.cosmere.common.Cosmere; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.item.crafting.RecipeType; + +public class RecipeTypes +{ + public static final RecipeType METALWORKING = RecipeType.simple( + new ResourceLocation(Cosmere.MODID, "metalworking")); +} diff --git a/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java b/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java new file mode 100644 index 000000000..83493699f --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java @@ -0,0 +1,30 @@ +package leaf.cosmere.common.registry; + +import leaf.cosmere.client.gui.MetalworkingTableMenu; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.recipe.MetalworkingRecipe; +import net.minecraft.core.BlockPos; +import net.minecraft.world.inventory.MenuType; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraftforge.common.extensions.IForgeMenuType; +import net.minecraftforge.registries.DeferredRegister; +import net.minecraftforge.registries.ForgeRegistries; +import net.minecraftforge.registries.RegistryObject; + +public class MenuRegistry +{ + + public static final DeferredRegister> MENUS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, Cosmere.MODID); + + public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cosmere.MODID); + + public static final RegistryObject> METALWORKING_TABLE_MENU = + MENUS.register("metalworking_table", + () -> IForgeMenuType.create((windowId, inv, buf) -> + new MetalworkingTableMenu(windowId, inv, BlockPos.of(buf.readLong())))); + + // Only shapeless 4x4 + public static final RegistryObject> METALWORKING_SERIALIZER = + RECIPE_SERIALIZERS.register("metalworking", MetalworkingRecipe.Serializer::new); + +} diff --git a/src/main/resources/assets/cosmere/textures/gui/metalworking_table.png b/src/main/resources/assets/cosmere/textures/gui/metalworking_table.png new file mode 100644 index 0000000000000000000000000000000000000000..d5b04b6870bfe44775a5913b98d9a440ee151b62 GIT binary patch literal 1332 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEim!2+;Ar*7p+`a9q94X>( z(MU6-`u6p$Y){?Q_2=4;-YpXSapmim`PVu14yPrF zz0ZI0dN!xt!L;HZ8$}x>V|@AS#nZOmejESi!nuU_i}p+(K7BGectTEIo`3!Aw`Kny zO+LW6?*D)JcKN7v>I&Wr3O=||&P0Yg_wV~J-?e-9?0NI%Eer0oc>e8MS(Bj7H_n9r z&2?Sv?d^vfqaVw}?@AKUW5j0^nk_(+-|RQu|Nq`@OM`9pa{PAJ7ja29_MP7-_`(Fp zlb3EhXK>t2!R?_OLklMqZN9VRZ`bVk$wCZ#etUQR6g9U$uEHRo21aG38@bM(KQH`e z3d5QXjt{|18;q0=_;VcK>SVaD%Al>vRMXC|W(LOx(fw>PXYRC@*`J^P;FBcCmgo7x zjCPwn7`}BI``w-Qd0%6CZ}Goxi6uXN_VhZW&nSN5ZMffd&HPv^i$5}t z0R(}pW_R0I`TP5?XCLP8%wswGamUN=yf)c$9-lAs|NP@eMaA8`?Z2m=J+l5LM@gII zyB)?{-*LwjTJQq7XWSMTpJ@!#*(As@Ek*f4O$?L63CK_2wG4%g5OK-8%dH&+@!CV$2AXDC)snX_0O%9Or!_tgN z_qZ+5#sMwfEO=th!{-}hq#Msj*7fx|oZbi)xWTbShQv@&C~lj7xTr6WrAhE6hl%`j zcnUIM*v2&5_|TmG=*F4-YY#l*u|IzH<<5|f%zSA2;XLKiPe}IR1 zLEt_6f5!c_3}*Rp<-6yaizlu7S9|x)ojX1Sns*rH96xUUp|t7rgAeBq%;reUV{#%G uQA19_4SQgb_y51R*r)A41{ Date: Sat, 8 Nov 2025 09:55:52 -0500 Subject: [PATCH 1044/1090] updating textures --- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 3 ++- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../java/leaf/cosmere/items/ItemModelsGen.java | 5 +++++ .../common/eventHandlers/ColorHandler.java | 13 +++++-------- .../common/items/GodMetalNuggetItem.java | 2 +- .../cosmere/textures/item/metal_blend.png | Bin 0 -> 50729 bytes .../cosmere/textures/item/metal_ingot.png | Bin 0 -> 49943 bytes .../cosmere/textures/item/metal_nugget.png | Bin 0 -> 50594 bytes .../assets/cosmere/textures/item/metal_raw.png | Bin 0 -> 50813 bytes 9 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_blend.png create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_ingot.png create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/metal_raw.png diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 7e15aac5b..eec78e7c8 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-08T13:50:38.9083728 Item Models: cosmere +// 1.20.1 2025-11-07T23:46:55.9845752 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json @@ -23,6 +23,7 @@ d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_bl 7f1c2aba76d0cfe4c1b46a095ab28fcb27eb2076 assets/cosmere/models/item/electrum_blend.json ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json +8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/god_metal_alloy_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 5c9b4995e..bf096d79f 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-10-30T22:51:22.3937334 Languages: en_us -1630e27aabd5dd01ce609e67c426c1f9c77a78b1 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-07T23:46:55.9880739 Languages: en_us +df482592b1e659e8393f246522ecfd3a16c2f4a0 assets/cosmere/lang/en_us.json diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index c30458d6e..b3b9c2d3f 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -41,6 +41,11 @@ protected void registerModels() { continue; } + else if (item instanceof GodMetalAlloyNuggetItem) + { + simpleItem(path, "metal_nugget"); + continue; + } ////otherwise set specific textures based on these item types //else if (item instanceof MetalIngotItem) //{ diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 8e079b56b..73076c2eb 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -40,12 +40,9 @@ public static void init() { if(tintIndex == 0) { - if(itemStack.getItem() instanceof IHasAlloy alloyItem) - { - HashSet metals = alloyItem.readMetalAlloyNbtData(itemStack); - if(metals != null) return alloyItem.getColourValue(metals); - } - return ((IHasColour) itemStack.getItem()).getColourValue(); + if(!(itemStack.getItem() instanceof IHasAlloy alloyItem)) return -1; + HashSet metals = alloyItem.readMetalAlloyNbtData(itemStack); + return alloyItem.getColourValue(metals); } return -1; }; @@ -87,13 +84,13 @@ public static void init() //todo temp? if (//!itemNamespace.equals("surgebinding") && !itemNamespace.equals("cosmeretools") - //&& !itemNamespace.equals("cosmere") + && !itemNamespace.equals("cosmere") ) { continue; } - if (item instanceof IHasColour || item instanceof IHasAlloy) + if (item instanceof IHasAlloy) { itemColors.register(itemColorHandler, item); } diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 6ac6c69e5..72a9907a6 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -64,7 +64,7 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity public boolean isFoil(ItemStack itemStack) { // God Metals should have foil - return true; + return super.isFoil(itemStack); } @Override diff --git a/src/main/resources/assets/cosmere/textures/item/metal_blend.png b/src/main/resources/assets/cosmere/textures/item/metal_blend.png new file mode 100644 index 0000000000000000000000000000000000000000..adc5358beb8ace45730bae1cae045e6d0da38aab GIT binary patch literal 50729 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 O;qDFX57ck{`u_`LinpWy literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/metal_ingot.png b/src/main/resources/assets/cosmere/textures/item/metal_ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..ec32d35a062fc83f29b96f5260af42604e9f6bdf GIT binary patch literal 49943 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�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 QKOgQs(*8*OhyKL>1xQGDmjD0& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/metal_raw.png b/src/main/resources/assets/cosmere/textures/item/metal_raw.png new file mode 100644 index 0000000000000000000000000000000000000000..b06053bf5365ec4698957aa838a571d471dbcc4f GIT binary patch literal 50813 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 SZ-tx>V3wH3&gZW-oaFXwahcMDL7Q&oA| zcbs_Ib-Kb&x{}(JD0}40qCbe7m3yxwV}cEv+dKX z=h)=ldrGFm#41q*2{{?Dcxu=Ct}QeKUpE6`!bFItW~>)qToDNyLujIQOWc%iYX<7r zi|<<GHuVo_JZ=FLU!4i5%_7?Gej=Zjv~l-`3@b% zC;|Xxl}7GKaZgnE3{Ky8O<`YJ!m-TtGO-RSKESo_u83NAzg?lXo6Z_25&#kJiOK}V zgfT`k3q9JoAYDa!-V;p<`WPm#FG?$FgraJeRF*Ht!aPRSwjo~b^=%ra9AYkku7%55 z0-vj&oqWz+KKzhOqkKDHk`EjrCZYPk$Y>imqg_7p(Q&5}@-v%+o_R98(~OXq`RBdr zdxn+neqX+hp~8?dj2gI^^xll}DS4mRG0l4FnN0DEMByRjBk>4V5<3h`shDIoTj=rla3)c$vn&T9kCg!h}EFK+=hnbxz8fcv?`-B$VB#g)4;}FJnp!M&^=hG*;J5zCkr@wx+7?1nu;C1Kkbx>6YFMasv)_DBH z$;+-@+xh6nw;rGFJni9ccXzs*)9G~QDujEHx5pZ54zj8A3Yj6 zdF^YD-x}}hko=hbHX5KxbPwJks5|F^$)+Ui(wL3e~rvb4<^7uO zd;5QLzfWmzy$*9vq)bf5CQSnevLltnZv~hU%jECS{r|E_pYmnKX`Yw?+9&Cd@)_Jw z29{6!6^Dxd?OZ?R*(be>Uc5{85Qb*#p-wM#cyzYH;ueRy@tfD~b*Y=buQz7VilaF> zeQ=r&w>i(X2THCV&)m5<-^Dx0KfwWC_^3nM33J{N>ZV@F@eBzKST@mfP8dd~HT7N= zOMdP6&e4sdTiv7QLE_w{k854JINoI$>gi;-b97rg=lMT+ux{lqpFCtOaJe0S^QtFr zcf*^f(}U?2PUz0nSH1G!<-he$uUvV?Z@i{19`fJ%-S1S7JohVJ@Uw4!Sbyb5Uh>Xo z{opqrsF!@{*MIJB9sJGbyiuS2kFWa4=J0vX`P|dL^-Wdw(pSIiU;X0uebbvh@SX4a z^~ZkkH=g;z7eDm3f8+%pe&>gO?&rVaZ6Ck$jO^nt_@y8F!(aN5kG%iKKlbD&e)khU z@v*=5_U5nt{3i~cdHenE3%`Hozr642uYIL`@4MggWuNwY-}|HHk>7Lw?c+cD>Hq%4 zul?v7|Kz9c{F#@3@cV!1V_*EeU-vbi^>v^Bvgvyd4&HP9iTCvX?8?9SpTF>VfB!|l zS6};vU;n_zU;mJO@BMFk@C#r1tM7lsTYme)&z^65&y|<{gYW;EpLpwMyfOQ^51(8y zzi{}02mktqK6d0KzB_y9cam@U+He2hul&IO`sR21^Y8iTHy`|? z=iT_&FF*X?Z+*@O9(=|JKli(S{F!fh#jlQk5S~AO$5;LGPd@kh^XC`7|K@kS`I+ze z$VWf=LHCL;`GFrfec{Q!_}QPSU-b_4k^lb3-+1FMneY3R)7u})f9i{0{I37-gFo~~ z?;iUXeEA<<{rwj`>(gHUY5(@qzv0P0{yPsHKKC6T_5GDE`Q`8ahj06#pZm?1yz|>m z-~NJcx$(wK{@6GC$A_QuGoSJ6Z~M$w|IrtHBFAm`1yZ`_I literal 0 HcmV?d00001 From a8bbd14fee880847091dd2dff7d29a160115aac9 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sat, 8 Nov 2025 13:18:05 -0500 Subject: [PATCH 1045/1090] removing 4x4 crafting method --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 1090 +---------------- .../recipes/misc/atium_ingot.json | 35 + .../recipes/misc/harmonium_ingot.json | 35 + .../recipes/misc/lerasatium_ingot.json | 35 + .../recipes/misc/lerasium_ingot.json | 35 + .../java/leaf/cosmere/BaseRecipeProvider.java | 29 - .../main/java/leaf/cosmere/RecipeGen.java | 15 - .../leaf/cosmere/client/ClientModEvents.java | 12 - .../client/gui/MetalworkingResultSlot.java | 33 - .../client/gui/MetalworkingTableMenu.java | 185 --- .../client/gui/MetalworkingTableScreen.java | 44 - .../java/leaf/cosmere/common/Cosmere.java | 2 - .../common/blocks/MetalworkingTableBlock.java | 38 - .../common/recipe/MetalworkingRecipe.java | 168 --- .../recipe/MetalworkingRecipeBuilder.java | 184 --- .../cosmere/common/recipe/RecipeTypes.java | 11 - .../cosmere/common/registry/MenuRegistry.java | 24 - 17 files changed, 141 insertions(+), 1834 deletions(-) create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json delete mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java delete mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java delete mode 100644 src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java delete mode 100644 src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java delete mode 100644 src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java delete mode 100644 src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index ccfd3ffb4..3e43ccda5 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-07T23:11:34.9448989 Recipes +// 1.20.1 2025-11-08T13:17:28.9871671 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -141,552 +141,8 @@ f74b4d5daf0b2de67ac1279f4431a8d0a40536a5 data/cosmere/advancements/recipes/misc/ 4677ad6ab84978723788a61856fa18de55cb3f20 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json 78c7450aab83fb92a217ed88c34730957c67bff1 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json d576db25f5c71b4c77958c2104444e7523b04032 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json -b3cd6fe962db54060605e33c3457d8852950bfa3 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_1.json -00e54711ea6edc6d08c85bfe9892687471a3c09b data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_10.json -039ae6d634594b918ed72dfc4c847a7c58f9de00 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_11.json -9d2ea1cb6e029b25dd68d6b32eeed1359dbedbf5 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_12.json -3d4704c6167714aa2bcea976b1d4c2754212fd80 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_13.json -9b34087f60ef32c4c7663f424ad5188493559c23 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_14.json -6736b3c157bf426080d857eee62817e276929e59 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_15.json -e3ce6df567e12b2358beca3ad211fbea3cb632f9 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_16.json -058b0784b7f66091fed5aa71a19f4fee3c77480d data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_2.json -676ff2b0e62abcd62ed97b443ce26f5255863d85 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_3.json -70afd5eadef718ce1220fc3f91f4a2974bd266a5 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_4.json -bfa674450a70ad28c01ad619dc0e5c86af99e112 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_5.json -e769c40c127a9a24309c127c2331fdd10000f304 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_6.json -17c40f924da4f5d5c0b109b577605662b6183655 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_7.json -3f1194acb9acd4691846a11486bd924a90f7c830 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_8.json -0deec54a66f66b20f41c19044dd9132a14faafa2 data/cosmere/advancements/recipes/misc/lerasatium_aluminum_alloy_9.json -71f499783964816c0384ef693ad9b761c0601321 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_1.json -1e8c0e010d99aea06c804197057a2c93d9a9ef26 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_10.json -4f79950c1b0e73428585af6ab8914032ffcaa280 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_11.json -6e964b304a59d7e7f5d7bb8c3cc9ea9455f875fe data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_12.json -71bbc18d4f29481839c84ea3998d95632d2d4f32 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_13.json -a8b1f0f5ff8b5cf05595b6b8c4dd89ca49c1d0d0 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_14.json -16cc117d6dd3c7ba825f13b93f340a0320b4629c data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_15.json -272c8ec5e9ce9227f6c4b7c1733f42f8df4e4c68 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_16.json -2ede56b7fb309e999bdb192891916e043adee463 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_2.json -467c0c752a89672d3d85943f84a3daa80d6ed69b data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_3.json -d95a7abe27de3a99c4dea1761ec841d6bb1c530b data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_4.json -586b7c01059022afdb038102489250820d406716 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_5.json -7498d478a9784302b07f28327bcaeddfd355f90c data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_6.json -c079f5bfed926787e54394321d51ed68648f3efa data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_7.json -394de4b61440a5d274a7e259e4e4d49bbef0f585 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_8.json -60c95d5d7b833695112ffaf83057783735a539b0 data/cosmere/advancements/recipes/misc/lerasatium_bendalloy_alloy_9.json -b1ae22b07a72fffe1586362d339a55840e26964b data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_1.json -103db1714a36025670a3ff69321f97f7afa54637 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_10.json -6a3c703cefee3f792021c0d3298f5ddec106e1b2 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_11.json -db0181cb8cfea14599c0d9dada3b6fa05886a92e data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_12.json -9458482b317428449b273a870ef8d3d0e2b69d47 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_13.json -81ff06b3c204bb6e34c6c651539dfa295663b9c9 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_14.json -c92b5c3a6fd6367422f513c7e19c9e10d4fd20c0 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_15.json -7dc06cab14909ae042d98f5faca468b7c79bedda data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_16.json -156941a7d221900043cb110cb421b3a83694b5b7 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_2.json -120fc5b86ddaf9f724b19e3421f45d88a3e6e2ed data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_3.json -c1636ecdeed94b1f49d0febcc64c09a11bfe416d data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_4.json -fbc01d2aea8c69941526553026a33646e75f8fca data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_5.json -549f3cc55422cd12398069fbf2e134fe1a2e5877 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_6.json -34bfa9edf357bf0206c9b14384964a9304ebcc6a data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_7.json -33dd5043fa6da893c2d2dec7ed61ade8c4e81987 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_8.json -bb60c412a2985195927ae53f1122ddeaaf3f7773 data/cosmere/advancements/recipes/misc/lerasatium_brass_alloy_9.json -f11a3fd5ca1b6f0bbf7d301497b02ab8b538ca04 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_1.json -66e49427e47a0876290cabb75010d7d42bf44f5f data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_10.json -ff472207b5cd771273b17ddf7001689a05d96cf9 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_11.json -6b099cb28b06f3a7a5ec39085048681665d46a23 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_12.json -d004a73ab4dadabbf4600d4915f5b47169e01010 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_13.json -de87deb8eec148bbe1ea0281fb2857fc3f7f0a0e data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_14.json -50ed9beb5dd68cabef92d8c9df2384293aa68124 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_15.json -899a3ebf4bed72edc0876ccdc184fa7cc4aa3a55 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_16.json -a9013fa73b25295eb7afd2088bd2d08bb81dacf8 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_2.json -9edb32b08f6ad71d33e28dc16d8b5ac66b24359d data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_3.json -05cd927c1948a0e89dfd9277aec6a59c5de6fe3b data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_4.json -08985dc022f06a0472c0e33b373899f844be8856 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_5.json -28222e50caaeb9c9219f96d0d2fb7436a75b70f6 data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_6.json -6f8133e03da0e22fae0d7638d772aa2f780f51cb data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_7.json -41584188bc76d9387f302223e53ddac3e0cda6bf data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_8.json -398481e06c8fde90f611003f38f31e4283a18f2a data/cosmere/advancements/recipes/misc/lerasatium_bronze_alloy_9.json -debe4fc49233287aa0e46572d93bc8c672f7607b data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_1.json -1bbfbec924204a2b8399d8aa2b243f3d4a31d6a5 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_10.json -5857c9346bfe0088a1b9dbb6e6956a487764ad6e data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_11.json -ade7d654e0939ba6711835fece6c0624bd339faf data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_12.json -f654afd6588ae2bfaf2cd9d5fbf6a2c27919cba7 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_13.json -bdcef26d62721cc072cff3dee9d78a9cdcef5a37 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_14.json -bbe13a3fff584d50358c87b26b28be176dfd644e data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_15.json -b4ce2b025730b001e82c31582bb56ec107d910f0 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_16.json -f0e0cc127fb082dffa0815379f2a504024787ac2 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_2.json -f72cc8f17df5c3f168e36b94fa863bfe26b6bbf2 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_3.json -c1daae6e4e0580988e07db688561e2820787e284 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_4.json -be9aabaa50350d4d30786e50e119899ba0ca2d37 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_5.json -31feb59262d4c0ba184f9e7a75e0a1ee7c43ca84 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_6.json -1fd94f15f9aabcece69ae333911f4438ba5fa353 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_7.json -678846478b8648f36300c9df2b7feda0c086e163 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_8.json -7982fd2cce895fd1d595d04aff06a938c5aa4b52 data/cosmere/advancements/recipes/misc/lerasatium_cadmium_alloy_9.json -d6f6de9f9643022a2eee244590b1df6a231baae2 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_1.json -6d15348541b01240f9d0a77fa3e60dc5e8b8bbc0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_10.json -3d150761dc348731d0eb1540eae55f683e66fc44 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_11.json -38884bfae8d8d93c9006842fcbd49956385eb5df data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_12.json -c46b9ad70cb2ac29a78fe3a5125c1d6266dee7e1 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_13.json -4d474241a781fd0e05fef2920a4442356748e192 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_14.json -54e7b5589f5aadaedd93d90fc1978a92d2d95088 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_15.json -61807fc7a726498e193b3e98a3290c9a7818ffe0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_16.json -1f74a8c59aaab1fc0e58b0fff7631763738ca09c data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_2.json -faa03b411e1f490d2dd38fefd8299748f8e1b0b0 data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_3.json -aeb971f359c5dd490523ff645e7695c3e65a3f9b data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_4.json -e6f1a2727df0e55134cd02da3f51fd2eb22df8eb data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_5.json -5ce07f66124bac0f1135c4d072007eaa3c90be2c data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_6.json -4476c59a48bfbe103cd5aa095b95cf185045553b data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_7.json -0056661d043ae754bc191e940eece92a8a59bb0a data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_8.json -56735509b2cafa9182340b4d921bc0134b035ebd data/cosmere/advancements/recipes/misc/lerasatium_chromium_alloy_9.json -92318ca90607cce4030ce792d6b03bda5d5872d5 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_1.json -3b345df6d048470634479b305912861225f5847c data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_10.json -8cbc33fb700008cd9036eed5ff9e6f3a15d9620a data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_11.json -a2423d585e2b33f9ef1ee5caddcb47cdb646004f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_12.json -1b1c6c720f6c582d69120d2479c457760e95b2e7 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_13.json -32cedb4f039c46028a153092f2b35e4db27c0ab1 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_14.json -6ae8d2ecb43737aab0d0f039f290a09ec7530bb3 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_15.json -0348307144f9597827c8b4963afc914ff3f6fca7 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_16.json -4595fbf512f19848e6866209a78a78f8296d2057 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_2.json -632b0e4cd5864c0271d046af6deaeef58062be5f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_3.json -739c213477d8f8bc5e7a05c5baca03b822369d70 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_4.json -37c56302a196a0ba0fce2f79aa7db5ad7215da42 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_5.json -9d9a285798bd399785e511b84e3859ddda955bae data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_6.json -c222c590070c39651a030ec2d8b381c8a74f216e data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_7.json -8a49021e152048c3420ebb7a8be78a65217f1878 data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_8.json -122c8f38beaae9ea26a79058c169054bff681f7f data/cosmere/advancements/recipes/misc/lerasatium_duralumin_alloy_9.json -da1fb65de55e3ee7d8ab04188de90a16e6fd9eb3 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_1.json -cc11c1301ca31cd529327e54f9134eb208da3c4e data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_10.json -1432c05d7c6c985cbd395c4efd035f771a102306 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_11.json -e0c5bd49e31bcff647510971a5ba5fb01feca945 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_12.json -c9204e8578751eee1892d907e490de4057cee097 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_13.json -e7231150c84670d13a6a062b721ef93a72eead4a data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_14.json -cf0913698bf73e89db7dada48666faeafb038398 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_15.json -7416d49aee954a9561f88a719a9e5ce222d85fbe data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_16.json -d6ca86fded32c6892be9571148eded1f76992f6a data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_2.json -2170af2326a945844476827c2d92a65ab3014cdf data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_3.json -844758ae5e8a816acc96d91776c3d3b984358383 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_4.json -44f57b5be61062315deee9d49d589beb16829c47 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_5.json -12594d781815477b1ca4d9eafe35aa1dc358f5e9 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_6.json -80cf20c6ebd469c783c1aed28a090e66bb97fe57 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_7.json -c17607f72da86ee4a9bc67fcb5bb0f92be2e91cb data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_8.json -ea9971a7d4d8db75ca062d662f3d07aef23ab9d2 data/cosmere/advancements/recipes/misc/lerasatium_electrum_alloy_9.json 684ff3243a45529da2e2eab1341dfbd164d78d17 data/cosmere/advancements/recipes/misc/lerasatium_ingot.json -81fa19689170bf1ae0a9a4f1f3fafb36f3636638 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_1.json -da01c97bea3dc896ed8753e6656452d9f0d83207 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_10.json -a9172713e6ecd7330a907e67bf6b3f95e346c4a1 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_11.json -11a64682491d4b6e9bc2d2bad57739b02de072cd data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_12.json -3e25b38a7fa7521a45209879b7b5424af92c71aa data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_13.json -83f00c488099f4ac599ddcbb8ad57e93646f18d5 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_14.json -309cdc4ab31e85915da3bd52f11942aa75b3392b data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_15.json -fcff8c26d2acebbc0bd776c9232ee5ce65369624 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_16.json -6cf54e308430b16f7b2d9d7f2aff699d5a788f6f data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_2.json -51a998a0f674e6be323fbef6ced9928ef68dab1b data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_3.json -2bdf7e017e33717c3502bf5834b221e73f792add data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_4.json -de9c80efa546d182242698e3332c4c567e755a79 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_5.json -600b5362d08a4f74bd75b76ceb4b250df1a6e7a3 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_6.json -0c2bb527975d59e8453cea32b23d362add80ee66 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_7.json -b66670dae64b60c18ebfa04d44c216aa711b6344 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_8.json -b02ce86aae636f091d89e717fbfd1436b2722172 data/cosmere/advancements/recipes/misc/lerasatium_lead_alloy_9.json -f97d791086dd8cfd3ede4f7ced3ca307912c9dac data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_1.json -1cfcb7ae79a49588eaef625bdd48da7d0e1018cb data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_10.json -b839fdd98a08798050aa1920c1adbed0f03f3e14 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_11.json -774d2008bd6d52415a23cd3db7906150e296a9d4 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_12.json -c00b4789f7d3298268882094f47cf77fc16ae76b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_13.json -6510e15777a79ca714e6a53ffb5b47cd61b7ffbe data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_14.json -824be048b942d525e6ced2fd64e9f1630449fb1b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_15.json -023bee7dfd8158369c3621fc7ea3152f0499eb32 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_16.json -edb9c99c9681d998ae86d5b9094cb811ab1151a1 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_2.json -7476cbdad1bab7d1ef458ed64ecb58e44c5e5abe data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_3.json -56f0bc4cbf8e063f4300c2a1f85a00bd8d0e7ae3 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_4.json -5505b95b94326cfd364165c6d4a607bede3a682f data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_5.json -a51370640e3673f1226f9abbbcfdf1b407466589 data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_6.json -2eb2302e8ef37075eada8d7ecd934b3fd98a7a4b data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_7.json -d761331d96d271cff89c22056d3337483143b83c data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_8.json -3aea6da2a43456ca49e665986e1f917d2b1f053c data/cosmere/advancements/recipes/misc/lerasatium_malatium_alloy_9.json -2c7fda5937802ca5c4e86818674d1e24d1bad524 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_1.json -94c4458a13d78f01a74aa94dd5c286639bca4dd2 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_10.json -7f924485733331c06fb44b1a1480470dc6cb3c6e data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_11.json -11490a6107b152e50ecd783931f37df458508b48 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_12.json -add125f6040f3181a9f99507eea9603be2e39ea1 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_13.json -feed372aa0082af8b0060058baf91c00f61ce7e5 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_14.json -014f649b48f1c7144c0ef41c005fbe1795f4c06a data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_15.json -e7aaa50e16a90bce4d76ddee3ceccb36436116fd data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_16.json -389b459ab34b9d02feaee8097628e44ab45d9f45 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_2.json -afa9320567fe3ada080ca8500ce30407f5066b5f data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_3.json -51d6e6d62d98f74969cccc45355fd02644a1b6be data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_4.json -f00194a5fe24529dcd921559691a3495e26ef95b data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_5.json -dbf8a86a467d4e7e8678383a16d46d646476a1c9 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_6.json -53cf810375e5e7017ee67bd289692dfc92269208 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_7.json -3227a32eebe50a6a31dd69e4c081772ce6cca869 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_8.json -51ac0fe63ffed849f1f604252aafbec6dc36d939 data/cosmere/advancements/recipes/misc/lerasatium_nickel_alloy_9.json -c133a82cebcdf6d26f3d644c526ad5f41ba4f873 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_1.json -340df952e1f2e3534c4ad9d352b122821d940e0e data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_10.json -a1a32b39f5fcc0a018d3b050b4a1017ff1158743 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_11.json -25a0900b1bde53c4d92243277816b2733fb67ed7 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_12.json -08fd130445a81e40cf6116bda682707e87b2e699 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_13.json -cb5fc5ee9c1b7d0582b62fc67d9e04ad4ecff647 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_14.json -c2f1c21cf3dfe7a0662491a72722ab5bbb236515 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_15.json -6a3b3f7f17e09652728b2d06cdae2bde0a64a18b data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_16.json -8dc6ac2350e95d25e932d29fb111481ded263c96 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_2.json -dd7a1ad5afecd9fa6bc89db3543437fe5ac1d3d6 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_3.json -1d1d86965cbd974bae488ec3fb7050eb3223285e data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_4.json -760f4bb8653270de5ec6e19410b86297e20cc577 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_5.json -29f418a3c802fde9ad137a2f858cf712bbc13d02 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_6.json -97868dfca26e1381d83050003bb7719007ece60c data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_7.json -add37e2e823a8ef057dd7884a3998388814c0613 data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_8.json -d25ba6e43ec5972e376efe77fa4b6e228974e60b data/cosmere/advancements/recipes/misc/lerasatium_nicrosil_alloy_9.json -eb00f915e7a395ef6edd08683ef50adfbc7a81d1 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_1.json -bdc409a7c55ec6a4ac66f249f90b78925b475af9 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_10.json -328c3a072da991504c315ac6e7377239c8212246 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_11.json -a3228a5382038f7ab8241eb8fba7083074a3f314 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_12.json -1c6b79b92331f59cc38fb954b3c33466b956de6f data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_13.json -1bdab356cb6889cd99daf3e48ac543060b4738b0 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_14.json -c7805a6e0222f6fb821de813aa64dfd0d3e68290 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_15.json -7ac95bed0f027109fb49f6a209ebc26da4fd46c3 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_16.json -1a32dda9d0addee2ed90382ac4bc4ba4cbad1c39 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_2.json -0cf661a830ca5c8a1053771ddc8e9c9beb0f1376 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_3.json -3a1e8a6e8005e25eb79918b429771df18d383a16 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_4.json -efcfcf046a987c455bebe33fb87a4c8bfcabeb5d data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_5.json -7e221d45c49abaa4a9d31b66a39b7e774b0a8a26 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_6.json -337f94466a27734bcf52704b10ddfbb9a5668fea data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_7.json -0b7fcb8d79688356e32e0c552f13f353a160f5e6 data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_8.json -8d86da003ca887bfe741fd0e3e6071f636957eec data/cosmere/advancements/recipes/misc/lerasatium_pewter_alloy_9.json -5d31e54ddb7cc7da35392bdf5fa6bdccead83c8d data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_1.json -8d9277156181560fc5549f0a02c62f1840d60f7c data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_10.json -0992195f77ff0cb816deaf1d17d9e0f2f5e60b72 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_11.json -08663a945f47c9bf8887f4b0b1a7d2250c7e4c23 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_12.json -338437bd55cf47e9ccc22ee0384a364256fd8e8c data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_13.json -70b456414089e0f9b2fcf81da8bea4aeb4a72917 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_14.json -9991399f130c51c3bc4ad6382757af4d79923c9b data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_15.json -fe0e97d0f667c498c2426450701caa81ee0d9153 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_16.json -0cf1fef0013cbb5ef229fc97f4b9421a1ad32165 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_2.json -3043ea601b868774059d0c6a5dae10416fa97ba6 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_3.json -a3aa824d3d6591208821901a2aadca290085c415 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_4.json -e68cb083c0eb733c5d7e1ca2c123fd26ed1912f2 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_5.json -0b1151942bd704f1ae04f32046ee72ed538e8df7 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_6.json -00d6a1d3573d3ad75d4468287f4cba03cbe3e0b9 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_7.json -fcfdcfb4ded7bf639635c10269209a586b93f512 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_8.json -66d1760f812fd9f2e3984434cc7c4680ec165c47 data/cosmere/advancements/recipes/misc/lerasatium_silver_alloy_9.json -7de3effbbf1efe2a8d3efb5b5a3b7b54bbe58c0f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_1.json -ef1ce4a5d3ed19f279707065c1c6e776037225c5 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_10.json -4af3cdaac9a53d7d6fbb5d93b900eca37b7008c8 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_11.json -ad2e460e9200ebaabf30b3ce24c083e42e2b8161 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_12.json -3ddbc44ec0e742828d23c5ca6095cd7c7ccd05bc data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_13.json -6c3e5a45b1a8b3ccffb1d104be15dbd6a6dc1901 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_14.json -56b8dcd29ec182ba6f28f21deea9ce249a1efb9f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_15.json -1311e77b5f7fc25c0f79886c62ca428a6fe957c0 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_16.json -d9d439cdb5a000cebf13f8b361e9f57ce8dc3ca0 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_2.json -397218e247bbfb8c18c3b68e700ec4b9f07cb840 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_3.json -e2eddbd7a64d023c8f1e71a90a279dd4bb9dd288 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_4.json -ef8b01244f894661ff4642a5157243ccccd1c17d data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_5.json -e857dd3ea6d59a3e5c3ffbc26966c531e7b1a4c9 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_6.json -6bb3173ef5fb5ae6a18df108b93ea56cedb3ec2a data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_7.json -01022b9968c3e4ff48f8c698afbdd6ab5eafd674 data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_8.json -4c82872a94b9d42f41c1489e8e88b4089aa4551f data/cosmere/advancements/recipes/misc/lerasatium_steel_alloy_9.json -9a075fc8854fb22d7b889a4758c0ce2f49e09d98 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_1.json -eb70ff4116ca57e106b736ac47a044997c9ce3ad data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_10.json -b8dbbd559c04dfeedc8ad610bcb219584d6f5f77 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_11.json -ba84b7d1b37800e2c539e2479f1b12c620553fcd data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_12.json -a5f74918d8040c62ba5f84777b6c3fef9e31944f data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_13.json -ca2ae3ab46519590722f7f1c37dc385242f362ba data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_14.json -2b500a27deba6a38609ea400c190134e37201313 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_15.json -7c6d76c6e16b947c67617cb353f851e63219245a data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_16.json -a1b0ad4c240e00baba9592e7afa0d0d1b09ea72f data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_2.json -10d344af8f6135d77b62617733a14cfaa18e19f8 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_3.json -6683a377059ee830a82cfaecf7768b26760d989e data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_4.json -21c0480e41c24e65b325adfa71447fd70abb5cb7 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_5.json -cfe3a7db2ccf2a50f57a194e47ab89afabe03239 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_6.json -0f45a6452f97fab061a791c1d16332a368267b0e data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_7.json -a390e33573953e8f3d920f5d72112936fe042248 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_8.json -e00a09432b01a10664c6a507a6c595dec1d36725 data/cosmere/advancements/recipes/misc/lerasatium_tin_alloy_9.json -a20abd4a9548906e588b51d60ea0151d665b6da6 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_1.json -75de1bf4b53a5c2db523bb6e0d861a125fb613d3 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_10.json -a099a7de0685c9ced82e3f29224d9b1db70a868c data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_11.json -02fe793cafcaae53591a75c621ea1a72bccb2097 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_12.json -7c1facbc00337991a5b6e3ff98b27fb006c54b8d data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_13.json -03b30fab5ffc74c65c3eb7d0fc5ffe92a218b04f data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_14.json -a7979ee0205fa19598573f11d169c5914df8211d data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_15.json -f70339ee80f8dc87ef62932accf646655ed24b56 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_16.json -5b7e220222a8c4ad9db4f02e8392b97e89184884 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_2.json -05b15db7347c0aab2bbb76389202398b74e32a7a data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_3.json -186d4b9001bc35f2887cc51dfc222bf657132064 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_4.json -3fa81b817ec12979066f7526ca3c1d208c573d38 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_5.json -566464c5fc800573b26f0ca96bb9cc2088bda5e4 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_6.json -db40088817c8450f90317c3882e205c792ef4de9 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_7.json -35d0f22041d0cf006423a13badd6d3d0e83a064f data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_8.json -2226e950ee46eec56ae7530e78270329936908d4 data/cosmere/advancements/recipes/misc/lerasatium_zinc_alloy_9.json -89c659ed575a318f9b4dca538bec34d7fd2e961b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_1.json -201894f46d7d40bb01e54623b15212a77fc626d4 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_10.json -35da15e616e9e0d5fff91c0b435236605d677edd data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_11.json -038aec9cbd92eaf37ddfc80bb2cbcee281f1364a data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_12.json -4b1476831d6c69176ed23bcfbdbb416768eb64d0 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_13.json -0189f990bf054c23d0b5e6a57c9fac6e6b60cd32 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_14.json -fa8541527ee876d0dc6378e6b2f7357c60080e7b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_15.json -4092b95e2d73e83b075178b6447569c4177ec9e6 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_16.json -04dbc4ce402e48ee48ff55cfd454ca213ecb5b36 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_2.json -d8547aed3b0fb455628bc44a9c45bc275d9fb322 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_3.json -812931e7dd23cee9c212e3886fbf4c920d7de14d data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_4.json -732a8a0a02677446b6a1c1a53e9f33edc6e8fdc1 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_5.json -77d6c75c63a90c1d21030ee54f42193a64afb500 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_6.json -da02ef46d4bdae3df62f8b415b716a100f6b786b data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_7.json -592d42d6d22cbce65968945284732c06c67c59e4 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_8.json -9923ec15d0e2f52beb4bcf3d55faf69e1ec053d7 data/cosmere/advancements/recipes/misc/lerasium_aluminum_alloy_9.json -8b62f05d2dd0c1ccb37fcba82a9bb80752e37af9 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_1.json -aa246f6b4399e08da5eabde67299a941db6d93e5 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_10.json -c2589a182348afea7342567064377ea87afd7d4c data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_11.json -e16f325d6a8bffe3107f460903473837ecde7065 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_12.json -6f7df23a72c46c2ae774a4544cbc4a02456863d2 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_13.json -7a41b82ebd4a210e602a9352d282c874e756233c data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_14.json -85efeb3c226c9c61ce9c4729f26d8b1ca8c942fd data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_15.json -4dafdc3c21bdf654208d637bea17822e15b94242 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_16.json -10a17c1ca9b7285af3ca242473fcd10ea356d784 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_2.json -b00ec4a67436d0360131619f250056a197260d94 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_3.json -5775084c6a18e30889e6b15eeb076422299c37bd data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_4.json -61c786a4b6edcc11b2bf45fd0183aa8e7db2240e data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_5.json -e09e070dfd6ec48432faf45588f547ab968c5687 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_6.json -6b456c38db1f70a2a2a062b2fee132d9e87697f7 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_7.json -f59661395db584524d14258193f01c82d89914b0 data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_8.json -5b853ea8a968c47f9daea6fbe9c7dab5d0c000ce data/cosmere/advancements/recipes/misc/lerasium_bendalloy_alloy_9.json -8ecfd4d16c9e70ad5dc90a401a8f1aa97cba38c7 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_1.json -1f826b2d858e37a2e1fab9f3b2fbf83f6d05008b data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_10.json -c39b0fd921ff17ecf7b7bb148e2fc14c3a1c3a68 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_11.json -3c7592ca9cbd721e4cf6de1b385d9c784bec1395 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_12.json -0f8b9d0fa290b883439d724352eb88701531f71d data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_13.json -548fb1b9067e5ce4bb8afa8850089db917fd98a8 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_14.json -56c1d76c4e253fccf7f8f08bcc9eadde5497a29b data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_15.json -e6e0623b941cc07ac6bfcdb45328b8e94fa987af data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_16.json -9a08275e5f98b10bba37976d46c5118355ec5207 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_2.json -9a60fac30595688938e478fc81683e661ba23add data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_3.json -71d5b5c8a7bf44b213dc41b118cbdc443c4509bf data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_4.json -a951717b1c32a2a4a4f0df5c66f4e66252d134ce data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_5.json -345b754add8150a781703c837d466ac115614229 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_6.json -e0c704c3576ac327c25ffc2349af868e00407f7d data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_7.json -617d99dacd20f57c88b74d06f4594bbe7dc774d2 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_8.json -d17775c55e1a91933fa6ea07c6c5b1a84aa6cb31 data/cosmere/advancements/recipes/misc/lerasium_brass_alloy_9.json -e0abb16ca86e35d0b532c5d3a56dde0dd93e8fb5 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_1.json -e9fe751bde9c676dbc6540c608c7d206bd222eb6 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_10.json -03ecea921a2066adeb4a2a4087609dc1b43d543e data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_11.json -f4745fefae33c5aaba5dc66138c8875ed660e66e data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_12.json -6ece7254d9c09277be5a66742cfb7baa9d289b9c data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_13.json -441c8df2e4bdf1541714a9a063ec42dc1a8ba108 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_14.json -25cc3bd4e68c2c2dd0d046288686486547839d84 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_15.json -2b11e0f3f70eab8b9b5aedc6aaa94798e0ea1edc data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_16.json -a3f22881220b0ef034ab8af6b69af05bbbcfd2f7 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_2.json -b7c3cab99222a7574bc07d6abc195d2b728c6be9 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_3.json -2b1403d39d77e12707f349e57f436d2008746918 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_4.json -74ac8068deb68ec3ae076ba3cae6731a5abe4ce0 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_5.json -4a9359d9a9d34bba3d4d30b2ba682720ff4f235c data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_6.json -6f61736f65229b7e05740126a887717dff0ed035 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_7.json -1a26f4863d1c13621671d25aea2f35b741eeb928 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_8.json -a47ce533454acb6f2690e96f59832ed67383ef73 data/cosmere/advancements/recipes/misc/lerasium_bronze_alloy_9.json -277e2c0a173b9a513b089ff306bc4c34ccee19b2 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_1.json -af292fa7e01144f6b8ed50a6495cc2245268b089 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_10.json -31c372f337b916ea79e084946226f136eb7219f2 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_11.json -40a5de901bfeb93a4ba923fdd25046f71f5376f7 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_12.json -79269cd4cd51537cb0e744282c5ba2ffb55deb59 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_13.json -2474b9109f3bf93614b45635d7492d940848b1f1 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_14.json -538cf71b3fecd388477434a6ceff65c4873bb905 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_15.json -02c8318da22629192e582887ecea88c613dac504 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_16.json -f0908374789712eb4712016f68ad0e80cb61814d data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_2.json -c968b6e66360657e152b12bf971a7bfea4a55289 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_3.json -22fcf172227fd5fbf55f57b8ca0de702a549acb5 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_4.json -7a0f7fd1ad2e790a2dc0acca25c9f0695478557a data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_5.json -88e6b459e8a60a5c0cabbf2cf78ec811e6b88eb6 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_6.json -bd119415e3488f7aee7fa79b9619eaf6fd782e91 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_7.json -1312d128464c7742a2ba23677c509887df1d5b1c data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_8.json -f64f0f43e3e7450003945c142463b61a136a7c32 data/cosmere/advancements/recipes/misc/lerasium_cadmium_alloy_9.json -39e76bec04b0b1f5c215b23c861b94586c4415c3 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_1.json -ce5836306870675fdc87146cd22e52ec7ee871d4 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_10.json -69c76ca4b30827cfeedd04db365986797b59764d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_11.json -d9ec9e5e9744cc1f20292494bb4010d89e34eab5 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_12.json -cdc7f901725a504be64f8569f7420de830ee083b data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_13.json -1df07ba643900026d79550c187372d7b991e5c3d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_14.json -83b73c48db76a0b4672d745f375dcd6c2a5febe6 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_15.json -46843551fcc5c0be08be05e287dd03e7fc963e77 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_16.json -b2f1528da9aad7620bb37e4b2d725bddd6c3091c data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_2.json -be24e4c8062e7dbd8b64517c40bc71db114779f7 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_3.json -54f02a3c0f17bb4dab44c157004295563862b536 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_4.json -8eb0666b97dfc3ff57aa2646a07ba8082eca3a7f data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_5.json -f0222ccc2e60ebe981f82d3e8740ae4804ec6f0e data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_6.json -4ef80e67b19792451fcdb1fd92e60963494dca63 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_7.json -1c1cb61bc4f9655ac075db6f84907def0e4c477d data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_8.json -18dc48698802ccce5223f80ec92b389258d3d087 data/cosmere/advancements/recipes/misc/lerasium_chromium_alloy_9.json -10d1558cdff2e4536283d28b5ccbedce65b37b58 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_1.json -76fd7b441c62e0549b0121b9a788bb0c21edd6cf data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_10.json -3552ac4bfdd7b780d0d12d7685bc9ae623bf5565 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_11.json -5751d42a089d27fc7fd79a8deb4dbf27e033a855 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_12.json -86b9a0a823950d65979598b6b839f6f8b35f8553 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_13.json -e9150765ccc75a37ee996bdebfc7be3753e693c8 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_14.json -28948b1a0e8777d543018002abbce85816543023 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_15.json -529e9b471586256805c658aa0952da373a7ec60a data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_16.json -b097681839cb1e70a8b44af50de63a50067d154b data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_2.json -fb8beae4dfc0bd6863200b5556f9c040d0b77892 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_3.json -a617242d1ac4bab49694f3fc99841fc40f8bfba5 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_4.json -6a86687d31ce35eb8c1abf60ef557eab3cde6421 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_5.json -495b0553efdeacde37aa87e6a08d1751a60f10da data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_6.json -8f8d1d7e9e069adc4c347cac2f69682ead9e5c6d data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_7.json -21c8765a349ce0b9d0a8c885521fc9d86a893a34 data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_8.json -b6c083534b7dbc51f5a10214a75a901d2b2e691c data/cosmere/advancements/recipes/misc/lerasium_duralumin_alloy_9.json -fdc391a54d8f6971c25683f87b24ad2a1595ee82 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_1.json -73791d7a78b25fe1c1547f9c9d8afadd7d004fae data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_10.json -65495b3db392fd995fda51e285794503562537e9 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_11.json -6e03d5a7bbc27672c57ffecd405c09b8e6b0e882 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_12.json -7c0764136c3c21979bd29b4d4bda3f33ed7514a4 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_13.json -57e0039616231fefefae816621c5cb988afcd691 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_14.json -552164e53f0e1be9d67611307086aeaf67ea397e data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_15.json -1ab7224840692ac6c46bfc30bef66b7d49213258 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_16.json -308b54db315c0668aff840e1142ec241ced8ecda data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_2.json -db5b946fe10c06babfeaed9cf222dc98281dbbee data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_3.json -07802b7407bced00288f8d7184424ef588720cc3 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_4.json -994c853be11fc1034fcf19804e40f6295ce32dee data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_5.json -692d2b162e478d22cedc81ec6aa9c94492103b3d data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_6.json -9cd7ff346605bb957817b1be266697fa691c4a94 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_7.json -641b0f603b31af13648b0cc4e70a677f5bc7343c data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_8.json -5f0008d0d89df718eba196b69ca141633db69b35 data/cosmere/advancements/recipes/misc/lerasium_electrum_alloy_9.json 9284befd1c2b3bae90923e5f176cd65d2454c6f6 data/cosmere/advancements/recipes/misc/lerasium_ingot.json -7742bf30ccc675a52ee78ffe8d3aaf9bb9167e86 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_1.json -6682b415c68aca3bd7af8f2eb138be899f557fd2 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_10.json -2e131fef14edcf0ef5589ffeb209a3ea91587d2e data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_11.json -e747e05b6686e116a54afe21e7d2bfc7f94461f7 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_12.json -7e3217e0c7db7f3017fb3e9a67248a1a16dbb3f2 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_13.json -ae8dd167facb1a501f805b785c7288a276820be0 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_14.json -d0bcd447c88d9a3fc3069afb92efcd73ce2e70ff data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_15.json -37e77afda748fbd9dcf67510c2bb2fd1d0e1f427 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_16.json -54c2b872b70535120bf7f4708e894938cd97489b data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_2.json -599a92871bd4b610558b37cb349176157b737d69 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_3.json -6363d84727a25472da2863d3c31a6ffd0178c3b6 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_4.json -d993d0acc28d500875220bc95ee26b357a72755e data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_5.json -e8666f41677734cf3258c67872050027cb54f4f8 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_6.json -f207e0d4f87bbf221186683d2a944bdd6de0766d data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_7.json -936afebf3d1b018726b9dcd635a788aeb5fadab5 data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_8.json -4ca544c71f613be39a4a6a8c6bfb6d7fadc793cb data/cosmere/advancements/recipes/misc/lerasium_lead_alloy_9.json -cf0209d8f4caca6e982d6d132b56e6c3b8fd6b4b data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_1.json -af0ccb6a847f82ff7b6aacf06cdb063a57f8a44b data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_10.json -c48e14be6989156a19cd6f2d72439a880e1e5634 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_11.json -b2255a6df614ce81d0ad30ca702606dbc0c673e8 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_12.json -731b4dc71294db700dd6d804bc1721ad80ddae93 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_13.json -d261c56f1f2c88b0c817ab286c36b43f00df1d0c data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_14.json -ea357772d27fc4da01a85f3f68539d3d94387170 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_15.json -9d75faa6abf3a2125291499f7473b59223585184 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_16.json -bcac2ef2a59be61d1b043950b8d613f455ea7018 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_2.json -039dc6bee8708befc7bcbfaec5ebdd78d831ab5c data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_3.json -97308874f454cdee98c5858a469a2a57acb783cd data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_4.json -f22aab5a20c6bd64c92462577be29f8d6f7459b4 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_5.json -ef45e56394a01adf35553221667ec3d9377ca24f data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_6.json -fa7179987d8c0e53dc2d60b9d510750b62be3a34 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_7.json -24647f42ed4abd0e02a25a2488044e7a4a675810 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_8.json -8a714b31551326c43da241f4d87a27861d7dace8 data/cosmere/advancements/recipes/misc/lerasium_malatium_alloy_9.json -57df8df3d9576a5a26a69f1becde58654acdb201 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_1.json -2e3dc8b6d4c71df4787056c0417f8c71805e7546 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_10.json -11b658bbc68fde81980e26decd5bc9608a0fffbb data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_11.json -a11c30bf3cd042a621d61a2cb0a98d6a29a5cde7 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_12.json -770e120590b46bf55a181cb681edd89bec95f01b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_13.json -7fd7af49ff3cdba087a4706c05eefba1b83fc723 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_14.json -5e37904a5dfbbb6ced67ac0d89688c9c88be621f data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_15.json -337b53b8af5ff482c620e1cd87d0d3bd7533439b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_16.json -24ff4902ba7ef9027a9b8630a66c31256a18de57 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_2.json -1fa68478619396ce8acc38e93b0003bbea74295f data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_3.json -1f839f121051193494def564a4524e3a4bb70758 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_4.json -6478054a2e98fa1a6a1cfdb785f6fcb9b5d6680b data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_5.json -2de4c390e17941889ffad9718f13e97a544ee14c data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_6.json -0d4b083b70fd163d62a93658b81aea6f64a6d4d3 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_7.json -c0bb369cdfd2c3d544427c636df6e1f0426cfefc data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_8.json -4c4841dc3f76f23e10a3d3bb4c2e2e471b812e04 data/cosmere/advancements/recipes/misc/lerasium_nickel_alloy_9.json -0a1456bd65af5cd8d7b3b74709a90afae6b6d4a8 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_1.json -4f71ec0de8f3fadcc300a905f281e469288319bc data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_10.json -6f7800692e1be8aaee871ff08532daea3def04f3 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_11.json -f0b3d3bdc0e05492f5cbaf47268a65bf273e5845 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_12.json -6b0a87d933ae19b846ef9528a17370bbe67c5b04 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_13.json -2058c8f7bad9fd9a0212d77fd8d1fbf889f06c0b data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_14.json -0413e657389259a8a222347cda797fedb2b3e95e data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_15.json -4c8b7cd34e85c21f61bda70ca63b43c9b4ec65a2 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_16.json -aedbedf908c80be12623dcd9bd390654fb90cf72 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_2.json -fd71197910507052aebbd2f63f0056b8f71c2b4a data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_3.json -80d9dd902b6ce9e217cdc7e0f008d33fddba6abe data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_4.json -3fb1810d74406aa0894a64b57d5669cc39b916f3 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_5.json -d5dfa4bc148ac583a916258586a9a4baaf9122c7 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_6.json -474e9b5b0aaa22a3ee56a9d2f0211e1aa1ab5a5b data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_7.json -60421e7a8a02b3d01e1bf5bdac5e282cd6427c0e data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_8.json -1a9916bd0ed400b63c2eeb0078757c053d916bb9 data/cosmere/advancements/recipes/misc/lerasium_nicrosil_alloy_9.json -4de1b470fc6ae11dc8a26e53c87d5c913872ef72 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_1.json -c831dda0915d6b957a41d36f295189cdd6d1800f data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_10.json -c71c31b59ddc3786e8d8604c3b7e275d7a591dd5 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_11.json -af936f5104e242adc58ee9c1dbdff709329d57be data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_12.json -e97dd34392f5b981dd1181bed22af8a899d65066 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_13.json -faa0498a5124a4410804ff492b59730670a68ebb data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_14.json -f18b699feeb6ab433dc31f36792f1b8531108b3b data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_15.json -b0a7d38d3e7a7c0f4c0aa9dc5306163b18295b44 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_16.json -f85cbcd0c346c6c5312da9a220b58ca48142ff33 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_2.json -1a756b31357f18b59d9d535a359ef8613b60b86b data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_3.json -1de103ad92ffeb3b952e1b253c0c6a86e7a0d36d data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_4.json -6c30fdb52356207f48477e10313a64906573a66c data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_5.json -0f0977881f911c0ebbac76cb1a53f74ed1e9a144 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_6.json -25ede8039a8940b9c2eff1d9e5bbe3c9c0ac0617 data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_7.json -3bf0847379d8aa31454927d996a43a9fdd5236dd data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_8.json -8494590bc77ed4824e52914965300fbc1242a7aa data/cosmere/advancements/recipes/misc/lerasium_pewter_alloy_9.json -cd77ca84d66e54dffcde79b4dbe8794ed1dff9a3 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_1.json -54b1d820917456acca6f4970fa5cdebfc528d907 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_10.json -6f2fcabdd259e4d9578a7fcddf5b4bf3f70c8bd0 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_11.json -8aa9d3fb2c0890fc3309d13863b0b0ac2d01112e data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_12.json -520418e241c90f7152128aa29183ace07e6dbe6b data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_13.json -5bf53731eafa71983ed03fff66d3a86d1688207a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_14.json -e97b4a16ee482ed3546398fd310e837b96180fb5 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_15.json -f8ab9b36c62f44b5130b79f764719aae353c2472 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_16.json -6a5dfa5a05ecdb059de2f2567114a76358860888 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_2.json -383d0ed46677030f7a028cb1864c3e35bad47f9d data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_3.json -d528da914149697d959bbc031d3116bad5f061de data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_4.json -79ad1c1a078e4d00f4aec1e633d643066b5f8c54 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_5.json -ba12c105bc7c0b02615559da2f0eb303addf07f5 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_6.json -bba9a2fa218e450e76c48986c24c5826b7b1a84a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_7.json -dac67b9041e417a11af1166a37c20183d8f5200a data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_8.json -14ec53b75b621ddbed4bd175e8b77bd3f8fb4d78 data/cosmere/advancements/recipes/misc/lerasium_silver_alloy_9.json -91613bdb592c6677a75ba74aba2d66a996c7dcf5 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_1.json -b02a6efb7fef8a453d42cab7fd487fd5681d3e5d data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_10.json -1285c8840600ef52454882bb613bd7adc0d9f6bc data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_11.json -e4c4001f143fb82ed5bccebef2b79830283d9ae4 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_12.json -12bcf72e93bc719e2f2c3708f98480c3a04e401d data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_13.json -340ef8c1a4e6581c833886c88da628a117912f63 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_14.json -fc430cc4e0c577fd3da15353235f5baf2cb66d1b data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_15.json -392b2502eadbcd250c7468558f79f5760d140332 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_16.json -3f00432851cfc9ccf0fb2962f980ce1eeb14670b data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_2.json -f855d96ca5246474eb497cfc1163ba92679276fa data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_3.json -e00becf5f5d656e9f23925ed4450dcd3c6ea4c6f data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_4.json -4227215557bcf2e59e57ace601ddaa2fc26a1a9f data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_5.json -d5b9daf45ba7e2b39b01130ecac66e1dde017b8e data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_6.json -a0e597597c0fc64e80ddf9d8c8aa2b6d14471997 data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_7.json -5d6946c5d633e763a6535c8f322d55fdcf9d480e data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_8.json -6f37e7acf045630551a0fb2d6c527d99b592496a data/cosmere/advancements/recipes/misc/lerasium_steel_alloy_9.json -277ff0b95567713e2e85c77d2878346030bb950e data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_1.json -75c6f8edb27c0f4e09b25348e9950a388b85953d data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_10.json -5c5439822c8bb35022c03661ec9e39d4660fa7a1 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_11.json -c72c458b328ce5769d22edb595b05cfbcacbf17e data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_12.json -7da5d9e1ffcaf5534f74d18063d5e4db2e9c2c3b data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_13.json -27090756256522b016f995718a9db38c8104213d data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_14.json -e9cce962343dff16ec0258bf13c81430fb9dc5f1 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_15.json -45b6c1f28299fb1e5ac7680036f2baaab5f1f187 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_16.json -176e2c32c59ab7b46e68ce4a83034e4e61590554 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_2.json -91573264505bef72f6f0090473198264949385ef data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_3.json -4cd0f287b00bb699b36088eb747abb72e2a01289 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_4.json -94b93277309a5623f4d79fd0a4ef10bd46d973dd data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_5.json -7b0380d48293671a9acef8fc894f5dadf99fc7a4 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_6.json -4d12f101c455000b81b4ccfd39042e2e6874f399 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_7.json -0d52765de141e2910225d327a686f869365d1fe8 data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_8.json -b54cdae6c649ea2a10afacdc09341cead1537a4a data/cosmere/advancements/recipes/misc/lerasium_tin_alloy_9.json -378d0f558c8a789149da1d7f94bf3c7cacb59707 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_1.json -65349ef0e61e93add60d563f1e2eabfc2377dbc2 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_10.json -ac89690e23cb55088e9ddce076e2571a45252c12 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_11.json -4fc18ff4278a13dc5a50b02ffdfd40517bf88422 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_12.json -938509189156ed763c976d3446a129b2305c2f63 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_13.json -b2349a4cba79b6858bd261041565c2c1ba7d859c data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_14.json -d354bbb65464230e8547f6d0a4b71ef38b70edc2 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_15.json -5daa300141f167f8f279d639f4123da433aa9f72 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_16.json -fb98e7e9512c772df462eb3a4b8b44fac4d6d43d data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_2.json -36b55643c840f3a789ee35d7127aedd400af705e data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_3.json -29a3b4d4c1c4930f2bb7626251b4b64c1a63d6c3 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_4.json -34280d116b504fdb4ee2a0ab6364562faa25d7a0 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_5.json -12039d2ac73a53ff55d4c8d73fe1354d39d1b60f data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_6.json -60176ac2b0d61cc67bff63cd8dfbc2b06b106e4e data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_7.json -3984cd60147f704670dad4b4fd7978690033aa76 data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_8.json -155c7e2cbb6508cf287b763c3d63223c321cdd1a data/cosmere/advancements/recipes/misc/lerasium_zinc_alloy_9.json 08b7debec020216a21c67912eeb8cfc7fdddc3c2 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json 8110c799bbb2a42d7921bef97593bf5c47f32416 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json 6b963b370cd777d523d2d29087b4ffafbf3e9d66 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -840,554 +296,10 @@ a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_fro cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -e42aa4a681e24370baa4f55df8f71b67219ab86e data/cosmere/recipes/lerasatium_aluminum_alloy_1.json -fa006e2275cde000f3a079e7a149bcc77b62a993 data/cosmere/recipes/lerasatium_aluminum_alloy_10.json -f07a257003e78d624df298e4a1295907a2dc6499 data/cosmere/recipes/lerasatium_aluminum_alloy_11.json -08fcd8f5bdf2dca2040a0af19d48f2e50ce2f7a1 data/cosmere/recipes/lerasatium_aluminum_alloy_12.json -400e0fc192b3af346dd62ef46cef0420e3aa38a4 data/cosmere/recipes/lerasatium_aluminum_alloy_13.json -06ead81aa9a143aadf7980b4f9c7cb00a127dd4e data/cosmere/recipes/lerasatium_aluminum_alloy_14.json -7467473e355c279f5c8ce98f0afa870060238fa9 data/cosmere/recipes/lerasatium_aluminum_alloy_15.json -54d438cac32e8698d5c590193c698b92c48579eb data/cosmere/recipes/lerasatium_aluminum_alloy_16.json -5b6467ac7c474de9fa5a64f4e3d7896a15c110c0 data/cosmere/recipes/lerasatium_aluminum_alloy_2.json -f5fdb08fa13a70ade1332b764fb6fd23ce992d68 data/cosmere/recipes/lerasatium_aluminum_alloy_3.json -eaeecc42108957d9f1338b20104cf0fb06525d75 data/cosmere/recipes/lerasatium_aluminum_alloy_4.json -0bb61df3c6e2d75b353a5611147ec6d6f7dc4fb3 data/cosmere/recipes/lerasatium_aluminum_alloy_5.json -56f7f559b270976b814d4bf5db84cefd46035aa6 data/cosmere/recipes/lerasatium_aluminum_alloy_6.json -c5134605f5c2a11e710c57fc92aabc13fe24b438 data/cosmere/recipes/lerasatium_aluminum_alloy_7.json -231b5718090ff384ece8a9790301f87911dbdd03 data/cosmere/recipes/lerasatium_aluminum_alloy_8.json -4fac76e6677ae021ee57a34ba440cab00868c20a data/cosmere/recipes/lerasatium_aluminum_alloy_9.json -5149ec118060e106f1c78b597b258e1451ef9b70 data/cosmere/recipes/lerasatium_bendalloy_alloy_1.json -f1421bf0df4b847463488ba5107dcf2ad636aad6 data/cosmere/recipes/lerasatium_bendalloy_alloy_10.json -e9c699d5b834662e14561086479dae9b5631e88d data/cosmere/recipes/lerasatium_bendalloy_alloy_11.json -ecaacad0159b94e41c34d63a5bc44da92910f8e6 data/cosmere/recipes/lerasatium_bendalloy_alloy_12.json -fba252c77ba932e87c3632759ef83765ee63c3ca data/cosmere/recipes/lerasatium_bendalloy_alloy_13.json -f65619f27bf637b2245c93244e6bddb4bf403713 data/cosmere/recipes/lerasatium_bendalloy_alloy_14.json -b3ae6f41f0266940fd6cdab3b4c56c272a2296c0 data/cosmere/recipes/lerasatium_bendalloy_alloy_15.json -847478d6ef76656a51e33357c8194d74f6380d28 data/cosmere/recipes/lerasatium_bendalloy_alloy_16.json -b6681212deb51665c5d8d4ccb04f2ade6685ad87 data/cosmere/recipes/lerasatium_bendalloy_alloy_2.json -45ad198b42cea42cc9ee25bfa8cea2ca74f58540 data/cosmere/recipes/lerasatium_bendalloy_alloy_3.json -8779fd37dc7d2bdf4f912de635be7e227862b50f data/cosmere/recipes/lerasatium_bendalloy_alloy_4.json -0e3e968a8d5a9e63abf720445b1f4ddaa81b61cd data/cosmere/recipes/lerasatium_bendalloy_alloy_5.json -141c37005da47c234f62acf50edb572ecea2e464 data/cosmere/recipes/lerasatium_bendalloy_alloy_6.json -b91e133144fadff772513ef2f1fe2a0036b47f37 data/cosmere/recipes/lerasatium_bendalloy_alloy_7.json -75fdad2737f4068d9891d5bab2de2b48306073cd data/cosmere/recipes/lerasatium_bendalloy_alloy_8.json -a591e9d1e5876f8dc73819c4f0bf1cd6a3cb2383 data/cosmere/recipes/lerasatium_bendalloy_alloy_9.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -159d301af908a999f8b074bb855352e7f2997a4d data/cosmere/recipes/lerasatium_brass_alloy_1.json -b98be440766d9875dd60ee2bc5c9bd059c140339 data/cosmere/recipes/lerasatium_brass_alloy_10.json -1e230b3b5858cf1f50891969a8ea2b47190757ac data/cosmere/recipes/lerasatium_brass_alloy_11.json -f74793ca21d0ffaaba5d134bdb611e509bd956e5 data/cosmere/recipes/lerasatium_brass_alloy_12.json -ec21e63e3aabd387bce9cf2fee0c15959d5e36da data/cosmere/recipes/lerasatium_brass_alloy_13.json -98aec3bd3f17c9f838bd4b47c61327d3cc7fb151 data/cosmere/recipes/lerasatium_brass_alloy_14.json -4b4ab44b69eeaadedc6d195b60e15731d37f99e1 data/cosmere/recipes/lerasatium_brass_alloy_15.json -92c70c15c42bdd1236b9b94e11aa6e388444a021 data/cosmere/recipes/lerasatium_brass_alloy_16.json -1730d63ca0a0f1ec3adb4d5ad67be116d403fdfb data/cosmere/recipes/lerasatium_brass_alloy_2.json -8b7d1f9eeb46c6b92ba02d8071a90553dd476b02 data/cosmere/recipes/lerasatium_brass_alloy_3.json -e52bf11859207d89360f547fb804c94aad669310 data/cosmere/recipes/lerasatium_brass_alloy_4.json -39fb13647615461262f8036dc7860cc1657a4d68 data/cosmere/recipes/lerasatium_brass_alloy_5.json -1ea069209d9cd4bee93653892ea0382e106ccafa data/cosmere/recipes/lerasatium_brass_alloy_6.json -076d152a39c140d83515cfe82fa3d92cf7465ffe data/cosmere/recipes/lerasatium_brass_alloy_7.json -950e5813b30f9f952a4bd1bdea78b11af817ba02 data/cosmere/recipes/lerasatium_brass_alloy_8.json -3e1ba8b37714f16bf6b4ceb7b0d000130b90ff8d data/cosmere/recipes/lerasatium_brass_alloy_9.json -35d52674558b6554c3004693bbb3e6a7a9f134a4 data/cosmere/recipes/lerasatium_bronze_alloy_1.json -b4d1a5db09f78eed29d3851ccf5ba5219987852b data/cosmere/recipes/lerasatium_bronze_alloy_10.json -2c2b5bc6428c8f30e471c4dc9accecb465ea8a82 data/cosmere/recipes/lerasatium_bronze_alloy_11.json -bffab085dd35c8a2580854f7ab2ee04636a4789c data/cosmere/recipes/lerasatium_bronze_alloy_12.json -2d4f7a09b7cdbc0a1c6086d59aa917bc26a2abbf data/cosmere/recipes/lerasatium_bronze_alloy_13.json -781278c742e3839c63f42c57a5118cda52dd49a4 data/cosmere/recipes/lerasatium_bronze_alloy_14.json -1cf4d21a18334f9a862daa19e3e3f790dab953c9 data/cosmere/recipes/lerasatium_bronze_alloy_15.json -4b00bd110dbbdee946b6f9ea92004153adc960fa data/cosmere/recipes/lerasatium_bronze_alloy_16.json -ff7a348f3c18c6279793cd37c76057d4c144e4d5 data/cosmere/recipes/lerasatium_bronze_alloy_2.json -40892b1b58a72af809b665d2bf645ab767a286f2 data/cosmere/recipes/lerasatium_bronze_alloy_3.json -11f9f4f1b590a9ac228021e030f4e3cb8db95869 data/cosmere/recipes/lerasatium_bronze_alloy_4.json -32784655bbd6ff9113753c04e38e45dc0c1d1b60 data/cosmere/recipes/lerasatium_bronze_alloy_5.json -0ebb1f743c1bc8d74b09d5fa73c0ccc323164b33 data/cosmere/recipes/lerasatium_bronze_alloy_6.json -5a860b39a6edbbfa9e90771d9ade6b7c4d368fcd data/cosmere/recipes/lerasatium_bronze_alloy_7.json -de2f947009417424d1e0acbea559780caf63223e data/cosmere/recipes/lerasatium_bronze_alloy_8.json -adf10441d812c3f7fd72dde3a8571c5a5458de4c data/cosmere/recipes/lerasatium_bronze_alloy_9.json -e378e8f7cdc40f438153ab50251f043049646c6c data/cosmere/recipes/lerasatium_cadmium_alloy_1.json -dd29883e04d295b66dcdf67b275f37af3f0804c7 data/cosmere/recipes/lerasatium_cadmium_alloy_10.json -7018f40f2c57dd4bfc4cf57059767a1fa97fb5f4 data/cosmere/recipes/lerasatium_cadmium_alloy_11.json -8322eeb3f19d461eb95d6dd79a5a2197160d7181 data/cosmere/recipes/lerasatium_cadmium_alloy_12.json -d3aa69a1f84a0599141207dc139de0ab3f272027 data/cosmere/recipes/lerasatium_cadmium_alloy_13.json -30e015de85af635886743fd1927e0ef0edcf7aa6 data/cosmere/recipes/lerasatium_cadmium_alloy_14.json -3c71fdbf4d41d218d9159a8a996c608ff2a9809a data/cosmere/recipes/lerasatium_cadmium_alloy_15.json -3ccc7ef69f0e511ce6604229eb2793171df58e87 data/cosmere/recipes/lerasatium_cadmium_alloy_16.json -a40dc78fdbf6b83635071fc7633f6cea251844db data/cosmere/recipes/lerasatium_cadmium_alloy_2.json -808772c961e7350641c041ff5f3044d60462c30e data/cosmere/recipes/lerasatium_cadmium_alloy_3.json -c62a379376a549ec0fd69b147b1f8936105c0106 data/cosmere/recipes/lerasatium_cadmium_alloy_4.json -caaf0fb56927850c00ada8db0226497a10111b3c data/cosmere/recipes/lerasatium_cadmium_alloy_5.json -9f41ec07a37671d52dc241733631816e06f8a8cb data/cosmere/recipes/lerasatium_cadmium_alloy_6.json -c9c4a5a6bc9f36cde547d4a44ad755f52bbda3d6 data/cosmere/recipes/lerasatium_cadmium_alloy_7.json -f89b9f388e703dcbc2e00120ff1f3d1247bd218b data/cosmere/recipes/lerasatium_cadmium_alloy_8.json -b8cd2ae6e2af895ff24a231c8345d5f2c0d7e27a data/cosmere/recipes/lerasatium_cadmium_alloy_9.json -feeba4b79f66f16d80a55ee48337bdad2b20f040 data/cosmere/recipes/lerasatium_chromium_alloy_1.json -66659ec04aab2007d87c94940bba7c2b74522147 data/cosmere/recipes/lerasatium_chromium_alloy_10.json -5ce67ca88f60047d62608aa0ff39c58e797fda9f data/cosmere/recipes/lerasatium_chromium_alloy_11.json -33955d4a6ec6ae502a95620438614a6e352a2d83 data/cosmere/recipes/lerasatium_chromium_alloy_12.json -50490de88ca08a29487533d013898f65d5611e53 data/cosmere/recipes/lerasatium_chromium_alloy_13.json -2ae485b8a945bce12bfe0f3a123f864a32b6b13c data/cosmere/recipes/lerasatium_chromium_alloy_14.json -15a5b1002a90110c3f8258c1b9a712ce86170321 data/cosmere/recipes/lerasatium_chromium_alloy_15.json -ab5745ea8758f86b9f8a7a6fa58de804fce6ec76 data/cosmere/recipes/lerasatium_chromium_alloy_16.json -80c26bb520ba031ceedc12ae99c5714952e833ad data/cosmere/recipes/lerasatium_chromium_alloy_2.json -d24929ddec1b145bc9e5a694f9b05a1c9a3028dc data/cosmere/recipes/lerasatium_chromium_alloy_3.json -271eadcbe50c86994a6a3a810e847aaafbb685d0 data/cosmere/recipes/lerasatium_chromium_alloy_4.json -bdcbb91f59d1a92ead75b132e857807b7c6c75e5 data/cosmere/recipes/lerasatium_chromium_alloy_5.json -4727b5f8ce63d09a2090756d016b80db958c7d80 data/cosmere/recipes/lerasatium_chromium_alloy_6.json -9bc3c11a8477b7bf80e52b31386f40dd329ce51c data/cosmere/recipes/lerasatium_chromium_alloy_7.json -1a828f87a507806c47c186792a4dbb157dcebda1 data/cosmere/recipes/lerasatium_chromium_alloy_8.json -8a43bc118cce2785055478926998f857b2a108f2 data/cosmere/recipes/lerasatium_chromium_alloy_9.json -0ecb8bd6b14ce913dafb4f31aedc0110209b6437 data/cosmere/recipes/lerasatium_duralumin_alloy_1.json -c12e371cf6a671ac535e55715fd5964acfa1d125 data/cosmere/recipes/lerasatium_duralumin_alloy_10.json -3fc7051be7cfad68b60dc194dfac963f8589e5ef data/cosmere/recipes/lerasatium_duralumin_alloy_11.json -77d85edce12c010eaf1dcdff2889516c00c79ee9 data/cosmere/recipes/lerasatium_duralumin_alloy_12.json -58b94d80410305df9e114ea6474bf103dc3d2924 data/cosmere/recipes/lerasatium_duralumin_alloy_13.json -4639b07eab3e452be6aa276239a2e07552037c96 data/cosmere/recipes/lerasatium_duralumin_alloy_14.json -a8d712e6087d29d8e6f9fe773781e5e47db5ba6d data/cosmere/recipes/lerasatium_duralumin_alloy_15.json -3a76079a1d2e7177dc5ac8d50ccee342cc4f7414 data/cosmere/recipes/lerasatium_duralumin_alloy_16.json -407a1d926bc4afa8f46df8be5ea8cdae2729deeb data/cosmere/recipes/lerasatium_duralumin_alloy_2.json -71f9ada57b36f8f0f366e981731bab4e22dcd9b8 data/cosmere/recipes/lerasatium_duralumin_alloy_3.json -165f1b2ce047c9dfa4d51f231d53f372f41dde99 data/cosmere/recipes/lerasatium_duralumin_alloy_4.json -f1825daec9a435cde403a4f32c4843908fc4e791 data/cosmere/recipes/lerasatium_duralumin_alloy_5.json -28fa28dbb88ee4cbb56a7f3cb30eea594c65dffe data/cosmere/recipes/lerasatium_duralumin_alloy_6.json -619beb4af76c720211fcc1bbecfa7c4508d46d18 data/cosmere/recipes/lerasatium_duralumin_alloy_7.json -eb774c98375f12a1e46c203809411241690af334 data/cosmere/recipes/lerasatium_duralumin_alloy_8.json -60dbf3e1d99739b305f80c88d9c17c6d10901696 data/cosmere/recipes/lerasatium_duralumin_alloy_9.json -57963f21f052f129841a0e90044aa6ddb4a16f05 data/cosmere/recipes/lerasatium_electrum_alloy_1.json -486ba74e68e355536b612eb71b65013a4f262fa0 data/cosmere/recipes/lerasatium_electrum_alloy_10.json -2d719acf43a3f9dc412464844c88ea1869fb307a data/cosmere/recipes/lerasatium_electrum_alloy_11.json -0f798883ffa1beb5c1c7b11b18cd562f7c560980 data/cosmere/recipes/lerasatium_electrum_alloy_12.json -959a7469924b69b4dc537ab9f41fad391fdc7764 data/cosmere/recipes/lerasatium_electrum_alloy_13.json -e09d0f1045e1daec994d47c166e313f666a9bf48 data/cosmere/recipes/lerasatium_electrum_alloy_14.json -25fa4e34fc30387a14239f11bac747c18a68bfb7 data/cosmere/recipes/lerasatium_electrum_alloy_15.json -b5b4ed3c0a260b450989e55201e6e55768495eab data/cosmere/recipes/lerasatium_electrum_alloy_16.json -369d6ac7d55bea01fd49de7520ede894e6a8247c data/cosmere/recipes/lerasatium_electrum_alloy_2.json -a49fd5eb97f8620d85b19e32fe0d6777a9f52511 data/cosmere/recipes/lerasatium_electrum_alloy_3.json -f481c2a41250dc4bea42589a278943b53d0be8a1 data/cosmere/recipes/lerasatium_electrum_alloy_4.json -51aa6b40c81ec5376b242d2c546120f84e7f5256 data/cosmere/recipes/lerasatium_electrum_alloy_5.json -c754c8adf9e29207ba2dbcab84e22eb00b722af0 data/cosmere/recipes/lerasatium_electrum_alloy_6.json -569c5fd7c009b7552fa11f8ee075da10acc55e8f data/cosmere/recipes/lerasatium_electrum_alloy_7.json -59b23da0139f19df16e981c0c514cf91c51da180 data/cosmere/recipes/lerasatium_electrum_alloy_8.json -9a2b7232012adbb6e8ccce3b230079f92132a5dc data/cosmere/recipes/lerasatium_electrum_alloy_9.json db4272d9b763609ba79a2ea4d7fbc0adacd269f2 data/cosmere/recipes/lerasatium_ingot.json -e1b7d9f6de850519d676f52f0d5586e240f58473 data/cosmere/recipes/lerasatium_lead_alloy_1.json -bc017301393a2ebe71fe500bcb0bb098934d0314 data/cosmere/recipes/lerasatium_lead_alloy_10.json -02d234f2584ff929eb6c3f83546b7d48b07ea206 data/cosmere/recipes/lerasatium_lead_alloy_11.json -9cfc6a67cf6cb96725f5d8e9679c3940b00468f7 data/cosmere/recipes/lerasatium_lead_alloy_12.json -42f90e14903deb04c8079bc83026baf119384b7a data/cosmere/recipes/lerasatium_lead_alloy_13.json -4f509debd88415040da0c9720398fbb77ee55abd data/cosmere/recipes/lerasatium_lead_alloy_14.json -8798b44c044372bbf501f39b1c2edc54041edf50 data/cosmere/recipes/lerasatium_lead_alloy_15.json -d73e4113ed5d2381a4c91e5568416ddfebfb0105 data/cosmere/recipes/lerasatium_lead_alloy_16.json -92c49d44212a216d0748ceba35e221efd285be8b data/cosmere/recipes/lerasatium_lead_alloy_2.json -dce3be286c61a20e2c98da00a5d859cf6d8569aa data/cosmere/recipes/lerasatium_lead_alloy_3.json -77d0ad4ab84b5cc686804f0b5d5ea16c7484b0e5 data/cosmere/recipes/lerasatium_lead_alloy_4.json -6ad73969edda4a12b4522a3f9d01b3b910559581 data/cosmere/recipes/lerasatium_lead_alloy_5.json -c8d21d4807680cd9270ac6eb1444281bc79d8cfd data/cosmere/recipes/lerasatium_lead_alloy_6.json -35ce329767c8d3476592adc61c7ee12fc85094b4 data/cosmere/recipes/lerasatium_lead_alloy_7.json -f8446fae2fe823ada59e5c862dba6d23787d348b data/cosmere/recipes/lerasatium_lead_alloy_8.json -d39b291eb258415aec90e736c8d6990c31ab52ca data/cosmere/recipes/lerasatium_lead_alloy_9.json -65b4c038c57623b656886a8b8d3d118c60fae8f3 data/cosmere/recipes/lerasatium_malatium_alloy_1.json -6724c478f93e5bd8e684d543679f2c358d4c2510 data/cosmere/recipes/lerasatium_malatium_alloy_10.json -3e8d3daffc15fdaaa6c0e6d8d81305426cf9bb79 data/cosmere/recipes/lerasatium_malatium_alloy_11.json -f229064372846930c106823b0e3d1afca1f2f998 data/cosmere/recipes/lerasatium_malatium_alloy_12.json -3d75e6fc6a8493c27e14245ed9b5e136fb413f21 data/cosmere/recipes/lerasatium_malatium_alloy_13.json -84cafad6dd81bd1249dcee4ad5ff16aa3f252dee data/cosmere/recipes/lerasatium_malatium_alloy_14.json -e35940e3ad7d5f105decf8bc270ec562e6cfad12 data/cosmere/recipes/lerasatium_malatium_alloy_15.json -346b77cc00ec77953331c559bbc005292df49bfe data/cosmere/recipes/lerasatium_malatium_alloy_16.json -94e0f224382c3e9e152880a34958397e745f4027 data/cosmere/recipes/lerasatium_malatium_alloy_2.json -3486a0ec486d2b8b9de6c83f85bf2eb4b2685af5 data/cosmere/recipes/lerasatium_malatium_alloy_3.json -37a95c72c9d55e57c9e9307d324df389699e47a0 data/cosmere/recipes/lerasatium_malatium_alloy_4.json -a693553240c009186701d1da7a158888b927830a data/cosmere/recipes/lerasatium_malatium_alloy_5.json -d874c0ac2be3b98493a7dd91a0ce4bbfa721e40a data/cosmere/recipes/lerasatium_malatium_alloy_6.json -9184cee4d5295d6e18ba79379137a52deb05fd14 data/cosmere/recipes/lerasatium_malatium_alloy_7.json -766d873ae54a59091c7a5be7dfc3056eec182d9a data/cosmere/recipes/lerasatium_malatium_alloy_8.json -2f36d284c7f1d490eb9505b50590223068effb10 data/cosmere/recipes/lerasatium_malatium_alloy_9.json -07db9aa9ba52a7cb6e66673a50bb759de103ce64 data/cosmere/recipes/lerasatium_nickel_alloy_1.json -e2675ba3856b2483016093cfa8f6ee28be18553c data/cosmere/recipes/lerasatium_nickel_alloy_10.json -7d954a0504196e3e506ba98beb20de5abcaa32c5 data/cosmere/recipes/lerasatium_nickel_alloy_11.json -8996fd6b3273c4fc6d4cb98812a2a5ba940d0b71 data/cosmere/recipes/lerasatium_nickel_alloy_12.json -78ffcf15a0d8b7a69c310bd73c639605e3b1536d data/cosmere/recipes/lerasatium_nickel_alloy_13.json -751725a073c9efb4e6312d122dd71975b612df85 data/cosmere/recipes/lerasatium_nickel_alloy_14.json -727c08e22a8e999b6801d6409ca82eff19297ab7 data/cosmere/recipes/lerasatium_nickel_alloy_15.json -16179d426684c7ac9c1457d42e2d9dd43ffe7126 data/cosmere/recipes/lerasatium_nickel_alloy_16.json -44265dd7cf7f931d4b9409c2164015c45d1387c7 data/cosmere/recipes/lerasatium_nickel_alloy_2.json -33a59a0ac25f1051842d1c1d52043ef7fb1be6aa data/cosmere/recipes/lerasatium_nickel_alloy_3.json -92299d3ba97fee5947113867bfb7082961968412 data/cosmere/recipes/lerasatium_nickel_alloy_4.json -d5154bf8256e472b768c15c1e42be44c7171cfc4 data/cosmere/recipes/lerasatium_nickel_alloy_5.json -d42de7b5135778a56a2159b9890a794696bc37a3 data/cosmere/recipes/lerasatium_nickel_alloy_6.json -50dd3391c77674149bb8e5858b15c92239840f8c data/cosmere/recipes/lerasatium_nickel_alloy_7.json -c5a59baf4a83bd55afa0c8cafb76c542cf53ef2a data/cosmere/recipes/lerasatium_nickel_alloy_8.json -0a88a2bc2f911e960588a693de0030fe12cde9cb data/cosmere/recipes/lerasatium_nickel_alloy_9.json -8368957230e821917c0a273cbfa152161c3dd91e data/cosmere/recipes/lerasatium_nicrosil_alloy_1.json -113e4d91c7f3cdd0feb158d93cfa387255f8e795 data/cosmere/recipes/lerasatium_nicrosil_alloy_10.json -ef8d403b35e4287d94de2ad1ed9a49bfae80f90c data/cosmere/recipes/lerasatium_nicrosil_alloy_11.json -b31086c01cd4a62e8c1295cb0e861727b077594d data/cosmere/recipes/lerasatium_nicrosil_alloy_12.json -ae4397ae3b273c6b10a3843739f62b0be3c81372 data/cosmere/recipes/lerasatium_nicrosil_alloy_13.json -9f41895428384eabb95937d0224d7df44a5ccd60 data/cosmere/recipes/lerasatium_nicrosil_alloy_14.json -9ed13af2fd109c765eb106e530c29e85fe5d060b data/cosmere/recipes/lerasatium_nicrosil_alloy_15.json -0f23c32360fd5012d95b859d4c159d3702664ac4 data/cosmere/recipes/lerasatium_nicrosil_alloy_16.json -1c84c2705eaa2ac763c8d5da11eccca9a1838d5c data/cosmere/recipes/lerasatium_nicrosil_alloy_2.json -3e15ae5ab6a21f41be4805d803d074dc4ab3a21c data/cosmere/recipes/lerasatium_nicrosil_alloy_3.json -c296c618dc337d817aa2cab6c9dc7e6b8a02504a data/cosmere/recipes/lerasatium_nicrosil_alloy_4.json -a30214cc4cbd005688983001f4c41078a9e6be4b data/cosmere/recipes/lerasatium_nicrosil_alloy_5.json -7b0b445aa9165bad2268dba6721ff2e6df850aa1 data/cosmere/recipes/lerasatium_nicrosil_alloy_6.json -df401d5b50524be0d747dc40c2ff708797c71d84 data/cosmere/recipes/lerasatium_nicrosil_alloy_7.json -8f83324b07a4eba2075f99eaac7cfa58f077aa4b data/cosmere/recipes/lerasatium_nicrosil_alloy_8.json -4123608b14ec9ebac0b8529ccd79d708030abb27 data/cosmere/recipes/lerasatium_nicrosil_alloy_9.json -07b15ba6c3a870f048351071303f739e0da154b3 data/cosmere/recipes/lerasatium_pewter_alloy_1.json -a80dfa216e8345a263383e57b6ef570e4d2e2e7f data/cosmere/recipes/lerasatium_pewter_alloy_10.json -7aa8d8d87305fadfff6c20008bd79c3da62d1133 data/cosmere/recipes/lerasatium_pewter_alloy_11.json -06d84b88e78b7158a771de50a90746a633d41c6a data/cosmere/recipes/lerasatium_pewter_alloy_12.json -c1dd9aa4d950ea0923fb35cc0cb840e9f82f8e0e data/cosmere/recipes/lerasatium_pewter_alloy_13.json -1bd3e5e9c33a46367a052a6f093626b8382bed23 data/cosmere/recipes/lerasatium_pewter_alloy_14.json -af7d88c1fe775316f572d1e76afbbed4210b5b62 data/cosmere/recipes/lerasatium_pewter_alloy_15.json -166fed42922ce20d6bea91c1b31898d4878ab2e4 data/cosmere/recipes/lerasatium_pewter_alloy_16.json -724a3ff0e061b6e3415929bcd244337acce5aafe data/cosmere/recipes/lerasatium_pewter_alloy_2.json -c3d7abf55386d271e62cf15e68c90d55ba76fac3 data/cosmere/recipes/lerasatium_pewter_alloy_3.json -73d69db06826e85aa6c21e8003370ea87d5409c5 data/cosmere/recipes/lerasatium_pewter_alloy_4.json -114374c15353156500a2ed9a181b2e495865bc23 data/cosmere/recipes/lerasatium_pewter_alloy_5.json -d7b488991fdc236c7dc17ba23f1d027d31fee010 data/cosmere/recipes/lerasatium_pewter_alloy_6.json -636b30003b5fb7a67399f4e8a1ae9bf9f25ca4bf data/cosmere/recipes/lerasatium_pewter_alloy_7.json -361966d21a7b0405a06687c8f2669fd5a910acfc data/cosmere/recipes/lerasatium_pewter_alloy_8.json -52666ad2c6f335fb77bc67ec119275516e808302 data/cosmere/recipes/lerasatium_pewter_alloy_9.json -0b1b7045abe3afeaacd3393f4c473d9aa7075349 data/cosmere/recipes/lerasatium_silver_alloy_1.json -77549a08dd44c3f1dcaf5081ec7530e75cdf1c69 data/cosmere/recipes/lerasatium_silver_alloy_10.json -bf8d47f81755505d9f91c0dbe2d2d42e3eb5430c data/cosmere/recipes/lerasatium_silver_alloy_11.json -f26d0a7a8aa0b6549ced0646cdb0ffad4deddd6f data/cosmere/recipes/lerasatium_silver_alloy_12.json -ae4b6de99d9e7be013449805dc3ce5ab24bad7a6 data/cosmere/recipes/lerasatium_silver_alloy_13.json -55672c58beea4f16c90d21b8027749becffa4628 data/cosmere/recipes/lerasatium_silver_alloy_14.json -a23fbab2b353ba753095a5e6fbe7f1f9a355ea26 data/cosmere/recipes/lerasatium_silver_alloy_15.json -8b9c5f836e131669ce31cba6cf5f09fbd3ab1702 data/cosmere/recipes/lerasatium_silver_alloy_16.json -72b7c697885d79d568d981a6da87fba3f42ec05b data/cosmere/recipes/lerasatium_silver_alloy_2.json -37c737313057ed7f96687b273976427d115a30b5 data/cosmere/recipes/lerasatium_silver_alloy_3.json -f8be1a5096f0b8cead8985293f9d417883c97b9f data/cosmere/recipes/lerasatium_silver_alloy_4.json -623830592af3102d30fe7c1bfacea4870b1bd1ae data/cosmere/recipes/lerasatium_silver_alloy_5.json -65425f19dfa1b1b8c1dd377bab2a74b359671628 data/cosmere/recipes/lerasatium_silver_alloy_6.json -aee9b398333337d8dd3c8baa2a0284ee9f179c6d data/cosmere/recipes/lerasatium_silver_alloy_7.json -658d87e1c94d3222fae3b7ce195bc7ee04957e1e data/cosmere/recipes/lerasatium_silver_alloy_8.json -8f35be53fba7fa8a7b35c6539a48645d177b81fb data/cosmere/recipes/lerasatium_silver_alloy_9.json -ce73f28d9f88a97ac8ae8e5e8c139f754904e6e0 data/cosmere/recipes/lerasatium_steel_alloy_1.json -ec522d56be8227bb3710979c4f10ebef06f1dc7e data/cosmere/recipes/lerasatium_steel_alloy_10.json -16a1e8a9f8507580c5c24a0a80b18ad889e79629 data/cosmere/recipes/lerasatium_steel_alloy_11.json -6637af191944b75c071396d098b75423d199ed77 data/cosmere/recipes/lerasatium_steel_alloy_12.json -d9af08e676787387c0515a459a8bef88215d8647 data/cosmere/recipes/lerasatium_steel_alloy_13.json -d2202ae13f9ad9a32536f905297760d08add072e data/cosmere/recipes/lerasatium_steel_alloy_14.json -b25dcbdac21605fd80168ab087e6c1ed78af7fd5 data/cosmere/recipes/lerasatium_steel_alloy_15.json -160cb8202756637396db056878aa20f6097b50db data/cosmere/recipes/lerasatium_steel_alloy_16.json -26ccf7f2cd8f35f83b30282bae1b6f1fa6bf14e4 data/cosmere/recipes/lerasatium_steel_alloy_2.json -99231b35f224aafe02fb88c33c36c03b6e241325 data/cosmere/recipes/lerasatium_steel_alloy_3.json -9d15cc2d5d2b4df0bd0e5061d0c8df6a6b89b444 data/cosmere/recipes/lerasatium_steel_alloy_4.json -03ab4128c824e95b66420adcfd70ed0371622a69 data/cosmere/recipes/lerasatium_steel_alloy_5.json -f8c9ef9930547dacc9c87874e0b4e60bdd321adc data/cosmere/recipes/lerasatium_steel_alloy_6.json -20fe813d780c68eb3ea5fc4ffa9f66767e50afa6 data/cosmere/recipes/lerasatium_steel_alloy_7.json -e759e9a6ef2748609f2ecb1022ea1f7727c9d6d3 data/cosmere/recipes/lerasatium_steel_alloy_8.json -58f35a7af86dc3a654ed649c20f33e21b4957750 data/cosmere/recipes/lerasatium_steel_alloy_9.json -edca58066868645f12e23e42211ceebcfdc1815a data/cosmere/recipes/lerasatium_tin_alloy_1.json -ae28416bf24cad638283aa0512770ce5e7099f58 data/cosmere/recipes/lerasatium_tin_alloy_10.json -58e409f84213d72418d5a4ebc509c589b375404b data/cosmere/recipes/lerasatium_tin_alloy_11.json -65d39e6b2ae7f0351fc94aa4d95c2198c9580116 data/cosmere/recipes/lerasatium_tin_alloy_12.json -f180d061d6ba544b19926ec1fb67b01a15bb1357 data/cosmere/recipes/lerasatium_tin_alloy_13.json -5ada60cceb1d2cb38e212445db4b8825a131f1c9 data/cosmere/recipes/lerasatium_tin_alloy_14.json -413b5c2f7e365eb54b3bd26cdbc7006f72a7934f data/cosmere/recipes/lerasatium_tin_alloy_15.json -7aa29062bd6d98a4528c60be402cf250bc06c9e5 data/cosmere/recipes/lerasatium_tin_alloy_16.json -84800d069bfe242dc627462da4d9e7651fdda36a data/cosmere/recipes/lerasatium_tin_alloy_2.json -7d0acaf85c2a6be9354fc88e3a9976f45ca9beeb data/cosmere/recipes/lerasatium_tin_alloy_3.json -5fa4d957fcf80ddd2fe84e005dee304262f40b93 data/cosmere/recipes/lerasatium_tin_alloy_4.json -097949ce5d44678bb7c8b48a5611378b9b9b01d6 data/cosmere/recipes/lerasatium_tin_alloy_5.json -b50a84e301d1f047a63f4051051d40d4386cf56b data/cosmere/recipes/lerasatium_tin_alloy_6.json -51152b3f6c27fd3ae481ffed22564df61623d547 data/cosmere/recipes/lerasatium_tin_alloy_7.json -60b1c406a97b654261d97cc98e58d81f7e1ae4df data/cosmere/recipes/lerasatium_tin_alloy_8.json -a34685a6acb8b61129add02b646717910181c482 data/cosmere/recipes/lerasatium_tin_alloy_9.json -5249db13aeee901cf2258601cee9e9bfc54c693a data/cosmere/recipes/lerasatium_zinc_alloy_1.json -e20bbbcbe54c170e00f6da191320c0a15f0b38c4 data/cosmere/recipes/lerasatium_zinc_alloy_10.json -f71ffb0b4da263138e99fc7b98cdbb8a47a6a332 data/cosmere/recipes/lerasatium_zinc_alloy_11.json -ce6483336ab2bff82438f155e5c009ba9973a782 data/cosmere/recipes/lerasatium_zinc_alloy_12.json -0d974f70c6a3aecd1a63620449e5872860aafcc0 data/cosmere/recipes/lerasatium_zinc_alloy_13.json -c0094ac30a0f03d9ceb60ec4dfcd39ee954cc423 data/cosmere/recipes/lerasatium_zinc_alloy_14.json -9080136fef34cfeff677a013f124b17c474f2820 data/cosmere/recipes/lerasatium_zinc_alloy_15.json -304558771ba08f26492a51c1661ef6d591944f57 data/cosmere/recipes/lerasatium_zinc_alloy_16.json -58cb996379fcdf33c6d859d207c27ee0e33b95ab data/cosmere/recipes/lerasatium_zinc_alloy_2.json -b3242b21683507de33509d091189f89966d05185 data/cosmere/recipes/lerasatium_zinc_alloy_3.json -2d66f3ec79e453e200fe8a421211f01dda0e9fb2 data/cosmere/recipes/lerasatium_zinc_alloy_4.json -b2afa78942bf8cf7c3998025bc7f65acf0f4eac2 data/cosmere/recipes/lerasatium_zinc_alloy_5.json -96fbea06a9807316d77e1eaa7795a9c5b5d6318b data/cosmere/recipes/lerasatium_zinc_alloy_6.json -5666a92e33e9cd38be4497af79a4e5c07df534c1 data/cosmere/recipes/lerasatium_zinc_alloy_7.json -849457f3d9ab47a66ab345d22a6f993e5d77580a data/cosmere/recipes/lerasatium_zinc_alloy_8.json -7ddc796f26cd672fec9a06ac82113cda5fcbf6b2 data/cosmere/recipes/lerasatium_zinc_alloy_9.json -b412ede5c211bdc4598d9ea8bb4701c5ad02f7c8 data/cosmere/recipes/lerasium_aluminum_alloy_1.json -e0161468d17ea44c919b5596f649a1aa763ea406 data/cosmere/recipes/lerasium_aluminum_alloy_10.json -4740cf7b1e95dc73295a1aef995e8ad4c573c25b data/cosmere/recipes/lerasium_aluminum_alloy_11.json -cbc39ed10a85275b0056a001ab421b86813c5879 data/cosmere/recipes/lerasium_aluminum_alloy_12.json -818c59e10d9cdbe6a83f56d1ec0d97877909b884 data/cosmere/recipes/lerasium_aluminum_alloy_13.json -8cc5a3de63be74f12c9d89b7dbc31474d06d76f7 data/cosmere/recipes/lerasium_aluminum_alloy_14.json -d9bc4641efacd2078fd61e7c9a7f4564c9665a39 data/cosmere/recipes/lerasium_aluminum_alloy_15.json -f196fc89c4bf09369038aa7df659c751ef634623 data/cosmere/recipes/lerasium_aluminum_alloy_16.json -9b2d1df9e6ab66df4356329eb68c5ec8bc6b8e0e data/cosmere/recipes/lerasium_aluminum_alloy_2.json -dc674f7928e3ebe5dbd298774f0a17f837a9bc59 data/cosmere/recipes/lerasium_aluminum_alloy_3.json -4d537c319af8b114e0c0c3e90be13c60ed22b5e5 data/cosmere/recipes/lerasium_aluminum_alloy_4.json -1f2a1b8af88027737a1b84324d4d80b20befc78a data/cosmere/recipes/lerasium_aluminum_alloy_5.json -b831537b6484ae2eb87d64b65f7f27a1a5d5df89 data/cosmere/recipes/lerasium_aluminum_alloy_6.json -6d33920eb5bc413e69cf69d1729f706ff5fc8f55 data/cosmere/recipes/lerasium_aluminum_alloy_7.json -7c770eb823490f637359152a41cfba4e2bcb58e6 data/cosmere/recipes/lerasium_aluminum_alloy_8.json -8028b676d3d73c41347bae0d56ad6c53c7608151 data/cosmere/recipes/lerasium_aluminum_alloy_9.json -7e156a75072c2f3dd412167cb7a1c5aa0b30793e data/cosmere/recipes/lerasium_bendalloy_alloy_1.json -05b11ad9bc127f6d4b862c22abaeb12ef367308a data/cosmere/recipes/lerasium_bendalloy_alloy_10.json -10c16a8082cb91a94ee16fbf0976a87899d95e66 data/cosmere/recipes/lerasium_bendalloy_alloy_11.json -36e0c5ba0d6a63d1bd25d4d22a0864329e94ca27 data/cosmere/recipes/lerasium_bendalloy_alloy_12.json -f9e16a2e4dcc8d472c160ddd1263115f7c90e021 data/cosmere/recipes/lerasium_bendalloy_alloy_13.json -d6c61212dc079cb5e94249aec07650dda098ea4c data/cosmere/recipes/lerasium_bendalloy_alloy_14.json -d3f104a6d4a003b14bb1d4167018a22964d9e230 data/cosmere/recipes/lerasium_bendalloy_alloy_15.json -d8f5356e5d6c99caa66b080e745ebcfe69b22beb data/cosmere/recipes/lerasium_bendalloy_alloy_16.json -b98dcc7d61d78149e6cec708afd33ba50212f2ed data/cosmere/recipes/lerasium_bendalloy_alloy_2.json -8fb046f1c20a371d94661600d3a0c89c23c72599 data/cosmere/recipes/lerasium_bendalloy_alloy_3.json -c0757cd59239ee2191d237ec7a7c68f9ac51d1b6 data/cosmere/recipes/lerasium_bendalloy_alloy_4.json -d379d715eaa20e651432aab37db7cadb4869879a data/cosmere/recipes/lerasium_bendalloy_alloy_5.json -3a65b934d89ded36cbba9bd299b209906b479eef data/cosmere/recipes/lerasium_bendalloy_alloy_6.json -b021286d6ce8eb7a5a22f488de9b508a54b458d5 data/cosmere/recipes/lerasium_bendalloy_alloy_7.json -06f614c24a8cb87696e13473ac8a8b3b22228aac data/cosmere/recipes/lerasium_bendalloy_alloy_8.json -25251a8b761bc429399e23e096055b1fce71281f data/cosmere/recipes/lerasium_bendalloy_alloy_9.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -76c7e78af100d3be0ae83429ee8fbde9341ecc24 data/cosmere/recipes/lerasium_brass_alloy_1.json -9f35b15f48f7bad149cbfef38dc012f8705f18fa data/cosmere/recipes/lerasium_brass_alloy_10.json -3b175be82e6ebe8766145e92a6b3c44095258b76 data/cosmere/recipes/lerasium_brass_alloy_11.json -0dc9bc43861e0e406f0ee9ffc0d57d3ebff4f585 data/cosmere/recipes/lerasium_brass_alloy_12.json -1792c1c501ed2859a9ab19bd63146aecba776867 data/cosmere/recipes/lerasium_brass_alloy_13.json -0b284729fe82d4b3a87abf3aa66c3a808bf835c2 data/cosmere/recipes/lerasium_brass_alloy_14.json -606b423dcea879b83e72f92f838c89ec3055046f data/cosmere/recipes/lerasium_brass_alloy_15.json -8fdab6614e05c4422c9835110ecce75ac2523b1c data/cosmere/recipes/lerasium_brass_alloy_16.json -9e634b476182ef572643e294c072fc6a8f8fe4e6 data/cosmere/recipes/lerasium_brass_alloy_2.json -ce1315d273abbd872c4ca706d36e466e98656ccb data/cosmere/recipes/lerasium_brass_alloy_3.json -4963653bd745b941c5427bb267419e76bcbcab65 data/cosmere/recipes/lerasium_brass_alloy_4.json -642e95b502516ce6d16890e6692454178ad1c755 data/cosmere/recipes/lerasium_brass_alloy_5.json -7ceb62ad94ba8f4218c8c80199b2ff8da42f662e data/cosmere/recipes/lerasium_brass_alloy_6.json -3b712298b01c04a81fd6c0d2d619b3fff6c60c8d data/cosmere/recipes/lerasium_brass_alloy_7.json -2788421746ca84f9c8026bb9ded440f5c7abf97d data/cosmere/recipes/lerasium_brass_alloy_8.json -acb50488d8aac04df51551edbb080bc253cdeaee data/cosmere/recipes/lerasium_brass_alloy_9.json -bfd6d458394bb1a381c71307851d9bbec5280588 data/cosmere/recipes/lerasium_bronze_alloy_1.json -45903e12fbad448b757a7753dc40b15e4e7407da data/cosmere/recipes/lerasium_bronze_alloy_10.json -a02dbd6fd4e74681a7d7a5d528a1d51cb289760e data/cosmere/recipes/lerasium_bronze_alloy_11.json -4bf483e7711c32455f38f447f5deadae5614bab8 data/cosmere/recipes/lerasium_bronze_alloy_12.json -bd1bf0a7a611c6e5e110640456d2c66f65838cfd data/cosmere/recipes/lerasium_bronze_alloy_13.json -d32440a4f36b1b75370fe4fef6e7e1a6bad081ce data/cosmere/recipes/lerasium_bronze_alloy_14.json -ee05afc06d24515fb4c85719b6ce435b42e475a6 data/cosmere/recipes/lerasium_bronze_alloy_15.json -29372a8e755315649bf2f3b6fde4e3860b3693ec data/cosmere/recipes/lerasium_bronze_alloy_16.json -38c2a3d07b3a6b2f914414ccf10570a9f691fe8b data/cosmere/recipes/lerasium_bronze_alloy_2.json -3cba47ec2a5e48439bc257a47facbd702b82488e data/cosmere/recipes/lerasium_bronze_alloy_3.json -3396081487e7bd63fe870597982122398b6e3120 data/cosmere/recipes/lerasium_bronze_alloy_4.json -5e6fa76551b2696ca57691a219f273b69132e24b data/cosmere/recipes/lerasium_bronze_alloy_5.json -27c903ee6fcf27ecc55ffb0ba8054fee5f25f36c data/cosmere/recipes/lerasium_bronze_alloy_6.json -71fd43cbcd70608cdcfbe0d24f99244fce9d70b1 data/cosmere/recipes/lerasium_bronze_alloy_7.json -cead90fec212f9d120d1c757928da95c1487fb10 data/cosmere/recipes/lerasium_bronze_alloy_8.json -e68608519f3758c724e41b7e6aff1bc12b8c1969 data/cosmere/recipes/lerasium_bronze_alloy_9.json -26106af4ed33eb222e5e3ecf46f1aa6cd539f98a data/cosmere/recipes/lerasium_cadmium_alloy_1.json -b97fd4c2299f22679c03bac8e74847ed26670d9c data/cosmere/recipes/lerasium_cadmium_alloy_10.json -23d4eb914e369105c17358a5244b66bb744bebdc data/cosmere/recipes/lerasium_cadmium_alloy_11.json -1674610b92fc01ae32a4f52ef816117a794da395 data/cosmere/recipes/lerasium_cadmium_alloy_12.json -318123e5e4ef56fb04d46b7f56408d6ef626bec6 data/cosmere/recipes/lerasium_cadmium_alloy_13.json -9ddb3d66965319460ddb7fa34e2ceca5ed3bb574 data/cosmere/recipes/lerasium_cadmium_alloy_14.json -14928e95fb68fa6a334a828d703f87576948637a data/cosmere/recipes/lerasium_cadmium_alloy_15.json -1d7e66b0a1f43a4afd9ec47a4de8285a01e8b9dd data/cosmere/recipes/lerasium_cadmium_alloy_16.json -741b4bb9015f149a2e9dbbc6fbbe0ef1d63b4301 data/cosmere/recipes/lerasium_cadmium_alloy_2.json -4c4d5d98f94d1feb6e5f4d3abb5c4d1ef056f017 data/cosmere/recipes/lerasium_cadmium_alloy_3.json -cb188cceffa2422838d3822789c2e02b05328d10 data/cosmere/recipes/lerasium_cadmium_alloy_4.json -a41d9bd6a9f45678550a56531af456ed316727fb data/cosmere/recipes/lerasium_cadmium_alloy_5.json -c753ba90106c10818bfbce7c6522c369c6f02e89 data/cosmere/recipes/lerasium_cadmium_alloy_6.json -fabe4f1162ac633d41417fd6bdc57b28b6f3eb61 data/cosmere/recipes/lerasium_cadmium_alloy_7.json -c2fc73c463e9afb8e0f9e1f20378966e71f61e58 data/cosmere/recipes/lerasium_cadmium_alloy_8.json -427eb60d8edd8d01961815b8d362f186918e218e data/cosmere/recipes/lerasium_cadmium_alloy_9.json -edd5065c400b1da9c11f9f78d475e875e6a067af data/cosmere/recipes/lerasium_chromium_alloy_1.json -6abaa635f9520b1bcd41a5482470457258f7b5fd data/cosmere/recipes/lerasium_chromium_alloy_10.json -dbbc7ac39917a6336413811d26171e49fd6c3699 data/cosmere/recipes/lerasium_chromium_alloy_11.json -5fcc264e40a0390de68ebd965f86064f710eb439 data/cosmere/recipes/lerasium_chromium_alloy_12.json -9273724401dd2975e3e4d3b6d1070e3bea10dc76 data/cosmere/recipes/lerasium_chromium_alloy_13.json -a93ec4161b612cc286fd1928e417fd8539f96d3c data/cosmere/recipes/lerasium_chromium_alloy_14.json -22e9c21b30944a01a372a8d0e1f5d2d05be9665b data/cosmere/recipes/lerasium_chromium_alloy_15.json -18cd310dc44e6640feb2aa6fa654d035ed12bdab data/cosmere/recipes/lerasium_chromium_alloy_16.json -730b1de50f5ae54e53a3b37b53defe5009323ce8 data/cosmere/recipes/lerasium_chromium_alloy_2.json -b8f4c1341c58ab0ea4a40130bd9fae285fad2211 data/cosmere/recipes/lerasium_chromium_alloy_3.json -1cb644b7cf840ac7824a7f63df9c42d460552f08 data/cosmere/recipes/lerasium_chromium_alloy_4.json -63bee35d004d9d728af91c3d98f27a21a5df2cf1 data/cosmere/recipes/lerasium_chromium_alloy_5.json -999e4325f2351c3a94bbb4ca025b17bf6628ff14 data/cosmere/recipes/lerasium_chromium_alloy_6.json -200f4179053dcc6f1b122e9ec28cb5672ff7d645 data/cosmere/recipes/lerasium_chromium_alloy_7.json -b8781f66e1e1152071cf26ba2c51286d91c6fbd9 data/cosmere/recipes/lerasium_chromium_alloy_8.json -c48aa92410aa9ff033bba5b114ffb2444b3c6085 data/cosmere/recipes/lerasium_chromium_alloy_9.json -923e8fe20fd7e3c3b8b19ffe84ff86e6a2a1c6db data/cosmere/recipes/lerasium_duralumin_alloy_1.json -b156a6cf04183cb7dfc63dcf27cffeb64034580d data/cosmere/recipes/lerasium_duralumin_alloy_10.json -58968a37e03905071e8f59d497f914112895f2b0 data/cosmere/recipes/lerasium_duralumin_alloy_11.json -3e29f70395d031473d215d92e3a444e116b9ec26 data/cosmere/recipes/lerasium_duralumin_alloy_12.json -d616daae526162eda73146013b7273457b0116b2 data/cosmere/recipes/lerasium_duralumin_alloy_13.json -84bb8bfa4e575d1c5be604a3ae5ccbd2e202e472 data/cosmere/recipes/lerasium_duralumin_alloy_14.json -bbae1d78a90d1a100c689e853082f86c0eef3eb6 data/cosmere/recipes/lerasium_duralumin_alloy_15.json -a94875ca4da57ac9f02a4da7088eaa202baf27f7 data/cosmere/recipes/lerasium_duralumin_alloy_16.json -a2aa330ea09c22e515c98506716dd17f39b49591 data/cosmere/recipes/lerasium_duralumin_alloy_2.json -070e931a06421f6e70af89b30695bc154ee7e5c8 data/cosmere/recipes/lerasium_duralumin_alloy_3.json -ae98c264cf8fade18dbb0d1a4012cf5e9917ae02 data/cosmere/recipes/lerasium_duralumin_alloy_4.json -2d2e70eab98825ecfef8c2f287adafcfe6cae44e data/cosmere/recipes/lerasium_duralumin_alloy_5.json -a7d11fa10eb97908254a5d32d756be3cfeaba6aa data/cosmere/recipes/lerasium_duralumin_alloy_6.json -161212e5c310cce16290778a301c306a10f5c034 data/cosmere/recipes/lerasium_duralumin_alloy_7.json -efdb69a3fe067343251799c17a0510df2f109095 data/cosmere/recipes/lerasium_duralumin_alloy_8.json -bea29efdfc0f7fa653732f7c1847dfb6e6c0e70c data/cosmere/recipes/lerasium_duralumin_alloy_9.json -927024e76f4c3e908c4505101e292517f75e38fd data/cosmere/recipes/lerasium_electrum_alloy_1.json -8af88e1d5012f6a4422144a432d1861fa7b018eb data/cosmere/recipes/lerasium_electrum_alloy_10.json -8b1ebb323ab47987db5bb497322327311ca1d690 data/cosmere/recipes/lerasium_electrum_alloy_11.json -cc7f0afc8875c6170a9292fd728e02989d8cf4fc data/cosmere/recipes/lerasium_electrum_alloy_12.json -2162b267142c47281bb036031e1aedfa313fcc1a data/cosmere/recipes/lerasium_electrum_alloy_13.json -50776f324de2676a31b720b9ff6e8c2b885ebaf9 data/cosmere/recipes/lerasium_electrum_alloy_14.json -4a2d9806dc75f2284971bbbdb820a3a996f3b368 data/cosmere/recipes/lerasium_electrum_alloy_15.json -1bbdd924ef4608cf6806917262a1dc8b4521a008 data/cosmere/recipes/lerasium_electrum_alloy_16.json -d46464fbaa6e12b592b6d5c23793b8d123423dcc data/cosmere/recipes/lerasium_electrum_alloy_2.json -be3f202f84c1c3d7fd4590fc84810c41c2d842d6 data/cosmere/recipes/lerasium_electrum_alloy_3.json -ccf48c771d67a4a81050dc393485b6ebf3444ceb data/cosmere/recipes/lerasium_electrum_alloy_4.json -47a05cd640132ba384dc25eaf006403487496e32 data/cosmere/recipes/lerasium_electrum_alloy_5.json -908ef7aea3646a03d9176b7ce6909bb3bcc545f6 data/cosmere/recipes/lerasium_electrum_alloy_6.json -d6833d4dd1be623e01702bcd06245af2127f8763 data/cosmere/recipes/lerasium_electrum_alloy_7.json -5034dafd7f0b594fde8e015cccddec121b25afb9 data/cosmere/recipes/lerasium_electrum_alloy_8.json -46adf1fcd0c088faa3d9bc33325feaff0f03f6f9 data/cosmere/recipes/lerasium_electrum_alloy_9.json a4f7ae18f7da78c725539e289cbd2c9d8e6b6981 data/cosmere/recipes/lerasium_ingot.json -b40c8d87c336e379ceb256caa51dcfab0ea3629c data/cosmere/recipes/lerasium_lead_alloy_1.json -0c47d29d10cf08a68651f2b3d66313c2d5f17243 data/cosmere/recipes/lerasium_lead_alloy_10.json -3b280c59ff325919085eb35353a7184436810633 data/cosmere/recipes/lerasium_lead_alloy_11.json -de494367ce555c9d03bb8ac85a54709e864e059f data/cosmere/recipes/lerasium_lead_alloy_12.json -c6fa10e2eacf77d008ba67d32a1d3c5fabc27686 data/cosmere/recipes/lerasium_lead_alloy_13.json -d4eb60fde63b11fe2b70bb8a01ad7d37c0370e74 data/cosmere/recipes/lerasium_lead_alloy_14.json -252aa9cc2f6bdf2815fb2bdb57e55a0f5e5dfda4 data/cosmere/recipes/lerasium_lead_alloy_15.json -bba79fe2552c507ef3704f812a043a9caa7ee94d data/cosmere/recipes/lerasium_lead_alloy_16.json -8648174950e901a66b56a849e17fbe2e60fb8039 data/cosmere/recipes/lerasium_lead_alloy_2.json -39f28362a7290c9432a6b39c0b9fb5ef2084273a data/cosmere/recipes/lerasium_lead_alloy_3.json -efce7628f993c24bb4299ef4801c649c797c7b2e data/cosmere/recipes/lerasium_lead_alloy_4.json -31fa9867ac86cc3f1110d1c85cb92c884d32d55d data/cosmere/recipes/lerasium_lead_alloy_5.json -d0096540b2016618cfbaf8ba32f0bfeb5c01f53a data/cosmere/recipes/lerasium_lead_alloy_6.json -411820ac98799beef895af163ada1b2f74efa1fe data/cosmere/recipes/lerasium_lead_alloy_7.json -2fac02420bd32a246d216017937aade691ff9418 data/cosmere/recipes/lerasium_lead_alloy_8.json -91d322fc38b2196cf8f3e930c498843419d32dce data/cosmere/recipes/lerasium_lead_alloy_9.json -27253d3d1fbe7ed975577d1ec000d245a2cc6359 data/cosmere/recipes/lerasium_malatium_alloy_1.json -b7003841337b22cc7bda5033c5bf338d0c8fa563 data/cosmere/recipes/lerasium_malatium_alloy_10.json -98fa2436e60deeefeafa7fd36ded403c3360de66 data/cosmere/recipes/lerasium_malatium_alloy_11.json -b3f8f3f2505ac548dc3084e36f9aac3fab01f90c data/cosmere/recipes/lerasium_malatium_alloy_12.json -7df28f64350fb40927ab0f5ffcc01310bcc84d50 data/cosmere/recipes/lerasium_malatium_alloy_13.json -ca5313a846538359f862493f0a86722314d66121 data/cosmere/recipes/lerasium_malatium_alloy_14.json -f0cadc79bc036c63ccf3389973eaa01ce3c9a7f4 data/cosmere/recipes/lerasium_malatium_alloy_15.json -8d0c4046332804658ed1acb7cafa485afa4c4952 data/cosmere/recipes/lerasium_malatium_alloy_16.json -00d87b927154bbf0f9db9f186de067ccbc80a13c data/cosmere/recipes/lerasium_malatium_alloy_2.json -60917c1977c40ba5260b34ffdc920f30072d0e68 data/cosmere/recipes/lerasium_malatium_alloy_3.json -c3b76e5e1223b5a41bd80d66aaa7eed43577d6d4 data/cosmere/recipes/lerasium_malatium_alloy_4.json -2c3434d0ffcffa8e1ca92035d6f89ccef1d3fb40 data/cosmere/recipes/lerasium_malatium_alloy_5.json -2f1bfaa406b951e6699c8a3491d5cc5a69df17b1 data/cosmere/recipes/lerasium_malatium_alloy_6.json -f7f425daac8dcf9c8dbb550ac6a7fb888a2aeddb data/cosmere/recipes/lerasium_malatium_alloy_7.json -532087e9855ea29d0784828a593bab062c9aabfc data/cosmere/recipes/lerasium_malatium_alloy_8.json -9e85fa5fbca8ded76170c5c0ec61a1d3819bd7bf data/cosmere/recipes/lerasium_malatium_alloy_9.json -48f455c794b64636ca7b0ff6ac5c13a5c91e75c0 data/cosmere/recipes/lerasium_nickel_alloy_1.json -75e0107a8f828f070ebda91e12a4d540b7232a31 data/cosmere/recipes/lerasium_nickel_alloy_10.json -123640370150f4ebfc6d8c9dda2684d16398e195 data/cosmere/recipes/lerasium_nickel_alloy_11.json -702eed904122553d0c586bfb9fe1709a408fb84e data/cosmere/recipes/lerasium_nickel_alloy_12.json -6db2298c2637db5e7e524e40f63fe99eecae5c94 data/cosmere/recipes/lerasium_nickel_alloy_13.json -ec8eda2d76119a53f5cace588e0768f5682d9d4a data/cosmere/recipes/lerasium_nickel_alloy_14.json -fe8fa676385165c7078beba9bcf09d67464982f6 data/cosmere/recipes/lerasium_nickel_alloy_15.json -c186159f6a27c489e283565a335440981052b142 data/cosmere/recipes/lerasium_nickel_alloy_16.json -0d58fde3d1d4eb56c2e71bef3c686509409cb9bb data/cosmere/recipes/lerasium_nickel_alloy_2.json -e6bd83e2f60897f4c28f844c7182eeec688832fb data/cosmere/recipes/lerasium_nickel_alloy_3.json -ff99b94274938397f43ba84aa9f0143e83f561c4 data/cosmere/recipes/lerasium_nickel_alloy_4.json -4f5d871582ae537a12fee3fe88a491323d9a171f data/cosmere/recipes/lerasium_nickel_alloy_5.json -d6fd5560ff1feb5b44e1365a65296e7f01a5c214 data/cosmere/recipes/lerasium_nickel_alloy_6.json -93136781fac7214828aed79712115c187565075b data/cosmere/recipes/lerasium_nickel_alloy_7.json -2c012e151c96b20ae9fed34a862f02ea911de522 data/cosmere/recipes/lerasium_nickel_alloy_8.json -7469d084f3a20d189869d861a54b34abb5f2287e data/cosmere/recipes/lerasium_nickel_alloy_9.json -d616c1e86cc45319992920f28764bebd1ff8831c data/cosmere/recipes/lerasium_nicrosil_alloy_1.json -d856a1a9888d065dc4a6844e6041c643157d2be0 data/cosmere/recipes/lerasium_nicrosil_alloy_10.json -0c722e5ea3630aa9d728d7fb1828d5cd93560a77 data/cosmere/recipes/lerasium_nicrosil_alloy_11.json -060a3f267cd66ebd597815e6d9bcad5827df26a3 data/cosmere/recipes/lerasium_nicrosil_alloy_12.json -5bd541c41b615d011f5b14e38f761f7f66daf035 data/cosmere/recipes/lerasium_nicrosil_alloy_13.json -da843ca0150cb3a2962b75c906947aed446d6908 data/cosmere/recipes/lerasium_nicrosil_alloy_14.json -fc239e091cc9061a5ba8e5e8e10f29f54c2982d5 data/cosmere/recipes/lerasium_nicrosil_alloy_15.json -2c39a89e7ff6fc9a40535ceb1814b30a2983895e data/cosmere/recipes/lerasium_nicrosil_alloy_16.json -f922dcc8bcdf1a37a9e4ecdb2cd3934165cd257f data/cosmere/recipes/lerasium_nicrosil_alloy_2.json -f6519eadfb1bf979720a9827e226742447c3b4c0 data/cosmere/recipes/lerasium_nicrosil_alloy_3.json -306898b1685ca14e51522e2227337ed6a844f7d1 data/cosmere/recipes/lerasium_nicrosil_alloy_4.json -3a39b7f4f33815609cdfe81e5f3a66688cedee51 data/cosmere/recipes/lerasium_nicrosil_alloy_5.json -5cfc1f09061846b39e1bdba7143592518b71a184 data/cosmere/recipes/lerasium_nicrosil_alloy_6.json -7273082fe893faed926aa668fcfea076cb100552 data/cosmere/recipes/lerasium_nicrosil_alloy_7.json -106cbc94d64aa944c15ce404c1fde165c73fd091 data/cosmere/recipes/lerasium_nicrosil_alloy_8.json -f385713c53c2cc5cfc74f1d2134f261796758621 data/cosmere/recipes/lerasium_nicrosil_alloy_9.json -5ff0977e0a07c14b72abfb07a9bdfc54ae30b61a data/cosmere/recipes/lerasium_pewter_alloy_1.json -d809f4036c8713ca224b50f1a8c9fbd068634b65 data/cosmere/recipes/lerasium_pewter_alloy_10.json -0d3ea2b8254e243528ccc84dc0eadcbf251a355e data/cosmere/recipes/lerasium_pewter_alloy_11.json -2ee7d54b515b673a00af8715d25232378e53858c data/cosmere/recipes/lerasium_pewter_alloy_12.json -289d2d71f208957f2c231126abe89bebaad6c706 data/cosmere/recipes/lerasium_pewter_alloy_13.json -489a1eb07e920444feb7305b56ebd66da30654fb data/cosmere/recipes/lerasium_pewter_alloy_14.json -618aac68e0508ea7037e6b280cb8887974647826 data/cosmere/recipes/lerasium_pewter_alloy_15.json -5ad458692bc324710222022b983c36a0f6357ecf data/cosmere/recipes/lerasium_pewter_alloy_16.json -bb3f06c9e702f68feacfc44981d93a82de25f992 data/cosmere/recipes/lerasium_pewter_alloy_2.json -1e9ac1e2e3abef1acf9a013f9f9a6d55ce3d63b4 data/cosmere/recipes/lerasium_pewter_alloy_3.json -0a64603c6e456bc4611243f719a19df80c08bc1d data/cosmere/recipes/lerasium_pewter_alloy_4.json -4dbd2a5a74211bf683386ce96a26a3e23d3b42bf data/cosmere/recipes/lerasium_pewter_alloy_5.json -c851c10edaff1d0598d4890487f07696275325a4 data/cosmere/recipes/lerasium_pewter_alloy_6.json -ddaf32dd49b1e25463d7267e2370f3f4a4806976 data/cosmere/recipes/lerasium_pewter_alloy_7.json -4395ed85053674df3dd6117b314b550be59d3aba data/cosmere/recipes/lerasium_pewter_alloy_8.json -c61e4c4573e3aa6c8d7e7aff1f85dfe3d9897c2d data/cosmere/recipes/lerasium_pewter_alloy_9.json -45dad67787028e747160ff4fd1500f86160e13cb data/cosmere/recipes/lerasium_silver_alloy_1.json -879330f54223da16139df86abf6c84df3091c222 data/cosmere/recipes/lerasium_silver_alloy_10.json -178634d8af03793a833634a4c449bd9a914a916d data/cosmere/recipes/lerasium_silver_alloy_11.json -0225a06d0cef0256130368575272533497e5aa65 data/cosmere/recipes/lerasium_silver_alloy_12.json -f61aa50c8425265d5fc1ff40e21a400ccd3b31b4 data/cosmere/recipes/lerasium_silver_alloy_13.json -351acde007348522857d0498e934b38a62c6cc21 data/cosmere/recipes/lerasium_silver_alloy_14.json -db63e361b6f19b97798e128033a9875a12e66011 data/cosmere/recipes/lerasium_silver_alloy_15.json -d6b322cf8e00253d0d860345cda3aa05f81534e2 data/cosmere/recipes/lerasium_silver_alloy_16.json -ad6d5453528f1196d9e812a2ff53bac2dea8dbc9 data/cosmere/recipes/lerasium_silver_alloy_2.json -4d9d6c267d68fc0455e2879b03340ddb7958088c data/cosmere/recipes/lerasium_silver_alloy_3.json -1a0f40a3fb7b322512f058075324480027750243 data/cosmere/recipes/lerasium_silver_alloy_4.json -864b5b7d807bbcab7ce319490518c3e6f0a3663f data/cosmere/recipes/lerasium_silver_alloy_5.json -0a2b7391c1bea7c2e99c82ae002fd532d0199f55 data/cosmere/recipes/lerasium_silver_alloy_6.json -6428c229781a80d18ec906e442b85fc447e03354 data/cosmere/recipes/lerasium_silver_alloy_7.json -1942b1276b7d1afa49e4cb6c4df38a28544d9b90 data/cosmere/recipes/lerasium_silver_alloy_8.json -ff7614e3e35e55cd4a7c1dbdc65f4a28e5a28f7c data/cosmere/recipes/lerasium_silver_alloy_9.json -5c750462a2a8d59390751aa0f93c472e345659db data/cosmere/recipes/lerasium_steel_alloy_1.json -1f492d66dcfcd4768ff132f31ff95f1ae8ec39e4 data/cosmere/recipes/lerasium_steel_alloy_10.json -582b09f9400e885f22899d4374f441e23afd8362 data/cosmere/recipes/lerasium_steel_alloy_11.json -5a0030f71821d9d7db319f9dd14678ff527d6af8 data/cosmere/recipes/lerasium_steel_alloy_12.json -b4a9946e7c7bfab881dfd19685100327803be4cc data/cosmere/recipes/lerasium_steel_alloy_13.json -d7b12511e4e9c144843033a2a4f8ea41008f37df data/cosmere/recipes/lerasium_steel_alloy_14.json -597a54e0d71adb9765df88d771ef9aac7277dd3f data/cosmere/recipes/lerasium_steel_alloy_15.json -32cf0ac059308064211e156ebd97f9a96a6b9f7d data/cosmere/recipes/lerasium_steel_alloy_16.json -b76286ad2912f9277de0f19a8b767e994192c9c2 data/cosmere/recipes/lerasium_steel_alloy_2.json -e71be3a31a042b37a6310ae39086fff639ca7785 data/cosmere/recipes/lerasium_steel_alloy_3.json -cc1f5508f41a004ed3a0e05cbb22b962cc36b7cc data/cosmere/recipes/lerasium_steel_alloy_4.json -1c38593113deafca3de2b194a26ca48a51a62826 data/cosmere/recipes/lerasium_steel_alloy_5.json -66c4a48eed6df90a6aae04050377975a37b639cf data/cosmere/recipes/lerasium_steel_alloy_6.json -a89db067465587e9558b6f18ab72db0788e98751 data/cosmere/recipes/lerasium_steel_alloy_7.json -952dfc2f64de51fc8389eece21cfafec99156956 data/cosmere/recipes/lerasium_steel_alloy_8.json -eb629b154bc60591f210d7375a2ac4d1d42daa3f data/cosmere/recipes/lerasium_steel_alloy_9.json -01328cb4bdf3c0df18c7fc1ac21fe2b1b789f5e4 data/cosmere/recipes/lerasium_tin_alloy_1.json -39228395c341ba238c633d165b28740fa9debcde data/cosmere/recipes/lerasium_tin_alloy_10.json -7d2643ba9146a6fa12a0d0facafef8b778d5e50d data/cosmere/recipes/lerasium_tin_alloy_11.json -23f366d84695fae8b679d4caf1a4dd91b4f757d0 data/cosmere/recipes/lerasium_tin_alloy_12.json -ca88dc4225abc087550d2ddc2b01e10d48779402 data/cosmere/recipes/lerasium_tin_alloy_13.json -304cc281c682bc366c7e2118fa1d7ddee548ba75 data/cosmere/recipes/lerasium_tin_alloy_14.json -c659c449afe516ac6a776cc8d76981e97889e15d data/cosmere/recipes/lerasium_tin_alloy_15.json -53161f17cd9842049a4bb0c4dffafd2932c5fe34 data/cosmere/recipes/lerasium_tin_alloy_16.json -269f572bca146137606137cdc16037dd85b2ea00 data/cosmere/recipes/lerasium_tin_alloy_2.json -c286748c4a2d09184746a4cec746bdebcadf72d2 data/cosmere/recipes/lerasium_tin_alloy_3.json -3d8383c35b9aa17f79f4e7138c242d4eb60c34d5 data/cosmere/recipes/lerasium_tin_alloy_4.json -615c25e35a4665b8e4ae877d3e17970a1a5db6f4 data/cosmere/recipes/lerasium_tin_alloy_5.json -76d5e4d4001136dc226c77febff887096a6d21ef data/cosmere/recipes/lerasium_tin_alloy_6.json -4ea68a31b8d6092181ca04328df74b42c1db97d6 data/cosmere/recipes/lerasium_tin_alloy_7.json -aa7aeb63fb3ce10dfdad798e914e92f156d83231 data/cosmere/recipes/lerasium_tin_alloy_8.json -e26e91a9299d3b10142940a8b13e1ccb93823541 data/cosmere/recipes/lerasium_tin_alloy_9.json -51b5bd09d86971fd51212770781f33be3f0dfb09 data/cosmere/recipes/lerasium_zinc_alloy_1.json -3501cb9e29cdee586de3a8abdc88a725fc1e4216 data/cosmere/recipes/lerasium_zinc_alloy_10.json -7c3c756dbdd6c6e7d39c28d4a0b5c6b9d36a6538 data/cosmere/recipes/lerasium_zinc_alloy_11.json -178eec2c51a604053669a1ace74cb0503997e33d data/cosmere/recipes/lerasium_zinc_alloy_12.json -15b3dea5505e83cea0576d3af72cc8b3cda3b1f8 data/cosmere/recipes/lerasium_zinc_alloy_13.json -85ff43b7322b1da4d6c2d27c7db8f03bd2bd7493 data/cosmere/recipes/lerasium_zinc_alloy_14.json -0a2c5672849383c04862ec5dea46c1ffa1547b29 data/cosmere/recipes/lerasium_zinc_alloy_15.json -40064a5f08ca537e730aae27df478795e3f20e9f data/cosmere/recipes/lerasium_zinc_alloy_16.json -6dfd7b1485df1e24c2980794141e580cae10e9ee data/cosmere/recipes/lerasium_zinc_alloy_2.json -4a2103550103be00536943e45369d54e94f6ab30 data/cosmere/recipes/lerasium_zinc_alloy_3.json -84e989f2a5506a81a114faa58addb1c5ceb74237 data/cosmere/recipes/lerasium_zinc_alloy_4.json -3184ba956a3676e73e4e6ba4eae7ee9b134198e0 data/cosmere/recipes/lerasium_zinc_alloy_5.json -65d1db430f9b0b941d5b124ab9063f5583ca5693 data/cosmere/recipes/lerasium_zinc_alloy_6.json -054dac36ed4d15de3ac087b7b9d9074303992e76 data/cosmere/recipes/lerasium_zinc_alloy_7.json -6d1aa022f5066475f88c6e78c7db33f139709ee9 data/cosmere/recipes/lerasium_zinc_alloy_8.json -e570bdaf231222e9e0c55e8a544db51ca147f485 data/cosmere/recipes/lerasium_zinc_alloy_9.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json new file mode 100644 index 000000000..91d3cfec3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:atium_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:atium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json new file mode 100644 index 000000000..a054e3605 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:harmonium_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:harmonium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:harmonium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json new file mode 100644 index 000000000..a710a975a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json new file mode 100644 index 000000000..f099cd496 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 5d034caff..60547a797 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,14 +4,9 @@ package leaf.cosmere; -import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.helpers.RegistryHelper; -import leaf.cosmere.common.recipe.MetalworkingRecipeBuilder; import leaf.cosmere.common.registration.impl.ItemRegistryObject; -import net.minecraft.core.Holder; -import net.minecraft.core.HolderLookup; -import net.minecraft.core.registries.Registries; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.nbt.CompoundTag; @@ -23,7 +18,6 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; -import net.minecraftforge.common.crafting.CompoundIngredient; import net.minecraftforge.common.crafting.DifferenceIngredient; import net.minecraftforge.common.crafting.PartialNBTIngredient; import net.minecraftforge.common.data.ExistingFileHelper; @@ -290,29 +284,6 @@ protected ShapelessRecipeBuilder compressRecipe(ItemLike output, ItemLike input) .requires(ingredient, 9); } - protected MetalworkingRecipeBuilder alloyingRecipe(ItemLike output, ItemLike input, ItemLike godInput, int size) - { - if (!(godInput instanceof IHasMetalType godMetalItemInput)) return null; - if (!(input instanceof IHasMetalType metalItemInput)) return null; - - CompoundTag nbt = new CompoundTag(); - nbt.putInt("nuggetSize", size); - int[] metalIds = { godMetalItemInput.getMetalType().getID(), metalItemInput.getMetalType().getID() }; - nbt.putIntArray("alloyedMetals", metalIds); - - CompoundTag godNbt = new CompoundTag(); - godNbt.putInt("nuggetSize", size); - - Ingredient ingredient = Ingredient.of(input); - Ingredient godIngredient = PartialNBTIngredient.of(godInput, godNbt); - - return MetalworkingRecipeBuilder.metalworking(RecipeCategory.MISC, output) - .resultNbt(nbt) - .requires(ingredient, 15) - .requires(godIngredient, 1) - .unlockedBy("has_item", has(output)); - } - protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index b1d5d9788..6f557c043 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -91,21 +91,6 @@ protected void addRecipes(Consumer consumer) Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; - if(!metalType.isGodMetal()) - { - for (Metals.MetalType godMetal : godMetals) - { - for (int i = 1; i <= 16; i++) - { - alloyingRecipe( - ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(), - ItemsRegistry.METAL_NUGGETS.get(metalType).get(), - ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get(), - i).save(consumer, new ResourceLocation(Cosmere.MODID, godMetal.getName() + "_" + metalType.getName() + "_alloy_" + i)); - } - } - } - if (metalType.isAlloy()) { Item outputBlend = ItemsRegistry.METAL_RAW_BLEND.get(metalType).asItem(); diff --git a/src/main/java/leaf/cosmere/client/ClientModEvents.java b/src/main/java/leaf/cosmere/client/ClientModEvents.java index d0defa633..461e2e3cd 100644 --- a/src/main/java/leaf/cosmere/client/ClientModEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientModEvents.java @@ -4,23 +4,16 @@ package leaf.cosmere.client; -import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.client.gui.MetalworkingTableScreen; import leaf.cosmere.client.gui.SpiritwebMenu; import leaf.cosmere.client.render.CosmereRenderers; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.registry.MenuRegistry; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.MenuScreens; -import net.minecraft.client.renderer.texture.TextureAtlas; -import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; -import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @@ -91,9 +84,4 @@ public static void renderSpiritwebHUD(final GuiGraphics guiGraphics) }); } - - @SubscribeEvent - public static void onRegisterScreens(FMLClientSetupEvent e) { - MenuScreens.register(MenuRegistry.METALWORKING_TABLE_MENU.get(), MetalworkingTableScreen::new); - } } diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java deleted file mode 100644 index 6c46a56c0..000000000 --- a/src/main/java/leaf/cosmere/client/gui/MetalworkingResultSlot.java +++ /dev/null @@ -1,33 +0,0 @@ -package leaf.cosmere.client.gui; - -import net.minecraft.core.NonNullList; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.Slot; -import net.minecraft.world.item.ItemStack; - -public class MetalworkingResultSlot extends Slot { - private final MetalworkingTableMenu menu; - private final Player player; - - public MetalworkingResultSlot(MetalworkingTableMenu menu, Player player, int pSlot, int pX, int pY) { - // slot index, x, y are controlled by the menu when adding; we just need a dummy container for ctor, but we won't use it - super(menu.getResultContainer(), pSlot, pX, pY); - this.menu = menu; - this.player = player; - } - - @Override - public boolean mayPlace(ItemStack stack) { return false; } - - @Override - public ItemStack remove(int amount) { - // allow removing crafted stack even if container impl disallows normal removes - return this.getItem().split(amount); - } - - @Override - public void onTake(Player player, ItemStack crafted) { - crafted.onCraftedBy(player.level(), player, crafted.getCount()); - menu.onCrafted(player, crafted); - } -} diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java deleted file mode 100644 index 19c7e0782..000000000 --- a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableMenu.java +++ /dev/null @@ -1,185 +0,0 @@ -package leaf.cosmere.client.gui; - -import leaf.cosmere.common.recipe.MetalworkingRecipe; -import leaf.cosmere.common.registry.BlocksRegistry; -import leaf.cosmere.common.registry.MenuRegistry; -import net.minecraft.core.BlockPos; -import net.minecraft.core.NonNullList; -import net.minecraft.world.Container; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.*; -import net.minecraft.world.item.crafting.Recipe; - -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.Level; - -import java.util.Optional; - -public class MetalworkingTableMenu extends AbstractContainerMenu -{ - private final Level level; - private final ContainerLevelAccess access; - private final Player player; - - private final CraftingContainer craftSlots = new TransientCraftingContainer(this, 4, 4); - private final ResultContainer resultSlots = new ResultContainer(); - - public MetalworkingTableMenu(int id, Inventory playerInv, BlockPos pos) - { - super(MenuRegistry.METALWORKING_TABLE_MENU.get(), id); - this.level = playerInv.player.level(); - this.player = playerInv.player; - this.access = ContainerLevelAccess.create(level, pos); - - // Output slot (index 0) - // was: new ResultSlot(playerInv.player, craftSlots, resultSlots, 0, 134, 44) - Slot result = new MetalworkingResultSlot(this, playerInv.player, 0, 134, 44); - result.index = 0; // ensure index 0 - this.addSlot(result); - - // 4×4 crafting grid (indexes 1..16) - int index = 1; - for (int y = 0; y < 4; y++) - { - for (int x = 0; x < 4; x++) - { - this.addSlot(new Slot(craftSlots, index - 1, 22 + x * 18, 17 + y * 18)); - index++; - } - } - - // Player inventory - int invY = 102; - for (int r = 0; r < 3; r++) - { - for (int c = 0; c < 9; c++) - { - this.addSlot(new Slot(playerInv, c + r * 9 + 9, 8 + c * 18, invY + r * 18)); - } - } - // Hotbar - for (int c = 0; c < 9; c++) - { - this.addSlot(new Slot(playerInv, c, 8 + c * 18, invY + 58)); - } - - // Initial compute - this.slotsChanged(craftSlots); - } - - @Override - public void slotsChanged(Container container) - { - super.slotsChanged(container); - if (!level.isClientSide) - { - updateResult(); - } - } - - private void updateResult() - { - ItemStack out = ItemStack.EMPTY; - - Optional> r = - level.getRecipeManager().getRecipeFor(MetalworkingRecipe.TYPE, craftSlots, level); - - if (r.isPresent()) - { - MetalworkingRecipe recipe = (MetalworkingRecipe) r.get(); - out = recipe.assemble(craftSlots, level.registryAccess()); - } - - resultSlots.setItem(0, out); - broadcastChanges(); - } - - @Override - public void removed(Player player) - { - super.removed(player); - this.access.execute((level, pos) -> this.clearContainer(player, this.craftSlots)); - this.resultSlots.clearContent(); - } - - @Override - public boolean stillValid(Player player) - { - return stillValid(access, player, BlocksRegistry.METALWORKING_TABLE.getBlock()); - } - - @Override - public ItemStack quickMoveStack(Player player, int index) { - ItemStack ret = ItemStack.EMPTY; - Slot slot = this.slots.get(index); - if (!slot.hasItem()) return ItemStack.EMPTY; - - ItemStack stack = slot.getItem(); - ret = stack.copy(); - - final int RESULT = 0; - final int GRID_START = 1, GRID_END = 17; - final int INV_START = 17, INV_END = 44; - final int HOT_START = 44, HOT_END = 53; - - if (index == RESULT) { - if (!this.moveItemStackTo(stack, INV_START, HOT_END, true)) return ItemStack.EMPTY; - slot.onTake(player, stack); // triggers onCrafted → consumes inputs properly - } else if (index >= GRID_START && index < GRID_END) { - if (!this.moveItemStackTo(stack, INV_START, HOT_END, false)) return ItemStack.EMPTY; - } else if (index >= INV_START && index < INV_END) { - if (!this.moveItemStackTo(stack, HOT_START, HOT_END, false)) return ItemStack.EMPTY; - } else if (index >= HOT_START && index < HOT_END) { - if (!this.moveItemStackTo(stack, INV_START, INV_END, false)) return ItemStack.EMPTY; - } - - if (stack.isEmpty()) slot.set(ItemStack.EMPTY); else slot.setChanged(); - if (stack.getCount() == ret.getCount()) return ItemStack.EMPTY; - - slot.onTake(player, stack); - this.slotsChanged(this.craftSlots); - return ret; - } - - public ResultContainer getResultContainer() { return this.resultSlots; } - - void onCrafted(Player player, ItemStack crafted) { - // consume ingredients using YOUR recipe’s remaining items - NonNullList remaining = getRemainingItemsForCurrentRecipe(); - - for (int i = 0; i < remaining.size(); ++i) { - ItemStack inGrid = this.craftSlots.getItem(i); - ItemStack rem = remaining.get(i); - - if (!inGrid.isEmpty()) { - this.craftSlots.removeItem(i, 1); - inGrid = this.craftSlots.getItem(i); - } - - if (!rem.isEmpty()) { - if (inGrid.isEmpty()) { - this.craftSlots.setItem(i, rem); - } else if (ItemStack.isSameItemSameTags(inGrid, rem)) { - rem.grow(inGrid.getCount()); - this.craftSlots.setItem(i, rem); - } else if (!this.player.getInventory().add(rem)) { - this.player.drop(rem, false); - } - } - } - - this.broadcastChanges(); - } - - - private NonNullList getRemainingItemsForCurrentRecipe() { - Optional> r = - level.getRecipeManager().getRecipeFor(MetalworkingRecipe.TYPE, craftSlots, level); - if (r.isPresent()) { - MetalworkingRecipe recipe = (MetalworkingRecipe) r.get(); - return recipe.getRemainingItems(craftSlots); - } - return NonNullList.withSize(16, ItemStack.EMPTY); - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java b/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java deleted file mode 100644 index 457290150..000000000 --- a/src/main/java/leaf/cosmere/client/gui/MetalworkingTableScreen.java +++ /dev/null @@ -1,44 +0,0 @@ -package leaf.cosmere.client.gui; - -import leaf.cosmere.common.Cosmere; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; -import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.player.Inventory; - -public class MetalworkingTableScreen extends AbstractContainerScreen -{ - private static final ResourceLocation BG = new ResourceLocation(Cosmere.MODID, "textures/gui/metalworking_table.png"); - - public MetalworkingTableScreen(MetalworkingTableMenu menu, Inventory inv, Component title) - { - super(menu, inv, title); - this.imageWidth = 175; - this.imageHeight = 183; - } - - @Override - protected void renderBg(GuiGraphics gfx, float partialTicks, int mouseX, int mouseY) - { - int x = (this.width - this.imageWidth) / 2; - int y = (this.height - this.imageHeight) / 2; - gfx.blit(BG, x, y, 0, 0, this.imageWidth, this.imageHeight); - - } - - @Override - protected void renderLabels(GuiGraphics gfx, int mouseX, int mouseY) - { - gfx.drawString(this.font, this.title, 21, 6, 0x404040, false); - gfx.drawString(this.font, this.playerInventoryTitle, 8, this.imageHeight - 94 + 2, 0x404040, false); - } - - @Override - public void render(GuiGraphics g, int mouseX, int mouseY, float partial) { - this.renderBackground(g); - super.render(g, mouseX, mouseY, partial); - this.renderTooltip(g, mouseX, mouseY); - } -} - diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index 7b59a9ebb..aa719c43d 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -70,8 +70,6 @@ public Cosmere() LootFunctionRegistry.LOOT_FUNCTIONS.register(modBus); GameEventRegistry.GAME_EVENTS.register(modBus); ArgumentTypeRegistry.ARGUMENT_TYPE_INFOS.register(modBus); - MenuRegistry.MENUS.register(modBus); - MenuRegistry.RECIPE_SERIALIZERS.register(modBus); CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); diff --git a/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java b/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java index cd0d5e874..2b368d8cd 100644 --- a/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java +++ b/src/main/java/leaf/cosmere/common/blocks/MetalworkingTableBlock.java @@ -4,22 +4,8 @@ package leaf.cosmere.common.blocks; -import leaf.cosmere.client.gui.MetalworkingTableMenu; import leaf.cosmere.common.properties.PropTypes; -import net.minecraft.core.BlockPos; -import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.MenuProvider; -import net.minecraft.world.entity.player.Inventory; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.inventory.AbstractContainerMenu; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; -import net.minecraft.world.level.block.state.BlockState; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.network.NetworkHooks; public class MetalworkingTableBlock extends BaseBlock { @@ -27,28 +13,4 @@ public MetalworkingTableBlock() { super(PropTypes.Blocks.METAL.get(), SoundType.METAL, 1F, 2F); } - - @Override - public InteractionResult use(BlockState state, Level level, BlockPos pos, - Player player, InteractionHand hand, BlockHitResult hit) - { - if (!level.isClientSide) - { - NetworkHooks.openScreen((ServerPlayer) player, new MenuProvider() - { - @Override - public Component getDisplayName() - { - return Component.translatable("block.cosmere.metalworking_table"); - } - - @Override - public AbstractContainerMenu createMenu(int id, Inventory inv, Player p) - { - return new MetalworkingTableMenu(id, inv, pos); - } - }, buf -> buf.writeLong(pos.asLong())); - } - return InteractionResult.sidedSuccess(level.isClientSide); - } } diff --git a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java deleted file mode 100644 index 3ea465400..000000000 --- a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipe.java +++ /dev/null @@ -1,168 +0,0 @@ -package leaf.cosmere.common.recipe; - -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import com.google.gson.JsonSyntaxException; -import leaf.cosmere.common.registry.MenuRegistry; -import net.minecraft.core.NonNullList; -import net.minecraft.core.RegistryAccess; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.util.GsonHelper; -import net.minecraft.world.inventory.CraftingContainer; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.*; -import net.minecraft.world.level.Level; - -import java.util.ArrayList; -import java.util.List; - -// Shapeless4x4Recipe.java -public class MetalworkingRecipe implements Recipe -{ - public static final RecipeType TYPE = RecipeTypes.METALWORKING; - - private final ResourceLocation id; - private final String group; - private final ItemStack result; - private final NonNullList ingredients; // 1..16 - - public MetalworkingRecipe(ResourceLocation id, String group, ItemStack result, NonNullList ingredients) - { - this.id = id; - this.group = group; - this.result = result; - this.ingredients = ingredients; - } - - @Override - public boolean matches(CraftingContainer input, Level level) - { - if (input.getWidth() != 4 || input.getHeight() != 4) - { - return false; - } - - List inputs = new ArrayList<>(); - for (int i = 0; i < 16; i++) - { - ItemStack s = input.getItem(i); - if (!s.isEmpty()) - { - inputs.add(s); - } - } - if (inputs.size() != ingredients.size()) - { - return false; - } - - List pool = new ArrayList<>(ingredients); - outer: - for (ItemStack s : inputs) - { - for (int i = 0; i < pool.size(); i++) - { - if (pool.get(i).test(s)) - { - pool.remove(i); - continue outer; - } - } - return false; - } - return pool.isEmpty(); - } - - @Override - public ItemStack assemble(CraftingContainer input, RegistryAccess access) - { - return result.copy(); - } - - @Override - public boolean canCraftInDimensions(int w, int h) - { - return w * h >= ingredients.size(); - } - - @Override - public ItemStack getResultItem(RegistryAccess access) - { - return result; - } - - @Override - public ResourceLocation getId() - { - return id; - } - - @Override - public RecipeSerializer getSerializer() - { - return MenuRegistry.METALWORKING_SERIALIZER.get(); - } - - @Override - public RecipeType getType() - { - return TYPE; - } - - @Override - public NonNullList getRemainingItems(CraftingContainer input) { - NonNullList list = NonNullList.withSize(input.getContainerSize(), ItemStack.EMPTY); - for (int i = 0; i < list.size(); ++i) { - ItemStack stack = input.getItem(i); - list.set(i, stack.getCraftingRemainingItem()); - } - return list; - } - - // ---- Serializer ---- - public static class Serializer implements RecipeSerializer - { - @Override - public MetalworkingRecipe fromJson(ResourceLocation id, JsonObject json) - { - String group = GsonHelper.getAsString(json, "group", ""); - - JsonArray arr = GsonHelper.getAsJsonArray(json, "ingredients"); - NonNullList ings = NonNullList.create(); - for (JsonElement el : arr) { - Ingredient ingredient = Ingredient.fromJson(el); - if (!ingredient.isEmpty()) { - ings.add(ingredient); - } - } - - if (ings.isEmpty() || ings.size() > 16) - throw new JsonSyntaxException("Shapeless 4x4 requires 1–16 ingredients"); - - ItemStack result = ShapedRecipe.itemStackFromJson(GsonHelper.getAsJsonObject(json, "result")); - return new MetalworkingRecipe(id, group, result, ings); - } - - @Override - public MetalworkingRecipe fromNetwork(ResourceLocation id, FriendlyByteBuf buf) - { - String group = buf.readUtf(); - int count = buf.readVarInt(); - NonNullList ings = NonNullList.withSize(count, Ingredient.EMPTY); - for (int i = 0; i < count; i++) ings.set(i, Ingredient.fromNetwork(buf)); - ItemStack result = buf.readItem(); - return new MetalworkingRecipe(id, group, result, ings); - } - - @Override - public void toNetwork(FriendlyByteBuf buf, MetalworkingRecipe r) - { - buf.writeUtf(r.group); - buf.writeVarInt(r.ingredients.size()); - for (Ingredient i : r.ingredients) i.toNetwork(buf); - buf.writeItem(r.result); - } - } -} diff --git a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java b/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java deleted file mode 100644 index 7ea46b5e4..000000000 --- a/src/main/java/leaf/cosmere/common/recipe/MetalworkingRecipeBuilder.java +++ /dev/null @@ -1,184 +0,0 @@ -package leaf.cosmere.common.recipe; - -import com.google.common.collect.Lists; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import leaf.cosmere.common.registry.MenuRegistry; -import net.minecraft.advancements.Advancement; -import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.advancements.RequirementsStrategy; -import net.minecraft.advancements.critereon.RecipeUnlockedTrigger; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.data.recipes.CraftingRecipeBuilder; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeBuilder; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.ItemLike; - -import javax.annotation.Nullable; -import java.util.Iterator; -import java.util.List; -import java.util.function.Consumer; - -public class MetalworkingRecipeBuilder extends CraftingRecipeBuilder implements RecipeBuilder { - private final RecipeCategory category; - private final Item result; - private final int count; - private final List ingredients = Lists.newArrayList(); - private final Advancement.Builder advancement = Advancement.Builder.recipeAdvancement(); - @Nullable - private String group; - @Nullable - private CompoundTag resultNbt; - - public MetalworkingRecipeBuilder(RecipeCategory category, ItemLike result, int count) { - this.category = category; - this.result = result.asItem(); - this.count = count; - } - - public static MetalworkingRecipeBuilder metalworking(RecipeCategory category, ItemLike result) { - return new MetalworkingRecipeBuilder(category, result, 1); - } - - public static MetalworkingRecipeBuilder metalworking(RecipeCategory category, ItemLike result, int count) { - return new MetalworkingRecipeBuilder(category, result, count); - } - - public MetalworkingRecipeBuilder requires(TagKey tag) { - return this.requires(Ingredient.of(tag)); - } - - public MetalworkingRecipeBuilder requires(ItemLike item) { - return this.requires(item, 1); - } - - public MetalworkingRecipeBuilder requires(ItemLike item, int quantity) { - for (int i = 0; i < quantity; ++i) { - this.requires(Ingredient.of(item)); - } - return this; - } - - public MetalworkingRecipeBuilder requires(Ingredient ingredient) { - return this.requires(ingredient, 1); - } - - public MetalworkingRecipeBuilder requires(Ingredient ingredient, int quantity) { - for (int i = 0; i < quantity; ++i) { - this.ingredients.add(ingredient.toJson()); - } - return this; - } - - public MetalworkingRecipeBuilder requiresRaw(JsonElement rawIngredientJson) { - this.ingredients.add(rawIngredientJson); - return this; - } - - public MetalworkingRecipeBuilder resultNbt(@Nullable CompoundTag nbt) { - this.resultNbt = nbt == null ? null : nbt.copy(); - return this; - } - - public MetalworkingRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { - this.advancement.addCriterion(name, trigger); - return this; - } - - public MetalworkingRecipeBuilder group(@Nullable String group) { - this.group = group; - return this; - } - - public Item getResult() { - return this.result; - } - - public void save(Consumer consumer, ResourceLocation id) { - this.ensureValid(id); - this.advancement.parent(ROOT_RECIPE_ADVANCEMENT).addCriterion("has_the_recipe", RecipeUnlockedTrigger.unlocked(id)).rewards(net.minecraft.advancements.AdvancementRewards.Builder.recipe(id)).requirements(RequirementsStrategy.OR); - consumer.accept(new Result(id, this.result, this.count, this.group == null ? "" : this.group, determineBookCategory(this.category), this.ingredients, this.advancement, id.withPrefix("recipes/" + this.category.getFolderName() + "/"), this.resultNbt)); - } - - private void ensureValid(ResourceLocation id) { - if (this.ingredients.isEmpty() || this.ingredients.size() > 16) { - throw new IllegalStateException("Metalworking recipe " + id + " must have 1..16 ingredients"); - } - if (this.advancement.getCriteria().isEmpty()) { - throw new IllegalStateException("No way of obtaining recipe " + id); - } - } - - public static class Result extends CraftingRecipeBuilder.CraftingResult { - private final ResourceLocation id; - private final Item result; - private final int count; - private final String group; - private final List ingredients; - private final Advancement.Builder advancement; - private final ResourceLocation advancementId; - @Nullable - private final CompoundTag resultNbt; - - public Result(ResourceLocation id, Item result, int count, String group, CraftingBookCategory category, List ingredients, Advancement.Builder advancement, ResourceLocation advancementId, @Nullable CompoundTag resultNbt) { - super(category); - this.id = id; - this.result = result; - this.count = count; - this.group = group; - this.ingredients = ingredients; - this.advancement = advancement; - this.advancementId = advancementId; - this.resultNbt = resultNbt; - } - - public void serializeRecipeData(JsonObject json) { - super.serializeRecipeData(json); - if (!this.group.isEmpty()) { - json.addProperty("group", this.group); - } - JsonArray arr = new JsonArray(); - Iterator it = this.ingredients.iterator(); - while (it.hasNext()) { - arr.add(it.next()); - } - json.add("ingredients", arr); - JsonObject res = new JsonObject(); - res.addProperty("item", BuiltInRegistries.ITEM.getKey(this.result).toString()); - if (this.count > 1) { - res.addProperty("count", this.count); - } - if (this.resultNbt != null && !this.resultNbt.isEmpty()) { - res.addProperty("nbt", this.resultNbt.toString()); - } - json.add("result", res); - } - - public RecipeSerializer getType() { - return MenuRegistry.METALWORKING_SERIALIZER.get(); - } - - public ResourceLocation getId() { - return this.id; - } - - @Nullable - public JsonObject serializeAdvancement() { - return this.advancement.serializeToJson(); - } - - @Nullable - public ResourceLocation getAdvancementId() { - return this.advancementId; - } - } -} diff --git a/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java b/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java deleted file mode 100644 index 19b764191..000000000 --- a/src/main/java/leaf/cosmere/common/recipe/RecipeTypes.java +++ /dev/null @@ -1,11 +0,0 @@ -package leaf.cosmere.common.recipe; - -import leaf.cosmere.common.Cosmere; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.crafting.RecipeType; - -public class RecipeTypes -{ - public static final RecipeType METALWORKING = RecipeType.simple( - new ResourceLocation(Cosmere.MODID, "metalworking")); -} diff --git a/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java b/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java index 83493699f..14fead05b 100644 --- a/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java @@ -1,30 +1,6 @@ package leaf.cosmere.common.registry; -import leaf.cosmere.client.gui.MetalworkingTableMenu; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.recipe.MetalworkingRecipe; -import net.minecraft.core.BlockPos; -import net.minecraft.world.inventory.MenuType; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraftforge.common.extensions.IForgeMenuType; -import net.minecraftforge.registries.DeferredRegister; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; - public class MenuRegistry { - public static final DeferredRegister> MENUS = DeferredRegister.create(ForgeRegistries.MENU_TYPES, Cosmere.MODID); - - public static final DeferredRegister> RECIPE_SERIALIZERS = DeferredRegister.create(ForgeRegistries.RECIPE_SERIALIZERS, Cosmere.MODID); - - public static final RegistryObject> METALWORKING_TABLE_MENU = - MENUS.register("metalworking_table", - () -> IForgeMenuType.create((windowId, inv, buf) -> - new MetalworkingTableMenu(windowId, inv, BlockPos.of(buf.readLong())))); - - // Only shapeless 4x4 - public static final RegistryObject> METALWORKING_SERIALIZER = - RECIPE_SERIALIZERS.register("metalworking", MetalworkingRecipe.Serializer::new); - } From f1d83eaa5b0cd773d36e2cc00ec7b7b751934d1d Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sat, 8 Nov 2025 13:18:37 -0500 Subject: [PATCH 1046/1090] cleanup --- .../java/leaf/cosmere/common/registry/MenuRegistry.java | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 src/main/java/leaf/cosmere/common/registry/MenuRegistry.java diff --git a/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java b/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java deleted file mode 100644 index 14fead05b..000000000 --- a/src/main/java/leaf/cosmere/common/registry/MenuRegistry.java +++ /dev/null @@ -1,6 +0,0 @@ -package leaf.cosmere.common.registry; - -public class MenuRegistry -{ - -} From 8d8441fa5276a22b0455bee7b84518e2d4337f9b Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sat, 8 Nov 2025 15:40:23 -0500 Subject: [PATCH 1047/1090] updating textures. sorry leeislate, im tinting lerasium and its alloys with the pale yellow --- src/api/java/leaf/cosmere/api/Metals.java | 42 +++++++++--------- .../cosmere/textures/item/harmonium_ingot.png | Bin 350 -> 356 bytes .../textures/item/harmonium_nugget.png | Bin 195 -> 236 bytes .../textures/item/lerasatium_ingot.png | Bin 293 -> 312 bytes .../textures/item/lerasatium_nugget.png | Bin 168 -> 219 bytes .../cosmere/textures/item/lerasium_ingot.png | Bin 277 -> 294 bytes .../cosmere/textures/item/lerasium_nugget.png | Bin 145 -> 192 bytes 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 86399d6d8..54400044a 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -994,43 +994,43 @@ private static class MetalColor //Iron(0.560f,0.579f,0.580f) public static final Color IRON = Color.decode("#f2f2f2"); - public static final Color STEEL = Color.decode("#727273"); - public static final Color TIN = Color.decode("#79b7bc"); - public static final Color PEWTER = Color.decode("#a39b90"); + public static final Color STEEL = Color.decode("#737173"); + public static final Color TIN = Color.decode("#b0c9c3"); + public static final Color PEWTER = Color.decode("#7d7474"); //Aluminium(0.913f,0.921f,0.925f) - public static final Color ALUMINUM = Color.decode("#d9d9d9"); - public static final Color DURALUMIN = Color.decode("#a6a486"); + public static final Color ALUMINUM = Color.decode("#819393"); + public static final Color DURALUMIN = Color.decode("#596869"); //Chromium(0.550f,0.556f,0.554f) - public static final Color CHROMIUM = Color.decode("#595959"); - public static final Color NICROSIL = Color.decode("#59503e"); - public static final Color ZINC = Color.decode("#d7d9c7"); - public static final Color BRASS = Color.decode("#bc6330"); + public static final Color CHROMIUM = Color.decode("#676a6d"); + public static final Color NICROSIL = Color.decode("#9296b6"); + public static final Color ZINC = Color.decode("#b3b89a"); + public static final Color BRASS = Color.decode("#f1bc69"); //Copper(0.955f,0.637f,0.538f) - public static final Color COPPER = Color.decode("#fba634"); - public static final Color BRONZE = Color.decode("#8c5b30"); + public static final Color COPPER = Color.decode("#c15a36"); + public static final Color BRONZE = Color.decode("#8b6643"); //Gold(1.000f,0.766f,0.336f) public static final Color GOLD = Color.decode("#faf25e"); - public static final Color ELECTRUM = Color.decode("#d9b166"); - public static final Color CADMIUM = Color.decode("#F5926C"); - public static final Color BENDALLOY = Color.decode("#46473e"); + public static final Color ELECTRUM = Color.decode("#b99e6f"); + public static final Color CADMIUM = Color.decode("#a94934"); + public static final Color BENDALLOY = Color.decode("#6d4c22"); //new Color(0.860f, 0.870f, 0.880f); - public static final Color LERASIUM = Color.decode("#f2dea0"); - public static final Color ATIUM = Color.decode("#262626"); + public static final Color LERASIUM = Color.decode("#f8efc9"); + public static final Color ATIUM = Color.decode("#363434"); //godmetal/metal alloys - public static final Color MALATIUM = Color.decode("#bfbfbf"); + public static final Color MALATIUM = Color.decode("#b99e6f"); //god metal only alloys - public static final Color HARMONIUM = Color.decode("#88b9d9"); + public static final Color HARMONIUM = Color.decode("#9c9b9a"); // made up - public static final Color LERASATIUM = Color.decode("#8e9194"); + public static final Color LERASATIUM = Color.decode("#5c5d64"); //non-special - public static final Color NICKEL = Color.decode("#eeedcb"); - public static final Color LEAD = Color.decode("#8392c2"); + public static final Color NICKEL = Color.decode("#eeefc8"); + public static final Color LEAD = Color.decode("#312f50"); public static final Color SILVER = Color.decode("#d3e5eb"); } diff --git a/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png b/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png index f4d8409a6589292dbb0d70e054a22f9c0677056d..87d4b32b6e36ca222aa819cd7385dc865ea25764 100644 GIT binary patch delta 330 zcmV-Q0k!_#0^|aaBYy!INklo}k!HggILn#MWf%5?g*kKP`{%$i79wIH zBB25@k7<|J_jhR}dn$~0nY_?-EVhfU|34!{trDH9Yh8D{J%6v~4^e(eihekVLNX7} zczt_O7Rw~@0eO(w+St?|@%@wa_AQxya&(NrXlMk{9!s@CO|R`!8*7uX89i_@% delta 324 zcmV-K0lWU>0^S0UBYyw^b5ch_0Itp)=>Px$7)eAyR5*>zl0R$0Kp2OgKqwsqBL=$| zIJl(>JVpTQ-a?s}I7ans+F z%lkgh`;r{&JI*dmH@$AEo-fWXEoQ4gfsOhZ0KQ*lbU(5rxqku$hRqOw)#^>xvJxi? znP4_bzGvr(m3@F*5M0LJ47{oXb0Qb^WcAC^c8siEX)4nS}! zIQsdt1pu@83@N0ZWKL5sz~=jpaRFXm)=;-4=0r0mfw0bcgXQ~@N~x0j@f0|n3`w3J z0q756`!7W8PCZ&{HK;$U(D@5&%z7N~L!^tmc WPIk`v3945B000005AW;0qg;gB!8hvL_t(|oa~aX4uVh=hktitCa0S`fX+lvgAZb{ShScmI39op zu$e7dEEY1n0htXdyZ{WSmmM}p{5czq@s)GS_wC-hqo5}WdNKwWf#=JRH1(Sy*nv_a z_M2TX&!>z0{yw5JKyoP&>*Wej5@V93VBbJh7no0H#o4kQ1W8_iCTicM-yc%jYLyuJ zF5c!}umi;PaIF5JNp1~r8Nepy00030|1Ef0PXGV_21!IgR09BoBqsXJ7h8P*0000< KMNUMnLSTYH%UE&% delta 167 zcmaFEc$jg5N`057i(`mIZ*qbJt24uwvoHSMH(&hSUawLtW>!Lua%?gi5VY-h(euB1 z+PMUk42SzY_x>CB@&Lgpu2Ven`)d*set(-;A>Pr!Vf^7UhXDw@xmP>q;m2O~9W@6U z9;$#0xU^{3|5;U51-&X6$@ErM{`AqsfinVfvAFSwgXEXKVO8sJG70%11hp7u&q2^NUgMF=Cpz5z#zU-!R8CcDikW8r*A`ziL0ZMTE2@Dkcn$Vx=2><~9|C4-} j%K!iX21!IgR2BmOM9gNLhq&nY00000NkvXXu0mjf0vLU; delta 266 zcmV+l0rmd40;K|wB!BElL_t(Ijn$A(YQj(uhrfs*imQTnf*i#I*j>9WRJtnW91+Pv zQgCf`(e?m6Ll5v?D=2~?gg~-sp_{mR;r*#(TYsy0GxPms-oVAnYigLqVWr~fByjrM zP0-EtNUMaEZDKqW_;~+N=hE!cFn@l1H#YHfSf4f=_=d@F;C~avYYzL2L`YU|OAnx> zyW5bSSFkPP25OR06tC-8ZubCm+r9G!_PPpEvf)1s0On5%T3k6`ndW>KdHsK|Zm@az z0N_iMHTawVkO)a4qyrlpOecYNJHD#`irtYzr%xgzfCK4r3d*Dj{69JYatCHE+iQu% Q00000NkvXXt^-0~f>K8vzrC4Z<)5SyI-@vl<2L-eqbQ`3oZR(>Tz>-uftjLTHbL4*^&8 tf=`?Q00960L>8cb00006NklJ{uN6&9(U;O1y7Ecv<9NHcF`E&U62NqfePwmZ0 zeRi0LFG)Z6^L%{mkxaobW(gp;G)YS0h-;`M2rv7ZcQBJ7tlpJ%*`Mb^0&So7*H)a~ qkn>k&O;#Zr&!+i>nR2WG3=Er^HC3j3dT+)61fH&btS;-E5}E)DusEpz diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_ingot.png b/src/main/resources/assets/cosmere/textures/item/lerasium_ingot.png index aadc0cd11415f92b41da0944a37aab2ba4f108f1..015d47334c3febbc9c5d970a62ed37e90bfa6a7c 100644 GIT binary patch delta 267 zcmV+m0rdWr0;U3xB!AmUL_t(|oaB{DOC(mfn9Gvyn4*vxNu~?!YbPOKaDRK;Nf3AbfWq2x4}nLx zS{AIf8^|P*d48ZDzOBZi2FfcGMRJBaOCXL?(>(|a3XHyIch7#N;Eg2^KQ&L{~CMi_#wX>b7m6Mb6hnSjw600000NkvXXu0mjfm}G1? diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_nugget.png index 9a60b4ace70098e0547fb2b3d88577aedc86b2f5..423f5f60025af07a60ee90ad3cf2b27a888d18c9 100644 GIT binary patch delta 164 zcmV;V09*f&0l)!}B!6{DL_t(|oa~al34kyVg`u zHC#YMu&|9-Smu-j8_CyPad#iDcpQds7-9uq3#z7&*DUjzscszVIgJ8@zK0~vByavEYm0q5K*6Zx9lakqrX_g84~ldG009606NT@~0384T21!IgR09B9xfU`h SdHTEn0000?0g(ZaBy9n6Qb$4nuFf3k0000>Nkl Date: Sat, 8 Nov 2025 15:48:27 -0500 Subject: [PATCH 1048/1090] Revert "updating textures. sorry leeislate, im tinting lerasium and its alloys with the pale yellow" This reverts commit 8d8441fa5276a22b0455bee7b84518e2d4337f9b. --- src/api/java/leaf/cosmere/api/Metals.java | 42 +++++++++--------- .../cosmere/textures/item/harmonium_ingot.png | Bin 356 -> 350 bytes .../textures/item/harmonium_nugget.png | Bin 236 -> 195 bytes .../textures/item/lerasatium_ingot.png | Bin 312 -> 293 bytes .../textures/item/lerasatium_nugget.png | Bin 219 -> 168 bytes .../cosmere/textures/item/lerasium_ingot.png | Bin 294 -> 277 bytes .../cosmere/textures/item/lerasium_nugget.png | Bin 192 -> 145 bytes 7 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 54400044a..86399d6d8 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -994,43 +994,43 @@ private static class MetalColor //Iron(0.560f,0.579f,0.580f) public static final Color IRON = Color.decode("#f2f2f2"); - public static final Color STEEL = Color.decode("#737173"); - public static final Color TIN = Color.decode("#b0c9c3"); - public static final Color PEWTER = Color.decode("#7d7474"); + public static final Color STEEL = Color.decode("#727273"); + public static final Color TIN = Color.decode("#79b7bc"); + public static final Color PEWTER = Color.decode("#a39b90"); //Aluminium(0.913f,0.921f,0.925f) - public static final Color ALUMINUM = Color.decode("#819393"); - public static final Color DURALUMIN = Color.decode("#596869"); + public static final Color ALUMINUM = Color.decode("#d9d9d9"); + public static final Color DURALUMIN = Color.decode("#a6a486"); //Chromium(0.550f,0.556f,0.554f) - public static final Color CHROMIUM = Color.decode("#676a6d"); - public static final Color NICROSIL = Color.decode("#9296b6"); - public static final Color ZINC = Color.decode("#b3b89a"); - public static final Color BRASS = Color.decode("#f1bc69"); + public static final Color CHROMIUM = Color.decode("#595959"); + public static final Color NICROSIL = Color.decode("#59503e"); + public static final Color ZINC = Color.decode("#d7d9c7"); + public static final Color BRASS = Color.decode("#bc6330"); //Copper(0.955f,0.637f,0.538f) - public static final Color COPPER = Color.decode("#c15a36"); - public static final Color BRONZE = Color.decode("#8b6643"); + public static final Color COPPER = Color.decode("#fba634"); + public static final Color BRONZE = Color.decode("#8c5b30"); //Gold(1.000f,0.766f,0.336f) public static final Color GOLD = Color.decode("#faf25e"); - public static final Color ELECTRUM = Color.decode("#b99e6f"); - public static final Color CADMIUM = Color.decode("#a94934"); - public static final Color BENDALLOY = Color.decode("#6d4c22"); + public static final Color ELECTRUM = Color.decode("#d9b166"); + public static final Color CADMIUM = Color.decode("#F5926C"); + public static final Color BENDALLOY = Color.decode("#46473e"); //new Color(0.860f, 0.870f, 0.880f); - public static final Color LERASIUM = Color.decode("#f8efc9"); - public static final Color ATIUM = Color.decode("#363434"); + public static final Color LERASIUM = Color.decode("#f2dea0"); + public static final Color ATIUM = Color.decode("#262626"); //godmetal/metal alloys - public static final Color MALATIUM = Color.decode("#b99e6f"); + public static final Color MALATIUM = Color.decode("#bfbfbf"); //god metal only alloys - public static final Color HARMONIUM = Color.decode("#9c9b9a"); + public static final Color HARMONIUM = Color.decode("#88b9d9"); // made up - public static final Color LERASATIUM = Color.decode("#5c5d64"); + public static final Color LERASATIUM = Color.decode("#8e9194"); //non-special - public static final Color NICKEL = Color.decode("#eeefc8"); - public static final Color LEAD = Color.decode("#312f50"); + public static final Color NICKEL = Color.decode("#eeedcb"); + public static final Color LEAD = Color.decode("#8392c2"); public static final Color SILVER = Color.decode("#d3e5eb"); } diff --git a/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png b/src/main/resources/assets/cosmere/textures/item/harmonium_ingot.png index 87d4b32b6e36ca222aa819cd7385dc865ea25764..f4d8409a6589292dbb0d70e054a22f9c0677056d 100644 GIT binary patch delta 324 zcmV-K0lWU>0^S0UBYyw^b5ch_0Itp)=>Px$7)eAyR5*>zl0R$0Kp2OgKqwsqBL=$| zIJl(>JVpTQ-a?s}I7ans+F z%lkgh`;r{&JI*dmH@$AEo-fWXEoQ4gfsOhZ0KQ*lbU(5rxqku$hRqOw)#^>xvJxi? znP4_bzGvr(m3@F*5M0LJ47{oXb0Qb^WcAC^c8siEX)4nS}! zIQsdt1pu@83@N0ZWKL5sz~=jpaRFXm)=;-4=0r0mfw0bcgXQ~@N~x0j@f0|n3`w3J z0q756`!7W8PCZ&{HK;$U(D@5&%z7N~L!^tmc WPIk`v3945B0000o}k!HggILn#MWf%5?g*kKP`{%$i79wIH zBB25@k7<|J_jhR}dn$~0nY_?-EVhfU|34!{trDH9Yh8D{J%6v~4^e(eihekVLNX7} zczt_O7Rw~@0eO(w+St?|@%@wa_AQxya&(NrXlMk{9!s@CO|R`!8*7uX89i_@% diff --git a/src/main/resources/assets/cosmere/textures/item/harmonium_nugget.png b/src/main/resources/assets/cosmere/textures/item/harmonium_nugget.png index 35fdc8dc922376ec269583fee77ef9ac44067e47..1854bdf28c041915a6d2eca933e5750958e08ab5 100644 GIT binary patch delta 167 zcmaFEc$jg5N`057i(`mIZ*qbJt24uwvoHSMH(&hSUawLtW>!Lua%?gi5VY-h(euB1 z+PMUk42SzY_x>CB@&Lgpu2Ven`)d*set(-;A>Pr!Vf^7UhXDw@xmP>q;m2O~9W@6U z9;$#0xU^{3|5;U51-05AW;0qg;gB!8hvL_t(|oa~aX4uVh=hktitCa0S`fX+lvgAZb{ShScmI39op zu$e7dEEY1n0htXdyZ{WSmmM}p{5czq@s)GS_wC-hqo5}WdNKwWf#=JRH1(Sy*nv_a z_M2TX&!>z0{yw5JKyoP&>*Wej5@V93VBbJh7no0H#o4kQ1W8_iCTicM-yc%jYLyuJ zF5c!}umi;PaIF5JNp1~r8Nepy00030|1Ef0PXGV_21!IgR09BoBqsXJ7h8P*0000< KMNUMnLSTYH%UE&% diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_ingot.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_ingot.png index 289ebf23f89d5b22cc9e6f00198e1c4046b98dc2..40694c2926a8a003cf244c9749562ff620fc3490 100644 GIT binary patch delta 266 zcmV+l0rmd40;K|wB!BElL_t(Ijn$A(YQj(uhrfs*imQTnf*i#I*j>9WRJtnW91+Pv zQgCf`(e?m6Ll5v?D=2~?gg~-sp_{mR;r*#(TYsy0GxPms-oVAnYigLqVWr~fByjrM zP0-EtNUMaEZDKqW_;~+N=hE!cFn@l1H#YHfSf4f=_=d@F;C~avYYzL2L`YU|OAnx> zyW5bSSFkPP25OR06tC-8ZubCm+r9G!_PPpEvf)1s0On5%T3k6`ndW>KdHsK|Zm@az z0N_iMHTawVkO)a4qyrlpOecYNJHD#`irtYzr%xgzfCK4r3d*Dj{69JYatCHE+iQu% Q00000NkvXXt^-0~f&X6$@ErM{`AqsfinVfvAFSwgXEXKVO8sJG70%11hp7u&q2^NUgMF=Cpz5z#zU-!R8CcDikW8r*A`ziL0ZMTE2@Dkcn$Vx=2><~9|C4-} j%K!iX21!IgR2BmOM9gNLhq&nY00000NkvXXu0mjf0vLU; diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_nugget.png index ea0a105299ebce197ed645c221fc1e995ef66bb2..0d0ae88f656d76999ec9ba7ad0f7fc1d56cc2c42 100644 GIT binary patch delta 140 zcmcc3xPozlN`1bki(`mIZ*qbJD>J{uN6&9(U;O1y7Ecv<9NHcF`E&U62NqfePwmZ0 zeRi0LFG)Z6^L%{mkxaobW(gp;G)YS0h-;`M2rv7ZcQBJ7tlpJ%*`Mb^0&So7*H)a~ qkn>k&O;#Zr&!+i>nR2WG3=Er^HC3j3dT+)61fH&btS;-E5}E)DusEpz delta 191 zcmV;w06_n!0owtPB!7@eL_t(|oa~Z44n>K8vzrC4Z<)5SyI-@vl<2L-eqbQ`3oZR(>Tz>-uftjLTHbL4*^&8 tf=`?Q00960L>8cb00006Nkld48ZDzOBZi2FfcGMRJBaOCXL?(>(|a3XHyIch7#N;Eg2^KQ&L{~CMi_#wX>b7m6Mb6hnSjw600000NkvXXu0mjfm}G1? delta 267 zcmV+m0rdWr0;U3xB!AmUL_t(|oaB{DOC(mfn9Gvyn4*vxNu~?!YbPOKaDRK;Nf3AbfWq2x4}nLx zS{AIf8^|P*?0g(ZaBy9n6Qb$4nuFf3k0000>Nkl`u zHC#YMu&|9-Smu-j8_CyPad#iDcpQds7-9uq3#z7&*DUjzscszVIgJ8@zK0~vByavEYm0q5K*6Zx9lakqrX_g84~ldG009606NT@~0384T21!IgR09B9xfU`h SdHTEn0000 Date: Sat, 8 Nov 2025 20:07:24 -0500 Subject: [PATCH 1049/1090] new method for nuggets --- .../java/leaf/cosmere/api/CosmereTags.java | 6 ++ src/api/java/leaf/cosmere/api/Metals.java | 43 ++++++++------ .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 25 +++++++- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 23 +++++++- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 21 ++++++- .../item/god_metal_aluminum_alloy_nugget.json | 6 ++ .../god_metal_bendalloy_alloy_nugget.json | 6 ++ ...json => god_metal_brass_alloy_nugget.json} | 2 +- .../item/god_metal_bronze_alloy_nugget.json | 6 ++ .../item/god_metal_cadmium_alloy_nugget.json | 6 ++ .../item/god_metal_chromium_alloy_nugget.json | 6 ++ .../item/god_metal_copper_alloy_nugget.json | 6 ++ .../god_metal_duralumin_alloy_nugget.json | 6 ++ .../item/god_metal_electrum_alloy_nugget.json | 6 ++ .../item/god_metal_gold_alloy_nugget.json | 6 ++ .../item/god_metal_iron_alloy_nugget.json | 6 ++ .../item/god_metal_lead_alloy_nugget.json | 6 ++ .../item/god_metal_malatium_alloy_nugget.json | 6 ++ .../item/god_metal_nickel_alloy_nugget.json | 6 ++ .../item/god_metal_nicrosil_alloy_nugget.json | 6 ++ .../item/god_metal_pewter_alloy_nugget.json | 6 ++ .../item/god_metal_silver_alloy_nugget.json | 6 ++ .../item/god_metal_steel_alloy_nugget.json | 6 ++ .../item/god_metal_tin_alloy_nugget.json | 6 ++ .../item/god_metal_zinc_alloy_nugget.json | 6 ++ .../data/forge/tags/items/nuggets.json | 21 ++++++- .../items/nuggets/god_metal_alloy_nugget.json | 5 -- .../nuggets/god_metal_aluminum_alloy.json | 5 ++ .../nuggets/god_metal_bendalloy_alloy.json | 5 ++ .../items/nuggets/god_metal_brass_alloy.json | 5 ++ .../items/nuggets/god_metal_bronze_alloy.json | 5 ++ .../nuggets/god_metal_cadmium_alloy.json | 5 ++ .../nuggets/god_metal_chromium_alloy.json | 5 ++ .../items/nuggets/god_metal_copper_alloy.json | 5 ++ .../nuggets/god_metal_duralumin_alloy.json | 5 ++ .../nuggets/god_metal_electrum_alloy.json | 5 ++ .../items/nuggets/god_metal_gold_alloy.json | 5 ++ .../items/nuggets/god_metal_iron_alloy.json | 5 ++ .../items/nuggets/god_metal_lead_alloy.json | 5 ++ .../nuggets/god_metal_malatium_alloy.json | 5 ++ .../items/nuggets/god_metal_nickel_alloy.json | 5 ++ .../nuggets/god_metal_nicrosil_alloy.json | 5 ++ .../items/nuggets/god_metal_pewter_alloy.json | 5 ++ .../items/nuggets/god_metal_silver_alloy.json | 5 ++ .../items/nuggets/god_metal_steel_alloy.json | 5 ++ .../items/nuggets/god_metal_tin_alloy.json | 5 ++ .../items/nuggets/god_metal_zinc_alloy.json | 5 ++ .../leaf/cosmere/items/ItemModelsGen.java | 17 +++++- .../leaf/cosmere/tag/CosmereTagProvider.java | 25 ++++---- .../leaf/cosmere/common/items/AlloyItem.java | 30 +++++----- .../common/items/GodMetalAlloyNuggetItem.java | 45 ++++++-------- .../common/registry/CreativeTabsRegistry.java | 59 +++++++------------ .../common/registry/ItemsRegistry.java | 15 +++-- 54 files changed, 422 insertions(+), 133 deletions(-) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json rename src/datagen/generated/cosmere/assets/cosmere/models/item/{god_metal_alloy_nugget.json => god_metal_brass_alloy_nugget.json} (60%) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index f6cd121cd..959144f36 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -74,6 +74,12 @@ public static class Items Function.identity(), type -> forgeItemTag("nuggets/" + type.getName()))); + public static final Map> GOD_METAL_ALLOY_NUGGET_TAGS = + Arrays.stream(EnumUtils.METAL_TYPES) + .collect(Collectors.toMap( + Function.identity(), + type -> forgeItemTag("nuggets/god_metal_" + type.getName() + "_alloy"))); + public static final Map> METAL_INGOT_TAGS = Arrays.stream(EnumUtils.METAL_TYPES) .collect(Collectors.toMap( diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index 86399d6d8..b49b1f976 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -348,6 +348,11 @@ public TagKey getMetalNuggetTag() return CosmereTags.Items.METAL_NUGGET_TAGS.get(this); } + public TagKey getGodMetalAlloyNuggetTag() + { + return CosmereTags.Items.GOD_METAL_ALLOY_NUGGET_TAGS.get(this); + } + public Color getColor() { @@ -994,43 +999,43 @@ private static class MetalColor //Iron(0.560f,0.579f,0.580f) public static final Color IRON = Color.decode("#f2f2f2"); - public static final Color STEEL = Color.decode("#727273"); - public static final Color TIN = Color.decode("#79b7bc"); - public static final Color PEWTER = Color.decode("#a39b90"); + public static final Color STEEL = Color.decode("#737173"); + public static final Color TIN = Color.decode("#b0c9c3"); + public static final Color PEWTER = Color.decode("#a9a1a1"); //Aluminium(0.913f,0.921f,0.925f) - public static final Color ALUMINUM = Color.decode("#d9d9d9"); - public static final Color DURALUMIN = Color.decode("#a6a486"); + public static final Color ALUMINUM = Color.decode("#819393"); + public static final Color DURALUMIN = Color.decode("#7a8f90"); //Chromium(0.550f,0.556f,0.554f) public static final Color CHROMIUM = Color.decode("#595959"); - public static final Color NICROSIL = Color.decode("#59503e"); - public static final Color ZINC = Color.decode("#d7d9c7"); - public static final Color BRASS = Color.decode("#bc6330"); + public static final Color NICROSIL = Color.decode("#9296b6"); + public static final Color ZINC = Color.decode("#d9debc"); + public static final Color BRASS = Color.decode("#fed679"); //Copper(0.955f,0.637f,0.538f) - public static final Color COPPER = Color.decode("#fba634"); + public static final Color COPPER = Color.decode("#c15a36"); public static final Color BRONZE = Color.decode("#8c5b30"); //Gold(1.000f,0.766f,0.336f) public static final Color GOLD = Color.decode("#faf25e"); - public static final Color ELECTRUM = Color.decode("#d9b166"); - public static final Color CADMIUM = Color.decode("#F5926C"); - public static final Color BENDALLOY = Color.decode("#46473e"); + public static final Color ELECTRUM = Color.decode("#b29988"); + public static final Color CADMIUM = Color.decode("#a94934"); + public static final Color BENDALLOY = Color.decode("#6d4c22"); //new Color(0.860f, 0.870f, 0.880f); - public static final Color LERASIUM = Color.decode("#f2dea0"); - public static final Color ATIUM = Color.decode("#262626"); + public static final Color LERASIUM = Color.decode("#e0e3d6"); + public static final Color ATIUM = Color.decode("#363434"); //godmetal/metal alloys - public static final Color MALATIUM = Color.decode("#bfbfbf"); + public static final Color MALATIUM = Color.decode("#e0e3d6"); //god metal only alloys - public static final Color HARMONIUM = Color.decode("#88b9d9"); + public static final Color HARMONIUM = Color.decode("#9895aa"); // made up - public static final Color LERASATIUM = Color.decode("#8e9194"); + public static final Color LERASATIUM = Color.decode("#73788a"); //non-special - public static final Color NICKEL = Color.decode("#eeedcb"); - public static final Color LEAD = Color.decode("#8392c2"); + public static final Color NICKEL = Color.decode("#c4c091"); + public static final Color LEAD = Color.decode("#312f50"); public static final Color SILVER = Color.decode("#d3e5eb"); } diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index be08a7f78..f027d1c7e 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-04T20:27:45.3615464 Tags: cosmere +// 1.20.1 2025-11-08T18:30:44.1003612 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,7 +63,7 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -8cffcc7211d4653163004dd65e2fe7263b1d9d2b data/forge/tags/items/nuggets.json +4556c3cb21dc47eff9522fe361b18fce3000257a data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json @@ -74,7 +74,26 @@ e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.js 56b70b9f34d9048ca4097c2e77debc2e7ad28c6b data/forge/tags/items/nuggets/copper.json 88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json -857125dd8fd7e0d832180d2e39e2f711f9ecd7e5 data/forge/tags/items/nuggets/god_metal_alloy_nugget.json +3e91e1a0971e72741cbc1d1a4efa0de079c301c7 data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json +a5dda5ea07393203362b33f01345a028dda54528 data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json +1b311b62b28c96ddb0545726e1d21150ac74d3a0 data/forge/tags/items/nuggets/god_metal_brass_alloy.json +2238b35edb3fa19ff5566c33560ae3a611b00a2d data/forge/tags/items/nuggets/god_metal_bronze_alloy.json +6c0c5c11cbbda16573942dc7ca9567d4e797d232 data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json +bb7eff34c7722c55d5fce15298f1b505f8c7cbc0 data/forge/tags/items/nuggets/god_metal_chromium_alloy.json +5607b59904254aaf00272e8fef6d5c58b050dd72 data/forge/tags/items/nuggets/god_metal_copper_alloy.json +4a572880c6d79776e9c2033c9c18397ac384e389 data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json +46ab9e4742b2683443daabffe7a5dcf0e7431a93 data/forge/tags/items/nuggets/god_metal_electrum_alloy.json +1b7a4ec826ebd9e8b8d42a3f49e41671b30fd723 data/forge/tags/items/nuggets/god_metal_gold_alloy.json +9c183b86f1efabbe26450fef735073c6b2db078e data/forge/tags/items/nuggets/god_metal_iron_alloy.json +bbddaaad971d1b9c47c74df8c7717c3859628bb3 data/forge/tags/items/nuggets/god_metal_lead_alloy.json +a6a8dcda90c7e5bbfc93eaa2605911d827cce7d3 data/forge/tags/items/nuggets/god_metal_malatium_alloy.json +2a147a0f1328b3d038ed20f430e1a40ee094d6b4 data/forge/tags/items/nuggets/god_metal_nickel_alloy.json +5ea2be84408de121dd8a248196b2147a04c4a965 data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json +8be36f2c727c32ad454ecf93afd4dc4a10c13dc9 data/forge/tags/items/nuggets/god_metal_pewter_alloy.json +8974924c36fb8db8dc7cb413d55e26f756f0beff data/forge/tags/items/nuggets/god_metal_silver_alloy.json +50daa75e8283e66133960c294cfb072b9c0add46 data/forge/tags/items/nuggets/god_metal_steel_alloy.json +04330ff11704f75404a01f42400dc43270488ef6 data/forge/tags/items/nuggets/god_metal_tin_alloy.json +eea890928245d7d4dc84a281cf5abbdf4659f5e8 data/forge/tags/items/nuggets/god_metal_zinc_alloy.json ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json 6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json 28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index eec78e7c8..3516d4def 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-07T23:46:55.9845752 Item Models: cosmere +// 1.20.1 2025-11-08T18:30:44.1053614 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json @@ -23,7 +23,26 @@ d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_bl 7f1c2aba76d0cfe4c1b46a095ab28fcb27eb2076 assets/cosmere/models/item/electrum_blend.json ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json -8b69f9e5c9ea89a6fbd04f62f05a7cf3b0c09e88 assets/cosmere/models/item/god_metal_alloy_nugget.json +8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json +6b595f03ec49392149f6e01068d5cf2a7cc0407b assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json +0b188ff28a3af4f8513fa29f7667ea531fc5d94e assets/cosmere/models/item/god_metal_brass_alloy_nugget.json +e00fd350bf851551ba15797b5d493e43c0aa14b7 assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json +b518db4e4e1664b81b3f5b6efc827a3c371fcfed assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json +05986a77ad11ceb4a9af904b17d57e81a051d438 assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json +fac9d3382c68e92ad6167f2b64c23141cddd9573 assets/cosmere/models/item/god_metal_copper_alloy_nugget.json +90493993464f98a65bf0399cdc4b385662fc2f4c assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json +85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json +e8f2c9d07112191f81aacbb40fcf61b0b3ca583e assets/cosmere/models/item/god_metal_gold_alloy_nugget.json +5a2a3137b0e718a50b2c6c1515b71c9d9233a469 assets/cosmere/models/item/god_metal_iron_alloy_nugget.json +c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/god_metal_lead_alloy_nugget.json +f57901c7644ff165eb5c89a41d9f0c69ec03a6c4 assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json +46c31e028d09311d398f53335c563035e96fc2a0 assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json +5995927925782312bc72abe0d0abc23d4a498334 assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json +0c05924f48e0801c5b8cf80e659cf2eedccae883 assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json +07118efcc0d8c84ef3f86877e37660d5cec23e5e assets/cosmere/models/item/god_metal_silver_alloy_nugget.json +799cc8cc78ae34890ff7cb0addd4e2878b6cb803 assets/cosmere/models/item/god_metal_steel_alloy_nugget.json +99a3852f8768de2e239340cf21a0aed96410caf6 assets/cosmere/models/item/god_metal_tin_alloy_nugget.json +9620f2acfd4f8e0f8cc1058b14c3d3b0e70f61a4 assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index bf096d79f..a3e2883b5 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-07T23:46:55.9880739 Languages: en_us -df482592b1e659e8393f246522ecfd3a16c2f4a0 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-08T18:30:44.1068612 Languages: en_us +b2844ef1fd388b5ca091f7b7457fab66d112da72 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index a92d41f52..83b25f155 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -75,7 +75,26 @@ "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_ingot": "Electrum Ingot", "item.cosmere.electrum_nugget": "Electrum Nugget", - "item.cosmere.god_metal_alloy_nugget": "God Metal Alloy Nugget", + "item.cosmere.god_metal_aluminum_alloy_nugget": "God Metal Aluminum Alloy Nugget", + "item.cosmere.god_metal_bendalloy_alloy_nugget": "God Metal Bendalloy Alloy Nugget", + "item.cosmere.god_metal_brass_alloy_nugget": "God Metal Brass Alloy Nugget", + "item.cosmere.god_metal_bronze_alloy_nugget": "God Metal Bronze Alloy Nugget", + "item.cosmere.god_metal_cadmium_alloy_nugget": "God Metal Cadmium Alloy Nugget", + "item.cosmere.god_metal_chromium_alloy_nugget": "God Metal Chromium Alloy Nugget", + "item.cosmere.god_metal_copper_alloy_nugget": "God Metal Copper Alloy Nugget", + "item.cosmere.god_metal_duralumin_alloy_nugget": "God Metal Duralumin Alloy Nugget", + "item.cosmere.god_metal_electrum_alloy_nugget": "God Metal Electrum Alloy Nugget", + "item.cosmere.god_metal_gold_alloy_nugget": "God Metal Gold Alloy Nugget", + "item.cosmere.god_metal_iron_alloy_nugget": "God Metal Iron Alloy Nugget", + "item.cosmere.god_metal_lead_alloy_nugget": "God Metal Lead Alloy Nugget", + "item.cosmere.god_metal_malatium_alloy_nugget": "God Metal Malatium Alloy Nugget", + "item.cosmere.god_metal_nickel_alloy_nugget": "God Metal Nickel Alloy Nugget", + "item.cosmere.god_metal_nicrosil_alloy_nugget": "God Metal Nicrosil Alloy Nugget", + "item.cosmere.god_metal_pewter_alloy_nugget": "God Metal Pewter Alloy Nugget", + "item.cosmere.god_metal_silver_alloy_nugget": "God Metal Silver Alloy Nugget", + "item.cosmere.god_metal_steel_alloy_nugget": "God Metal Steel Alloy Nugget", + "item.cosmere.god_metal_tin_alloy_nugget": "God Metal Tin Alloy Nugget", + "item.cosmere.god_metal_zinc_alloy_nugget": "God Metal Zinc Alloy Nugget", "item.cosmere.gold_block": "Gold Block", "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_nugget": "Gold Nugget", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json new file mode 100644 index 000000000..99984c4f8 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/aluminum_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json new file mode 100644 index 000000000..8bae6584c --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/bendalloy_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json similarity index 60% rename from src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json rename to src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json index e2f75ac57..3fdd8d861 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/metal_nugget" + "layer0": "cosmere:item/brass_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json new file mode 100644 index 000000000..10a7f6e09 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/bronze_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json new file mode 100644 index 000000000..067ee8d9c --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/cadmium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json new file mode 100644 index 000000000..de8944369 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/chromium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json new file mode 100644 index 000000000..5d886b3ff --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/copper_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json new file mode 100644 index 000000000..c48149ab9 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/duralumin_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json new file mode 100644 index 000000000..df011b53e --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/electrum_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json new file mode 100644 index 000000000..3da43c93d --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/gold_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json new file mode 100644 index 000000000..3873a52ac --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "minecraft:item/iron_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json new file mode 100644 index 000000000..4e0f8b630 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lead_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json new file mode 100644 index 000000000..b492020f4 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/malatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json new file mode 100644 index 000000000..254548e74 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/nickel_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json new file mode 100644 index 000000000..45254f4d7 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/nicrosil_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json new file mode 100644 index 000000000..883097f64 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/pewter_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json new file mode 100644 index 000000000..8e2adf519 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/silver_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json new file mode 100644 index 000000000..532425a1e --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/steel_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json new file mode 100644 index 000000000..a0059449f --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/tin_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json new file mode 100644 index 000000000..6543d5982 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/zinc_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index deeb76f65..edf1327ee 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -1,29 +1,48 @@ { "values": [ "#forge:nuggets/iron", + "#forge:nuggets/god_metal_iron_alloy", "#forge:nuggets/steel", + "#forge:nuggets/god_metal_steel_alloy", "#forge:nuggets/tin", + "#forge:nuggets/god_metal_tin_alloy", "#forge:nuggets/pewter", + "#forge:nuggets/god_metal_pewter_alloy", "#forge:nuggets/zinc", + "#forge:nuggets/god_metal_zinc_alloy", "#forge:nuggets/brass", + "#forge:nuggets/god_metal_brass_alloy", "#forge:nuggets/copper", + "#forge:nuggets/god_metal_copper_alloy", "#forge:nuggets/bronze", + "#forge:nuggets/god_metal_bronze_alloy", "#forge:nuggets/aluminum", + "#forge:nuggets/god_metal_aluminum_alloy", "#forge:nuggets/duralumin", + "#forge:nuggets/god_metal_duralumin_alloy", "#forge:nuggets/chromium", + "#forge:nuggets/god_metal_chromium_alloy", "#forge:nuggets/nicrosil", + "#forge:nuggets/god_metal_nicrosil_alloy", "#forge:nuggets/cadmium", + "#forge:nuggets/god_metal_cadmium_alloy", "#forge:nuggets/bendalloy", + "#forge:nuggets/god_metal_bendalloy_alloy", "#forge:nuggets/gold", + "#forge:nuggets/god_metal_gold_alloy", "#forge:nuggets/electrum", + "#forge:nuggets/god_metal_electrum_alloy", "#forge:nuggets/atium", "#forge:nuggets/lerasium", "#forge:nuggets/harmonium", "#forge:nuggets/malatium", + "#forge:nuggets/god_metal_malatium_alloy", "#forge:nuggets/lerasatium", "#forge:nuggets/nickel", + "#forge:nuggets/god_metal_nickel_alloy", "#forge:nuggets/lead", + "#forge:nuggets/god_metal_lead_alloy", "#forge:nuggets/silver", - "#forge:nuggets/god_metal_alloy_nugget" + "#forge:nuggets/god_metal_silver_alloy" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json deleted file mode 100644 index f4a080dc5..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_alloy_nugget.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json new file mode 100644 index 000000000..43544a821 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_aluminum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json new file mode 100644 index 000000000..32ef46df4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_bendalloy_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json new file mode 100644 index 000000000..05aec140a --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_brass_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json new file mode 100644 index 000000000..1d7d50507 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_bronze_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json new file mode 100644 index 000000000..2ec38fb44 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_cadmium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json new file mode 100644 index 000000000..eb34aff4e --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_chromium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json new file mode 100644 index 000000000..70cf299dc --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_copper_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json new file mode 100644 index 000000000..0e328f691 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_duralumin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json new file mode 100644 index 000000000..535ad1de8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_electrum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json new file mode 100644 index 000000000..0098b0a8d --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_gold_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json new file mode 100644 index 000000000..72e2bbde1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_iron_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json new file mode 100644 index 000000000..041827b53 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_lead_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json new file mode 100644 index 000000000..02a93f378 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_malatium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json new file mode 100644 index 000000000..e18226468 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_nickel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json new file mode 100644 index 000000000..ba9785765 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_nicrosil_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json new file mode 100644 index 000000000..d7ce6872c --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_pewter_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json new file mode 100644 index 000000000..4a93bc3ea --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_silver_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json new file mode 100644 index 000000000..42eae9443 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_steel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json new file mode 100644 index 000000000..de3273a15 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_tin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json new file mode 100644 index 000000000..8238d5a34 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:god_metal_zinc_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index b3b9c2d3f..fa6448763 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -13,6 +13,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; +import net.minecraft.world.item.Items; import net.minecraftforge.client.model.generators.ItemModelBuilder; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.client.model.generators.ModelFile; @@ -41,9 +42,14 @@ protected void registerModels() { continue; } - else if (item instanceof GodMetalAlloyNuggetItem) + else if (item instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem && !godMetalAlloyNuggetItem.getMetalType().isGodMetal()) { - simpleItem(path, "metal_nugget"); + if(!godMetalAlloyNuggetItem.getMetalType().hasMaterialItem()) + { + gameItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); + continue; + } + simpleItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); continue; } ////otherwise set specific textures based on these item types @@ -81,4 +87,11 @@ public ItemModelBuilder simpleItem(String path, String texturePath) .parent(new ModelFile.UncheckedModelFile("item/generated")) .texture("layer0", modLoc("item/" + texturePath)); } + + public ItemModelBuilder gameItem(String path, String texturePath) + { + return this.getBuilder(path) + .parent(new ModelFile.UncheckedModelFile("item/generated")) + .texture("layer0", mcLoc("item/" + texturePath)); + } } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 8e971551e..aab13d12f 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -111,6 +111,20 @@ private void addItems() // tell our nuggets what their tags are. addToTag(metalNuggetTag, nuggetItem); } + + // Add the metal alloy nugget to the nugget tags + if(!metalType.isGodMetal()) + { + final TagKey godMetalAlloyNuggetTag = metalType.getGodMetalAlloyNuggetTag(); + getItemBuilder(Tags.Items.NUGGETS).add(godMetalAlloyNuggetTag); + + ItemRegistryObject alloyNugRegObj = ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(metalType); + if (alloyNugRegObj != null) + { + Item nuggetItem = alloyNugRegObj.asItem(); + addToTag(godMetalAlloyNuggetTag, nuggetItem); + } + } } if (metalType.hasOre()) @@ -127,17 +141,6 @@ private void addItems() addToTag(metalBlendTag, item); } } - - // Add the metal alloy nugget to the nugget tags - final TagKey nuggetTag = CosmereTags.Items.forgeItemTag("nuggets/god_metal_alloy_nugget"); - getItemBuilder(Tags.Items.NUGGETS).add(nuggetTag); - - final ItemRegistryObject nugRegObj = ItemsRegistry.GOD_METAL_ALLOY_NUGGET; - if (nugRegObj != null) - { - Item nuggetItem = nugRegObj.asItem(); - addToTag(nuggetTag, nuggetItem); - } } private void addBlocks() diff --git a/src/main/java/leaf/cosmere/common/items/AlloyItem.java b/src/main/java/leaf/cosmere/common/items/AlloyItem.java index 8dc2d7ca9..a34d80834 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyItem.java @@ -2,7 +2,7 @@ import leaf.cosmere.api.IHasAlloy; import leaf.cosmere.api.IHasMetalType; -import leaf.cosmere.api.Metals; +import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.common.properties.PropTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; @@ -15,11 +15,11 @@ import java.util.ArrayList; import java.util.HashSet; -public class AlloyItem extends BaseItem implements IHasAlloy +public class AlloyItem extends MetalItem implements IHasAlloy { - public AlloyItem() + public AlloyItem(MetalType metalType) { - super(); + super(metalType); } /** @@ -30,31 +30,31 @@ public InteractionResult interactLivingEntity(ItemStack stack, Player playerIn, return InteractionResult.PASS; } - public HashSet readMetalAlloyNbtData(ItemStack itemStack) + public HashSet readMetalAlloyNbtData(ItemStack itemStack) { CompoundTag nbt = itemStack.getOrCreateTag(); if(nbt.contains("alloyedMetals")) { int[] metalIds = nbt.getIntArray("alloyedMetals"); - HashSet metalTypes = new HashSet<>(); + HashSet metalTypes = new HashSet<>(); for (int metalId : metalIds) { metalTypes.add( - Metals.MetalType.valueOf(metalId).isPresent() ? - Metals.MetalType.valueOf(metalId).get() : Metals.MetalType.SILVER); + MetalType.valueOf(metalId).isPresent() ? + MetalType.valueOf(metalId).get() : MetalType.SILVER); } return metalTypes; } - return new HashSet(); + return new HashSet(); } - public boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals) + public boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals) { CompoundTag nbt = itemStack.getOrCreateTag(); ArrayList metalIds = new ArrayList<>(); boolean containsGodMetal = false; boolean containsNormalMetal = false; - for (Metals.MetalType alloyedMetal : alloyedMetals) + for (MetalType alloyedMetal : alloyedMetals) { metalIds.add(alloyedMetal.getID()); @@ -94,18 +94,18 @@ public Color mixColors(ArrayList colors) return new Color((int) r, (int) g, (int) b); } - public Color getColour(HashSet metals) + public Color getColour(HashSet metals) { ArrayList colors = new ArrayList<>(); - int i = 0; - for(Metals.MetalType metal : metals) + for(MetalType metal : metals) { + if (metal == this.getMetalType()) continue; colors.add(metal.getColor()); } return mixColors(colors); } - public int getColourValue(HashSet metals) + public int getColourValue(HashSet metals) { return getColour(metals).getRGB(); } diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 43794d0df..7e9b0843f 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -40,9 +40,9 @@ public int getMaxSize() return MAX_SIZE; } - public GodMetalAlloyNuggetItem() + public GodMetalAlloyNuggetItem(Metals.MetalType metalType) { - super(); + super(metalType); } public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) @@ -101,19 +101,21 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) { - HashSet metals = readMetalAlloyNbtData(stack); + HashSet metalTypes = readMetalAlloyNbtData(stack); Integer size = readMetalAlloySizeNbtData(stack); - if (metals != null) + if (metalTypes != null) { MutableComponent metalListComponent = Component.empty(); - for (Iterator it = metals.iterator(); it.hasNext(); ) + for (Metals.MetalType metalType : metalTypes) { - Metals.MetalType metal = it.next(); - metalListComponent.append(Component.translatable(metal.getTranslationKey()) - .withStyle(Style.EMPTY.withColor(metal.getColorValue()))); - if (it.hasNext()) metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); + metalListComponent.append(Component.translatable(metalType.getTranslationKey()) + .withStyle(Style.EMPTY.withColor(metalType.getColorValue()))); + metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); } + metalListComponent.append(Component.translatable(this.getMetalType().getTranslationKey()) + .withStyle(Style.EMPTY.withColor(this.getMetalType().getColorValue()))); + tooltip.add(metalListComponent); } @@ -177,35 +179,22 @@ public ArrayList determineManifestations(ItemStack itemStack) Manifestation manifestation; if (metals.contains(Metals.MetalType.LERASIUM)) { - for (Metals.MetalType metal : metals) + manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(this.getMetalType().getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) { - if (metal != Metals.MetalType.LERASIUM) - { - manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } + manifestations.add(manifestation); } } else if (metals.contains(Metals.MetalType.LERASATIUM)) { - for (Metals.MetalType metal : metals) + manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(this.getMetalType().getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) { - if (metal != Metals.MetalType.LERASATIUM) - { - manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } - } + manifestations.add(manifestation); } } return manifestations; - } @Override diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index fbc9b5056..da04530a7 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -5,6 +5,7 @@ package leaf.cosmere.common.registry; import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Metals; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; @@ -21,6 +22,7 @@ import java.util.Arrays; import java.util.HashSet; +import java.util.List; public class CreativeTabsRegistry { @@ -35,48 +37,29 @@ public class CreativeTabsRegistry builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> { - CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); + // CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); + List items = ItemsRegistry.ITEMS.getAllItems(); + for(IItemProvider item : items) + { + if(item.asItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) + { + for (MetalType metalType : new MetalType[]{ MetalType.LERASIUM, MetalType.LERASATIUM }) + { + HashSet metalTypes = new HashSet<>(); + metalTypes.add(metalType); + + godMetalAlloyNuggetItem.addFilled(output, metalTypes, 8); + } + } + else + { + output.accept(item); + } + } CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); - addLerasiumAlloyNuggets(output); - addLerasatiumAlloyNuggets(output); }) ); - - private static void addLerasiumAlloyNuggets(CreativeModeTab.Output output) - { - for (MetalType metalType : Arrays.asList(EnumUtils.METAL_TYPES).subList(0, 16)) - { - if (metalType.hasFeruchemicalEffect()) - { - final GodMetalAlloyNuggetItem item = ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(); - - HashSet metalTypes = new HashSet<>(); - metalTypes.add(MetalType.LERASIUM); - metalTypes.add(metalType); - - item.addFilled(output, metalTypes, 16); - } - } - } - - private static void addLerasatiumAlloyNuggets(CreativeModeTab.Output output) - { - for (MetalType metalType : Arrays.asList(EnumUtils.METAL_TYPES).subList(0, 16)) - { - if (metalType.hasFeruchemicalEffect()) - { - final GodMetalAlloyNuggetItem item = ItemsRegistry.GOD_METAL_ALLOY_NUGGET.get(); - HashSet metalTypes = new HashSet<>(); - metalTypes.add(MetalType.LERASATIUM); - metalTypes.add(metalType); - - item.addFilled(output, metalTypes, 16); - } - } - } - - private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { ResourceKey tabKey = event.getTabKey(); diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 0a7e34ddf..959b3bd00 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -26,11 +26,6 @@ public class ItemsRegistry public static final ItemRegistryObject GUIDE = ITEMS.register("guide", GuideItem::new); - // Add - public static final ItemRegistryObject GOD_METAL_ALLOY_NUGGET = ITEMS.register( - "god_metal_alloy" + RegNameStubs.NUGGET, - () -> new GodMetalAlloyNuggetItem()); - //Mass items gen public static final Map> METAL_RAW_ORE = @@ -64,6 +59,16 @@ public class ItemsRegistry () -> new MetalNuggetItem(type) ))); + public static final Map> GOD_METAL_ALLOY_NUGGETS = + Arrays.stream(EnumUtils.METAL_TYPES) + .filter(type -> !type.isGodMetal()) + .collect(Collectors.toMap( + Function.identity(), + type -> ITEMS.register( + "god_metal_" + type.getName() + "_alloy" + RegNameStubs.NUGGET, + () -> new GodMetalAlloyNuggetItem(type) + ))); + public static final Map> GOD_METAL_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) .filter(Metals.MetalType::isGodMetal) From 16cabc82ca9e798d538f80ec7ed5749d12365bf6 Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Sun, 9 Nov 2025 08:26:08 -0500 Subject: [PATCH 1050/1090] removing old textures again --- .../cosmere/textures/item/metal_blend.png | Bin 50729 -> 0 bytes .../cosmere/textures/item/metal_ingot.png | Bin 49943 -> 0 bytes .../cosmere/textures/item/metal_nugget.png | Bin 50594 -> 0 bytes .../assets/cosmere/textures/item/metal_raw.png | Bin 50813 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_blend.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_ingot.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_nugget.png delete mode 100644 src/main/resources/assets/cosmere/textures/item/metal_raw.png diff --git a/src/main/resources/assets/cosmere/textures/item/metal_blend.png b/src/main/resources/assets/cosmere/textures/item/metal_blend.png deleted file mode 100644 index adc5358beb8ace45730bae1cae045e6d0da38aab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50729 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 O;qDFX57ck{`u_`LinpWy diff --git a/src/main/resources/assets/cosmere/textures/item/metal_ingot.png b/src/main/resources/assets/cosmere/textures/item/metal_ingot.png deleted file mode 100644 index ec32d35a062fc83f29b96f5260af42604e9f6bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49943 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�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 QKOgQs(*8*OhyKL>1xQGDmjD0& diff --git a/src/main/resources/assets/cosmere/textures/item/metal_raw.png b/src/main/resources/assets/cosmere/textures/item/metal_raw.png deleted file mode 100644 index b06053bf5365ec4698957aa838a571d471dbcc4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50813 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 SZ-tx>V3wH3&gZW-oaFXwahcMDL7Q&oA| zcbs_Ib-Kb&x{}(JD0}40qCbe7m3yxwV}cEv+dKX z=h)=ldrGFm#41q*2{{?Dcxu=Ct}QeKUpE6`!bFItW~>)qToDNyLujIQOWc%iYX<7r zi|<<GHuVo_JZ=FLU!4i5%_7?Gej=Zjv~l-`3@b% zC;|Xxl}7GKaZgnE3{Ky8O<`YJ!m-TtGO-RSKESo_u83NAzg?lXo6Z_25&#kJiOK}V zgfT`k3q9JoAYDa!-V;p<`WPm#FG?$FgraJeRF*Ht!aPRSwjo~b^=%ra9AYkku7%55 z0-vj&oqWz+KKzhOqkKDHk`EjrCZYPk$Y>imqg_7p(Q&5}@-v%+o_R98(~OXq`RBdr zdxn+neqX+hp~8?dj2gI^^xll}DS4mRG0l4FnN0DEMByRjBk>4V5<3h`shDIoTj=rla3)c$vn&T9kCg!h}EFK+=hnbxz8fcv?`-B$VB#g)4;}FJnp!M&^=hG*;J5zCkr@wx+7?1nu;C1Kkbx>6YFMasv)_DBH z$;+-@+xh6nw;rGFJni9ccXzs*)9G~QDujEHx5pZ54zj8A3Yj6 zdF^YD-x}}hko=hbHX5KxbPwJks5|F^$)+Ui(wL3e~rvb4<^7uO zd;5QLzfWmzy$*9vq)bf5CQSnevLltnZv~hU%jECS{r|E_pYmnKX`Yw?+9&Cd@)_Jw z29{6!6^Dxd?OZ?R*(be>Uc5{85Qb*#p-wM#cyzYH;ueRy@tfD~b*Y=buQz7VilaF> zeQ=r&w>i(X2THCV&)m5<-^Dx0KfwWC_^3nM33J{N>ZV@F@eBzKST@mfP8dd~HT7N= zOMdP6&e4sdTiv7QLE_w{k854JINoI$>gi;-b97rg=lMT+ux{lqpFCtOaJe0S^QtFr zcf*^f(}U?2PUz0nSH1G!<-he$uUvV?Z@i{19`fJ%-S1S7JohVJ@Uw4!Sbyb5Uh>Xo z{opqrsF!@{*MIJB9sJGbyiuS2kFWa4=J0vX`P|dL^-Wdw(pSIiU;X0uebbvh@SX4a z^~ZkkH=g;z7eDm3f8+%pe&>gO?&rVaZ6Ck$jO^nt_@y8F!(aN5kG%iKKlbD&e)khU z@v*=5_U5nt{3i~cdHenE3%`Hozr642uYIL`@4MggWuNwY-}|HHk>7Lw?c+cD>Hq%4 zul?v7|Kz9c{F#@3@cV!1V_*EeU-vbi^>v^Bvgvyd4&HP9iTCvX?8?9SpTF>VfB!|l zS6};vU;n_zU;mJO@BMFk@C#r1tM7lsTYme)&z^65&y|<{gYW;EpLpwMyfOQ^51(8y zzi{}02mktqK6d0KzB_y9cam@U+He2hul&IO`sR21^Y8iTHy`|? z=iT_&FF*X?Z+*@O9(=|JKli(S{F!fh#jlQk5S~AO$5;LGPd@kh^XC`7|K@kS`I+ze z$VWf=LHCL;`GFrfec{Q!_}QPSU-b_4k^lb3-+1FMneY3R)7u})f9i{0{I37-gFo~~ z?;iUXeEA<<{rwj`>(gHUY5(@qzv0P0{yPsHKKC6T_5GDE`Q`8ahj06#pZm?1yz|>m z-~NJcx$(wK{@6GC$A_QuGoSJ6Z~M$w|IrtHBFAm`1yZ`_I From dbd94ed92b3b6944d137f5cbdad3ed0760bb2134 Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Sun, 9 Nov 2025 12:33:41 -0500 Subject: [PATCH 1051/1090] switching method of handling alloyed nugget --- .../AllomancyEntityEventHandler.java | 8 ++- .../java/leaf/cosmere/api/CosmereTags.java | 3 +- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 28 +++------- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 26 ++------- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 24 ++------- .../item/god_metal_aluminum_alloy_nugget.json | 6 --- .../god_metal_bendalloy_alloy_nugget.json | 6 --- .../item/god_metal_brass_alloy_nugget.json | 6 --- .../item/god_metal_bronze_alloy_nugget.json | 6 --- .../item/god_metal_cadmium_alloy_nugget.json | 6 --- .../item/god_metal_chromium_alloy_nugget.json | 6 --- .../item/god_metal_copper_alloy_nugget.json | 6 --- .../god_metal_duralumin_alloy_nugget.json | 6 --- .../item/god_metal_electrum_alloy_nugget.json | 6 --- .../item/god_metal_gold_alloy_nugget.json | 6 --- .../item/god_metal_iron_alloy_nugget.json | 6 --- .../item/god_metal_lead_alloy_nugget.json | 6 --- .../item/god_metal_malatium_alloy_nugget.json | 6 --- .../item/god_metal_nickel_alloy_nugget.json | 6 --- .../item/god_metal_nicrosil_alloy_nugget.json | 6 --- .../item/god_metal_pewter_alloy_nugget.json | 6 --- .../item/god_metal_silver_alloy_nugget.json | 6 --- .../item/god_metal_steel_alloy_nugget.json | 6 --- .../item/god_metal_tin_alloy_nugget.json | 6 --- .../item/god_metal_zinc_alloy_nugget.json | 6 --- .../data/forge/tags/items/nuggets.json | 26 ++------- .../nuggets/god_metal_aluminum_alloy.json | 5 -- .../nuggets/god_metal_bendalloy_alloy.json | 5 -- .../items/nuggets/god_metal_brass_alloy.json | 5 -- .../items/nuggets/god_metal_bronze_alloy.json | 5 -- .../nuggets/god_metal_cadmium_alloy.json | 5 -- .../nuggets/god_metal_chromium_alloy.json | 5 -- .../items/nuggets/god_metal_copper_alloy.json | 5 -- .../nuggets/god_metal_duralumin_alloy.json | 5 -- .../nuggets/god_metal_electrum_alloy.json | 5 -- .../items/nuggets/god_metal_gold_alloy.json | 5 -- .../items/nuggets/god_metal_iron_alloy.json | 5 -- .../items/nuggets/god_metal_lead_alloy.json | 5 -- .../nuggets/god_metal_malatium_alloy.json | 5 -- .../items/nuggets/god_metal_nickel_alloy.json | 5 -- .../nuggets/god_metal_nicrosil_alloy.json | 5 -- .../items/nuggets/god_metal_pewter_alloy.json | 5 -- .../items/nuggets/god_metal_silver_alloy.json | 5 -- .../items/nuggets/god_metal_steel_alloy.json | 5 -- .../items/nuggets/god_metal_tin_alloy.json | 5 -- .../items/nuggets/god_metal_zinc_alloy.json | 5 -- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../leaf/cosmere/items/ItemModelsGen.java | 14 +---- .../leaf/cosmere/tag/CosmereTagProvider.java | 2 +- .../common/items/GodMetalAlloyNuggetItem.java | 51 +++++++----------- .../common/registry/CreativeTabsRegistry.java | 23 +++++--- .../common/registry/ItemsRegistry.java | 4 +- .../textures/gui/metalworking_table.png | Bin 1332 -> 0 bytes 55 files changed, 69 insertions(+), 368 deletions(-) delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json delete mode 100644 src/main/resources/assets/cosmere/textures/gui/metalworking_table.png diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 6ca849d13..166bdf03b 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -68,12 +68,10 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) @SubscribeEvent public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) { - if (event.isCanceled()) - { - return; - } - + if (event.isCanceled()) return; final LivingEntity livingEntity = event.getEntity(); + if(livingEntity.level().isClientSide) return; + if (event.getItem().getItem() instanceof MetalNuggetItem || event.getItem().getItem() instanceof IGrantsManifestations) { MiscHelper.consumeNugget(livingEntity, event.getItem()); diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index 959144f36..0aaa3b780 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -76,9 +76,10 @@ public static class Items public static final Map> GOD_METAL_ALLOY_NUGGET_TAGS = Arrays.stream(EnumUtils.METAL_TYPES) + .filter(Metals.MetalType::isGodMetal) .collect(Collectors.toMap( Function.identity(), - type -> forgeItemTag("nuggets/god_metal_" + type.getName() + "_alloy"))); + type -> forgeItemTag("nuggets/" + type.getName() + "_alloy"))); public static final Map> METAL_INGOT_TAGS = Arrays.stream(EnumUtils.METAL_TYPES) diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index f027d1c7e..8b9d5b3d8 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-08T18:30:44.1003612 Tags: cosmere +// 1.20.1 2025-11-09T09:23:08.400538 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,9 +63,10 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -4556c3cb21dc47eff9522fe361b18fce3000257a data/forge/tags/items/nuggets.json +0f7cb0dcc4490c84a57d9eeb4666be299f177c55 data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json +f6a1533771ba2aa37af735c04ee7f5aa3b5cd023 data/forge/tags/items/nuggets/atium_alloy.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json 22febcc73d25eb9144c40bcea5a7d897117eef9e data/forge/tags/items/nuggets/brass.json e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.json @@ -74,30 +75,13 @@ e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.js 56b70b9f34d9048ca4097c2e77debc2e7ad28c6b data/forge/tags/items/nuggets/copper.json 88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json -3e91e1a0971e72741cbc1d1a4efa0de079c301c7 data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json -a5dda5ea07393203362b33f01345a028dda54528 data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json -1b311b62b28c96ddb0545726e1d21150ac74d3a0 data/forge/tags/items/nuggets/god_metal_brass_alloy.json -2238b35edb3fa19ff5566c33560ae3a611b00a2d data/forge/tags/items/nuggets/god_metal_bronze_alloy.json -6c0c5c11cbbda16573942dc7ca9567d4e797d232 data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json -bb7eff34c7722c55d5fce15298f1b505f8c7cbc0 data/forge/tags/items/nuggets/god_metal_chromium_alloy.json -5607b59904254aaf00272e8fef6d5c58b050dd72 data/forge/tags/items/nuggets/god_metal_copper_alloy.json -4a572880c6d79776e9c2033c9c18397ac384e389 data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json -46ab9e4742b2683443daabffe7a5dcf0e7431a93 data/forge/tags/items/nuggets/god_metal_electrum_alloy.json -1b7a4ec826ebd9e8b8d42a3f49e41671b30fd723 data/forge/tags/items/nuggets/god_metal_gold_alloy.json -9c183b86f1efabbe26450fef735073c6b2db078e data/forge/tags/items/nuggets/god_metal_iron_alloy.json -bbddaaad971d1b9c47c74df8c7717c3859628bb3 data/forge/tags/items/nuggets/god_metal_lead_alloy.json -a6a8dcda90c7e5bbfc93eaa2605911d827cce7d3 data/forge/tags/items/nuggets/god_metal_malatium_alloy.json -2a147a0f1328b3d038ed20f430e1a40ee094d6b4 data/forge/tags/items/nuggets/god_metal_nickel_alloy.json -5ea2be84408de121dd8a248196b2147a04c4a965 data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json -8be36f2c727c32ad454ecf93afd4dc4a10c13dc9 data/forge/tags/items/nuggets/god_metal_pewter_alloy.json -8974924c36fb8db8dc7cb413d55e26f756f0beff data/forge/tags/items/nuggets/god_metal_silver_alloy.json -50daa75e8283e66133960c294cfb072b9c0add46 data/forge/tags/items/nuggets/god_metal_steel_alloy.json -04330ff11704f75404a01f42400dc43270488ef6 data/forge/tags/items/nuggets/god_metal_tin_alloy.json -eea890928245d7d4dc84a281cf5abbdf4659f5e8 data/forge/tags/items/nuggets/god_metal_zinc_alloy.json ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json +49f4d0043ccf29ff6edeb51ece6f8b3287777060 data/forge/tags/items/nuggets/harmonium_alloy.json 6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json 28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json +600ed1e7a82abf3d040b7e6bf181c188b67453e0 data/forge/tags/items/nuggets/lerasatium_alloy.json 8208cc064a68c06d411c6a9bea026d2d78c38368 data/forge/tags/items/nuggets/lerasium.json +57c2625da0576d6ec77397ff42997d1482d4d7fc data/forge/tags/items/nuggets/lerasium_alloy.json 53af8c89a4a8e6fb7e90668c967801dee236d614 data/forge/tags/items/nuggets/malatium.json ce8ca3009391a6012a898a5622718c1c49c33d87 data/forge/tags/items/nuggets/nickel.json ee2235eeec793fc18a173cfab9939ba12b2beee3 data/forge/tags/items/nuggets/nicrosil.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 3516d4def..d9719dcff 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,6 +1,7 @@ -// 1.20.1 2025-11-08T18:30:44.1053614 Item Models: cosmere +// 1.20.1 2025-11-09T09:23:08.402112 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json +0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_alloy_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_nugget.json 0f98979d062133ede87d33109e00afc8ee1d11b1 assets/cosmere/models/item/bendalloy_blend.json @@ -23,33 +24,16 @@ d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_bl 7f1c2aba76d0cfe4c1b46a095ab28fcb27eb2076 assets/cosmere/models/item/electrum_blend.json ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json -8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json -6b595f03ec49392149f6e01068d5cf2a7cc0407b assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json -0b188ff28a3af4f8513fa29f7667ea531fc5d94e assets/cosmere/models/item/god_metal_brass_alloy_nugget.json -e00fd350bf851551ba15797b5d493e43c0aa14b7 assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json -b518db4e4e1664b81b3f5b6efc827a3c371fcfed assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json -05986a77ad11ceb4a9af904b17d57e81a051d438 assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json -fac9d3382c68e92ad6167f2b64c23141cddd9573 assets/cosmere/models/item/god_metal_copper_alloy_nugget.json -90493993464f98a65bf0399cdc4b385662fc2f4c assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json -85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json -e8f2c9d07112191f81aacbb40fcf61b0b3ca583e assets/cosmere/models/item/god_metal_gold_alloy_nugget.json -5a2a3137b0e718a50b2c6c1515b71c9d9233a469 assets/cosmere/models/item/god_metal_iron_alloy_nugget.json -c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/god_metal_lead_alloy_nugget.json -f57901c7644ff165eb5c89a41d9f0c69ec03a6c4 assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json -46c31e028d09311d398f53335c563035e96fc2a0 assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json -5995927925782312bc72abe0d0abc23d4a498334 assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json -0c05924f48e0801c5b8cf80e659cf2eedccae883 assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json -07118efcc0d8c84ef3f86877e37660d5cec23e5e assets/cosmere/models/item/god_metal_silver_alloy_nugget.json -799cc8cc78ae34890ff7cb0addd4e2878b6cb803 assets/cosmere/models/item/god_metal_steel_alloy_nugget.json -99a3852f8768de2e239340cf21a0aed96410caf6 assets/cosmere/models/item/god_metal_tin_alloy_nugget.json -9620f2acfd4f8e0f8cc1058b14c3d3b0e70f61a4 assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json +4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_alloy_nugget.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json 31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/lead_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_alloy_nugget.json 998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_alloy_nugget.json 7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nugget.json 8f9ecdfe13399031e5a39d1145e2866c39a9cf1c assets/cosmere/models/item/malatium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index a3e2883b5..0456deb7c 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-08T18:30:44.1068612 Languages: en_us -b2844ef1fd388b5ca091f7b7457fab66d112da72 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-09T09:23:08.402946 Languages: en_us +1ca92fc382c7d6b1f8060ec6348ed1181fa9edef assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 83b25f155..8d895b540 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -51,6 +51,7 @@ "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "item.cosmere.aluminum_ingot": "Aluminum Ingot", "item.cosmere.aluminum_nugget": "Aluminum Nugget", + "item.cosmere.atium_alloy_nugget": "Atium Alloy Nugget", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_nugget": "Atium Nugget", "item.cosmere.bendalloy_blend": "Bendalloy Blend", @@ -75,30 +76,11 @@ "item.cosmere.electrum_blend": "Electrum Blend", "item.cosmere.electrum_ingot": "Electrum Ingot", "item.cosmere.electrum_nugget": "Electrum Nugget", - "item.cosmere.god_metal_aluminum_alloy_nugget": "God Metal Aluminum Alloy Nugget", - "item.cosmere.god_metal_bendalloy_alloy_nugget": "God Metal Bendalloy Alloy Nugget", - "item.cosmere.god_metal_brass_alloy_nugget": "God Metal Brass Alloy Nugget", - "item.cosmere.god_metal_bronze_alloy_nugget": "God Metal Bronze Alloy Nugget", - "item.cosmere.god_metal_cadmium_alloy_nugget": "God Metal Cadmium Alloy Nugget", - "item.cosmere.god_metal_chromium_alloy_nugget": "God Metal Chromium Alloy Nugget", - "item.cosmere.god_metal_copper_alloy_nugget": "God Metal Copper Alloy Nugget", - "item.cosmere.god_metal_duralumin_alloy_nugget": "God Metal Duralumin Alloy Nugget", - "item.cosmere.god_metal_electrum_alloy_nugget": "God Metal Electrum Alloy Nugget", - "item.cosmere.god_metal_gold_alloy_nugget": "God Metal Gold Alloy Nugget", - "item.cosmere.god_metal_iron_alloy_nugget": "God Metal Iron Alloy Nugget", - "item.cosmere.god_metal_lead_alloy_nugget": "God Metal Lead Alloy Nugget", - "item.cosmere.god_metal_malatium_alloy_nugget": "God Metal Malatium Alloy Nugget", - "item.cosmere.god_metal_nickel_alloy_nugget": "God Metal Nickel Alloy Nugget", - "item.cosmere.god_metal_nicrosil_alloy_nugget": "God Metal Nicrosil Alloy Nugget", - "item.cosmere.god_metal_pewter_alloy_nugget": "God Metal Pewter Alloy Nugget", - "item.cosmere.god_metal_silver_alloy_nugget": "God Metal Silver Alloy Nugget", - "item.cosmere.god_metal_steel_alloy_nugget": "God Metal Steel Alloy Nugget", - "item.cosmere.god_metal_tin_alloy_nugget": "God Metal Tin Alloy Nugget", - "item.cosmere.god_metal_zinc_alloy_nugget": "God Metal Zinc Alloy Nugget", "item.cosmere.gold_block": "Gold Block", "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.guide": "Ars Arcanum", + "item.cosmere.harmonium_alloy_nugget": "Harmonium Alloy Nugget", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", "item.cosmere.iron_block": "Iron Block", @@ -106,8 +88,10 @@ "item.cosmere.iron_nugget": "Iron Nugget", "item.cosmere.lead_ingot": "Lead Ingot", "item.cosmere.lead_nugget": "Lead Nugget", + "item.cosmere.lerasatium_alloy_nugget": "Lerasatium Alloy Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", "item.cosmere.lerasatium_nugget": "Lerasatium Nugget", + "item.cosmere.lerasium_alloy_nugget": "Lerasium Alloy Nugget", "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.malatium_ingot": "Malatium Ingot", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json deleted file mode 100644 index 99984c4f8..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_aluminum_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/aluminum_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json deleted file mode 100644 index 8bae6584c..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bendalloy_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/bendalloy_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json deleted file mode 100644 index 3fdd8d861..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_brass_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/brass_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json deleted file mode 100644 index 10a7f6e09..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_bronze_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/bronze_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json deleted file mode 100644 index 067ee8d9c..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_cadmium_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/cadmium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json deleted file mode 100644 index de8944369..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_chromium_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/chromium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json deleted file mode 100644 index 5d886b3ff..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_copper_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/copper_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json deleted file mode 100644 index c48149ab9..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_duralumin_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/duralumin_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json deleted file mode 100644 index df011b53e..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_electrum_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/electrum_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json deleted file mode 100644 index 3da43c93d..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_gold_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "minecraft:item/gold_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json deleted file mode 100644 index 3873a52ac..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_iron_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "minecraft:item/iron_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json deleted file mode 100644 index 4e0f8b630..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_lead_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lead_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json deleted file mode 100644 index b492020f4..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_malatium_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/malatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json deleted file mode 100644 index 254548e74..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nickel_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/nickel_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json deleted file mode 100644 index 45254f4d7..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_nicrosil_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/nicrosil_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json deleted file mode 100644 index 883097f64..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_pewter_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/pewter_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json deleted file mode 100644 index 8e2adf519..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_silver_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/silver_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json deleted file mode 100644 index 532425a1e..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_steel_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/steel_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json deleted file mode 100644 index a0059449f..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_tin_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/tin_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json deleted file mode 100644 index 6543d5982..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/god_metal_zinc_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/zinc_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index edf1327ee..a21795ff4 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -1,48 +1,32 @@ { "values": [ "#forge:nuggets/iron", - "#forge:nuggets/god_metal_iron_alloy", "#forge:nuggets/steel", - "#forge:nuggets/god_metal_steel_alloy", "#forge:nuggets/tin", - "#forge:nuggets/god_metal_tin_alloy", "#forge:nuggets/pewter", - "#forge:nuggets/god_metal_pewter_alloy", "#forge:nuggets/zinc", - "#forge:nuggets/god_metal_zinc_alloy", "#forge:nuggets/brass", - "#forge:nuggets/god_metal_brass_alloy", "#forge:nuggets/copper", - "#forge:nuggets/god_metal_copper_alloy", "#forge:nuggets/bronze", - "#forge:nuggets/god_metal_bronze_alloy", "#forge:nuggets/aluminum", - "#forge:nuggets/god_metal_aluminum_alloy", "#forge:nuggets/duralumin", - "#forge:nuggets/god_metal_duralumin_alloy", "#forge:nuggets/chromium", - "#forge:nuggets/god_metal_chromium_alloy", "#forge:nuggets/nicrosil", - "#forge:nuggets/god_metal_nicrosil_alloy", "#forge:nuggets/cadmium", - "#forge:nuggets/god_metal_cadmium_alloy", "#forge:nuggets/bendalloy", - "#forge:nuggets/god_metal_bendalloy_alloy", "#forge:nuggets/gold", - "#forge:nuggets/god_metal_gold_alloy", "#forge:nuggets/electrum", - "#forge:nuggets/god_metal_electrum_alloy", "#forge:nuggets/atium", + "#forge:nuggets/atium_alloy", "#forge:nuggets/lerasium", + "#forge:nuggets/lerasium_alloy", "#forge:nuggets/harmonium", + "#forge:nuggets/harmonium_alloy", "#forge:nuggets/malatium", - "#forge:nuggets/god_metal_malatium_alloy", "#forge:nuggets/lerasatium", + "#forge:nuggets/lerasatium_alloy", "#forge:nuggets/nickel", - "#forge:nuggets/god_metal_nickel_alloy", "#forge:nuggets/lead", - "#forge:nuggets/god_metal_lead_alloy", - "#forge:nuggets/silver", - "#forge:nuggets/god_metal_silver_alloy" + "#forge:nuggets/silver" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json deleted file mode 100644 index 43544a821..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_aluminum_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_aluminum_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json deleted file mode 100644 index 32ef46df4..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bendalloy_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_bendalloy_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json deleted file mode 100644 index 05aec140a..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_brass_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_brass_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json deleted file mode 100644 index 1d7d50507..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_bronze_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_bronze_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json deleted file mode 100644 index 2ec38fb44..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_cadmium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_cadmium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json deleted file mode 100644 index eb34aff4e..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_chromium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_chromium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json deleted file mode 100644 index 70cf299dc..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_copper_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_copper_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json deleted file mode 100644 index 0e328f691..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_duralumin_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_duralumin_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json deleted file mode 100644 index 535ad1de8..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_electrum_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_electrum_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json deleted file mode 100644 index 0098b0a8d..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_gold_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_gold_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json deleted file mode 100644 index 72e2bbde1..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_iron_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_iron_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json deleted file mode 100644 index 041827b53..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_lead_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_lead_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json deleted file mode 100644 index 02a93f378..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_malatium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_malatium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json deleted file mode 100644 index e18226468..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nickel_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_nickel_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json deleted file mode 100644 index ba9785765..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_nicrosil_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_nicrosil_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json deleted file mode 100644 index d7ce6872c..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_pewter_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_pewter_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json deleted file mode 100644 index 4a93bc3ea..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_silver_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_silver_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json deleted file mode 100644 index 42eae9443..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_steel_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_steel_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json deleted file mode 100644 index de3273a15..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_tin_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_tin_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json deleted file mode 100644 index 8238d5a34..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/god_metal_zinc_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:god_metal_zinc_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index f48f2a807..c251e038d 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-10-30T22:55:52.0378675 Curios for feruchemy +// 1.20.1 2025-11-09T09:23:08.505295 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 5f4c561e7..57e9572d4 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-10-30T22:55:52.0763877 Curios for hemalurgy +// 1.20.1 2025-11-09T09:23:08.531664 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index fa6448763..9d7a4710d 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -42,13 +42,8 @@ protected void registerModels() { continue; } - else if (item instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem && !godMetalAlloyNuggetItem.getMetalType().isGodMetal()) + else if (item instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) { - if(!godMetalAlloyNuggetItem.getMetalType().hasMaterialItem()) - { - gameItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); - continue; - } simpleItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); continue; } @@ -87,11 +82,4 @@ public ItemModelBuilder simpleItem(String path, String texturePath) .parent(new ModelFile.UncheckedModelFile("item/generated")) .texture("layer0", modLoc("item/" + texturePath)); } - - public ItemModelBuilder gameItem(String path, String texturePath) - { - return this.getBuilder(path) - .parent(new ModelFile.UncheckedModelFile("item/generated")) - .texture("layer0", mcLoc("item/" + texturePath)); - } } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index aab13d12f..2cb715c76 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -113,7 +113,7 @@ private void addItems() } // Add the metal alloy nugget to the nugget tags - if(!metalType.isGodMetal()) + if(metalType.isGodMetal()) { final TagKey godMetalAlloyNuggetTag = metalType.getGodMetalAlloyNuggetTag(); getItemBuilder(Tags.Items.NUGGETS).add(godMetalAlloyNuggetTag); diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 7e9b0843f..bdfd35f74 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -107,14 +107,14 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool if (metalTypes != null) { MutableComponent metalListComponent = Component.empty(); + metalListComponent.append(Component.translatable(this.getMetalType().getTranslationKey()) + .withStyle(Style.EMPTY.withColor(this.getMetalType().getColorValue()))); for (Metals.MetalType metalType : metalTypes) { + metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); metalListComponent.append(Component.translatable(metalType.getTranslationKey()) .withStyle(Style.EMPTY.withColor(metalType.getColorValue()))); - metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); } - metalListComponent.append(Component.translatable(this.getMetalType().getTranslationKey()) - .withStyle(Style.EMPTY.withColor(this.getMetalType().getColorValue()))); tooltip.add(metalListComponent); } @@ -143,26 +143,9 @@ public Rarity getRarity(ItemStack itemStack) Integer size = readMetalAlloySizeNbtData(itemStack); if (size == null) return Rarity.COMMON; - boolean containsGodMetal = false; - Set metalTypes = readMetalAlloyNbtData(itemStack); - if (metalTypes == null) return Rarity.COMMON; - for (Metals.MetalType metalType : metalTypes) - { - if (metalType.isGodMetal()) - { - containsGodMetal = true; - break; - } - } - - if (containsGodMetal) - { - if (size <= 8) return Rarity.UNCOMMON; - else if (size == MAX_SIZE) return Rarity.EPIC; - return Rarity.RARE; - } - - return Rarity.COMMON; + if (size <= 8) return Rarity.UNCOMMON; + else if (size == MAX_SIZE) return Rarity.EPIC; + return Rarity.RARE; } // This needs to be replaced once a connection system is in place @@ -177,20 +160,26 @@ public ArrayList determineManifestations(ItemStack itemStack) if (metals == null) return manifestations; Manifestation manifestation; - if (metals.contains(Metals.MetalType.LERASIUM)) + if (this.getMetalType() == Metals.MetalType.LERASIUM) { - manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(this.getMetalType().getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + for(Metals.MetalType metal : metals) { - manifestations.add(manifestation); + manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } } } - else if (metals.contains(Metals.MetalType.LERASATIUM)) + else if (this.getMetalType() == Metals.MetalType.LERASATIUM) { - manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(this.getMetalType().getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + for(Metals.MetalType metal : metals) { - manifestations.add(manifestation); + manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + { + manifestations.add(manifestation); + } } } return manifestations; diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index da04530a7..0992fb58f 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -43,13 +43,7 @@ public class CreativeTabsRegistry { if(item.asItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) { - for (MetalType metalType : new MetalType[]{ MetalType.LERASIUM, MetalType.LERASATIUM }) - { - HashSet metalTypes = new HashSet<>(); - metalTypes.add(metalType); - - godMetalAlloyNuggetItem.addFilled(output, metalTypes, 8); - } + handleGodMetalNuggetItem(godMetalAlloyNuggetItem, output); } else { @@ -60,6 +54,21 @@ public class CreativeTabsRegistry }) ); + private static void handleGodMetalNuggetItem(GodMetalAlloyNuggetItem godMetalAlloyNuggetItem, CreativeModeTab.Output output) + { + if(godMetalAlloyNuggetItem.getMetalType() == MetalType.LERASIUM || + godMetalAlloyNuggetItem.getMetalType() == MetalType.LERASATIUM) + { + for (MetalType metalType : Arrays.stream(EnumUtils.METAL_TYPES).toList().subList(0, 16)) + { + HashSet metalTypes = new HashSet<>(); + metalTypes.add(metalType); + + godMetalAlloyNuggetItem.addFilled(output, metalTypes, 8); + } + } + } + private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { ResourceKey tabKey = event.getTabKey(); diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 959b3bd00..8e79d9c70 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -61,11 +61,11 @@ public class ItemsRegistry public static final Map> GOD_METAL_ALLOY_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) - .filter(type -> !type.isGodMetal()) + .filter(Metals.MetalType::isGodMetal) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - "god_metal_" + type.getName() + "_alloy" + RegNameStubs.NUGGET, + type.getName() + "_alloy" + RegNameStubs.NUGGET, () -> new GodMetalAlloyNuggetItem(type) ))); diff --git a/src/main/resources/assets/cosmere/textures/gui/metalworking_table.png b/src/main/resources/assets/cosmere/textures/gui/metalworking_table.png deleted file mode 100644 index d5b04b6870bfe44775a5913b98d9a440ee151b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1332 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K5893O0R7}x|GzJEim!2+;Ar*7p+`a9q94X>( z(MU6-`u6p$Y){?Q_2=4;-YpXSapmim`PVu14yPrF zz0ZI0dN!xt!L;HZ8$}x>V|@AS#nZOmejESi!nuU_i}p+(K7BGectTEIo`3!Aw`Kny zO+LW6?*D)JcKN7v>I&Wr3O=||&P0Yg_wV~J-?e-9?0NI%Eer0oc>e8MS(Bj7H_n9r z&2?Sv?d^vfqaVw}?@AKUW5j0^nk_(+-|RQu|Nq`@OM`9pa{PAJ7ja29_MP7-_`(Fp zlb3EhXK>t2!R?_OLklMqZN9VRZ`bVk$wCZ#etUQR6g9U$uEHRo21aG38@bM(KQH`e z3d5QXjt{|18;q0=_;VcK>SVaD%Al>vRMXC|W(LOx(fw>PXYRC@*`J^P;FBcCmgo7x zjCPwn7`}BI``w-Qd0%6CZ}Goxi6uXN_VhZW&nSN5ZMffd&HPv^i$5}t z0R(}pW_R0I`TP5?XCLP8%wswGamUN=yf)c$9-lAs|NP@eMaA8`?Z2m=J+l5LM@gII zyB)?{-*LwjTJQq7XWSMTpJ@!#*(As@Ek*f4O$?L63CK_2wG4%g5OK-8%dH&+@!CV$2AXDC)snX_0O%9Or!_tgN z_qZ+5#sMwfEO=th!{-}hq#Msj*7fx|oZbi)xWTbShQv@&C~lj7xTr6WrAhE6hl%`j zcnUIM*v2&5_|TmG=*F4-YY#l*u|IzH<<5|f%zSA2;XLKiPe}IR1 zLEt_6f5!c_3}*Rp<-6yaizlu7S9|x)ojX1Sns*rH96xUUp|t7rgAeBq%;reUV{#%G uQA19_4SQgb_y51R*r)A41{ Date: Sun, 9 Nov 2025 12:33:55 -0500 Subject: [PATCH 1052/1090] new files --- .../assets/cosmere/models/item/atium_alloy_nugget.json | 6 ++++++ .../assets/cosmere/models/item/harmonium_alloy_nugget.json | 6 ++++++ .../assets/cosmere/models/item/lerasatium_alloy_nugget.json | 6 ++++++ .../assets/cosmere/models/item/lerasium_alloy_nugget.json | 6 ++++++ .../cosmere/data/forge/tags/items/nuggets/atium_alloy.json | 5 +++++ .../data/forge/tags/items/nuggets/harmonium_alloy.json | 5 +++++ .../data/forge/tags/items/nuggets/lerasatium_alloy.json | 5 +++++ .../data/forge/tags/items/nuggets/lerasium_alloy.json | 5 +++++ 8 files changed, 44 insertions(+) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json new file mode 100644 index 000000000..5bcb4cf96 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/atium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json new file mode 100644 index 000000000..87d5a9720 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/harmonium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json new file mode 100644 index 000000000..2a95895ec --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:atium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json new file mode 100644 index 000000000..38b2b2f7a --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:harmonium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json new file mode 100644 index 000000000..61089f015 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json new file mode 100644 index 000000000..0bf85cba7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_alloy_nugget" + ] +} \ No newline at end of file From 13716df595091e20d79f6530f8595a6c24c5e54a Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Sun, 9 Nov 2025 14:59:00 -0500 Subject: [PATCH 1053/1090] almost done --- .../AllomancyEntityEventHandler.java | 13 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 210 +++++++++++++++++- .../lerasatium_aluminum_nugget_12.json | 35 +++ .../lerasatium_aluminum_nugget_16.json | 35 +++ .../lerasatium_aluminum_nugget_4.json | 35 +++ .../lerasatium_aluminum_nugget_8.json | 35 +++ .../lerasatium_bendalloy_nugget_12.json | 35 +++ .../lerasatium_bendalloy_nugget_16.json | 35 +++ .../lerasatium_bendalloy_nugget_4.json | 35 +++ .../lerasatium_bendalloy_nugget_8.json | 35 +++ .../lerasatium_brass_nugget_12.json | 35 +++ .../lerasatium_brass_nugget_16.json | 35 +++ .../lerasatium_brass_nugget_4.json | 35 +++ .../lerasatium_brass_nugget_8.json | 35 +++ .../lerasatium_bronze_nugget_12.json | 35 +++ .../lerasatium_bronze_nugget_16.json | 35 +++ .../lerasatium_bronze_nugget_4.json | 35 +++ .../lerasatium_bronze_nugget_8.json | 35 +++ .../lerasatium_cadmium_nugget_12.json | 35 +++ .../lerasatium_cadmium_nugget_16.json | 35 +++ .../lerasatium_cadmium_nugget_4.json | 35 +++ .../lerasatium_cadmium_nugget_8.json | 35 +++ .../lerasatium_chromium_nugget_12.json | 35 +++ .../lerasatium_chromium_nugget_16.json | 35 +++ .../lerasatium_chromium_nugget_4.json | 35 +++ .../lerasatium_chromium_nugget_8.json | 35 +++ .../lerasatium_duralumin_nugget_12.json | 35 +++ .../lerasatium_duralumin_nugget_16.json | 35 +++ .../lerasatium_duralumin_nugget_4.json | 35 +++ .../lerasatium_duralumin_nugget_8.json | 35 +++ .../lerasatium_electrum_nugget_12.json | 35 +++ .../lerasatium_electrum_nugget_16.json | 35 +++ .../lerasatium_electrum_nugget_4.json | 35 +++ .../lerasatium_electrum_nugget_8.json | 35 +++ .../lerasatium_nicrosil_nugget_12.json | 35 +++ .../lerasatium_nicrosil_nugget_16.json | 35 +++ .../lerasatium_nicrosil_nugget_4.json | 35 +++ .../lerasatium_nicrosil_nugget_8.json | 35 +++ .../lerasatium_pewter_nugget_12.json | 35 +++ .../lerasatium_pewter_nugget_16.json | 35 +++ .../lerasatium_pewter_nugget_4.json | 35 +++ .../lerasatium_pewter_nugget_8.json | 35 +++ .../lerasatium_steel_nugget_12.json | 35 +++ .../lerasatium_steel_nugget_16.json | 35 +++ .../lerasatium_steel_nugget_4.json | 35 +++ .../lerasatium_steel_nugget_8.json | 35 +++ .../decorations/lerasatium_tin_nugget_12.json | 35 +++ .../decorations/lerasatium_tin_nugget_16.json | 35 +++ .../decorations/lerasatium_tin_nugget_4.json | 35 +++ .../decorations/lerasatium_tin_nugget_8.json | 35 +++ .../lerasatium_zinc_nugget_12.json | 35 +++ .../lerasatium_zinc_nugget_16.json | 35 +++ .../decorations/lerasatium_zinc_nugget_4.json | 35 +++ .../decorations/lerasatium_zinc_nugget_8.json | 35 +++ .../lerasium_aluminum_nugget_12.json | 35 +++ .../lerasium_aluminum_nugget_16.json | 35 +++ .../lerasium_aluminum_nugget_4.json | 35 +++ .../lerasium_aluminum_nugget_8.json | 35 +++ .../lerasium_bendalloy_nugget_12.json | 35 +++ .../lerasium_bendalloy_nugget_16.json | 35 +++ .../lerasium_bendalloy_nugget_4.json | 35 +++ .../lerasium_bendalloy_nugget_8.json | 35 +++ .../decorations/lerasium_brass_nugget_12.json | 35 +++ .../decorations/lerasium_brass_nugget_16.json | 35 +++ .../decorations/lerasium_brass_nugget_4.json | 35 +++ .../decorations/lerasium_brass_nugget_8.json | 35 +++ .../lerasium_bronze_nugget_12.json | 35 +++ .../lerasium_bronze_nugget_16.json | 35 +++ .../decorations/lerasium_bronze_nugget_4.json | 35 +++ .../decorations/lerasium_bronze_nugget_8.json | 35 +++ .../lerasium_cadmium_nugget_12.json | 35 +++ .../lerasium_cadmium_nugget_16.json | 35 +++ .../lerasium_cadmium_nugget_4.json | 35 +++ .../lerasium_cadmium_nugget_8.json | 35 +++ .../lerasium_chromium_nugget_12.json | 35 +++ .../lerasium_chromium_nugget_16.json | 35 +++ .../lerasium_chromium_nugget_4.json | 35 +++ .../lerasium_chromium_nugget_8.json | 35 +++ .../lerasium_duralumin_nugget_12.json | 35 +++ .../lerasium_duralumin_nugget_16.json | 35 +++ .../lerasium_duralumin_nugget_4.json | 35 +++ .../lerasium_duralumin_nugget_8.json | 35 +++ .../lerasium_electrum_nugget_12.json | 35 +++ .../lerasium_electrum_nugget_16.json | 35 +++ .../lerasium_electrum_nugget_4.json | 35 +++ .../lerasium_electrum_nugget_8.json | 35 +++ .../lerasium_nicrosil_nugget_12.json | 35 +++ .../lerasium_nicrosil_nugget_16.json | 35 +++ .../lerasium_nicrosil_nugget_4.json | 35 +++ .../lerasium_nicrosil_nugget_8.json | 35 +++ .../lerasium_pewter_nugget_12.json | 35 +++ .../lerasium_pewter_nugget_16.json | 35 +++ .../decorations/lerasium_pewter_nugget_4.json | 35 +++ .../decorations/lerasium_pewter_nugget_8.json | 35 +++ .../decorations/lerasium_steel_nugget_12.json | 35 +++ .../decorations/lerasium_steel_nugget_16.json | 35 +++ .../decorations/lerasium_steel_nugget_4.json | 35 +++ .../decorations/lerasium_steel_nugget_8.json | 35 +++ .../decorations/lerasium_tin_nugget_12.json | 35 +++ .../decorations/lerasium_tin_nugget_16.json | 35 +++ .../decorations/lerasium_tin_nugget_4.json | 35 +++ .../decorations/lerasium_tin_nugget_8.json | 35 +++ .../decorations/lerasium_zinc_nugget_12.json | 35 +++ .../decorations/lerasium_zinc_nugget_16.json | 35 +++ .../decorations/lerasium_zinc_nugget_4.json | 35 +++ .../decorations/lerasium_zinc_nugget_8.json | 35 +++ .../lerasatium_aluminum_nugget_12.json | 24 ++ .../lerasatium_aluminum_nugget_16.json | 24 ++ .../recipes/lerasatium_aluminum_nugget_4.json | 24 ++ .../recipes/lerasatium_aluminum_nugget_8.json | 24 ++ .../lerasatium_bendalloy_nugget_12.json | 24 ++ .../lerasatium_bendalloy_nugget_16.json | 24 ++ .../lerasatium_bendalloy_nugget_4.json | 24 ++ .../lerasatium_bendalloy_nugget_8.json | 24 ++ .../recipes/lerasatium_brass_nugget_12.json | 24 ++ .../recipes/lerasatium_brass_nugget_16.json | 24 ++ .../recipes/lerasatium_brass_nugget_4.json | 24 ++ .../recipes/lerasatium_brass_nugget_8.json | 24 ++ .../recipes/lerasatium_bronze_nugget_12.json | 24 ++ .../recipes/lerasatium_bronze_nugget_16.json | 24 ++ .../recipes/lerasatium_bronze_nugget_4.json | 24 ++ .../recipes/lerasatium_bronze_nugget_8.json | 24 ++ .../recipes/lerasatium_cadmium_nugget_12.json | 24 ++ .../recipes/lerasatium_cadmium_nugget_16.json | 24 ++ .../recipes/lerasatium_cadmium_nugget_4.json | 24 ++ .../recipes/lerasatium_cadmium_nugget_8.json | 24 ++ .../lerasatium_chromium_nugget_12.json | 24 ++ .../lerasatium_chromium_nugget_16.json | 24 ++ .../recipes/lerasatium_chromium_nugget_4.json | 24 ++ .../recipes/lerasatium_chromium_nugget_8.json | 24 ++ .../lerasatium_duralumin_nugget_12.json | 24 ++ .../lerasatium_duralumin_nugget_16.json | 24 ++ .../lerasatium_duralumin_nugget_4.json | 24 ++ .../lerasatium_duralumin_nugget_8.json | 24 ++ .../lerasatium_electrum_nugget_12.json | 24 ++ .../lerasatium_electrum_nugget_16.json | 24 ++ .../recipes/lerasatium_electrum_nugget_4.json | 24 ++ .../recipes/lerasatium_electrum_nugget_8.json | 24 ++ .../lerasatium_nicrosil_nugget_12.json | 24 ++ .../lerasatium_nicrosil_nugget_16.json | 24 ++ .../recipes/lerasatium_nicrosil_nugget_4.json | 24 ++ .../recipes/lerasatium_nicrosil_nugget_8.json | 24 ++ .../recipes/lerasatium_pewter_nugget_12.json | 24 ++ .../recipes/lerasatium_pewter_nugget_16.json | 24 ++ .../recipes/lerasatium_pewter_nugget_4.json | 24 ++ .../recipes/lerasatium_pewter_nugget_8.json | 24 ++ .../recipes/lerasatium_steel_nugget_12.json | 24 ++ .../recipes/lerasatium_steel_nugget_16.json | 24 ++ .../recipes/lerasatium_steel_nugget_4.json | 24 ++ .../recipes/lerasatium_steel_nugget_8.json | 24 ++ .../recipes/lerasatium_tin_nugget_12.json | 24 ++ .../recipes/lerasatium_tin_nugget_16.json | 24 ++ .../recipes/lerasatium_tin_nugget_4.json | 24 ++ .../recipes/lerasatium_tin_nugget_8.json | 24 ++ .../recipes/lerasatium_zinc_nugget_12.json | 24 ++ .../recipes/lerasatium_zinc_nugget_16.json | 24 ++ .../recipes/lerasatium_zinc_nugget_4.json | 24 ++ .../recipes/lerasatium_zinc_nugget_8.json | 24 ++ .../recipes/lerasium_aluminum_nugget_12.json | 24 ++ .../recipes/lerasium_aluminum_nugget_16.json | 24 ++ .../recipes/lerasium_aluminum_nugget_4.json | 24 ++ .../recipes/lerasium_aluminum_nugget_8.json | 24 ++ .../recipes/lerasium_bendalloy_nugget_12.json | 24 ++ .../recipes/lerasium_bendalloy_nugget_16.json | 24 ++ .../recipes/lerasium_bendalloy_nugget_4.json | 24 ++ .../recipes/lerasium_bendalloy_nugget_8.json | 24 ++ .../recipes/lerasium_brass_nugget_12.json | 24 ++ .../recipes/lerasium_brass_nugget_16.json | 24 ++ .../recipes/lerasium_brass_nugget_4.json | 24 ++ .../recipes/lerasium_brass_nugget_8.json | 24 ++ .../recipes/lerasium_bronze_nugget_12.json | 24 ++ .../recipes/lerasium_bronze_nugget_16.json | 24 ++ .../recipes/lerasium_bronze_nugget_4.json | 24 ++ .../recipes/lerasium_bronze_nugget_8.json | 24 ++ .../recipes/lerasium_cadmium_nugget_12.json | 24 ++ .../recipes/lerasium_cadmium_nugget_16.json | 24 ++ .../recipes/lerasium_cadmium_nugget_4.json | 24 ++ .../recipes/lerasium_cadmium_nugget_8.json | 24 ++ .../recipes/lerasium_chromium_nugget_12.json | 24 ++ .../recipes/lerasium_chromium_nugget_16.json | 24 ++ .../recipes/lerasium_chromium_nugget_4.json | 24 ++ .../recipes/lerasium_chromium_nugget_8.json | 24 ++ .../recipes/lerasium_duralumin_nugget_12.json | 24 ++ .../recipes/lerasium_duralumin_nugget_16.json | 24 ++ .../recipes/lerasium_duralumin_nugget_4.json | 24 ++ .../recipes/lerasium_duralumin_nugget_8.json | 24 ++ .../recipes/lerasium_electrum_nugget_12.json | 24 ++ .../recipes/lerasium_electrum_nugget_16.json | 24 ++ .../recipes/lerasium_electrum_nugget_4.json | 24 ++ .../recipes/lerasium_electrum_nugget_8.json | 24 ++ .../recipes/lerasium_nicrosil_nugget_12.json | 24 ++ .../recipes/lerasium_nicrosil_nugget_16.json | 24 ++ .../recipes/lerasium_nicrosil_nugget_4.json | 24 ++ .../recipes/lerasium_nicrosil_nugget_8.json | 24 ++ .../recipes/lerasium_pewter_nugget_12.json | 24 ++ .../recipes/lerasium_pewter_nugget_16.json | 24 ++ .../recipes/lerasium_pewter_nugget_4.json | 24 ++ .../recipes/lerasium_pewter_nugget_8.json | 24 ++ .../recipes/lerasium_steel_nugget_12.json | 24 ++ .../recipes/lerasium_steel_nugget_16.json | 24 ++ .../recipes/lerasium_steel_nugget_4.json | 24 ++ .../recipes/lerasium_steel_nugget_8.json | 24 ++ .../recipes/lerasium_tin_nugget_12.json | 24 ++ .../recipes/lerasium_tin_nugget_16.json | 24 ++ .../recipes/lerasium_tin_nugget_4.json | 24 ++ .../recipes/lerasium_tin_nugget_8.json | 24 ++ .../recipes/lerasium_zinc_nugget_12.json | 24 ++ .../recipes/lerasium_zinc_nugget_16.json | 24 ++ .../recipes/lerasium_zinc_nugget_4.json | 24 ++ .../recipes/lerasium_zinc_nugget_8.json | 24 ++ .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 56 +++++ .../main/java/leaf/cosmere/RecipeGen.java | 38 +++- .../recipe/NbtShapedRecipeBuilder.java | 105 +++++++++ .../recipe/NbtShapelessRecipeBuilder.java | 155 +++++++++++++ .../FeruchemyEntityEventHandler.java | 17 +- .../{AlloyItem.java => AlloyNuggetItem.java} | 6 +- .../common/items/GodMetalAlloyNuggetItem.java | 49 +--- .../common/items/GodMetalNuggetItem.java | 24 ++ 222 files changed, 6756 insertions(+), 69 deletions(-) create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json create mode 100644 src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java create mode 100644 src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java rename src/main/java/leaf/cosmere/common/items/{AlloyItem.java => AlloyNuggetItem.java} (93%) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 166bdf03b..20123eaae 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -12,6 +12,7 @@ import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.items.MetalNuggetItem; @@ -51,10 +52,14 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof GodMetalAlloyNuggetItem || stack.getItem() instanceof GodMetalNuggetItem) + if (stack.getItem() instanceof MetalNuggetItem metalNuggetItem) { + // Don't alloy for consuming normal metal nuggets + if (!(stack.getItem() instanceof GodMetalAlloyNuggetItem) && !(stack.getItem() instanceof GodMetalNuggetItem)) return; + // Only consume the nugget if it contains Lerasium + if (metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) return; + MiscHelper.consumeNugget(target, stack); - //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item stack.shrink(1); } } @@ -72,8 +77,10 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) final LivingEntity livingEntity = event.getEntity(); if(livingEntity.level().isClientSide) return; - if (event.getItem().getItem() instanceof MetalNuggetItem || event.getItem().getItem() instanceof IGrantsManifestations) + if (event.getItem().getItem() instanceof MetalNuggetItem metalNuggetItem) { + // Only consume the nugget if it contains Lerasium + if(metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) return; MiscHelper.consumeNugget(livingEntity, event.getItem()); } } diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 3e43ccda5..7575b70ac 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-08T13:17:28.9871671 Recipes +// 1.20.1 2025-11-09T13:51:42.833208 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -19,8 +19,112 @@ b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decor e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json +a9c56ed64117498efd46e7177c05472f7111f29d data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json +bf02542948e06e6faf922e2269e515f641c6af9e data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json +ff7320a4c202949909a88af933e167f2b047ed34 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json +e0e9d4ae46cda81434daed5d1b47fc07a1a1b7ff data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json +2437406ccbe9eced1e9aca1ae5566f19d36fc7c2 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json +b27a73b344fddb2aef41385a62ffe7b84e258002 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json +070cc87dde61e8c23bfd78ff09ffae45210d0d8d data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json +78ae54d6c7b0ed9c3af7f6756499deffe238d9c5 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json +a837dcaca8c59d61844ca4f246b003a59606f7e7 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json +4ec5038dbb8e0eaae8eac1dcbda80e3031b0138b data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json +e873a768137f28a1c64f43ebf3227e0d7d8e69e5 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json +5550a93d8268f3d02e42d8a3e3f93e2d9e8590e7 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json +f058618ff4858664b820ad249395a1af84a82ee6 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json +4f385006df1ca0b23dedf6a7a6cceac6c13732ff data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json +f72c39a0696b194d1b3e107c124f5cae75650902 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json +06034ba7dc8352ace6a06af337a47e9fbe7769af data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json +a65fa692fd4c1507d928d0c02ae7623100ccf047 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json +5c55c594ac2080113d47818f5c41839a9e5c1544 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json +828f209ea560b34062350e09e681df3438d3aad9 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json +115d4c17b6888333fc4c2984aeed2443dc8ad7c5 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json +882e2b3901c281e12f6bf365a91d4c92dc3865a6 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json +6ea4ce0f31d0553b8239a995fad913366b416503 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json +f596d69101de392971752dc128c86a967ff8cf58 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json +1f8f3a99961e2d90a05e35b18ef5ffade061f331 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json +4edf6f56d821ea3ea251b092ddb2ce86b872cc6f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json +009df8abcac7235fa3cea915322206701f82df93 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json +a248f22f124814e9c0f3563f3c90fe8f83e22ab4 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json +4de7c5490b25c3c6f32b5746a9fc96f3f64a06d1 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json +75ef1a94c14e9d422511a2d15f3d52a7c837a527 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json +1bff4f5380a6bef8c66c92c4046be8c706be0bb0 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json +b44f4d53d9688f1b1e7e4f34b867f4dc8e66e656 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json +7fbc916715958b79d0c24e7e616b6205335603b9 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json +f6dc78399d582694fd79ee94fe7f3ee517681f55 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json +5c26ef29126657e7d4bf8105282ffa7acd3c9d25 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json +4875eb186a0db63a4907bfdaa5f618f3c610d104 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json +6a7fb541a4d26b6a42a69a31717aa3ca77a7ddfa data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json +406f8722a0d8b7604c1dfc0c1a03c9dd35f80599 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json +ec214a20b1af14a43c4f64c3697e448e8e21e82b data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json +7ed035ed2c9efa1ea88b441f3bbaf6cca63469d7 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json +0cf2d0a25489cffcb4e182efeefcebbb113f4ad4 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json +f0ed85cab436f2c047da0c09ff44dd56054d618c data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json +3dc267974626ce7c75af5851fc69a1acc47e058b data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json +bed485bdee1858abdaf71312da04ff67b343004f data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json +6981884edf7a93ba1c1e9c4e1fdef8ee27cd8585 data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json +c7ff0327c03bfeff7d800c570646bb38b8e616e5 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json +86b9653c299a353566cba28b7fb9ac66bfd763c4 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json +be08972fb6a07273db49249005c05f1ee27dd3cd data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json +30dfea015cb5a875e8e4786fcd029a3286fdb8a1 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json +cff532b40310463db9b631d8ec79fa0a172aa141 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json +7051da117f35774fbb03c964aef83f96780cf16e data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json +57d4854a04e54c613bf004d442b0f7294a718395 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json +586307af6a68a682ebb5dbd9cba18525b6210b1b data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json +44e1ff786d4f91b03028467e4f2c5485e10881aa data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json +7bb7de6fbb4d02413878a217c87a820860623368 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json +a465f15d19c2668b93590ac89a288ac3ad275350 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json +ccf191ceffe16cc80ac4aa24024b30394b846031 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json +e78daf3e4b37e028bc184f3f436e7ddfef252132 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json +b7f1d93d0e7eacdf50777ac4a802bf8a04562c28 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json +78242cd3f8658799d2ed1b5f94526cc2432be6b1 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json +a559ff9dcfcb6786c56bbbb94b167e20a704d307 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json +c967dab46474ea9d8866f14f27eeb79262d86199 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json +fa0c823856b562266f78ee249cbb3471d6ce327a data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json +2c013ff6c9f9471ef3033310483d00823f099882 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json +e4ad9bde3e721deae37b7a1388e912da2d76dba2 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json +e81eb9dd5e600925d5b3d0f7496bbbf0df013493 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json +27b50fb2ae79858f84320a7315481d9f18fcdb2c data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json +874a7692096beba0d8465a874545c2ccdacf889d data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json +9d16c26a6ba1a712ea5af03cd422bbe603497135 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json +a56c17f708ae8c9dc0233ff69403f2131ea1e861 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json +cd98cdbb2de74d27c19e7f9468c1245f8d0089dc data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json +d2374be8ce3c5bdab0244278626de8f9221084b8 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json +55a89dea23d69e86b93180451c9304e804ebf587 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json +37709c0f6affbf673722942d27d3be03ef94442c data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json +e6cda5ab48b9811e7731f07dcae0ca267918fc54 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json +2d2d8ebe32b49cc60833db8a4eef46e5c2a5f0e8 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json +38bb9372c6918b9e10e5761865b57d3f617312e5 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json +83141eff5a86557f4b8270eb395592796780c6e1 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json +ef169d4b98ea33869dc9d4734bddec19f3a0fb26 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json +3d8f0ef783bbec9b755277f97c585aac2378d34b data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json +aafa4270e496ebfe200e311764ed26c0ef4edeb2 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json +e18a9e67a39538abe739d4f7e1bf71fc96f31ee9 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json +e7aa72f4b4d955f20fb8d17356d9d1975c94e2c5 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json +2e90e2bf8ab71fe4496784bb3024c413af33b064 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json +f6d458a5e689d128ea97d96d22334929864cd218 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json +12501e1753a4ff472f4c2ef25f09c7d183207c21 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json +f7314184d18fb9b1aff5c0ea2a3f3e187191b818 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json +3ccb27292bf7509990928de53cfbaf93c2676fd1 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json +a3b94eb37cd9a3dcefc44de365a5bec8b9bd7dc2 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json +8880757178f52c6959aa477cde3919ff0a6c845d data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json +66e4b8e4c200e721dcc91bffc367ac7112d5916c data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json +fb18f2e9361191c5da4a6d68c815659ae6c001ef data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json +4403841a247d7d3b6c2f29946f45a97807d72085 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json +402962ff81eee2b3e2dcd2513197f6534685dcc5 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json +aea6481e8830736092052c3c9bd3c220c677a6f2 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json +fff995fa9a4ff49bcd9d15daa780e21ad47cdc6e data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json +6c7ab4edef76b11dfd99a753124abc015d7ea230 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json +1943dd5c7058c9c6a59d5f3c42e97cdd7812b4b0 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json +e2fcc176fe7a7374c5a2c8fd23d8768797778a84 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json +b46924b6c029acc92ca66db24454bdec33f93c6c data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json +b62c006ce06d1a4a4990fddb9266708e8e8f0107 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json +b96d2daab6e1edf975afabd2a94b404a2dd59712 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json +11b82366d6afec1d4db54a87e52a8173b1822439 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json +21c47708a83a5f827b1a35aff8b1e3c83ed81a51 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json +d5b9a08d24037b53e8c0e1b30e35dd84747b64a7 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -296,10 +400,114 @@ a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_fro cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json +d7097c9e8ded8fa0d0a004b17c6f13689d32f6b3 data/cosmere/recipes/lerasatium_aluminum_nugget_12.json +4178ec320d699c3839f20e91b2cdc698b6fe731b data/cosmere/recipes/lerasatium_aluminum_nugget_16.json +9dcadc598975e78c3f3afda630b7c3e727743931 data/cosmere/recipes/lerasatium_aluminum_nugget_4.json +5ca14dbe08eb84de1de4e5faab3b2afc8e3154aa data/cosmere/recipes/lerasatium_aluminum_nugget_8.json +ff0a82b91d68f1aaf9123389c28da765078cd6e4 data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json +d53f96aee4cbfe05510165fdbcc818fe86ec3ed3 data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json +97a57ab58efceab32d00ceab40889d0c5555f31e data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json +7f5b0d290c9b7dd6fe05b413eff65ebfc6e5c319 data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json +55acf2ed295a5b22aa7e51cde538e8096958695d data/cosmere/recipes/lerasatium_brass_nugget_12.json +9c3f2341cc79836c109dd6caa6d8ceab49661224 data/cosmere/recipes/lerasatium_brass_nugget_16.json +e17ec11dd2404945f0aaba95ba16e8134841fa2a data/cosmere/recipes/lerasatium_brass_nugget_4.json +9a342c6143f44a4e3facf08a8509a3786ef1011f data/cosmere/recipes/lerasatium_brass_nugget_8.json +91effa8f75bd30e4d18ab6bf5deb8408d5dd9bf8 data/cosmere/recipes/lerasatium_bronze_nugget_12.json +13e832568651a7ac0b2cca679a8ca297b83728e4 data/cosmere/recipes/lerasatium_bronze_nugget_16.json +5c03c3b5879d7dfaa3c8f392a3f9cd7acfa14307 data/cosmere/recipes/lerasatium_bronze_nugget_4.json +0b82158cc816a11a6744ebe98b3edba0babefdb8 data/cosmere/recipes/lerasatium_bronze_nugget_8.json +601a143f36f29d79806cd302d22bce62098d9cd7 data/cosmere/recipes/lerasatium_cadmium_nugget_12.json +6497ec49b3371e32b07980b501a74782fcbccf5f data/cosmere/recipes/lerasatium_cadmium_nugget_16.json +16752f536b4cf6a1ee3fcb4e42a32a2d6a77d080 data/cosmere/recipes/lerasatium_cadmium_nugget_4.json +6e6621d8aaa135a7d82b76ccf488cea48f8248bc data/cosmere/recipes/lerasatium_cadmium_nugget_8.json +244535479873f3df7fde76be19049c7fc277f421 data/cosmere/recipes/lerasatium_chromium_nugget_12.json +123b1f62e21a242b22cd831b560fac41ff0f6b0b data/cosmere/recipes/lerasatium_chromium_nugget_16.json +b8de513ab5921608e7cf4a5e083bf2f3c5ad1a0d data/cosmere/recipes/lerasatium_chromium_nugget_4.json +0d97f58bcaa6dfeefab351f0bd9cc60f5003164c data/cosmere/recipes/lerasatium_chromium_nugget_8.json +8b27ca2bf7a57984fb8cc03aacf9c7977d160992 data/cosmere/recipes/lerasatium_duralumin_nugget_12.json +c5f2ffdd52595b7ea5369c0f7b66a6e8dc0e001c data/cosmere/recipes/lerasatium_duralumin_nugget_16.json +8df6455ef88db31e39bc159df31a5d64549e644a data/cosmere/recipes/lerasatium_duralumin_nugget_4.json +c77ed3d091d179fbd1ad2f2785f91a0069ee2038 data/cosmere/recipes/lerasatium_duralumin_nugget_8.json +0e1ecf98407f5d92dc60686bdd190395c0ed279c data/cosmere/recipes/lerasatium_electrum_nugget_12.json +320e9dc5c5ee42b574a8965e5cc2b3472bdfeff9 data/cosmere/recipes/lerasatium_electrum_nugget_16.json +0457f2ecdf8158d23ccfc06eba849796c9931e56 data/cosmere/recipes/lerasatium_electrum_nugget_4.json +a09eb1e9b03338d2be8db05f94003e6bcbb1e5d0 data/cosmere/recipes/lerasatium_electrum_nugget_8.json db4272d9b763609ba79a2ea4d7fbc0adacd269f2 data/cosmere/recipes/lerasatium_ingot.json +73b0e686f9529a88d1ebb968164f2ee94588c2ed data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json +0b823b9df265abe4c33f71020dc224a9e6982921 data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json +4d9aa741afd068cb96cfcc069538c5eeef92dcf5 data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json +0a75eb60b974e652784d139c0c9341bb80f544ec data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json +2643094de710d1418d14ef4a65766924cd755186 data/cosmere/recipes/lerasatium_pewter_nugget_12.json +c0032693688001d06a4604bd0b1c66aeb5de49d2 data/cosmere/recipes/lerasatium_pewter_nugget_16.json +bc65522b602dd7a4883dd28e972e864d644958f8 data/cosmere/recipes/lerasatium_pewter_nugget_4.json +f84e1d7ca8afd4c16540a0417e1aa1ace18edfc9 data/cosmere/recipes/lerasatium_pewter_nugget_8.json +44e3434697d7bd4583470bede1cc531f0c9cb8fe data/cosmere/recipes/lerasatium_steel_nugget_12.json +89f8f79e61df612606afbc064a98e449480287fe data/cosmere/recipes/lerasatium_steel_nugget_16.json +384b2138eaf5d5ae207f053be07fa4b64d0d1976 data/cosmere/recipes/lerasatium_steel_nugget_4.json +678b61ef6d6daa7951fdd328a072e51b1eaea42d data/cosmere/recipes/lerasatium_steel_nugget_8.json +1dcfbe4c58d8aacef4ecd0a648567da9d3bbd737 data/cosmere/recipes/lerasatium_tin_nugget_12.json +3d5655f9aba1fd695ae2433b89cb864420612f9c data/cosmere/recipes/lerasatium_tin_nugget_16.json +45d895b9e09277631c8f99a37588a48ee91568cf data/cosmere/recipes/lerasatium_tin_nugget_4.json +bf3e78ad38b528daf6de9131d651aa6cf0194949 data/cosmere/recipes/lerasatium_tin_nugget_8.json +70c4228c85414510a689332d23e3030ef22971a4 data/cosmere/recipes/lerasatium_zinc_nugget_12.json +426c53f8feee0d6c01a6eb40630868d43942216c data/cosmere/recipes/lerasatium_zinc_nugget_16.json +9591d7b2af788923ea8c96bf27521a6f2f27a959 data/cosmere/recipes/lerasatium_zinc_nugget_4.json +f318999d1574c1b5612e3f9aa67b8ac9d77ab009 data/cosmere/recipes/lerasatium_zinc_nugget_8.json +e7825d943cc79abdad5da49e408d2ac1aa0d84d8 data/cosmere/recipes/lerasium_aluminum_nugget_12.json +4c04545ae6452cf92930416e39f423b5f9b488e2 data/cosmere/recipes/lerasium_aluminum_nugget_16.json +26db51fbdee49ba05ed0b6c541860ec06b64599c data/cosmere/recipes/lerasium_aluminum_nugget_4.json +5c0539a77eceb9bcaa4d135abd0b6593750400ac data/cosmere/recipes/lerasium_aluminum_nugget_8.json +66ba7574f67b3beabd5fe5a70251e9908e4a2056 data/cosmere/recipes/lerasium_bendalloy_nugget_12.json +e0dcbfab3a7e64ccae48e079449a1df7a90b3624 data/cosmere/recipes/lerasium_bendalloy_nugget_16.json +fc3331f100e7a490e81a63f4398f0b7803eb0ec3 data/cosmere/recipes/lerasium_bendalloy_nugget_4.json +6fd115f9736b8e75bc0db9ffe6b5d836c8cb5997 data/cosmere/recipes/lerasium_bendalloy_nugget_8.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json +6d62dbd3b68bb313828622adc7ae642a30d45265 data/cosmere/recipes/lerasium_brass_nugget_12.json +37fbdd6732e1cab261e7b51c6c238e4c4441f880 data/cosmere/recipes/lerasium_brass_nugget_16.json +39be1e82fca0ea50c9b37d5732792325efbe0672 data/cosmere/recipes/lerasium_brass_nugget_4.json +68b893f5132e866643bd670991097bd03c61041e data/cosmere/recipes/lerasium_brass_nugget_8.json +caf8fa9353207510ba24f1086ff9da040286ef51 data/cosmere/recipes/lerasium_bronze_nugget_12.json +4d89c6d11c1132a93b203df13048d5eaf4ba94d7 data/cosmere/recipes/lerasium_bronze_nugget_16.json +8d8760d870278eaa05014edae6afdda26dff2f3c data/cosmere/recipes/lerasium_bronze_nugget_4.json +e5e2387ea55b890bce837ea623bbdd3d4f379490 data/cosmere/recipes/lerasium_bronze_nugget_8.json +33256e7986dd405a5a29a36d79500e4ad58c6c07 data/cosmere/recipes/lerasium_cadmium_nugget_12.json +7de91a035c88ca3bdd4a2a3e92573c8f819ce7bb data/cosmere/recipes/lerasium_cadmium_nugget_16.json +22143db60c6add3219f5d7e790ef1085f8dceb02 data/cosmere/recipes/lerasium_cadmium_nugget_4.json +a226377075c4e74de04f9a84b9fd1a562e011bd9 data/cosmere/recipes/lerasium_cadmium_nugget_8.json +1b6ee31b250e4ededf084dfa074501bc851878a1 data/cosmere/recipes/lerasium_chromium_nugget_12.json +fdc106708dc75ff59baae61dfa6376e5665bcd24 data/cosmere/recipes/lerasium_chromium_nugget_16.json +3e03943639f8be5c35f1ec3ed364f0dfc7522556 data/cosmere/recipes/lerasium_chromium_nugget_4.json +32d560e2852cf204bf2955f8878eb7847ab0115a data/cosmere/recipes/lerasium_chromium_nugget_8.json +4b23bc2392922fc53819d9b1678eff4b5e5f3612 data/cosmere/recipes/lerasium_duralumin_nugget_12.json +fb9d52a4f17efaaee4cfecfb01de296c15a322f6 data/cosmere/recipes/lerasium_duralumin_nugget_16.json +71d7a644f9a03266f55852712be7d4cc86d3d137 data/cosmere/recipes/lerasium_duralumin_nugget_4.json +5c9b55469817fc47092174de9b44b0f70fea6b11 data/cosmere/recipes/lerasium_duralumin_nugget_8.json +3d12bc57bb08e37f4011163f97ffbb72b3d11073 data/cosmere/recipes/lerasium_electrum_nugget_12.json +07029a565fb7942b341db98a32e33c0edcfa5e02 data/cosmere/recipes/lerasium_electrum_nugget_16.json +f5ff6ee820f3811ae0558b12a80d2d746f490e98 data/cosmere/recipes/lerasium_electrum_nugget_4.json +aab12611a4cf8f90984673f7efad9cd1a78399fe data/cosmere/recipes/lerasium_electrum_nugget_8.json a4f7ae18f7da78c725539e289cbd2c9d8e6b6981 data/cosmere/recipes/lerasium_ingot.json +98223b9fffd353354ebd2adac9aa45ec158112f2 data/cosmere/recipes/lerasium_nicrosil_nugget_12.json +2c1fd6ab90119c3ea68f023b9e4fcc01cb1a9bf1 data/cosmere/recipes/lerasium_nicrosil_nugget_16.json +05fa1d3a1556c594d732b9cbf22fe3772b7a52d2 data/cosmere/recipes/lerasium_nicrosil_nugget_4.json +7dba3706b32b03b80f31cf31d83674eb7f0c4f7f data/cosmere/recipes/lerasium_nicrosil_nugget_8.json +1e0cb74c366f4c4ce7cbb89c94e84a2bc6efd100 data/cosmere/recipes/lerasium_pewter_nugget_12.json +36ba29db3b893255c7571bfd3c5b8a9f56640180 data/cosmere/recipes/lerasium_pewter_nugget_16.json +0e3d8a8d6e214c465be82bf6689edfecdf620274 data/cosmere/recipes/lerasium_pewter_nugget_4.json +e4b3d25ef2d933a92d4f64e42f1bbe1ec6347818 data/cosmere/recipes/lerasium_pewter_nugget_8.json +fa107cf5934a968120de812fe4d4a90ad03203c6 data/cosmere/recipes/lerasium_steel_nugget_12.json +d836ffe0e8e7651a16fdc1617526685d2e4ad6ae data/cosmere/recipes/lerasium_steel_nugget_16.json +3c7fd98941f13d1bb0f0e0162739e8b6f408e7b3 data/cosmere/recipes/lerasium_steel_nugget_4.json +4e9afaee48bb7fe60bda8607ad18e5eda64de8c4 data/cosmere/recipes/lerasium_steel_nugget_8.json +cd8cddf193f3f3a9db917b6a413a70941ec93ba0 data/cosmere/recipes/lerasium_tin_nugget_12.json +25072fe08ddf10329d6b366d4d0201b2570c746d data/cosmere/recipes/lerasium_tin_nugget_16.json +7db24ccaaa88612fb3f56e072e974b2b796a0936 data/cosmere/recipes/lerasium_tin_nugget_4.json +569aa78baceb0e56717f604d127f34a0a0d78d03 data/cosmere/recipes/lerasium_tin_nugget_8.json +3f70344cabafd2db930d35bc761dec81b31a7d0b data/cosmere/recipes/lerasium_zinc_nugget_12.json +30d00b966187841be22e8c9efa8da05d8cb5e702 data/cosmere/recipes/lerasium_zinc_nugget_16.json +e634708156d4665ca7d824e747c99522c0fb1c2c data/cosmere/recipes/lerasium_zinc_nugget_4.json +bcbc6f435e544126f6cd8aa8048f4b90f268cfec data/cosmere/recipes/lerasium_zinc_nugget_8.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json new file mode 100644 index 000000000..896327948 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_aluminum_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_aluminum_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json new file mode 100644 index 000000000..6d7fd1225 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_aluminum_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_aluminum_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json new file mode 100644 index 000000000..e0194c7f6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_aluminum_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_aluminum_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json new file mode 100644 index 000000000..246adb4a1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_aluminum_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_aluminum_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json new file mode 100644 index 000000000..af1c46e19 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bendalloy_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bendalloy_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json new file mode 100644 index 000000000..e84d80f42 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bendalloy_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bendalloy_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json new file mode 100644 index 000000000..b60720f24 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bendalloy_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bendalloy_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json new file mode 100644 index 000000000..4417491e0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bendalloy_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bendalloy_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json new file mode 100644 index 000000000..44d65c15a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_brass_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_brass_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json new file mode 100644 index 000000000..0b6bdf9a3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_brass_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_brass_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json new file mode 100644 index 000000000..7043da6d2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_brass_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_brass_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json new file mode 100644 index 000000000..4488b722f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_brass_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_brass_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json new file mode 100644 index 000000000..1df919532 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bronze_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bronze_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json new file mode 100644 index 000000000..e495f475a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bronze_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bronze_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json new file mode 100644 index 000000000..98ea3de71 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bronze_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bronze_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json new file mode 100644 index 000000000..053c4aae2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_bronze_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_bronze_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json new file mode 100644 index 000000000..db4388a0d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_cadmium_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_cadmium_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json new file mode 100644 index 000000000..23435a037 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_cadmium_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_cadmium_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json new file mode 100644 index 000000000..ce5f6257c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_cadmium_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_cadmium_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json new file mode 100644 index 000000000..cc9fda27c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_cadmium_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_cadmium_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json new file mode 100644 index 000000000..219a7366f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_chromium_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_chromium_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json new file mode 100644 index 000000000..a31bc6aa8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_chromium_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_chromium_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json new file mode 100644 index 000000000..01bc21c07 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_chromium_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_chromium_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json new file mode 100644 index 000000000..f1b1ea650 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_chromium_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_chromium_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json new file mode 100644 index 000000000..46fea4000 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_duralumin_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_duralumin_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json new file mode 100644 index 000000000..df1c70abf --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_duralumin_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_duralumin_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json new file mode 100644 index 000000000..ed53f54a1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_duralumin_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_duralumin_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json new file mode 100644 index 000000000..c9971000e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_duralumin_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_duralumin_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json new file mode 100644 index 000000000..71261a8d6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_electrum_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_electrum_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json new file mode 100644 index 000000000..025fdf135 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_electrum_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_electrum_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json new file mode 100644 index 000000000..af8d11f0d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_electrum_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_electrum_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json new file mode 100644 index 000000000..884443522 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_electrum_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_electrum_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json new file mode 100644 index 000000000..94929967f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_nicrosil_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_nicrosil_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json new file mode 100644 index 000000000..ea05279e8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_nicrosil_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_nicrosil_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json new file mode 100644 index 000000000..cdceb499c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_nicrosil_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_nicrosil_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json new file mode 100644 index 000000000..caa912f80 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_nicrosil_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_nicrosil_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json new file mode 100644 index 000000000..1fabac60e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_pewter_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_pewter_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json new file mode 100644 index 000000000..9bb2e92ca --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_pewter_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_pewter_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json new file mode 100644 index 000000000..3d848a235 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_pewter_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_pewter_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json new file mode 100644 index 000000000..d80ef669d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_pewter_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_pewter_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json new file mode 100644 index 000000000..c83ed4f11 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_steel_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_steel_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json new file mode 100644 index 000000000..43c3a487c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_steel_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_steel_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json new file mode 100644 index 000000000..6e185d891 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_steel_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_steel_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json new file mode 100644 index 000000000..fd4bbaf29 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_steel_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_steel_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json new file mode 100644 index 000000000..5886dd17f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_tin_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_tin_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json new file mode 100644 index 000000000..c60344467 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_tin_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_tin_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json new file mode 100644 index 000000000..bdf3e3703 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_tin_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_tin_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json new file mode 100644 index 000000000..b831ec4e7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_tin_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_tin_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json new file mode 100644 index 000000000..7b9babb23 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_zinc_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_zinc_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json new file mode 100644 index 000000000..0ca03745d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_zinc_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_zinc_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json new file mode 100644 index 000000000..a1fda3a16 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_zinc_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_zinc_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json new file mode 100644 index 000000000..2cae54e96 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_zinc_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_zinc_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json new file mode 100644 index 000000000..eb6316fa2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_aluminum_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_aluminum_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json new file mode 100644 index 000000000..b79cb86cc --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_aluminum_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_aluminum_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json new file mode 100644 index 000000000..93d568942 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_aluminum_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_aluminum_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json new file mode 100644 index 000000000..700a865c7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:aluminum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_aluminum_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_aluminum_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json new file mode 100644 index 000000000..65a8a8ee1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bendalloy_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bendalloy_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json new file mode 100644 index 000000000..7864c26ff --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bendalloy_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bendalloy_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json new file mode 100644 index 000000000..d65d89b03 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bendalloy_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bendalloy_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json new file mode 100644 index 000000000..f439550bc --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bendalloy_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bendalloy_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bendalloy_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json new file mode 100644 index 000000000..8dce931b7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_brass_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_brass_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json new file mode 100644 index 000000000..73980681b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_brass_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_brass_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json new file mode 100644 index 000000000..6f606bcea --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_brass_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_brass_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json new file mode 100644 index 000000000..ee6afc108 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:brass_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_brass_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_brass_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json new file mode 100644 index 000000000..cc9f7c51f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bronze_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bronze_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json new file mode 100644 index 000000000..6293e6b9e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bronze_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bronze_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json new file mode 100644 index 000000000..422595a33 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bronze_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bronze_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json new file mode 100644 index 000000000..1f7795d05 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:bronze_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bronze_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bronze_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json new file mode 100644 index 000000000..219c7f235 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_cadmium_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_cadmium_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json new file mode 100644 index 000000000..aacf6c50c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_cadmium_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_cadmium_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json new file mode 100644 index 000000000..fe77af74e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_cadmium_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_cadmium_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json new file mode 100644 index 000000000..933ce7656 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:cadmium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_cadmium_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_cadmium_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json new file mode 100644 index 000000000..95fc9d842 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_chromium_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_chromium_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json new file mode 100644 index 000000000..422b22ba5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_chromium_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_chromium_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json new file mode 100644 index 000000000..edf3966c1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_chromium_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_chromium_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json new file mode 100644 index 000000000..5699d3d50 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:chromium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_chromium_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_chromium_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json new file mode 100644 index 000000000..be5485b6b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_duralumin_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_duralumin_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json new file mode 100644 index 000000000..255252ac3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_duralumin_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_duralumin_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json new file mode 100644 index 000000000..a9b332f65 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_duralumin_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_duralumin_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json new file mode 100644 index 000000000..addb8ec27 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:duralumin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_duralumin_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_duralumin_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json new file mode 100644 index 000000000..87812012f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_electrum_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_electrum_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json new file mode 100644 index 000000000..e3a7eb462 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_electrum_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_electrum_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json new file mode 100644 index 000000000..8d30b71bf --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_electrum_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_electrum_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json new file mode 100644 index 000000000..93fc72f5e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:electrum_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_electrum_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_electrum_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json new file mode 100644 index 000000000..0f0fdde96 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_nicrosil_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_nicrosil_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json new file mode 100644 index 000000000..a8fab6e59 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_nicrosil_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_nicrosil_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json new file mode 100644 index 000000000..1b82d2a31 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_nicrosil_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_nicrosil_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json new file mode 100644 index 000000000..34dccea27 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:nicrosil_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_nicrosil_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_nicrosil_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json new file mode 100644 index 000000000..ed9b5b597 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_pewter_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_pewter_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json new file mode 100644 index 000000000..74d916a81 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_pewter_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_pewter_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json new file mode 100644 index 000000000..11886b44b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_pewter_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_pewter_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json new file mode 100644 index 000000000..d6d9b7f6e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:pewter_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_pewter_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_pewter_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json new file mode 100644 index 000000000..8d39a66be --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_steel_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_steel_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json new file mode 100644 index 000000000..c450c4fa4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_steel_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_steel_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json new file mode 100644 index 000000000..67a089c01 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_steel_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_steel_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json new file mode 100644 index 000000000..d3098fd24 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:steel_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_steel_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_steel_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json new file mode 100644 index 000000000..5b401e2d2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_tin_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_tin_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json new file mode 100644 index 000000000..bc9069920 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_tin_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_tin_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json new file mode 100644 index 000000000..35e56d14e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_tin_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_tin_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json new file mode 100644 index 000000000..5ededbb8d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:tin_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_tin_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_tin_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json new file mode 100644 index 000000000..369facbe5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_zinc_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_zinc_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json new file mode 100644 index 000000000..b87a78944 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_zinc_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_zinc_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json new file mode 100644 index 000000000..6619c980c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_zinc_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_zinc_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json new file mode 100644 index 000000000..69353f5b9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:zinc_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_zinc_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_zinc_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json new file mode 100644 index 000000000..a6c6e0907 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json new file mode 100644 index 000000000..8a26112d6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json new file mode 100644 index 000000000..81ed60da4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json new file mode 100644 index 000000000..77aa91987 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json new file mode 100644 index 000000000..5913b3979 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json new file mode 100644 index 000000000..d4db426a5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json new file mode 100644 index 000000000..40f702c27 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json new file mode 100644 index 000000000..5eced7152 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json new file mode 100644 index 000000000..f22c76b59 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json new file mode 100644 index 000000000..4d14d474c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json new file mode 100644 index 000000000..98abb763e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json new file mode 100644 index 000000000..dace93bc1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json new file mode 100644 index 000000000..d8881b0da --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json new file mode 100644 index 000000000..d228d318d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json new file mode 100644 index 000000000..8c5750a3b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json new file mode 100644 index 000000000..79e0dfa21 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json new file mode 100644 index 000000000..c153fdbfc --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json new file mode 100644 index 000000000..360f4e308 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json new file mode 100644 index 000000000..2b5bf334a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json new file mode 100644 index 000000000..3defba013 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json new file mode 100644 index 000000000..a6bfdff37 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json new file mode 100644 index 000000000..c8d9b7985 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json new file mode 100644 index 000000000..288de5a37 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json new file mode 100644 index 000000000..2d30d4be1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json new file mode 100644 index 000000000..f9b2c0438 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json new file mode 100644 index 000000000..6c72de913 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json new file mode 100644 index 000000000..a94f699f1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json new file mode 100644 index 000000000..b748cff7f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json new file mode 100644 index 000000000..5202fe8ab --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json new file mode 100644 index 000000000..8cf40e5dd --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json new file mode 100644 index 000000000..0f616cd3d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json new file mode 100644 index 000000000..60a1ff2fb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json new file mode 100644 index 000000000..2409d1775 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json new file mode 100644 index 000000000..96a9221f8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json new file mode 100644 index 000000000..09798fce0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json new file mode 100644 index 000000000..ea7697a64 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json new file mode 100644 index 000000000..20a503e8d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json new file mode 100644 index 000000000..7214db854 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json new file mode 100644 index 000000000..1fcf6f60e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json new file mode 100644 index 000000000..df9a10b92 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json new file mode 100644 index 000000000..8cf0dca1f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json new file mode 100644 index 000000000..aafcef422 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json new file mode 100644 index 000000000..a50a412c6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json new file mode 100644 index 000000000..5712c6df4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json new file mode 100644 index 000000000..434ea9b63 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json new file mode 100644 index 000000000..e099219ad --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json new file mode 100644 index 000000000..70faa2855 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json new file mode 100644 index 000000000..5c1ce6c18 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json new file mode 100644 index 000000000..1cc1029e0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json new file mode 100644 index 000000000..4582e4029 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json new file mode 100644 index 000000000..ed6823a11 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json new file mode 100644 index 000000000..13acdc6a1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json new file mode 100644 index 000000000..afa4dc147 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json new file mode 100644 index 000000000..fde967527 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json new file mode 100644 index 000000000..1e068190f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json new file mode 100644 index 000000000..86ab6ebc1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:aluminum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json new file mode 100644 index 000000000..872d79ccf --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json new file mode 100644 index 000000000..57ca065ec --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json new file mode 100644 index 000000000..ce871b2fa --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json new file mode 100644 index 000000000..0243c4048 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bendalloy_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json new file mode 100644 index 000000000..639b5f447 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json new file mode 100644 index 000000000..808226460 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json new file mode 100644 index 000000000..102c24ca4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json new file mode 100644 index 000000000..cb116c2c2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:brass_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json new file mode 100644 index 000000000..56e4d5ac6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json new file mode 100644 index 000000000..df6d6dd8f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json new file mode 100644 index 000000000..405abefd1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json new file mode 100644 index 000000000..fff3c7fbe --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:bronze_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json new file mode 100644 index 000000000..340ab6039 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json new file mode 100644 index 000000000..4d995ffb5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json new file mode 100644 index 000000000..67f8987d6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json new file mode 100644 index 000000000..57662acce --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:cadmium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json new file mode 100644 index 000000000..e2b701585 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json new file mode 100644 index 000000000..6e1e42653 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json new file mode 100644 index 000000000..03d6c4aa0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json new file mode 100644 index 000000000..e0ebcc065 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:chromium_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json new file mode 100644 index 000000000..818d02c22 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json new file mode 100644 index 000000000..ef1a429ad --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json new file mode 100644 index 000000000..d1eec1a67 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json new file mode 100644 index 000000000..00c7a56cb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:duralumin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json new file mode 100644 index 000000000..86071194a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json new file mode 100644 index 000000000..9e77e45c8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json new file mode 100644 index 000000000..d6c90c6de --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json new file mode 100644 index 000000000..222e082ea --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:electrum_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json new file mode 100644 index 000000000..434750da0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json new file mode 100644 index 000000000..e02e5dbf8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json new file mode 100644 index 000000000..815537068 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json new file mode 100644 index 000000000..37f5518ad --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:nicrosil_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json new file mode 100644 index 000000000..b23c9976b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json new file mode 100644 index 000000000..fb7d493a7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json new file mode 100644 index 000000000..1295cc934 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json new file mode 100644 index 000000000..9105d2926 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:pewter_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json new file mode 100644 index 000000000..ee4956b40 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json new file mode 100644 index 000000000..2aaf63664 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json new file mode 100644 index 000000000..73ce3ad33 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json new file mode 100644 index 000000000..f754f80e9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:steel_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json new file mode 100644 index 000000000..cdc4049cb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json new file mode 100644 index 000000000..2a78635b9 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json new file mode 100644 index 000000000..c830d7f47 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json new file mode 100644 index 000000000..55a45c9f3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:tin_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json new file mode 100644 index 000000000..2ec91392d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json new file mode 100644 index 000000000..1cef72c1b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json new file mode 100644 index 000000000..afd8bede8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json new file mode 100644 index 000000000..fb23b28f3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json @@ -0,0 +1,24 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:zinc_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index c251e038d..ce4478a7b 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-09T09:23:08.505295 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-11-09T13:51:42.95226 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index 61b319ff8..da81b44bb 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 57e9572d4..45e71d963 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-09T09:23:08.531664 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-11-09T13:51:42.984793 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 60547a797..1d8cb6622 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,9 +4,13 @@ package leaf.cosmere; +import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.helpers.RegistryHelper; +import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import leaf.cosmere.recipe.NbtShapedRecipeBuilder; +import leaf.cosmere.recipe.NbtShapelessRecipeBuilder; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.nbt.CompoundTag; @@ -266,6 +270,58 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .unlockedBy("has_item", has(input)); } + protected void godMetalAlloyRecipe(Consumer consumer, ItemLike output, ItemLike inputMetal, ItemLike inputGodMetal) + { + if(!(inputMetal instanceof IHasMetalType metalItem)) return; + if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; + CompoundTag outNbt = new CompoundTag(); + outNbt.putInt("nuggetSize", 4); + int[] metalIds = new int[] { metalItem.getMetalType().getID() }; + outNbt.putIntArray("alloyedMetals", metalIds); + + for(int inSize = 4; inSize <= 16; inSize+=4) + { + CompoundTag inNbt = new CompoundTag(); + inNbt.putInt("nuggetSize", inSize); + + String name = godMetalItem.getMetalType().getName() + "_" + + metalItem.getMetalType().getName() + "_nugget_" + inSize; + + NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) + .define('I', inputMetal) + .definePartial('J', inputGodMetal, inNbt) + .pattern("III") + .pattern("IJI") + .pattern("III") + .unlockedBy("has_item", has(inputMetal)) + .resultNbt(outNbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name)); + } + } + + protected void godMetalNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) + { + if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; + + + for(int inSize = 1; inSize <= 8; inSize*=2) + { + CompoundTag inNbt = new CompoundTag(); + inNbt.putInt("nuggetSize", inSize); + + CompoundTag outNbt = new CompoundTag(); + outNbt.putInt("nuggetSize", inSize*2); + + String name = godMetalItem.getMetalType().getName() + "_nugget_" + inSize; + + NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, inputGodMetal) + .requiresPartial(inputGodMetal, inNbt, 2) + .unlockedBy("has_item", has(inputGodMetal)) + .resultNbt(outNbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name)); + } + } + // For items with size protected ShapelessRecipeBuilder compressRecipe(ItemLike output, ItemLike input) { diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 6f557c043..b5b1ba976 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -61,6 +61,42 @@ protected void addRecipes(Consumer consumer) for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { + // God Metal Alloy Nugget Recipes + if(!metalType.isGodMetal() && metalType.hasAssociatedManifestation()) + { + Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; + for(Metals.MetalType godMetal : godMetals) + { + if(metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) + { + Item item; + switch (godMetal) + { + case IRON: + item = Items.IRON_NUGGET; + break; + case GOLD: + item = Items.GOLD_NUGGET; + break; + default: + item = Items.IRON_NUGGET; + break; + } + godMetalAlloyRecipe(consumer, + ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetal).get(), + item, + ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get()); + } + else + { + godMetalAlloyRecipe(consumer, + ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetal).get(), + ItemsRegistry.METAL_NUGGETS.get(metalType).get(), + ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get()); + } + } + } + //theres no reason for uss to add ways to recipe blocks/ingots that minecraft already has final Metals.MetalType[] blacklistedTypes = {Metals.MetalType.IRON, Metals.MetalType.GOLD,}; if (Arrays.stream(blacklistedTypes).anyMatch(metalType::equals)) @@ -89,8 +125,6 @@ protected void addRecipes(Consumer consumer) decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } - Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; - if (metalType.isAlloy()) { Item outputBlend = ItemsRegistry.METAL_RAW_BLEND.get(metalType).asItem(); diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java new file mode 100644 index 000000000..c51925cf1 --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java @@ -0,0 +1,105 @@ +package leaf.cosmere.recipe; + +import com.google.gson.JsonObject; +import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.ShapedRecipeBuilder; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.PartialNBTIngredient; +import net.minecraftforge.common.crafting.StrictNBTIngredient; + +import javax.annotation.Nullable; +import java.util.function.Consumer; + +public class NbtShapedRecipeBuilder implements RecipeBuilder { + private final ShapedRecipeBuilder base; + private CompoundTag resultNbt; + + private NbtShapedRecipeBuilder(RecipeCategory cat, ItemLike result, int count) { + this.base = ShapedRecipeBuilder.shaped(cat, result, count); + } + + public static NbtShapedRecipeBuilder shaped(RecipeCategory cat, ItemLike result) { + return new NbtShapedRecipeBuilder(cat, result, 1); + } + public static NbtShapedRecipeBuilder shaped(RecipeCategory cat, ItemLike result, int count) { + return new NbtShapedRecipeBuilder(cat, result, count); + } + + public NbtShapedRecipeBuilder resultNbt(CompoundTag nbt) { + this.resultNbt = (nbt == null || nbt.isEmpty()) ? null : nbt.copy(); + return this; + } + + public NbtShapedRecipeBuilder define(char symbol, Ingredient ingredient) { + base.define(symbol, ingredient); + return this; + } + public NbtShapedRecipeBuilder define(char symbol, ItemLike item) { + base.define(symbol, item); + return this; + } + public NbtShapedRecipeBuilder define(char symbol, TagKey tag) { + base.define(symbol, tag); + return this; + } + + public NbtShapedRecipeBuilder defineStrict(char symbol, ItemLike item, CompoundTag nbt) { + ItemStack s = new ItemStack(item); + if (nbt != null && !nbt.isEmpty()) s.setTag(nbt.copy()); + return define(symbol, StrictNBTIngredient.of(s)); + } + + public NbtShapedRecipeBuilder definePartial(char symbol, ItemLike item, CompoundTag subsetNbt) { + return define(symbol, PartialNBTIngredient.of(item, subsetNbt)); + } + + public NbtShapedRecipeBuilder pattern(String row) { base.pattern(row); return this; } + public NbtShapedRecipeBuilder group(@Nullable String group) { base.group(group); return this; } + public NbtShapedRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { base.unlockedBy(name, trigger); return this; } + + @Override public Item getResult() { return base.getResult(); } + + @Override + public void save(Consumer out, ResourceLocation id) { + base.save(fr -> out.accept(wrap(fr, resultNbt)), id); + } + + private static FinishedRecipe wrap(FinishedRecipe inner, @Nullable CompoundTag resultNbt) { + if (resultNbt == null || resultNbt.isEmpty()) return inner; + return new FinishedWithResultNbt(inner, resultNbt.copy()); + } + + private static final class FinishedWithResultNbt implements FinishedRecipe { + private final FinishedRecipe inner; + private final CompoundTag nbt; + + FinishedWithResultNbt(FinishedRecipe inner, CompoundTag nbt) { + this.inner = inner; + this.nbt = nbt; + } + + @Override public void serializeRecipeData(JsonObject json) { + inner.serializeRecipeData(json); + JsonObject result = json.getAsJsonObject("result"); + if (result == null) { + result = new JsonObject(); + json.add("result", result); + } + result.addProperty("nbt", nbt.toString()); + } + + @Override public ResourceLocation getId() { return inner.getId(); } + @Override public net.minecraft.world.item.crafting.RecipeSerializer getType() { return inner.getType(); } + @Override public @Nullable JsonObject serializeAdvancement() { return inner.serializeAdvancement(); } + @Override public @Nullable ResourceLocation getAdvancementId() { return inner.getAdvancementId(); } + } +} diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java new file mode 100644 index 000000000..9ce14ee6d --- /dev/null +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java @@ -0,0 +1,155 @@ +package leaf.cosmere.recipe; + +import com.google.gson.JsonObject; +import net.minecraft.advancements.CriterionTriggerInstance; +import net.minecraft.data.recipes.FinishedRecipe; +import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeCategory; +import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; +import net.minecraftforge.common.crafting.PartialNBTIngredient; +import net.minecraftforge.common.crafting.StrictNBTIngredient; + +import javax.annotation.Nullable; +import java.util.function.Consumer; + +public class NbtShapelessRecipeBuilder implements RecipeBuilder { + private final ShapelessRecipeBuilder base; + private CompoundTag resultNbt; + + private NbtShapelessRecipeBuilder(RecipeCategory cat, ItemLike result, int count) { + this.base = ShapelessRecipeBuilder.shapeless(cat, result, count); + } + + public static NbtShapelessRecipeBuilder shapeless(RecipeCategory cat, ItemLike result) { + return new NbtShapelessRecipeBuilder(cat, result, 1); + } + + public static NbtShapelessRecipeBuilder shapeless(RecipeCategory cat, ItemLike result, int count) { + return new NbtShapelessRecipeBuilder(cat, result, count); + } + + public NbtShapelessRecipeBuilder resultNbt(CompoundTag nbt) { + this.resultNbt = (nbt == null || nbt.isEmpty()) ? null : nbt.copy(); + return this; + } + + public NbtShapelessRecipeBuilder requires(ItemLike item) { + base.requires(item); + return this; + } + + public NbtShapelessRecipeBuilder requires(Ingredient ingredient) { + base.requires(ingredient); + return this; + } + + public NbtShapelessRecipeBuilder requires(Ingredient ingredient, int count) { + base.requires(ingredient, count); + return this; + } + + public NbtShapelessRecipeBuilder requires(TagKey tag) { + base.requires(Ingredient.of(tag)); + return this; + } + + public NbtShapelessRecipeBuilder requires(TagKey tag, int count) { + base.requires(Ingredient.of(tag), count); + return this; + } + + public NbtShapelessRecipeBuilder requiresPartial(ItemLike item, CompoundTag subsetNbt) { + ItemStack s = new ItemStack(item); + if (subsetNbt != null && !subsetNbt.isEmpty()) s.setTag(subsetNbt.copy()); + return requires(PartialNBTIngredient.of(s)); + } + + public NbtShapelessRecipeBuilder requiresStrict(ItemLike item, CompoundTag exactNbt) { + ItemStack s = new ItemStack(item); + if (exactNbt != null && !exactNbt.isEmpty()) s.setTag(exactNbt.copy()); + return requires(StrictNBTIngredient.of(s)); + } + + public NbtShapelessRecipeBuilder requiresPartial(ItemLike item, CompoundTag subsetNbt, int count) { + ItemStack s = new ItemStack(item); + if (subsetNbt != null && !subsetNbt.isEmpty()) s.setTag(subsetNbt.copy()); + return requires(PartialNBTIngredient.of(s), count); + } + + public NbtShapelessRecipeBuilder requiresStrict(ItemLike item, CompoundTag exactNbt, int count) { + ItemStack s = new ItemStack(item); + if (exactNbt != null && !exactNbt.isEmpty()) s.setTag(exactNbt.copy()); + return requires(StrictNBTIngredient.of(s), count); + } + + public NbtShapelessRecipeBuilder requiresPartial(TagKey tag, CompoundTag subsetNbt) { + return requires(wrapForgeNbtIngredient("forge:partial_nbt", Ingredient.of(tag), subsetNbt)); + } + + public NbtShapelessRecipeBuilder requiresStrict(TagKey tag, CompoundTag exactNbt) { + return requires(wrapForgeNbtIngredient("forge:strict_nbt", Ingredient.of(tag), exactNbt)); + } + + public NbtShapelessRecipeBuilder requiresPartial(TagKey tag, CompoundTag subsetNbt, int count) { + return requires(wrapForgeNbtIngredient("forge:partial_nbt", Ingredient.of(tag), subsetNbt), count); + } + + public NbtShapelessRecipeBuilder requiresStrict(TagKey tag, CompoundTag exactNbt, int count) { + return requires(wrapForgeNbtIngredient("forge:strict_nbt", Ingredient.of(tag), exactNbt), count); + } + + public NbtShapelessRecipeBuilder group(@Nullable String group) { base.group(group); return this; } + public NbtShapelessRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { base.unlockedBy(name, trigger); return this; } + + @Override public Item getResult() { return base.getResult(); } + + @Override + public void save(Consumer out, ResourceLocation id) { + base.save(fr -> out.accept(wrap(fr, resultNbt)), id); + } + + private static FinishedRecipe wrap(FinishedRecipe inner, @Nullable CompoundTag resultNbt) { + if (resultNbt == null || resultNbt.isEmpty()) return inner; + return new FinishedWithResultNbt(inner, resultNbt.copy()); + } + + private static Ingredient wrapForgeNbtIngredient(String forgeType, Ingredient base, CompoundTag nbt) { + JsonObject wrapper = new JsonObject(); + wrapper.addProperty("type", forgeType); + wrapper.add("ingredient", base.toJson()); + wrapper.addProperty("nbt", (nbt == null || nbt.isEmpty()) ? "{}" : nbt.toString()); + return Ingredient.fromJson(wrapper); + } + + private static final class FinishedWithResultNbt implements FinishedRecipe { + private final FinishedRecipe inner; + private final CompoundTag nbt; + + FinishedWithResultNbt(FinishedRecipe inner, CompoundTag nbt) { + this.inner = inner; + this.nbt = nbt; + } + + @Override public void serializeRecipeData(JsonObject json) { + inner.serializeRecipeData(json); + JsonObject result = json.getAsJsonObject("result"); + if (result == null) { + result = new JsonObject(); + json.add("result", result); + } + result.addProperty("nbt", nbt.toString()); + } + + @Override public ResourceLocation getId() { return inner.getId(); } + @Override public net.minecraft.world.item.crafting.RecipeSerializer getType() { return inner.getType(); } + @Override public @Nullable JsonObject serializeAdvancement() { return inner.serializeAdvancement(); } + @Override public @Nullable ResourceLocation getAdvancementId() { return inner.getAdvancementId(); } + } +} diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index f28799bde..3da7b71d3 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -5,9 +5,11 @@ package leaf.cosmere.feruchemy.common.eventHandlers; import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.items.MetalNuggetItem; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.feruchemy.common.Feruchemy; import leaf.cosmere.feruchemy.common.effects.store.BrassStoreEffect; @@ -44,10 +46,14 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) ItemStack stack = event.getEntity().getMainHandItem(); if (!stack.isEmpty()) { - if (stack.getItem() instanceof GodMetalAlloyNuggetItem || stack.getItem() instanceof GodMetalNuggetItem) + if (stack.getItem() instanceof MetalNuggetItem metalNuggetItem) { + // Don't alloy for consuming normal metal nuggets + if (!(stack.getItem() instanceof GodMetalAlloyNuggetItem) && !(stack.getItem() instanceof GodMetalNuggetItem)) return; + // Only consume the nugget if it contains Lerasatium + if (metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASATIUM) return; + MiscHelper.consumeNugget(target, stack); - //need to shrink, because metal nugget only shrinks on item use finish from eating, which is not part of entity interact with item stack.shrink(1); } } @@ -63,8 +69,13 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) } final LivingEntity livingEntity = event.getEntity(); - if (event.getItem().getItem() instanceof GodMetalAlloyNuggetItem || event.getItem().getItem() instanceof IGrantsManifestations) + if (event.getItem().getItem() instanceof MetalNuggetItem metalNuggetItem) { + // Don't alloy for consuming normal metal nuggets + if(!(event.getItem().getItem() instanceof GodMetalAlloyNuggetItem) && !(event.getItem().getItem() instanceof GodMetalNuggetItem)) return; + // Only consume the nugget if it contains Lerasatium + if(metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASATIUM) return; + //no need to shrink item count as it's already done as part of nugget use item finish MiscHelper.consumeNugget(livingEntity, event.getItem()); } diff --git a/src/main/java/leaf/cosmere/common/items/AlloyItem.java b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java similarity index 93% rename from src/main/java/leaf/cosmere/common/items/AlloyItem.java rename to src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java index a34d80834..33ea2e840 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java @@ -1,9 +1,7 @@ package leaf.cosmere.common.items; import leaf.cosmere.api.IHasAlloy; -import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.Metals.MetalType; -import leaf.cosmere.common.properties.PropTypes; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -15,9 +13,9 @@ import java.util.ArrayList; import java.util.HashSet; -public class AlloyItem extends MetalItem implements IHasAlloy +public class AlloyNuggetItem extends MetalNuggetItem implements IHasAlloy { - public AlloyItem(MetalType metalType) + public AlloyNuggetItem(MetalType metalType) { super(metalType); } diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index bdfd35f74..601d0371a 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -2,9 +2,7 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; @@ -15,7 +13,6 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.RangedAttribute; -import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.*; import net.minecraft.world.level.Level; @@ -25,7 +22,7 @@ import javax.annotation.Nonnull; import java.util.*; -public class GodMetalAlloyNuggetItem extends AlloyItem implements IHasSize, IGrantsManifestations +public class GodMetalAlloyNuggetItem extends AlloyNuggetItem implements IHasSize, IGrantsManifestations { public static int MIN_SIZE = 1; public static int MAX_SIZE = 16; @@ -53,50 +50,6 @@ public void addFilled(CreativeModeTab.Output output, HashSet a output.accept(itemStack); } - @Nonnull - @Override - public UseAnim getUseAnimation(ItemStack stack) - { - return UseAnim.EAT; - } - - - @Override - public int getUseDuration(ItemStack stack) - { - //be annoying enough that people prefer metal vials - return 16; - } - - @Nonnull - @Override - public InteractionResultHolder use(Level world, Player player, @Nonnull InteractionHand hand) - { - ItemStack stack = player.getItemInHand(hand); - if (player.canEat(true)) - { - player.startUsingItem(hand); - return InteractionResultHolder.consume(stack); - } - return InteractionResultHolder.pass(stack); - } - - @Override - public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) - { - if (pLevel.isClientSide) - { - return itemstack; - } - - if (pLivingEntity instanceof Player player && !player.isCreative()) - { - itemstack.shrink(1); - } - - return itemstack; - } - @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 72a9907a6..33fb50150 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -4,6 +4,7 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.ChatFormatting; +import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; @@ -44,6 +45,7 @@ public int getMinSize() return MIN_SIZE; } + // God Metals shouldn't hurt @Override public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) { @@ -60,6 +62,27 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity return itemstack; } + @Override + public boolean hasCraftingRemainingItem(ItemStack stack) { + return true; + } + + @Override + public ItemStack getCraftingRemainingItem(ItemStack stack) { + ItemStack out = stack.copy(); + CompoundTag tag = out.getOrCreateTag(); + + int size = tag.contains("nuggetSize") ? tag.getInt("nuggetSize") : 4; + int newSize = size - 4; + tag.putInt("nuggetSize", newSize); + + if (newSize < 4) { + return ItemStack.EMPTY; + } + + return out; + } + @Override public boolean isFoil(ItemStack itemStack) { @@ -67,6 +90,7 @@ public boolean isFoil(ItemStack itemStack) return super.isFoil(itemStack); } + @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) From 14d16eab50e0973b15404aa1d45f8b69cf591d1d Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 16:51:54 -0500 Subject: [PATCH 1054/1090] new recipes --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 466 ++++++++++-------- .../lerasatium_aluminum_nugget_12.json | 2 +- .../lerasatium_aluminum_nugget_16.json | 2 +- .../lerasatium_aluminum_nugget_4.json | 2 +- .../lerasatium_aluminum_nugget_8.json | 2 +- .../lerasatium_bendalloy_nugget_12.json | 2 +- .../lerasatium_bendalloy_nugget_16.json | 2 +- .../lerasatium_bendalloy_nugget_4.json | 2 +- .../lerasatium_bendalloy_nugget_8.json | 2 +- .../lerasatium_brass_nugget_12.json | 2 +- .../lerasatium_brass_nugget_16.json | 2 +- .../lerasatium_brass_nugget_4.json | 2 +- .../lerasatium_brass_nugget_8.json | 2 +- .../lerasatium_bronze_nugget_12.json | 2 +- .../lerasatium_bronze_nugget_16.json | 2 +- .../lerasatium_bronze_nugget_4.json | 2 +- .../lerasatium_bronze_nugget_8.json | 2 +- .../lerasatium_cadmium_nugget_12.json | 2 +- .../lerasatium_cadmium_nugget_16.json | 2 +- .../lerasatium_cadmium_nugget_4.json | 2 +- .../lerasatium_cadmium_nugget_8.json | 2 +- .../lerasatium_chromium_nugget_12.json | 2 +- .../lerasatium_chromium_nugget_16.json | 2 +- .../lerasatium_chromium_nugget_4.json | 2 +- .../lerasatium_chromium_nugget_8.json | 2 +- .../lerasatium_copper_nugget_12.json | 35 ++ .../lerasatium_copper_nugget_16.json | 35 ++ .../lerasatium_copper_nugget_4.json | 35 ++ .../lerasatium_copper_nugget_8.json | 35 ++ .../lerasatium_duralumin_nugget_12.json | 2 +- .../lerasatium_duralumin_nugget_16.json | 2 +- .../lerasatium_duralumin_nugget_4.json | 2 +- .../lerasatium_duralumin_nugget_8.json | 2 +- .../lerasatium_electrum_nugget_12.json | 2 +- .../lerasatium_electrum_nugget_16.json | 2 +- .../lerasatium_electrum_nugget_4.json | 2 +- .../lerasatium_electrum_nugget_8.json | 2 +- .../lerasatium_gold_nugget_12.json | 35 ++ .../lerasatium_gold_nugget_16.json | 35 ++ .../decorations/lerasatium_gold_nugget_4.json | 35 ++ .../decorations/lerasatium_gold_nugget_8.json | 35 ++ .../lerasatium_iron_nugget_12.json | 35 ++ .../lerasatium_iron_nugget_16.json | 35 ++ .../decorations/lerasatium_iron_nugget_4.json | 35 ++ .../decorations/lerasatium_iron_nugget_8.json | 35 ++ .../lerasatium_nicrosil_nugget_12.json | 2 +- .../lerasatium_nicrosil_nugget_16.json | 2 +- .../lerasatium_nicrosil_nugget_4.json | 2 +- .../lerasatium_nicrosil_nugget_8.json | 2 +- .../lerasatium_pewter_nugget_12.json | 2 +- .../lerasatium_pewter_nugget_16.json | 2 +- .../lerasatium_pewter_nugget_4.json | 2 +- .../lerasatium_pewter_nugget_8.json | 2 +- .../lerasatium_steel_nugget_12.json | 2 +- .../lerasatium_steel_nugget_16.json | 2 +- .../lerasatium_steel_nugget_4.json | 2 +- .../lerasatium_steel_nugget_8.json | 2 +- .../decorations/lerasatium_tin_nugget_12.json | 2 +- .../decorations/lerasatium_tin_nugget_16.json | 2 +- .../decorations/lerasatium_tin_nugget_4.json | 2 +- .../decorations/lerasatium_tin_nugget_8.json | 2 +- .../lerasatium_zinc_nugget_12.json | 2 +- .../lerasatium_zinc_nugget_16.json | 2 +- .../decorations/lerasatium_zinc_nugget_4.json | 2 +- .../decorations/lerasatium_zinc_nugget_8.json | 2 +- .../lerasium_aluminum_nugget_12.json | 2 +- .../lerasium_aluminum_nugget_16.json | 2 +- .../lerasium_aluminum_nugget_4.json | 2 +- .../lerasium_aluminum_nugget_8.json | 2 +- .../lerasium_bendalloy_nugget_12.json | 2 +- .../lerasium_bendalloy_nugget_16.json | 2 +- .../lerasium_bendalloy_nugget_4.json | 2 +- .../lerasium_bendalloy_nugget_8.json | 2 +- .../decorations/lerasium_brass_nugget_12.json | 2 +- .../decorations/lerasium_brass_nugget_16.json | 2 +- .../decorations/lerasium_brass_nugget_4.json | 2 +- .../decorations/lerasium_brass_nugget_8.json | 2 +- .../lerasium_bronze_nugget_12.json | 2 +- .../lerasium_bronze_nugget_16.json | 2 +- .../decorations/lerasium_bronze_nugget_4.json | 2 +- .../decorations/lerasium_bronze_nugget_8.json | 2 +- .../lerasium_cadmium_nugget_12.json | 2 +- .../lerasium_cadmium_nugget_16.json | 2 +- .../lerasium_cadmium_nugget_4.json | 2 +- .../lerasium_cadmium_nugget_8.json | 2 +- .../lerasium_chromium_nugget_12.json | 2 +- .../lerasium_chromium_nugget_16.json | 2 +- .../lerasium_chromium_nugget_4.json | 2 +- .../lerasium_chromium_nugget_8.json | 2 +- .../lerasium_copper_nugget_12.json | 35 ++ .../lerasium_copper_nugget_16.json | 35 ++ .../decorations/lerasium_copper_nugget_4.json | 35 ++ .../decorations/lerasium_copper_nugget_8.json | 35 ++ .../lerasium_duralumin_nugget_12.json | 2 +- .../lerasium_duralumin_nugget_16.json | 2 +- .../lerasium_duralumin_nugget_4.json | 2 +- .../lerasium_duralumin_nugget_8.json | 2 +- .../lerasium_electrum_nugget_12.json | 2 +- .../lerasium_electrum_nugget_16.json | 2 +- .../lerasium_electrum_nugget_4.json | 2 +- .../lerasium_electrum_nugget_8.json | 2 +- .../decorations/lerasium_gold_nugget_12.json | 35 ++ .../decorations/lerasium_gold_nugget_16.json | 35 ++ .../decorations/lerasium_gold_nugget_4.json | 35 ++ .../decorations/lerasium_gold_nugget_8.json | 35 ++ .../decorations/lerasium_iron_nugget_12.json | 35 ++ .../decorations/lerasium_iron_nugget_16.json | 35 ++ .../decorations/lerasium_iron_nugget_4.json | 35 ++ .../decorations/lerasium_iron_nugget_8.json | 35 ++ .../lerasium_nicrosil_nugget_12.json | 2 +- .../lerasium_nicrosil_nugget_16.json | 2 +- .../lerasium_nicrosil_nugget_4.json | 2 +- .../lerasium_nicrosil_nugget_8.json | 2 +- .../lerasium_pewter_nugget_12.json | 2 +- .../lerasium_pewter_nugget_16.json | 2 +- .../decorations/lerasium_pewter_nugget_4.json | 2 +- .../decorations/lerasium_pewter_nugget_8.json | 2 +- .../decorations/lerasium_steel_nugget_12.json | 2 +- .../decorations/lerasium_steel_nugget_16.json | 2 +- .../decorations/lerasium_steel_nugget_4.json | 2 +- .../decorations/lerasium_steel_nugget_8.json | 2 +- .../decorations/lerasium_tin_nugget_12.json | 2 +- .../decorations/lerasium_tin_nugget_16.json | 2 +- .../decorations/lerasium_tin_nugget_4.json | 2 +- .../decorations/lerasium_tin_nugget_8.json | 2 +- .../decorations/lerasium_zinc_nugget_12.json | 2 +- .../decorations/lerasium_zinc_nugget_16.json | 2 +- .../decorations/lerasium_zinc_nugget_4.json | 2 +- .../decorations/lerasium_zinc_nugget_8.json | 2 +- .../lerasatium_aluminum_nugget_12.json | 3 +- .../lerasatium_aluminum_nugget_16.json | 3 +- .../recipes/lerasatium_aluminum_nugget_4.json | 3 +- .../recipes/lerasatium_aluminum_nugget_8.json | 3 +- .../lerasatium_bendalloy_nugget_12.json | 3 +- .../lerasatium_bendalloy_nugget_16.json | 3 +- .../lerasatium_bendalloy_nugget_4.json | 3 +- .../lerasatium_bendalloy_nugget_8.json | 3 +- .../recipes/lerasatium_brass_nugget_12.json | 3 +- .../recipes/lerasatium_brass_nugget_16.json | 3 +- .../recipes/lerasatium_brass_nugget_4.json | 3 +- .../recipes/lerasatium_brass_nugget_8.json | 3 +- .../recipes/lerasatium_bronze_nugget_12.json | 3 +- .../recipes/lerasatium_bronze_nugget_16.json | 3 +- .../recipes/lerasatium_bronze_nugget_4.json | 3 +- .../recipes/lerasatium_bronze_nugget_8.json | 3 +- .../recipes/lerasatium_cadmium_nugget_12.json | 3 +- .../recipes/lerasatium_cadmium_nugget_16.json | 3 +- .../recipes/lerasatium_cadmium_nugget_4.json | 3 +- .../recipes/lerasatium_cadmium_nugget_8.json | 3 +- .../lerasatium_chromium_nugget_12.json | 3 +- .../lerasatium_chromium_nugget_16.json | 3 +- .../recipes/lerasatium_chromium_nugget_4.json | 3 +- .../recipes/lerasatium_chromium_nugget_8.json | 3 +- .../recipes/lerasatium_copper_nugget_12.json | 25 + .../recipes/lerasatium_copper_nugget_16.json | 25 + .../recipes/lerasatium_copper_nugget_4.json | 25 + .../recipes/lerasatium_copper_nugget_8.json | 25 + .../lerasatium_duralumin_nugget_12.json | 3 +- .../lerasatium_duralumin_nugget_16.json | 3 +- .../lerasatium_duralumin_nugget_4.json | 3 +- .../lerasatium_duralumin_nugget_8.json | 3 +- .../lerasatium_electrum_nugget_12.json | 3 +- .../lerasatium_electrum_nugget_16.json | 3 +- .../recipes/lerasatium_electrum_nugget_4.json | 3 +- .../recipes/lerasatium_electrum_nugget_8.json | 3 +- .../recipes/lerasatium_gold_nugget_12.json | 25 + .../recipes/lerasatium_gold_nugget_16.json | 25 + .../recipes/lerasatium_gold_nugget_4.json | 25 + .../recipes/lerasatium_gold_nugget_8.json | 25 + .../recipes/lerasatium_iron_nugget_12.json | 25 + .../recipes/lerasatium_iron_nugget_16.json | 25 + .../recipes/lerasatium_iron_nugget_4.json | 25 + .../recipes/lerasatium_iron_nugget_8.json | 25 + .../lerasatium_nicrosil_nugget_12.json | 3 +- .../lerasatium_nicrosil_nugget_16.json | 3 +- .../recipes/lerasatium_nicrosil_nugget_4.json | 3 +- .../recipes/lerasatium_nicrosil_nugget_8.json | 3 +- .../recipes/lerasatium_pewter_nugget_12.json | 3 +- .../recipes/lerasatium_pewter_nugget_16.json | 3 +- .../recipes/lerasatium_pewter_nugget_4.json | 3 +- .../recipes/lerasatium_pewter_nugget_8.json | 3 +- .../recipes/lerasatium_steel_nugget_12.json | 3 +- .../recipes/lerasatium_steel_nugget_16.json | 3 +- .../recipes/lerasatium_steel_nugget_4.json | 3 +- .../recipes/lerasatium_steel_nugget_8.json | 3 +- .../recipes/lerasatium_tin_nugget_12.json | 3 +- .../recipes/lerasatium_tin_nugget_16.json | 3 +- .../recipes/lerasatium_tin_nugget_4.json | 3 +- .../recipes/lerasatium_tin_nugget_8.json | 3 +- .../recipes/lerasatium_zinc_nugget_12.json | 3 +- .../recipes/lerasatium_zinc_nugget_16.json | 3 +- .../recipes/lerasatium_zinc_nugget_4.json | 3 +- .../recipes/lerasatium_zinc_nugget_8.json | 3 +- .../recipes/lerasium_aluminum_nugget_12.json | 3 +- .../recipes/lerasium_aluminum_nugget_16.json | 3 +- .../recipes/lerasium_aluminum_nugget_4.json | 3 +- .../recipes/lerasium_aluminum_nugget_8.json | 3 +- .../recipes/lerasium_bendalloy_nugget_12.json | 3 +- .../recipes/lerasium_bendalloy_nugget_16.json | 3 +- .../recipes/lerasium_bendalloy_nugget_4.json | 3 +- .../recipes/lerasium_bendalloy_nugget_8.json | 3 +- .../recipes/lerasium_brass_nugget_12.json | 3 +- .../recipes/lerasium_brass_nugget_16.json | 3 +- .../recipes/lerasium_brass_nugget_4.json | 3 +- .../recipes/lerasium_brass_nugget_8.json | 3 +- .../recipes/lerasium_bronze_nugget_12.json | 3 +- .../recipes/lerasium_bronze_nugget_16.json | 3 +- .../recipes/lerasium_bronze_nugget_4.json | 3 +- .../recipes/lerasium_bronze_nugget_8.json | 3 +- .../recipes/lerasium_cadmium_nugget_12.json | 3 +- .../recipes/lerasium_cadmium_nugget_16.json | 3 +- .../recipes/lerasium_cadmium_nugget_4.json | 3 +- .../recipes/lerasium_cadmium_nugget_8.json | 3 +- .../recipes/lerasium_chromium_nugget_12.json | 3 +- .../recipes/lerasium_chromium_nugget_16.json | 3 +- .../recipes/lerasium_chromium_nugget_4.json | 3 +- .../recipes/lerasium_chromium_nugget_8.json | 3 +- .../recipes/lerasium_copper_nugget_12.json | 25 + .../recipes/lerasium_copper_nugget_16.json | 25 + .../recipes/lerasium_copper_nugget_4.json | 25 + .../recipes/lerasium_copper_nugget_8.json | 25 + .../recipes/lerasium_duralumin_nugget_12.json | 3 +- .../recipes/lerasium_duralumin_nugget_16.json | 3 +- .../recipes/lerasium_duralumin_nugget_4.json | 3 +- .../recipes/lerasium_duralumin_nugget_8.json | 3 +- .../recipes/lerasium_electrum_nugget_12.json | 3 +- .../recipes/lerasium_electrum_nugget_16.json | 3 +- .../recipes/lerasium_electrum_nugget_4.json | 3 +- .../recipes/lerasium_electrum_nugget_8.json | 3 +- .../recipes/lerasium_gold_nugget_12.json | 25 + .../recipes/lerasium_gold_nugget_16.json | 25 + .../recipes/lerasium_gold_nugget_4.json | 25 + .../recipes/lerasium_gold_nugget_8.json | 25 + .../recipes/lerasium_iron_nugget_12.json | 25 + .../recipes/lerasium_iron_nugget_16.json | 25 + .../recipes/lerasium_iron_nugget_4.json | 25 + .../recipes/lerasium_iron_nugget_8.json | 25 + .../recipes/lerasium_nicrosil_nugget_12.json | 3 +- .../recipes/lerasium_nicrosil_nugget_16.json | 3 +- .../recipes/lerasium_nicrosil_nugget_4.json | 3 +- .../recipes/lerasium_nicrosil_nugget_8.json | 3 +- .../recipes/lerasium_pewter_nugget_12.json | 3 +- .../recipes/lerasium_pewter_nugget_16.json | 3 +- .../recipes/lerasium_pewter_nugget_4.json | 3 +- .../recipes/lerasium_pewter_nugget_8.json | 3 +- .../recipes/lerasium_steel_nugget_12.json | 3 +- .../recipes/lerasium_steel_nugget_16.json | 3 +- .../recipes/lerasium_steel_nugget_4.json | 3 +- .../recipes/lerasium_steel_nugget_8.json | 3 +- .../recipes/lerasium_tin_nugget_12.json | 3 +- .../recipes/lerasium_tin_nugget_16.json | 3 +- .../recipes/lerasium_tin_nugget_4.json | 3 +- .../recipes/lerasium_tin_nugget_8.json | 3 +- .../recipes/lerasium_zinc_nugget_12.json | 3 +- .../recipes/lerasium_zinc_nugget_16.json | 3 +- .../recipes/lerasium_zinc_nugget_4.json | 3 +- .../recipes/lerasium_zinc_nugget_8.json | 3 +- .../60c035799f578be828205f75035ce4e4976d0466 | 4 +- .../curios/entities/feruchemists.json | 4 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 +- .../curios/entities/hemalurgists.json | 4 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 27 +- .../main/java/leaf/cosmere/RecipeGen.java | 5 +- .../recipe/NbtShapedRecipeBuilder.java | 6 - .../recipe/NbtShapelessRecipeBuilder.java | 56 +-- 265 files changed, 2042 insertions(+), 494 deletions(-) create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 7575b70ac..7a90004c1 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-09T13:51:42.833208 Recipes +// 1.20.1 2025-11-09T16:50:57.9698733 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -19,112 +19,136 @@ b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decor e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json -a9c56ed64117498efd46e7177c05472f7111f29d data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json -bf02542948e06e6faf922e2269e515f641c6af9e data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json -ff7320a4c202949909a88af933e167f2b047ed34 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json -e0e9d4ae46cda81434daed5d1b47fc07a1a1b7ff data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json -2437406ccbe9eced1e9aca1ae5566f19d36fc7c2 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json -b27a73b344fddb2aef41385a62ffe7b84e258002 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json -070cc87dde61e8c23bfd78ff09ffae45210d0d8d data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json -78ae54d6c7b0ed9c3af7f6756499deffe238d9c5 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json +abe7b0cd27c0d2b7f131aea3fb9f4183e5174e7b data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json +a8aecb469010265fe065fa05a7875d9231978fa8 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json +a774e88bf1ba5c2a5bb47d2e53d6b92dac7dad8f data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json +1740161da38ac87e7e265a289f22ae90bdf08bff data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json +079522bf135732b354cafdc5ecb03dcdf00710fe data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json +7e1676000bc354413af9c862a9744b55609acd01 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json +2786342b2b8e0da67c4f7ecd31377219edec16ae data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json +d9ece70b7569fd94b44b5fabe04c098cf90571ef data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -a837dcaca8c59d61844ca4f246b003a59606f7e7 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json -4ec5038dbb8e0eaae8eac1dcbda80e3031b0138b data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json -e873a768137f28a1c64f43ebf3227e0d7d8e69e5 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json -5550a93d8268f3d02e42d8a3e3f93e2d9e8590e7 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json -f058618ff4858664b820ad249395a1af84a82ee6 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json -4f385006df1ca0b23dedf6a7a6cceac6c13732ff data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json -f72c39a0696b194d1b3e107c124f5cae75650902 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json -06034ba7dc8352ace6a06af337a47e9fbe7769af data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json -a65fa692fd4c1507d928d0c02ae7623100ccf047 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json -5c55c594ac2080113d47818f5c41839a9e5c1544 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json -828f209ea560b34062350e09e681df3438d3aad9 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json -115d4c17b6888333fc4c2984aeed2443dc8ad7c5 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json -882e2b3901c281e12f6bf365a91d4c92dc3865a6 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json -6ea4ce0f31d0553b8239a995fad913366b416503 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json -f596d69101de392971752dc128c86a967ff8cf58 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json -1f8f3a99961e2d90a05e35b18ef5ffade061f331 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json -4edf6f56d821ea3ea251b092ddb2ce86b872cc6f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json -009df8abcac7235fa3cea915322206701f82df93 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json -a248f22f124814e9c0f3563f3c90fe8f83e22ab4 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json -4de7c5490b25c3c6f32b5746a9fc96f3f64a06d1 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json -75ef1a94c14e9d422511a2d15f3d52a7c837a527 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json -1bff4f5380a6bef8c66c92c4046be8c706be0bb0 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json -b44f4d53d9688f1b1e7e4f34b867f4dc8e66e656 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json -7fbc916715958b79d0c24e7e616b6205335603b9 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json -f6dc78399d582694fd79ee94fe7f3ee517681f55 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json -5c26ef29126657e7d4bf8105282ffa7acd3c9d25 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json -4875eb186a0db63a4907bfdaa5f618f3c610d104 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json -6a7fb541a4d26b6a42a69a31717aa3ca77a7ddfa data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json -406f8722a0d8b7604c1dfc0c1a03c9dd35f80599 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json -ec214a20b1af14a43c4f64c3697e448e8e21e82b data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json -7ed035ed2c9efa1ea88b441f3bbaf6cca63469d7 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json -0cf2d0a25489cffcb4e182efeefcebbb113f4ad4 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json -f0ed85cab436f2c047da0c09ff44dd56054d618c data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json -3dc267974626ce7c75af5851fc69a1acc47e058b data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json -bed485bdee1858abdaf71312da04ff67b343004f data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json -6981884edf7a93ba1c1e9c4e1fdef8ee27cd8585 data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json -c7ff0327c03bfeff7d800c570646bb38b8e616e5 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json -86b9653c299a353566cba28b7fb9ac66bfd763c4 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json -be08972fb6a07273db49249005c05f1ee27dd3cd data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json -30dfea015cb5a875e8e4786fcd029a3286fdb8a1 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json -cff532b40310463db9b631d8ec79fa0a172aa141 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json -7051da117f35774fbb03c964aef83f96780cf16e data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json -57d4854a04e54c613bf004d442b0f7294a718395 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json -586307af6a68a682ebb5dbd9cba18525b6210b1b data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json -44e1ff786d4f91b03028467e4f2c5485e10881aa data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json -7bb7de6fbb4d02413878a217c87a820860623368 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json -a465f15d19c2668b93590ac89a288ac3ad275350 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json -ccf191ceffe16cc80ac4aa24024b30394b846031 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json -e78daf3e4b37e028bc184f3f436e7ddfef252132 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json -b7f1d93d0e7eacdf50777ac4a802bf8a04562c28 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json -78242cd3f8658799d2ed1b5f94526cc2432be6b1 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json -a559ff9dcfcb6786c56bbbb94b167e20a704d307 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json +1ad37d33772f654ca30550a21f2bd968d571f196 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json +973e1264bc58117953020a94ab43b09a46b69058 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json +fd4c2838a8b943636c51a332b9173a2398869b61 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json +217d932e1b42cbb810f7e947ee36aefc8cf210fc data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json +437375131b0e02a39a03037fe1827d703df3e008 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json +b8f480033c16e57c6943199e61d0bd369ff99d1c data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json +5d4133257c4c009fb063c11670820a05b56d899d data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json +529c9f7bae1e349e04acde16794277c68692fccd data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json +d490a168c01f92ee19eee38242c74cd02a6bd3ba data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json +56e3a3e3e618a3995973b5c56f3b5bffcbd92e0e data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json +e25703f05365298442a341fd35fec08a619f2d2f data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json +ee615b48f6f381f3f110feae36d4ee29c329db7c data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json +1b78fa0dd0180f03f68ef8de1ab46fe1fe7c49cf data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json +5cdf5c26eb889d77c5b5e39ae9322b3f54541de9 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json +b62f347bd7c697cefd2372eb363db9731cee9dc1 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json +e58e3e530f6b3f3d09c0f80400462245bf59097d data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json +06ba91a8eeb82c761f3ec06eb2b685860eda9214 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json +6a61cdfdfa5e552802760755d9b2c64c7b669efc data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json +89c51edd9572c28c566ac8727460f3ae0858d4a6 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json +c8d76caa3ba15ef946845c0ab015fc3fc1492221 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json +a87649d5984874aa238857b83abb7925778cc6bf data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json +9e4bdf4719df980eb4bab54000f8844d773f126f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json +2ce2465e197b75e31eb4e84360ab726586ad4fa1 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json +f123efc4716702693e02df09e7e0a0fb5b4f752d data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json +12c35beea5aead27d0414fecda9ae70987678b41 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json +5e63a0e1ed41aa31f432bca6f2ebc490a3eeb640 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json +9743007bca555fa99b5a0202d06b10b63480b389 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json +3e4449cefc0854138b1b57abae5a86384a415be0 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json +7a55aab8a69e141fc4bd4376995172a7e8dcfdfb data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json +30a76e7c148fec30d7c825c590a616e8c10e0a25 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json +b312a690d400088358661318e2d9412a18868963 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json +8ea135c25d0204f82b471ea748d32e48561736ed data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json +f70b5bccf3a8b393d7d740c6f7e3301c88af6c19 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json +9d36acbdf0335a452e161b3eb77bb8c79d93dcdb data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json +a35b3b5bd14091d1cad0871933477c4551aa9d32 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json +c30a8aba432dee696e8559fb823b85531e7a880b data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json +088e985b4348c9fdb89a1ef44800f7df1dbbdd6a data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json +f6f0fa32d1e53fd251b432dd99317ea18dad8c93 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json +306c013835776045ac55da53ce4d0081880eee5d data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json +7b61d5bcbde073f990c9e807182f61fa3ea5f2d6 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json +28130953bf39fb00f7ae642c93a071771c4d7989 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json +90261dfaf314829ba52c691d8951eff108042dd9 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json +62494c86aaad087827dd60e3bb664ba0cab0e52c data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json +c92f8b82251d47c4c442958b11ce1a375d073532 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json +2b00465891c26841423bd35aae29552bae1d282e data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json +e8cbdfa9f8874133d6da60d2fb50c6e8dcc6cd5d data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json +8471bb3fc635bbe1647044b1a49de2edc3ceddcc data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json +4a9ab5f15150dee671c82b23964be30b5e4b840a data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json +05b34cd244c4095fec3b3bea43f96262e950daa3 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json +4ad0e24763e6adc9c8dcbc2bb8df1b1f6bb842a2 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json +7d5e0d7df34c44a8ad7ace2ec894e98ef663d8b8 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json +ed2becc6c72a249ad59ccc9f674b630885eb224a data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json +ece0bdb2256cfc9f9d52321a921e80e90666e29c data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json +8b050b7e820ef604fd10e0c10b511a020a26e6f0 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json +8a421a8b091a1c09a0ff5684a0ff6222c1f4c155 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json +37b6877b19058f039ef7db001740754a63be9b42 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json +5615eefbba0591c0fb8edd7515a0e97750af0463 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json +b0e2f1989f919c90588ccdccf0eaab0493cabea8 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json +5c14f6ba3bd2a6df08c993241f14a8915a397818 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json +6d2bce98185c3147f1be970b4512df0810af5e52 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json +5a9ad3256a51eb274217b0ad96ff1461b723d70d data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json +726e5adcb5df595928413cefb74289694e41f0a9 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json +2b1689d24f183f07fe0dbd778eed0d60cde43cdf data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json +eaa6d175eeea0024c327ae289e3a5cd392dee67e data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -c967dab46474ea9d8866f14f27eeb79262d86199 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json -fa0c823856b562266f78ee249cbb3471d6ce327a data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json -2c013ff6c9f9471ef3033310483d00823f099882 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json -e4ad9bde3e721deae37b7a1388e912da2d76dba2 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json -e81eb9dd5e600925d5b3d0f7496bbbf0df013493 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json -27b50fb2ae79858f84320a7315481d9f18fcdb2c data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json -874a7692096beba0d8465a874545c2ccdacf889d data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json -9d16c26a6ba1a712ea5af03cd422bbe603497135 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json -a56c17f708ae8c9dc0233ff69403f2131ea1e861 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json -cd98cdbb2de74d27c19e7f9468c1245f8d0089dc data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json -d2374be8ce3c5bdab0244278626de8f9221084b8 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json -55a89dea23d69e86b93180451c9304e804ebf587 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json -37709c0f6affbf673722942d27d3be03ef94442c data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json -e6cda5ab48b9811e7731f07dcae0ca267918fc54 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json -2d2d8ebe32b49cc60833db8a4eef46e5c2a5f0e8 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json -38bb9372c6918b9e10e5761865b57d3f617312e5 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json -83141eff5a86557f4b8270eb395592796780c6e1 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json -ef169d4b98ea33869dc9d4734bddec19f3a0fb26 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json -3d8f0ef783bbec9b755277f97c585aac2378d34b data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json -aafa4270e496ebfe200e311764ed26c0ef4edeb2 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json -e18a9e67a39538abe739d4f7e1bf71fc96f31ee9 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json -e7aa72f4b4d955f20fb8d17356d9d1975c94e2c5 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json -2e90e2bf8ab71fe4496784bb3024c413af33b064 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json -f6d458a5e689d128ea97d96d22334929864cd218 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json -12501e1753a4ff472f4c2ef25f09c7d183207c21 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json -f7314184d18fb9b1aff5c0ea2a3f3e187191b818 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json -3ccb27292bf7509990928de53cfbaf93c2676fd1 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json -a3b94eb37cd9a3dcefc44de365a5bec8b9bd7dc2 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json -8880757178f52c6959aa477cde3919ff0a6c845d data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json -66e4b8e4c200e721dcc91bffc367ac7112d5916c data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json -fb18f2e9361191c5da4a6d68c815659ae6c001ef data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json -4403841a247d7d3b6c2f29946f45a97807d72085 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json -402962ff81eee2b3e2dcd2513197f6534685dcc5 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json -aea6481e8830736092052c3c9bd3c220c677a6f2 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json -fff995fa9a4ff49bcd9d15daa780e21ad47cdc6e data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json -6c7ab4edef76b11dfd99a753124abc015d7ea230 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json -1943dd5c7058c9c6a59d5f3c42e97cdd7812b4b0 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json -e2fcc176fe7a7374c5a2c8fd23d8768797778a84 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json -b46924b6c029acc92ca66db24454bdec33f93c6c data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json -b62c006ce06d1a4a4990fddb9266708e8e8f0107 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json -b96d2daab6e1edf975afabd2a94b404a2dd59712 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json -11b82366d6afec1d4db54a87e52a8173b1822439 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json -21c47708a83a5f827b1a35aff8b1e3c83ed81a51 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json -d5b9a08d24037b53e8c0e1b30e35dd84747b64a7 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json +7c5f037adea9f90cb7bb45ba12c1bfdf6db66c42 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json +073fef48396964619124bef03c9143c74a962324 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json +54ae38eb9aaa962611c1d4392f6853a57da4dda7 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json +1fef96b5d6a08c2de918b5a05bfff84d3e4a7d73 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json +f04ad35139f3f45056199b1db51c3cb7b646fab7 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json +2795296f088cc27fddafd374e4ee17059fb2c5e7 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json +98e90274683fef8f16b2e2702f1ebb0765c54d04 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json +af8f157a48acc8ea6671a3d3b2278e9969740d37 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json +6dc4bdeb03eb41aa868999aa665e9e26998ccab9 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json +3fbf7f195ad58bdd3d88919ab2cbdddb63bc4a46 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json +00ed5d20a0189b57148d0a83ca0847ab8b0e1a67 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json +fd6db2aae9b2c20ba233128ff9a889e35aea01fa data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json +8eeab156c770e326d9b91c85de2eb283b2415777 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json +1fcfb6b06260fe7a3f15bf024b5e333dcdef0461 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json +f384baf21a83f75b26b42cdf63d6a0b3e334d569 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json +fd6b6c8f086ab0d2f8b054aecedffc537a71de73 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json +41fbcaaa066bad558cd82c683abc7138190af9bb data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json +19acbb9c809bb2e69b359397a6a1593c636bfcd3 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json +8bb8ad82d52406cfdc7d3b67fc934c15b518f255 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json +fdb25512103137a281846ed3d068f08364a29495 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json +cb32fd0cf47c5c738093d81b21f2824e35bc0b65 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json +36a2a412609802e520aee91a38ab9df9478680bd data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json +8e874d012b318d64f5765ed97516f5e0291aca68 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json +9cf45abc81e82e889c5f2e31839e512e61e18073 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json +26cb975bc2229d066fde3c1fd293014b54c5b689 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json +434345186b6ef5737960d1d9f72fb662d9b336f7 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json +c5a5ed1174f3ccd6eded195dc91ed3016055b849 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json +32b8c65b5cbdd2d9cb4dc2d1d1b09f9b7a95dfe1 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json +db4cc33266c475627e59c76053dcd00de29a6ca6 data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json +c3110d7579d6ebb48c2d5f210b75034703cd1e7c data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json +899bd09adf19f98d025559b999116bae8f83133a data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json +d4223c6fa1f8606f2f4099bd6806f8ca7e2ff88c data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json +5a0513e9142a18110dbc73dc5f4b1e4e0389330f data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json +6c638cb8b9a608c3f59f057c2b8224964688e4b0 data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json +48b07d33e68e70900b1d9f0f1cbf19c89350407b data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json +48685fc5786a7da7224f39e196e6406cf60475fb data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json +25dd08da3a54d1c051d318ba9ee2edf0ee8df76d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json +5d5e5b4039ba98fbabdc078a15aed054cb6da718 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json +fe614ee3221f1f2bf33bdffd8b0f3cabe91c0dc1 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json +e2191a93e8cf215ac90855f37b66b44c07907587 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json +4463d34259751b998e574ed8b10fa1275d6cd79c data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json +ac0b500602edf610e39488884542f1481eef062e data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json +868fe1e18862e27be18523d8f94db47c1cfa35cb data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json +feac988199a888f68a5cd5d4f0c549e14ad57ff2 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json +e5e446ebad946dabf3157f53d0a6fbb80a7fed33 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json +9b69a358c1a8cf2c7a3bd39afa063ebcb419ac38 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json +7a41c4d0b69cd68008a25fac0ea0abd7c256d9e4 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json +7e94a7c767215571e1be7533f980e35482c0f405 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json +721f4a738abdf145ee2be4bef024248ceab57b81 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json +bda6b451b8874212cb4fd4e43ec071ddfbaae795 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json +86f8cd0a7efc80742d1f30aa7352382852ee13a0 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json +a182a1b3f8c5acad294b9c0373316a9de306d5be data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json +70fdb7aa18a9761322362e92cf554f6c8ab9f477 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json +3ff9e5e012de900f3d72ce7a44282da6b513ec41 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json +a8e25937a8f9604d70c08278e606c1568db0ec50 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json +ceb43f829772d1b0b10382be5c47cc692d201a2c data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -400,114 +424,138 @@ a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_fro cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -d7097c9e8ded8fa0d0a004b17c6f13689d32f6b3 data/cosmere/recipes/lerasatium_aluminum_nugget_12.json -4178ec320d699c3839f20e91b2cdc698b6fe731b data/cosmere/recipes/lerasatium_aluminum_nugget_16.json -9dcadc598975e78c3f3afda630b7c3e727743931 data/cosmere/recipes/lerasatium_aluminum_nugget_4.json -5ca14dbe08eb84de1de4e5faab3b2afc8e3154aa data/cosmere/recipes/lerasatium_aluminum_nugget_8.json -ff0a82b91d68f1aaf9123389c28da765078cd6e4 data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json -d53f96aee4cbfe05510165fdbcc818fe86ec3ed3 data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json -97a57ab58efceab32d00ceab40889d0c5555f31e data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json -7f5b0d290c9b7dd6fe05b413eff65ebfc6e5c319 data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json +9d48276c7b5f5e65038859ac295d90b9f60632ae data/cosmere/recipes/lerasatium_aluminum_nugget_12.json +34692f851aeeea6b0371dec15feb5f7d98088c71 data/cosmere/recipes/lerasatium_aluminum_nugget_16.json +ea87f690602818e2cf97c32429d5361820f7f33d data/cosmere/recipes/lerasatium_aluminum_nugget_4.json +6ad88ecbe748cda87a63dbe144ced45861f51537 data/cosmere/recipes/lerasatium_aluminum_nugget_8.json +e8ac61810f985c33ac2aa35c1db0c40e5afc6907 data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json +82328b21ca67a7b7396c87e13a3240b3a4fe6a8d data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json +179f6d193dd790a0f44abfdb12979ad5a86abe9d data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json +441ac27c3c1b24a152180bdcbc55ba2144f5e296 data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -55acf2ed295a5b22aa7e51cde538e8096958695d data/cosmere/recipes/lerasatium_brass_nugget_12.json -9c3f2341cc79836c109dd6caa6d8ceab49661224 data/cosmere/recipes/lerasatium_brass_nugget_16.json -e17ec11dd2404945f0aaba95ba16e8134841fa2a data/cosmere/recipes/lerasatium_brass_nugget_4.json -9a342c6143f44a4e3facf08a8509a3786ef1011f data/cosmere/recipes/lerasatium_brass_nugget_8.json -91effa8f75bd30e4d18ab6bf5deb8408d5dd9bf8 data/cosmere/recipes/lerasatium_bronze_nugget_12.json -13e832568651a7ac0b2cca679a8ca297b83728e4 data/cosmere/recipes/lerasatium_bronze_nugget_16.json -5c03c3b5879d7dfaa3c8f392a3f9cd7acfa14307 data/cosmere/recipes/lerasatium_bronze_nugget_4.json -0b82158cc816a11a6744ebe98b3edba0babefdb8 data/cosmere/recipes/lerasatium_bronze_nugget_8.json -601a143f36f29d79806cd302d22bce62098d9cd7 data/cosmere/recipes/lerasatium_cadmium_nugget_12.json -6497ec49b3371e32b07980b501a74782fcbccf5f data/cosmere/recipes/lerasatium_cadmium_nugget_16.json -16752f536b4cf6a1ee3fcb4e42a32a2d6a77d080 data/cosmere/recipes/lerasatium_cadmium_nugget_4.json -6e6621d8aaa135a7d82b76ccf488cea48f8248bc data/cosmere/recipes/lerasatium_cadmium_nugget_8.json -244535479873f3df7fde76be19049c7fc277f421 data/cosmere/recipes/lerasatium_chromium_nugget_12.json -123b1f62e21a242b22cd831b560fac41ff0f6b0b data/cosmere/recipes/lerasatium_chromium_nugget_16.json -b8de513ab5921608e7cf4a5e083bf2f3c5ad1a0d data/cosmere/recipes/lerasatium_chromium_nugget_4.json -0d97f58bcaa6dfeefab351f0bd9cc60f5003164c data/cosmere/recipes/lerasatium_chromium_nugget_8.json -8b27ca2bf7a57984fb8cc03aacf9c7977d160992 data/cosmere/recipes/lerasatium_duralumin_nugget_12.json -c5f2ffdd52595b7ea5369c0f7b66a6e8dc0e001c data/cosmere/recipes/lerasatium_duralumin_nugget_16.json -8df6455ef88db31e39bc159df31a5d64549e644a data/cosmere/recipes/lerasatium_duralumin_nugget_4.json -c77ed3d091d179fbd1ad2f2785f91a0069ee2038 data/cosmere/recipes/lerasatium_duralumin_nugget_8.json -0e1ecf98407f5d92dc60686bdd190395c0ed279c data/cosmere/recipes/lerasatium_electrum_nugget_12.json -320e9dc5c5ee42b574a8965e5cc2b3472bdfeff9 data/cosmere/recipes/lerasatium_electrum_nugget_16.json -0457f2ecdf8158d23ccfc06eba849796c9931e56 data/cosmere/recipes/lerasatium_electrum_nugget_4.json -a09eb1e9b03338d2be8db05f94003e6bcbb1e5d0 data/cosmere/recipes/lerasatium_electrum_nugget_8.json +086cfc5415003ffb510b543c8fb97bd13c7992e8 data/cosmere/recipes/lerasatium_brass_nugget_12.json +d19d7e59152e55262ad78368787ec89575fd3cd1 data/cosmere/recipes/lerasatium_brass_nugget_16.json +d48ab2fdaba2af55c5824317054f1b0618bac387 data/cosmere/recipes/lerasatium_brass_nugget_4.json +f2d28966941e45226bd92165358c36b5235f3c57 data/cosmere/recipes/lerasatium_brass_nugget_8.json +7a02292ca2f37f32bb384855cf72d38d12241bea data/cosmere/recipes/lerasatium_bronze_nugget_12.json +6090894895655b475bf836c09f16397b114aa868 data/cosmere/recipes/lerasatium_bronze_nugget_16.json +13f4ccca332e5cab8a226da93e6005b4e21dc5ce data/cosmere/recipes/lerasatium_bronze_nugget_4.json +9adf32942e4a37f5fbdc991b282e03f39e4e42ed data/cosmere/recipes/lerasatium_bronze_nugget_8.json +85c480baf8a9595125a86191277403e956ff4c76 data/cosmere/recipes/lerasatium_cadmium_nugget_12.json +3ca373abfcf482da88f9bef17371a72d754b9f37 data/cosmere/recipes/lerasatium_cadmium_nugget_16.json +ca83e182c04c40d5b2141b79ff5565e7b53d0211 data/cosmere/recipes/lerasatium_cadmium_nugget_4.json +e52f3e93ccbc2ae1f099f1f519e8c17a663a17bc data/cosmere/recipes/lerasatium_cadmium_nugget_8.json +7b366c212b460ce00f39ba0a5a2c2e79559026ea data/cosmere/recipes/lerasatium_chromium_nugget_12.json +82a02e36062a75d544f4216a1300cd4706485d81 data/cosmere/recipes/lerasatium_chromium_nugget_16.json +8dd8dbe901530d8cbbb1e00cfec337428c12eac7 data/cosmere/recipes/lerasatium_chromium_nugget_4.json +c984cdc1d2d3a4db2aa1208511630af69bf61810 data/cosmere/recipes/lerasatium_chromium_nugget_8.json +4acc666bba51398ba50bf46fa3a9635bbccff4a9 data/cosmere/recipes/lerasatium_copper_nugget_12.json +5d6000904d3a5355c2927250ba2f1695ecbbd978 data/cosmere/recipes/lerasatium_copper_nugget_16.json +62588b4a1543e6c20962d4539560415abdfdd361 data/cosmere/recipes/lerasatium_copper_nugget_4.json +8cf7054eef1165f22a781470b0b3f18a93e34ef2 data/cosmere/recipes/lerasatium_copper_nugget_8.json +813eb1e60bd91db84d4224b40f01d679749f3df9 data/cosmere/recipes/lerasatium_duralumin_nugget_12.json +f6e371df05efde9056fdd3650e7458ac9a40e47c data/cosmere/recipes/lerasatium_duralumin_nugget_16.json +b55dbde28b4c9e72f33c4df93963019b61565ceb data/cosmere/recipes/lerasatium_duralumin_nugget_4.json +9fa7faa888a34563ae083b67152d2c6c4a267073 data/cosmere/recipes/lerasatium_duralumin_nugget_8.json +63d7499676a81224b754a39515db8a13f747428e data/cosmere/recipes/lerasatium_electrum_nugget_12.json +ebc03d8c1277d3b665badeb029b64210eae5d332 data/cosmere/recipes/lerasatium_electrum_nugget_16.json +c7839ccc9a726c35274a008a6ac74104f0f1af68 data/cosmere/recipes/lerasatium_electrum_nugget_4.json +4250e5f6aa8df5988270895fd86038a2be24e8af data/cosmere/recipes/lerasatium_electrum_nugget_8.json +f1b6b90d12f7510127b2e995f894f5a2283cce6d data/cosmere/recipes/lerasatium_gold_nugget_12.json +defb8f7890adfd29aed1ad8fef0f2f092d323272 data/cosmere/recipes/lerasatium_gold_nugget_16.json +b8a00f8a009f47fb6ed26070b8eaa97eebe5f4ea data/cosmere/recipes/lerasatium_gold_nugget_4.json +37d2f2c36e0aac78635781d14f845bcbf611c27a data/cosmere/recipes/lerasatium_gold_nugget_8.json db4272d9b763609ba79a2ea4d7fbc0adacd269f2 data/cosmere/recipes/lerasatium_ingot.json -73b0e686f9529a88d1ebb968164f2ee94588c2ed data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json -0b823b9df265abe4c33f71020dc224a9e6982921 data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json -4d9aa741afd068cb96cfcc069538c5eeef92dcf5 data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json -0a75eb60b974e652784d139c0c9341bb80f544ec data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json -2643094de710d1418d14ef4a65766924cd755186 data/cosmere/recipes/lerasatium_pewter_nugget_12.json -c0032693688001d06a4604bd0b1c66aeb5de49d2 data/cosmere/recipes/lerasatium_pewter_nugget_16.json -bc65522b602dd7a4883dd28e972e864d644958f8 data/cosmere/recipes/lerasatium_pewter_nugget_4.json -f84e1d7ca8afd4c16540a0417e1aa1ace18edfc9 data/cosmere/recipes/lerasatium_pewter_nugget_8.json -44e3434697d7bd4583470bede1cc531f0c9cb8fe data/cosmere/recipes/lerasatium_steel_nugget_12.json -89f8f79e61df612606afbc064a98e449480287fe data/cosmere/recipes/lerasatium_steel_nugget_16.json -384b2138eaf5d5ae207f053be07fa4b64d0d1976 data/cosmere/recipes/lerasatium_steel_nugget_4.json -678b61ef6d6daa7951fdd328a072e51b1eaea42d data/cosmere/recipes/lerasatium_steel_nugget_8.json -1dcfbe4c58d8aacef4ecd0a648567da9d3bbd737 data/cosmere/recipes/lerasatium_tin_nugget_12.json -3d5655f9aba1fd695ae2433b89cb864420612f9c data/cosmere/recipes/lerasatium_tin_nugget_16.json -45d895b9e09277631c8f99a37588a48ee91568cf data/cosmere/recipes/lerasatium_tin_nugget_4.json -bf3e78ad38b528daf6de9131d651aa6cf0194949 data/cosmere/recipes/lerasatium_tin_nugget_8.json -70c4228c85414510a689332d23e3030ef22971a4 data/cosmere/recipes/lerasatium_zinc_nugget_12.json -426c53f8feee0d6c01a6eb40630868d43942216c data/cosmere/recipes/lerasatium_zinc_nugget_16.json -9591d7b2af788923ea8c96bf27521a6f2f27a959 data/cosmere/recipes/lerasatium_zinc_nugget_4.json -f318999d1574c1b5612e3f9aa67b8ac9d77ab009 data/cosmere/recipes/lerasatium_zinc_nugget_8.json -e7825d943cc79abdad5da49e408d2ac1aa0d84d8 data/cosmere/recipes/lerasium_aluminum_nugget_12.json -4c04545ae6452cf92930416e39f423b5f9b488e2 data/cosmere/recipes/lerasium_aluminum_nugget_16.json -26db51fbdee49ba05ed0b6c541860ec06b64599c data/cosmere/recipes/lerasium_aluminum_nugget_4.json -5c0539a77eceb9bcaa4d135abd0b6593750400ac data/cosmere/recipes/lerasium_aluminum_nugget_8.json -66ba7574f67b3beabd5fe5a70251e9908e4a2056 data/cosmere/recipes/lerasium_bendalloy_nugget_12.json -e0dcbfab3a7e64ccae48e079449a1df7a90b3624 data/cosmere/recipes/lerasium_bendalloy_nugget_16.json -fc3331f100e7a490e81a63f4398f0b7803eb0ec3 data/cosmere/recipes/lerasium_bendalloy_nugget_4.json -6fd115f9736b8e75bc0db9ffe6b5d836c8cb5997 data/cosmere/recipes/lerasium_bendalloy_nugget_8.json +cda703c4af8f6d2cfbc6a511f9641153e7111b27 data/cosmere/recipes/lerasatium_iron_nugget_12.json +03c37dee2a5241b79493573090035977ffa76952 data/cosmere/recipes/lerasatium_iron_nugget_16.json +eddeebd77065d8eb09b43dc346710018dd42efd8 data/cosmere/recipes/lerasatium_iron_nugget_4.json +17bbac3607bafacc0d82762846a37a703cfce525 data/cosmere/recipes/lerasatium_iron_nugget_8.json +5f086519c3507feff12d0527d7aa83b8fbf92ab2 data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json +4fb25c496fca1db093e02d07bde2a6f7fb0fc132 data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json +9395479ab2f29923bd6f02e1293a888d993991d8 data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json +a4773b4fef4275dc7d01fa16b6228c5ac67ffda4 data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json +26c3324dd100b739ac0bba327e201885f1e8c7aa data/cosmere/recipes/lerasatium_pewter_nugget_12.json +6ab232fea91f64ac095ab14adf1fca4acb084757 data/cosmere/recipes/lerasatium_pewter_nugget_16.json +2cca5b8c965a84becb9f1633ac17f758c0b45ce7 data/cosmere/recipes/lerasatium_pewter_nugget_4.json +11065237512bfa66bb5e81ed8a61c0c726932263 data/cosmere/recipes/lerasatium_pewter_nugget_8.json +70d0381461196af81a4b27918a569eaa2792a80f data/cosmere/recipes/lerasatium_steel_nugget_12.json +fbb4c1712f58cc33eee83b55d563a48a20f020cc data/cosmere/recipes/lerasatium_steel_nugget_16.json +ff71537acc88bb6a144e004e1a010e4d89fc2873 data/cosmere/recipes/lerasatium_steel_nugget_4.json +5ed5e34cf1220956d9d7f03f55586fbf690b38dc data/cosmere/recipes/lerasatium_steel_nugget_8.json +df92d177d224a15697402aeec65800e88ce4931c data/cosmere/recipes/lerasatium_tin_nugget_12.json +c18b77ebd6fa8cbd9b5ce9d67cab15e8da6d83e6 data/cosmere/recipes/lerasatium_tin_nugget_16.json +076f4a87d94bb9d2745f505c7788321047f4b996 data/cosmere/recipes/lerasatium_tin_nugget_4.json +44dba3b0822fb918195cee7c7174b9ce700a993f data/cosmere/recipes/lerasatium_tin_nugget_8.json +da11502642e7de95221297d7a8efde360932ba25 data/cosmere/recipes/lerasatium_zinc_nugget_12.json +bb89ea8e1163a86a35afb8f697eca024503edcfd data/cosmere/recipes/lerasatium_zinc_nugget_16.json +28ffb20b4b2cbaf55aeb69d665d30d673948d0e4 data/cosmere/recipes/lerasatium_zinc_nugget_4.json +71883fecbef754e334dd096a0621176872035933 data/cosmere/recipes/lerasatium_zinc_nugget_8.json +8ff3d5c1f23cad2949ac216aebbe39142c0df59e data/cosmere/recipes/lerasium_aluminum_nugget_12.json +f3cdea3101870a9f09901dfdc81158528398a678 data/cosmere/recipes/lerasium_aluminum_nugget_16.json +61a1dc45898147e9b935168880e339f900371c99 data/cosmere/recipes/lerasium_aluminum_nugget_4.json +1605d832df39e838866deaacd78f96cbf225b298 data/cosmere/recipes/lerasium_aluminum_nugget_8.json +c9da533a2d7b8eaa8fc224509e72325c9e04cf74 data/cosmere/recipes/lerasium_bendalloy_nugget_12.json +99420040256be5b3abdaef9427e1fb3d6de5cde0 data/cosmere/recipes/lerasium_bendalloy_nugget_16.json +cc8a05c83aed43cc7d38383f2b6804bd22d98f24 data/cosmere/recipes/lerasium_bendalloy_nugget_4.json +f08f3a5380ef2a707e29619e8e809c9694712df9 data/cosmere/recipes/lerasium_bendalloy_nugget_8.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -6d62dbd3b68bb313828622adc7ae642a30d45265 data/cosmere/recipes/lerasium_brass_nugget_12.json -37fbdd6732e1cab261e7b51c6c238e4c4441f880 data/cosmere/recipes/lerasium_brass_nugget_16.json -39be1e82fca0ea50c9b37d5732792325efbe0672 data/cosmere/recipes/lerasium_brass_nugget_4.json -68b893f5132e866643bd670991097bd03c61041e data/cosmere/recipes/lerasium_brass_nugget_8.json -caf8fa9353207510ba24f1086ff9da040286ef51 data/cosmere/recipes/lerasium_bronze_nugget_12.json -4d89c6d11c1132a93b203df13048d5eaf4ba94d7 data/cosmere/recipes/lerasium_bronze_nugget_16.json -8d8760d870278eaa05014edae6afdda26dff2f3c data/cosmere/recipes/lerasium_bronze_nugget_4.json -e5e2387ea55b890bce837ea623bbdd3d4f379490 data/cosmere/recipes/lerasium_bronze_nugget_8.json -33256e7986dd405a5a29a36d79500e4ad58c6c07 data/cosmere/recipes/lerasium_cadmium_nugget_12.json -7de91a035c88ca3bdd4a2a3e92573c8f819ce7bb data/cosmere/recipes/lerasium_cadmium_nugget_16.json -22143db60c6add3219f5d7e790ef1085f8dceb02 data/cosmere/recipes/lerasium_cadmium_nugget_4.json -a226377075c4e74de04f9a84b9fd1a562e011bd9 data/cosmere/recipes/lerasium_cadmium_nugget_8.json -1b6ee31b250e4ededf084dfa074501bc851878a1 data/cosmere/recipes/lerasium_chromium_nugget_12.json -fdc106708dc75ff59baae61dfa6376e5665bcd24 data/cosmere/recipes/lerasium_chromium_nugget_16.json -3e03943639f8be5c35f1ec3ed364f0dfc7522556 data/cosmere/recipes/lerasium_chromium_nugget_4.json -32d560e2852cf204bf2955f8878eb7847ab0115a data/cosmere/recipes/lerasium_chromium_nugget_8.json -4b23bc2392922fc53819d9b1678eff4b5e5f3612 data/cosmere/recipes/lerasium_duralumin_nugget_12.json -fb9d52a4f17efaaee4cfecfb01de296c15a322f6 data/cosmere/recipes/lerasium_duralumin_nugget_16.json -71d7a644f9a03266f55852712be7d4cc86d3d137 data/cosmere/recipes/lerasium_duralumin_nugget_4.json -5c9b55469817fc47092174de9b44b0f70fea6b11 data/cosmere/recipes/lerasium_duralumin_nugget_8.json -3d12bc57bb08e37f4011163f97ffbb72b3d11073 data/cosmere/recipes/lerasium_electrum_nugget_12.json -07029a565fb7942b341db98a32e33c0edcfa5e02 data/cosmere/recipes/lerasium_electrum_nugget_16.json -f5ff6ee820f3811ae0558b12a80d2d746f490e98 data/cosmere/recipes/lerasium_electrum_nugget_4.json -aab12611a4cf8f90984673f7efad9cd1a78399fe data/cosmere/recipes/lerasium_electrum_nugget_8.json +da95b3d6972c1caab21e95341b101f94874430c0 data/cosmere/recipes/lerasium_brass_nugget_12.json +6085e8f8b0e7fdcb3d584345a84a3ab64476c60b data/cosmere/recipes/lerasium_brass_nugget_16.json +66c99babcc6995e22a0dd0fe6cc1dc74e368f259 data/cosmere/recipes/lerasium_brass_nugget_4.json +218c2e3e436be01956e2d9a754516d524845b879 data/cosmere/recipes/lerasium_brass_nugget_8.json +91a454b9ef1d68997f23aa8d9ef47e71596e8783 data/cosmere/recipes/lerasium_bronze_nugget_12.json +f9013f55a3a98bb6a58c551d80f8c5622b0e1e2f data/cosmere/recipes/lerasium_bronze_nugget_16.json +4abd782cbae2d3f68bb06024ddb8483a3a69d410 data/cosmere/recipes/lerasium_bronze_nugget_4.json +d88d88dab9d7e07668ae1c9a0b5e0409ab9af8e0 data/cosmere/recipes/lerasium_bronze_nugget_8.json +12403d8aed989648411eeb7a149cfd20131c77cc data/cosmere/recipes/lerasium_cadmium_nugget_12.json +e33104fc0f453dfad26651cf0c9cbfcd77ac7660 data/cosmere/recipes/lerasium_cadmium_nugget_16.json +1b909125e2f1faeffcb0197f86a4e59e68e0cef1 data/cosmere/recipes/lerasium_cadmium_nugget_4.json +104d2ec776e0d6e1d6be332b32f33967df5743a1 data/cosmere/recipes/lerasium_cadmium_nugget_8.json +6664bdfd2d2bccd7b57ba597962e0b6cbf00b1d5 data/cosmere/recipes/lerasium_chromium_nugget_12.json +db2d1cb6cea837c7e605bef1940146a335dc91e1 data/cosmere/recipes/lerasium_chromium_nugget_16.json +8ec6196e2a8c7d133e49b0f965b91a46bd1f6eb8 data/cosmere/recipes/lerasium_chromium_nugget_4.json +088d740e1ba1930c18fa6f044e36a2031e6bcc36 data/cosmere/recipes/lerasium_chromium_nugget_8.json +b3d217e8093b863b7a458f1d969badaa6d369c6b data/cosmere/recipes/lerasium_copper_nugget_12.json +462e0424b537d82170dd853e71c4001cc670f378 data/cosmere/recipes/lerasium_copper_nugget_16.json +4912cf2db9741a1f6b42ce87f229b9f0eed6022c data/cosmere/recipes/lerasium_copper_nugget_4.json +c1a636ad631e4560f75d3c0ba4888d1f15afb85d data/cosmere/recipes/lerasium_copper_nugget_8.json +92b4849b99816e1445f37cca5680a6c92b78155b data/cosmere/recipes/lerasium_duralumin_nugget_12.json +d76376a9d51e7282f311c576d674c3d8ed4e6b8c data/cosmere/recipes/lerasium_duralumin_nugget_16.json +5f10377ad670f00900508ec93aab68b332703d5e data/cosmere/recipes/lerasium_duralumin_nugget_4.json +1ddc351b3ff7bf91e4ac6c5370ee87029e833808 data/cosmere/recipes/lerasium_duralumin_nugget_8.json +facca0b9f396df7a9a96f04899869fc3fc53a7bc data/cosmere/recipes/lerasium_electrum_nugget_12.json +73c436f35646239eced7ad4d11c2ae2dc13557a0 data/cosmere/recipes/lerasium_electrum_nugget_16.json +1bc599777a6b3326fca30499eb0a13ce39c6682d data/cosmere/recipes/lerasium_electrum_nugget_4.json +fdeed02df41d9b2539c1269a3c946ef2d9c72006 data/cosmere/recipes/lerasium_electrum_nugget_8.json +a2ef2507d57c82169d34f9abaa9d1accffc31ffb data/cosmere/recipes/lerasium_gold_nugget_12.json +85c1db8246e6049e2cac0d49943e733f9cb61d77 data/cosmere/recipes/lerasium_gold_nugget_16.json +a1f8f415e58bad1a083343d97c7a849ed65122fc data/cosmere/recipes/lerasium_gold_nugget_4.json +49d666e1a2fca91edc96f84dc0521a3a14830914 data/cosmere/recipes/lerasium_gold_nugget_8.json a4f7ae18f7da78c725539e289cbd2c9d8e6b6981 data/cosmere/recipes/lerasium_ingot.json -98223b9fffd353354ebd2adac9aa45ec158112f2 data/cosmere/recipes/lerasium_nicrosil_nugget_12.json -2c1fd6ab90119c3ea68f023b9e4fcc01cb1a9bf1 data/cosmere/recipes/lerasium_nicrosil_nugget_16.json -05fa1d3a1556c594d732b9cbf22fe3772b7a52d2 data/cosmere/recipes/lerasium_nicrosil_nugget_4.json -7dba3706b32b03b80f31cf31d83674eb7f0c4f7f data/cosmere/recipes/lerasium_nicrosil_nugget_8.json -1e0cb74c366f4c4ce7cbb89c94e84a2bc6efd100 data/cosmere/recipes/lerasium_pewter_nugget_12.json -36ba29db3b893255c7571bfd3c5b8a9f56640180 data/cosmere/recipes/lerasium_pewter_nugget_16.json -0e3d8a8d6e214c465be82bf6689edfecdf620274 data/cosmere/recipes/lerasium_pewter_nugget_4.json -e4b3d25ef2d933a92d4f64e42f1bbe1ec6347818 data/cosmere/recipes/lerasium_pewter_nugget_8.json -fa107cf5934a968120de812fe4d4a90ad03203c6 data/cosmere/recipes/lerasium_steel_nugget_12.json -d836ffe0e8e7651a16fdc1617526685d2e4ad6ae data/cosmere/recipes/lerasium_steel_nugget_16.json -3c7fd98941f13d1bb0f0e0162739e8b6f408e7b3 data/cosmere/recipes/lerasium_steel_nugget_4.json -4e9afaee48bb7fe60bda8607ad18e5eda64de8c4 data/cosmere/recipes/lerasium_steel_nugget_8.json -cd8cddf193f3f3a9db917b6a413a70941ec93ba0 data/cosmere/recipes/lerasium_tin_nugget_12.json -25072fe08ddf10329d6b366d4d0201b2570c746d data/cosmere/recipes/lerasium_tin_nugget_16.json -7db24ccaaa88612fb3f56e072e974b2b796a0936 data/cosmere/recipes/lerasium_tin_nugget_4.json -569aa78baceb0e56717f604d127f34a0a0d78d03 data/cosmere/recipes/lerasium_tin_nugget_8.json -3f70344cabafd2db930d35bc761dec81b31a7d0b data/cosmere/recipes/lerasium_zinc_nugget_12.json -30d00b966187841be22e8c9efa8da05d8cb5e702 data/cosmere/recipes/lerasium_zinc_nugget_16.json -e634708156d4665ca7d824e747c99522c0fb1c2c data/cosmere/recipes/lerasium_zinc_nugget_4.json -bcbc6f435e544126f6cd8aa8048f4b90f268cfec data/cosmere/recipes/lerasium_zinc_nugget_8.json +9e4d0eb5364868a5891ae13ad584a19e347e8bc1 data/cosmere/recipes/lerasium_iron_nugget_12.json +a14c301b84feabce9543fcba01e68b83fcb9a8e1 data/cosmere/recipes/lerasium_iron_nugget_16.json +8130d366bb40a66a76897e21ece8be8b3cca3209 data/cosmere/recipes/lerasium_iron_nugget_4.json +a2cd13818be53e180cf005c6b5624276fb755ba6 data/cosmere/recipes/lerasium_iron_nugget_8.json +d52616468869a19aef25ab4637d6ce3a7b9f338a data/cosmere/recipes/lerasium_nicrosil_nugget_12.json +76b04dcf7242e8408e0aa3949a1f837f22e53410 data/cosmere/recipes/lerasium_nicrosil_nugget_16.json +16290f51faee6531562fc07e3ec3f8abdbc582ad data/cosmere/recipes/lerasium_nicrosil_nugget_4.json +3f491167f203c7f29509a28cb430f73ba6919a60 data/cosmere/recipes/lerasium_nicrosil_nugget_8.json +deff6647ad275229aa2bf0926c01d09f7e4967e1 data/cosmere/recipes/lerasium_pewter_nugget_12.json +c5e13b4036c6214d42d3017deb9b7a56a8499176 data/cosmere/recipes/lerasium_pewter_nugget_16.json +280ad1f3e67053f814528b486481fe04c6509b79 data/cosmere/recipes/lerasium_pewter_nugget_4.json +6445205406c0f8dfe1c5853f7b9f431383e1dbe3 data/cosmere/recipes/lerasium_pewter_nugget_8.json +4e40c5c1f67239fe7f8e4761c73f6472185ea555 data/cosmere/recipes/lerasium_steel_nugget_12.json +0e4cdb8171ab79e11df04e344704f3ec34c8baac data/cosmere/recipes/lerasium_steel_nugget_16.json +29799c21e0dd88014417828294fa092675318ef1 data/cosmere/recipes/lerasium_steel_nugget_4.json +74009f993e5fadfa136520ccf0c9797866807e38 data/cosmere/recipes/lerasium_steel_nugget_8.json +a147d8d6c173428a9468e089f3ed19c54103cdab data/cosmere/recipes/lerasium_tin_nugget_12.json +b7e7f4451097826eb30ce7f349a0156d5ec72fe3 data/cosmere/recipes/lerasium_tin_nugget_16.json +ff72f612f6e30be68cb815baa8cedea529a262b1 data/cosmere/recipes/lerasium_tin_nugget_4.json +c3a220f973bbc4b42d53ace5906c81595402a6cc data/cosmere/recipes/lerasium_tin_nugget_8.json +cc49bf6501cb1e8106c3c75f74847068cb066da0 data/cosmere/recipes/lerasium_zinc_nugget_12.json +40fa551b9bb66a14895f5f941e1d34423bf74b9c data/cosmere/recipes/lerasium_zinc_nugget_16.json +8ee5204f736627767acdb0d58fc4b7f7014bac7c data/cosmere/recipes/lerasium_zinc_nugget_4.json +7dfe9282beee42454216029ae9f54568d7f09a81 data/cosmere/recipes/lerasium_zinc_nugget_8.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json index 896327948..3cca96a03 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json index 6d7fd1225..3a6db23bd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json index e0194c7f6..7a36dcd70 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json index 246adb4a1..043ebd764 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json index af1c46e19..1ac1175df 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json index e84d80f42..da4734a8b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json index b60720f24..247836f37 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json index 4417491e0..452cee6ae 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json index 44d65c15a..3e1cf38df 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json index 0b6bdf9a3..f80bcdd73 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json index 7043da6d2..2fec218e6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json index 4488b722f..08c1f8b54 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json index 1df919532..a5d4be562 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json index e495f475a..42c4880f2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json index 98ea3de71..427255d0a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json index 053c4aae2..075b8d7b4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json index db4388a0d..becf8e5f5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json index 23435a037..64d6709d1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json index ce5f6257c..f6e9d23d2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json index cc9fda27c..f2f69d99e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json index 219a7366f..f8cb76c77 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json index a31bc6aa8..b510e7ecc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json index 01bc21c07..b4cd070c2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json index f1b1ea650..dcbaf31ac 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json new file mode 100644 index 000000000..eed885c40 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_copper_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_copper_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json new file mode 100644 index 000000000..dc13f5136 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_copper_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_copper_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json new file mode 100644 index 000000000..e7030c0ef --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_copper_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_copper_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json new file mode 100644 index 000000000..5eb2b8080 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_copper_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_copper_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json index 46fea4000..e08ab506d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json index df1c70abf..2c094db77 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json index ed53f54a1..30b99b6dc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json index c9971000e..4c99403d0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json index 71261a8d6..fbc26370d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json index 025fdf135..bc2582573 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json index af8d11f0d..0efb2576a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json index 884443522..773c69065 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json new file mode 100644 index 000000000..fd1bb010d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_gold_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_gold_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json new file mode 100644 index 000000000..8f7d8eeb5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_gold_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_gold_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json new file mode 100644 index 000000000..ff3386156 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_gold_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_gold_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json new file mode 100644 index 000000000..3760bc29b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_gold_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_gold_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json new file mode 100644 index 000000000..c47f709b8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_iron_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_iron_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json new file mode 100644 index 000000000..8d89bc695 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_iron_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_iron_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json new file mode 100644 index 000000000..359d49b03 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_iron_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_iron_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json new file mode 100644 index 000000000..6290bb88b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_iron_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_iron_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json index 94929967f..a043798c0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json index ea05279e8..7b3e3afbf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json index cdceb499c..b1ae071e0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json index caa912f80..e603c5fca 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json index 1fabac60e..3d1d1f7a1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json index 9bb2e92ca..0ea0c0680 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json index 3d848a235..1bcb647e1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json index d80ef669d..bbcfd36ce 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json index c83ed4f11..795673e65 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json index 43c3a487c..a49d94462 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json index 6e185d891..d0e819538 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json index fd4bbaf29..1584111a7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json index 5886dd17f..ba21c903f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json index c60344467..cf4d71abf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json index bdf3e3703..a35207177 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json index b831ec4e7..879639390 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json index 7b9babb23..0c6100cee 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json index 0ca03745d..022134768 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json index a1fda3a16..72c4945c9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json index 2cae54e96..69568f776 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasatium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json index eb6316fa2..151cbccd2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json index b79cb86cc..27d9b09ff 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json index 93d568942..46fc9b669 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json index 700a865c7..8773df8a2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:aluminum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json index 65a8a8ee1..ba251bca6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json index 7864c26ff..361ba065e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json index d65d89b03..f582b05aa 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json index f439550bc..9e5892a0f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bendalloy_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json index 8dce931b7..822de92b9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json index 73980681b..3754d45b6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json index 6f606bcea..2b407747e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json index ee6afc108..2121e616a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:brass_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json index cc9f7c51f..cfd749805 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json index 6293e6b9e..4b6696bdc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json index 422595a33..c088c27d0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json index 1f7795d05..cec5a5373 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:bronze_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json index 219c7f235..00184cf9b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json index aacf6c50c..d2538f929 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json index fe77af74e..5b6731902 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json index 933ce7656..b46677e06 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:cadmium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json index 95fc9d842..e1381dee8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json index 422b22ba5..f4f7ca138 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json index edf3966c1..a2ad9dee5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json index 5699d3d50..fd98d1ce7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:chromium_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json new file mode 100644 index 000000000..a8b94aacd --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_copper_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_copper_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json new file mode 100644 index 000000000..e073aaf3b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_copper_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_copper_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json new file mode 100644 index 000000000..f0c2d5e33 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_copper_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_copper_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json new file mode 100644 index 000000000..57a510ff3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_copper_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_copper_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json index be5485b6b..196da0636 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json index 255252ac3..f55ff8bce 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json index a9b332f65..9daaa06b0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json index addb8ec27..a0942e1fc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:duralumin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json index 87812012f..5170775d1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json index e3a7eb462..b72d03996 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json index 8d30b71bf..dab43b914 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json index 93fc72f5e..37e316dec 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:electrum_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json new file mode 100644 index 000000000..ff3f8e0aa --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_gold_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_gold_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json new file mode 100644 index 000000000..f41f85f4c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_gold_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_gold_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json new file mode 100644 index 000000000..882b135bb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_gold_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_gold_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json new file mode 100644 index 000000000..ff0fb9bf7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_gold_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_gold_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json new file mode 100644 index 000000000..ce418ab4e --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_iron_nugget_12" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_iron_nugget_12" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json new file mode 100644 index 000000000..112cc868b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_iron_nugget_16" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_iron_nugget_16" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json new file mode 100644 index 000000000..349c8a316 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_iron_nugget_4" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_iron_nugget_4" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json new file mode 100644 index 000000000..9e93151e6 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_iron_nugget_8" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_iron_nugget_8" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json index 0f0fdde96..db9016e5f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json index a8fab6e59..2ffc5bff5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json index 1b82d2a31..7f884e7a3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json index 34dccea27..4986d9111 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:nicrosil_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json index ed9b5b597..07ff4b7fa 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json index 74d916a81..83440b0df 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json index 11886b44b..89b6a8ef8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json index d6d9b7f6e..fc9d6f30b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:pewter_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json index 8d39a66be..fbaff47df 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json index c450c4fa4..adb06a159 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json index 67a089c01..28f38ba39 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json index d3098fd24..afb9514fe 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:steel_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json index 5b401e2d2..8f694f3fe 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json index bc9069920..7cccd9c31 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json index 35e56d14e..8eced9abb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json index 5ededbb8d..9d9f68f59 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:tin_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json index 369facbe5..8b8529ace 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json index b87a78944..c3d0dc561 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json index 6619c980c..fb04d602e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json index 69353f5b9..731cff74f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:zinc_nugget" + "cosmere:lerasium_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json index a6c6e0907..73f5c6720 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json index 8a26112d6..31105d947 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json index 81ed60da4..a1d3c967f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json index 77aa91987..b59be4f83 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json index 5913b3979..47b1cceaf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json index d4db426a5..04cc145a9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json index 40f702c27..428c001bc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json index 5eced7152..759c2640f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json index f22c76b59..d3567c76c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json index 4d14d474c..67cb5a67c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json index 98abb763e..9392487f1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json index dace93bc1..9db333eca 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json index d8881b0da..10093b0e0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json index d228d318d..13f186f06 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json index 8c5750a3b..291d1665b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json index 79e0dfa21..06a0728f0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json index c153fdbfc..7683820f4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json index 360f4e308..33b2d8a90 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json index 2b5bf334a..302f6e993 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json index 3defba013..f24136e23 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json index a6bfdff37..4ed8b4a18 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json index c8d9b7985..af4af4de7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json index 288de5a37..f23b1200c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json index 2d30d4be1..4ff2f063c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json new file mode 100644 index 000000000..96bf54a69 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json new file mode 100644 index 000000000..50156f1c2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json new file mode 100644 index 000000000..03748cc75 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json new file mode 100644 index 000000000..b4f7020fc --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json index f9b2c0438..f7ee68dfe 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json index 6c72de913..e1701da9d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json index a94f699f1..ce2b6a110 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json index b748cff7f..86f6ee839 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json index 5202fe8ab..426872db8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json index 8cf40e5dd..7e156ef01 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json index 0f616cd3d..6e621e4b7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json index 60a1ff2fb..bc9052f7a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json new file mode 100644 index 000000000..c06920271 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json new file mode 100644 index 000000000..079c9f088 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json new file mode 100644 index 000000000..c80274a97 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json new file mode 100644 index 000000000..8a20db314 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json new file mode 100644 index 000000000..ea597288f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json new file mode 100644 index 000000000..77676e01d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json new file mode 100644 index 000000000..4c2aac1da --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json new file mode 100644 index 000000000..2c8653902 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasatium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json index 2409d1775..ee720cabe 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json index 96a9221f8..3a48121d8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json index 09798fce0..9017f4e69 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json index ea7697a64..36bbf7903 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json index 20a503e8d..d4966ecf9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json index 7214db854..20a744b73 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json index 1fcf6f60e..0a84d404d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json index df9a10b92..41367c837 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json index 8cf0dca1f..cfcf395b8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json index aafcef422..974f1afbd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json index a50a412c6..c7bb37fe9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json index 5712c6df4..0e363388d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json index 434ea9b63..f5c112fe2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json index e099219ad..cefb63388 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json index 70faa2855..347d20c77 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json index 5c1ce6c18..c94c86996 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json index 1cc1029e0..d5e0b48dc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json index 4582e4029..402ebcf75 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json index ed6823a11..4446719c1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json index 13acdc6a1..2bfd4d533 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json index afa4dc147..343ac826e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json index fde967527..97c981794 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json index 1e068190f..d5f3b381c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json index 86ab6ebc1..9769a8bb4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json index 872d79ccf..cedf8509e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json index 57ca065ec..b4f257efb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json index ce871b2fa..957e71f15 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json index 0243c4048..bd4b177eb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json index 639b5f447..1cd87294c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json index 808226460..22809d036 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json index 102c24ca4..e302dbd35 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json index cb116c2c2..ae166676c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json index 56e4d5ac6..d27b1b3a7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json index df6d6dd8f..6f9531f33 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json index 405abefd1..4b073b78f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json index fff3c7fbe..2550d29a7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json index 340ab6039..2b31532d9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json index 4d995ffb5..d60b1ea60 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json index 67f8987d6..947e619f1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json index 57662acce..d0be165b9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json index e2b701585..db2d56f14 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json index 6e1e42653..950b1cd30 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json index 03d6c4aa0..b79387fbf 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json index e0ebcc065..2fb0cb1c2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json new file mode 100644 index 000000000..897ca757d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json new file mode 100644 index 000000000..1920d5f5c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json new file mode 100644 index 000000000..71645d023 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json new file mode 100644 index 000000000..dcddf087f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "cosmere:copper_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json index 818d02c22..974adf5a9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json index ef1a429ad..ae34b8d83 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json index d1eec1a67..86af08d3a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json index 00c7a56cb..7e973d639 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json index 86071194a..3c2d3c53c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json index 9e77e45c8..53f4cf3c1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json index d6c90c6de..41024a144 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json index 222e082ea..ca926bd89 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json new file mode 100644 index 000000000..f9b045f28 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json new file mode 100644 index 000000000..fcf3fd881 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json new file mode 100644 index 000000000..c4c5a9295 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json new file mode 100644 index 000000000..ee4566ae4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:gold_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json new file mode 100644 index 000000000..5bce7379b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:12}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json new file mode 100644 index 000000000..e71e50526 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json new file mode 100644 index 000000000..5c167311a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:4}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json new file mode 100644 index 000000000..aba0cd0d4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "item": "minecraft:iron_nugget" + }, + "J": { + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:8}" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "count": 8, + "item": "cosmere:lerasium_alloy_nugget", + "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json index 434750da0..99da2c9d4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json index e02e5dbf8..83791bf3a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json index 815537068..76051e961 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json index 37f5518ad..4bd2e08fb 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json index b23c9976b..27c124635 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json index fb7d493a7..892f1af62 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json index 1295cc934..82db2944a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json index 9105d2926..8a352f30a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json index ee4956b40..df5a9e70d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json index 2aaf63664..77e561c85 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json index 73ce3ad33..26cdada6b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json index f754f80e9..d6ccd46e5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json index cdc4049cb..d6ffe49e1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json index 2a78635b9..770b8d020 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json index c830d7f47..674ea3d2b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json index 55a45c9f3..80acc208d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json index 2ec91392d..354191c03 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json index 1cef72c1b..85b10bf64 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json index afd8bede8..d389f06bd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json index fb23b28f3..78c96e8f0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json @@ -17,8 +17,9 @@ "III" ], "result": { + "count": 8, "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:4}" + "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" }, "show_notification": true } \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index ce4478a7b..b4ca93368 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-09T13:51:42.95226 Curios for feruchemy -6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-11-09T15:19:11.7972445 Curios for feruchemy +73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json index da81b44bb..61b319ff8 100644 --- a/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json +++ b/src/datagen/generated/feruchemy/data/feruchemy/curios/entities/feruchemists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "ring", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 45e71d963..5d0cb771f 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-09T13:51:42.984793 Curios for hemalurgy -2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-11-09T15:19:11.8407843 Curios for hemalurgy +626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index 61647c56e..a8f082ae1 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:player", - "minecraft:armor_stand" + "minecraft:armor_stand", + "minecraft:player" ], "slots": [ "linchpin", diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 1d8cb6622..342f873e8 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -6,6 +6,7 @@ import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; @@ -19,6 +20,7 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; @@ -272,11 +274,26 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input protected void godMetalAlloyRecipe(Consumer consumer, ItemLike output, ItemLike inputMetal, ItemLike inputGodMetal) { - if(!(inputMetal instanceof IHasMetalType metalItem)) return; + Metals.MetalType metalType; + if(inputMetal instanceof IHasMetalType inMetal){ + metalType = inMetal.getMetalType(); + } + else if(inputMetal == Items.GOLD_NUGGET) + { + metalType = Metals.MetalType.GOLD; + } + else if(inputMetal == Items.IRON_NUGGET) + { + metalType = Metals.MetalType.IRON; + } else + { + metalType = Metals.MetalType.IRON; + } + if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; CompoundTag outNbt = new CompoundTag(); - outNbt.putInt("nuggetSize", 4); - int[] metalIds = new int[] { metalItem.getMetalType().getID() }; + outNbt.putInt("nuggetSize", 8); + int[] metalIds = new int[] { metalType.getID() }; outNbt.putIntArray("alloyedMetals", metalIds); for(int inSize = 4; inSize <= 16; inSize+=4) @@ -285,7 +302,7 @@ protected void godMetalAlloyRecipe(Consumer consumer, ItemLike o inNbt.putInt("nuggetSize", inSize); String name = godMetalItem.getMetalType().getName() + "_" + - metalItem.getMetalType().getName() + "_nugget_" + inSize; + metalType.getName() + "_nugget_" + inSize; NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) .define('I', inputMetal) @@ -293,7 +310,7 @@ protected void godMetalAlloyRecipe(Consumer consumer, ItemLike o .pattern("III") .pattern("IJI") .pattern("III") - .unlockedBy("has_item", has(inputMetal)) + .unlockedBy("has_item", has(inputGodMetal)) .resultNbt(outNbt) .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index b5b1ba976..2515197e4 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -67,10 +67,10 @@ protected void addRecipes(Consumer consumer) Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; for(Metals.MetalType godMetal : godMetals) { - if(metalType.hasMaterialItem() || metalType == Metals.MetalType.COPPER) + if(!metalType.hasMaterialItem()) { Item item; - switch (godMetal) + switch (metalType) { case IRON: item = Items.IRON_NUGGET; @@ -80,7 +80,6 @@ protected void addRecipes(Consumer consumer) break; default: item = Items.IRON_NUGGET; - break; } godMetalAlloyRecipe(consumer, ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetal).get(), diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java index c51925cf1..b7eb712c6 100644 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java @@ -52,12 +52,6 @@ public NbtShapedRecipeBuilder define(char symbol, TagKey tag) { return this; } - public NbtShapedRecipeBuilder defineStrict(char symbol, ItemLike item, CompoundTag nbt) { - ItemStack s = new ItemStack(item); - if (nbt != null && !nbt.isEmpty()) s.setTag(nbt.copy()); - return define(symbol, StrictNBTIngredient.of(s)); - } - public NbtShapedRecipeBuilder definePartial(char symbol, ItemLike item, CompoundTag subsetNbt) { return define(symbol, PartialNBTIngredient.of(item, subsetNbt)); } diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java index 9ce14ee6d..87228b375 100644 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java @@ -55,54 +55,8 @@ public NbtShapelessRecipeBuilder requires(Ingredient ingredient, int count) { return this; } - public NbtShapelessRecipeBuilder requires(TagKey tag) { - base.requires(Ingredient.of(tag)); - return this; - } - - public NbtShapelessRecipeBuilder requires(TagKey tag, int count) { - base.requires(Ingredient.of(tag), count); - return this; - } - - public NbtShapelessRecipeBuilder requiresPartial(ItemLike item, CompoundTag subsetNbt) { - ItemStack s = new ItemStack(item); - if (subsetNbt != null && !subsetNbt.isEmpty()) s.setTag(subsetNbt.copy()); - return requires(PartialNBTIngredient.of(s)); - } - - public NbtShapelessRecipeBuilder requiresStrict(ItemLike item, CompoundTag exactNbt) { - ItemStack s = new ItemStack(item); - if (exactNbt != null && !exactNbt.isEmpty()) s.setTag(exactNbt.copy()); - return requires(StrictNBTIngredient.of(s)); - } - public NbtShapelessRecipeBuilder requiresPartial(ItemLike item, CompoundTag subsetNbt, int count) { - ItemStack s = new ItemStack(item); - if (subsetNbt != null && !subsetNbt.isEmpty()) s.setTag(subsetNbt.copy()); - return requires(PartialNBTIngredient.of(s), count); - } - - public NbtShapelessRecipeBuilder requiresStrict(ItemLike item, CompoundTag exactNbt, int count) { - ItemStack s = new ItemStack(item); - if (exactNbt != null && !exactNbt.isEmpty()) s.setTag(exactNbt.copy()); - return requires(StrictNBTIngredient.of(s), count); - } - - public NbtShapelessRecipeBuilder requiresPartial(TagKey tag, CompoundTag subsetNbt) { - return requires(wrapForgeNbtIngredient("forge:partial_nbt", Ingredient.of(tag), subsetNbt)); - } - - public NbtShapelessRecipeBuilder requiresStrict(TagKey tag, CompoundTag exactNbt) { - return requires(wrapForgeNbtIngredient("forge:strict_nbt", Ingredient.of(tag), exactNbt)); - } - - public NbtShapelessRecipeBuilder requiresPartial(TagKey tag, CompoundTag subsetNbt, int count) { - return requires(wrapForgeNbtIngredient("forge:partial_nbt", Ingredient.of(tag), subsetNbt), count); - } - - public NbtShapelessRecipeBuilder requiresStrict(TagKey tag, CompoundTag exactNbt, int count) { - return requires(wrapForgeNbtIngredient("forge:strict_nbt", Ingredient.of(tag), exactNbt), count); + return requires(PartialNBTIngredient.of(item, subsetNbt), count); } public NbtShapelessRecipeBuilder group(@Nullable String group) { base.group(group); return this; } @@ -120,14 +74,6 @@ private static FinishedRecipe wrap(FinishedRecipe inner, @Nullable CompoundTag r return new FinishedWithResultNbt(inner, resultNbt.copy()); } - private static Ingredient wrapForgeNbtIngredient(String forgeType, Ingredient base, CompoundTag nbt) { - JsonObject wrapper = new JsonObject(); - wrapper.addProperty("type", forgeType); - wrapper.add("ingredient", base.toJson()); - wrapper.addProperty("nbt", (nbt == null || nbt.isEmpty()) ? "{}" : nbt.toString()); - return Ingredient.fromJson(wrapper); - } - private static final class FinishedWithResultNbt implements FinishedRecipe { private final FinishedRecipe inner; private final CompoundTag nbt; From 22f74e5e337d1ca5226e70893f580fd557d00f7f Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 16:55:23 -0500 Subject: [PATCH 1055/1090] optimize imports --- .../AllomancyEntityEventHandler.java | 1 - .../java/leaf/cosmere/items/ItemModelsGen.java | 3 +-- .../cosmere/recipe/NbtShapedRecipeBuilder.java | 4 +--- .../recipe/NbtShapelessRecipeBuilder.java | 3 --- .../FeruchemyEntityEventHandler.java | 1 - .../feruchemy/common/utils/MiscHelper.java | 7 ------- .../common/items/GodMetalAlloyNuggetItem.java | 18 +++++++++++------- .../common/items/GodMetalNuggetItem.java | 3 --- .../cosmere/common/items/MetalNuggetItem.java | 1 - .../common/registry/CreativeTabsRegistry.java | 1 - 10 files changed, 13 insertions(+), 29 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 20123eaae..91c19e247 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -11,7 +11,6 @@ import leaf.cosmere.allomancy.common.manifestation.AllomancyNicrosil; import leaf.cosmere.allomancy.common.manifestation.AllomancyPewter; import leaf.cosmere.allomancy.common.utils.MiscHelper; -import leaf.cosmere.api.IGrantsManifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.GodMetalNuggetItem; diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index 9d7a4710d..f509c12a8 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -7,13 +7,12 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.*; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; import net.minecraftforge.client.model.generators.ItemModelBuilder; import net.minecraftforge.client.model.generators.ItemModelProvider; import net.minecraftforge.client.model.generators.ModelFile; diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java index b7eb712c6..dba4a0a7a 100644 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java @@ -3,18 +3,16 @@ import com.google.gson.JsonObject; import net.minecraft.advancements.CriterionTriggerInstance; import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.RecipeBuilder; +import net.minecraft.data.recipes.RecipeCategory; import net.minecraft.data.recipes.ShapedRecipeBuilder; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.crafting.PartialNBTIngredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; import javax.annotation.Nullable; import java.util.function.Consumer; diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java index 87228b375..daae24047 100644 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java +++ b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java @@ -8,13 +8,10 @@ import net.minecraft.data.recipes.ShapelessRecipeBuilder; import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.crafting.PartialNBTIngredient; -import net.minecraftforge.common.crafting.StrictNBTIngredient; import javax.annotation.Nullable; import java.util.function.Consumer; diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java index 3da7b71d3..0faf7a369 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/eventHandlers/FeruchemyEntityEventHandler.java @@ -4,7 +4,6 @@ package leaf.cosmere.feruchemy.common.eventHandlers; -import leaf.cosmere.api.IGrantsManifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.EntityHelper; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index 63165d6e2..03914bda9 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -9,19 +9,12 @@ import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; -import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.items.GodMetalNuggetItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; -import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; import java.util.ArrayList; -import java.util.HashSet; public class MiscHelper { diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 601d0371a..25cd43c64 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -1,6 +1,9 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.*; +import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.Metals; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.ChatFormatting; @@ -8,19 +11,20 @@ import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.RangedAttribute; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.*; +import net.minecraft.world.item.CreativeModeTab; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import javax.annotation.Nonnull; -import java.util.*; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class GodMetalAlloyNuggetItem extends AlloyNuggetItem implements IHasSize, IGrantsManifestations { diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 33fb50150..fadf86373 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -7,8 +7,6 @@ import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.RangedAttribute; @@ -19,7 +17,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index 0e4e318bd..bcd12624c 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -15,7 +15,6 @@ import net.minecraft.world.level.Level; import javax.annotation.Nonnull; -import java.util.Set; public class MetalNuggetItem extends MetalItem { diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 0992fb58f..5e33d4f9e 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -5,7 +5,6 @@ package leaf.cosmere.common.registry; import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; From 79121160ac8460cf37b195714df1dc00534514f7 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 18:25:06 -0500 Subject: [PATCH 1056/1090] cleanup and new method of handling nuggets --- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 6 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 354 +++++------------- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 4 + .../cosmere/models/item/atium_god_nugget.json | 6 + .../models/item/harmonium_god_nugget.json | 6 + .../models/item/lerasatium_god_nugget.json | 6 + .../models/item/lerasium_god_nugget.json | 6 + ...in_nugget_8.json => atium_god_nugget.json} | 6 +- ...ugget_4.json => harmonium_god_nugget.json} | 6 +- ...4.json => lerasatium_aluminum_nugget.json} | 6 +- ....json => lerasatium_bendalloy_nugget.json} | 6 +- .../lerasatium_bendalloy_nugget_12.json | 35 -- .../lerasatium_bendalloy_nugget_16.json | 35 -- .../lerasatium_bendalloy_nugget_4.json | 35 -- .../lerasatium_bendalloy_nugget_8.json | 35 -- ...t_12.json => lerasatium_brass_nugget.json} | 6 +- ..._12.json => lerasatium_bronze_nugget.json} | 6 +- .../lerasatium_bronze_nugget_12.json | 35 -- .../lerasatium_bronze_nugget_16.json | 35 -- .../lerasatium_bronze_nugget_4.json | 35 -- .../lerasatium_bronze_nugget_8.json | 35 -- .../lerasatium_cadmium_nugget.json | 35 ++ .../lerasatium_cadmium_nugget_12.json | 35 -- .../lerasatium_cadmium_nugget_16.json | 35 -- .../lerasatium_cadmium_nugget_4.json | 35 -- .../lerasatium_cadmium_nugget_8.json | 35 -- .../lerasatium_chromium_nugget.json | 35 ++ .../lerasatium_chromium_nugget_12.json | 35 -- .../lerasatium_chromium_nugget_16.json | 35 -- .../lerasatium_chromium_nugget_4.json | 35 -- .../lerasatium_chromium_nugget_8.json | 35 -- ..._16.json => lerasatium_copper_nugget.json} | 6 +- .../lerasatium_copper_nugget_12.json | 35 -- .../lerasatium_copper_nugget_16.json | 35 -- .../lerasatium_copper_nugget_4.json | 35 -- ....json => lerasatium_duralumin_nugget.json} | 6 +- .../lerasatium_duralumin_nugget_12.json | 35 -- .../lerasatium_duralumin_nugget_16.json | 35 -- .../lerasatium_duralumin_nugget_4.json | 35 -- .../lerasatium_duralumin_nugget_8.json | 35 -- .../lerasatium_electrum_nugget.json | 35 ++ .../lerasatium_electrum_nugget_12.json | 35 -- .../lerasatium_electrum_nugget_16.json | 35 -- .../lerasatium_electrum_nugget_4.json | 35 -- .../lerasatium_electrum_nugget_8.json | 35 -- ...gget_4.json => lerasatium_god_nugget.json} | 4 +- ...get_4.json => lerasatium_gold_nugget.json} | 6 +- ...get_8.json => lerasatium_iron_nugget.json} | 6 +- .../lerasatium_iron_nugget_12.json | 35 -- .../lerasatium_iron_nugget_16.json | 35 -- .../lerasatium_nicrosil_nugget.json | 35 ++ .../lerasatium_nicrosil_nugget_12.json | 35 -- .../lerasatium_nicrosil_nugget_16.json | 35 -- .../lerasatium_nicrosil_nugget_4.json | 35 -- .../lerasatium_nicrosil_nugget_8.json | 35 -- .../decorations/lerasatium_pewter_nugget.json | 35 ++ .../lerasatium_pewter_nugget_12.json | 35 -- .../lerasatium_pewter_nugget_16.json | 35 -- .../lerasatium_pewter_nugget_4.json | 35 -- .../lerasatium_pewter_nugget_8.json | 35 -- ...t_16.json => lerasatium_steel_nugget.json} | 6 +- .../lerasatium_steel_nugget_12.json | 35 -- .../lerasatium_steel_nugget_16.json | 35 -- .../lerasatium_steel_nugget_4.json | 35 -- .../lerasatium_steel_nugget_8.json | 35 -- ...gget_8.json => lerasatium_tin_nugget.json} | 6 +- .../decorations/lerasatium_tin_nugget_12.json | 35 -- .../decorations/lerasatium_tin_nugget_16.json | 35 -- ...get_4.json => lerasatium_zinc_nugget.json} | 6 +- .../lerasatium_zinc_nugget_12.json | 35 -- .../lerasatium_zinc_nugget_16.json | 35 -- .../decorations/lerasatium_zinc_nugget_4.json | 35 -- .../decorations/lerasatium_zinc_nugget_8.json | 35 -- ...t_4.json => lerasium_aluminum_nugget.json} | 6 +- .../lerasium_aluminum_nugget_12.json | 35 -- .../lerasium_aluminum_nugget_16.json | 35 -- .../lerasium_aluminum_nugget_4.json | 35 -- .../lerasium_aluminum_nugget_8.json | 35 -- .../lerasium_bendalloy_nugget.json | 35 ++ .../lerasium_bendalloy_nugget_12.json | 35 -- .../lerasium_bendalloy_nugget_16.json | 35 -- .../lerasium_bendalloy_nugget_4.json | 35 -- .../lerasium_bendalloy_nugget_8.json | 35 -- ...gget_4.json => lerasium_brass_nugget.json} | 6 +- .../decorations/lerasium_brass_nugget_16.json | 35 -- ...get_8.json => lerasium_bronze_nugget.json} | 6 +- .../lerasium_bronze_nugget_12.json | 35 -- .../lerasium_bronze_nugget_16.json | 35 -- .../decorations/lerasium_bronze_nugget_4.json | 35 -- .../decorations/lerasium_bronze_nugget_8.json | 35 -- ...et_8.json => lerasium_cadmium_nugget.json} | 6 +- .../lerasium_cadmium_nugget_12.json | 35 -- .../lerasium_cadmium_nugget_16.json | 35 -- .../lerasium_cadmium_nugget_4.json | 35 -- .../lerasium_cadmium_nugget_8.json | 35 -- ...t_8.json => lerasium_chromium_nugget.json} | 6 +- .../lerasium_chromium_nugget_12.json | 35 -- .../lerasium_chromium_nugget_16.json | 35 -- .../lerasium_chromium_nugget_4.json | 35 -- .../lerasium_chromium_nugget_8.json | 35 -- ...get_8.json => lerasium_copper_nugget.json} | 6 +- .../lerasium_copper_nugget_12.json | 35 -- .../lerasium_copper_nugget_16.json | 35 -- .../decorations/lerasium_copper_nugget_4.json | 35 -- .../decorations/lerasium_copper_nugget_8.json | 35 -- .../lerasium_duralumin_nugget.json | 35 ++ .../lerasium_duralumin_nugget_12.json | 35 -- .../lerasium_duralumin_nugget_16.json | 35 -- .../lerasium_duralumin_nugget_4.json | 35 -- .../lerasium_duralumin_nugget_8.json | 35 -- .../decorations/lerasium_electrum_nugget.json | 35 ++ .../lerasium_electrum_nugget_12.json | 35 -- .../lerasium_electrum_nugget_16.json | 35 -- .../lerasium_electrum_nugget_4.json | 35 -- .../lerasium_electrum_nugget_8.json | 35 -- ...nugget_4.json => lerasium_god_nugget.json} | 4 +- ...ugget_4.json => lerasium_gold_nugget.json} | 6 +- .../decorations/lerasium_gold_nugget_12.json | 35 -- .../decorations/lerasium_gold_nugget_16.json | 35 -- ...ugget_8.json => lerasium_iron_nugget.json} | 6 +- .../decorations/lerasium_iron_nugget_12.json | 35 -- .../decorations/lerasium_iron_nugget_16.json | 35 -- .../decorations/lerasium_nicrosil_nugget.json | 35 ++ .../lerasium_nicrosil_nugget_12.json | 35 -- .../lerasium_nicrosil_nugget_16.json | 35 -- .../lerasium_nicrosil_nugget_4.json | 35 -- .../lerasium_nicrosil_nugget_8.json | 35 -- ...et_12.json => lerasium_pewter_nugget.json} | 6 +- .../lerasium_pewter_nugget_12.json | 35 -- .../lerasium_pewter_nugget_16.json | 35 -- .../decorations/lerasium_pewter_nugget_4.json | 35 -- .../decorations/lerasium_pewter_nugget_8.json | 35 -- ...gget_8.json => lerasium_steel_nugget.json} | 6 +- .../decorations/lerasium_steel_nugget_12.json | 35 -- .../decorations/lerasium_steel_nugget_16.json | 35 -- .../decorations/lerasium_steel_nugget_4.json | 35 -- .../decorations/lerasium_steel_nugget_8.json | 35 -- ...nugget_8.json => lerasium_tin_nugget.json} | 6 +- .../decorations/lerasium_tin_nugget_12.json | 35 -- .../decorations/lerasium_tin_nugget_16.json | 35 -- .../decorations/lerasium_zinc_nugget.json | 35 ++ .../decorations/lerasium_zinc_nugget_12.json | 35 -- .../decorations/lerasium_zinc_nugget_16.json | 35 -- .../decorations/lerasium_zinc_nugget_4.json | 35 -- .../decorations/lerasium_zinc_nugget_8.json | 35 -- .../conversions/atium_item_deconstruct.json | 2 +- .../harmonium_item_deconstruct.json | 2 +- .../lerasatium_item_deconstruct.json | 2 +- .../lerasium_item_deconstruct.json | 2 +- .../cosmere/recipes/atium_god_nugget.json | 13 + .../data/cosmere/recipes/atium_ingot.json | 18 +- .../conversions/atium_item_deconstruct.json | 2 +- .../harmonium_item_deconstruct.json | 2 +- .../lerasatium_item_deconstruct.json | 2 +- .../lerasium_item_deconstruct.json | 2 +- .../cosmere/recipes/harmonium_god_nugget.json | 13 + .../data/cosmere/recipes/harmonium_ingot.json | 18 +- ...4.json => lerasatium_aluminum_nugget.json} | 4 +- .../lerasatium_aluminum_nugget_12.json | 25 -- .../lerasatium_aluminum_nugget_16.json | 25 -- .../recipes/lerasatium_aluminum_nugget_8.json | 25 -- ....json => lerasatium_bendalloy_nugget.json} | 4 +- .../lerasatium_bendalloy_nugget_12.json | 25 -- .../lerasatium_bendalloy_nugget_16.json | 25 -- .../lerasatium_bendalloy_nugget_8.json | 25 -- ...et_4.json => lerasatium_brass_nugget.json} | 4 +- .../recipes/lerasatium_brass_nugget_12.json | 25 -- .../recipes/lerasatium_brass_nugget_16.json | 25 -- .../recipes/lerasatium_brass_nugget_8.json | 25 -- ...t_4.json => lerasatium_bronze_nugget.json} | 4 +- .../recipes/lerasatium_bronze_nugget_12.json | 25 -- .../recipes/lerasatium_bronze_nugget_16.json | 25 -- .../recipes/lerasatium_bronze_nugget_8.json | 25 -- ..._4.json => lerasatium_cadmium_nugget.json} | 4 +- .../recipes/lerasatium_cadmium_nugget_12.json | 25 -- .../recipes/lerasatium_cadmium_nugget_16.json | 25 -- .../recipes/lerasatium_cadmium_nugget_8.json | 25 -- ...4.json => lerasatium_chromium_nugget.json} | 4 +- .../lerasatium_chromium_nugget_12.json | 25 -- .../lerasatium_chromium_nugget_16.json | 25 -- .../recipes/lerasatium_chromium_nugget_8.json | 25 -- ...t_4.json => lerasatium_copper_nugget.json} | 4 +- .../recipes/lerasatium_copper_nugget_12.json | 25 -- .../recipes/lerasatium_copper_nugget_16.json | 25 -- .../recipes/lerasatium_copper_nugget_8.json | 25 -- ....json => lerasatium_duralumin_nugget.json} | 4 +- .../lerasatium_duralumin_nugget_12.json | 25 -- .../lerasatium_duralumin_nugget_16.json | 25 -- .../lerasatium_duralumin_nugget_8.json | 25 -- ...4.json => lerasatium_electrum_nugget.json} | 4 +- .../lerasatium_electrum_nugget_12.json | 25 -- .../lerasatium_electrum_nugget_16.json | 25 -- .../recipes/lerasatium_electrum_nugget_8.json | 25 -- .../recipes/lerasatium_god_nugget.json | 13 + ...get_4.json => lerasatium_gold_nugget.json} | 4 +- .../recipes/lerasatium_gold_nugget_12.json | 25 -- .../recipes/lerasatium_gold_nugget_16.json | 25 -- .../recipes/lerasatium_gold_nugget_8.json | 25 -- .../cosmere/recipes/lerasatium_ingot.json | 18 +- ...get_4.json => lerasatium_iron_nugget.json} | 4 +- .../recipes/lerasatium_iron_nugget_12.json | 25 -- .../recipes/lerasatium_iron_nugget_16.json | 25 -- .../recipes/lerasatium_iron_nugget_8.json | 25 -- ...4.json => lerasatium_nicrosil_nugget.json} | 4 +- .../lerasatium_nicrosil_nugget_12.json | 25 -- .../lerasatium_nicrosil_nugget_16.json | 25 -- .../recipes/lerasatium_nicrosil_nugget_8.json | 25 -- ...t_4.json => lerasatium_pewter_nugget.json} | 4 +- .../recipes/lerasatium_pewter_nugget_12.json | 25 -- .../recipes/lerasatium_pewter_nugget_16.json | 25 -- .../recipes/lerasatium_pewter_nugget_8.json | 25 -- ...et_4.json => lerasatium_steel_nugget.json} | 4 +- .../recipes/lerasatium_steel_nugget_12.json | 25 -- .../recipes/lerasatium_steel_nugget_16.json | 25 -- .../recipes/lerasatium_steel_nugget_8.json | 25 -- ...gget_4.json => lerasatium_tin_nugget.json} | 4 +- .../recipes/lerasatium_tin_nugget_12.json | 25 -- .../recipes/lerasatium_tin_nugget_16.json | 25 -- .../recipes/lerasatium_tin_nugget_8.json | 25 -- ...get_4.json => lerasatium_zinc_nugget.json} | 4 +- .../recipes/lerasatium_zinc_nugget_12.json | 25 -- .../recipes/lerasatium_zinc_nugget_16.json | 25 -- .../recipes/lerasatium_zinc_nugget_8.json | 25 -- ...t_4.json => lerasium_aluminum_nugget.json} | 4 +- .../recipes/lerasium_aluminum_nugget_12.json | 25 -- .../recipes/lerasium_aluminum_nugget_16.json | 25 -- .../recipes/lerasium_aluminum_nugget_8.json | 25 -- ..._4.json => lerasium_bendalloy_nugget.json} | 4 +- .../recipes/lerasium_bendalloy_nugget_12.json | 25 -- .../recipes/lerasium_bendalloy_nugget_16.json | 25 -- .../recipes/lerasium_bendalloy_nugget_8.json | 25 -- ...gget_4.json => lerasium_brass_nugget.json} | 4 +- .../recipes/lerasium_brass_nugget_12.json | 25 -- .../recipes/lerasium_brass_nugget_16.json | 25 -- .../recipes/lerasium_brass_nugget_8.json | 25 -- ...get_4.json => lerasium_bronze_nugget.json} | 4 +- .../recipes/lerasium_bronze_nugget_12.json | 25 -- .../recipes/lerasium_bronze_nugget_16.json | 25 -- .../recipes/lerasium_bronze_nugget_8.json | 25 -- ...et_4.json => lerasium_cadmium_nugget.json} | 4 +- .../recipes/lerasium_cadmium_nugget_12.json | 25 -- .../recipes/lerasium_cadmium_nugget_16.json | 25 -- .../recipes/lerasium_cadmium_nugget_8.json | 25 -- ...t_4.json => lerasium_chromium_nugget.json} | 4 +- .../recipes/lerasium_chromium_nugget_12.json | 25 -- .../recipes/lerasium_chromium_nugget_16.json | 25 -- .../recipes/lerasium_chromium_nugget_8.json | 25 -- ...get_4.json => lerasium_copper_nugget.json} | 4 +- .../recipes/lerasium_copper_nugget_12.json | 25 -- .../recipes/lerasium_copper_nugget_16.json | 25 -- .../recipes/lerasium_copper_nugget_8.json | 25 -- ..._4.json => lerasium_duralumin_nugget.json} | 4 +- .../recipes/lerasium_duralumin_nugget_12.json | 25 -- .../recipes/lerasium_duralumin_nugget_16.json | 25 -- .../recipes/lerasium_duralumin_nugget_8.json | 25 -- ...t_4.json => lerasium_electrum_nugget.json} | 4 +- .../recipes/lerasium_electrum_nugget_12.json | 25 -- .../recipes/lerasium_electrum_nugget_16.json | 25 -- .../recipes/lerasium_electrum_nugget_8.json | 25 -- .../cosmere/recipes/lerasium_god_nugget.json | 13 + ...ugget_4.json => lerasium_gold_nugget.json} | 4 +- .../recipes/lerasium_gold_nugget_12.json | 25 -- .../recipes/lerasium_gold_nugget_16.json | 25 -- .../recipes/lerasium_gold_nugget_8.json | 25 -- .../data/cosmere/recipes/lerasium_ingot.json | 18 +- ...ugget_4.json => lerasium_iron_nugget.json} | 4 +- .../recipes/lerasium_iron_nugget_12.json | 25 -- .../recipes/lerasium_iron_nugget_16.json | 25 -- .../recipes/lerasium_iron_nugget_8.json | 25 -- ...t_4.json => lerasium_nicrosil_nugget.json} | 4 +- .../recipes/lerasium_nicrosil_nugget_12.json | 25 -- .../recipes/lerasium_nicrosil_nugget_16.json | 25 -- .../recipes/lerasium_nicrosil_nugget_8.json | 25 -- ...get_4.json => lerasium_pewter_nugget.json} | 4 +- .../recipes/lerasium_pewter_nugget_12.json | 25 -- .../recipes/lerasium_pewter_nugget_16.json | 25 -- .../recipes/lerasium_pewter_nugget_8.json | 25 -- ...gget_4.json => lerasium_steel_nugget.json} | 4 +- .../recipes/lerasium_steel_nugget_12.json | 25 -- .../recipes/lerasium_steel_nugget_16.json | 25 -- .../recipes/lerasium_steel_nugget_8.json | 25 -- ...nugget_4.json => lerasium_tin_nugget.json} | 4 +- .../recipes/lerasium_tin_nugget_12.json | 25 -- .../recipes/lerasium_tin_nugget_16.json | 25 -- .../recipes/lerasium_tin_nugget_8.json | 25 -- ...ugget_4.json => lerasium_zinc_nugget.json} | 4 +- .../recipes/lerasium_zinc_nugget_12.json | 25 -- .../recipes/lerasium_zinc_nugget_16.json | 25 -- .../recipes/lerasium_zinc_nugget_8.json | 25 -- .../java/leaf/cosmere/BaseRecipeProvider.java | 54 ++- .../main/java/leaf/cosmere/RecipeGen.java | 2 + .../leaf/cosmere/items/ItemModelsGen.java | 6 + .../common/commands/CosmereCommand.java | 1 - .../commands/arguments/MetalArgumentType.java | 72 ---- .../subcommands/MetalNuggetCommand.java | 96 ----- .../common/items/GodMetalNuggetItem.java | 9 +- .../cosmere/common/items/MetalNuggetItem.java | 4 + .../common/registry/ArgumentTypeRegistry.java | 7 - .../common/registry/CreativeTabsRegistry.java | 6 +- .../common/registry/ItemsRegistry.java | 3 +- 301 files changed, 717 insertions(+), 6675 deletions(-) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_tin_nugget_8.json => atium_god_nugget.json} (80%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_iron_nugget_4.json => harmonium_god_nugget.json} (79%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_aluminum_nugget_4.json => lerasatium_aluminum_nugget.json} (78%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_aluminum_nugget_12.json => lerasatium_bendalloy_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_gold_nugget_12.json => lerasatium_brass_nugget.json} (78%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_brass_nugget_12.json => lerasatium_bronze_nugget.json} (78%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_brass_nugget_16.json => lerasatium_copper_nugget.json} (78%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_aluminum_nugget_16.json => lerasatium_duralumin_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_tin_nugget_4.json => lerasatium_god_nugget.json} (85%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_gold_nugget_4.json => lerasatium_gold_nugget.json} (79%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_gold_nugget_8.json => lerasatium_iron_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_gold_nugget_16.json => lerasatium_steel_nugget.json} (78%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_aluminum_nugget_8.json => lerasatium_tin_nugget.json} (85%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_iron_nugget_4.json => lerasatium_zinc_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_brass_nugget_4.json => lerasium_aluminum_nugget.json} (78%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_brass_nugget_4.json => lerasium_brass_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_tin_nugget_8.json => lerasium_bronze_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_iron_nugget_8.json => lerasium_cadmium_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_brass_nugget_8.json => lerasium_chromium_nugget.json} (78%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasatium_copper_nugget_8.json => lerasium_copper_nugget.json} (84%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_tin_nugget_4.json => lerasium_god_nugget.json} (86%) rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_gold_nugget_4.json => lerasium_gold_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_gold_nugget_8.json => lerasium_iron_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_brass_nugget_12.json => lerasium_pewter_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_brass_nugget_8.json => lerasium_steel_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/{lerasium_iron_nugget_8.json => lerasium_tin_nugget.json} (79%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_aluminum_nugget_4.json => lerasatium_aluminum_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_bendalloy_nugget_4.json => lerasatium_bendalloy_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_brass_nugget_4.json => lerasatium_brass_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_bronze_nugget_4.json => lerasatium_bronze_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_cadmium_nugget_4.json => lerasatium_cadmium_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_chromium_nugget_4.json => lerasatium_chromium_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_copper_nugget_4.json => lerasatium_copper_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_duralumin_nugget_4.json => lerasatium_duralumin_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_electrum_nugget_4.json => lerasatium_electrum_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_gold_nugget_4.json => lerasatium_gold_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_iron_nugget_4.json => lerasatium_iron_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_nicrosil_nugget_4.json => lerasatium_nicrosil_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_pewter_nugget_4.json => lerasatium_pewter_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_steel_nugget_4.json => lerasatium_steel_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_tin_nugget_4.json => lerasatium_tin_nugget.json} (76%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasatium_zinc_nugget_4.json => lerasatium_zinc_nugget.json} (76%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_aluminum_nugget_4.json => lerasium_aluminum_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_bendalloy_nugget_4.json => lerasium_bendalloy_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_brass_nugget_4.json => lerasium_brass_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_bronze_nugget_4.json => lerasium_bronze_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_cadmium_nugget_4.json => lerasium_cadmium_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_chromium_nugget_4.json => lerasium_chromium_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_copper_nugget_4.json => lerasium_copper_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_duralumin_nugget_4.json => lerasium_duralumin_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_electrum_nugget_4.json => lerasium_electrum_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_gold_nugget_4.json => lerasium_gold_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_iron_nugget_4.json => lerasium_iron_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_nicrosil_nugget_4.json => lerasium_nicrosil_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_pewter_nugget_4.json => lerasium_pewter_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_steel_nugget_4.json => lerasium_steel_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_tin_nugget_4.json => lerasium_tin_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json rename src/datagen/generated/cosmere/data/cosmere/recipes/{lerasium_zinc_nugget_4.json => lerasium_zinc_nugget.json} (77%) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json delete mode 100644 src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java delete mode 100644 src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index d9719dcff..3c75c24c1 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,7 +1,8 @@ -// 1.20.1 2025-11-09T09:23:08.402112 Item Models: cosmere +// 1.20.1 2025-11-09T18:08:07.0512334 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_alloy_nugget.json +0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_god_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_nugget.json 0f98979d062133ede87d33109e00afc8ee1d11b1 assets/cosmere/models/item/bendalloy_blend.json @@ -26,14 +27,17 @@ ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ing 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_alloy_nugget.json +4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_god_nugget.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json 31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/lead_nugget.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_god_nugget.json 998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nugget.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_god_nugget.json 7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nugget.json 8f9ecdfe13399031e5a39d1145e2866c39a9cf1c assets/cosmere/models/item/malatium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 7a90004c1..4bd720e66 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,7 +1,8 @@ -// 1.20.1 2025-11-09T16:50:57.9698733 Recipes +// 1.20.1 2025-11-09T18:15:16.56217 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json +48e21abbdd7de3dd40a0200e7b57afc64cddca74 data/cosmere/advancements/recipes/decorations/atium_god_nugget.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -17,138 +18,45 @@ c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decor 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json +ac7dd6de8c4e4299bbaf51818bb8891026ca7866 data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json -abe7b0cd27c0d2b7f131aea3fb9f4183e5174e7b data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json -a8aecb469010265fe065fa05a7875d9231978fa8 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json -a774e88bf1ba5c2a5bb47d2e53d6b92dac7dad8f data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json -1740161da38ac87e7e265a289f22ae90bdf08bff data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json -079522bf135732b354cafdc5ecb03dcdf00710fe data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json -7e1676000bc354413af9c862a9744b55609acd01 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json -2786342b2b8e0da67c4f7ecd31377219edec16ae data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json -d9ece70b7569fd94b44b5fabe04c098cf90571ef data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json +1bdb2f6673b5d62cd09401f6f839fe8ffb7dc28c data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json +700fc278e781aa33fd3c2410ff44e684211d06fc data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -1ad37d33772f654ca30550a21f2bd968d571f196 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json -973e1264bc58117953020a94ab43b09a46b69058 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json -fd4c2838a8b943636c51a332b9173a2398869b61 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json -217d932e1b42cbb810f7e947ee36aefc8cf210fc data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json -437375131b0e02a39a03037fe1827d703df3e008 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json -b8f480033c16e57c6943199e61d0bd369ff99d1c data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json -5d4133257c4c009fb063c11670820a05b56d899d data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json -529c9f7bae1e349e04acde16794277c68692fccd data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json -d490a168c01f92ee19eee38242c74cd02a6bd3ba data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json -56e3a3e3e618a3995973b5c56f3b5bffcbd92e0e data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json -e25703f05365298442a341fd35fec08a619f2d2f data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json -ee615b48f6f381f3f110feae36d4ee29c329db7c data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json -1b78fa0dd0180f03f68ef8de1ab46fe1fe7c49cf data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json -5cdf5c26eb889d77c5b5e39ae9322b3f54541de9 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json -b62f347bd7c697cefd2372eb363db9731cee9dc1 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json -e58e3e530f6b3f3d09c0f80400462245bf59097d data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json -06ba91a8eeb82c761f3ec06eb2b685860eda9214 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json -6a61cdfdfa5e552802760755d9b2c64c7b669efc data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json -89c51edd9572c28c566ac8727460f3ae0858d4a6 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json -c8d76caa3ba15ef946845c0ab015fc3fc1492221 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json -a87649d5984874aa238857b83abb7925778cc6bf data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json -9e4bdf4719df980eb4bab54000f8844d773f126f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json -2ce2465e197b75e31eb4e84360ab726586ad4fa1 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json -f123efc4716702693e02df09e7e0a0fb5b4f752d data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json -12c35beea5aead27d0414fecda9ae70987678b41 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json -5e63a0e1ed41aa31f432bca6f2ebc490a3eeb640 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json -9743007bca555fa99b5a0202d06b10b63480b389 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json -3e4449cefc0854138b1b57abae5a86384a415be0 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json -7a55aab8a69e141fc4bd4376995172a7e8dcfdfb data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json -30a76e7c148fec30d7c825c590a616e8c10e0a25 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json -b312a690d400088358661318e2d9412a18868963 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json -8ea135c25d0204f82b471ea748d32e48561736ed data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json -f70b5bccf3a8b393d7d740c6f7e3301c88af6c19 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json -9d36acbdf0335a452e161b3eb77bb8c79d93dcdb data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json -a35b3b5bd14091d1cad0871933477c4551aa9d32 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json -c30a8aba432dee696e8559fb823b85531e7a880b data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json -088e985b4348c9fdb89a1ef44800f7df1dbbdd6a data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json -f6f0fa32d1e53fd251b432dd99317ea18dad8c93 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json -306c013835776045ac55da53ce4d0081880eee5d data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json -7b61d5bcbde073f990c9e807182f61fa3ea5f2d6 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json -28130953bf39fb00f7ae642c93a071771c4d7989 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json -90261dfaf314829ba52c691d8951eff108042dd9 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json -62494c86aaad087827dd60e3bb664ba0cab0e52c data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json -c92f8b82251d47c4c442958b11ce1a375d073532 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json -2b00465891c26841423bd35aae29552bae1d282e data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json -e8cbdfa9f8874133d6da60d2fb50c6e8dcc6cd5d data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json -8471bb3fc635bbe1647044b1a49de2edc3ceddcc data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json -4a9ab5f15150dee671c82b23964be30b5e4b840a data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json -05b34cd244c4095fec3b3bea43f96262e950daa3 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json -4ad0e24763e6adc9c8dcbc2bb8df1b1f6bb842a2 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json -7d5e0d7df34c44a8ad7ace2ec894e98ef663d8b8 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json -ed2becc6c72a249ad59ccc9f674b630885eb224a data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json -ece0bdb2256cfc9f9d52321a921e80e90666e29c data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json -8b050b7e820ef604fd10e0c10b511a020a26e6f0 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json -8a421a8b091a1c09a0ff5684a0ff6222c1f4c155 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json -37b6877b19058f039ef7db001740754a63be9b42 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json -5615eefbba0591c0fb8edd7515a0e97750af0463 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json -b0e2f1989f919c90588ccdccf0eaab0493cabea8 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json -5c14f6ba3bd2a6df08c993241f14a8915a397818 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json -6d2bce98185c3147f1be970b4512df0810af5e52 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json -5a9ad3256a51eb274217b0ad96ff1461b723d70d data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json -726e5adcb5df595928413cefb74289694e41f0a9 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json -2b1689d24f183f07fe0dbd778eed0d60cde43cdf data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json -eaa6d175eeea0024c327ae289e3a5cd392dee67e data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json +a940f2dd7e17c9e6ce8e5c1cab6a9734de65f126 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json +c3ebe22f27fc7835a01de4df5131e88a5ff40e6e data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json +4a30cb86fd839e5868ec5d1acbab1e240a8be4f4 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json +0cc08119a586d853c8112b77c5cd8cab0d69cb34 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json +144eeff33ea8bd7da4e8026daef7221ca24b48a6 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json +2f4b91b57e882448a15a39d0fb7d28f919cbc52f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json +0b6d1b028f553a6b959ec342476d2bd4e57da8fb data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json +7fffd5252b30e808f6500172e3d4ecfd9d08c7f6 data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json +6e7e3c58ffb6fc7195da0c97a93c4c0a6617ed23 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json +2b96a5ad5a0bac59803ebf1214271ad9ccb2df75 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json +09d28d3b26407aea748a8c408ff97335c23f0950 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json +be53c703ee40d9a4ac5ee9e8281db5791db8c710 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json +1af666868158fe4ef62fe401d88a090701aa9daa data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json +73ef10fc6ccd615915885c78a0504875b67574c5 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json +7e7fdce2949bdc67e74fa51bcf1009a9027d7714 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json +66d62cc373204d9d7f0ecb7f13b5f05f9a180d07 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json +30f111754992b1a5badc9cbaf0ac5d5ef421b4dc data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -7c5f037adea9f90cb7bb45ba12c1bfdf6db66c42 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json -073fef48396964619124bef03c9143c74a962324 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json -54ae38eb9aaa962611c1d4392f6853a57da4dda7 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json -1fef96b5d6a08c2de918b5a05bfff84d3e4a7d73 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json -f04ad35139f3f45056199b1db51c3cb7b646fab7 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json -2795296f088cc27fddafd374e4ee17059fb2c5e7 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json -98e90274683fef8f16b2e2702f1ebb0765c54d04 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json -af8f157a48acc8ea6671a3d3b2278e9969740d37 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json -6dc4bdeb03eb41aa868999aa665e9e26998ccab9 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json -3fbf7f195ad58bdd3d88919ab2cbdddb63bc4a46 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json -00ed5d20a0189b57148d0a83ca0847ab8b0e1a67 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json -fd6db2aae9b2c20ba233128ff9a889e35aea01fa data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json -8eeab156c770e326d9b91c85de2eb283b2415777 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json -1fcfb6b06260fe7a3f15bf024b5e333dcdef0461 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json -f384baf21a83f75b26b42cdf63d6a0b3e334d569 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json -fd6b6c8f086ab0d2f8b054aecedffc537a71de73 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json -41fbcaaa066bad558cd82c683abc7138190af9bb data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json -19acbb9c809bb2e69b359397a6a1593c636bfcd3 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json -8bb8ad82d52406cfdc7d3b67fc934c15b518f255 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json -fdb25512103137a281846ed3d068f08364a29495 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json -cb32fd0cf47c5c738093d81b21f2824e35bc0b65 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json -36a2a412609802e520aee91a38ab9df9478680bd data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json -8e874d012b318d64f5765ed97516f5e0291aca68 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json -9cf45abc81e82e889c5f2e31839e512e61e18073 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json -26cb975bc2229d066fde3c1fd293014b54c5b689 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json -434345186b6ef5737960d1d9f72fb662d9b336f7 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json -c5a5ed1174f3ccd6eded195dc91ed3016055b849 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json -32b8c65b5cbdd2d9cb4dc2d1d1b09f9b7a95dfe1 data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json -db4cc33266c475627e59c76053dcd00de29a6ca6 data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json -c3110d7579d6ebb48c2d5f210b75034703cd1e7c data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json -899bd09adf19f98d025559b999116bae8f83133a data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json -d4223c6fa1f8606f2f4099bd6806f8ca7e2ff88c data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json -5a0513e9142a18110dbc73dc5f4b1e4e0389330f data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json -6c638cb8b9a608c3f59f057c2b8224964688e4b0 data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json -48b07d33e68e70900b1d9f0f1cbf19c89350407b data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json -48685fc5786a7da7224f39e196e6406cf60475fb data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json -25dd08da3a54d1c051d318ba9ee2edf0ee8df76d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json -5d5e5b4039ba98fbabdc078a15aed054cb6da718 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json -fe614ee3221f1f2bf33bdffd8b0f3cabe91c0dc1 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json -e2191a93e8cf215ac90855f37b66b44c07907587 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json -4463d34259751b998e574ed8b10fa1275d6cd79c data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json -ac0b500602edf610e39488884542f1481eef062e data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json -868fe1e18862e27be18523d8f94db47c1cfa35cb data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json -feac988199a888f68a5cd5d4f0c549e14ad57ff2 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json -e5e446ebad946dabf3157f53d0a6fbb80a7fed33 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json -9b69a358c1a8cf2c7a3bd39afa063ebcb419ac38 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json -7a41c4d0b69cd68008a25fac0ea0abd7c256d9e4 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json -7e94a7c767215571e1be7533f980e35482c0f405 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json -721f4a738abdf145ee2be4bef024248ceab57b81 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json -bda6b451b8874212cb4fd4e43ec071ddfbaae795 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json -86f8cd0a7efc80742d1f30aa7352382852ee13a0 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json -a182a1b3f8c5acad294b9c0373316a9de306d5be data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json -70fdb7aa18a9761322362e92cf554f6c8ab9f477 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json -3ff9e5e012de900f3d72ce7a44282da6b513ec41 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json -a8e25937a8f9604d70c08278e606c1568db0ec50 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json -ceb43f829772d1b0b10382be5c47cc692d201a2c data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json +bd4172887d07ffdaf69f561fb818e71f279037d9 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json +63738ede4794838b1bf9e097b8727c604b44d31a data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json +fbe8fdeb5a0f8eaa74609bf50436116cda6d8be2 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json +5d2f0f6b9de33e765061c1ef2cc4f6ca60c66557 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json +dd90958a9ba59785857e1dce95ac292a2b066816 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json +987c6f116bbaaa4dec5a317fb76b64c5b513e78a data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json +5f69c1c728740590d39f237cbbf1b798ed5ced0e data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json +a21213dbe3ded23a9574daf2e0d1da4050dfe569 data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json +865b872edc48bcb65ce1963d474ca645b639b986 data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json +1eea95b106ab6a8be8f7b577e9a8c961b8a1725d data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json +a90ba02064ae0e79e04a3527c7894e97c351e383 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json +b126d32e6bd9567115b8218f1d83999d6924c20b data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json +c50d5bcf645a855fc284aec1acbf8c97998b6925 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json +5048b9c34b9745d2f4fe2807648f9450b3e65243 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json +f7337df6140c3bbd9dac4febb8de8c346cc54ce9 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -218,7 +126,7 @@ d6e7c5919263ed995b6e1edd6c562a3e9724cb8c data/cosmere/advancements/recipes/misc/ dbc0b939398763dcdfa0ca8a5bd9d20cc85d65a5 data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json 659f091523822870e0b5c819783e976e59d8f414 data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json dbc010d11d586d1322bd0adb0a5f1baabeefe4cf data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json -594e40ee46c4b08b29b8319f69539643b736ee85 data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json +5bab7af8af7a3ac64415997b98cd5bed3817251d data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json 98b94a773b82e90dff928a615b5e9aaf5c2ce5f3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json a1a7362f8b093200c65077c55d176bb7d63fe9e3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json bb8c793713f8c0a32b9d2d8d3c058075d42afac0 data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json @@ -235,13 +143,13 @@ ac26d2d5577a16c67e42c855a46c20c73f8b4aa8 data/cosmere/advancements/recipes/misc/ 6768c27277ed3709692a9b0ce7ff2345d2d1900b data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json 1c357b17c43d7a3434fb1d15a8bfd4f67c9f14bb data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json 2d039025ec49cff788309f50023d90f5dc515800 data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json -329eb749169c732714d549391d378815036b9244 data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json +2fb91bb3a6ccf08e5f283b48b56bac34789823fc data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json 14d5adab97c136743fc0c292428139cbba7d59b9 data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json 12d9f9ce91f202aa020bb6ee173d37754e02225b data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json eaf60b4440cbd54d83b22c8b780825571ed26fe9 data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json -c1dc2f1a234d6fd1f3b22ba4e8c96bdaef7cfe21 data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json +2b4f6eee5760d6398ded107a60eb14f81395ccdc data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json 27edd917293def5ec9a7aed15130398dae268bcb data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json -bb274ce62b99aa5b2e9bca20c5798d284230a1fb data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json +6582b87948a0690d7cf7406e0c8f743acdb46e24 data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json fd0f0e33312dd33c38585424106b464fa490f6d0 data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json 4f74f10ffcadbd766f1988ce7fa397696ba6ce20 data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json 9226b65f455009ac8e452ba06553829e23262c35 data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json @@ -334,7 +242,8 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json -3155cfd98caeacb52d603df6e81a487de4b354f2 data/cosmere/recipes/atium_ingot.json +8019d7d79bdf4e408849b6e56bc3108a8ed3877d data/cosmere/recipes/atium_god_nugget.json +dc00acd11c59def6d22c05111eef91161314aa17 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -366,7 +275,7 @@ df3cb1f0fe2674c0e0b4deeb20d68be7e0223c5a data/cosmere/recipes/chromium_ingot_fro 4d7d4b24afbb4931ceb6f55dc0413f470eaffc7c data/cosmere/recipes/conversions/aluminum_block_deconstruct.json 1f73890dbe2be61e03977a713b960b328b7a2087 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json 680c0658b68f344bca81f327ad3bf74a4da18795 data/cosmere/recipes/conversions/atium_block_deconstruct.json -096dc7eb84e6e60c4dcf3118f92218917a1baaaa data/cosmere/recipes/conversions/atium_item_deconstruct.json +51aee7de073831314356f6f62dd708d9a5b9ca73 data/cosmere/recipes/conversions/atium_item_deconstruct.json c32019d369a231302c373b5418d3f2ca415052a2 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json 93fa65e4a6c54d997c9e9676b8bd4cd90155359c data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json f7014f16f2a82bdbfb0262389dfa2ff009432f6b data/cosmere/recipes/conversions/brass_block_deconstruct.json @@ -383,13 +292,13 @@ ece851d4f1b9da48bee3133be5aba10f3d72ae8e data/cosmere/recipes/conversions/duralu 2c943c58f26789a8feee9b05471d473b38c4b272 data/cosmere/recipes/conversions/electrum_block_deconstruct.json 79ca04523d1b2ed9c921b4d669d33848190eeadb data/cosmere/recipes/conversions/electrum_item_deconstruct.json 9c0547bd88bbf7c5b1ceb54b8780e51267e33b7b data/cosmere/recipes/conversions/harmonium_block_deconstruct.json -e5a593c779c7d8efcdb7d945f545e579b563c2a5 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +4af3a37e46f56cb02bc1e683961f2714fe5ac682 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json f10ee6f07670b583fc8d56c21c8bf16ed860820b data/cosmere/recipes/conversions/lead_block_deconstruct.json 04935fac62043daebfa92bec2cbbbf126aa1fc3f data/cosmere/recipes/conversions/lead_item_deconstruct.json ba927c70c851b5fe745cedc39c246bd837dec975 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json -63a7e4b091da9d0c5706874f34c8e97b3c62ef08 data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +6894d977ce4ee775e5f19173fedc99ef7557f58d data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json 2c2fbad486619b5912f3150505802f9e9715461d data/cosmere/recipes/conversions/lerasium_block_deconstruct.json -eb136b12ae8a72b0e0e09724698d053148fa75f9 data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +2b892255650c51bf5989219304204683c13c50eb data/cosmere/recipes/conversions/lerasium_item_deconstruct.json d4b725ddc9a2fbd493c3216abbdcc18592358a69 data/cosmere/recipes/conversions/malatium_block_deconstruct.json 689b14a3a023557584c1c058b0fc2c2b06efaa04 data/cosmere/recipes/conversions/malatium_item_deconstruct.json 2866e6f39fd8c0ce152db25ffb4a93a381ab204e data/cosmere/recipes/conversions/nickel_block_deconstruct.json @@ -415,7 +324,8 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json -8fcfa2862627e0ac91a8556240985d260b946029 data/cosmere/recipes/harmonium_ingot.json +a3e3aecb833416ea16846f2f9915f847b3a73215 data/cosmere/recipes/harmonium_god_nugget.json +eddaf073d9f315f873848b00db0e3548d66b3186 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -424,138 +334,44 @@ a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_fro cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -9d48276c7b5f5e65038859ac295d90b9f60632ae data/cosmere/recipes/lerasatium_aluminum_nugget_12.json -34692f851aeeea6b0371dec15feb5f7d98088c71 data/cosmere/recipes/lerasatium_aluminum_nugget_16.json -ea87f690602818e2cf97c32429d5361820f7f33d data/cosmere/recipes/lerasatium_aluminum_nugget_4.json -6ad88ecbe748cda87a63dbe144ced45861f51537 data/cosmere/recipes/lerasatium_aluminum_nugget_8.json -e8ac61810f985c33ac2aa35c1db0c40e5afc6907 data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json -82328b21ca67a7b7396c87e13a3240b3a4fe6a8d data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json -179f6d193dd790a0f44abfdb12979ad5a86abe9d data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json -441ac27c3c1b24a152180bdcbc55ba2144f5e296 data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json +32ad5f09a5cb734652af3e0a9f7fb328999d8ebe data/cosmere/recipes/lerasatium_aluminum_nugget.json +357e3f8d831dc8ec77fdc285aebb51a0c88c2d13 data/cosmere/recipes/lerasatium_bendalloy_nugget.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -086cfc5415003ffb510b543c8fb97bd13c7992e8 data/cosmere/recipes/lerasatium_brass_nugget_12.json -d19d7e59152e55262ad78368787ec89575fd3cd1 data/cosmere/recipes/lerasatium_brass_nugget_16.json -d48ab2fdaba2af55c5824317054f1b0618bac387 data/cosmere/recipes/lerasatium_brass_nugget_4.json -f2d28966941e45226bd92165358c36b5235f3c57 data/cosmere/recipes/lerasatium_brass_nugget_8.json -7a02292ca2f37f32bb384855cf72d38d12241bea data/cosmere/recipes/lerasatium_bronze_nugget_12.json -6090894895655b475bf836c09f16397b114aa868 data/cosmere/recipes/lerasatium_bronze_nugget_16.json -13f4ccca332e5cab8a226da93e6005b4e21dc5ce data/cosmere/recipes/lerasatium_bronze_nugget_4.json -9adf32942e4a37f5fbdc991b282e03f39e4e42ed data/cosmere/recipes/lerasatium_bronze_nugget_8.json -85c480baf8a9595125a86191277403e956ff4c76 data/cosmere/recipes/lerasatium_cadmium_nugget_12.json -3ca373abfcf482da88f9bef17371a72d754b9f37 data/cosmere/recipes/lerasatium_cadmium_nugget_16.json -ca83e182c04c40d5b2141b79ff5565e7b53d0211 data/cosmere/recipes/lerasatium_cadmium_nugget_4.json -e52f3e93ccbc2ae1f099f1f519e8c17a663a17bc data/cosmere/recipes/lerasatium_cadmium_nugget_8.json -7b366c212b460ce00f39ba0a5a2c2e79559026ea data/cosmere/recipes/lerasatium_chromium_nugget_12.json -82a02e36062a75d544f4216a1300cd4706485d81 data/cosmere/recipes/lerasatium_chromium_nugget_16.json -8dd8dbe901530d8cbbb1e00cfec337428c12eac7 data/cosmere/recipes/lerasatium_chromium_nugget_4.json -c984cdc1d2d3a4db2aa1208511630af69bf61810 data/cosmere/recipes/lerasatium_chromium_nugget_8.json -4acc666bba51398ba50bf46fa3a9635bbccff4a9 data/cosmere/recipes/lerasatium_copper_nugget_12.json -5d6000904d3a5355c2927250ba2f1695ecbbd978 data/cosmere/recipes/lerasatium_copper_nugget_16.json -62588b4a1543e6c20962d4539560415abdfdd361 data/cosmere/recipes/lerasatium_copper_nugget_4.json -8cf7054eef1165f22a781470b0b3f18a93e34ef2 data/cosmere/recipes/lerasatium_copper_nugget_8.json -813eb1e60bd91db84d4224b40f01d679749f3df9 data/cosmere/recipes/lerasatium_duralumin_nugget_12.json -f6e371df05efde9056fdd3650e7458ac9a40e47c data/cosmere/recipes/lerasatium_duralumin_nugget_16.json -b55dbde28b4c9e72f33c4df93963019b61565ceb data/cosmere/recipes/lerasatium_duralumin_nugget_4.json -9fa7faa888a34563ae083b67152d2c6c4a267073 data/cosmere/recipes/lerasatium_duralumin_nugget_8.json -63d7499676a81224b754a39515db8a13f747428e data/cosmere/recipes/lerasatium_electrum_nugget_12.json -ebc03d8c1277d3b665badeb029b64210eae5d332 data/cosmere/recipes/lerasatium_electrum_nugget_16.json -c7839ccc9a726c35274a008a6ac74104f0f1af68 data/cosmere/recipes/lerasatium_electrum_nugget_4.json -4250e5f6aa8df5988270895fd86038a2be24e8af data/cosmere/recipes/lerasatium_electrum_nugget_8.json -f1b6b90d12f7510127b2e995f894f5a2283cce6d data/cosmere/recipes/lerasatium_gold_nugget_12.json -defb8f7890adfd29aed1ad8fef0f2f092d323272 data/cosmere/recipes/lerasatium_gold_nugget_16.json -b8a00f8a009f47fb6ed26070b8eaa97eebe5f4ea data/cosmere/recipes/lerasatium_gold_nugget_4.json -37d2f2c36e0aac78635781d14f845bcbf611c27a data/cosmere/recipes/lerasatium_gold_nugget_8.json -db4272d9b763609ba79a2ea4d7fbc0adacd269f2 data/cosmere/recipes/lerasatium_ingot.json -cda703c4af8f6d2cfbc6a511f9641153e7111b27 data/cosmere/recipes/lerasatium_iron_nugget_12.json -03c37dee2a5241b79493573090035977ffa76952 data/cosmere/recipes/lerasatium_iron_nugget_16.json -eddeebd77065d8eb09b43dc346710018dd42efd8 data/cosmere/recipes/lerasatium_iron_nugget_4.json -17bbac3607bafacc0d82762846a37a703cfce525 data/cosmere/recipes/lerasatium_iron_nugget_8.json -5f086519c3507feff12d0527d7aa83b8fbf92ab2 data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json -4fb25c496fca1db093e02d07bde2a6f7fb0fc132 data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json -9395479ab2f29923bd6f02e1293a888d993991d8 data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json -a4773b4fef4275dc7d01fa16b6228c5ac67ffda4 data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json -26c3324dd100b739ac0bba327e201885f1e8c7aa data/cosmere/recipes/lerasatium_pewter_nugget_12.json -6ab232fea91f64ac095ab14adf1fca4acb084757 data/cosmere/recipes/lerasatium_pewter_nugget_16.json -2cca5b8c965a84becb9f1633ac17f758c0b45ce7 data/cosmere/recipes/lerasatium_pewter_nugget_4.json -11065237512bfa66bb5e81ed8a61c0c726932263 data/cosmere/recipes/lerasatium_pewter_nugget_8.json -70d0381461196af81a4b27918a569eaa2792a80f data/cosmere/recipes/lerasatium_steel_nugget_12.json -fbb4c1712f58cc33eee83b55d563a48a20f020cc data/cosmere/recipes/lerasatium_steel_nugget_16.json -ff71537acc88bb6a144e004e1a010e4d89fc2873 data/cosmere/recipes/lerasatium_steel_nugget_4.json -5ed5e34cf1220956d9d7f03f55586fbf690b38dc data/cosmere/recipes/lerasatium_steel_nugget_8.json -df92d177d224a15697402aeec65800e88ce4931c data/cosmere/recipes/lerasatium_tin_nugget_12.json -c18b77ebd6fa8cbd9b5ce9d67cab15e8da6d83e6 data/cosmere/recipes/lerasatium_tin_nugget_16.json -076f4a87d94bb9d2745f505c7788321047f4b996 data/cosmere/recipes/lerasatium_tin_nugget_4.json -44dba3b0822fb918195cee7c7174b9ce700a993f data/cosmere/recipes/lerasatium_tin_nugget_8.json -da11502642e7de95221297d7a8efde360932ba25 data/cosmere/recipes/lerasatium_zinc_nugget_12.json -bb89ea8e1163a86a35afb8f697eca024503edcfd data/cosmere/recipes/lerasatium_zinc_nugget_16.json -28ffb20b4b2cbaf55aeb69d665d30d673948d0e4 data/cosmere/recipes/lerasatium_zinc_nugget_4.json -71883fecbef754e334dd096a0621176872035933 data/cosmere/recipes/lerasatium_zinc_nugget_8.json -8ff3d5c1f23cad2949ac216aebbe39142c0df59e data/cosmere/recipes/lerasium_aluminum_nugget_12.json -f3cdea3101870a9f09901dfdc81158528398a678 data/cosmere/recipes/lerasium_aluminum_nugget_16.json -61a1dc45898147e9b935168880e339f900371c99 data/cosmere/recipes/lerasium_aluminum_nugget_4.json -1605d832df39e838866deaacd78f96cbf225b298 data/cosmere/recipes/lerasium_aluminum_nugget_8.json -c9da533a2d7b8eaa8fc224509e72325c9e04cf74 data/cosmere/recipes/lerasium_bendalloy_nugget_12.json -99420040256be5b3abdaef9427e1fb3d6de5cde0 data/cosmere/recipes/lerasium_bendalloy_nugget_16.json -cc8a05c83aed43cc7d38383f2b6804bd22d98f24 data/cosmere/recipes/lerasium_bendalloy_nugget_4.json -f08f3a5380ef2a707e29619e8e809c9694712df9 data/cosmere/recipes/lerasium_bendalloy_nugget_8.json +2b6ee6ea7c5943616c26a5de14e68e1616b9e9f9 data/cosmere/recipes/lerasatium_brass_nugget.json +7df022be3a0ba0deb4c3edc1f9b06f014025c917 data/cosmere/recipes/lerasatium_bronze_nugget.json +7bdbb1179fb7f1c3db04f0e7661688c1712824ff data/cosmere/recipes/lerasatium_cadmium_nugget.json +c0af9f8f077236b3b4bdec8c49e80f38bedc4c22 data/cosmere/recipes/lerasatium_chromium_nugget.json +070bf95f052acdd4ce8ca5aaec597db76744759a data/cosmere/recipes/lerasatium_copper_nugget.json +dde47d6010d1469830519749295934bc964eb4fe data/cosmere/recipes/lerasatium_duralumin_nugget.json +07440a499f3a0aaa84241f058fdda6cec1a22cf2 data/cosmere/recipes/lerasatium_electrum_nugget.json +f60b76ba50426d553767f504583a83a357e75514 data/cosmere/recipes/lerasatium_god_nugget.json +6264f4b39324d5aa026a3ce8294d57dcc8f8b08a data/cosmere/recipes/lerasatium_gold_nugget.json +2eee8b6e7d6249c88a95502726b7a8bfb09c2146 data/cosmere/recipes/lerasatium_ingot.json +3d359ee7a7b834e8a75a37cfedcbbdf8f4e8f604 data/cosmere/recipes/lerasatium_iron_nugget.json +532a5a38b2dd5df91315a8814114887bae55cc37 data/cosmere/recipes/lerasatium_nicrosil_nugget.json +a86e063c1b86cddf781ec28d1efbbf9f0cc22b7b data/cosmere/recipes/lerasatium_pewter_nugget.json +b8b029b5922d27a52017d7545c4ca6eb5f4c7619 data/cosmere/recipes/lerasatium_steel_nugget.json +9cc015f307c6c45193f0eed458f80fb50e4a0734 data/cosmere/recipes/lerasatium_tin_nugget.json +ec4427e13ebd96e36d00fe99f633a7398cf083f9 data/cosmere/recipes/lerasatium_zinc_nugget.json +b001df3f8215965f009dcbced9c76a023f490c96 data/cosmere/recipes/lerasium_aluminum_nugget.json +d2464258a832b3e30c5f8d278bb113ac604740ed data/cosmere/recipes/lerasium_bendalloy_nugget.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -da95b3d6972c1caab21e95341b101f94874430c0 data/cosmere/recipes/lerasium_brass_nugget_12.json -6085e8f8b0e7fdcb3d584345a84a3ab64476c60b data/cosmere/recipes/lerasium_brass_nugget_16.json -66c99babcc6995e22a0dd0fe6cc1dc74e368f259 data/cosmere/recipes/lerasium_brass_nugget_4.json -218c2e3e436be01956e2d9a754516d524845b879 data/cosmere/recipes/lerasium_brass_nugget_8.json -91a454b9ef1d68997f23aa8d9ef47e71596e8783 data/cosmere/recipes/lerasium_bronze_nugget_12.json -f9013f55a3a98bb6a58c551d80f8c5622b0e1e2f data/cosmere/recipes/lerasium_bronze_nugget_16.json -4abd782cbae2d3f68bb06024ddb8483a3a69d410 data/cosmere/recipes/lerasium_bronze_nugget_4.json -d88d88dab9d7e07668ae1c9a0b5e0409ab9af8e0 data/cosmere/recipes/lerasium_bronze_nugget_8.json -12403d8aed989648411eeb7a149cfd20131c77cc data/cosmere/recipes/lerasium_cadmium_nugget_12.json -e33104fc0f453dfad26651cf0c9cbfcd77ac7660 data/cosmere/recipes/lerasium_cadmium_nugget_16.json -1b909125e2f1faeffcb0197f86a4e59e68e0cef1 data/cosmere/recipes/lerasium_cadmium_nugget_4.json -104d2ec776e0d6e1d6be332b32f33967df5743a1 data/cosmere/recipes/lerasium_cadmium_nugget_8.json -6664bdfd2d2bccd7b57ba597962e0b6cbf00b1d5 data/cosmere/recipes/lerasium_chromium_nugget_12.json -db2d1cb6cea837c7e605bef1940146a335dc91e1 data/cosmere/recipes/lerasium_chromium_nugget_16.json -8ec6196e2a8c7d133e49b0f965b91a46bd1f6eb8 data/cosmere/recipes/lerasium_chromium_nugget_4.json -088d740e1ba1930c18fa6f044e36a2031e6bcc36 data/cosmere/recipes/lerasium_chromium_nugget_8.json -b3d217e8093b863b7a458f1d969badaa6d369c6b data/cosmere/recipes/lerasium_copper_nugget_12.json -462e0424b537d82170dd853e71c4001cc670f378 data/cosmere/recipes/lerasium_copper_nugget_16.json -4912cf2db9741a1f6b42ce87f229b9f0eed6022c data/cosmere/recipes/lerasium_copper_nugget_4.json -c1a636ad631e4560f75d3c0ba4888d1f15afb85d data/cosmere/recipes/lerasium_copper_nugget_8.json -92b4849b99816e1445f37cca5680a6c92b78155b data/cosmere/recipes/lerasium_duralumin_nugget_12.json -d76376a9d51e7282f311c576d674c3d8ed4e6b8c data/cosmere/recipes/lerasium_duralumin_nugget_16.json -5f10377ad670f00900508ec93aab68b332703d5e data/cosmere/recipes/lerasium_duralumin_nugget_4.json -1ddc351b3ff7bf91e4ac6c5370ee87029e833808 data/cosmere/recipes/lerasium_duralumin_nugget_8.json -facca0b9f396df7a9a96f04899869fc3fc53a7bc data/cosmere/recipes/lerasium_electrum_nugget_12.json -73c436f35646239eced7ad4d11c2ae2dc13557a0 data/cosmere/recipes/lerasium_electrum_nugget_16.json -1bc599777a6b3326fca30499eb0a13ce39c6682d data/cosmere/recipes/lerasium_electrum_nugget_4.json -fdeed02df41d9b2539c1269a3c946ef2d9c72006 data/cosmere/recipes/lerasium_electrum_nugget_8.json -a2ef2507d57c82169d34f9abaa9d1accffc31ffb data/cosmere/recipes/lerasium_gold_nugget_12.json -85c1db8246e6049e2cac0d49943e733f9cb61d77 data/cosmere/recipes/lerasium_gold_nugget_16.json -a1f8f415e58bad1a083343d97c7a849ed65122fc data/cosmere/recipes/lerasium_gold_nugget_4.json -49d666e1a2fca91edc96f84dc0521a3a14830914 data/cosmere/recipes/lerasium_gold_nugget_8.json -a4f7ae18f7da78c725539e289cbd2c9d8e6b6981 data/cosmere/recipes/lerasium_ingot.json -9e4d0eb5364868a5891ae13ad584a19e347e8bc1 data/cosmere/recipes/lerasium_iron_nugget_12.json -a14c301b84feabce9543fcba01e68b83fcb9a8e1 data/cosmere/recipes/lerasium_iron_nugget_16.json -8130d366bb40a66a76897e21ece8be8b3cca3209 data/cosmere/recipes/lerasium_iron_nugget_4.json -a2cd13818be53e180cf005c6b5624276fb755ba6 data/cosmere/recipes/lerasium_iron_nugget_8.json -d52616468869a19aef25ab4637d6ce3a7b9f338a data/cosmere/recipes/lerasium_nicrosil_nugget_12.json -76b04dcf7242e8408e0aa3949a1f837f22e53410 data/cosmere/recipes/lerasium_nicrosil_nugget_16.json -16290f51faee6531562fc07e3ec3f8abdbc582ad data/cosmere/recipes/lerasium_nicrosil_nugget_4.json -3f491167f203c7f29509a28cb430f73ba6919a60 data/cosmere/recipes/lerasium_nicrosil_nugget_8.json -deff6647ad275229aa2bf0926c01d09f7e4967e1 data/cosmere/recipes/lerasium_pewter_nugget_12.json -c5e13b4036c6214d42d3017deb9b7a56a8499176 data/cosmere/recipes/lerasium_pewter_nugget_16.json -280ad1f3e67053f814528b486481fe04c6509b79 data/cosmere/recipes/lerasium_pewter_nugget_4.json -6445205406c0f8dfe1c5853f7b9f431383e1dbe3 data/cosmere/recipes/lerasium_pewter_nugget_8.json -4e40c5c1f67239fe7f8e4761c73f6472185ea555 data/cosmere/recipes/lerasium_steel_nugget_12.json -0e4cdb8171ab79e11df04e344704f3ec34c8baac data/cosmere/recipes/lerasium_steel_nugget_16.json -29799c21e0dd88014417828294fa092675318ef1 data/cosmere/recipes/lerasium_steel_nugget_4.json -74009f993e5fadfa136520ccf0c9797866807e38 data/cosmere/recipes/lerasium_steel_nugget_8.json -a147d8d6c173428a9468e089f3ed19c54103cdab data/cosmere/recipes/lerasium_tin_nugget_12.json -b7e7f4451097826eb30ce7f349a0156d5ec72fe3 data/cosmere/recipes/lerasium_tin_nugget_16.json -ff72f612f6e30be68cb815baa8cedea529a262b1 data/cosmere/recipes/lerasium_tin_nugget_4.json -c3a220f973bbc4b42d53ace5906c81595402a6cc data/cosmere/recipes/lerasium_tin_nugget_8.json -cc49bf6501cb1e8106c3c75f74847068cb066da0 data/cosmere/recipes/lerasium_zinc_nugget_12.json -40fa551b9bb66a14895f5f941e1d34423bf74b9c data/cosmere/recipes/lerasium_zinc_nugget_16.json -8ee5204f736627767acdb0d58fc4b7f7014bac7c data/cosmere/recipes/lerasium_zinc_nugget_4.json -7dfe9282beee42454216029ae9f54568d7f09a81 data/cosmere/recipes/lerasium_zinc_nugget_8.json +4d252307c4a6e45e1024e262133e7bd2cb229fc6 data/cosmere/recipes/lerasium_brass_nugget.json +8fe05981943d44ba99a87aac33495af14c845477 data/cosmere/recipes/lerasium_bronze_nugget.json +893e7382a068c97568e55ebadd76ec785e20a322 data/cosmere/recipes/lerasium_cadmium_nugget.json +c77ae68521061c8357302cbe237b71586bd635e8 data/cosmere/recipes/lerasium_chromium_nugget.json +c34582a3acec2919e6aa73bc8c23a881d0d8c4e9 data/cosmere/recipes/lerasium_copper_nugget.json +78b8e6eb2e851033a3227b91cc956043292eec00 data/cosmere/recipes/lerasium_duralumin_nugget.json +4481f036adb77a5d1069fcaedbedf7c4b9d88707 data/cosmere/recipes/lerasium_electrum_nugget.json +b2c85cfca76827cc42116718857ad6b72de3092b data/cosmere/recipes/lerasium_god_nugget.json +41615fe934a110a8a1a16bf6f1032157ea3aa4e7 data/cosmere/recipes/lerasium_gold_nugget.json +0e39142108dc26e7ad6e6b3399f0774be478778b data/cosmere/recipes/lerasium_ingot.json +6ee3ed105e5bcb8b240d254f0ec389885e6af46c data/cosmere/recipes/lerasium_iron_nugget.json +f501c2a1047372daee27a4d3f6813e7cb10202cd data/cosmere/recipes/lerasium_nicrosil_nugget.json +6b01e1645d1ae90596777e393bf9ed8394228ac1 data/cosmere/recipes/lerasium_pewter_nugget.json +cb1a3fb78007d48444371903db0e6135c96f7255 data/cosmere/recipes/lerasium_steel_nugget.json +f0fabb0f116469a77f82b56e93b7972496ac7849 data/cosmere/recipes/lerasium_tin_nugget.json +63b7aa1bd4bc87a598347b68b94dbbfdde9cfb08 data/cosmere/recipes/lerasium_zinc_nugget.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 0456deb7c..c0a9c2be7 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-09T09:23:08.402946 Languages: en_us -1ca92fc382c7d6b1f8060ec6348ed1181fa9edef assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-09T18:08:07.0567327 Languages: en_us +0af393ba76d33fe388243c6e94ca4a99fb011ea1 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 8d895b540..0c8132ad4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -52,6 +52,7 @@ "item.cosmere.aluminum_ingot": "Aluminum Ingot", "item.cosmere.aluminum_nugget": "Aluminum Nugget", "item.cosmere.atium_alloy_nugget": "Atium Alloy Nugget", + "item.cosmere.atium_god_nugget": "Atium God Nugget", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_nugget": "Atium Nugget", "item.cosmere.bendalloy_blend": "Bendalloy Blend", @@ -81,6 +82,7 @@ "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.guide": "Ars Arcanum", "item.cosmere.harmonium_alloy_nugget": "Harmonium Alloy Nugget", + "item.cosmere.harmonium_god_nugget": "Harmonium God Nugget", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", "item.cosmere.iron_block": "Iron Block", @@ -89,9 +91,11 @@ "item.cosmere.lead_ingot": "Lead Ingot", "item.cosmere.lead_nugget": "Lead Nugget", "item.cosmere.lerasatium_alloy_nugget": "Lerasatium Alloy Nugget", + "item.cosmere.lerasatium_god_nugget": "Lerasatium God Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", "item.cosmere.lerasatium_nugget": "Lerasatium Nugget", "item.cosmere.lerasium_alloy_nugget": "Lerasium Alloy Nugget", + "item.cosmere.lerasium_god_nugget": "Lerasium God Nugget", "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.malatium_ingot": "Malatium Ingot", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json new file mode 100644 index 000000000..5bcb4cf96 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/atium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json new file mode 100644 index 000000000..87d5a9720 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/harmonium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json similarity index 80% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json index 9d9f68f59..1bc85cfe6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:atium_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_tin_nugget_8" + "recipe": "cosmere:atium_god_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_tin_nugget_8" + "cosmere:atium_god_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json index 349c8a316..f9151c0cd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:harmonium_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_iron_nugget_4" + "recipe": "cosmere:harmonium_god_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_iron_nugget_4" + "cosmere:harmonium_god_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json index 7a36dcd70..09daf340d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_aluminum_nugget_4" + "recipe": "cosmere:lerasatium_aluminum_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_aluminum_nugget_4" + "cosmere:lerasatium_aluminum_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json index 3cca96a03..d6fcbb9b8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_aluminum_nugget_12" + "recipe": "cosmere:lerasatium_bendalloy_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_aluminum_nugget_12" + "cosmere:lerasatium_bendalloy_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json deleted file mode 100644 index 1ac1175df..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bendalloy_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bendalloy_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json deleted file mode 100644 index da4734a8b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bendalloy_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bendalloy_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json deleted file mode 100644 index 247836f37..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bendalloy_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bendalloy_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json deleted file mode 100644 index 452cee6ae..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bendalloy_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bendalloy_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json index fd1bb010d..99761ce67 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_gold_nugget_12" + "recipe": "cosmere:lerasatium_brass_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_gold_nugget_12" + "cosmere:lerasatium_brass_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json index 3e1cf38df..8d669304d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_brass_nugget_12" + "recipe": "cosmere:lerasatium_bronze_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_brass_nugget_12" + "cosmere:lerasatium_bronze_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json deleted file mode 100644 index a5d4be562..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bronze_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bronze_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json deleted file mode 100644 index 42c4880f2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bronze_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bronze_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json deleted file mode 100644 index 427255d0a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bronze_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bronze_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json deleted file mode 100644 index 075b8d7b4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bronze_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bronze_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json new file mode 100644 index 000000000..0db730f56 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_cadmium_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_cadmium_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json deleted file mode 100644 index becf8e5f5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_cadmium_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_cadmium_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json deleted file mode 100644 index 64d6709d1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_cadmium_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_cadmium_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json deleted file mode 100644 index f6e9d23d2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_cadmium_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_cadmium_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json deleted file mode 100644 index f2f69d99e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_cadmium_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_cadmium_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json new file mode 100644 index 000000000..01642ed65 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_chromium_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_chromium_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json deleted file mode 100644 index f8cb76c77..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_chromium_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_chromium_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json deleted file mode 100644 index b510e7ecc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_chromium_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_chromium_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json deleted file mode 100644 index b4cd070c2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_chromium_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_chromium_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json deleted file mode 100644 index dcbaf31ac..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_chromium_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_chromium_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json index f80bcdd73..44094eba9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_brass_nugget_16" + "recipe": "cosmere:lerasatium_copper_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_brass_nugget_16" + "cosmere:lerasatium_copper_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json deleted file mode 100644 index eed885c40..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_copper_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_copper_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json deleted file mode 100644 index dc13f5136..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_copper_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_copper_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json deleted file mode 100644 index e7030c0ef..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_copper_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_copper_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json index 3a6db23bd..bb27bdd81 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_aluminum_nugget_16" + "recipe": "cosmere:lerasatium_duralumin_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_aluminum_nugget_16" + "cosmere:lerasatium_duralumin_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json deleted file mode 100644 index e08ab506d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_duralumin_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_duralumin_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json deleted file mode 100644 index 2c094db77..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_duralumin_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_duralumin_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json deleted file mode 100644 index 30b99b6dc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_duralumin_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_duralumin_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json deleted file mode 100644 index 4c99403d0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_duralumin_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_duralumin_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json new file mode 100644 index 000000000..dcd197c74 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_electrum_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_electrum_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json deleted file mode 100644 index fbc26370d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_electrum_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_electrum_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json deleted file mode 100644 index bc2582573..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_electrum_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_electrum_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json deleted file mode 100644 index 0efb2576a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_electrum_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_electrum_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json deleted file mode 100644 index 773c69065..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_electrum_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_electrum_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json similarity index 85% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json index a35207177..30070a7fc 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_tin_nugget_4" + "recipe": "cosmere:lerasatium_god_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_tin_nugget_4" + "cosmere:lerasatium_god_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json index ff3386156..28746a45b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_gold_nugget_4" + "recipe": "cosmere:lerasatium_gold_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_gold_nugget_4" + "cosmere:lerasatium_gold_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json index 3760bc29b..a83be0732 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_gold_nugget_8" + "recipe": "cosmere:lerasatium_iron_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_gold_nugget_8" + "cosmere:lerasatium_iron_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json deleted file mode 100644 index c47f709b8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_iron_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_iron_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json deleted file mode 100644 index 8d89bc695..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_iron_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_iron_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json new file mode 100644 index 000000000..d5864851b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_nicrosil_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_nicrosil_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json deleted file mode 100644 index a043798c0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_nicrosil_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_nicrosil_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json deleted file mode 100644 index 7b3e3afbf..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_nicrosil_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_nicrosil_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json deleted file mode 100644 index b1ae071e0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_nicrosil_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_nicrosil_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json deleted file mode 100644 index e603c5fca..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_nicrosil_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_nicrosil_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json new file mode 100644 index 000000000..2179759a8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_pewter_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_pewter_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json deleted file mode 100644 index 3d1d1f7a1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_pewter_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_pewter_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json deleted file mode 100644 index 0ea0c0680..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_pewter_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_pewter_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json deleted file mode 100644 index 1bcb647e1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_pewter_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_pewter_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json deleted file mode 100644 index bbcfd36ce..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_pewter_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_pewter_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json index 8f7d8eeb5..9d8ea4fd6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_16.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_gold_nugget_16" + "recipe": "cosmere:lerasatium_steel_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_gold_nugget_16" + "cosmere:lerasatium_steel_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json deleted file mode 100644 index 795673e65..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_steel_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_steel_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json deleted file mode 100644 index a49d94462..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_steel_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_steel_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json deleted file mode 100644 index d0e819538..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_steel_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_steel_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json deleted file mode 100644 index 1584111a7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_steel_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_steel_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json similarity index 85% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json index 043ebd764..89fc98f27 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_aluminum_nugget_8" + "recipe": "cosmere:lerasatium_tin_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_aluminum_nugget_8" + "cosmere:lerasatium_tin_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json deleted file mode 100644 index ba21c903f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_tin_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_tin_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json deleted file mode 100644 index cf4d71abf..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_tin_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_tin_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json index 359d49b03..7165c9385 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_iron_nugget_4" + "recipe": "cosmere:lerasatium_zinc_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_iron_nugget_4" + "cosmere:lerasatium_zinc_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json deleted file mode 100644 index 0c6100cee..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_zinc_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_zinc_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json deleted file mode 100644 index 022134768..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_zinc_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_zinc_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json deleted file mode 100644 index 72c4945c9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_zinc_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_zinc_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json deleted file mode 100644 index 69568f776..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_zinc_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_zinc_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json index 2fec218e6..eff08ace8 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_brass_nugget_4" + "recipe": "cosmere:lerasium_aluminum_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_brass_nugget_4" + "cosmere:lerasium_aluminum_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json deleted file mode 100644 index 151cbccd2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_aluminum_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_aluminum_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json deleted file mode 100644 index 27d9b09ff..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_aluminum_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_aluminum_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json deleted file mode 100644 index 46fc9b669..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_aluminum_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_aluminum_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json deleted file mode 100644 index 8773df8a2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_aluminum_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_aluminum_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json new file mode 100644 index 000000000..19fd5dcc2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_bendalloy_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_bendalloy_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json deleted file mode 100644 index ba251bca6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bendalloy_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bendalloy_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json deleted file mode 100644 index 361ba065e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bendalloy_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bendalloy_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json deleted file mode 100644 index f582b05aa..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bendalloy_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bendalloy_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json deleted file mode 100644 index 9e5892a0f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bendalloy_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bendalloy_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json index 2b407747e..cf2702d31 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_brass_nugget_4" + "recipe": "cosmere:lerasium_brass_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_brass_nugget_4" + "cosmere:lerasium_brass_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json deleted file mode 100644 index 3754d45b6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_brass_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_brass_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json index 879639390..bfd26b0d4 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_tin_nugget_8" + "recipe": "cosmere:lerasium_bronze_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_tin_nugget_8" + "cosmere:lerasium_bronze_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json deleted file mode 100644 index cfd749805..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bronze_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bronze_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json deleted file mode 100644 index 4b6696bdc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bronze_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bronze_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json deleted file mode 100644 index c088c27d0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bronze_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bronze_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json deleted file mode 100644 index cec5a5373..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bronze_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bronze_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json index 6290bb88b..f7c4955a9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_iron_nugget_8" + "recipe": "cosmere:lerasium_cadmium_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_iron_nugget_8" + "cosmere:lerasium_cadmium_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json deleted file mode 100644 index 00184cf9b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_cadmium_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_cadmium_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json deleted file mode 100644 index d2538f929..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_cadmium_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_cadmium_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json deleted file mode 100644 index 5b6731902..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_cadmium_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_cadmium_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json deleted file mode 100644 index b46677e06..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_cadmium_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_cadmium_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json similarity index 78% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json index 08c1f8b54..2bc5692db 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_brass_nugget_8" + "recipe": "cosmere:lerasium_chromium_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_brass_nugget_8" + "cosmere:lerasium_chromium_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json deleted file mode 100644 index e1381dee8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_chromium_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_chromium_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json deleted file mode 100644 index f4f7ca138..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_chromium_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_chromium_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json deleted file mode 100644 index a2ad9dee5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_chromium_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_chromium_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json deleted file mode 100644 index fd98d1ce7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_chromium_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_chromium_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json similarity index 84% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json index 5eb2b8080..7765449e6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasatium_copper_nugget_8" + "recipe": "cosmere:lerasium_copper_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasatium_copper_nugget_8" + "cosmere:lerasium_copper_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json deleted file mode 100644 index a8b94aacd..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_copper_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_copper_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json deleted file mode 100644 index e073aaf3b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_copper_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_copper_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json deleted file mode 100644 index f0c2d5e33..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_copper_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_copper_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json deleted file mode 100644 index 57a510ff3..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_copper_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_copper_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json new file mode 100644 index 000000000..8729b654a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_duralumin_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_duralumin_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json deleted file mode 100644 index 196da0636..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_duralumin_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_duralumin_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json deleted file mode 100644 index f55ff8bce..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_duralumin_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_duralumin_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json deleted file mode 100644 index 9daaa06b0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_duralumin_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_duralumin_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json deleted file mode 100644 index a0942e1fc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_duralumin_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_duralumin_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json new file mode 100644 index 000000000..7f4863ebb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_electrum_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_electrum_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json deleted file mode 100644 index 5170775d1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_electrum_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_electrum_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json deleted file mode 100644 index b72d03996..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_electrum_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_electrum_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json deleted file mode 100644 index dab43b914..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_electrum_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_electrum_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json deleted file mode 100644 index 37e316dec..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_electrum_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_electrum_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json similarity index 86% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json index 8eced9abb..4a4784c0f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_tin_nugget_4" + "recipe": "cosmere:lerasium_god_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_tin_nugget_4" + "cosmere:lerasium_god_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json index 882b135bb..d023cd589 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_gold_nugget_4" + "recipe": "cosmere:lerasium_gold_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_gold_nugget_4" + "cosmere:lerasium_gold_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json deleted file mode 100644 index ff3f8e0aa..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_gold_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_gold_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json deleted file mode 100644 index f41f85f4c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_gold_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_gold_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json index ff0fb9bf7..60a15bc09 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_gold_nugget_8" + "recipe": "cosmere:lerasium_iron_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_gold_nugget_8" + "cosmere:lerasium_iron_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json deleted file mode 100644 index ce418ab4e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_iron_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_iron_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json deleted file mode 100644 index 112cc868b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_iron_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_iron_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json new file mode 100644 index 000000000..0fcd607d0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_nicrosil_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_nicrosil_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json deleted file mode 100644 index db9016e5f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_nicrosil_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_nicrosil_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json deleted file mode 100644 index 2ffc5bff5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_nicrosil_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_nicrosil_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json deleted file mode 100644 index 7f884e7a3..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_nicrosil_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_nicrosil_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json deleted file mode 100644 index 4986d9111..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_nicrosil_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_nicrosil_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json index 822de92b9..3d0fea13b 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_12.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_brass_nugget_12" + "recipe": "cosmere:lerasium_pewter_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_brass_nugget_12" + "cosmere:lerasium_pewter_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json deleted file mode 100644 index 07ff4b7fa..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_pewter_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_pewter_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json deleted file mode 100644 index 83440b0df..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_pewter_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_pewter_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json deleted file mode 100644 index 89b6a8ef8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_pewter_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_pewter_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json deleted file mode 100644 index fc9d6f30b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_pewter_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_pewter_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json index 2121e616a..2ec7de149 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_brass_nugget_8" + "recipe": "cosmere:lerasium_steel_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_brass_nugget_8" + "cosmere:lerasium_steel_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json deleted file mode 100644 index fbaff47df..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_steel_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_steel_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json deleted file mode 100644 index adb06a159..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_steel_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_steel_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json deleted file mode 100644 index 28f38ba39..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_steel_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_steel_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json deleted file mode 100644 index afb9514fe..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_steel_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_steel_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json similarity index 79% rename from src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json rename to src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json index 9e93151e6..02f1900ab 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_8.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] @@ -15,7 +15,7 @@ }, "has_the_recipe": { "conditions": { - "recipe": "cosmere:lerasium_iron_nugget_8" + "recipe": "cosmere:lerasium_tin_nugget" }, "trigger": "minecraft:recipe_unlocked" } @@ -28,7 +28,7 @@ ], "rewards": { "recipes": [ - "cosmere:lerasium_iron_nugget_8" + "cosmere:lerasium_tin_nugget" ] }, "sends_telemetry_event": false diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json deleted file mode 100644 index 8f694f3fe..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_tin_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_tin_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json deleted file mode 100644 index 7cccd9c31..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_tin_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_tin_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json new file mode 100644 index 000000000..9605d3fdb --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_god_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_zinc_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_zinc_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json deleted file mode 100644 index 8b8529ace..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_12.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_zinc_nugget_12" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_zinc_nugget_12" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json deleted file mode 100644 index c3d0dc561..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_16.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_zinc_nugget_16" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_zinc_nugget_16" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json deleted file mode 100644 index fb04d602e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_4.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_zinc_nugget_4" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_zinc_nugget_4" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json deleted file mode 100644 index 731cff74f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_8.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_zinc_nugget_8" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_zinc_nugget_8" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json index 3e6564eb8..1e02a3c0f 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:atium_nugget" + "cosmere:atium_god_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json index 043ed9623..bb91ea510 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:harmonium_nugget" + "cosmere:harmonium_god_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json index 934d28c2c..c913580f7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasatium_nugget" + "cosmere:lerasatium_god_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json index 294732a20..6641d3321 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json @@ -6,7 +6,7 @@ "items": [ { "items": [ - "cosmere:lerasium_nugget" + "cosmere:lerasium_god_nugget" ] } ] diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json new file mode 100644 index 000000000..4db2a11ad --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "cosmere:atium_nugget" + } + ], + "result": { + "item": "cosmere:atium_god_nugget", + "nbt": "{nuggetSize:16}" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json index adaa2c0d6..9588a6ac1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -4,47 +4,47 @@ "ingredients": [ { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:atium_nugget", + "item": "cosmere:atium_god_nugget", "nbt": "{nuggetSize:16}" } ], diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json index 98b1da5b8..90d688bf1 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json @@ -8,6 +8,6 @@ ], "result": { "count": 9, - "item": "cosmere:atium_nugget" + "item": "cosmere:atium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json index bb56af95f..d5aab94b7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json @@ -8,6 +8,6 @@ ], "result": { "count": 9, - "item": "cosmere:harmonium_nugget" + "item": "cosmere:harmonium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json index 308d2c87d..2d7d1c99a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json @@ -8,6 +8,6 @@ ], "result": { "count": 9, - "item": "cosmere:lerasatium_nugget" + "item": "cosmere:lerasatium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json index 2c2201b56..f7f86c355 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json @@ -8,6 +8,6 @@ ], "result": { "count": 9, - "item": "cosmere:lerasium_nugget" + "item": "cosmere:lerasium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json new file mode 100644 index 000000000..30b6cf46b --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "cosmere:harmonium_nugget" + } + ], + "result": { + "item": "cosmere:harmonium_god_nugget", + "nbt": "{nuggetSize:16}" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json index df415e875..2cd0a0664 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -4,47 +4,47 @@ "ingredients": [ { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:harmonium_nugget", + "item": "cosmere:harmonium_god_nugget", "nbt": "{nuggetSize:16}" } ], diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json index a1d3c967f..d9d087397 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:aluminum_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json deleted file mode 100644 index 73f5c6720..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json deleted file mode 100644 index 31105d947..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json deleted file mode 100644 index b59be4f83..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json index 428c001bc..82dde95cd 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:bendalloy_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json deleted file mode 100644 index 47b1cceaf..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json deleted file mode 100644 index 04cc145a9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json deleted file mode 100644 index 759c2640f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json index 9392487f1..3ed1201fe 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:brass_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json deleted file mode 100644 index d3567c76c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json deleted file mode 100644 index 67cb5a67c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json deleted file mode 100644 index 9db333eca..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json index 291d1665b..75199efc0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:bronze_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json deleted file mode 100644 index 10093b0e0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json deleted file mode 100644 index 13f186f06..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json deleted file mode 100644 index 06a0728f0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json index 302f6e993..5e2de8778 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:cadmium_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json deleted file mode 100644 index 7683820f4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json deleted file mode 100644 index 33b2d8a90..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json deleted file mode 100644 index f24136e23..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json index f23b1200c..d42630647 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:chromium_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json deleted file mode 100644 index 4ed8b4a18..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json deleted file mode 100644 index af4af4de7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json deleted file mode 100644 index 4ff2f063c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json index 03748cc75..9f996a328 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:copper_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json deleted file mode 100644 index 96bf54a69..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json deleted file mode 100644 index 50156f1c2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json deleted file mode 100644 index b4f7020fc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json index ce2b6a110..511dc5103 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:duralumin_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json deleted file mode 100644 index f7ee68dfe..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json deleted file mode 100644 index e1701da9d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json deleted file mode 100644 index 86f6ee839..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json index 6e621e4b7..024f7b21a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:electrum_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json deleted file mode 100644 index 426872db8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json deleted file mode 100644 index 7e156ef01..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json deleted file mode 100644 index bc9052f7a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json new file mode 100644 index 000000000..b93dac98a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "cosmere:lerasatium_nugget" + } + ], + "result": { + "item": "cosmere:lerasatium_god_nugget", + "nbt": "{nuggetSize:16}" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json index c80274a97..aa8817017 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json @@ -6,9 +6,7 @@ "item": "minecraft:gold_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json deleted file mode 100644 index c06920271..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json deleted file mode 100644 index 079c9f088..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json deleted file mode 100644 index 8a20db314..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json index d5eeb63f8..ed06427e3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -4,47 +4,47 @@ "ingredients": [ { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", + "item": "cosmere:lerasatium_god_nugget", "nbt": "{nuggetSize:16}" } ], diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json index 4c2aac1da..68edcc037 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json @@ -6,9 +6,7 @@ "item": "minecraft:iron_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json deleted file mode 100644 index ea597288f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json deleted file mode 100644 index 77676e01d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json deleted file mode 100644 index 2c8653902..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json index 9017f4e69..52c68f402 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:nicrosil_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json deleted file mode 100644 index ee720cabe..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json deleted file mode 100644 index 3a48121d8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json deleted file mode 100644 index 36bbf7903..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json index 0a84d404d..3ac256f29 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:pewter_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json deleted file mode 100644 index d4966ecf9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json deleted file mode 100644 index 20a744b73..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json deleted file mode 100644 index 41367c837..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json index c7bb37fe9..a93eeb1a0 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:steel_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json deleted file mode 100644 index cfcf395b8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json deleted file mode 100644 index 974f1afbd..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json deleted file mode 100644 index 0e363388d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json similarity index 76% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json index 347d20c77..dcad34d61 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:tin_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json deleted file mode 100644 index f5c112fe2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json deleted file mode 100644 index cefb63388..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json deleted file mode 100644 index c94c86996..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json similarity index 76% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json index 4446719c1..65ecfeb70 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:zinc_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasatium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json deleted file mode 100644 index d5e0b48dc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json deleted file mode 100644 index 402ebcf75..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json deleted file mode 100644 index 2bfd4d533..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json index d5f3b381c..83aca2ced 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:aluminum_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json deleted file mode 100644 index 343ac826e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json deleted file mode 100644 index 97c981794..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json deleted file mode 100644 index 9769a8bb4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json index 957e71f15..d7552084d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:bendalloy_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json deleted file mode 100644 index cedf8509e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json deleted file mode 100644 index b4f257efb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json deleted file mode 100644 index bd4b177eb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json index e302dbd35..4ca9d549e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:brass_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json deleted file mode 100644 index 1cd87294c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json deleted file mode 100644 index 22809d036..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json deleted file mode 100644 index ae166676c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json index 4b073b78f..3f71b7b00 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:bronze_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json deleted file mode 100644 index d27b1b3a7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json deleted file mode 100644 index 6f9531f33..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json deleted file mode 100644 index 2550d29a7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json index 947e619f1..6ea0aa7a5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:cadmium_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json deleted file mode 100644 index 2b31532d9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json deleted file mode 100644 index d60b1ea60..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json deleted file mode 100644 index d0be165b9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json index b79387fbf..1b7935cd7 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:chromium_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json deleted file mode 100644 index db2d56f14..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json deleted file mode 100644 index 950b1cd30..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json deleted file mode 100644 index 2fb0cb1c2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json index 71645d023..e03e408e6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:copper_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json deleted file mode 100644 index 897ca757d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json deleted file mode 100644 index 1920d5f5c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json deleted file mode 100644 index dcddf087f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json index 86af08d3a..fb2b2cb5c 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:duralumin_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json deleted file mode 100644 index 974adf5a9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json deleted file mode 100644 index ae34b8d83..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json deleted file mode 100644 index 7e973d639..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json index 41024a144..aac72c3a5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:electrum_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json deleted file mode 100644 index 3c2d3c53c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json deleted file mode 100644 index 53f4cf3c1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json deleted file mode 100644 index ca926bd89..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json new file mode 100644 index 000000000..59cce3e3a --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "cosmere:lerasium_nugget" + } + ], + "result": { + "item": "cosmere:lerasium_god_nugget", + "nbt": "{nuggetSize:16}" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json index c4c5a9295..7a5154f29 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json @@ -6,9 +6,7 @@ "item": "minecraft:gold_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json deleted file mode 100644 index f9b045f28..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json deleted file mode 100644 index fcf3fd881..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json deleted file mode 100644 index ee4566ae4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json index a066875f1..6d268d8f3 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -4,47 +4,47 @@ "ingredients": [ { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" }, { "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", + "item": "cosmere:lerasium_god_nugget", "nbt": "{nuggetSize:16}" } ], diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json index 5c167311a..f47c1a918 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json @@ -6,9 +6,7 @@ "item": "minecraft:iron_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json deleted file mode 100644 index 5bce7379b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json deleted file mode 100644 index e71e50526..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json deleted file mode 100644 index aba0cd0d4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json index 76051e961..6e8f39483 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:nicrosil_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json deleted file mode 100644 index 99da2c9d4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json deleted file mode 100644 index 83791bf3a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json deleted file mode 100644 index 4bd2e08fb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json index 82db2944a..86ebdf081 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:pewter_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json deleted file mode 100644 index 27c124635..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json deleted file mode 100644 index 892f1af62..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json deleted file mode 100644 index 8a352f30a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json index 26cdada6b..d1ee18cff 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:steel_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json deleted file mode 100644 index df5a9e70d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json deleted file mode 100644 index 77e561c85..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json deleted file mode 100644 index d6ccd46e5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json index 674ea3d2b..d81f3fdc2 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:tin_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json deleted file mode 100644 index d6ffe49e1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json deleted file mode 100644 index 770b8d020..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json deleted file mode 100644 index 80acc208d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json similarity index 77% rename from src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json rename to src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json index d389f06bd..5ad742562 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_4.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json @@ -6,9 +6,7 @@ "item": "cosmere:zinc_nugget" }, "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:4}" + "item": "cosmere:lerasium_god_nugget" } }, "pattern": [ diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json deleted file mode 100644 index 354191c03..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_12.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:12}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json deleted file mode 100644 index 85b10bf64..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_16.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:16}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json deleted file mode 100644 index 78c96e8f0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget_8.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_nugget", - "nbt": "{nuggetSize:8}" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 342f873e8..385efdf2b 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -10,6 +10,7 @@ import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.recipe.NbtShapedRecipeBuilder; import leaf.cosmere.recipe.NbtShapelessRecipeBuilder; import net.minecraft.data.PackOutput; @@ -296,47 +297,34 @@ else if(inputMetal == Items.IRON_NUGGET) int[] metalIds = new int[] { metalType.getID() }; outNbt.putIntArray("alloyedMetals", metalIds); - for(int inSize = 4; inSize <= 16; inSize+=4) - { - CompoundTag inNbt = new CompoundTag(); - inNbt.putInt("nuggetSize", inSize); - - String name = godMetalItem.getMetalType().getName() + "_" + - metalType.getName() + "_nugget_" + inSize; - - NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) - .define('I', inputMetal) - .definePartial('J', inputGodMetal, inNbt) - .pattern("III") - .pattern("IJI") - .pattern("III") - .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(outNbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name)); - } + String name = godMetalItem.getMetalType().getName() + "_" + + metalType.getName() + "_nugget"; + + NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) + .define('I', inputMetal) + .define('J', inputGodMetal) + .pattern("III") + .pattern("IJI") + .pattern("III") + .unlockedBy("has_item", has(inputGodMetal)) + .resultNbt(outNbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } protected void godMetalNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) { if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; + CompoundTag outNbt = new CompoundTag(); + outNbt.putInt("nuggetSize", 16); - for(int inSize = 1; inSize <= 8; inSize*=2) - { - CompoundTag inNbt = new CompoundTag(); - inNbt.putInt("nuggetSize", inSize); - - CompoundTag outNbt = new CompoundTag(); - outNbt.putInt("nuggetSize", inSize*2); - - String name = godMetalItem.getMetalType().getName() + "_nugget_" + inSize; + String name = godMetalItem.getMetalType().getName() + "_god_nugget"; - NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, inputGodMetal) - .requiresPartial(inputGodMetal, inNbt, 2) - .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(outNbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name)); - } + NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_NUGGETS.get(godMetalItem.getMetalType()).get()) + .requires(inputGodMetal) + .unlockedBy("has_item", has(inputGodMetal)) + .resultNbt(outNbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } // For items with size diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 2515197e4..081076bed 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -122,6 +122,8 @@ protected void addRecipes(Consumer consumer) else { compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get()).save(consumer); decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + + godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); } if (metalType.isAlloy()) diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index f509c12a8..b41292e6a 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -8,6 +8,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -46,6 +47,11 @@ else if (item instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) simpleItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); continue; } + else if (item instanceof GodMetalNuggetItem godMetalNuggetItem) + { + simpleItem(path, godMetalNuggetItem.getMetalType().getName() + "_nugget"); + continue; + } ////otherwise set specific textures based on these item types //else if (item instanceof MetalIngotItem) //{ diff --git a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java index 8b56b15a4..88711cf51 100644 --- a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java @@ -26,7 +26,6 @@ public static void register(CommandDispatcher dispatcher) .then(SummonCommand.register(dispatcher)) .then(CosmereEffectCommand.register(dispatcher)) .then(ChooseMetalbornPowersCommand.register(dispatcher)) - .then(MetalNuggetCommand.register(dispatcher)) ); } } diff --git a/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java b/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java deleted file mode 100644 index 4c7c03287..000000000 --- a/src/main/java/leaf/cosmere/common/commands/arguments/MetalArgumentType.java +++ /dev/null @@ -1,72 +0,0 @@ -package leaf.cosmere.common.commands.arguments; - -import com.mojang.brigadier.StringReader; -import com.mojang.brigadier.arguments.ArgumentType; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.brigadier.exceptions.DynamicCommandExceptionType; -import com.mojang.brigadier.suggestion.Suggestions; -import com.mojang.brigadier.suggestion.SuggestionsBuilder; -import leaf.cosmere.api.Constants; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Metals.MetalType; -import net.minecraft.commands.SharedSuggestionProvider; -import net.minecraft.network.chat.Component; - -import java.util.Collection; -import java.util.Collections; -import java.util.Locale; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Stream; - -public class MetalArgumentType implements ArgumentType -{ - private static final Collection EXAMPLES = Stream.of(MetalType.STEEL.getName()).toList(); - - public static final DynamicCommandExceptionType INVALID_METAL_EXCEPTION = - new DynamicCommandExceptionType((metal) -> - Component.translatable(Constants.Strings.POWER_INVALID, metal)); - - public static SuggestionsBuilder addMetalNamesWithTooltip(SuggestionsBuilder builder) - { - for (MetalType metalType : EnumUtils.METAL_TYPES) - { - builder.suggest(metalType.getName(), Component.translatable(metalType.getTranslationKey())); - } - - builder.buildFuture(); - return builder; - } - - public static MetalArgumentType createArgument() - { - return new MetalArgumentType(); - } - - @Override - public MetalType parse(StringReader reader) throws CommandSyntaxException - { - try - { - String read = reader.readString(); - return MetalType.valueOf(read.toUpperCase(Locale.ROOT)); - } catch (IllegalArgumentException e) - { - throw INVALID_METAL_EXCEPTION.create(MetalType.valueOf(reader.getRead())); - } - } - - @Override - public CompletableFuture listSuggestions(CommandContext context, SuggestionsBuilder builder) - { - return context.getSource() instanceof SharedSuggestionProvider - ? SharedSuggestionProvider.suggest(Collections.emptyList(), addMetalNamesWithTooltip(builder)) - : Suggestions.empty(); - } - - @Override - public Collection getExamples() - { - return EXAMPLES; - } -} diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java deleted file mode 100644 index e8ad9cc99..000000000 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/MetalNuggetCommand.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * File updated ~ 27 - 2 - 2023 ~ Leaf - */ - -package leaf.cosmere.common.commands.subcommands; - -import com.mojang.brigadier.CommandDispatcher; -import com.mojang.brigadier.arguments.IntegerArgumentType; -import com.mojang.brigadier.builder.ArgumentBuilder; -import com.mojang.brigadier.context.CommandContext; -import com.mojang.brigadier.exceptions.CommandSyntaxException; -import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; -import leaf.cosmere.api.IHasAlloy; -import leaf.cosmere.api.IHasSize; -import leaf.cosmere.api.Metals.MetalType; -import leaf.cosmere.common.commands.arguments.MetalArgumentType; -import net.minecraft.commands.CommandSourceStack; -import net.minecraft.commands.Commands; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; - -import java.util.HashSet; - -import static leaf.cosmere.common.registry.ItemsRegistry.GOD_METAL_NUGGETS; - -public class MetalNuggetCommand extends ModCommand -{ - - @Override - public int run(CommandContext context) throws CommandSyntaxException - { - return SINGLE_SUCCESS; - } - - - - private static int give(CommandContext context) throws CommandSyntaxException - { - MetalType godMetal = null; - HashSet metalTypes = new HashSet<>(); - - int sizeArg = context.getArgument("size", Integer.class); - - for(int i = 0; i < 2; i++) - { - try { - MetalType metalTypeArg = context.getArgument("metal" + i, MetalType.class); - metalTypes.add(metalTypeArg); - if (metalTypeArg.isGodMetal()) - { - godMetal = metalTypeArg; - } - } catch (IllegalArgumentException e) { - break; - } - } - - if(godMetal != null) - { - Item item = GOD_METAL_NUGGETS.get(godMetal).get(); - ItemStack itemStack = new ItemStack(item, 1); - - if (item instanceof IHasSize sizeItem) - { - if(!sizeItem.writeMetalAlloySizeNbtData(itemStack, sizeArg)) - { - String errorMsg = "Invalid Metals"; - throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); - } - } - - if(item instanceof IHasAlloy alloyItem) - { - if(!alloyItem.writeMetalAlloyNbtData(itemStack, metalTypes)) - { - String errorMsg = "Invalid Size"; - throw new CommandSyntaxException(new SimpleCommandExceptionType(Component.literal(errorMsg)), Component.literal(errorMsg)); - } - } - context.getSource().getPlayerOrException().getInventory().add(itemStack); - } - - return SINGLE_SUCCESS; - } - - public static ArgumentBuilder register(CommandDispatcher dispatcher) - { - return Commands.literal("metal_nugget").requires(context -> context.hasPermission(2)) - .then(Commands.argument("size", IntegerArgumentType.integer(1, 16)) - .then(Commands.argument("metal0", MetalArgumentType.createArgument()) - .executes(MetalNuggetCommand::give) - .then(Commands.argument("metal1", MetalArgumentType.createArgument()) - .executes(MetalNuggetCommand::give)))); - } -} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index fadf86373..b92cbcad2 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -42,6 +42,11 @@ public int getMinSize() return MIN_SIZE; } + @Override + public int getMaxStackSize(ItemStack stack) { + return 1; + } + // God Metals shouldn't hurt @Override public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity pLivingEntity) @@ -74,7 +79,9 @@ public ItemStack getCraftingRemainingItem(ItemStack stack) { tag.putInt("nuggetSize", newSize); if (newSize < 4) { - return ItemStack.EMPTY; + out.shrink(1); + tag.putInt("nuggetSize", this.getMaxSize()); + return out; } return out; diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index bcd12624c..f5dadf987 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -44,6 +44,10 @@ public int getUseDuration(ItemStack stack) public InteractionResultHolder use(Level world, Player player, @Nonnull InteractionHand hand) { ItemStack stack = player.getItemInHand(hand); + + // Skip eating if it is a god metal + if(this.getMetalType().isGodMetal()) return InteractionResultHolder.pass(stack); + if (player.canEat(true)) { player.startUsingItem(hand); diff --git a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java index 496da0f83..d2f78e6b7 100644 --- a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java @@ -4,11 +4,9 @@ import leaf.cosmere.common.commands.arguments.AllomancyArgumentType; import leaf.cosmere.common.commands.arguments.FeruchemyArgumentType; import leaf.cosmere.common.commands.arguments.ManifestationsArgumentType; -import leaf.cosmere.common.commands.arguments.MetalArgumentType; import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; import net.minecraft.commands.synchronization.SingletonArgumentInfo; -import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; @@ -31,9 +29,4 @@ public class ArgumentTypeRegistry () -> ArgumentTypeInfos.registerByClass( FeruchemyArgumentType.class, SingletonArgumentInfo.contextFree(FeruchemyArgumentType::createArgument))); - - public static final RegistryObject> METAL_ARGUMENT_TYPE = ARGUMENT_TYPE_INFOS.register("metal_argument_type", - () -> ArgumentTypeInfos.registerByClass( - MetalArgumentType.class, - SingletonArgumentInfo.contextFree(MetalArgumentType::createArgument))); } diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 5e33d4f9e..f79d7e274 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -40,11 +40,7 @@ public class CreativeTabsRegistry List items = ItemsRegistry.ITEMS.getAllItems(); for(IItemProvider item : items) { - if(item.asItem() instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) - { - handleGodMetalNuggetItem(godMetalAlloyNuggetItem, output); - } - else + if(!(item.asItem() instanceof GodMetalAlloyNuggetItem)) { output.accept(item); } diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 8e79d9c70..5a2fc092f 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -51,7 +51,6 @@ public class ItemsRegistry public static final Map> METAL_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() || type == Metals.MetalType.COPPER) // I'm sorry for this Leaf :( >> Gerbagel - .filter(type -> !type.isGodMetal()) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -75,7 +74,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.getName() + RegNameStubs.NUGGET, + type.getName() + "_god" + RegNameStubs.NUGGET, () -> new GodMetalNuggetItem(type) ))); From 9c41a580298dd15bf8e01e3bedfb33a6941ed65f Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 18:31:26 -0500 Subject: [PATCH 1057/1090] small fix up --- src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index f5dadf987..ce88e4b08 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -4,6 +4,7 @@ package leaf.cosmere.common.items; +import leaf.cosmere.api.IGrantsManifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; import net.minecraft.world.InteractionHand; @@ -45,8 +46,8 @@ public InteractionResultHolder use(Level world, Player player, @Nonnu { ItemStack stack = player.getItemInHand(hand); - // Skip eating if it is a god metal - if(this.getMetalType().isGodMetal()) return InteractionResultHolder.pass(stack); + // Skip eating if it is a god metal, but not if it gives you powers + if(!(stack.getItem() instanceof IGrantsManifestations) && this.getMetalType().isGodMetal()) return InteractionResultHolder.pass(stack); if (player.canEat(true)) { From 867eb51a5e2afab059b6ca38afc10b0bc73304a4 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 18:40:22 -0500 Subject: [PATCH 1058/1090] cleanup --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 18 +------ .../recipes/misc/atium_ingot.json | 35 ------------ .../conversions/atium_item_deconstruct.json | 35 ------------ .../harmonium_item_deconstruct.json | 35 ------------ .../lerasatium_item_deconstruct.json | 35 ------------ .../lerasium_item_deconstruct.json | 35 ------------ .../recipes/misc/harmonium_ingot.json | 35 ------------ .../recipes/misc/lerasatium_ingot.json | 35 ------------ .../recipes/misc/lerasium_ingot.json | 35 ------------ .../data/cosmere/recipes/atium_ingot.json | 54 ------------------- .../conversions/atium_item_deconstruct.json | 13 ----- .../harmonium_item_deconstruct.json | 13 ----- .../lerasatium_item_deconstruct.json | 13 ----- .../lerasium_item_deconstruct.json | 13 ----- .../data/cosmere/recipes/harmonium_ingot.json | 54 ------------------- .../cosmere/recipes/lerasatium_ingot.json | 54 ------------------- .../data/cosmere/recipes/lerasium_ingot.json | 54 ------------------- .../java/leaf/cosmere/BaseRecipeProvider.java | 18 ------- .../main/java/leaf/cosmere/RecipeGen.java | 3 -- .../common/registry/ArgumentTypeRegistry.java | 1 + 20 files changed, 2 insertions(+), 586 deletions(-) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 4bd720e66..e19e4b774 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-09T18:15:16.56217 Recipes +// 1.20.1 2025-11-09T18:40:12.0987906 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -104,7 +104,6 @@ c7e6aa166c29193cf7a83b19845f75beec514cec data/cosmere/advancements/recipes/misc/ 4b16a3704599e05a64dea1ec6cbe9668fde79478 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_aluminum_ore.json c9fe0f3e92644b7a6d3028dfa13e4ffa12af4d18 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json a5ec44e370311037f941a04ed8f4389450649db7 data/cosmere/advancements/recipes/misc/aluminum_ingot_from_smelting_raw_aluminum_ore.json -6abdb4902ce780e0cead7ce1420b9840fe43ebce data/cosmere/advancements/recipes/misc/atium_ingot.json c643a34c452d8168369c02896ce61fe422011971 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_blasting_bendalloy_blend.json 11d6f0c8cea954b1b2d9b056bc85d0f57f98fe44 data/cosmere/advancements/recipes/misc/bendalloy_ingot_from_smelting_bendalloy_blend.json 654e4bcd5a4be48d8530a8ff8d400864255f31aa data/cosmere/advancements/recipes/misc/brass_ingot_from_blasting_brass_blend.json @@ -126,7 +125,6 @@ d6e7c5919263ed995b6e1edd6c562a3e9724cb8c data/cosmere/advancements/recipes/misc/ dbc0b939398763dcdfa0ca8a5bd9d20cc85d65a5 data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json 659f091523822870e0b5c819783e976e59d8f414 data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json dbc010d11d586d1322bd0adb0a5f1baabeefe4cf data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json -5bab7af8af7a3ac64415997b98cd5bed3817251d data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json 98b94a773b82e90dff928a615b5e9aaf5c2ce5f3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json a1a7362f8b093200c65077c55d176bb7d63fe9e3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json bb8c793713f8c0a32b9d2d8d3c058075d42afac0 data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json @@ -143,13 +141,10 @@ ac26d2d5577a16c67e42c855a46c20c73f8b4aa8 data/cosmere/advancements/recipes/misc/ 6768c27277ed3709692a9b0ce7ff2345d2d1900b data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json 1c357b17c43d7a3434fb1d15a8bfd4f67c9f14bb data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json 2d039025ec49cff788309f50023d90f5dc515800 data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json -2fb91bb3a6ccf08e5f283b48b56bac34789823fc data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json 14d5adab97c136743fc0c292428139cbba7d59b9 data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json 12d9f9ce91f202aa020bb6ee173d37754e02225b data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json eaf60b4440cbd54d83b22c8b780825571ed26fe9 data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json -2b4f6eee5760d6398ded107a60eb14f81395ccdc data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json 27edd917293def5ec9a7aed15130398dae268bcb data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json -6582b87948a0690d7cf7406e0c8f743acdb46e24 data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json fd0f0e33312dd33c38585424106b464fa490f6d0 data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json 4f74f10ffcadbd766f1988ce7fa397696ba6ce20 data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json 9226b65f455009ac8e452ba06553829e23262c35 data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json @@ -170,15 +165,12 @@ a0b1993f5f6ef980f0fe9c351db512ac0e84af31 data/cosmere/advancements/recipes/misc/ 5555e5c100bd7b804344ddfb6c6ea80ed204f175 data/cosmere/advancements/recipes/misc/duralumin_ingot_from_smelting_duralumin_blend.json 0e10b0fb67bddbe8e023b18f0e9974e883f534d7 data/cosmere/advancements/recipes/misc/electrum_ingot_from_blasting_electrum_blend.json 16785ac3722c92b31faa145ddffe92f3257ed0f2 data/cosmere/advancements/recipes/misc/electrum_ingot_from_smelting_electrum_blend.json -1afc74fad4d9887a309081fc605bf3480ce24d0e data/cosmere/advancements/recipes/misc/harmonium_ingot.json 74ec3e1d84e37bd79d815de56b4ba08447a6852d data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_deepslate_lead_ore.json ab3af6154116ab63676b766b762a6d6775d08e39 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_lead_ore.json f74b4d5daf0b2de67ac1279f4431a8d0a40536a5 data/cosmere/advancements/recipes/misc/lead_ingot_from_blasting_raw_lead_ore.json 4677ad6ab84978723788a61856fa18de55cb3f20 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_deepslate_lead_ore.json 78c7450aab83fb92a217ed88c34730957c67bff1 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_lead_ore.json d576db25f5c71b4c77958c2104444e7523b04032 data/cosmere/advancements/recipes/misc/lead_ingot_from_smelting_raw_lead_ore.json -684ff3243a45529da2e2eab1341dfbd164d78d17 data/cosmere/advancements/recipes/misc/lerasatium_ingot.json -9284befd1c2b3bae90923e5f176cd65d2454c6f6 data/cosmere/advancements/recipes/misc/lerasium_ingot.json 08b7debec020216a21c67912eeb8cfc7fdddc3c2 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_deepslate_nickel_ore.json 8110c799bbb2a42d7921bef97593bf5c47f32416 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_nickel_ore.json 6b963b370cd777d523d2d29087b4ffafbf3e9d66 data/cosmere/advancements/recipes/misc/nickel_ingot_from_blasting_raw_nickel_ore.json @@ -243,7 +235,6 @@ ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_fro cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json 8019d7d79bdf4e408849b6e56bc3108a8ed3877d data/cosmere/recipes/atium_god_nugget.json -dc00acd11c59def6d22c05111eef91161314aa17 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -275,7 +266,6 @@ df3cb1f0fe2674c0e0b4deeb20d68be7e0223c5a data/cosmere/recipes/chromium_ingot_fro 4d7d4b24afbb4931ceb6f55dc0413f470eaffc7c data/cosmere/recipes/conversions/aluminum_block_deconstruct.json 1f73890dbe2be61e03977a713b960b328b7a2087 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json 680c0658b68f344bca81f327ad3bf74a4da18795 data/cosmere/recipes/conversions/atium_block_deconstruct.json -51aee7de073831314356f6f62dd708d9a5b9ca73 data/cosmere/recipes/conversions/atium_item_deconstruct.json c32019d369a231302c373b5418d3f2ca415052a2 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json 93fa65e4a6c54d997c9e9676b8bd4cd90155359c data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json f7014f16f2a82bdbfb0262389dfa2ff009432f6b data/cosmere/recipes/conversions/brass_block_deconstruct.json @@ -292,13 +282,10 @@ ece851d4f1b9da48bee3133be5aba10f3d72ae8e data/cosmere/recipes/conversions/duralu 2c943c58f26789a8feee9b05471d473b38c4b272 data/cosmere/recipes/conversions/electrum_block_deconstruct.json 79ca04523d1b2ed9c921b4d669d33848190eeadb data/cosmere/recipes/conversions/electrum_item_deconstruct.json 9c0547bd88bbf7c5b1ceb54b8780e51267e33b7b data/cosmere/recipes/conversions/harmonium_block_deconstruct.json -4af3a37e46f56cb02bc1e683961f2714fe5ac682 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json f10ee6f07670b583fc8d56c21c8bf16ed860820b data/cosmere/recipes/conversions/lead_block_deconstruct.json 04935fac62043daebfa92bec2cbbbf126aa1fc3f data/cosmere/recipes/conversions/lead_item_deconstruct.json ba927c70c851b5fe745cedc39c246bd837dec975 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json -6894d977ce4ee775e5f19173fedc99ef7557f58d data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json 2c2fbad486619b5912f3150505802f9e9715461d data/cosmere/recipes/conversions/lerasium_block_deconstruct.json -2b892255650c51bf5989219304204683c13c50eb data/cosmere/recipes/conversions/lerasium_item_deconstruct.json d4b725ddc9a2fbd493c3216abbdcc18592358a69 data/cosmere/recipes/conversions/malatium_block_deconstruct.json 689b14a3a023557584c1c058b0fc2c2b06efaa04 data/cosmere/recipes/conversions/malatium_item_deconstruct.json 2866e6f39fd8c0ce152db25ffb4a93a381ab204e data/cosmere/recipes/conversions/nickel_block_deconstruct.json @@ -325,7 +312,6 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json a3e3aecb833416ea16846f2f9915f847b3a73215 data/cosmere/recipes/harmonium_god_nugget.json -eddaf073d9f315f873848b00db0e3548d66b3186 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -346,7 +332,6 @@ dde47d6010d1469830519749295934bc964eb4fe data/cosmere/recipes/lerasatium_duralum 07440a499f3a0aaa84241f058fdda6cec1a22cf2 data/cosmere/recipes/lerasatium_electrum_nugget.json f60b76ba50426d553767f504583a83a357e75514 data/cosmere/recipes/lerasatium_god_nugget.json 6264f4b39324d5aa026a3ce8294d57dcc8f8b08a data/cosmere/recipes/lerasatium_gold_nugget.json -2eee8b6e7d6249c88a95502726b7a8bfb09c2146 data/cosmere/recipes/lerasatium_ingot.json 3d359ee7a7b834e8a75a37cfedcbbdf8f4e8f604 data/cosmere/recipes/lerasatium_iron_nugget.json 532a5a38b2dd5df91315a8814114887bae55cc37 data/cosmere/recipes/lerasatium_nicrosil_nugget.json a86e063c1b86cddf781ec28d1efbbf9f0cc22b7b data/cosmere/recipes/lerasatium_pewter_nugget.json @@ -365,7 +350,6 @@ c34582a3acec2919e6aa73bc8c23a881d0d8c4e9 data/cosmere/recipes/lerasium_copper_nu 4481f036adb77a5d1069fcaedbedf7c4b9d88707 data/cosmere/recipes/lerasium_electrum_nugget.json b2c85cfca76827cc42116718857ad6b72de3092b data/cosmere/recipes/lerasium_god_nugget.json 41615fe934a110a8a1a16bf6f1032157ea3aa4e7 data/cosmere/recipes/lerasium_gold_nugget.json -0e39142108dc26e7ad6e6b3399f0774be478778b data/cosmere/recipes/lerasium_ingot.json 6ee3ed105e5bcb8b240d254f0ec389885e6af46c data/cosmere/recipes/lerasium_iron_nugget.json f501c2a1047372daee27a4d3f6813e7cb10202cd data/cosmere/recipes/lerasium_nicrosil_nugget.json 6b01e1645d1ae90596777e393bf9ed8394228ac1 data/cosmere/recipes/lerasium_pewter_nugget.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json deleted file mode 100644 index 91d3cfec3..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/atium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:atium_ingot" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:atium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:atium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json deleted file mode 100644 index 1e02a3c0f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:atium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:conversions/atium_item_deconstruct" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:conversions/atium_item_deconstruct" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json deleted file mode 100644 index bb91ea510..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:harmonium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:conversions/harmonium_item_deconstruct" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:conversions/harmonium_item_deconstruct" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json deleted file mode 100644 index c913580f7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:conversions/lerasatium_item_deconstruct" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:conversions/lerasatium_item_deconstruct" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json deleted file mode 100644 index 6641d3321..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:conversions/lerasium_item_deconstruct" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:conversions/lerasium_item_deconstruct" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json deleted file mode 100644 index a054e3605..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/harmonium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:harmonium_ingot" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:harmonium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:harmonium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json deleted file mode 100644 index a710a975a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasatium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_ingot" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json deleted file mode 100644 index f099cd496..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/lerasium_ingot.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_ingot" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_ingot" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_ingot" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json deleted file mode 100644 index 9588a6ac1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" - } - ], - "result": { - "item": "cosmere:atium_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json deleted file mode 100644 index 90d688bf1..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "tag": "forge:ingots/atium" - } - ], - "result": { - "count": 9, - "item": "cosmere:atium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json deleted file mode 100644 index d5aab94b7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "tag": "forge:ingots/harmonium" - } - ], - "result": { - "count": 9, - "item": "cosmere:harmonium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json deleted file mode 100644 index 2d7d1c99a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "tag": "forge:ingots/lerasatium" - } - ], - "result": { - "count": 9, - "item": "cosmere:lerasatium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json deleted file mode 100644 index f7f86c355..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "tag": "forge:ingots/lerasium" - } - ], - "result": { - "count": 9, - "item": "cosmere:lerasium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json deleted file mode 100644 index 2cd0a0664..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" - } - ], - "result": { - "item": "cosmere:harmonium_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json deleted file mode 100644 index ed06427e3..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" - } - ], - "result": { - "item": "cosmere:lerasatium_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json deleted file mode 100644 index 6d268d8f3..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - }, - { - "type": "forge:partial_nbt", - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" - } - ], - "result": { - "item": "cosmere:lerasium_ingot" - } -} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index 385efdf2b..fe44775a6 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -327,24 +327,6 @@ protected void godMetalNuggetRecipe(Consumer consumer, ItemLike .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } - // For items with size - protected ShapelessRecipeBuilder compressRecipe(ItemLike output, ItemLike input) - { - if (!(input instanceof IHasSize sizeItemInput)) - { - return null; - } - int size = sizeItemInput.getMaxSize(); - - CompoundTag nbt = new CompoundTag(); - nbt.putInt("nuggetSize", size); - Ingredient ingredient = PartialNBTIngredient.of(input, nbt); - - return ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output) - .unlockedBy("has_item", has(output)) - .requires(ingredient, 9); - } - protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 081076bed..a073f8e99 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -120,9 +120,6 @@ protected void addRecipes(Consumer consumer) decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } else { - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get()).save(consumer); - decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); } diff --git a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java index d2f78e6b7..fd81f2b72 100644 --- a/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ArgumentTypeRegistry.java @@ -7,6 +7,7 @@ import net.minecraft.commands.synchronization.ArgumentTypeInfo; import net.minecraft.commands.synchronization.ArgumentTypeInfos; import net.minecraft.commands.synchronization.SingletonArgumentInfo; +import net.minecraftforge.eventbus.api.IEventBus; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; From 7ac6a4c6d779309e3f863132d4d26b37ca842411 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 18:42:49 -0500 Subject: [PATCH 1059/1090] correcting cleanup --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 18 +++++++++- .../recipes/decorations/atium_ingot.json | 33 +++++++++++++++++ .../recipes/decorations/harmonium_ingot.json | 33 +++++++++++++++++ .../recipes/decorations/lerasatium_ingot.json | 33 +++++++++++++++++ .../recipes/decorations/lerasium_ingot.json | 33 +++++++++++++++++ .../conversions/atium_item_deconstruct.json | 35 +++++++++++++++++++ .../harmonium_item_deconstruct.json | 35 +++++++++++++++++++ .../lerasatium_item_deconstruct.json | 35 +++++++++++++++++++ .../lerasium_item_deconstruct.json | 35 +++++++++++++++++++ .../data/cosmere/recipes/atium_ingot.json | 21 +++++++++++ .../conversions/atium_item_deconstruct.json | 13 +++++++ .../harmonium_item_deconstruct.json | 13 +++++++ .../lerasatium_item_deconstruct.json | 13 +++++++ .../lerasium_item_deconstruct.json | 13 +++++++ .../data/cosmere/recipes/harmonium_ingot.json | 21 +++++++++++ .../cosmere/recipes/lerasatium_ingot.json | 21 +++++++++++ .../data/cosmere/recipes/lerasium_ingot.json | 21 +++++++++++ .../main/java/leaf/cosmere/RecipeGen.java | 9 +++-- 18 files changed, 429 insertions(+), 6 deletions(-) create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index e19e4b774..904f65c33 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,8 +1,9 @@ -// 1.20.1 2025-11-09T18:40:12.0987906 Recipes +// 1.20.1 2025-11-09T18:42:34.0799509 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json 48e21abbdd7de3dd40a0200e7b57afc64cddca74 data/cosmere/advancements/recipes/decorations/atium_god_nugget.json +51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -19,6 +20,7 @@ c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decor b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json ac7dd6de8c4e4299bbaf51818bb8891026ca7866 data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json +878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json 1bdb2f6673b5d62cd09401f6f839fe8ffb7dc28c data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json @@ -33,6 +35,7 @@ c3ebe22f27fc7835a01de4df5131e88a5ff40e6e data/cosmere/advancements/recipes/decor 0b6d1b028f553a6b959ec342476d2bd4e57da8fb data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json 7fffd5252b30e808f6500172e3d4ecfd9d08c7f6 data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json 6e7e3c58ffb6fc7195da0c97a93c4c0a6617ed23 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json +ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json 2b96a5ad5a0bac59803ebf1214271ad9ccb2df75 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json 09d28d3b26407aea748a8c408ff97335c23f0950 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json be53c703ee40d9a4ac5ee9e8281db5791db8c710 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json @@ -51,6 +54,7 @@ dd90958a9ba59785857e1dce95ac292a2b066816 data/cosmere/advancements/recipes/decor 5f69c1c728740590d39f237cbbf1b798ed5ced0e data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json a21213dbe3ded23a9574daf2e0d1da4050dfe569 data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json 865b872edc48bcb65ce1963d474ca645b639b986 data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json +18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json 1eea95b106ab6a8be8f7b577e9a8c961b8a1725d data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json a90ba02064ae0e79e04a3527c7894e97c351e383 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json b126d32e6bd9567115b8218f1d83999d6924c20b data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json @@ -125,6 +129,7 @@ d6e7c5919263ed995b6e1edd6c562a3e9724cb8c data/cosmere/advancements/recipes/misc/ dbc0b939398763dcdfa0ca8a5bd9d20cc85d65a5 data/cosmere/advancements/recipes/misc/conversions/aluminum_block_deconstruct.json 659f091523822870e0b5c819783e976e59d8f414 data/cosmere/advancements/recipes/misc/conversions/aluminum_item_deconstruct.json dbc010d11d586d1322bd0adb0a5f1baabeefe4cf data/cosmere/advancements/recipes/misc/conversions/atium_block_deconstruct.json +594e40ee46c4b08b29b8319f69539643b736ee85 data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json 98b94a773b82e90dff928a615b5e9aaf5c2ce5f3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_block_deconstruct.json a1a7362f8b093200c65077c55d176bb7d63fe9e3 data/cosmere/advancements/recipes/misc/conversions/bendalloy_item_deconstruct.json bb8c793713f8c0a32b9d2d8d3c058075d42afac0 data/cosmere/advancements/recipes/misc/conversions/brass_block_deconstruct.json @@ -141,10 +146,13 @@ ac26d2d5577a16c67e42c855a46c20c73f8b4aa8 data/cosmere/advancements/recipes/misc/ 6768c27277ed3709692a9b0ce7ff2345d2d1900b data/cosmere/advancements/recipes/misc/conversions/electrum_block_deconstruct.json 1c357b17c43d7a3434fb1d15a8bfd4f67c9f14bb data/cosmere/advancements/recipes/misc/conversions/electrum_item_deconstruct.json 2d039025ec49cff788309f50023d90f5dc515800 data/cosmere/advancements/recipes/misc/conversions/harmonium_block_deconstruct.json +329eb749169c732714d549391d378815036b9244 data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json 14d5adab97c136743fc0c292428139cbba7d59b9 data/cosmere/advancements/recipes/misc/conversions/lead_block_deconstruct.json 12d9f9ce91f202aa020bb6ee173d37754e02225b data/cosmere/advancements/recipes/misc/conversions/lead_item_deconstruct.json eaf60b4440cbd54d83b22c8b780825571ed26fe9 data/cosmere/advancements/recipes/misc/conversions/lerasatium_block_deconstruct.json +c1dc2f1a234d6fd1f3b22ba4e8c96bdaef7cfe21 data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json 27edd917293def5ec9a7aed15130398dae268bcb data/cosmere/advancements/recipes/misc/conversions/lerasium_block_deconstruct.json +bb274ce62b99aa5b2e9bca20c5798d284230a1fb data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json fd0f0e33312dd33c38585424106b464fa490f6d0 data/cosmere/advancements/recipes/misc/conversions/malatium_block_deconstruct.json 4f74f10ffcadbd766f1988ce7fa397696ba6ce20 data/cosmere/advancements/recipes/misc/conversions/malatium_item_deconstruct.json 9226b65f455009ac8e452ba06553829e23262c35 data/cosmere/advancements/recipes/misc/conversions/nickel_block_deconstruct.json @@ -235,6 +243,7 @@ ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_fro cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json 8019d7d79bdf4e408849b6e56bc3108a8ed3877d data/cosmere/recipes/atium_god_nugget.json +2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -266,6 +275,7 @@ df3cb1f0fe2674c0e0b4deeb20d68be7e0223c5a data/cosmere/recipes/chromium_ingot_fro 4d7d4b24afbb4931ceb6f55dc0413f470eaffc7c data/cosmere/recipes/conversions/aluminum_block_deconstruct.json 1f73890dbe2be61e03977a713b960b328b7a2087 data/cosmere/recipes/conversions/aluminum_item_deconstruct.json 680c0658b68f344bca81f327ad3bf74a4da18795 data/cosmere/recipes/conversions/atium_block_deconstruct.json +096dc7eb84e6e60c4dcf3118f92218917a1baaaa data/cosmere/recipes/conversions/atium_item_deconstruct.json c32019d369a231302c373b5418d3f2ca415052a2 data/cosmere/recipes/conversions/bendalloy_block_deconstruct.json 93fa65e4a6c54d997c9e9676b8bd4cd90155359c data/cosmere/recipes/conversions/bendalloy_item_deconstruct.json f7014f16f2a82bdbfb0262389dfa2ff009432f6b data/cosmere/recipes/conversions/brass_block_deconstruct.json @@ -282,10 +292,13 @@ ece851d4f1b9da48bee3133be5aba10f3d72ae8e data/cosmere/recipes/conversions/duralu 2c943c58f26789a8feee9b05471d473b38c4b272 data/cosmere/recipes/conversions/electrum_block_deconstruct.json 79ca04523d1b2ed9c921b4d669d33848190eeadb data/cosmere/recipes/conversions/electrum_item_deconstruct.json 9c0547bd88bbf7c5b1ceb54b8780e51267e33b7b data/cosmere/recipes/conversions/harmonium_block_deconstruct.json +e5a593c779c7d8efcdb7d945f545e579b563c2a5 data/cosmere/recipes/conversions/harmonium_item_deconstruct.json f10ee6f07670b583fc8d56c21c8bf16ed860820b data/cosmere/recipes/conversions/lead_block_deconstruct.json 04935fac62043daebfa92bec2cbbbf126aa1fc3f data/cosmere/recipes/conversions/lead_item_deconstruct.json ba927c70c851b5fe745cedc39c246bd837dec975 data/cosmere/recipes/conversions/lerasatium_block_deconstruct.json +63a7e4b091da9d0c5706874f34c8e97b3c62ef08 data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json 2c2fbad486619b5912f3150505802f9e9715461d data/cosmere/recipes/conversions/lerasium_block_deconstruct.json +eb136b12ae8a72b0e0e09724698d053148fa75f9 data/cosmere/recipes/conversions/lerasium_item_deconstruct.json d4b725ddc9a2fbd493c3216abbdcc18592358a69 data/cosmere/recipes/conversions/malatium_block_deconstruct.json 689b14a3a023557584c1c058b0fc2c2b06efaa04 data/cosmere/recipes/conversions/malatium_item_deconstruct.json 2866e6f39fd8c0ce152db25ffb4a93a381ab204e data/cosmere/recipes/conversions/nickel_block_deconstruct.json @@ -312,6 +325,7 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json a3e3aecb833416ea16846f2f9915f847b3a73215 data/cosmere/recipes/harmonium_god_nugget.json +dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -332,6 +346,7 @@ dde47d6010d1469830519749295934bc964eb4fe data/cosmere/recipes/lerasatium_duralum 07440a499f3a0aaa84241f058fdda6cec1a22cf2 data/cosmere/recipes/lerasatium_electrum_nugget.json f60b76ba50426d553767f504583a83a357e75514 data/cosmere/recipes/lerasatium_god_nugget.json 6264f4b39324d5aa026a3ce8294d57dcc8f8b08a data/cosmere/recipes/lerasatium_gold_nugget.json +da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json 3d359ee7a7b834e8a75a37cfedcbbdf8f4e8f604 data/cosmere/recipes/lerasatium_iron_nugget.json 532a5a38b2dd5df91315a8814114887bae55cc37 data/cosmere/recipes/lerasatium_nicrosil_nugget.json a86e063c1b86cddf781ec28d1efbbf9f0cc22b7b data/cosmere/recipes/lerasatium_pewter_nugget.json @@ -350,6 +365,7 @@ c34582a3acec2919e6aa73bc8c23a881d0d8c4e9 data/cosmere/recipes/lerasium_copper_nu 4481f036adb77a5d1069fcaedbedf7c4b9d88707 data/cosmere/recipes/lerasium_electrum_nugget.json b2c85cfca76827cc42116718857ad6b72de3092b data/cosmere/recipes/lerasium_god_nugget.json 41615fe934a110a8a1a16bf6f1032157ea3aa4e7 data/cosmere/recipes/lerasium_gold_nugget.json +ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json 6ee3ed105e5bcb8b240d254f0ec389885e6af46c data/cosmere/recipes/lerasium_iron_nugget.json f501c2a1047372daee27a4d3f6813e7cb10202cd data/cosmere/recipes/lerasium_nicrosil_nugget.json 6b01e1645d1ae90596777e393bf9ed8394228ac1 data/cosmere/recipes/lerasium_pewter_nugget.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json new file mode 100644 index 000000000..abb83a88d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "tag": "forge:nuggets/atium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:atium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:atium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json new file mode 100644 index 000000000..cd1c4e9a2 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "tag": "forge:nuggets/harmonium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:harmonium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:harmonium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json new file mode 100644 index 000000000..ac87104d7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "tag": "forge:nuggets/lerasatium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasatium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasatium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json new file mode 100644 index 000000000..26dcdef69 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json @@ -0,0 +1,33 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "tag": "forge:nuggets/lerasium" + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:lerasium_ingot" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:lerasium_ingot" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json new file mode 100644 index 000000000..3e6564eb8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/atium_item_deconstruct.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:atium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:conversions/atium_item_deconstruct" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/atium_item_deconstruct" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json new file mode 100644 index 000000000..043ed9623 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/harmonium_item_deconstruct.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:harmonium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:conversions/harmonium_item_deconstruct" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/harmonium_item_deconstruct" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json new file mode 100644 index 000000000..934d28c2c --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasatium_item_deconstruct.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasatium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:conversions/lerasatium_item_deconstruct" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasatium_item_deconstruct" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json new file mode 100644 index 000000000..294732a20 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/misc/conversions/lerasium_item_deconstruct.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_item": { + "conditions": { + "items": [ + { + "items": [ + "cosmere:lerasium_nugget" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "cosmere:conversions/lerasium_item_deconstruct" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_item", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "cosmere:conversions/lerasium_item_deconstruct" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json new file mode 100644 index 000000000..964b03ae7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:nuggets/atium" + }, + "J": { + "item": "cosmere:atium_nugget" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:atium_ingot" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json new file mode 100644 index 000000000..98b1da5b8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/atium_item_deconstruct.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "forge:ingots/atium" + } + ], + "result": { + "count": 9, + "item": "cosmere:atium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json new file mode 100644 index 000000000..bb56af95f --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/harmonium_item_deconstruct.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "forge:ingots/harmonium" + } + ], + "result": { + "count": 9, + "item": "cosmere:harmonium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json new file mode 100644 index 000000000..308d2c87d --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasatium_item_deconstruct.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "forge:ingots/lerasatium" + } + ], + "result": { + "count": 9, + "item": "cosmere:lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json new file mode 100644 index 000000000..2c2201b56 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/conversions/lerasium_item_deconstruct.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "tag": "forge:ingots/lerasium" + } + ], + "result": { + "count": 9, + "item": "cosmere:lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json new file mode 100644 index 000000000..f39747934 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:nuggets/harmonium" + }, + "J": { + "item": "cosmere:harmonium_nugget" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:harmonium_ingot" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json new file mode 100644 index 000000000..9c9acb019 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:nuggets/lerasatium" + }, + "J": { + "item": "cosmere:lerasatium_nugget" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasatium_ingot" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json new file mode 100644 index 000000000..d4ba9b9ff --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "I": { + "tag": "forge:nuggets/lerasium" + }, + "J": { + "item": "cosmere:lerasium_nugget" + } + }, + "pattern": [ + "III", + "IJI", + "III" + ], + "result": { + "item": "cosmere:lerasium_ingot" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index a073f8e99..cb3d7603f 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -114,12 +114,11 @@ protected void addRecipes(Consumer consumer) compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).getBlock(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), ItemsRegistry.METAL_INGOTS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), BlocksRegistry.METAL_BLOCKS.get(metalType), metalType.getName() + "_block_deconstruct"); - if(!metalType.isGodMetal()) + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + + if(metalType.isGodMetal()) { - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - } - else { godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); } From e9a8cf3ac7fb4e937f4946ac0dda48a76c3801c4 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Sun, 9 Nov 2025 18:47:04 -0500 Subject: [PATCH 1060/1090] fixing --- src/api/java/leaf/cosmere/api/CosmereTags.java | 2 +- src/main/java/leaf/cosmere/client/ClientModEvents.java | 4 ++++ .../java/leaf/cosmere/common/commands/CosmereCommand.java | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index 0aaa3b780..2cd59f069 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -117,7 +117,7 @@ public static TagKey makeItem(ResourceLocation resourceLocation) return ItemTags.create(resourceLocation); } - public static TagKey forgeItemTag(String name) + private static TagKey forgeItemTag(String name) { final ResourceLocation forgeTagToMake = new ResourceLocation("forge", name); return makeItem(forgeTagToMake); diff --git a/src/main/java/leaf/cosmere/client/ClientModEvents.java b/src/main/java/leaf/cosmere/client/ClientModEvents.java index 461e2e3cd..092378426 100644 --- a/src/main/java/leaf/cosmere/client/ClientModEvents.java +++ b/src/main/java/leaf/cosmere/client/ClientModEvents.java @@ -4,6 +4,7 @@ package leaf.cosmere.client; +import com.mojang.blaze3d.vertex.PoseStack; import leaf.cosmere.api.CosmereAPI; import leaf.cosmere.client.gui.SpiritwebMenu; import leaf.cosmere.client.render.CosmereRenderers; @@ -11,9 +12,12 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.renderer.texture.TextureAtlas; +import net.minecraft.world.inventory.InventoryMenu; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.client.event.EntityRenderersEvent; import net.minecraftforge.client.event.RegisterGuiOverlaysEvent; +import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; diff --git a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java index 88711cf51..87fb9dfb6 100644 --- a/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/CosmereCommand.java @@ -10,9 +10,14 @@ import com.mojang.brigadier.CommandDispatcher; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.commands.arguments.AllomancyArgumentType; +import leaf.cosmere.common.commands.arguments.FeruchemyArgumentType; +import leaf.cosmere.common.commands.arguments.ManifestationsArgumentType; import leaf.cosmere.common.commands.subcommands.*; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import net.minecraft.commands.synchronization.ArgumentTypeInfos; +import net.minecraft.commands.synchronization.SingletonArgumentInfo; public class CosmereCommand From 30878380ad07ed9b672ac60c96f8b433d4fcd1e9 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Tue, 11 Nov 2025 19:09:47 -0500 Subject: [PATCH 1061/1090] about to ditch a lot of this, i just need to push so i can go work on my laptop --- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 1154 ++++++++++++++++- .../lerasatium_aluminum_nugget.json | 35 - .../lerasatium_bendalloy_nugget.json | 35 - .../decorations/lerasatium_brass_nugget.json | 35 - .../decorations/lerasatium_bronze_nugget.json | 35 - .../lerasatium_cadmium_nugget.json | 35 - .../lerasatium_chromium_nugget.json | 35 - .../decorations/lerasatium_copper_nugget.json | 35 - .../lerasatium_duralumin_nugget.json | 35 - .../lerasatium_electrum_nugget.json | 35 - .../decorations/lerasatium_gold_nugget.json | 35 - .../decorations/lerasatium_iron_nugget.json | 35 - .../lerasatium_nicrosil_nugget.json | 35 - .../decorations/lerasatium_pewter_nugget.json | 35 - .../decorations/lerasatium_steel_nugget.json | 35 - .../decorations/lerasatium_tin_nugget.json | 35 - .../decorations/lerasatium_zinc_nugget.json | 35 - .../decorations/lerasium_aluminum_nugget.json | 35 - .../lerasium_bendalloy_nugget.json | 35 - .../decorations/lerasium_brass_nugget.json | 35 - .../decorations/lerasium_bronze_nugget.json | 35 - .../decorations/lerasium_cadmium_nugget.json | 35 - .../decorations/lerasium_chromium_nugget.json | 35 - .../decorations/lerasium_copper_nugget.json | 35 - .../lerasium_duralumin_nugget.json | 35 - .../decorations/lerasium_electrum_nugget.json | 35 - .../decorations/lerasium_gold_nugget.json | 35 - .../decorations/lerasium_iron_nugget.json | 35 - .../decorations/lerasium_nicrosil_nugget.json | 35 - .../decorations/lerasium_pewter_nugget.json | 35 - .../decorations/lerasium_steel_nugget.json | 35 - .../decorations/lerasium_tin_nugget.json | 35 - .../decorations/lerasium_zinc_nugget.json | 35 - .../recipes/lerasatium_aluminum_nugget.json | 23 - .../recipes/lerasatium_bendalloy_nugget.json | 23 - .../recipes/lerasatium_brass_nugget.json | 23 - .../recipes/lerasatium_bronze_nugget.json | 23 - .../recipes/lerasatium_cadmium_nugget.json | 23 - .../recipes/lerasatium_chromium_nugget.json | 23 - .../recipes/lerasatium_copper_nugget.json | 23 - .../recipes/lerasatium_duralumin_nugget.json | 23 - .../recipes/lerasatium_electrum_nugget.json | 23 - .../recipes/lerasatium_gold_nugget.json | 23 - .../recipes/lerasatium_iron_nugget.json | 23 - .../recipes/lerasatium_nicrosil_nugget.json | 23 - .../recipes/lerasatium_pewter_nugget.json | 23 - .../recipes/lerasatium_steel_nugget.json | 23 - .../recipes/lerasatium_tin_nugget.json | 23 - .../recipes/lerasatium_zinc_nugget.json | 23 - .../recipes/lerasium_aluminum_nugget.json | 23 - .../recipes/lerasium_bendalloy_nugget.json | 23 - .../recipes/lerasium_brass_nugget.json | 23 - .../recipes/lerasium_bronze_nugget.json | 23 - .../recipes/lerasium_cadmium_nugget.json | 23 - .../recipes/lerasium_chromium_nugget.json | 23 - .../recipes/lerasium_copper_nugget.json | 23 - .../recipes/lerasium_duralumin_nugget.json | 23 - .../recipes/lerasium_electrum_nugget.json | 23 - .../cosmere/recipes/lerasium_gold_nugget.json | 23 - .../cosmere/recipes/lerasium_iron_nugget.json | 23 - .../recipes/lerasium_nicrosil_nugget.json | 23 - .../recipes/lerasium_pewter_nugget.json | 23 - .../recipes/lerasium_steel_nugget.json | 23 - .../cosmere/recipes/lerasium_tin_nugget.json | 23 - .../cosmere/recipes/lerasium_zinc_nugget.json | 23 - .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 41 +- .../main/java/leaf/cosmere/RecipeGen.java | 2 + .../common/items/GodMetalNuggetItem.java | 10 +- 70 files changed, 1136 insertions(+), 1931 deletions(-) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index 904f65c33..ec7b05709 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,9 +1,137 @@ -// 1.20.1 2025-11-09T18:42:34.0799509 Recipes +// 1.20.1 2025-11-10T18:24:29.8641601 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json +030664ad484a9dc1ef31120f6f010794470b3e3f data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_1_compress.json +d7d8b158c37c5cedae6bcddfe7716ae5ec211969 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_1_decompress.json +74f13c3a86217c7ac7b443893c604739d369d59b data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_2_compress.json +05f405de04e38004e4e1d85248ec50d4517ea53d data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_2_decompress.json +1a6058a0bed88043746162149a249e8696ac7f07 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_4_compress.json +0507c1ae25d65503d2d93efdf480bcfe618178a7 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_4_decompress.json +dc133623fd933d65cb3492f4db75c2ccbad19af6 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_8_compress.json +726fa975b66fe0a1a6669e71e8257a5e0ed769a7 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_8_decompress.json +ae381b408dcf0ca66bef710241bab9be846844d4 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_1_compress.json +2314874ab64ee8cb9de3b8c86ae7449ea7f08fd3 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_1_decompress.json +eabf86847d5f3dad76dac99656e512b058eb611a data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_2_compress.json +fb71acd15f204dd93c32de726edbd16747183e34 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_2_decompress.json +93586a55dbcaaa8d0591ea710fb84ee185507e84 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_4_compress.json +601475172e008bfce6e589511a95eb431965424a data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_4_decompress.json +2984169ec9575cd7cf60d2eec9d583bf31e89508 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_8_compress.json +11134ecf7d9b51e1c7bb1eb1fe3a1172bd46311f data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_8_decompress.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json +9261a3ccbd000beaf1c06a180dae58a24557cb2c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_1_compress.json +1abb7ca667b39c39517ee609dfeff3065846e260 data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_1_decompress.json +d830c0b9cc2c7bbce81e976254b58dc56dc5abcd data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_2_compress.json +5f515f39ab22c5317233a699e4732da93a3dc00b data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_2_decompress.json +ff19c26357856ac6d2337eced1347f2f509e9b19 data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_4_compress.json +262f7e07bd123e4faa06bb11bffbe8056e93323c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_4_decompress.json +c5e6016062c511eb46a39bd8e56ad580250ab49c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_8_compress.json +737f4051173cde604d6ac2b5bf32dddf3946e71f data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_8_decompress.json +94868a6035cad3b242d93773f300c70b8b76af49 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_1_compress.json +00aa3c667b2cf9c325d18782f44596dcbf198f84 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_1_decompress.json +7776afcc9f139fcb4e395fabd0c3ef183a2fdf07 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_2_compress.json +973240c2bffbe48852bf8b7ee64c1fa02cbd3fe8 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_2_decompress.json +49cc47519901aa27c21001f35bcfa1ea1a14b62f data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_4_compress.json +0cf0f3a6f57bb75b94c94ed774ee1998619ae78b data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_4_decompress.json +59600697419d487ab295a7db7fdeb5fb497539db data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_8_compress.json +0a0c76b4587ff7058336618e9cea9ab575ef90b1 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_8_decompress.json +78ed3fd809c88df8390325eb25a2446f7f87418c data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_1_compress.json +9403084809fe677cc89081b86394aaeb443e166f data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_1_decompress.json +373512c25823f4399bb884c23a6014702fb57d31 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_2_compress.json +effa9c8821636e28e22ccf13d6c16ece9ab4d8c6 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_2_decompress.json +1b98fd4f1bfa011c43156a4b469606011d12c627 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_4_compress.json +538c8fc5a4f48d49202b892a44f3387f036f16ab data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_4_decompress.json +4a861bd8cb2509aff5c668b6e87fe65f3b0c4167 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_8_compress.json +66e03c55f8c5d9c961deda1a6f210825ea716926 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_8_decompress.json +6844662affc368493cdcdbd98482428e0bc97664 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_1_compress.json +62d0d78406abab2da4f3e837628bdc5f87bb8a2a data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_1_decompress.json +2e4708e23c6d4d5233905db2e28d78b8d346477b data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_2_compress.json +433e493d778a7a013b3864cfd49038ca1e530bd3 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_2_decompress.json +f93f63bf057c6c3e237f9a22f5829088eb8192e4 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_4_compress.json +f9373a8d4305d632218e2de7d18ed40cd149e8c5 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_4_decompress.json +f7f6c3a74874d8037fae0b528253c23aa44dbf1f data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_8_compress.json +00a6978fdd6858f34e097502c0e4f5468dde43a0 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_8_decompress.json +7f65f35a319e18076d419a762a34eaba0619a753 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_1_compress.json +35a3a9d8331a8c4bb0875a2f4258c559bba022fb data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_1_decompress.json +cbb1e26b9f3332e406b420650535a1ba09aa2ecd data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_2_compress.json +76eeff17b9f31b95cbf40dab9674c8b75b4f66a7 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_2_decompress.json +70c89fc837627e589c8180fc8e80ca00451a7d26 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_4_compress.json +3832c4e5faf326c2ccabde530544d854a974bd14 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_4_decompress.json +bd493f6fe89225c7f1c9f4020a0fdb9123a0500b data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_8_compress.json +f18b18fe2a1e975f6edf3dc3a61094112afbd70d data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_8_decompress.json +1003b7544e11c3574731e194f521106d5ac348cd data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_1_compress.json +c7f3da5823701715a61151cad43fb1ad27bf98dd data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_1_decompress.json +fd861fa439714b0b2174fecdaff3b95966614d82 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_2_compress.json +f3ec2778db41c2bce6b7d899cc97f0a0bb04acd3 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_2_decompress.json +083b5c2bfdd21ad9feafb6a2d4a6dbddf8d2a3a6 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_4_compress.json +6b2d7c3d2f4483be6311c8f32094538e01693439 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_4_decompress.json +26f977d6eaf36fb1ab9d1f87bc5f1d6180ce5183 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_8_compress.json +22bd1c2cae0ab1834e5d0c224aaf3bcfd63055ad data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_8_decompress.json +796469b07887e7dd34d4b3fafc9222df7364dc8b data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_1_compress.json +6a5e55dd3d07056207bd0d9d508440b2c9b4c8e6 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_1_decompress.json +90a92b0f3cd4af8968aa48e5e8e2b69dea9d5101 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_2_compress.json +3fc0f3217c3c9e3f4149aa8cb859eb46e2f826e4 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_2_decompress.json +a3e144797add7663bb34ae6f06b580ef97d3fb89 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_4_compress.json +35d6bf5d710d83633273422bc9b0f8d72428731e data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_4_decompress.json +83d8625d1a0205ad9df564c4a05889c4d9eb6ae4 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_8_compress.json +a8af95eb64a7023fca6b193b50384fdb5bfd123d data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_8_decompress.json 48e21abbdd7de3dd40a0200e7b57afc64cddca74 data/cosmere/advancements/recipes/decorations/atium_god_nugget.json +030f01063c96757b9e3fb68384ee36c58e6a0b7e data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_1_compress.json +09d6484139e51d9e4ccfd0e2260068388d5cecce data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_1_decompress.json +d797e28ad05b3b088df84a96068d8ecd6b0534d3 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_2_compress.json +5845eeb0a08482ddcfc48855d4e94073fc4f3e5c data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_2_decompress.json +78a18d43c0ab7706c5da5629c2dd6e6bb677a057 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_4_compress.json +02984214162e9f362e0bcb9c8012a9c3409dbb0e data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_4_decompress.json +2a4b5ecc23c6658564b4daf12e657cbbeed07d8b data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_8_compress.json +b49758f61937d9667ac8f22166e2c85432305764 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_8_decompress.json 51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json +e87287d533c21c0bafedf67aa91204f32780441f data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_1_compress.json +2cca8389e803ea41b8c3b20f286e1e523a2d13cd data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_1_decompress.json +baf43f3af4fad2f18e22e986b217b264b90bed11 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_2_compress.json +6a1f84ed522799bb1600909324ef0d68cc94c442 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_2_decompress.json +3dc0e0e93277f496f8ce2719ba317ae507ce8c79 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_4_compress.json +aa8a594f5cf2cc83ece548bebfab82c78dcee7c6 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_4_decompress.json +6cf623db5007ef2f43e49d2d6a9cb9dfe49f2b2d data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_8_compress.json +81677df7aa97e81540ace6d9e34ab2a45ee278d0 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_8_decompress.json +016d2e1ad3299c0d4f101a4995795b59587611e1 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_1_compress.json +bd189db675f94e0428133fb655d5c6220d14214e data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_1_decompress.json +95214b5345f3b6a844f74243ed5759c14133c434 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_2_compress.json +9030c3c69d7f8d2529f9c547cece5cd0b832af9c data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_2_decompress.json +25bbee1047321abd5d4cc1a3beade0ae9e77c5c5 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_4_compress.json +028819dab358e33300974c3d328ce762c4a79e22 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_4_decompress.json +339da4bc49d6cd4651a531eb009984b03be4bb24 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_8_compress.json +d1d9bafa174c6f6e8ec8b09186e19f075ce25602 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_8_decompress.json +ed8683e7cfb08e3229dee3678487b7ba3d9a14e7 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_1_compress.json +c4e58085130f895ac94cab1871bbfe506e4f4f73 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_1_decompress.json +ada2888b47399736870a61bf1f89f229cc0d8f29 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_2_compress.json +d28fcd7e94816943827e92822392f86fd78cde41 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_2_decompress.json +501d098892ba5ed842c23ca6af3aca4ea4f7fc28 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_4_compress.json +001f8f4812781dc225eb6364572840155eab505c data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_4_decompress.json +570f5029c003ff2ba2120d607b9605a331879b3b data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_8_compress.json +f7613e7e08178353a6e5281c156390585997a811 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_8_decompress.json +d79964a80f908043c051a2b4f2dc91d69338eb96 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_1_compress.json +c2c82bc197ed56ca6aafb6b1416fdae4355130fe data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_1_decompress.json +66bf6a714618b061759de820d1901eaf3ae76f82 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_2_compress.json +5f774ee390fc53beea1642b99142a7afed1ef441 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_2_decompress.json +69625bbfb507593ddf3c2ac32f93d08c33b2919a data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_4_compress.json +c1454e089fe76a0f65eec59365a86f3b75625b2e data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_4_decompress.json +bddbfdf40bc853013c54d7f34d1e63c86a6d64a1 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_8_compress.json +3f84e81b2dd5bfdca8376213c29b9bd4b825ce44 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_8_decompress.json +f2e3e582da7161434fa0c5418338c7e03443a30b data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_1_compress.json +65c16d68d292100eb0221571da1224517329441e data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_1_decompress.json +ea5da7296051bef3017ff088f223c80fa6327c5a data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_2_compress.json +564a7385384f7cedcd4703c6e2710f4416532b77 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_2_decompress.json +ff72fabe28d6709c41604365e1dad2a7f82f465c data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_4_compress.json +fdcefb414612dafd9bec8bc6bad1fe4c770be219 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_4_decompress.json +2e3f85bb383dc5a93261ce02d7621941195669e0 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_8_compress.json +bd320265d3f87d9c691b9578a9c49b7ae23a4f0a data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_8_decompress.json +f24d93d7b07586d7164adef998c89d9dcbd7a77b data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_1_compress.json +c1ac152132907696688f7913cb261e23d9e15eb9 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_1_decompress.json +7b4bc89fb61ed66070e097e1f518a0ecd1b260ed data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_2_compress.json +fd9ed07560435fc7514a21d1f85a45ce92e453f9 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_2_decompress.json +4a2ffe3883138e0d83334b9019b8cdd4887bce0c data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_4_compress.json +54568963d382d0d43e3826a0638189d8f618872a data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_4_decompress.json +8dcbec71db41e1c92a1bfe5ac6573259759ac9b6 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_8_compress.json +31f1099c03ea4f8aabc7269e375d8c05214326d1 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_8_decompress.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -18,49 +146,433 @@ f65fbb945ce9617744bd8294cd8443de09d378fc data/cosmere/advancements/recipes/decor c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decorations/duralumin_ingot.json 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json +ebc34025ddb97c0a442fd622217dacbfdd554fa0 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_1_compress.json +e3ff2641417222dae44b0b8e87c14eedb12e07e5 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_1_decompress.json +17faf4efd9fe652ca52fd3615e735411c28ea0b5 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_2_compress.json +436b390fb8b16f2cdaa2cc663fe2110d174d5634 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_2_decompress.json +b3819eefb623309f51de16d19336569958879aeb data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_4_compress.json +25ce3d753e609545b6dde7f215b34464121a9050 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_4_decompress.json +bd8cc68b18e9569c163fbcedf97ee663dbec5805 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_8_compress.json +f5b0f7f10d06d3bd8034077609e18645ed33d616 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_8_decompress.json +b7bcbd5388d16d3bd033293ff85651e9d3dda427 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_1_compress.json +778b3207b6a39e5c46ec6db3da3534abd8948b00 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_1_decompress.json +f4d118198238b4a9d5f169888683dada6ee56e54 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_2_compress.json +e4a1f2f5feb2cb97ab858dfb1a4e596290b3c52a data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_2_decompress.json +d4be99c83da0d784eb41500043268cb7239abc7e data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_4_compress.json +2384933e77e11d49ff16ec0a0dd5892ece58b354 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_4_decompress.json +fd1b95b8e889b6ab36ae92e362b3dcc604435c7a data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_8_compress.json +d0db93db1bb87aa1ba204297ad85c49a3d30775b data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_8_decompress.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json +20bed6c62899af53f6baed4055d2234b157a4727 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_1_compress.json +c4935b5dd8c5e864232be08e836081d09abb1c18 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_1_decompress.json +b5b5b7f870d5cc539e48d373ff8b43f9a2f6db59 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_2_compress.json +a09777ff5d171bfd9e21736a71482c9cad745c97 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_2_decompress.json +8ddf790893cee6b04428202d50686640991cc983 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_4_compress.json +e57aff8aeb23b70ba76029f3a20f129f87aa0e53 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_4_decompress.json +ea46a6aee548bbbb4ac2b542a91f887061224dc8 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_8_compress.json +a72bef1d80892e418ea05ebf071e473611c5dcef data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_8_decompress.json +e10f51ba11235e4dfbb8add7fbcaf04d3781be28 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_1_compress.json +317d011b94f9bcc57ff59acfb81285df649ea739 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_1_decompress.json +abdddd50ecc74eae62ea020f4ca2f81500e2a77f data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_2_compress.json +bd60d56171f94902000f374cefd3cbe8f2d481ff data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_2_decompress.json +0962cd1dfc75b45a4e531a7f3cf1517ca63fc243 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_4_compress.json +8ecb6ec36be8ecea33a02004c1697a7dcf666a60 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_4_decompress.json +8fb28eb991a0aef89ab79c89660c3ad6a061ea82 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_8_compress.json +87ffb12f809e15e52c6130870643b7df7240b006 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_8_decompress.json +9b1a7ac6642abe73b002420f5507ab85856cde29 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_1_compress.json +0e66517ebc86d420891a48dea9f06dca028366b4 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_1_decompress.json +9f692b1e766cd2968095b76b3785a42a5d78840b data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_2_compress.json +3c5cad8a662ce2a1e52ed9f7178f74cac25f4e4f data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_2_decompress.json +fe201f8e0059abede76c23d7a00432fcee5a634f data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_4_compress.json +b2cd6188eb37914562b32cde1140f33057620b42 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_4_decompress.json +a1bc1278b0263ac44a3bbabe435cda5a90d3d2d0 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_8_compress.json +298c654b9494cc9e46c1d25ca19cbadebbbc5bef data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_8_decompress.json +f1139740bb9b91e9d0e41a90b9aa6732dfd58f01 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_1_compress.json +381faa5591d6cbe6ef6c851f7e8d592bd471b201 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_1_decompress.json +105693e3183d5b61f11297070bea7d264237e92d data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_2_compress.json +0f4bc19a3fd2676b709d1f37f191f39c83bba151 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_2_decompress.json +1908aa14749da9c4e97bd322db83d37ffdb75914 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_4_compress.json +b6440086bc4d307e25f93900353a22fb3f1f1791 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_4_decompress.json +b204fc6fdea4d4e8ee7c67857778113d0487dd49 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_8_compress.json +b7590a83047f87c3f2a38e2c2e2f01613bec56a6 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_8_decompress.json +4776ad03f0fd4c57acef3a9a500a1d7f4b8a59a2 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_1_compress.json +24a72a41191da7750ac2453a7067c68bba35917e data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_1_decompress.json +e502cf9776607cdc955337e35c829332e1440a6f data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_2_compress.json +663e5cc6219c1c1a5be181d7dc45263d8c8fecf5 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_2_decompress.json +f022ec9ebbe1ebb8d36a9749fc5fded807690db9 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_4_compress.json +eeacf91ec1f51e2060da8bec1bf5bd60a632249f data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_4_decompress.json +b6707664cb6e2308138e12900db686320b9b74db data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_8_compress.json +bb28f880288322aabd12a01ad17bd464ac48e6ad data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_8_decompress.json +d1dbf1a97430274cd46616ddfda178392b5315ea data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_1_compress.json +79d5ec5eb3e76682c406b38a4ce55dcc41e95aef data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_1_decompress.json +48da559d9717d1bf410ff51b26ae4c80ce80fd99 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_2_compress.json +ff606a0263a294ef7378ef7a53af62c2d956c725 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_2_decompress.json +d5bc1166737b5bcef34b55af7f5574fab110d13e data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_4_compress.json +5acb98055d479a50d83abb1bd26f95335c7d1105 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_4_decompress.json +2214b4d178c0501e0083d8a98a1787f3aa485e39 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_8_compress.json +d0fb91171512f1eb9d57d57f5456c267196878f0 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_8_decompress.json +60b067a7f85dfc5236888e1bf6178a4817f56cbb data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_1_compress.json +e56cbcc6a9fa6ce9aba4c68d143d249c7b37f251 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_1_decompress.json +2585a15613edddf05c425f386fe6837c4e704f98 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_2_compress.json +b5162eb4dbc7f83a02740ebe2dc64c7d8c1d6180 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_2_decompress.json +938c783359ecafb45436e6c2d2c8d6a9e75199b6 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_4_compress.json +49c497aa43bc3e8250468db0385c8458322a1193 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_4_decompress.json +bf148697fe98580eb9fdb7b4d15236e0895c90b9 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_8_compress.json +fe9d56690df86d1a6d8764340c61d6e8252c4d67 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_8_decompress.json ac7dd6de8c4e4299bbaf51818bb8891026ca7866 data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json +730bc8f2c17e2427ad0e2403b39356da3ee82282 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_1_compress.json +e4c4d5ebe83d7286d4b7ebf7f57c43ce8d4cd9c4 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_1_decompress.json +3b34275e642615fd1f3c759f0177daf5506b244a data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_2_compress.json +8263d873ddd4c6e473e45b9c544d90ad234f7be7 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_2_decompress.json +646026f36cdf0f0a4951fdc531cb32043aa7f4ef data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_4_compress.json +91150d005d4b24a01bdbf29d33260428cde26cb5 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_4_decompress.json +8832da6cb9981174270a4bf625060bd5f12ba17e data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_8_compress.json +28e6386ae23115e744590f65cfe8a1e4e839228b data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_8_decompress.json 878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +085bc459850d26dcb77fc40df1ebc42d250234e2 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_1_compress.json +138b1bec116c2c3c7f4945318cca1e4c1239afdc data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_1_decompress.json +6f57060752b1855678574a2650df9e007442a951 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_2_compress.json +d7c45a4fb696375b939112d25a2a62e9285978c2 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_2_decompress.json +27180358a3789b54ad1ef99f6f104126e25b8871 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_4_compress.json +2fde43a8cfa8f9c2071073b9761a7eddb4ae5770 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_4_decompress.json +8185f7c2bc1f7a4f9409ee744ed8f01515db0220 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_8_compress.json +0faac684a3441dc93950b10ba0dd9062ab46aa20 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_8_decompress.json +79b514b90f6ea6761f8023b42a745d30ad84a631 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_1_compress.json +438acbbb8d45f4040ddbbc6c9195846e2fc04ed6 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_1_decompress.json +41fe868ed6f1523905564b888b505c3d04181815 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_2_compress.json +86009871b9adde41aa76075cbd14c2b97ba77f0a data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_2_decompress.json +bad8569080e15f91ed76a442c1c70cc957df48e4 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_4_compress.json +e76d7e6803f5d34621cfda72414512a88fd35b27 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_4_decompress.json +f0f13842ca16cb335b080137c23aaca4805388f7 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_8_compress.json +12a75f402020b12bea74b560fcd868138dc8aca6 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_8_decompress.json +6405c91e368f7ab8f89cc07fd76248a280b4f065 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_1_compress.json +600c87c8575005f4afebdb040dcb7276c5bc378c data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_1_decompress.json +4f7ff8e7e1dbe480335b40abf5d6cf5a918b8565 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_2_compress.json +4f3c8d96df99b01982e625a5b153f42b0b7ff389 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_2_decompress.json +9a3e6a7c27170fa14e994bed476290405da74c5d data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_4_compress.json +28b36248c718c110b03073cc29c285d34835e016 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_4_decompress.json +d2e39fc310853548edc303ae352909916ff35dca data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_8_compress.json +a4372dbcfb74f178c48bb297ff2db0e0b3fa1b58 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_8_decompress.json +c24cdcfed5d70eb9cd6b9da73293a9e6b416af0f data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_1_compress.json +5cad91950fa51cf72eceb2bce6d97eed4b1e6f2e data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_1_decompress.json +d0189728e600bad04d67615ab3f31d1f7b0ddaa9 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_2_compress.json +c13ee86ba5277aad0b638bc95e63f5b3236cd663 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_2_decompress.json +9fbba9f9d43d85b4628f96ff005e6216e116feea data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_4_compress.json +f80686977966d395d10c08ee274d3b0e25a99355 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_4_decompress.json +e1f69f611f088d9559d3e945116e32876fe5ab16 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_8_compress.json +cedcfeff655adb7d43590108272791c1942728d5 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_8_decompress.json +a1d686982c4a7e87c76fbf104d98f4279b52366f data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_1_compress.json +c2c7ac9fe01cf91b956c65c6e6c177c060008e2c data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_1_decompress.json +51565e1a3e309954f8a0a806accc6c7cda83cd94 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_2_compress.json +7ca2555a79bfa4f13aaa0ef74c867ed567e159ef data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_2_decompress.json +08dff2bf27bbc10764e95c19bc89f7228917725b data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_4_compress.json +45420ed9631282e09cc78acc21dfddd215ae2711 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_4_decompress.json +eb1c4cb16398cd8e8d24b5a841c483b23ad72238 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_8_compress.json +54978832e4c78cb297047a09d417e9560d3b52a4 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_8_decompress.json +0eda857f972637fc0844c2129766f67efd7da4cb data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_1_compress.json +eebafac480bddd15c892884b58a15c8d2206c820 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_1_decompress.json +02db2bbbc0598720e0057249c83f985b1bb699a1 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_2_compress.json +2ea7fe56380697cd868ad40d4d21386552bb492e data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_2_decompress.json +91f99bf1cca07e181fa92057b53cd90cdef227bd data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_4_compress.json +c9ad6d078f1c6f4c2f6f13a4b4cc9acf01980730 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_4_decompress.json +1f205b8174b1d7f032e6ee534eb5c95010ae67c5 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_8_compress.json +1ae0b3ccdc6b1a40c5fb75a37e18bc7bf2691b8c data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_8_decompress.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json -1bdb2f6673b5d62cd09401f6f839fe8ffb7dc28c data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json -700fc278e781aa33fd3c2410ff44e684211d06fc data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json +466ef2cb6f61690ac0606dbb4718ea03cdf57536 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_1_compress.json +b5e93d51fc8cca1468d2c2a30d0377a49d1a0391 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_1_decompress.json +80eb244acc3c9129bf0cea37af9f95ae62ee1d24 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_2_compress.json +6538428e9ceb59dddf4535a8449a9cd65861066c data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_2_decompress.json +bfeaabebc9424edc883d193ee01d9cfc8329d36e data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_4_compress.json +0c2b7a45222e81a77e1f6cc08acb3a11be225000 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_4_decompress.json +128caaee36dcc647ae8361a183eb64de88341f7f data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_8_compress.json +208b25bd904dfb95a00776b24439af759f483134 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_8_decompress.json +6fc0fa871f5f2b9cdf423495458abcaae10a5323 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_small.json +17d1ffd7502aab740b28a0ce9a34e347dfebbe12 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_1_compress.json +2c4b077b4efa77c9d2936eb61b8c02e3a5f26d47 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_1_decompress.json +4dcc5d582125dd39c9bb50a2a3690bb42b83d9eb data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_2_compress.json +4ad86c9d71e2d68aaaf8b2963957cdb4d73e60c2 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_2_decompress.json +bc4fcfef6bfe4ee06a26b82cb511839078723888 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_4_compress.json +110ba1dff84e5ea4d493950b581cd963907ab105 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_4_decompress.json +14822f3663fa81d73fc1be9030d4ce26dfbb8742 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_8_compress.json +7184c6cf816f39ab6e2ed98d64c2bcc6b47690bb data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_8_decompress.json +c31422a95db283a372f3ed9e197537935777c320 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_small.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -a940f2dd7e17c9e6ce8e5c1cab6a9734de65f126 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json -c3ebe22f27fc7835a01de4df5131e88a5ff40e6e data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json -4a30cb86fd839e5868ec5d1acbab1e240a8be4f4 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json -0cc08119a586d853c8112b77c5cd8cab0d69cb34 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json -144eeff33ea8bd7da4e8026daef7221ca24b48a6 data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json -2f4b91b57e882448a15a39d0fb7d28f919cbc52f data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json -0b6d1b028f553a6b959ec342476d2bd4e57da8fb data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json +dfa00a3232c14d07511c0f794841670e5ac77854 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_1_compress.json +d82401cc56f5727ef7f7a81a07345ed885c3b9fe data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_1_decompress.json +520dd9a3f62bcf9c56150ba919d3fb315ad82d10 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_2_compress.json +ec79316358de47ccb296936e755e532560163a41 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_2_decompress.json +95d48c56b9dfc198950bae5617f80560caf682e9 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_4_compress.json +bca6c5acd6792c8974fe53c80edc0309e3e05c78 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_4_decompress.json +bc245126b25d8db9cd70c8e57eb9fc3c3c43aa6c data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_8_compress.json +afdb862a53a9a93b91dfaef371484c9eff76be1d data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_8_decompress.json +fd1077fb00216927c67177832ec59ee362316b03 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_small.json +e8ed55224b513ee8433685191cf506acc80a5bbd data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_1_compress.json +24e18fd6b5e264fbf40490eadddac15ae10311d5 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_1_decompress.json +e93055b417d88f53c4353f65673c1355c4fe1958 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_2_compress.json +f1606bc2f030d2f8652f7b3fabe476027ebf8bba data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_2_decompress.json +240adef974712ecba6dc1c29f146c4de573c0168 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_4_compress.json +22c767093e2ee22e08aaceac36a1127e2450964c data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_4_decompress.json +e4d6df6bb2b59f3a906357c7f35b92721a06e412 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_8_compress.json +0a4a4b90c1b8ebde72d46c99aaca2096cc84817b data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_8_decompress.json +24bf564ffec876a2af0329fa932d176356a0197e data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_small.json +0f6cbf82ab57679888eab854b55b626d83d37109 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_1_compress.json +58ac15c5cd559f2e74923836413b068bf24a9e56 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_1_decompress.json +bd69e72de872c3a5068a5f4f0acd20d2f6f38c23 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_2_compress.json +7345983114ee49babc93a211e9d511b64143c54f data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_2_decompress.json +61f8a5609f44bd5a4fba17e7836f324788da33b6 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_4_compress.json +04529bf93d005c3e5ed41f5d990a819d13345222 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_4_decompress.json +591084e7dc497c29e6e0b141561035c9e359d9c3 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_8_compress.json +d2fc13b2a483da8158b6dd6b8cb6c0ae666278b7 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_8_decompress.json +aad63f83b50e40c0f88b3cf7ba22d70020ef3484 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_small.json +0e19f91bb4a811795a50f4bb35e3342102d23460 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_1_compress.json +83a337d46f1135968f6517d67b7e2375e17ee9e3 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_1_decompress.json +b562e6ecad790106cffbcde9af5e84d96e500c5f data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_2_compress.json +db3630555a1c78ce0b73571b5e3a80f09c1c7974 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_2_decompress.json +f0bf0e0b63a0700eb7690f6881496de470ff6a10 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_4_compress.json +7cdb6e1e3b712f97c507aecd5cae025f4a33f2e5 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_4_decompress.json +95e037b07f9861147241e245fac702c26049bbdc data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_8_compress.json +2d742a4cd59cb32d3c21c986e7f8c7c5f09a55da data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_8_decompress.json +ade258f343f360b15d2fae3b7a876cb64f2c7bfc data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_small.json +b5294a3f2c902ec6fa41e88305b9e5fa8fde7b96 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_1_compress.json +8c3edd481aedbb0ddfcbeb6ada62d6081dbaf78f data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_1_decompress.json +663f543cb5fcd1a003e97b2cbb230b3160182088 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_2_compress.json +8cd186f7a61479bb4c382e4d821de8a63ac8d387 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_2_decompress.json +97652ea9217e9c44aff13992f72758a596517b0d data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_4_compress.json +6fb43c06000df39570f4cea54c4911bad5f4ccf4 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_4_decompress.json +7159936be6b36dc80b026a6b5be708e29cfb9f1c data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_8_compress.json +ed50c1eba8f4b3ad389876034d269a2124cedc74 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_8_decompress.json +d1353ce28702828e649522189b5d089e54cbec7c data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_small.json +604601c358a66655d694f14b612ce9b65c160af0 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_1_compress.json +9f5d668a10c2c87f5d905e387c1385ae07698984 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_1_decompress.json +90a881bb43d8feea0a37b9f9fb95c248ad34d9cf data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_2_compress.json +e93d33e329ccadcce1d4fca7a18b908619286f22 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_2_decompress.json +73f56b0c5a13c5294ddbc981b6ae2397e1113d14 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_4_compress.json +41472dacff26182408abfd9c7e6114f3d6ee8943 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_4_decompress.json +73075444fc595c55e5431942d2189d89e3572524 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_8_compress.json +f08d57c6206b4d66cb692a0a24f44c07c4b67ccb data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_8_decompress.json +44585399452a7091887269c2957b6060c6352400 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_small.json +2541c1d26dfe8d3876537e37b7a7420ec32af589 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_1_compress.json +e54516305be5370383d769cc9636a3a4eb63a2dc data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_1_decompress.json +751c2ee0c471ce1cfde6e5a341db4aa0eea46636 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_2_compress.json +7f0657cdd0e3d254db13e854a19b9540e878dbfd data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_2_decompress.json +146434ea486563cae69881ea9e6cf1f186ec32d6 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_4_compress.json +ea5b85e587a672453d0165331367e2a6741c6735 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_4_decompress.json +60610594aef30e5a7e53c2f8c99a4d550970b669 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_8_compress.json +151d6d6d87a0bee2422d734ed1e4260d506ca589 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_8_decompress.json +1cb10c74f06e52ea19545af504f007c841368607 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_small.json 7fffd5252b30e808f6500172e3d4ecfd9d08c7f6 data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json -6e7e3c58ffb6fc7195da0c97a93c4c0a6617ed23 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json +1de97242c2b5c22906cc01ed73e7784699f9f075 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_1_compress.json +542a23a8b5017d4e2abd206551d35d1e5e233cde data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_1_decompress.json +0232d2f4e2216f3da94859dc7226f2ecd344b555 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_2_compress.json +158d678c138d58b993c7e1f668919c1d021a685d data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_2_decompress.json +8d9be5ab85172fff7082d66d87db251473d505e6 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_4_compress.json +6e84afc614de12fb29048d7d187ad408a051f152 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_4_decompress.json +eb26d5c4bc9b79b5965043e251043640475e7967 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_8_compress.json +2e2d4cba206057823c53e64ae7eca986272ea875 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_8_decompress.json +d162b761dfa36862812aab4eb7ef14c63e223335 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_small.json ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json -2b96a5ad5a0bac59803ebf1214271ad9ccb2df75 data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json -09d28d3b26407aea748a8c408ff97335c23f0950 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json -be53c703ee40d9a4ac5ee9e8281db5791db8c710 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json -1af666868158fe4ef62fe401d88a090701aa9daa data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json -73ef10fc6ccd615915885c78a0504875b67574c5 data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json -7e7fdce2949bdc67e74fa51bcf1009a9027d7714 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json -66d62cc373204d9d7f0ecb7f13b5f05f9a180d07 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json -30f111754992b1a5badc9cbaf0ac5d5ef421b4dc data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json +26e9d54eeaa47a887da6af7055ef0475807c2646 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_1_compress.json +7539802d4ae4c3b48e07fc8066e34ad4fef6785a data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_1_decompress.json +6c3156ce76c4213b2b355024e5185ac2a8a17b86 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_2_compress.json +8d8e94a736890704bc5fb564a21d23d49988a478 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_2_decompress.json +05b8879500f11afcacf4d42e962be71fe0319d65 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_4_compress.json +cbf8d8675085aaf81626cb8ae6f917b0da1a61c7 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_4_decompress.json +241deb42dd7f95602e472cc323b6465fa9cad0fa data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_8_compress.json +f384f55b552cf71cd62f7b7d3d5804718004c695 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_8_decompress.json +5d6e71debe26ba85f6dd472ae71b72c3bfa5553c data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_small.json +277f83548604923ca6b3676d2c9f622fd43ab31a data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_1_compress.json +560612b65b1d917e35ec698ece364d484874f1aa data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_1_decompress.json +c5edd5dc332c0ef79f5879975db9dc1c217656a6 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_2_compress.json +5a2ac2c4ff8e3c5cd4f14804b20e6101473074d8 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_2_decompress.json +85a62493cc045d6d629b5531757d1cee6a5445ef data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_4_compress.json +d3eefd5a895352f4d1c7ef8b6631567241eb5789 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_4_decompress.json +8c76de73367e6947e1be34e1157c1dc042e51641 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_8_compress.json +91999a2050f0f69784dbbf7c1cd37daabcf4c7cf data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_8_decompress.json +5a7f222443fa84770900ba35189c46758fd57cf5 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_small.json +184ae3cb74e0481d5aea81b3cd553f9a5fecd7f0 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_1_compress.json +12a6f076f22a1c6d0d4f487c3843e18123a5f2b3 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_1_decompress.json +e74ae5f7483f3a7e9dbe95df4b1aef5a93b3c90d data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_2_compress.json +2f7d4b42bd89bcc7bb5f245be20c586db6f7b4a2 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_2_decompress.json +7cca5d027d909afb60127aa45e751fe139a24c87 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_4_compress.json +ef61fb3f6f8390a23d0afd4e00ba2e76d2ef2c6b data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_4_decompress.json +b04b2bafee24cc1d4bab43d216a0a662ca7ae03a data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_8_compress.json +13cf682d21e394b497a3f377663b4b4bd125394a data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_8_decompress.json +3d2e06518792d1aa4f4f61c11003c98c0de1eb5d data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_small.json +9b360ed6a9f0a31fac7fca092225b4beaca3a599 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_1_compress.json +f29156e72c2405afcbd581d860f65c1c6aa6a732 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_1_decompress.json +e8751d00e97ae00f399f6274bfeb289dbdec56a6 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_2_compress.json +e7a027f76fa4e8bad006dc7d94b39d29f63c7132 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_2_decompress.json +a4c727bfea632a3df9842bc8b3990ec3d4344f0f data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_4_compress.json +4e8f8f38c579bb568a9d27164171d47f3c276f34 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_4_decompress.json +1bee67d2c512a0a9fd570afd5057289b9bc4164f data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_8_compress.json +389b2274f10b35934e29603ce3f9043e61e39268 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_8_decompress.json +b9d9c82e8730b409761305af53a73f5ccd73beb6 data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_small.json +a5e2adf57351fdc236680643f3484402a79046b7 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_1_compress.json +68464530bfa8a4c51f8b82a0ec9dbca86f121cb3 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_1_decompress.json +147e49ee1928ce282e487f1e081334c47ed03b8f data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_2_compress.json +65898b69e6514e069fbbb48d2b526d48d9a35c84 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_2_decompress.json +0c2339d18437d081d02f82c6a143814c76a48e1e data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_4_compress.json +bdefc12bb0324b06ad1a4cf817c44fb2ab50f8e7 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_4_decompress.json +1397057c43954b8a8549b06c4cb8b417607d9d7c data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_8_compress.json +6d84e2c561d50f8cbd5ede6588d960405f285781 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_8_decompress.json +b41e11e4ee6605a9b537c646f90a20436629581b data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_small.json +38045904e2948e3a49091bda4f46513b360c187b data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_1_compress.json +653b8583ec2f0d8d99eeeee7ee1ea695c08685aa data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_1_decompress.json +1da7915584e510e4a451e6e2debb0ed64b4a4824 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_2_compress.json +94f3c1a01b3caba21cf9e82f5f428996efad0f41 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_2_decompress.json +06ce285aad5a289182ae757d501e0960dcca007d data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_4_compress.json +8aa4d1ef02202de173b5613257fa90fbdd2445cf data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_4_decompress.json +afeca4102aef49c4a72532897d9bde3f24e5e748 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_8_compress.json +008a72d5e1ae5d85f9b867658341e294fdaa6f08 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_8_decompress.json +51f4c43190b2f2598577442d254dba04404eec6e data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_small.json +d3885ad68e3b1a81a51aef8dba14ac29fba0186b data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_1_compress.json +65e29277ff41f4c7110ab56b08b8741dcd64c745 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_1_decompress.json +cbf19535e70cfff5723004c1fade62965ddf2215 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_2_compress.json +3dc586aff0a811fe75d40a81d85846d4d5ea1bbb data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_2_decompress.json +1ac94da5fcac1cc5687cac541bf0758b28164c0b data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_4_compress.json +d23b11dc5a90703b8c66c11271da9b8da29f4dd0 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_4_decompress.json +41b5f8cc095161b953407a1d425f3881e5fff17e data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_8_compress.json +cd19d9b8727f0451abe3c8ac4b9e6eae4dd4351a data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_8_decompress.json +78ab7ab643eb80ce7970006e5f7c6a7d91c9ff68 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_small.json +761a2db62573d6efdd188ef9f1814171bb3c60ab data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_1_compress.json +c1883f6b2e9134fe6ff6e9b52cf7c01d802369fe data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_1_decompress.json +74242cdf99b5b4348fdac2072c4340af4e7578f1 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_2_compress.json +10090c0498cd05a1c533bcb546246d187f477758 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_2_decompress.json +3295b6bfd0325378509f74bb6f973197f6a06a1c data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_4_compress.json +26488b34111653b29ffcd18aa86bf968457b62ce data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_4_decompress.json +421cd7d75a5885037a22d16083046ee9d5e60e89 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_8_compress.json +9a6bbf60ed71738700b3d69be5dc1ddbe95796e0 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_8_decompress.json +77c4a1d7e10d9e8a0778b383d8c5e75bed0ea485 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_small.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -bd4172887d07ffdaf69f561fb818e71f279037d9 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json -63738ede4794838b1bf9e097b8727c604b44d31a data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json -fbe8fdeb5a0f8eaa74609bf50436116cda6d8be2 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json -5d2f0f6b9de33e765061c1ef2cc4f6ca60c66557 data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json -dd90958a9ba59785857e1dce95ac292a2b066816 data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json -987c6f116bbaaa4dec5a317fb76b64c5b513e78a data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json -5f69c1c728740590d39f237cbbf1b798ed5ced0e data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json +e6d5c843d076348a61bf31170fde630d6e12bab2 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_1_compress.json +ded906e9545f92ec4aa4417b68cf0153afcb99b5 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_1_decompress.json +d1f4ecf8c77eb64324f124be3bd8f09de7d4532e data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_2_compress.json +6f0da405e0de64cb8528c70f8fea29af73c77c17 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_2_decompress.json +ceb3169f07f0f8a2497e1afae365dd08bc031c47 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_4_compress.json +a09aedb77fba4e9460964b693e413dc76e65419f data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_4_decompress.json +a2304df033bec24560463194b9d57764bc12a6a9 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_8_compress.json +5fb4bd922dd571f6f1bd912edf33bdf036f27994 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_8_decompress.json +04cd69e69eab065c6ac28fd3e932462e4ed49b10 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_small.json +6f3e4e92ed99e7ce0ef8fc0e0c24fd499b055388 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_1_compress.json +29402272d2927b23c28900deaaa87df6928d6a98 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_1_decompress.json +291cff68b9dabe88188fcf0eb53c77464d01fcb5 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_2_compress.json +c52012d8af8441e346eee86c65995beac7ffcf68 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_2_decompress.json +f264b3d707ae1d416965394f2e40c4f3ee3395c6 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_4_compress.json +ee36e88491a06b49ad6f329642250e02ab26347b data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_4_decompress.json +1ecbf59663204725dd11e016e3a607351bf99d5f data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_8_compress.json +69e1720d0e24cf21bed0486a524be97d44beba48 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_8_decompress.json +a1c1cdb02cbdda2f0948b9a2a7fd15301b724a08 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_small.json +60c093b66e91ec01674fa5ea5237a077698c2ff8 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_1_compress.json +c3f8566a5382f2eee72f3e5db4b9bf89cbdc2e5f data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_1_decompress.json +5382905a24e90c9fc0a5ad1269d3db26a6624e8c data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_2_compress.json +c0facdb93b496d40fab1d8ab07ba3e7b1f3c911d data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_2_decompress.json +c223c29153979744f04f7bf9bdad2ae421ce68d5 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_4_compress.json +a79eda6567f87992dc98ba506adc467ba452c679 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_4_decompress.json +e2d7797e62d1440c06be5b039f46a5b9f7757aac data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_8_compress.json +0c62d61cfffcec98efb91231c7cdbe2d66145d83 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_8_decompress.json +afa46c1acf7d482edd465fdc8f00de8b87846019 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_small.json +917397c8a53694688ef0d639ebb21ba92ad6ae2f data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_1_compress.json +c3c357f469db7be26c796aa01c83b1b2f5c6295f data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_1_decompress.json +09692007f6ae20106dff89897097824a666e9819 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_2_compress.json +dc2a5f1e4da7ad0af894dcdd6998025a9b8f8b0a data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_2_decompress.json +740965f785189f4f175e0f4e48f330bcde5d32d9 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_4_compress.json +f7952e8a83af830ecb7fe6ce8705a49d19b51abf data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_4_decompress.json +33d3d2c6131888121b81e66c0bfc576238f03471 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_8_compress.json +9d3c050a9398a3d07a74d69bbe1a432f39a2624e data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_8_decompress.json +84c440f3d2b7f17833eb81c7855420b67803cf0a data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_small.json +49121476b9d359c5bc0fddb37490e44dac1089d3 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_1_compress.json +ff7e1e1d28ffb6f085e267f906234631fa09e03b data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_1_decompress.json +5dd4d15cabc21be276fa19778e624351cf3f4897 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_2_compress.json +abddcf7f4e8ed19498257907bbbf56192059ea98 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_2_decompress.json +68c4956f66f44b3f2112d6b1c57861c37cf85642 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_4_compress.json +de3d05665f8ec08d29c03dd49ca5735fee1bb5a9 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_4_decompress.json +a4e3f6395935fbf047a9bec2e4e013f2e2882642 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_8_compress.json +1c1b36ce0c2b4cd8f34398a509f34ab7ca74281b data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_8_decompress.json +d4f80c429bed7f99e0604ae1226cab462a3aaa2f data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_small.json +96909eb85367ee3b0a62e36712a79425fe9c4c98 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_1_compress.json +011adcd595f97194487ecdaa8bd4f39708b4140b data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_1_decompress.json +d0aa7204b1aef5f4e3411730b2598a6df8844352 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_2_compress.json +ad582cc2a981932fd1551de551500044d39b6e07 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_2_decompress.json +2d998514ac2eb42ec697f13eef97790bb7f48171 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_4_compress.json +4ba456b2191b1065c1eb0e67504c3b5066cd7aca data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_4_decompress.json +0265da1f8ca4d7eb39e0df568cfd5fe0905dcc1d data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_8_compress.json +dc996ea5e901b125a49286e30bb2e2261ff075c7 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_8_decompress.json +a1481a812301b489f6bbcd1aff80f244e16b94c0 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_small.json +09e80d583a4c6a4109b5101ba6396070dda213f3 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_1_compress.json +74313e5a4661de21faba983444bcffda065ea780 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_1_decompress.json +a239729df724a759d65095c17db05e805e9e2c1f data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_2_compress.json +184e8d57be7d9131f712c3694a3ba55d7ac118f8 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_2_decompress.json +49f057868640631936d3c7bcb875dc5b1e9a016f data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_4_compress.json +eecc523c02ab708226288e7755dc69393e290479 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_4_decompress.json +aa317685c8338a95def42645f3c9125dcc2daf39 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_8_compress.json +9f4708988818a5ba6a4c8158848cce239f252160 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_8_decompress.json +1ee17ece74bddda8bc3d54c185e9615c101f630e data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_small.json a21213dbe3ded23a9574daf2e0d1da4050dfe569 data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json -865b872edc48bcb65ce1963d474ca645b639b986 data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json +3d84f89217a1ecca8fa356fd596b831c7bd5030c data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_1_compress.json +ea33f14fc4861b8bf6584e208e2424dbec53f990 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_1_decompress.json +05d4e58c0cc8d2b6dffb4c94bcd46da61f56d29c data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_2_compress.json +fbc1d6429ba0ac4994a4f57b0eb933357e24f054 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_2_decompress.json +61c86702b60797bb50b3da5d0ad4fc726a25a6aa data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_4_compress.json +40de713bc23c297d40c24db1f468a6a6d0a80d1d data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_4_decompress.json +7cfab26dbb20acf23ed191fec02d59b4e0d754b6 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_8_compress.json +4e0e12d3c43409c1de85f6caf96b9d3569fbc463 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_8_decompress.json +94e3bd5ba09aeccbac44660dbb266697141b1add data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_small.json 18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json -1eea95b106ab6a8be8f7b577e9a8c961b8a1725d data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json -a90ba02064ae0e79e04a3527c7894e97c351e383 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json -b126d32e6bd9567115b8218f1d83999d6924c20b data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json -c50d5bcf645a855fc284aec1acbf8c97998b6925 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json -5048b9c34b9745d2f4fe2807648f9450b3e65243 data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json -f7337df6140c3bbd9dac4febb8de8c346cc54ce9 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json +37ba99099a6e129024e509e8a4e6e70cc5f75a31 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_1_compress.json +a8c56ee95600267060ae150283a403d2ef1bb055 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_1_decompress.json +b145e0160b349c7e641854d244108c0d7bc4b536 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_2_compress.json +852b9bfc3cc7577ec353ba5588c5969b751ae119 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_2_decompress.json +e441351b7d065f194246b15087cd607c3e8c94b3 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_4_compress.json +711412c3a4af197580e3751f405efd055d00d9dd data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_4_decompress.json +53e805bec63b199d64a7709bce8183d0e1633f4b data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_8_compress.json +7e650d10effd20dda21fff7fbd848975414a2a01 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_8_decompress.json +afc874b9583b79139b7e7b09bd547b653ba8f427 data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_small.json +db4df433a0a2e6fa7afd104595c0f0272a1cbeb5 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_1_compress.json +a5dcaad45349452e2f8c14e868157a9ef03665c2 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_1_decompress.json +a3084d01675d0b3013257d12c408f8e8e6e27e76 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_2_compress.json +f82c38ddb2761aef5b26d93f2369a133a19d8c7d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_2_decompress.json +7a85b3356dccb92ce8af894c1e8e2be51e84a15f data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_4_compress.json +5603873d0382fe2329359350632860b84f62c419 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_4_decompress.json +63949234e86b1b47bb7e369306efdb53bd09cdba data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_8_compress.json +a1683df7dc66418a6fd8faf360dbfdfd1839ce8a data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_8_decompress.json +786a082fdc8e801093ace54046c6ebd24d35bb2d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_small.json +38e463872696c2093f5cd1cc62ad09524ad07ff1 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_1_compress.json +baf863d6bfd20f11e22ab3a8914b9a0d8c4a0c13 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_1_decompress.json +7b1f9a1ef502f3b1cb49350e7b03fe10e0d344cf data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_2_compress.json +a187ddee4b61cae3df315bded4b9ea8d149593f5 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_2_decompress.json +bab8bb5428e35b623ed658aa0ad9f783dbd6349a data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_4_compress.json +55190b20f6e2070a943a7baa4b74a43253d97542 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_4_decompress.json +a6899628423100534f8ebc972f8eb519b2d0ca61 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_8_compress.json +b959ff4e0847b28767757c2b4251e904f5079e14 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_8_decompress.json +48bfadfa5baf2a5f4809b0eb0981e7354ba28740 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_small.json +4425d7429354ac546bb01b9f03290699c3f29318 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_1_compress.json +5159d8da777ffa5025d49d1b72f40011dce3c25f data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_1_decompress.json +4cc20c04188fe2b30fd086cb0dbd568f6d88a0b4 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_2_compress.json +babfb8e5cff125e8a8cd2a9216aa034ebf57925e data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_2_decompress.json +233f355a12f70004892c5d3d391955295ebbe6bb data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_4_compress.json +3ee6f257983251909b4aab94b1f0677581dec9b9 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_4_decompress.json +81857384a346e0ab7ec1928324caa55f2955b7cd data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_8_compress.json +1c129176b05ae49de9265885aa38b98d48b7d9f1 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_8_decompress.json +d0e46716a4bb09eb410834c966141b9c29d5d104 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_small.json +589d34d0cd9b9ada340196f9ddc489cb705796e1 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_1_compress.json +639edc7b0ff0af9153eaa9a76663d8b3cf075b19 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_1_decompress.json +b6d0af1e496d805c3ee663ed93128a37d284d198 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_2_compress.json +6938f5f3b3f749b1cf894e0ac044c81f5a5f3119 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_2_decompress.json +b9bccc354e8c415a76fee6eaaa35def8c3472534 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_4_compress.json +3f7b33c18c69637e943dad69634e6dca0109690e data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_4_decompress.json +75fe556d088d2dcf09f56527ff0afc2dd381be42 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_8_compress.json +0ea58e11f2327e8bb9d4cead08671e6d2d90b2ed data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_8_decompress.json +af3a6e84c6b05a631c76dd6d7ebcc717004064ec data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_small.json +6d9f82a43e4fbbbc6a8df18bffa5edd8eee98ee7 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_1_compress.json +a2a6e5a61f88680ea96a7e42125c65190d52b2e2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_1_decompress.json +25dcfe42ec9f5fb0fec65bb1f940a76c7a76bd21 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_2_compress.json +d6e62eb7eaa474624bee070fa45fe67bb9d4dce2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_2_decompress.json +64bb8e007fa9d95ce6ef7d3128f43642d296bc49 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_4_compress.json +9f6fb5f939ec9164879e878bf5865c0c98a269e1 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_4_decompress.json +b25baddff185c78572b74b2b4d85777bcca1bff1 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_8_compress.json +ea6551411340bcddfefc46b4cf0831cd420604b2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_8_decompress.json +48c6ea1d92fbe5ec54f873d31975f87944a03214 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_small.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -241,9 +753,137 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso 9212d392d1bc1f7fec0b90dce25fffea415941c5 data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json +98b642e5cba111b37194ec80c4db43cc1cca619c data/cosmere/recipes/atium_aluminum_alloy_nugget_1_compress.json +b48e4324e43cf8a3ff828c7c357cccb9562851ed data/cosmere/recipes/atium_aluminum_alloy_nugget_1_decompress.json +cd97aa37a52452595d3e1708eff890dbe97e56c8 data/cosmere/recipes/atium_aluminum_alloy_nugget_2_compress.json +bfc6036953bdaa44b21355e0512f3ba92d2ecd25 data/cosmere/recipes/atium_aluminum_alloy_nugget_2_decompress.json +37fa7ed6defd957c380009bfbdf86bda71ddd020 data/cosmere/recipes/atium_aluminum_alloy_nugget_4_compress.json +8b079a9f4da94560bd8f9db2c8b26cce10b5b030 data/cosmere/recipes/atium_aluminum_alloy_nugget_4_decompress.json +94dde871a63b7476e66c12a0b1f24dd9fd3da7ca data/cosmere/recipes/atium_aluminum_alloy_nugget_8_compress.json +7617307483e686843599df0481c3b65e411fdc94 data/cosmere/recipes/atium_aluminum_alloy_nugget_8_decompress.json +55da49ed16a08e159027136d5e1a105a561544d6 data/cosmere/recipes/atium_bendalloy_alloy_nugget_1_compress.json +13a249656eb71ba8a3c3fd07eed92c02c1a23ef9 data/cosmere/recipes/atium_bendalloy_alloy_nugget_1_decompress.json +f98a4df042616b2f67e5d4e6f73140ebb98ab826 data/cosmere/recipes/atium_bendalloy_alloy_nugget_2_compress.json +77c4f55d116a4267c49f11fbd5d1eb2acd0808a3 data/cosmere/recipes/atium_bendalloy_alloy_nugget_2_decompress.json +bd75e9cd43b8630f81c18996275f728a8e296baa data/cosmere/recipes/atium_bendalloy_alloy_nugget_4_compress.json +5245d5d99a4a6516604f3be955373829e9a69540 data/cosmere/recipes/atium_bendalloy_alloy_nugget_4_decompress.json +3fb06d44972eaf3092997d92b0cf563789fcdfa1 data/cosmere/recipes/atium_bendalloy_alloy_nugget_8_compress.json +1ea7bdfddc6cefae277e2b2cd622a44ed9c5a713 data/cosmere/recipes/atium_bendalloy_alloy_nugget_8_decompress.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json +76dd5d8086938aa964a501eb46609570899ab318 data/cosmere/recipes/atium_brass_alloy_nugget_1_compress.json +982d99694ce8ede19bd2127fdb2db57533203eb9 data/cosmere/recipes/atium_brass_alloy_nugget_1_decompress.json +92aaa61576e6f8f84b6c3bd1b514d92cd490712a data/cosmere/recipes/atium_brass_alloy_nugget_2_compress.json +d53dfc019632abcd58e06d7e90ba4fe3cc92461c data/cosmere/recipes/atium_brass_alloy_nugget_2_decompress.json +41980189c77fdf563933c2a45baf54306a2bcc01 data/cosmere/recipes/atium_brass_alloy_nugget_4_compress.json +79925c29bb9ebe32058605b81f7c03c5f2be15c0 data/cosmere/recipes/atium_brass_alloy_nugget_4_decompress.json +5de529d24f70143229a26e084643f0250eff48ec data/cosmere/recipes/atium_brass_alloy_nugget_8_compress.json +72dc16679db7296163c630e63155d53f8cf9f5f6 data/cosmere/recipes/atium_brass_alloy_nugget_8_decompress.json +05012f52527d3c9a1d5c7ab7f26f947ed6fab97a data/cosmere/recipes/atium_bronze_alloy_nugget_1_compress.json +e14ac4d5fac6a8d04b42f5ec5f7eddfae370f932 data/cosmere/recipes/atium_bronze_alloy_nugget_1_decompress.json +be4961d70df3f435b99983316f76eaa0176c26e9 data/cosmere/recipes/atium_bronze_alloy_nugget_2_compress.json +c7795742c66bd0a19b3bc04cdc272bed701b1f5f data/cosmere/recipes/atium_bronze_alloy_nugget_2_decompress.json +a0a9be99170c8a81938d4776e72d5c508a051067 data/cosmere/recipes/atium_bronze_alloy_nugget_4_compress.json +15a630290ed2823930969dea1b8d1e3178d9d8cc data/cosmere/recipes/atium_bronze_alloy_nugget_4_decompress.json +ff3debd981a25b852477214048e2c22733b004eb data/cosmere/recipes/atium_bronze_alloy_nugget_8_compress.json +5d4c74dd9d85a3847a51a64e6fa16c61cb83fe30 data/cosmere/recipes/atium_bronze_alloy_nugget_8_decompress.json +6b0e1d01e07176066b8974ee33807f36aaca0064 data/cosmere/recipes/atium_cadmium_alloy_nugget_1_compress.json +28052f35e0ab6c4098d894b51092717690080943 data/cosmere/recipes/atium_cadmium_alloy_nugget_1_decompress.json +facbaa36f30fbcbbdfff8ca336dc3e99c943351a data/cosmere/recipes/atium_cadmium_alloy_nugget_2_compress.json +667624ed218675b7896899d82438fa1d4906064a data/cosmere/recipes/atium_cadmium_alloy_nugget_2_decompress.json +4adec0c1b78c81f832f2dab568699f9edeb2789b data/cosmere/recipes/atium_cadmium_alloy_nugget_4_compress.json +ccb1c0b9469270b1709d70e063b420185a7d0abe data/cosmere/recipes/atium_cadmium_alloy_nugget_4_decompress.json +974b3fead11f519a0620642ef1e44c564b224747 data/cosmere/recipes/atium_cadmium_alloy_nugget_8_compress.json +cbc8b49ec7ae0fb93d3c0196bce4dd28bca8fe76 data/cosmere/recipes/atium_cadmium_alloy_nugget_8_decompress.json +293111b6998214f0e4029f001cab93a106a668ee data/cosmere/recipes/atium_chromium_alloy_nugget_1_compress.json +5fb1a4431bb6a5bb874f20eae4dd710a55deb9a2 data/cosmere/recipes/atium_chromium_alloy_nugget_1_decompress.json +93e7988726050c99ea84ef87c66b80510d397f0b data/cosmere/recipes/atium_chromium_alloy_nugget_2_compress.json +3710058aa0ac5ed72108a8ef089af1115963267a data/cosmere/recipes/atium_chromium_alloy_nugget_2_decompress.json +868c8b700f0a24b7dc43391fadf34b2020a3ae42 data/cosmere/recipes/atium_chromium_alloy_nugget_4_compress.json +e2f8975f4ac0870279902b7d3faa588b07d8f567 data/cosmere/recipes/atium_chromium_alloy_nugget_4_decompress.json +d933473d9a65e83e8539fa3465d88657ba74ac18 data/cosmere/recipes/atium_chromium_alloy_nugget_8_compress.json +038b20498e021adb302a8de3a5166958049c8168 data/cosmere/recipes/atium_chromium_alloy_nugget_8_decompress.json +196ddb145c027e971bf57b79ef0237e4f28e6775 data/cosmere/recipes/atium_copper_alloy_nugget_1_compress.json +343b9f789e73d019c29169f49b8220a29b58e28d data/cosmere/recipes/atium_copper_alloy_nugget_1_decompress.json +174b5a3cb3e70968b2efbf5fa94e40e27c63045b data/cosmere/recipes/atium_copper_alloy_nugget_2_compress.json +00f5b18f077b646a899dc5cc0951792c95c8426f data/cosmere/recipes/atium_copper_alloy_nugget_2_decompress.json +9ab3751d2ba62974a632028a4de8a54614fc4add data/cosmere/recipes/atium_copper_alloy_nugget_4_compress.json +5b3340225c423d1b560a2d8c72a5437345e50e33 data/cosmere/recipes/atium_copper_alloy_nugget_4_decompress.json +d20805a9b3d97fcb90246b42eae9d1ea2bc5b569 data/cosmere/recipes/atium_copper_alloy_nugget_8_compress.json +6b27e5eb9761a92b160a6d2a5b019a794640fc5b data/cosmere/recipes/atium_copper_alloy_nugget_8_decompress.json +16bfe499dcc32364eacc436179a3fba2eddb224a data/cosmere/recipes/atium_duralumin_alloy_nugget_1_compress.json +9c1ea15e8ed54353f411e2320818a3ec1057c092 data/cosmere/recipes/atium_duralumin_alloy_nugget_1_decompress.json +a104d712a389b8e857165cb5c5a7cfb7d43af088 data/cosmere/recipes/atium_duralumin_alloy_nugget_2_compress.json +2f04c3adc98e53c7826164ef6583c3b9a41dae2f data/cosmere/recipes/atium_duralumin_alloy_nugget_2_decompress.json +bf3ea2c77e9ac105896e6c86ff9640b0a0d547c8 data/cosmere/recipes/atium_duralumin_alloy_nugget_4_compress.json +59aa340f927f55e4ea68bd809187a8244bc33575 data/cosmere/recipes/atium_duralumin_alloy_nugget_4_decompress.json +3c052099c24fdbfaca2a7bca13557236485d4cd2 data/cosmere/recipes/atium_duralumin_alloy_nugget_8_compress.json +f1c01967edcbd5934695f4f80242511e195e438a data/cosmere/recipes/atium_duralumin_alloy_nugget_8_decompress.json +eee97426163dff21aba15ef78e360e5e91669e98 data/cosmere/recipes/atium_electrum_alloy_nugget_1_compress.json +de026798b2fd584b930471b129321495a9a756e5 data/cosmere/recipes/atium_electrum_alloy_nugget_1_decompress.json +ad64e954ca661f3b28a2f7871dff251ceb100ecf data/cosmere/recipes/atium_electrum_alloy_nugget_2_compress.json +03ae04a5a26730c1d46b9157a774f76a077d8d13 data/cosmere/recipes/atium_electrum_alloy_nugget_2_decompress.json +8a4f49b993ee61f235322422a140059f7514358e data/cosmere/recipes/atium_electrum_alloy_nugget_4_compress.json +30fb415213946f9ca4a17df70cfa04eaf22402da data/cosmere/recipes/atium_electrum_alloy_nugget_4_decompress.json +db3c355149bdae5739af4bc9a8ccfdfc0ea4eabd data/cosmere/recipes/atium_electrum_alloy_nugget_8_compress.json +c365c8955bd2070a31baa2d647a8a88dd6d88661 data/cosmere/recipes/atium_electrum_alloy_nugget_8_decompress.json 8019d7d79bdf4e408849b6e56bc3108a8ed3877d data/cosmere/recipes/atium_god_nugget.json +57a0b11a0c38c3c7640e304561cc1647477019e0 data/cosmere/recipes/atium_gold_alloy_nugget_1_compress.json +13b4c476ca0a95db387e01d3f7d9b89af910f4ae data/cosmere/recipes/atium_gold_alloy_nugget_1_decompress.json +cc466ad1f9cadedaf85f866f2595738e53fcb12d data/cosmere/recipes/atium_gold_alloy_nugget_2_compress.json +d1b133e5d9a5af33c66404e000b222cfe8f7f068 data/cosmere/recipes/atium_gold_alloy_nugget_2_decompress.json +27959157186c182f8187da3766f133a1e1f417c1 data/cosmere/recipes/atium_gold_alloy_nugget_4_compress.json +0da7fc7e844a17c2daa2a440af99a20ba0f2e616 data/cosmere/recipes/atium_gold_alloy_nugget_4_decompress.json +f4932e82897b46eeeff596517069a853ebad437a data/cosmere/recipes/atium_gold_alloy_nugget_8_compress.json +0a26d90e26b02f42bbc665c70fb66a44bfb01cfc data/cosmere/recipes/atium_gold_alloy_nugget_8_decompress.json 2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json +cc938b961290626e0543fc2ae965a9ef9fe0fffa data/cosmere/recipes/atium_iron_alloy_nugget_1_compress.json +d2f32e0fbaa0b43aaf4b058310877d753cb00bb4 data/cosmere/recipes/atium_iron_alloy_nugget_1_decompress.json +68f9714068c89053401c5c7a78ed09171ec78f8e data/cosmere/recipes/atium_iron_alloy_nugget_2_compress.json +bfcbdd92667cdbc1bcdccf8f2b337b856f4bf840 data/cosmere/recipes/atium_iron_alloy_nugget_2_decompress.json +408eda87be10de5f51a2a8ae890b278fedf781b3 data/cosmere/recipes/atium_iron_alloy_nugget_4_compress.json +90a0a2552d8a8b867984697b2e8eb572163ed0b3 data/cosmere/recipes/atium_iron_alloy_nugget_4_decompress.json +24a35e459bdbd99f3eb52178c511efa02c2417c0 data/cosmere/recipes/atium_iron_alloy_nugget_8_compress.json +d872e6aab76d52e237eade7b0f42577d8b22586a data/cosmere/recipes/atium_iron_alloy_nugget_8_decompress.json +4712ff4d3f928ec324169e6925d8bcd8be3425d0 data/cosmere/recipes/atium_nicrosil_alloy_nugget_1_compress.json +4d5c492a2eeec46f41b1f1b67f3658de376accf5 data/cosmere/recipes/atium_nicrosil_alloy_nugget_1_decompress.json +fc5592f5e9ecdf1e1e6a470e009a9354a8a1e49b data/cosmere/recipes/atium_nicrosil_alloy_nugget_2_compress.json +a6b6f4f3cacebe5e728c4fa36ff352970e8aef25 data/cosmere/recipes/atium_nicrosil_alloy_nugget_2_decompress.json +4a29e0a8158da66a3ad67f5382eaf6eb17da59a9 data/cosmere/recipes/atium_nicrosil_alloy_nugget_4_compress.json +3057b115fccd4eda17ff13a529461ac6172c8aa1 data/cosmere/recipes/atium_nicrosil_alloy_nugget_4_decompress.json +e25c418bb5cd61d93b7e4545072e00b313bc62a0 data/cosmere/recipes/atium_nicrosil_alloy_nugget_8_compress.json +901111e3abfe2dc5a56238c91a7d1c84299451ea data/cosmere/recipes/atium_nicrosil_alloy_nugget_8_decompress.json +410371a0628fc6e63e8de9d37694e9438858e6a9 data/cosmere/recipes/atium_pewter_alloy_nugget_1_compress.json +bd7e13b943c050a97a719804ccbdc76267a02404 data/cosmere/recipes/atium_pewter_alloy_nugget_1_decompress.json +5c2dd09267066c1b333d605b87620c980fd6f225 data/cosmere/recipes/atium_pewter_alloy_nugget_2_compress.json +5c28963fe2f52962d4a54d958b957773dd2697ae data/cosmere/recipes/atium_pewter_alloy_nugget_2_decompress.json +ef6dbc1b68f2503c1c86b62f38784ae314311d23 data/cosmere/recipes/atium_pewter_alloy_nugget_4_compress.json +229eaf8d75d81dce2d187f0c33c6795eb4fe9809 data/cosmere/recipes/atium_pewter_alloy_nugget_4_decompress.json +9b7312b781b3e43b81eeda4592ab957825ae0075 data/cosmere/recipes/atium_pewter_alloy_nugget_8_compress.json +7f50f52fef7566e02bebac9930adb13ce89044db data/cosmere/recipes/atium_pewter_alloy_nugget_8_decompress.json +63cc2cced2ef93b6aa42c605b831580f0872a5de data/cosmere/recipes/atium_steel_alloy_nugget_1_compress.json +8aa966d3bfefb46bbd9d556bd3cef46ba71962e9 data/cosmere/recipes/atium_steel_alloy_nugget_1_decompress.json +2bb43bcf67a585d04a15552711aa6b61c6c77ccf data/cosmere/recipes/atium_steel_alloy_nugget_2_compress.json +82ffa6f22d3f0d68ad9c8c63580cb95a262de0e3 data/cosmere/recipes/atium_steel_alloy_nugget_2_decompress.json +27f81fdad2b78b7898b1aa0d5f32cf614775806a data/cosmere/recipes/atium_steel_alloy_nugget_4_compress.json +ee4a3aaae90cbbe985f93d2cb1b51f3786044179 data/cosmere/recipes/atium_steel_alloy_nugget_4_decompress.json +99d7234c9a6ce16d1696dfef6405d8e651d909b4 data/cosmere/recipes/atium_steel_alloy_nugget_8_compress.json +81805b3153846b950da7d9e4ed0010c801b434a3 data/cosmere/recipes/atium_steel_alloy_nugget_8_decompress.json +967dba1a1b6d27501307403a9fc26e10d9de0671 data/cosmere/recipes/atium_tin_alloy_nugget_1_compress.json +093dc1012b9bcb855de8e4c0491f70f09cecd079 data/cosmere/recipes/atium_tin_alloy_nugget_1_decompress.json +f3e92dbea886ffed1f347184f7b6a6971d3fa611 data/cosmere/recipes/atium_tin_alloy_nugget_2_compress.json +46f1b34e208c1ab694072d382c91dee0d51bd8ac data/cosmere/recipes/atium_tin_alloy_nugget_2_decompress.json +5832191d9c810682d61b9e122b5fe947c53a8e0d data/cosmere/recipes/atium_tin_alloy_nugget_4_compress.json +807eae32d4559209db7d9ad36c5f88453ff69548 data/cosmere/recipes/atium_tin_alloy_nugget_4_decompress.json +fc537799dcd563158045d40c292193cdbefed193 data/cosmere/recipes/atium_tin_alloy_nugget_8_compress.json +44a9ed6552a1378d6b31f74d9ff565cd4c6e6c5d data/cosmere/recipes/atium_tin_alloy_nugget_8_decompress.json +8172b999c9a6db527f77e63766a3db1fb4633bab data/cosmere/recipes/atium_zinc_alloy_nugget_1_compress.json +9812c2aab8c7d177dfeb898cbbb456e266c6f113 data/cosmere/recipes/atium_zinc_alloy_nugget_1_decompress.json +a0e0e7c232cf43ca1e5afc1eac104a4a5aa3255b data/cosmere/recipes/atium_zinc_alloy_nugget_2_compress.json +46ebb16a5ec2df605aeb79aafe0aba8c8f24f994 data/cosmere/recipes/atium_zinc_alloy_nugget_2_decompress.json +50101a470b0a0cc9f32a1e0c6a25e433a9224620 data/cosmere/recipes/atium_zinc_alloy_nugget_4_compress.json +4b6edd3c5159cc3d366535cc509ae16d2cf83196 data/cosmere/recipes/atium_zinc_alloy_nugget_4_decompress.json +ff4dda38c07687e0fb7a6dbdda38023977ff918e data/cosmere/recipes/atium_zinc_alloy_nugget_8_compress.json +f3e7c40d6a22b8cdb9ccbe5d1ee640bd2bc1718a data/cosmere/recipes/atium_zinc_alloy_nugget_8_decompress.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -323,9 +963,137 @@ afa3542d017e17d9cf68eaeb1821095fb83d06f2 data/cosmere/recipes/duralumin_ingot_fr de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.json 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json +ff35dccc5a8dc5540bb8058bd95652540e416c58 data/cosmere/recipes/harmonium_aluminum_alloy_nugget_1_compress.json +7037ce85cb714a2e5ca903a1cac6774dc9fb23bb data/cosmere/recipes/harmonium_aluminum_alloy_nugget_1_decompress.json +b62ba3b55619a8e5aaad234aab3a1c7a654cffba data/cosmere/recipes/harmonium_aluminum_alloy_nugget_2_compress.json +a6d3ca516bac052d28e074a14a03a8e8a83425da data/cosmere/recipes/harmonium_aluminum_alloy_nugget_2_decompress.json +e66a1730bc4c7642a7817340e53ff29a46c140c0 data/cosmere/recipes/harmonium_aluminum_alloy_nugget_4_compress.json +76490aa0a413bfcb5bb31df338dbeee487bb536e data/cosmere/recipes/harmonium_aluminum_alloy_nugget_4_decompress.json +3fed1dc3d161aaae278794c72e697591e38acc1e data/cosmere/recipes/harmonium_aluminum_alloy_nugget_8_compress.json +2aa2567d97cf4171bf2fe8fc9338086826758b3a data/cosmere/recipes/harmonium_aluminum_alloy_nugget_8_decompress.json +d92a7a01cc4434fb1eca47f99f3d68687e12771a data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_1_compress.json +728299a8703ed78f930043632129098d0c501daa data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_1_decompress.json +d293cf08240ad9d019845bc93d8e59666944ff7f data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_2_compress.json +ee272e67423d63a43db98adb72ce43764663da37 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_2_decompress.json +3158020fada8a2705a1048f11ace1d310a8daecb data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_4_compress.json +2fef3821a87c45bd3eef9ffdddd2ebcdbe4377e5 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_4_decompress.json +8e9950695a17c49bf12c920d5a27d71f8c29fdff data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_8_compress.json +ebb7e8c89dcbd0c96b29af69cacfb58fa5bbdcb4 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_8_decompress.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json +1a8d1f32ffa6549774b67a159059c13f6240868b data/cosmere/recipes/harmonium_brass_alloy_nugget_1_compress.json +e30b20f09dc60035165d1c3a53c8980f7cf84c9f data/cosmere/recipes/harmonium_brass_alloy_nugget_1_decompress.json +f22a2e9cef3a2f9224117e2a79666a05546a4bae data/cosmere/recipes/harmonium_brass_alloy_nugget_2_compress.json +818669b749caeb12a6b468e8a5124ac4a4d9b6bd data/cosmere/recipes/harmonium_brass_alloy_nugget_2_decompress.json +81cd4e30bcbd162e711db56986ba5663aa9fb3aa data/cosmere/recipes/harmonium_brass_alloy_nugget_4_compress.json +a87da20a8d05a485c4f73eee01193faca46f4fe1 data/cosmere/recipes/harmonium_brass_alloy_nugget_4_decompress.json +c4f8a1ba2e2d5e418d50fed811daf02697c78eb3 data/cosmere/recipes/harmonium_brass_alloy_nugget_8_compress.json +e0e53ee570607bdf8af573edf187bd4b233df23c data/cosmere/recipes/harmonium_brass_alloy_nugget_8_decompress.json +5c7406b3bdb7ded44631c7294b50d9cb03a86199 data/cosmere/recipes/harmonium_bronze_alloy_nugget_1_compress.json +43b957a51b7be5ba0100bcc138e6f69a36186a9d data/cosmere/recipes/harmonium_bronze_alloy_nugget_1_decompress.json +79d9a2040acba4b38a255541b260fd604208c934 data/cosmere/recipes/harmonium_bronze_alloy_nugget_2_compress.json +5ba2d1c9e47b1383df3b156e62d9e44ca73de9a8 data/cosmere/recipes/harmonium_bronze_alloy_nugget_2_decompress.json +39429cbcaac58daa0642bd89a278ba28eed70e02 data/cosmere/recipes/harmonium_bronze_alloy_nugget_4_compress.json +c904ca19e45947365d6cc042d145522daa452f1e data/cosmere/recipes/harmonium_bronze_alloy_nugget_4_decompress.json +5a7d8e2b02ac0029d4cb6cbd45f5eaa05a32f669 data/cosmere/recipes/harmonium_bronze_alloy_nugget_8_compress.json +5d8f319767485b5ee82bbc3631ed0bd09cccb9a4 data/cosmere/recipes/harmonium_bronze_alloy_nugget_8_decompress.json +2b75235dcc655ecd149c31b4214aee8f3588d340 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_1_compress.json +eb3483af9d7b5dd2c8f7a1f554077ed82db5d652 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_1_decompress.json +d6054df3d31c433f669aab4b98a410fb44e0c69e data/cosmere/recipes/harmonium_cadmium_alloy_nugget_2_compress.json +8766e1b06a9aa7cff9d12471720226a128fe4f3d data/cosmere/recipes/harmonium_cadmium_alloy_nugget_2_decompress.json +5ea2e5c4abd000f7c28ffbb2aa58680f893f6477 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_4_compress.json +1561fe5d307f018540c83e533d35e4418ef0515b data/cosmere/recipes/harmonium_cadmium_alloy_nugget_4_decompress.json +856c49349bc089b92098e162b439614392337527 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_8_compress.json +83d03ce9efcbdca3f290dd941c29d7173920b441 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_8_decompress.json +1a91ce1c794a6778215ec48af09d23c142a31e93 data/cosmere/recipes/harmonium_chromium_alloy_nugget_1_compress.json +c4cd5415f51a762d0743697ff7803a7c09149cb4 data/cosmere/recipes/harmonium_chromium_alloy_nugget_1_decompress.json +5e08605883dda72a367d45db020b72c6aa883da0 data/cosmere/recipes/harmonium_chromium_alloy_nugget_2_compress.json +dfe09b11377c74a0a382e24275addbffd7ad2743 data/cosmere/recipes/harmonium_chromium_alloy_nugget_2_decompress.json +d41991071ea2405e82f20b62186a36890962f468 data/cosmere/recipes/harmonium_chromium_alloy_nugget_4_compress.json +0d27295e1cadc3bfa9a41b1ba1f7569f8acd62ab data/cosmere/recipes/harmonium_chromium_alloy_nugget_4_decompress.json +511e38a0c3c064d55987529d9ff30ccaf94bc69d data/cosmere/recipes/harmonium_chromium_alloy_nugget_8_compress.json +f0af5ee13e722bd1901b74f8618384f33dea1591 data/cosmere/recipes/harmonium_chromium_alloy_nugget_8_decompress.json +774cd67b375c1c82389c80c74b0eab4f785a64f5 data/cosmere/recipes/harmonium_copper_alloy_nugget_1_compress.json +84278c8b0f1faf4226210e7fe19a26cd83282afe data/cosmere/recipes/harmonium_copper_alloy_nugget_1_decompress.json +f78d0741643d3398a9c03a393497eb084b4757ef data/cosmere/recipes/harmonium_copper_alloy_nugget_2_compress.json +669a27b2da13050d50f61bb4b227c0338c4e513c data/cosmere/recipes/harmonium_copper_alloy_nugget_2_decompress.json +9580cfed702514a9f6cfd2e115c5dcb0088c84da data/cosmere/recipes/harmonium_copper_alloy_nugget_4_compress.json +e9420e2b36bc23960db056345635276898b81963 data/cosmere/recipes/harmonium_copper_alloy_nugget_4_decompress.json +c3d846e035b9af014adc323acd2c45b6175d8008 data/cosmere/recipes/harmonium_copper_alloy_nugget_8_compress.json +9f5ab1a88cab9f7974c1eed292d3ef69ff93eb90 data/cosmere/recipes/harmonium_copper_alloy_nugget_8_decompress.json +3cb1ae854ac6fc629017712cca800b99b7535a47 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_1_compress.json +db9992cc065bdc86032e060d9ed56f2fc70eefb0 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_1_decompress.json +8215ea1d616a16cf2501b9c4083f3fef461fda72 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_2_compress.json +5f0949bb4c1efd6a5a0d8a9b3c795c983e2b71a8 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_2_decompress.json +dd7b1656d88c86906d5a3ecb1d7825fd678388bb data/cosmere/recipes/harmonium_duralumin_alloy_nugget_4_compress.json +5ffc9dc7114ace3f7b2efcd5a62b381b66f6c0a7 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_4_decompress.json +0d51eb50f0333de2b55139ef88445c3906db03b1 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_8_compress.json +1de9f144f36fb7da8b3883154c89684ab1e6bd77 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_8_decompress.json +d239f52161420c2b82b435f05f0731e8f29766a6 data/cosmere/recipes/harmonium_electrum_alloy_nugget_1_compress.json +ae36b9bd1129568a5c001cc28d5b27f0aa6e6804 data/cosmere/recipes/harmonium_electrum_alloy_nugget_1_decompress.json +393d6d0d9a498f75c88f98ff8b7b87f7360aaa83 data/cosmere/recipes/harmonium_electrum_alloy_nugget_2_compress.json +7e87f3264fbe46273fddbe9416fddb15cfed1c72 data/cosmere/recipes/harmonium_electrum_alloy_nugget_2_decompress.json +96f16c4ea940048e0faf98bce8b156f81318bfcb data/cosmere/recipes/harmonium_electrum_alloy_nugget_4_compress.json +b278795dab3b451dcdd8b06d7d90c44b6d2742e9 data/cosmere/recipes/harmonium_electrum_alloy_nugget_4_decompress.json +7c6ac6cf368ba005b28e0d9949c3ae32ada975b7 data/cosmere/recipes/harmonium_electrum_alloy_nugget_8_compress.json +3534f123f496b91e737df61d49aec1a292361091 data/cosmere/recipes/harmonium_electrum_alloy_nugget_8_decompress.json a3e3aecb833416ea16846f2f9915f847b3a73215 data/cosmere/recipes/harmonium_god_nugget.json +38c81e62cabc532cd028a3f664d18ed8309856e0 data/cosmere/recipes/harmonium_gold_alloy_nugget_1_compress.json +9e37a268e92411ebba7d6d5c8f56a2f6dec3caa6 data/cosmere/recipes/harmonium_gold_alloy_nugget_1_decompress.json +8698f92d2d071af82b7c36b6b2e27751f1cea37b data/cosmere/recipes/harmonium_gold_alloy_nugget_2_compress.json +f3813b3789d591f73900fb2db5c24dbb1416f2fe data/cosmere/recipes/harmonium_gold_alloy_nugget_2_decompress.json +59326d7dd26c876e3bee33b2ca5a0d4ed98ae92e data/cosmere/recipes/harmonium_gold_alloy_nugget_4_compress.json +b845722e6044f40ebae3e4867cde6b5fb0043bcf data/cosmere/recipes/harmonium_gold_alloy_nugget_4_decompress.json +6a28b9cd86b578cf026e787801be0188928e4db8 data/cosmere/recipes/harmonium_gold_alloy_nugget_8_compress.json +b2258dd131ac2c38f5e31de6f31d1cb230b33043 data/cosmere/recipes/harmonium_gold_alloy_nugget_8_decompress.json dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json +bd17826f4f29500588731052006ce669574820a7 data/cosmere/recipes/harmonium_iron_alloy_nugget_1_compress.json +bdb25eec52b805a4b0fe3d9848092f971bcfaade data/cosmere/recipes/harmonium_iron_alloy_nugget_1_decompress.json +e0bbdfe5d562cb3797efabf9c551b95c4b8c0af0 data/cosmere/recipes/harmonium_iron_alloy_nugget_2_compress.json +f41695a24b4ca80879a5e601617bd3c0ba2477c8 data/cosmere/recipes/harmonium_iron_alloy_nugget_2_decompress.json +7bc87ab42754202b97fba40e89b2b099975d7f18 data/cosmere/recipes/harmonium_iron_alloy_nugget_4_compress.json +ffa8b2cc83cc3caa75d7bbf0ce8004e6d3995958 data/cosmere/recipes/harmonium_iron_alloy_nugget_4_decompress.json +bc3965c00260bfaa26151374da90921e467c7aa6 data/cosmere/recipes/harmonium_iron_alloy_nugget_8_compress.json +33146f92b5468a5a32c45f9ddb593d9d24ca7ad9 data/cosmere/recipes/harmonium_iron_alloy_nugget_8_decompress.json +4c3a914463a9db67d8829cf8969ec4c4527c7f08 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_1_compress.json +6100592db7ab19b1ce17ba0b2f613e2ee3cf1c8d data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_1_decompress.json +4132207f69c77d893704d274ef3942da599b3450 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_2_compress.json +c2d2782c83c7127473902bcfdccab1012eab146f data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_2_decompress.json +83fa8da2264ad6c32686f6133b0c1ab4ee977ef8 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_4_compress.json +eb9cb6df94024fdafe0e197a1a1f02bc0aee9958 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_4_decompress.json +7e4e43dcb9c00e4e9a28211fab412e0a0c8f20f2 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_8_compress.json +7eb4e81e8177c88be503b867f608a884f7d0c89b data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_8_decompress.json +544566af081c90ed9e035a0abbb9aa8049a7b100 data/cosmere/recipes/harmonium_pewter_alloy_nugget_1_compress.json +cdd30033b4b40fb9670943037e59786b3605521d data/cosmere/recipes/harmonium_pewter_alloy_nugget_1_decompress.json +c89eb7022373ba04662f45687bf4b935c3dde189 data/cosmere/recipes/harmonium_pewter_alloy_nugget_2_compress.json +5d88f5d7722e5a1acfdb178555940981cb87d57f data/cosmere/recipes/harmonium_pewter_alloy_nugget_2_decompress.json +be48112068f4417778d353ff76e0cd7a5dd327b8 data/cosmere/recipes/harmonium_pewter_alloy_nugget_4_compress.json +db6d9bc30eeaa919dd8cdc2c8b7611e4be73b5cd data/cosmere/recipes/harmonium_pewter_alloy_nugget_4_decompress.json +12e71bf1715e54f6e2eebe060d55b84dd231fbc3 data/cosmere/recipes/harmonium_pewter_alloy_nugget_8_compress.json +2f91c122466e3aeae0a24a3b323f482a491d329d data/cosmere/recipes/harmonium_pewter_alloy_nugget_8_decompress.json +507ef161fedde89175b3e0e92b755192659c3238 data/cosmere/recipes/harmonium_steel_alloy_nugget_1_compress.json +611fb8569b724cf1d2e834b365f5bbce80086d8e data/cosmere/recipes/harmonium_steel_alloy_nugget_1_decompress.json +2487fb63c71c58517a905fbb278cf37dde9b608e data/cosmere/recipes/harmonium_steel_alloy_nugget_2_compress.json +c07599dc980240b74dd7c8edebfecf4a9db3ddb9 data/cosmere/recipes/harmonium_steel_alloy_nugget_2_decompress.json +1845d1b6bdec836db7ecee12957b3d2e9648f710 data/cosmere/recipes/harmonium_steel_alloy_nugget_4_compress.json +e460b4fb38b8a631881507fb8045eb8f1f25943c data/cosmere/recipes/harmonium_steel_alloy_nugget_4_decompress.json +67b2986b31bf24d3c9533d781e557af5109925ab data/cosmere/recipes/harmonium_steel_alloy_nugget_8_compress.json +f4ca135d67ac7d42e65d3174a3730518aa7546f7 data/cosmere/recipes/harmonium_steel_alloy_nugget_8_decompress.json +1ce405a73278aa03765e48befbb63c32f50a816c data/cosmere/recipes/harmonium_tin_alloy_nugget_1_compress.json +9583f9763c3ba75d9333035fe1f2df0fd155305b data/cosmere/recipes/harmonium_tin_alloy_nugget_1_decompress.json +c2c3c67c1c9a5879fcab11b2b32b5e86b9fd1b41 data/cosmere/recipes/harmonium_tin_alloy_nugget_2_compress.json +6b00c3ecbdb6584e77613e35cb404898a0856e03 data/cosmere/recipes/harmonium_tin_alloy_nugget_2_decompress.json +e1885b566eec537be1e8ab52da628b83fbe64a57 data/cosmere/recipes/harmonium_tin_alloy_nugget_4_compress.json +653c83bac445488b13625b776705ded085939354 data/cosmere/recipes/harmonium_tin_alloy_nugget_4_decompress.json +b820e3a332c4d6eb2668ed890c6e408114298dbc data/cosmere/recipes/harmonium_tin_alloy_nugget_8_compress.json +b8fc17780cb0acbeee37fc963fd6724f89281aa2 data/cosmere/recipes/harmonium_tin_alloy_nugget_8_decompress.json +24659936c74cb6f020e5da958bc7aafded2fe7c4 data/cosmere/recipes/harmonium_zinc_alloy_nugget_1_compress.json +0c4df963dc2ba2672ca9d8a5d628c664f57e9387 data/cosmere/recipes/harmonium_zinc_alloy_nugget_1_decompress.json +4011c8ef9391357b98fed53c87610a171f18efa2 data/cosmere/recipes/harmonium_zinc_alloy_nugget_2_compress.json +530b60796eb7367aafbcfdc314b9b9261748f007 data/cosmere/recipes/harmonium_zinc_alloy_nugget_2_decompress.json +1cd6ddd6638a66b98363d91a27a411b7fb83dede data/cosmere/recipes/harmonium_zinc_alloy_nugget_4_compress.json +279538bfe0ad4aff7bfe324befc8f8b930e49e0f data/cosmere/recipes/harmonium_zinc_alloy_nugget_4_decompress.json +61099e178810d1897ed271488be2075c4c0327ec data/cosmere/recipes/harmonium_zinc_alloy_nugget_8_compress.json +6a9cd71150f5501b06d7c49cee39e699eb13ce4b data/cosmere/recipes/harmonium_zinc_alloy_nugget_8_decompress.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -334,44 +1102,300 @@ dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.js cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -32ad5f09a5cb734652af3e0a9f7fb328999d8ebe data/cosmere/recipes/lerasatium_aluminum_nugget.json -357e3f8d831dc8ec77fdc285aebb51a0c88c2d13 data/cosmere/recipes/lerasatium_bendalloy_nugget.json +ac422cd15df4f84f4dba86ac2dbccfb5057a305d data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_1_compress.json +d5c83624b3c2bf13b691078373897d82cb86a14e data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_1_decompress.json +e45a477846d110b45f16900171aa9da72944799d data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_2_compress.json +3a9c6febb0be4a77ba48fafb6f574d91a2c7231b data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_2_decompress.json +6218c5f0a660ae894fd37a3406b12e9995829a53 data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_4_compress.json +c4d583877df44cdf70a8106f1ef75013ae14469f data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_4_decompress.json +02595aedd2100c2787b49f13b89353bde8893bbc data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_8_compress.json +ed17443114c9da445483582662292f61407d8a81 data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_8_decompress.json +3f46e43800d4f1b638375bf4c81708f3f582fc97 data/cosmere/recipes/lerasatium_aluminum_nugget_small.json +6240a66254c40457b37011d715efa8bbce64a2a5 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_1_compress.json +ca4701c2d1553a0af5dfc1eb36890f9d0c0bccc4 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_1_decompress.json +7abe29b5a828e80340de6d6c2f5f3c60427c4821 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_2_compress.json +115a75a8eb6ebfd004ed6dab348d638d020a845f data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_2_decompress.json +3f2b79869bea693065702782ce6c3c9c9df1161d data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_4_compress.json +aa143f0214efab3c45fe43b14bd14221edd802f6 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_4_decompress.json +a4e13ceec69002710c1d7adebb619cd3821cd42d data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_8_compress.json +cad94127f54253d69e3e9cdfc7288da64f46a0b8 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_8_decompress.json +0b6e4177d542d8e60096b863dc9546c5ca98806b data/cosmere/recipes/lerasatium_bendalloy_nugget_small.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -2b6ee6ea7c5943616c26a5de14e68e1616b9e9f9 data/cosmere/recipes/lerasatium_brass_nugget.json -7df022be3a0ba0deb4c3edc1f9b06f014025c917 data/cosmere/recipes/lerasatium_bronze_nugget.json -7bdbb1179fb7f1c3db04f0e7661688c1712824ff data/cosmere/recipes/lerasatium_cadmium_nugget.json -c0af9f8f077236b3b4bdec8c49e80f38bedc4c22 data/cosmere/recipes/lerasatium_chromium_nugget.json -070bf95f052acdd4ce8ca5aaec597db76744759a data/cosmere/recipes/lerasatium_copper_nugget.json -dde47d6010d1469830519749295934bc964eb4fe data/cosmere/recipes/lerasatium_duralumin_nugget.json -07440a499f3a0aaa84241f058fdda6cec1a22cf2 data/cosmere/recipes/lerasatium_electrum_nugget.json +2ae669fd16e2e46fb0aa300a4a162745f49bdf9d data/cosmere/recipes/lerasatium_brass_alloy_nugget_1_compress.json +94bdc0e31ce97a5a1967122586af148c0dd704ec data/cosmere/recipes/lerasatium_brass_alloy_nugget_1_decompress.json +f3167f2bd9fc0c66d65139c87ba3763c3aa5f0e2 data/cosmere/recipes/lerasatium_brass_alloy_nugget_2_compress.json +69de08ade4f41b3c106e34fa7e419204535a5290 data/cosmere/recipes/lerasatium_brass_alloy_nugget_2_decompress.json +ed88684c5f4e498aab482c06d40c79ff595ed82d data/cosmere/recipes/lerasatium_brass_alloy_nugget_4_compress.json +9d824d0311ac7eff35cdcc830cd7be03824ecfb9 data/cosmere/recipes/lerasatium_brass_alloy_nugget_4_decompress.json +255060c7ff738f9e8f726758b4c919a7d893b237 data/cosmere/recipes/lerasatium_brass_alloy_nugget_8_compress.json +46ee08f797aaa2070737463587ce506c8cf1d1ce data/cosmere/recipes/lerasatium_brass_alloy_nugget_8_decompress.json +bc1a97c042172cffd1727f21bcdd9b888214a947 data/cosmere/recipes/lerasatium_brass_nugget_small.json +fb606c36a95c10d8bb7182285a67675872837832 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_1_compress.json +ac6ba070929ecb0dc9ee0fe1f97365200d9be0af data/cosmere/recipes/lerasatium_bronze_alloy_nugget_1_decompress.json +01d70f87145bafbcc6c644cbef8e6fdea6fc0dc1 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_2_compress.json +641cd1fc146e6507229f9c7f36efb76107d4bba9 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_2_decompress.json +2226b538fd042c14113624878fd2b53e0372ae6c data/cosmere/recipes/lerasatium_bronze_alloy_nugget_4_compress.json +f9879bdd05203775cb9f24d4a1adf31f4bb4c777 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_4_decompress.json +ae88c3552ee5462424b1f44f89bc41238f85d8f4 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_8_compress.json +1b256f6a59b7cbea8e399bfcdb55b82745f4b770 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_8_decompress.json +b7c5b4d6f847ded6d6f5bd258c4a395302e4ca5e data/cosmere/recipes/lerasatium_bronze_nugget_small.json +574dfd6488a2743910ef071e4ac38f36f57664b5 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_1_compress.json +c95688c6695b91d8bdde7e137cf5876497bd8df9 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_1_decompress.json +d1f47e2a087874ba5b8c904a4f6c18075f4ffe5d data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_2_compress.json +c58449df62b4cb54d772a54e7643549a7e3676d6 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_2_decompress.json +263f5eda1c5079feaa6c67488ebc0fe34b27bec8 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_4_compress.json +7a64bbc73fc788a68c89370192466a1d9b1e1411 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_4_decompress.json +4a3eb2c6d95fbbb0a88d81f694c30fe4030b96ce data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_8_compress.json +03c0632bb39b41efa4bd4182e85c4d90c6a0cd88 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_8_decompress.json +a4093f65b258e77aa5f6015c2d6327d003c107df data/cosmere/recipes/lerasatium_cadmium_nugget_small.json +1761cbd8a87d510e2a91ea8f7b4a29332dbc216e data/cosmere/recipes/lerasatium_chromium_alloy_nugget_1_compress.json +6bb0bffc0c529bdebc692abca8c74c67f5cffebf data/cosmere/recipes/lerasatium_chromium_alloy_nugget_1_decompress.json +34b2d73c27a4d64f7b4ef570d421c80b21be3ea5 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_2_compress.json +c569f83cdeb635d7c2c4c58c36e35cbb9e0c1869 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_2_decompress.json +96cb75ea2bf7911839ffc5e39c65ec6d0aa0b811 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_4_compress.json +014dad88e044184cb0368fed8de869075c79f95d data/cosmere/recipes/lerasatium_chromium_alloy_nugget_4_decompress.json +47f4f9d34bedd7fd49b49931c493299183f5accf data/cosmere/recipes/lerasatium_chromium_alloy_nugget_8_compress.json +02b163d3ee7c7fdc9a244d715f555049abf4da0d data/cosmere/recipes/lerasatium_chromium_alloy_nugget_8_decompress.json +9ba041644cd0663ca4e240fcb97ef73afe4a0241 data/cosmere/recipes/lerasatium_chromium_nugget_small.json +ce493e50a5f267e742640dc2611e2c175602ec0f data/cosmere/recipes/lerasatium_copper_alloy_nugget_1_compress.json +205fce8c34568c78dcacaed7d2f1c1764d2da1bd data/cosmere/recipes/lerasatium_copper_alloy_nugget_1_decompress.json +4039f2ad8e7f781da1315336d3da1a6698a4f0d3 data/cosmere/recipes/lerasatium_copper_alloy_nugget_2_compress.json +ad80e5f0c125853d48f9e34bfda068325050fe76 data/cosmere/recipes/lerasatium_copper_alloy_nugget_2_decompress.json +8a8ebc63f53a61a8b07cb4169f7130a8a77e8897 data/cosmere/recipes/lerasatium_copper_alloy_nugget_4_compress.json +67328f3f0813749512dce4ce01af5203af804ac8 data/cosmere/recipes/lerasatium_copper_alloy_nugget_4_decompress.json +563e8b9319ec756eee7129fd7214df3537126426 data/cosmere/recipes/lerasatium_copper_alloy_nugget_8_compress.json +a8d01e657466c10faf5b8ff6fc4bd55dd7bc6420 data/cosmere/recipes/lerasatium_copper_alloy_nugget_8_decompress.json +8ef96b5b31056ae2023eb10b983561ee57dc05d5 data/cosmere/recipes/lerasatium_copper_nugget_small.json +17631cea355a087056b871aa5d4b272174ea88eb data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_1_compress.json +bd82fac616cc3afed9e03be63ae9dd458bbf6f3e data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_1_decompress.json +e6be9d7038106d2b995f7bd95197e000452515a1 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_2_compress.json +7fdc4cdb037b7accb9becc7648a7774a9b63cecc data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_2_decompress.json +0cd89a219c661d29f8dac4279b6e3784118e4cee data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_4_compress.json +20cc6ff9a1c5ad50fa0c1c9898ff59b77b63166e data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_4_decompress.json +9468c175e84c18dac5aeb5647a51b1004adbcdd5 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_8_compress.json +3a46affbbd430325867fbbcaff77d6d3d315ce68 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_8_decompress.json +f39e19941b862496a02bfa1518d8f06edcde3c24 data/cosmere/recipes/lerasatium_duralumin_nugget_small.json +7e570b132d383f287f3b5f8d09ec8ceb82538448 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_1_compress.json +376fb044be5fd6318cecabf69dce4fd145a05870 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_1_decompress.json +eb5927069b181e4a4405a1ec49f177532671c678 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_2_compress.json +eca9510e6afe7399a9c832f493db1b736d0769dd data/cosmere/recipes/lerasatium_electrum_alloy_nugget_2_decompress.json +92c8d747c6791376ce785cb733c4bce24b359860 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_4_compress.json +e5ddc4d5d64cdd43305a08c8ced21584bdd94c5c data/cosmere/recipes/lerasatium_electrum_alloy_nugget_4_decompress.json +ed8ad5407846bc9c29cb6d202fa9ffc3387c9a33 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_8_compress.json +d0ab464332e60b8c675f60b10d7eefe0ee9222e1 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_8_decompress.json +bee974e3f45590535e1df619b9370e4cc6cc3230 data/cosmere/recipes/lerasatium_electrum_nugget_small.json f60b76ba50426d553767f504583a83a357e75514 data/cosmere/recipes/lerasatium_god_nugget.json -6264f4b39324d5aa026a3ce8294d57dcc8f8b08a data/cosmere/recipes/lerasatium_gold_nugget.json +5f874f16a3143ba1c22c882f8e577afb0c9a979c data/cosmere/recipes/lerasatium_gold_alloy_nugget_1_compress.json +b4b5824139800877cdcf1a96944ab86daf36cbc4 data/cosmere/recipes/lerasatium_gold_alloy_nugget_1_decompress.json +b54966fb256bab0f051bfb267386ed2fc49253e8 data/cosmere/recipes/lerasatium_gold_alloy_nugget_2_compress.json +890ddfb07df73c0e2467754159997aeda52f397b data/cosmere/recipes/lerasatium_gold_alloy_nugget_2_decompress.json +d111133b3d111e79b1bd4252e10ee6b628afe43d data/cosmere/recipes/lerasatium_gold_alloy_nugget_4_compress.json +69fd2169ffd35a72f57d956a88a3e8b1c37d7766 data/cosmere/recipes/lerasatium_gold_alloy_nugget_4_decompress.json +91693e34a8aa96c2f7535bed7c5220085a1ebb3b data/cosmere/recipes/lerasatium_gold_alloy_nugget_8_compress.json +53b52ba651d3be601dc8311aaaa6b10ec8a5fade data/cosmere/recipes/lerasatium_gold_alloy_nugget_8_decompress.json +71ce17fc295e1eb65b7225645aaec055a1578bda data/cosmere/recipes/lerasatium_gold_nugget_small.json da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json -3d359ee7a7b834e8a75a37cfedcbbdf8f4e8f604 data/cosmere/recipes/lerasatium_iron_nugget.json -532a5a38b2dd5df91315a8814114887bae55cc37 data/cosmere/recipes/lerasatium_nicrosil_nugget.json -a86e063c1b86cddf781ec28d1efbbf9f0cc22b7b data/cosmere/recipes/lerasatium_pewter_nugget.json -b8b029b5922d27a52017d7545c4ca6eb5f4c7619 data/cosmere/recipes/lerasatium_steel_nugget.json -9cc015f307c6c45193f0eed458f80fb50e4a0734 data/cosmere/recipes/lerasatium_tin_nugget.json -ec4427e13ebd96e36d00fe99f633a7398cf083f9 data/cosmere/recipes/lerasatium_zinc_nugget.json -b001df3f8215965f009dcbced9c76a023f490c96 data/cosmere/recipes/lerasium_aluminum_nugget.json -d2464258a832b3e30c5f8d278bb113ac604740ed data/cosmere/recipes/lerasium_bendalloy_nugget.json +20b686e05824f003d6f1748dfc6a17f5d8c49fef data/cosmere/recipes/lerasatium_iron_alloy_nugget_1_compress.json +93081145bc7c3453afc4c44d50e3460e325a7452 data/cosmere/recipes/lerasatium_iron_alloy_nugget_1_decompress.json +6b729c8c5f1425d5b71e43695907a4791a1214e4 data/cosmere/recipes/lerasatium_iron_alloy_nugget_2_compress.json +ea1080658aa6c6aa15d6b8af8b97bb0994ffe92e data/cosmere/recipes/lerasatium_iron_alloy_nugget_2_decompress.json +faeeb956c6410b77ce3349ba8e9aae22a1e4ff33 data/cosmere/recipes/lerasatium_iron_alloy_nugget_4_compress.json +04ab2014d5857096be717914c332b9379a664b35 data/cosmere/recipes/lerasatium_iron_alloy_nugget_4_decompress.json +dd368e1a44d2442555c8d1de4268d40aba6f2fe0 data/cosmere/recipes/lerasatium_iron_alloy_nugget_8_compress.json +59c91251af31c9b5a9afab8698c3967741ba998f data/cosmere/recipes/lerasatium_iron_alloy_nugget_8_decompress.json +c21ea46cefdb4f341126cabc00d6060ccf052fb8 data/cosmere/recipes/lerasatium_iron_nugget_small.json +0c5cb6cbdfb4e95a1ca14550957e8436dff4fd09 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_1_compress.json +e5d0893030bf7c959199f66303e72f5ae00f0aa3 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_1_decompress.json +0b8b665c5ef84d98b7ba1ae77151843c45dca479 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_2_compress.json +f28dc768f2c8f11c68b91fa2592694a33ee4a5b4 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_2_decompress.json +b81ad705d99e0a2af2706ae67695602da25f6068 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_4_compress.json +cbd86ac72f250ac3e9c98f2bb671d6ee5e9736e3 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_4_decompress.json +3fab4c454d1ceb4fe57336040155ef0720ffbd78 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_8_compress.json +4ee4a36d1d4c1b942d86bb148a2e11b3c59e1029 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_8_decompress.json +9b7ea045793cd3dbb4963c80df20fb55deae9749 data/cosmere/recipes/lerasatium_nicrosil_nugget_small.json +b7c07758e42ccf57c031066ea4e1d0a33d53ba1f data/cosmere/recipes/lerasatium_pewter_alloy_nugget_1_compress.json +cd309479d5d96d23ab4ef4b8956e558c7e1df343 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_1_decompress.json +604dee0240d2044f17bd8e379f820744abd51d40 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_2_compress.json +21b660cae99e9d16184d97d9e1111e728311e313 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_2_decompress.json +1e6c3e7b5eb9e469bf4d74281b1e235459397472 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_4_compress.json +8f957d0c825ab0f998d568bc5821ff570e118742 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_4_decompress.json +771409ff925e787457c1733963684a527b1ecfcf data/cosmere/recipes/lerasatium_pewter_alloy_nugget_8_compress.json +46139a6466b5a93aa200bcbc97cc13ebf69401fb data/cosmere/recipes/lerasatium_pewter_alloy_nugget_8_decompress.json +1cc188492ae3eef4f4fca08ddd1691fd39b220ad data/cosmere/recipes/lerasatium_pewter_nugget_small.json +60bbe8f04d35628d9d34ed2420983fc1f294579d data/cosmere/recipes/lerasatium_steel_alloy_nugget_1_compress.json +81d93bcecdafd05b03f3105273ebdf60676cc502 data/cosmere/recipes/lerasatium_steel_alloy_nugget_1_decompress.json +4e9bd9c0299f05588d3cf497356fe3755d765815 data/cosmere/recipes/lerasatium_steel_alloy_nugget_2_compress.json +f019ab1c45d82424ed47eeecda08b4a680249b85 data/cosmere/recipes/lerasatium_steel_alloy_nugget_2_decompress.json +8ee52305418843d2dd2c50fbc465fb74e0f0aa26 data/cosmere/recipes/lerasatium_steel_alloy_nugget_4_compress.json +55f548abd58e057c594bc211c6dfd261b8b10d6c data/cosmere/recipes/lerasatium_steel_alloy_nugget_4_decompress.json +0b8c71df6fcb2ec5a2fe3836555c5bf15e12c876 data/cosmere/recipes/lerasatium_steel_alloy_nugget_8_compress.json +5e9c2d8b49fc041e3c1f2cc1e393e8ae235ec51a data/cosmere/recipes/lerasatium_steel_alloy_nugget_8_decompress.json +532b3db57454558a8fecab8be3ed4ce05b4adbcf data/cosmere/recipes/lerasatium_steel_nugget_small.json +286d975c4c303ac588b77ff141b3dc4424cf5ca2 data/cosmere/recipes/lerasatium_tin_alloy_nugget_1_compress.json +31b120968073c43ac55619f4c050e4b62fec2608 data/cosmere/recipes/lerasatium_tin_alloy_nugget_1_decompress.json +f2277e619071b7e22868033d475bac8781338560 data/cosmere/recipes/lerasatium_tin_alloy_nugget_2_compress.json +82ab78a838f3ecbe256fc9326f5cecb95ff5d0c2 data/cosmere/recipes/lerasatium_tin_alloy_nugget_2_decompress.json +3c58645d0923a177db5ceeb5638c938820ddb6c8 data/cosmere/recipes/lerasatium_tin_alloy_nugget_4_compress.json +9cdaa8e5c71d75317a08eb76d75f03f2fdf32b0f data/cosmere/recipes/lerasatium_tin_alloy_nugget_4_decompress.json +c3a416c9308a916660e1c1303775ed81205aad1f data/cosmere/recipes/lerasatium_tin_alloy_nugget_8_compress.json +95ce4904037b09d0b5917898e175accc8186fd52 data/cosmere/recipes/lerasatium_tin_alloy_nugget_8_decompress.json +cea07251b8b35fc6fc455624f7af7a8c144b85e9 data/cosmere/recipes/lerasatium_tin_nugget_small.json +b625626933ac97bc377bfe1270fa6f29da1e6948 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_1_compress.json +014a042b1dda9c8451857a05dd45e904245eada4 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_1_decompress.json +90c12cf73aa808511b1b6b65575bed0b1e5a4e78 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_2_compress.json +55983e031aeaeda3ba364a27ef11872ccc73387f data/cosmere/recipes/lerasatium_zinc_alloy_nugget_2_decompress.json +7605444ac231baa3fc9b5896ddbe480e5b4d5348 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_4_compress.json +4e34fcd0316f6ee1034ab985b157be8adba4726f data/cosmere/recipes/lerasatium_zinc_alloy_nugget_4_decompress.json +aef913824e06d9d87bb6f67f4199b2c8db654c61 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_8_compress.json +6c9c00393326794b96ca7b30838cfca063884f95 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_8_decompress.json +769708c9bc2de8b4e8076becdacc1741fea2e0f2 data/cosmere/recipes/lerasatium_zinc_nugget_small.json +3186df9b9f7cb53c435c2eb6130ad4a8b3819f75 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_1_compress.json +c1cf96d42fbc817e07fb201873af8aa23005e5b9 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_1_decompress.json +a8c18414d2884cef73122ca650f9e286b8dee0c1 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_2_compress.json +0398490c0541faaf01cc927a1f3f0fe6f93e82bd data/cosmere/recipes/lerasium_aluminum_alloy_nugget_2_decompress.json +4e9d53ddee84001fb36617d050034b2b3b8bb416 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_4_compress.json +e44b86836eccdbe91e7528347ec8087aa9424806 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_4_decompress.json +dbc63dd637dc756d19700f416ad9002d5db37443 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_8_compress.json +daa3681ec288cd9a6c05421ebac6a3e7cdc53d40 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_8_decompress.json +48f7c92918e13cdb7c8da6ee5479d30ecc8c1fd5 data/cosmere/recipes/lerasium_aluminum_nugget_small.json +6461e7cc0154c0b51cc79b63c748e75a51e75b46 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_1_compress.json +01859b3a653278d495543c08c9d0e9825095bf92 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_1_decompress.json +f590267997af7840e1832400f4ed8ec971960f27 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_2_compress.json +49b081c8f85124abf4ee5a591f7b166d2bee3b85 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_2_decompress.json +71c8a89f88fedb9cbd39c1f347cf03a98eac5eae data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_4_compress.json +e3be355fcc4eebfcadc2e14dcf4421bf18979ee1 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_4_decompress.json +561223aad22e3e594ede6f7732e50de974a9d86f data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_8_compress.json +2ee42eca8b89a492119532f4683e9a7af4ecdf2d data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_8_decompress.json +7ad1ef04b6fd3ee470556b6adef3d0ec522077c4 data/cosmere/recipes/lerasium_bendalloy_nugget_small.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -4d252307c4a6e45e1024e262133e7bd2cb229fc6 data/cosmere/recipes/lerasium_brass_nugget.json -8fe05981943d44ba99a87aac33495af14c845477 data/cosmere/recipes/lerasium_bronze_nugget.json -893e7382a068c97568e55ebadd76ec785e20a322 data/cosmere/recipes/lerasium_cadmium_nugget.json -c77ae68521061c8357302cbe237b71586bd635e8 data/cosmere/recipes/lerasium_chromium_nugget.json -c34582a3acec2919e6aa73bc8c23a881d0d8c4e9 data/cosmere/recipes/lerasium_copper_nugget.json -78b8e6eb2e851033a3227b91cc956043292eec00 data/cosmere/recipes/lerasium_duralumin_nugget.json -4481f036adb77a5d1069fcaedbedf7c4b9d88707 data/cosmere/recipes/lerasium_electrum_nugget.json +15e78b65ab7e2e901d565d0ab349373b4e50674c data/cosmere/recipes/lerasium_brass_alloy_nugget_1_compress.json +dbe19f89be31ac16280a1ab4d8a4410503c78547 data/cosmere/recipes/lerasium_brass_alloy_nugget_1_decompress.json +62b5a12070014bb6acbb215f3f3bf3bce067ac0d data/cosmere/recipes/lerasium_brass_alloy_nugget_2_compress.json +989133bea691f4afd98d0b782a4b096e7f0058de data/cosmere/recipes/lerasium_brass_alloy_nugget_2_decompress.json +6e471825ea0606f48e7fcc9ba022651f51f1b616 data/cosmere/recipes/lerasium_brass_alloy_nugget_4_compress.json +342db7eb0575de57c5f25d2ee012459ee7301bd0 data/cosmere/recipes/lerasium_brass_alloy_nugget_4_decompress.json +120bad3a0d1c241a5993be4d9977f9e10be23566 data/cosmere/recipes/lerasium_brass_alloy_nugget_8_compress.json +8d89273f7c746ea388e0f8b70c29dce493de5e1a data/cosmere/recipes/lerasium_brass_alloy_nugget_8_decompress.json +a0a8078694aa153a2240b339d4492ac32d95afa0 data/cosmere/recipes/lerasium_brass_nugget_small.json +3a91de4b15e9f5689aa99da63a451e9a303430e0 data/cosmere/recipes/lerasium_bronze_alloy_nugget_1_compress.json +ab6f2832b2f99502eb24f38f36fef73787f0366d data/cosmere/recipes/lerasium_bronze_alloy_nugget_1_decompress.json +40d463274f763f007917d973f80d6033d49c1453 data/cosmere/recipes/lerasium_bronze_alloy_nugget_2_compress.json +7e29d56841c631fc9598e523627edfd4881471ee data/cosmere/recipes/lerasium_bronze_alloy_nugget_2_decompress.json +22789e2c60ded48cec21f556529878b1be72cec1 data/cosmere/recipes/lerasium_bronze_alloy_nugget_4_compress.json +c2a03509df74a01d26e9b30a11f2737210deb7d6 data/cosmere/recipes/lerasium_bronze_alloy_nugget_4_decompress.json +ab7a3aadb545c1bdfaace5e2fc49b1cb74121853 data/cosmere/recipes/lerasium_bronze_alloy_nugget_8_compress.json +08f7e057188f3e0422b9ec51b5b5d0d7b63b79ac data/cosmere/recipes/lerasium_bronze_alloy_nugget_8_decompress.json +e2679afc38ac65c26b43f86fa0d702b7393c9b86 data/cosmere/recipes/lerasium_bronze_nugget_small.json +ce1e6cb66607f3c8299cab65818f20ff35a94677 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_1_compress.json +ba571ce8752a3307153d1bf4421ede486d891f38 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_1_decompress.json +03590c4cc46b9f3ea606f87e1d2c1ca579ba3448 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_2_compress.json +906bc0602a20a4552c690298a5186ad6a5cdc297 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_2_decompress.json +9a2bd30cd1abd867985f9201e50e5dc8043f6921 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_4_compress.json +37fe19e59744ff41c6cf443a6064c18bc85fbbc1 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_4_decompress.json +6ad61396973bca099d19e7d6e4feb427be912a2d data/cosmere/recipes/lerasium_cadmium_alloy_nugget_8_compress.json +8e1536de2ce4dec50891801dd22aa69ffd6caa1c data/cosmere/recipes/lerasium_cadmium_alloy_nugget_8_decompress.json +51efccd94603f73d3e9851b1412784b0883694ab data/cosmere/recipes/lerasium_cadmium_nugget_small.json +34af0c44196df15e00252476aeca1fdf566ba1af data/cosmere/recipes/lerasium_chromium_alloy_nugget_1_compress.json +0aaf0469554b2b8baeb7e70cecea63a77994b7f2 data/cosmere/recipes/lerasium_chromium_alloy_nugget_1_decompress.json +62db1d31623ccb3647c66c003b6d83b796e89c78 data/cosmere/recipes/lerasium_chromium_alloy_nugget_2_compress.json +9dda486a90c5e2a45d74fd4a59a5d52daf611fab data/cosmere/recipes/lerasium_chromium_alloy_nugget_2_decompress.json +5eef7f7650c709616a3def516959c0ff0c46bdc5 data/cosmere/recipes/lerasium_chromium_alloy_nugget_4_compress.json +dbf0d3fa87a6e0342cd5aeb99fae3c289907b7ac data/cosmere/recipes/lerasium_chromium_alloy_nugget_4_decompress.json +1671ee519fc62d5925076c1a9608db6e7b13395f data/cosmere/recipes/lerasium_chromium_alloy_nugget_8_compress.json +b7572f137f7f7629efaa6881158d85706bf7b61e data/cosmere/recipes/lerasium_chromium_alloy_nugget_8_decompress.json +a73782042adf901f1715d6b01ef4a5cc492a876b data/cosmere/recipes/lerasium_chromium_nugget_small.json +2af046b3fb3ee1d3da9a7af899aad226aca7209c data/cosmere/recipes/lerasium_copper_alloy_nugget_1_compress.json +d1f23cfe6feceef6b26f10993ec7c27af0312954 data/cosmere/recipes/lerasium_copper_alloy_nugget_1_decompress.json +a1912fc3a630bd1c6981c4ca5a2996e35c4b5a35 data/cosmere/recipes/lerasium_copper_alloy_nugget_2_compress.json +027dcfbbd973a0678f7da41e4fd83dcc0f16e28a data/cosmere/recipes/lerasium_copper_alloy_nugget_2_decompress.json +87ca0605885fe20b866037a43a447dcff51ad5c5 data/cosmere/recipes/lerasium_copper_alloy_nugget_4_compress.json +5808faac8d0dccb5c8d20875b1c544bd9528e30e data/cosmere/recipes/lerasium_copper_alloy_nugget_4_decompress.json +3fc63ae4d0aa589c1229d55147f696d1ce41e1cb data/cosmere/recipes/lerasium_copper_alloy_nugget_8_compress.json +df61b4fc0f4c34f9d44868f408e8d7bf0ff3abfc data/cosmere/recipes/lerasium_copper_alloy_nugget_8_decompress.json +d89642c61d1101a7e35cb8cc85f3bdcd4d73dace data/cosmere/recipes/lerasium_copper_nugget_small.json +5d4f2569f66ce2c5a3bc3c8b6e46c6f23c1b6bf9 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_1_compress.json +80d874a6c6afb672196ccebd57432b7d5badd63b data/cosmere/recipes/lerasium_duralumin_alloy_nugget_1_decompress.json +d0c1ecd9c03ce83b4fb39b2f39f6fdabdd2b9997 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_2_compress.json +7ca672baa231d3c9b417f2da32096196d98de265 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_2_decompress.json +43204320379d8ca2f0316aba550d046701dde4fd data/cosmere/recipes/lerasium_duralumin_alloy_nugget_4_compress.json +2aa1cc193c2ad5d55a074247169d1ccb4a89ec46 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_4_decompress.json +40890d9bc7e03ef6f1a5493e1d521b2da8a41a2b data/cosmere/recipes/lerasium_duralumin_alloy_nugget_8_compress.json +ea0300ab4580541a01ae6442104ec0465e3ca907 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_8_decompress.json +1d27a2fb58d8c7b47c08ef72d5d7b939786d00b6 data/cosmere/recipes/lerasium_duralumin_nugget_small.json +56cd3a55fcee033763cf4f3945e5e8c9e4b6d082 data/cosmere/recipes/lerasium_electrum_alloy_nugget_1_compress.json +b88b38756e2b2a2963e42d1355239c387b13db19 data/cosmere/recipes/lerasium_electrum_alloy_nugget_1_decompress.json +93189bf7996724d292a82def0085ea16a013ccff data/cosmere/recipes/lerasium_electrum_alloy_nugget_2_compress.json +e81ced2c812e61897afe382676f2f47413473731 data/cosmere/recipes/lerasium_electrum_alloy_nugget_2_decompress.json +38c8eb024f9cdf99fe3dc4436d80d86aa51592b3 data/cosmere/recipes/lerasium_electrum_alloy_nugget_4_compress.json +e2e0f2e1205d19679fb01fa9445e01c07c64acb9 data/cosmere/recipes/lerasium_electrum_alloy_nugget_4_decompress.json +108d3941c5d96d652af86e424866c6be8953a653 data/cosmere/recipes/lerasium_electrum_alloy_nugget_8_compress.json +477f68ff9368490d114e1a691e884e3fc5230efb data/cosmere/recipes/lerasium_electrum_alloy_nugget_8_decompress.json +c00b54f6c6ef1684aac2d244c3a318bedd19fcfd data/cosmere/recipes/lerasium_electrum_nugget_small.json b2c85cfca76827cc42116718857ad6b72de3092b data/cosmere/recipes/lerasium_god_nugget.json -41615fe934a110a8a1a16bf6f1032157ea3aa4e7 data/cosmere/recipes/lerasium_gold_nugget.json +9af3ad37def6b5189f63781b79811f1ec56e43d8 data/cosmere/recipes/lerasium_gold_alloy_nugget_1_compress.json +b5f197e3842f37695c74ba3e35c570414992a3bd data/cosmere/recipes/lerasium_gold_alloy_nugget_1_decompress.json +232f3e0326cbc42cb5425beb4350f97e51ab007b data/cosmere/recipes/lerasium_gold_alloy_nugget_2_compress.json +5e009133c0fd95444787d15ccedf23fae1f97e13 data/cosmere/recipes/lerasium_gold_alloy_nugget_2_decompress.json +72cb94811e7f74696858843805f956b92b7b8305 data/cosmere/recipes/lerasium_gold_alloy_nugget_4_compress.json +99d4ee1eba033c9d1d846702d53b8b930756a9f5 data/cosmere/recipes/lerasium_gold_alloy_nugget_4_decompress.json +d2634b54dbfd532ec0d4c1a2f2df01633da037b8 data/cosmere/recipes/lerasium_gold_alloy_nugget_8_compress.json +aec0451d3f7bc114fb296226feb922f760f9f355 data/cosmere/recipes/lerasium_gold_alloy_nugget_8_decompress.json +aed63949939f1a5b8e14126d82b887146731b13d data/cosmere/recipes/lerasium_gold_nugget_small.json ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json -6ee3ed105e5bcb8b240d254f0ec389885e6af46c data/cosmere/recipes/lerasium_iron_nugget.json -f501c2a1047372daee27a4d3f6813e7cb10202cd data/cosmere/recipes/lerasium_nicrosil_nugget.json -6b01e1645d1ae90596777e393bf9ed8394228ac1 data/cosmere/recipes/lerasium_pewter_nugget.json -cb1a3fb78007d48444371903db0e6135c96f7255 data/cosmere/recipes/lerasium_steel_nugget.json -f0fabb0f116469a77f82b56e93b7972496ac7849 data/cosmere/recipes/lerasium_tin_nugget.json -63b7aa1bd4bc87a598347b68b94dbbfdde9cfb08 data/cosmere/recipes/lerasium_zinc_nugget.json +03f0af2adf5132062dd46dc8e6edc55e5908c7f9 data/cosmere/recipes/lerasium_iron_alloy_nugget_1_compress.json +3db5182d6dd832044cf87b486ae6ae8abe3216bc data/cosmere/recipes/lerasium_iron_alloy_nugget_1_decompress.json +663cd5d804b85ec05313f4e1e3fa9b16161ddd59 data/cosmere/recipes/lerasium_iron_alloy_nugget_2_compress.json +1c49821c9e1785de48a00ba40d96031c2dbc7aac data/cosmere/recipes/lerasium_iron_alloy_nugget_2_decompress.json +c9cded7129d77cc6bbfa776062d078b3e0c280c7 data/cosmere/recipes/lerasium_iron_alloy_nugget_4_compress.json +99db414b4e30256c0f0c99f87c6d84f443fa791b data/cosmere/recipes/lerasium_iron_alloy_nugget_4_decompress.json +db9d28f40788e37a63f89caa82d5ba59bc1be163 data/cosmere/recipes/lerasium_iron_alloy_nugget_8_compress.json +1fd2607d46fd613df766155da467af24b1156548 data/cosmere/recipes/lerasium_iron_alloy_nugget_8_decompress.json +348145531311fbf9339ac706c4a79ab726202cf6 data/cosmere/recipes/lerasium_iron_nugget_small.json +b8ec97be11c4b13d7c075d2a429271cdfd55e6dd data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_1_compress.json +ba9eecea7c40cbcb1728b2ef87f503620c880aa1 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_1_decompress.json +0877f921ea2ed2b485bf8acc74e9d418929b3fe5 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_2_compress.json +bf1462d1c5f3104c9ebdef3b011d3bbe1c8b13aa data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_2_decompress.json +4e56a6a11120355cd3e00e361fbe30db0a10dd9e data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_4_compress.json +a01c73556c43f32d514ee1bbb3bda167def0fde1 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_4_decompress.json +770d90880aeea990f03af51a30c52752e2358abb data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_8_compress.json +88c127e85965543037ba45bfc6e8d5a5732223b7 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_8_decompress.json +8762f5d9dfa9b1bfad3872d9318f32c8d81c4bf6 data/cosmere/recipes/lerasium_nicrosil_nugget_small.json +f11ec1b82ea4a85884aac49a8147a1d2e7ca1f90 data/cosmere/recipes/lerasium_pewter_alloy_nugget_1_compress.json +94fd22357ee6ae75fe60761c69b462640c711e80 data/cosmere/recipes/lerasium_pewter_alloy_nugget_1_decompress.json +ff65d2def48be4a8a3e5ca9780bc8e2892380f15 data/cosmere/recipes/lerasium_pewter_alloy_nugget_2_compress.json +17cf482d5e6e7a5ac26d5b8358fa16a1c33e9565 data/cosmere/recipes/lerasium_pewter_alloy_nugget_2_decompress.json +2c725ca65ab39480d89193b8ae4d82f0f011a029 data/cosmere/recipes/lerasium_pewter_alloy_nugget_4_compress.json +fdef5b21d12bbd562e27b15a7a7cc1d84d140efd data/cosmere/recipes/lerasium_pewter_alloy_nugget_4_decompress.json +ff9cbd09ff48a19f510a502d4c6a61090c891f99 data/cosmere/recipes/lerasium_pewter_alloy_nugget_8_compress.json +d0c2b4ef4164d9f992b67b7cffb95512d73dc2bc data/cosmere/recipes/lerasium_pewter_alloy_nugget_8_decompress.json +c943a64e016a05bc42f366cc8a633a56fe2367e5 data/cosmere/recipes/lerasium_pewter_nugget_small.json +9dc2814b9cb3331ff05adfbe55c502f49c64a8f1 data/cosmere/recipes/lerasium_steel_alloy_nugget_1_compress.json +771084ad03f0879dc185cc581f24dc4a9485982b data/cosmere/recipes/lerasium_steel_alloy_nugget_1_decompress.json +541ac6d48eb9ed3c561f256e13a1b8ccf5e76562 data/cosmere/recipes/lerasium_steel_alloy_nugget_2_compress.json +87145659ad71ea19f906dd90004749f6a4ee38fa data/cosmere/recipes/lerasium_steel_alloy_nugget_2_decompress.json +5c7d4999bec6fb8ab236723e4bc65f861376199f data/cosmere/recipes/lerasium_steel_alloy_nugget_4_compress.json +9ede0b8ba8e8640d5d2023366e1675bd1593bbe0 data/cosmere/recipes/lerasium_steel_alloy_nugget_4_decompress.json +beaa0f456375f0b996cde4b0f6883705f1a11379 data/cosmere/recipes/lerasium_steel_alloy_nugget_8_compress.json +d112085af434c9a54b69ad7ebd877055d2ae0725 data/cosmere/recipes/lerasium_steel_alloy_nugget_8_decompress.json +555aa32af3582a874d6fa4405c491dd8f12553c2 data/cosmere/recipes/lerasium_steel_nugget_small.json +c5491246e63974e284ad4c0926a41bfb512fcb8d data/cosmere/recipes/lerasium_tin_alloy_nugget_1_compress.json +79441bdcdc4936abaeb4b56c6ad7cba5f6a30fb8 data/cosmere/recipes/lerasium_tin_alloy_nugget_1_decompress.json +df30b5cccffdd807a720c5dc46d1222e8a12bc6a data/cosmere/recipes/lerasium_tin_alloy_nugget_2_compress.json +9b4b413c46f118e27ed015ec09b9409becb2f7dc data/cosmere/recipes/lerasium_tin_alloy_nugget_2_decompress.json +27a010c19363d23b66ca7d2603a719aae5b0432a data/cosmere/recipes/lerasium_tin_alloy_nugget_4_compress.json +abbc7d92c1d8a9e791f6a7bb722c4d5422469dfc data/cosmere/recipes/lerasium_tin_alloy_nugget_4_decompress.json +08d43d748adf838137b1f0efff806e6c55f7cdb6 data/cosmere/recipes/lerasium_tin_alloy_nugget_8_compress.json +2e43bacad9b5f7a646a0daa38d6c624fcac78de2 data/cosmere/recipes/lerasium_tin_alloy_nugget_8_decompress.json +853133514e4391bbb49f5ff1e7cd7d9713a57d7b data/cosmere/recipes/lerasium_tin_nugget_small.json +2b4b49f35130a19cb25789c959403029534645a2 data/cosmere/recipes/lerasium_zinc_alloy_nugget_1_compress.json +c47a483264b6edb6693482789a60688fccbaf804 data/cosmere/recipes/lerasium_zinc_alloy_nugget_1_decompress.json +3708cf7e0cf71c46cee1b5588376835917574445 data/cosmere/recipes/lerasium_zinc_alloy_nugget_2_compress.json +dcae8225d69b3bb9ffc24edfaa0d2debc6e0e37a data/cosmere/recipes/lerasium_zinc_alloy_nugget_2_decompress.json +3024c43f8600728e0405f13877cd76f8ac5729b8 data/cosmere/recipes/lerasium_zinc_alloy_nugget_4_compress.json +e1f6be9833dd007bba763e83ade1606a72951084 data/cosmere/recipes/lerasium_zinc_alloy_nugget_4_decompress.json +c8b5ac09e56353f44d0fbff3116be4d40ee7c456 data/cosmere/recipes/lerasium_zinc_alloy_nugget_8_compress.json +79c5de94f8771828ac4908a111779aa47a0a6c50 data/cosmere/recipes/lerasium_zinc_alloy_nugget_8_decompress.json +3cc3c56a87df7c51dfacce19778aef035c89577f data/cosmere/recipes/lerasium_zinc_nugget_small.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json deleted file mode 100644 index 09daf340d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_aluminum_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_aluminum_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json deleted file mode 100644 index d6fcbb9b8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bendalloy_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bendalloy_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json deleted file mode 100644 index 99761ce67..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_brass_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_brass_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json deleted file mode 100644 index 8d669304d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_bronze_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_bronze_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json deleted file mode 100644 index 0db730f56..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_cadmium_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_cadmium_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json deleted file mode 100644 index 01642ed65..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_chromium_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_chromium_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json deleted file mode 100644 index 44094eba9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_copper_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_copper_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json deleted file mode 100644 index bb27bdd81..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_duralumin_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_duralumin_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json deleted file mode 100644 index dcd197c74..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_electrum_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_electrum_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json deleted file mode 100644 index 28746a45b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_gold_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_gold_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json deleted file mode 100644 index a83be0732..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_iron_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_iron_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json deleted file mode 100644 index d5864851b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_nicrosil_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_nicrosil_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json deleted file mode 100644 index 2179759a8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_pewter_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_pewter_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json deleted file mode 100644 index 9d8ea4fd6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_steel_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_steel_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json deleted file mode 100644 index 89fc98f27..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_tin_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_tin_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json deleted file mode 100644 index 7165c9385..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_zinc_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_zinc_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json deleted file mode 100644 index eff08ace8..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_aluminum_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_aluminum_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json deleted file mode 100644 index 19fd5dcc2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bendalloy_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bendalloy_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json deleted file mode 100644 index cf2702d31..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_brass_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_brass_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json deleted file mode 100644 index bfd26b0d4..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_bronze_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_bronze_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json deleted file mode 100644 index f7c4955a9..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_cadmium_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_cadmium_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json deleted file mode 100644 index 2bc5692db..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_chromium_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_chromium_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json deleted file mode 100644 index 7765449e6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_copper_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_copper_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json deleted file mode 100644 index 8729b654a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_duralumin_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_duralumin_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json deleted file mode 100644 index 7f4863ebb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_electrum_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_electrum_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json deleted file mode 100644 index d023cd589..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_gold_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_gold_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json deleted file mode 100644 index 60a15bc09..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_iron_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_iron_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json deleted file mode 100644 index 0fcd607d0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_nicrosil_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_nicrosil_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json deleted file mode 100644 index 3d0fea13b..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_pewter_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_pewter_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json deleted file mode 100644 index 2ec7de149..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_steel_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_steel_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json deleted file mode 100644 index 02f1900ab..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_tin_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_tin_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json deleted file mode 100644 index 9605d3fdb..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_god_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_zinc_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_zinc_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json deleted file mode 100644 index d9d087397..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_aluminum_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json deleted file mode 100644 index 82dde95cd..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bendalloy_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json deleted file mode 100644 index 3ed1201fe..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_brass_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json deleted file mode 100644 index 75199efc0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_bronze_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json deleted file mode 100644 index 5e2de8778..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_cadmium_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json deleted file mode 100644 index d42630647..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_chromium_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json deleted file mode 100644 index 9f996a328..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_copper_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json deleted file mode 100644 index 511dc5103..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_duralumin_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json deleted file mode 100644 index 024f7b21a..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_electrum_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json deleted file mode 100644 index aa8817017..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_gold_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json deleted file mode 100644 index 68edcc037..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_iron_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json deleted file mode 100644 index 52c68f402..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_nicrosil_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json deleted file mode 100644 index 3ac256f29..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_pewter_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json deleted file mode 100644 index a93eeb1a0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_steel_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json deleted file mode 100644 index dcad34d61..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_tin_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json deleted file mode 100644 index 65ecfeb70..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_zinc_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "item": "cosmere:lerasatium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasatium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json deleted file mode 100644 index 83aca2ced..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_aluminum_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:aluminum_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;8],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json deleted file mode 100644 index d7552084d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bendalloy_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bendalloy_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;13],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json deleted file mode 100644 index 4ca9d549e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_brass_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:brass_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;5],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json deleted file mode 100644 index 3f71b7b00..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_bronze_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:bronze_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;7],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json deleted file mode 100644 index 6ea0aa7a5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_cadmium_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:cadmium_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;12],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json deleted file mode 100644 index 1b7935cd7..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_chromium_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:chromium_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;10],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json deleted file mode 100644 index e03e408e6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_copper_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:copper_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;6],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json deleted file mode 100644 index fb2b2cb5c..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_duralumin_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:duralumin_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;9],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json deleted file mode 100644 index aac72c3a5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_electrum_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:electrum_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;15],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json deleted file mode 100644 index 7a5154f29..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_gold_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:gold_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;14],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json deleted file mode 100644 index f47c1a918..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_iron_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "minecraft:iron_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;0],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json deleted file mode 100644 index 6e8f39483..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_nicrosil_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:nicrosil_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;11],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json deleted file mode 100644 index 86ebdf081..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_pewter_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:pewter_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;3],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json deleted file mode 100644 index d1ee18cff..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_steel_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:steel_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;1],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json deleted file mode 100644 index d81f3fdc2..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_tin_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:tin_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;2],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json deleted file mode 100644 index 5ad742562..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_zinc_nugget.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "category": "misc", - "key": { - "I": { - "item": "cosmere:zinc_nugget" - }, - "J": { - "item": "cosmere:lerasium_god_nugget" - } - }, - "pattern": [ - "III", - "IJI", - "III" - ], - "result": { - "count": 8, - "item": "cosmere:lerasium_alloy_nugget", - "nbt": "{alloyedMetals:[I;4],nuggetSize:8}" - }, - "show_notification": true -} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index b4ca93368..48f8eb104 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-09T15:19:11.7972445 Curios for feruchemy +// 1.20.1 2025-11-10T18:24:30.0473331 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 5d0cb771f..c01df8753 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-09T15:19:11.8407843 Curios for hemalurgy +// 1.20.1 2025-11-10T18:24:30.0808575 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index fe44775a6..b1edd6202 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,6 +4,7 @@ package leaf.cosmere; +import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.IHasMetalType; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals; @@ -293,13 +294,13 @@ else if(inputMetal == Items.IRON_NUGGET) if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; CompoundTag outNbt = new CompoundTag(); - outNbt.putInt("nuggetSize", 8); int[] metalIds = new int[] { metalType.getID() }; outNbt.putIntArray("alloyedMetals", metalIds); String name = godMetalItem.getMetalType().getName() + "_" + metalType.getName() + "_nugget"; + outNbt.putInt("nuggetSize", 2); NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) .define('I', inputMetal) .define('J', inputGodMetal) @@ -308,7 +309,7 @@ else if(inputMetal == Items.IRON_NUGGET) .pattern("III") .unlockedBy("has_item", has(inputGodMetal)) .resultNbt(outNbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name)); + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_small")); } protected void godMetalNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) @@ -327,6 +328,42 @@ protected void godMetalNuggetRecipe(Consumer consumer, ItemLike .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } + protected void godMetalAlloyNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) + { + if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; + + for(int inSize = 1; inSize <= 8; inSize*=2) + { + for(Metals.MetalType metalType : EnumUtils.METAL_TYPES) + { + if(metalType.hasAssociatedManifestation() && !metalType.isGodMetal()) + { + CompoundTag nbt = new CompoundTag(); + nbt.putInt("nuggetSize", inSize); + nbt.putIntArray("alloyedMetals", new int[] { metalType.getID() }); + + CompoundTag outNbt = new CompoundTag(); + outNbt.putInt("nuggetSize", inSize*2); + outNbt.putIntArray("alloyedMetals", new int[] { metalType.getID() }); + + String name = godMetalItem.getMetalType().getName() + "_" + metalType.getName() + "_alloy_nugget_" + inSize; + + NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType())) + .requiresPartial(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), nbt, 2) + .unlockedBy("has_item", has(inputGodMetal)) + .resultNbt(outNbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_decompress")); + + NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), 2) + .requiresPartial(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), outNbt, 1) + .unlockedBy("has_item", has(inputGodMetal)) + .resultNbt(nbt) + .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_compress")); + } + } + } + } + protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index cb3d7603f..2e78fa7b7 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -23,6 +23,7 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; import net.minecraftforge.common.crafting.conditions.IConditionBuilder; import net.minecraftforge.common.data.ExistingFileHelper; @@ -120,6 +121,7 @@ protected void addRecipes(Consumer consumer) if(metalType.isGodMetal()) { godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); + godMetalAlloyNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); } if (metalType.isAlloy()) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index b92cbcad2..5fc83f053 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -74,14 +74,12 @@ public ItemStack getCraftingRemainingItem(ItemStack stack) { ItemStack out = stack.copy(); CompoundTag tag = out.getOrCreateTag(); - int size = tag.contains("nuggetSize") ? tag.getInt("nuggetSize") : 4; - int newSize = size - 4; + int size = tag.contains("nuggetSize") ? tag.getInt("nuggetSize") : this.getMinSize(); + int newSize = size - 1; tag.putInt("nuggetSize", newSize); - if (newSize < 4) { - out.shrink(1); - tag.putInt("nuggetSize", this.getMaxSize()); - return out; + if (newSize < 1) { + return ItemStack.EMPTY; } return out; From dc638037b0f78ef6e8757ad090c3986f9295c5ce Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Wed, 12 Nov 2025 09:06:21 -0500 Subject: [PATCH 1062/1090] changing how recipes are handled. for the greater good. --- .../java/leaf/cosmere/api/CosmereTags.java | 15 +- src/api/java/leaf/cosmere/api/IHasAlloy.java | 21 - src/api/java/leaf/cosmere/api/Metals.java | 4 +- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 48 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 46 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 1101 +---------------- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 44 +- ... => lerasatium_aluminum_alloy_nugget.json} | 0 .../lerasatium_bendalloy_alloy_nugget.json | 6 + .../item/lerasatium_brass_alloy_nugget.json | 6 + .../item/lerasatium_bronze_alloy_nugget.json | 6 + .../item/lerasatium_cadmium_alloy_nugget.json | 6 + .../lerasatium_chromium_alloy_nugget.json | 6 + .../item/lerasatium_copper_alloy_nugget.json | 6 + .../lerasatium_duralumin_alloy_nugget.json | 6 + .../lerasatium_electrum_alloy_nugget.json | 6 + .../item/lerasatium_gold_alloy_nugget.json | 6 + .../item/lerasatium_iron_alloy_nugget.json | 6 + .../item/lerasatium_lead_alloy_nugget.json | 6 + .../lerasatium_malatium_alloy_nugget.json | 6 + .../item/lerasatium_nickel_alloy_nugget.json | 6 + .../lerasatium_nicrosil_alloy_nugget.json | 6 + .../item/lerasatium_pewter_alloy_nugget.json | 6 + .../item/lerasatium_silver_alloy_nugget.json | 6 + .../item/lerasatium_steel_alloy_nugget.json | 6 + .../item/lerasatium_tin_alloy_nugget.json | 6 + .../item/lerasatium_zinc_alloy_nugget.json | 6 + ...on => lerasium_aluminum_alloy_nugget.json} | 0 ...n => lerasium_bendalloy_alloy_nugget.json} | 2 +- ....json => lerasium_brass_alloy_nugget.json} | 2 +- .../item/lerasium_bronze_alloy_nugget.json | 6 + .../item/lerasium_cadmium_alloy_nugget.json | 6 + .../item/lerasium_chromium_alloy_nugget.json | 6 + .../item/lerasium_copper_alloy_nugget.json | 6 + .../item/lerasium_duralumin_alloy_nugget.json | 6 + .../item/lerasium_electrum_alloy_nugget.json | 6 + .../item/lerasium_gold_alloy_nugget.json | 6 + .../item/lerasium_iron_alloy_nugget.json | 6 + .../item/lerasium_lead_alloy_nugget.json | 6 + .../item/lerasium_malatium_alloy_nugget.json | 6 + .../item/lerasium_nickel_alloy_nugget.json | 6 + .../item/lerasium_nicrosil_alloy_nugget.json | 6 + .../item/lerasium_pewter_alloy_nugget.json | 6 + .../item/lerasium_silver_alloy_nugget.json | 6 + .../item/lerasium_steel_alloy_nugget.json | 6 + .../item/lerasium_tin_alloy_nugget.json | 6 + .../item/lerasium_zinc_alloy_nugget.json | 6 + .../cosmere/recipes/atium_god_nugget.json | 3 +- ...fting_god_metal_alloy_nugget_compress.json | 4 + ...ing_god_metal_alloy_nugget_decompress.json | 4 + ...rafting_god_metal_alloy_nugget_recipe.json | 4 + .../cosmere/recipes/harmonium_god_nugget.json | 3 +- .../recipes/lerasatium_god_nugget.json | 3 +- .../cosmere/recipes/lerasium_god_nugget.json | 3 +- .../data/forge/tags/items/nuggets.json | 46 +- .../forge/tags/items/nuggets/atium_alloy.json | 5 - .../tags/items/nuggets/harmonium_alloy.json | 5 - .../tags/items/nuggets/lerasatium_alloy.json | 5 - .../nuggets/lerasatium_aluminum_alloy.json | 5 + .../nuggets/lerasatium_bendalloy_alloy.json | 5 + .../items/nuggets/lerasatium_brass_alloy.json | 5 + .../nuggets/lerasatium_bronze_alloy.json | 5 + .../nuggets/lerasatium_cadmium_alloy.json | 5 + .../nuggets/lerasatium_chromium_alloy.json | 5 + .../nuggets/lerasatium_copper_alloy.json | 5 + .../nuggets/lerasatium_duralumin_alloy.json | 5 + .../nuggets/lerasatium_electrum_alloy.json | 5 + .../items/nuggets/lerasatium_gold_alloy.json | 5 + .../items/nuggets/lerasatium_iron_alloy.json | 5 + .../items/nuggets/lerasatium_lead_alloy.json | 5 + .../nuggets/lerasatium_malatium_alloy.json | 5 + .../nuggets/lerasatium_nickel_alloy.json | 5 + .../nuggets/lerasatium_nicrosil_alloy.json | 5 + .../nuggets/lerasatium_pewter_alloy.json | 5 + .../nuggets/lerasatium_silver_alloy.json | 5 + .../items/nuggets/lerasatium_steel_alloy.json | 5 + .../items/nuggets/lerasatium_tin_alloy.json | 5 + .../items/nuggets/lerasatium_zinc_alloy.json | 5 + .../tags/items/nuggets/lerasium_alloy.json | 5 - .../nuggets/lerasium_aluminum_alloy.json | 5 + .../nuggets/lerasium_bendalloy_alloy.json | 5 + .../items/nuggets/lerasium_brass_alloy.json | 5 + .../items/nuggets/lerasium_bronze_alloy.json | 5 + .../items/nuggets/lerasium_cadmium_alloy.json | 5 + .../nuggets/lerasium_chromium_alloy.json | 5 + .../items/nuggets/lerasium_copper_alloy.json | 5 + .../nuggets/lerasium_duralumin_alloy.json | 5 + .../nuggets/lerasium_electrum_alloy.json | 5 + .../items/nuggets/lerasium_gold_alloy.json | 5 + .../items/nuggets/lerasium_iron_alloy.json | 5 + .../items/nuggets/lerasium_lead_alloy.json | 5 + .../nuggets/lerasium_malatium_alloy.json | 5 + .../items/nuggets/lerasium_nickel_alloy.json | 5 + .../nuggets/lerasium_nicrosil_alloy.json | 5 + .../items/nuggets/lerasium_pewter_alloy.json | 5 + .../items/nuggets/lerasium_silver_alloy.json | 5 + .../items/nuggets/lerasium_steel_alloy.json | 5 + .../items/nuggets/lerasium_tin_alloy.json | 5 + .../items/nuggets/lerasium_zinc_alloy.json | 5 + .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 86 +- .../main/java/leaf/cosmere/RecipeGen.java | 54 +- .../recipe/NbtShapedRecipeBuilder.java | 97 -- .../recipe/NbtShapelessRecipeBuilder.java | 98 -- .../leaf/cosmere/tag/CosmereTagProvider.java | 19 +- .../java/leaf/cosmere/common/Cosmere.java | 1 + .../common/eventHandlers/ColorHandler.java | 14 +- .../cosmere/common/items/AlloyNuggetItem.java | 72 +- .../common/items/GodMetalAlloyNuggetItem.java | 52 +- .../recipes/GodMetalAlloyNuggetCompress.java | 124 ++ .../GodMetalAlloyNuggetDecompress.java | 107 ++ .../recipes/GodMetalAlloyNuggetRecipe.java | 134 ++ .../registry/CosmereRecipesRegistry.java | 26 + .../common/registry/CreativeTabsRegistry.java | 2 +- .../common/registry/ItemsRegistry.java | 21 +- 117 files changed, 1089 insertions(+), 1615 deletions(-) delete mode 100644 src/api/java/leaf/cosmere/api/IHasAlloy.java rename src/datagen/generated/cosmere/assets/cosmere/models/item/{lerasatium_alloy_nugget.json => lerasatium_aluminum_alloy_nugget.json} (100%) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json rename src/datagen/generated/cosmere/assets/cosmere/models/item/{lerasium_alloy_nugget.json => lerasium_aluminum_alloy_nugget.json} (100%) rename src/datagen/generated/cosmere/assets/cosmere/models/item/{atium_alloy_nugget.json => lerasium_bendalloy_alloy_nugget.json} (58%) rename src/datagen/generated/cosmere/assets/cosmere/models/item/{harmonium_alloy_nugget.json => lerasium_brass_alloy_nugget.json} (57%) create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_aluminum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bendalloy_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_brass_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bronze_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_cadmium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_chromium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_copper_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_duralumin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_gold_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_iron_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_steel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_tin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_aluminum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bendalloy_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_brass_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bronze_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_cadmium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_chromium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_copper_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_duralumin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_electrum_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_gold_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_iron_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_pewter_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_steel_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_tin_alloy.json create mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_zinc_alloy.json delete mode 100644 src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java delete mode 100644 src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java create mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java create mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java create mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java create mode 100644 src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java diff --git a/src/api/java/leaf/cosmere/api/CosmereTags.java b/src/api/java/leaf/cosmere/api/CosmereTags.java index 2cd59f069..f49278a9d 100644 --- a/src/api/java/leaf/cosmere/api/CosmereTags.java +++ b/src/api/java/leaf/cosmere/api/CosmereTags.java @@ -74,12 +74,17 @@ public static class Items Function.identity(), type -> forgeItemTag("nuggets/" + type.getName()))); - public static final Map> GOD_METAL_ALLOY_NUGGET_TAGS = - Arrays.stream(EnumUtils.METAL_TYPES) - .filter(Metals.MetalType::isGodMetal) + public static final Map>> GOD_METAL_ALLOY_NUGGET_TAGS = + Arrays.stream(new Metals.MetalType[]{Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM}) .collect(Collectors.toMap( - Function.identity(), - type -> forgeItemTag("nuggets/" + type.getName() + "_alloy"))); + Function.identity(), // key: god metal + god -> Arrays.stream(EnumUtils.METAL_TYPES) + .filter(base -> !base.isGodMetal()) + .collect(Collectors.toMap( + Function.identity(), // key: base metal + base -> forgeItemTag("nuggets/" + god.getName() + "_" + base.getName() + "_alloy") + )) + )); public static final Map> METAL_INGOT_TAGS = Arrays.stream(EnumUtils.METAL_TYPES) diff --git a/src/api/java/leaf/cosmere/api/IHasAlloy.java b/src/api/java/leaf/cosmere/api/IHasAlloy.java deleted file mode 100644 index 786d83d39..000000000 --- a/src/api/java/leaf/cosmere/api/IHasAlloy.java +++ /dev/null @@ -1,21 +0,0 @@ -package leaf.cosmere.api; - -import net.minecraft.world.item.ItemStack; - -import java.awt.*; -import java.util.ArrayList; -import java.util.HashSet; - -public interface IHasAlloy -{ - HashSet readMetalAlloyNbtData(ItemStack itemStack); - - boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals); - - Color mixColors(ArrayList colors); - - Color getColour(HashSet metals); - - int getColourValue(HashSet metals); - -} diff --git a/src/api/java/leaf/cosmere/api/Metals.java b/src/api/java/leaf/cosmere/api/Metals.java index b49b1f976..4fda7e3ba 100644 --- a/src/api/java/leaf/cosmere/api/Metals.java +++ b/src/api/java/leaf/cosmere/api/Metals.java @@ -348,9 +348,9 @@ public TagKey getMetalNuggetTag() return CosmereTags.Items.METAL_NUGGET_TAGS.get(this); } - public TagKey getGodMetalAlloyNuggetTag() + public TagKey getGodMetalAlloyNuggetTag(MetalType alloyedMetalType) { - return CosmereTags.Items.GOD_METAL_ALLOY_NUGGET_TAGS.get(this); + return CosmereTags.Items.GOD_METAL_ALLOY_NUGGET_TAGS.get(this).get(alloyedMetalType); } diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index 8b9d5b3d8..bf2b2a304 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-09T09:23:08.400538 Tags: cosmere +// 1.20.1 2025-11-11T22:17:29.867903 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,10 +63,9 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -0f7cb0dcc4490c84a57d9eeb4666be299f177c55 data/forge/tags/items/nuggets.json +e4cd45631fc5b7c85433869ab6320e7eb3f94d73 data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json -f6a1533771ba2aa37af735c04ee7f5aa3b5cd023 data/forge/tags/items/nuggets/atium_alloy.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json 22febcc73d25eb9144c40bcea5a7d897117eef9e data/forge/tags/items/nuggets/brass.json e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.json @@ -76,12 +75,49 @@ e29935f2c3e81e869de66a8cdac49503e43cd96a data/forge/tags/items/nuggets/bronze.js 88afeca099451118453904d66845c85efe9c94a0 data/forge/tags/items/nuggets/duralumin.json dd30bdf008a620efe87c6c5119f1c2c4f70e4e49 data/forge/tags/items/nuggets/electrum.json ec040e528b1db1332ff6840f0281812e1f7f6b74 data/forge/tags/items/nuggets/harmonium.json -49f4d0043ccf29ff6edeb51ece6f8b3287777060 data/forge/tags/items/nuggets/harmonium_alloy.json 6aa066a9b7a3cbe43e5477bb8f3428e58434c15c data/forge/tags/items/nuggets/lead.json 28030458471611b1614a624b264cdc17fb5c6ab4 data/forge/tags/items/nuggets/lerasatium.json -600ed1e7a82abf3d040b7e6bf181c188b67453e0 data/forge/tags/items/nuggets/lerasatium_alloy.json +0c591c1885a97a8a0fc749e3710c3099fd62f70a data/forge/tags/items/nuggets/lerasatium_aluminum_alloy.json +3b85553cdcf90e3801d2deb3426a20aa2dc1e87e data/forge/tags/items/nuggets/lerasatium_bendalloy_alloy.json +2d035bb181efae04c7e150a7379de56357786a4b data/forge/tags/items/nuggets/lerasatium_brass_alloy.json +04ca19d905145e90142144693d7d0cd0dfe47107 data/forge/tags/items/nuggets/lerasatium_bronze_alloy.json +3e2374ea393ca4d8378b909defe493063a36e711 data/forge/tags/items/nuggets/lerasatium_cadmium_alloy.json +f0ad1c70b81b36e36318c48dfa341b15a053dfa3 data/forge/tags/items/nuggets/lerasatium_chromium_alloy.json +8fe8dbe97eeb441cb3d7eb6e1f97be3e60b846c0 data/forge/tags/items/nuggets/lerasatium_copper_alloy.json +e5e74090442129d6869d00ee3b8385550fe0ba77 data/forge/tags/items/nuggets/lerasatium_duralumin_alloy.json +5891ad56adf9f39847bdd24037a13708c7bee869 data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json +329782cf4387b0e51c09da22d1c4ffdc82f74fd0 data/forge/tags/items/nuggets/lerasatium_gold_alloy.json +513defe3597d314241300a9036fbda39809018cb data/forge/tags/items/nuggets/lerasatium_iron_alloy.json +1e0cb11bb2a3838548f84f1fee4cf0313e1eec9c data/forge/tags/items/nuggets/lerasatium_lead_alloy.json +82e38c315ef29bfdb877c9b45ee1a7e2926be495 data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json +b9c52239df96a8a2eb0a4117bfee1267334bd6d3 data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json +eb0d02802cde497272a11d25057e02aad104fbf3 data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json +13d2bfd8ec393251af811bb08e6f112af100d366 data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json +ce959e39f34aafd112a9cb31ba43c87da078ec3a data/forge/tags/items/nuggets/lerasatium_silver_alloy.json +b8f1072749ad179f202c4b7843afaa81299d2fe2 data/forge/tags/items/nuggets/lerasatium_steel_alloy.json +1ed392bf903455c1112f5382907367f1a3a8a082 data/forge/tags/items/nuggets/lerasatium_tin_alloy.json +6fd9c09ab999ba9eb1d493d733bd79653a1f99c0 data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json 8208cc064a68c06d411c6a9bea026d2d78c38368 data/forge/tags/items/nuggets/lerasium.json -57c2625da0576d6ec77397ff42997d1482d4d7fc data/forge/tags/items/nuggets/lerasium_alloy.json +f995f36d5f06cfd6f89345ea5c521a3bc7f30e54 data/forge/tags/items/nuggets/lerasium_aluminum_alloy.json +2b52560da23d272aeb0ef92a6744ec4fe9d7d688 data/forge/tags/items/nuggets/lerasium_bendalloy_alloy.json +fe0a0deb404227e3ffc43ed21d840554b8417f42 data/forge/tags/items/nuggets/lerasium_brass_alloy.json +22ff4135e0b94e28f7d38a930887edc09893d021 data/forge/tags/items/nuggets/lerasium_bronze_alloy.json +68e17513762ad58ef897dd2a83a86c06c171e094 data/forge/tags/items/nuggets/lerasium_cadmium_alloy.json +8b87aabbe77e9ce18f98330a8135070d87889e3b data/forge/tags/items/nuggets/lerasium_chromium_alloy.json +67d284e7bd227e045e514290f00be3b06bdbd283 data/forge/tags/items/nuggets/lerasium_copper_alloy.json +cc790295eb3e95ed47d6f76109c73f23d84d9e40 data/forge/tags/items/nuggets/lerasium_duralumin_alloy.json +208f863d87e795f095f74db7ba92bd85a0496c47 data/forge/tags/items/nuggets/lerasium_electrum_alloy.json +b327a4b767bddbb0197393e2948aa3c804e90602 data/forge/tags/items/nuggets/lerasium_gold_alloy.json +f279ab5a2e77b9e339817e6c8f0d4f086f135a9b data/forge/tags/items/nuggets/lerasium_iron_alloy.json +f6882c5b8721516b33e18a315524fb04c632eb31 data/forge/tags/items/nuggets/lerasium_lead_alloy.json +cef81922081d764a8009d0839f2a6075d9c91918 data/forge/tags/items/nuggets/lerasium_malatium_alloy.json +90ac78eb6efa63ab805096759d8609ed0cc101a5 data/forge/tags/items/nuggets/lerasium_nickel_alloy.json +d5a9fee1ee9de8e6396ce5d2b6edf40ab0866e9c data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json +a96426ba454efe8bdfd9f4c63449dcfb5fafde05 data/forge/tags/items/nuggets/lerasium_pewter_alloy.json +924ff4d81f72be4f807ccaa15e4c6fb983ad334b data/forge/tags/items/nuggets/lerasium_silver_alloy.json +394d601755fe0e861374bed2135fad7b1a265ac7 data/forge/tags/items/nuggets/lerasium_steel_alloy.json +559f3267451410477472d507195bc6b7d8510bd0 data/forge/tags/items/nuggets/lerasium_tin_alloy.json +31d3eca1e41e21067082c414ee2bed9847fc73dc data/forge/tags/items/nuggets/lerasium_zinc_alloy.json 53af8c89a4a8e6fb7e90668c967801dee236d614 data/forge/tags/items/nuggets/malatium.json ce8ca3009391a6012a898a5622718c1c49c33d87 data/forge/tags/items/nuggets/nickel.json ee2235eeec793fc18a173cfab9939ba12b2beee3 data/forge/tags/items/nuggets/nicrosil.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 3c75c24c1..786a18822 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,7 +1,6 @@ -// 1.20.1 2025-11-09T18:08:07.0512334 Item Models: cosmere +// 1.20.1 2025-11-11T22:17:29.869424 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json -0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_alloy_nugget.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_god_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_nugget.json @@ -26,20 +25,57 @@ d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_bl ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json -4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_alloy_nugget.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_god_nugget.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json 31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/lead_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_god_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json 998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json +d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_brass_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_copper_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_god_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_gold_alloy_nugget.json 7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_iron_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_lead_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_silver_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_steel_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_tin_alloy_nugget.json +65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json 8f9ecdfe13399031e5a39d1145e2866c39a9cf1c assets/cosmere/models/item/malatium_ingot.json f57901c7644ff165eb5c89a41d9f0c69ec03a6c4 assets/cosmere/models/item/malatium_nugget.json d7c618ca7626312d43f57accc1b339af9936a5c7 assets/cosmere/models/item/nickel_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index ec7b05709..dcb6fe353 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,137 +1,9 @@ -// 1.20.1 2025-11-10T18:24:29.8641601 Recipes +// 1.20.1 2025-11-11T22:35:49.293852 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json -030664ad484a9dc1ef31120f6f010794470b3e3f data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_1_compress.json -d7d8b158c37c5cedae6bcddfe7716ae5ec211969 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_1_decompress.json -74f13c3a86217c7ac7b443893c604739d369d59b data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_2_compress.json -05f405de04e38004e4e1d85248ec50d4517ea53d data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_2_decompress.json -1a6058a0bed88043746162149a249e8696ac7f07 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_4_compress.json -0507c1ae25d65503d2d93efdf480bcfe618178a7 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_4_decompress.json -dc133623fd933d65cb3492f4db75c2ccbad19af6 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_8_compress.json -726fa975b66fe0a1a6669e71e8257a5e0ed769a7 data/cosmere/advancements/recipes/decorations/atium_aluminum_alloy_nugget_8_decompress.json -ae381b408dcf0ca66bef710241bab9be846844d4 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_1_compress.json -2314874ab64ee8cb9de3b8c86ae7449ea7f08fd3 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_1_decompress.json -eabf86847d5f3dad76dac99656e512b058eb611a data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_2_compress.json -fb71acd15f204dd93c32de726edbd16747183e34 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_2_decompress.json -93586a55dbcaaa8d0591ea710fb84ee185507e84 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_4_compress.json -601475172e008bfce6e589511a95eb431965424a data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_4_decompress.json -2984169ec9575cd7cf60d2eec9d583bf31e89508 data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_8_compress.json -11134ecf7d9b51e1c7bb1eb1fe3a1172bd46311f data/cosmere/advancements/recipes/decorations/atium_bendalloy_alloy_nugget_8_decompress.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json -9261a3ccbd000beaf1c06a180dae58a24557cb2c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_1_compress.json -1abb7ca667b39c39517ee609dfeff3065846e260 data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_1_decompress.json -d830c0b9cc2c7bbce81e976254b58dc56dc5abcd data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_2_compress.json -5f515f39ab22c5317233a699e4732da93a3dc00b data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_2_decompress.json -ff19c26357856ac6d2337eced1347f2f509e9b19 data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_4_compress.json -262f7e07bd123e4faa06bb11bffbe8056e93323c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_4_decompress.json -c5e6016062c511eb46a39bd8e56ad580250ab49c data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_8_compress.json -737f4051173cde604d6ac2b5bf32dddf3946e71f data/cosmere/advancements/recipes/decorations/atium_brass_alloy_nugget_8_decompress.json -94868a6035cad3b242d93773f300c70b8b76af49 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_1_compress.json -00aa3c667b2cf9c325d18782f44596dcbf198f84 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_1_decompress.json -7776afcc9f139fcb4e395fabd0c3ef183a2fdf07 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_2_compress.json -973240c2bffbe48852bf8b7ee64c1fa02cbd3fe8 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_2_decompress.json -49cc47519901aa27c21001f35bcfa1ea1a14b62f data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_4_compress.json -0cf0f3a6f57bb75b94c94ed774ee1998619ae78b data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_4_decompress.json -59600697419d487ab295a7db7fdeb5fb497539db data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_8_compress.json -0a0c76b4587ff7058336618e9cea9ab575ef90b1 data/cosmere/advancements/recipes/decorations/atium_bronze_alloy_nugget_8_decompress.json -78ed3fd809c88df8390325eb25a2446f7f87418c data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_1_compress.json -9403084809fe677cc89081b86394aaeb443e166f data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_1_decompress.json -373512c25823f4399bb884c23a6014702fb57d31 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_2_compress.json -effa9c8821636e28e22ccf13d6c16ece9ab4d8c6 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_2_decompress.json -1b98fd4f1bfa011c43156a4b469606011d12c627 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_4_compress.json -538c8fc5a4f48d49202b892a44f3387f036f16ab data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_4_decompress.json -4a861bd8cb2509aff5c668b6e87fe65f3b0c4167 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_8_compress.json -66e03c55f8c5d9c961deda1a6f210825ea716926 data/cosmere/advancements/recipes/decorations/atium_cadmium_alloy_nugget_8_decompress.json -6844662affc368493cdcdbd98482428e0bc97664 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_1_compress.json -62d0d78406abab2da4f3e837628bdc5f87bb8a2a data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_1_decompress.json -2e4708e23c6d4d5233905db2e28d78b8d346477b data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_2_compress.json -433e493d778a7a013b3864cfd49038ca1e530bd3 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_2_decompress.json -f93f63bf057c6c3e237f9a22f5829088eb8192e4 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_4_compress.json -f9373a8d4305d632218e2de7d18ed40cd149e8c5 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_4_decompress.json -f7f6c3a74874d8037fae0b528253c23aa44dbf1f data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_8_compress.json -00a6978fdd6858f34e097502c0e4f5468dde43a0 data/cosmere/advancements/recipes/decorations/atium_chromium_alloy_nugget_8_decompress.json -7f65f35a319e18076d419a762a34eaba0619a753 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_1_compress.json -35a3a9d8331a8c4bb0875a2f4258c559bba022fb data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_1_decompress.json -cbb1e26b9f3332e406b420650535a1ba09aa2ecd data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_2_compress.json -76eeff17b9f31b95cbf40dab9674c8b75b4f66a7 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_2_decompress.json -70c89fc837627e589c8180fc8e80ca00451a7d26 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_4_compress.json -3832c4e5faf326c2ccabde530544d854a974bd14 data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_4_decompress.json -bd493f6fe89225c7f1c9f4020a0fdb9123a0500b data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_8_compress.json -f18b18fe2a1e975f6edf3dc3a61094112afbd70d data/cosmere/advancements/recipes/decorations/atium_copper_alloy_nugget_8_decompress.json -1003b7544e11c3574731e194f521106d5ac348cd data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_1_compress.json -c7f3da5823701715a61151cad43fb1ad27bf98dd data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_1_decompress.json -fd861fa439714b0b2174fecdaff3b95966614d82 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_2_compress.json -f3ec2778db41c2bce6b7d899cc97f0a0bb04acd3 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_2_decompress.json -083b5c2bfdd21ad9feafb6a2d4a6dbddf8d2a3a6 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_4_compress.json -6b2d7c3d2f4483be6311c8f32094538e01693439 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_4_decompress.json -26f977d6eaf36fb1ab9d1f87bc5f1d6180ce5183 data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_8_compress.json -22bd1c2cae0ab1834e5d0c224aaf3bcfd63055ad data/cosmere/advancements/recipes/decorations/atium_duralumin_alloy_nugget_8_decompress.json -796469b07887e7dd34d4b3fafc9222df7364dc8b data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_1_compress.json -6a5e55dd3d07056207bd0d9d508440b2c9b4c8e6 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_1_decompress.json -90a92b0f3cd4af8968aa48e5e8e2b69dea9d5101 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_2_compress.json -3fc0f3217c3c9e3f4149aa8cb859eb46e2f826e4 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_2_decompress.json -a3e144797add7663bb34ae6f06b580ef97d3fb89 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_4_compress.json -35d6bf5d710d83633273422bc9b0f8d72428731e data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_4_decompress.json -83d8625d1a0205ad9df564c4a05889c4d9eb6ae4 data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_8_compress.json -a8af95eb64a7023fca6b193b50384fdb5bfd123d data/cosmere/advancements/recipes/decorations/atium_electrum_alloy_nugget_8_decompress.json 48e21abbdd7de3dd40a0200e7b57afc64cddca74 data/cosmere/advancements/recipes/decorations/atium_god_nugget.json -030f01063c96757b9e3fb68384ee36c58e6a0b7e data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_1_compress.json -09d6484139e51d9e4ccfd0e2260068388d5cecce data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_1_decompress.json -d797e28ad05b3b088df84a96068d8ecd6b0534d3 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_2_compress.json -5845eeb0a08482ddcfc48855d4e94073fc4f3e5c data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_2_decompress.json -78a18d43c0ab7706c5da5629c2dd6e6bb677a057 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_4_compress.json -02984214162e9f362e0bcb9c8012a9c3409dbb0e data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_4_decompress.json -2a4b5ecc23c6658564b4daf12e657cbbeed07d8b data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_8_compress.json -b49758f61937d9667ac8f22166e2c85432305764 data/cosmere/advancements/recipes/decorations/atium_gold_alloy_nugget_8_decompress.json 51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json -e87287d533c21c0bafedf67aa91204f32780441f data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_1_compress.json -2cca8389e803ea41b8c3b20f286e1e523a2d13cd data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_1_decompress.json -baf43f3af4fad2f18e22e986b217b264b90bed11 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_2_compress.json -6a1f84ed522799bb1600909324ef0d68cc94c442 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_2_decompress.json -3dc0e0e93277f496f8ce2719ba317ae507ce8c79 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_4_compress.json -aa8a594f5cf2cc83ece548bebfab82c78dcee7c6 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_4_decompress.json -6cf623db5007ef2f43e49d2d6a9cb9dfe49f2b2d data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_8_compress.json -81677df7aa97e81540ace6d9e34ab2a45ee278d0 data/cosmere/advancements/recipes/decorations/atium_iron_alloy_nugget_8_decompress.json -016d2e1ad3299c0d4f101a4995795b59587611e1 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_1_compress.json -bd189db675f94e0428133fb655d5c6220d14214e data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_1_decompress.json -95214b5345f3b6a844f74243ed5759c14133c434 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_2_compress.json -9030c3c69d7f8d2529f9c547cece5cd0b832af9c data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_2_decompress.json -25bbee1047321abd5d4cc1a3beade0ae9e77c5c5 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_4_compress.json -028819dab358e33300974c3d328ce762c4a79e22 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_4_decompress.json -339da4bc49d6cd4651a531eb009984b03be4bb24 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_8_compress.json -d1d9bafa174c6f6e8ec8b09186e19f075ce25602 data/cosmere/advancements/recipes/decorations/atium_nicrosil_alloy_nugget_8_decompress.json -ed8683e7cfb08e3229dee3678487b7ba3d9a14e7 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_1_compress.json -c4e58085130f895ac94cab1871bbfe506e4f4f73 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_1_decompress.json -ada2888b47399736870a61bf1f89f229cc0d8f29 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_2_compress.json -d28fcd7e94816943827e92822392f86fd78cde41 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_2_decompress.json -501d098892ba5ed842c23ca6af3aca4ea4f7fc28 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_4_compress.json -001f8f4812781dc225eb6364572840155eab505c data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_4_decompress.json -570f5029c003ff2ba2120d607b9605a331879b3b data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_8_compress.json -f7613e7e08178353a6e5281c156390585997a811 data/cosmere/advancements/recipes/decorations/atium_pewter_alloy_nugget_8_decompress.json -d79964a80f908043c051a2b4f2dc91d69338eb96 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_1_compress.json -c2c82bc197ed56ca6aafb6b1416fdae4355130fe data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_1_decompress.json -66bf6a714618b061759de820d1901eaf3ae76f82 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_2_compress.json -5f774ee390fc53beea1642b99142a7afed1ef441 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_2_decompress.json -69625bbfb507593ddf3c2ac32f93d08c33b2919a data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_4_compress.json -c1454e089fe76a0f65eec59365a86f3b75625b2e data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_4_decompress.json -bddbfdf40bc853013c54d7f34d1e63c86a6d64a1 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_8_compress.json -3f84e81b2dd5bfdca8376213c29b9bd4b825ce44 data/cosmere/advancements/recipes/decorations/atium_steel_alloy_nugget_8_decompress.json -f2e3e582da7161434fa0c5418338c7e03443a30b data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_1_compress.json -65c16d68d292100eb0221571da1224517329441e data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_1_decompress.json -ea5da7296051bef3017ff088f223c80fa6327c5a data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_2_compress.json -564a7385384f7cedcd4703c6e2710f4416532b77 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_2_decompress.json -ff72fabe28d6709c41604365e1dad2a7f82f465c data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_4_compress.json -fdcefb414612dafd9bec8bc6bad1fe4c770be219 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_4_decompress.json -2e3f85bb383dc5a93261ce02d7621941195669e0 data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_8_compress.json -bd320265d3f87d9c691b9578a9c49b7ae23a4f0a data/cosmere/advancements/recipes/decorations/atium_tin_alloy_nugget_8_decompress.json -f24d93d7b07586d7164adef998c89d9dcbd7a77b data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_1_compress.json -c1ac152132907696688f7913cb261e23d9e15eb9 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_1_decompress.json -7b4bc89fb61ed66070e097e1f518a0ecd1b260ed data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_2_compress.json -fd9ed07560435fc7514a21d1f85a45ce92e453f9 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_2_decompress.json -4a2ffe3883138e0d83334b9019b8cdd4887bce0c data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_4_compress.json -54568963d382d0d43e3826a0638189d8f618872a data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_4_decompress.json -8dcbec71db41e1c92a1bfe5ac6573259759ac9b6 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_8_compress.json -31f1099c03ea4f8aabc7269e375d8c05214326d1 data/cosmere/advancements/recipes/decorations/atium_zinc_alloy_nugget_8_decompress.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -146,433 +18,17 @@ f65fbb945ce9617744bd8294cd8443de09d378fc data/cosmere/advancements/recipes/decor c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decorations/duralumin_ingot.json 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json -ebc34025ddb97c0a442fd622217dacbfdd554fa0 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_1_compress.json -e3ff2641417222dae44b0b8e87c14eedb12e07e5 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_1_decompress.json -17faf4efd9fe652ca52fd3615e735411c28ea0b5 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_2_compress.json -436b390fb8b16f2cdaa2cc663fe2110d174d5634 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_2_decompress.json -b3819eefb623309f51de16d19336569958879aeb data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_4_compress.json -25ce3d753e609545b6dde7f215b34464121a9050 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_4_decompress.json -bd8cc68b18e9569c163fbcedf97ee663dbec5805 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_8_compress.json -f5b0f7f10d06d3bd8034077609e18645ed33d616 data/cosmere/advancements/recipes/decorations/harmonium_aluminum_alloy_nugget_8_decompress.json -b7bcbd5388d16d3bd033293ff85651e9d3dda427 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_1_compress.json -778b3207b6a39e5c46ec6db3da3534abd8948b00 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_1_decompress.json -f4d118198238b4a9d5f169888683dada6ee56e54 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_2_compress.json -e4a1f2f5feb2cb97ab858dfb1a4e596290b3c52a data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_2_decompress.json -d4be99c83da0d784eb41500043268cb7239abc7e data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_4_compress.json -2384933e77e11d49ff16ec0a0dd5892ece58b354 data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_4_decompress.json -fd1b95b8e889b6ab36ae92e362b3dcc604435c7a data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_8_compress.json -d0db93db1bb87aa1ba204297ad85c49a3d30775b data/cosmere/advancements/recipes/decorations/harmonium_bendalloy_alloy_nugget_8_decompress.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json -20bed6c62899af53f6baed4055d2234b157a4727 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_1_compress.json -c4935b5dd8c5e864232be08e836081d09abb1c18 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_1_decompress.json -b5b5b7f870d5cc539e48d373ff8b43f9a2f6db59 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_2_compress.json -a09777ff5d171bfd9e21736a71482c9cad745c97 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_2_decompress.json -8ddf790893cee6b04428202d50686640991cc983 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_4_compress.json -e57aff8aeb23b70ba76029f3a20f129f87aa0e53 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_4_decompress.json -ea46a6aee548bbbb4ac2b542a91f887061224dc8 data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_8_compress.json -a72bef1d80892e418ea05ebf071e473611c5dcef data/cosmere/advancements/recipes/decorations/harmonium_brass_alloy_nugget_8_decompress.json -e10f51ba11235e4dfbb8add7fbcaf04d3781be28 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_1_compress.json -317d011b94f9bcc57ff59acfb81285df649ea739 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_1_decompress.json -abdddd50ecc74eae62ea020f4ca2f81500e2a77f data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_2_compress.json -bd60d56171f94902000f374cefd3cbe8f2d481ff data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_2_decompress.json -0962cd1dfc75b45a4e531a7f3cf1517ca63fc243 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_4_compress.json -8ecb6ec36be8ecea33a02004c1697a7dcf666a60 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_4_decompress.json -8fb28eb991a0aef89ab79c89660c3ad6a061ea82 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_8_compress.json -87ffb12f809e15e52c6130870643b7df7240b006 data/cosmere/advancements/recipes/decorations/harmonium_bronze_alloy_nugget_8_decompress.json -9b1a7ac6642abe73b002420f5507ab85856cde29 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_1_compress.json -0e66517ebc86d420891a48dea9f06dca028366b4 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_1_decompress.json -9f692b1e766cd2968095b76b3785a42a5d78840b data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_2_compress.json -3c5cad8a662ce2a1e52ed9f7178f74cac25f4e4f data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_2_decompress.json -fe201f8e0059abede76c23d7a00432fcee5a634f data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_4_compress.json -b2cd6188eb37914562b32cde1140f33057620b42 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_4_decompress.json -a1bc1278b0263ac44a3bbabe435cda5a90d3d2d0 data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_8_compress.json -298c654b9494cc9e46c1d25ca19cbadebbbc5bef data/cosmere/advancements/recipes/decorations/harmonium_cadmium_alloy_nugget_8_decompress.json -f1139740bb9b91e9d0e41a90b9aa6732dfd58f01 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_1_compress.json -381faa5591d6cbe6ef6c851f7e8d592bd471b201 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_1_decompress.json -105693e3183d5b61f11297070bea7d264237e92d data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_2_compress.json -0f4bc19a3fd2676b709d1f37f191f39c83bba151 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_2_decompress.json -1908aa14749da9c4e97bd322db83d37ffdb75914 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_4_compress.json -b6440086bc4d307e25f93900353a22fb3f1f1791 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_4_decompress.json -b204fc6fdea4d4e8ee7c67857778113d0487dd49 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_8_compress.json -b7590a83047f87c3f2a38e2c2e2f01613bec56a6 data/cosmere/advancements/recipes/decorations/harmonium_chromium_alloy_nugget_8_decompress.json -4776ad03f0fd4c57acef3a9a500a1d7f4b8a59a2 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_1_compress.json -24a72a41191da7750ac2453a7067c68bba35917e data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_1_decompress.json -e502cf9776607cdc955337e35c829332e1440a6f data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_2_compress.json -663e5cc6219c1c1a5be181d7dc45263d8c8fecf5 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_2_decompress.json -f022ec9ebbe1ebb8d36a9749fc5fded807690db9 data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_4_compress.json -eeacf91ec1f51e2060da8bec1bf5bd60a632249f data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_4_decompress.json -b6707664cb6e2308138e12900db686320b9b74db data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_8_compress.json -bb28f880288322aabd12a01ad17bd464ac48e6ad data/cosmere/advancements/recipes/decorations/harmonium_copper_alloy_nugget_8_decompress.json -d1dbf1a97430274cd46616ddfda178392b5315ea data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_1_compress.json -79d5ec5eb3e76682c406b38a4ce55dcc41e95aef data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_1_decompress.json -48da559d9717d1bf410ff51b26ae4c80ce80fd99 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_2_compress.json -ff606a0263a294ef7378ef7a53af62c2d956c725 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_2_decompress.json -d5bc1166737b5bcef34b55af7f5574fab110d13e data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_4_compress.json -5acb98055d479a50d83abb1bd26f95335c7d1105 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_4_decompress.json -2214b4d178c0501e0083d8a98a1787f3aa485e39 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_8_compress.json -d0fb91171512f1eb9d57d57f5456c267196878f0 data/cosmere/advancements/recipes/decorations/harmonium_duralumin_alloy_nugget_8_decompress.json -60b067a7f85dfc5236888e1bf6178a4817f56cbb data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_1_compress.json -e56cbcc6a9fa6ce9aba4c68d143d249c7b37f251 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_1_decompress.json -2585a15613edddf05c425f386fe6837c4e704f98 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_2_compress.json -b5162eb4dbc7f83a02740ebe2dc64c7d8c1d6180 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_2_decompress.json -938c783359ecafb45436e6c2d2c8d6a9e75199b6 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_4_compress.json -49c497aa43bc3e8250468db0385c8458322a1193 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_4_decompress.json -bf148697fe98580eb9fdb7b4d15236e0895c90b9 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_8_compress.json -fe9d56690df86d1a6d8764340c61d6e8252c4d67 data/cosmere/advancements/recipes/decorations/harmonium_electrum_alloy_nugget_8_decompress.json ac7dd6de8c4e4299bbaf51818bb8891026ca7866 data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json -730bc8f2c17e2427ad0e2403b39356da3ee82282 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_1_compress.json -e4c4d5ebe83d7286d4b7ebf7f57c43ce8d4cd9c4 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_1_decompress.json -3b34275e642615fd1f3c759f0177daf5506b244a data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_2_compress.json -8263d873ddd4c6e473e45b9c544d90ad234f7be7 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_2_decompress.json -646026f36cdf0f0a4951fdc531cb32043aa7f4ef data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_4_compress.json -91150d005d4b24a01bdbf29d33260428cde26cb5 data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_4_decompress.json -8832da6cb9981174270a4bf625060bd5f12ba17e data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_8_compress.json -28e6386ae23115e744590f65cfe8a1e4e839228b data/cosmere/advancements/recipes/decorations/harmonium_gold_alloy_nugget_8_decompress.json 878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json -085bc459850d26dcb77fc40df1ebc42d250234e2 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_1_compress.json -138b1bec116c2c3c7f4945318cca1e4c1239afdc data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_1_decompress.json -6f57060752b1855678574a2650df9e007442a951 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_2_compress.json -d7c45a4fb696375b939112d25a2a62e9285978c2 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_2_decompress.json -27180358a3789b54ad1ef99f6f104126e25b8871 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_4_compress.json -2fde43a8cfa8f9c2071073b9761a7eddb4ae5770 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_4_decompress.json -8185f7c2bc1f7a4f9409ee744ed8f01515db0220 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_8_compress.json -0faac684a3441dc93950b10ba0dd9062ab46aa20 data/cosmere/advancements/recipes/decorations/harmonium_iron_alloy_nugget_8_decompress.json -79b514b90f6ea6761f8023b42a745d30ad84a631 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_1_compress.json -438acbbb8d45f4040ddbbc6c9195846e2fc04ed6 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_1_decompress.json -41fe868ed6f1523905564b888b505c3d04181815 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_2_compress.json -86009871b9adde41aa76075cbd14c2b97ba77f0a data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_2_decompress.json -bad8569080e15f91ed76a442c1c70cc957df48e4 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_4_compress.json -e76d7e6803f5d34621cfda72414512a88fd35b27 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_4_decompress.json -f0f13842ca16cb335b080137c23aaca4805388f7 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_8_compress.json -12a75f402020b12bea74b560fcd868138dc8aca6 data/cosmere/advancements/recipes/decorations/harmonium_nicrosil_alloy_nugget_8_decompress.json -6405c91e368f7ab8f89cc07fd76248a280b4f065 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_1_compress.json -600c87c8575005f4afebdb040dcb7276c5bc378c data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_1_decompress.json -4f7ff8e7e1dbe480335b40abf5d6cf5a918b8565 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_2_compress.json -4f3c8d96df99b01982e625a5b153f42b0b7ff389 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_2_decompress.json -9a3e6a7c27170fa14e994bed476290405da74c5d data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_4_compress.json -28b36248c718c110b03073cc29c285d34835e016 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_4_decompress.json -d2e39fc310853548edc303ae352909916ff35dca data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_8_compress.json -a4372dbcfb74f178c48bb297ff2db0e0b3fa1b58 data/cosmere/advancements/recipes/decorations/harmonium_pewter_alloy_nugget_8_decompress.json -c24cdcfed5d70eb9cd6b9da73293a9e6b416af0f data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_1_compress.json -5cad91950fa51cf72eceb2bce6d97eed4b1e6f2e data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_1_decompress.json -d0189728e600bad04d67615ab3f31d1f7b0ddaa9 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_2_compress.json -c13ee86ba5277aad0b638bc95e63f5b3236cd663 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_2_decompress.json -9fbba9f9d43d85b4628f96ff005e6216e116feea data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_4_compress.json -f80686977966d395d10c08ee274d3b0e25a99355 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_4_decompress.json -e1f69f611f088d9559d3e945116e32876fe5ab16 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_8_compress.json -cedcfeff655adb7d43590108272791c1942728d5 data/cosmere/advancements/recipes/decorations/harmonium_steel_alloy_nugget_8_decompress.json -a1d686982c4a7e87c76fbf104d98f4279b52366f data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_1_compress.json -c2c7ac9fe01cf91b956c65c6e6c177c060008e2c data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_1_decompress.json -51565e1a3e309954f8a0a806accc6c7cda83cd94 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_2_compress.json -7ca2555a79bfa4f13aaa0ef74c867ed567e159ef data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_2_decompress.json -08dff2bf27bbc10764e95c19bc89f7228917725b data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_4_compress.json -45420ed9631282e09cc78acc21dfddd215ae2711 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_4_decompress.json -eb1c4cb16398cd8e8d24b5a841c483b23ad72238 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_8_compress.json -54978832e4c78cb297047a09d417e9560d3b52a4 data/cosmere/advancements/recipes/decorations/harmonium_tin_alloy_nugget_8_decompress.json -0eda857f972637fc0844c2129766f67efd7da4cb data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_1_compress.json -eebafac480bddd15c892884b58a15c8d2206c820 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_1_decompress.json -02db2bbbc0598720e0057249c83f985b1bb699a1 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_2_compress.json -2ea7fe56380697cd868ad40d4d21386552bb492e data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_2_decompress.json -91f99bf1cca07e181fa92057b53cd90cdef227bd data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_4_compress.json -c9ad6d078f1c6f4c2f6f13a4b4cc9acf01980730 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_4_decompress.json -1f205b8174b1d7f032e6ee534eb5c95010ae67c5 data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_8_compress.json -1ae0b3ccdc6b1a40c5fb75a37e18bc7bf2691b8c data/cosmere/advancements/recipes/decorations/harmonium_zinc_alloy_nugget_8_decompress.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json -466ef2cb6f61690ac0606dbb4718ea03cdf57536 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_1_compress.json -b5e93d51fc8cca1468d2c2a30d0377a49d1a0391 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_1_decompress.json -80eb244acc3c9129bf0cea37af9f95ae62ee1d24 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_2_compress.json -6538428e9ceb59dddf4535a8449a9cd65861066c data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_2_decompress.json -bfeaabebc9424edc883d193ee01d9cfc8329d36e data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_4_compress.json -0c2b7a45222e81a77e1f6cc08acb3a11be225000 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_4_decompress.json -128caaee36dcc647ae8361a183eb64de88341f7f data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_8_compress.json -208b25bd904dfb95a00776b24439af759f483134 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_alloy_nugget_8_decompress.json -6fc0fa871f5f2b9cdf423495458abcaae10a5323 data/cosmere/advancements/recipes/decorations/lerasatium_aluminum_nugget_small.json -17d1ffd7502aab740b28a0ce9a34e347dfebbe12 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_1_compress.json -2c4b077b4efa77c9d2936eb61b8c02e3a5f26d47 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_1_decompress.json -4dcc5d582125dd39c9bb50a2a3690bb42b83d9eb data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_2_compress.json -4ad86c9d71e2d68aaaf8b2963957cdb4d73e60c2 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_2_decompress.json -bc4fcfef6bfe4ee06a26b82cb511839078723888 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_4_compress.json -110ba1dff84e5ea4d493950b581cd963907ab105 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_4_decompress.json -14822f3663fa81d73fc1be9030d4ce26dfbb8742 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_8_compress.json -7184c6cf816f39ab6e2ed98d64c2bcc6b47690bb data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_alloy_nugget_8_decompress.json -c31422a95db283a372f3ed9e197537935777c320 data/cosmere/advancements/recipes/decorations/lerasatium_bendalloy_nugget_small.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -dfa00a3232c14d07511c0f794841670e5ac77854 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_1_compress.json -d82401cc56f5727ef7f7a81a07345ed885c3b9fe data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_1_decompress.json -520dd9a3f62bcf9c56150ba919d3fb315ad82d10 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_2_compress.json -ec79316358de47ccb296936e755e532560163a41 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_2_decompress.json -95d48c56b9dfc198950bae5617f80560caf682e9 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_4_compress.json -bca6c5acd6792c8974fe53c80edc0309e3e05c78 data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_4_decompress.json -bc245126b25d8db9cd70c8e57eb9fc3c3c43aa6c data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_8_compress.json -afdb862a53a9a93b91dfaef371484c9eff76be1d data/cosmere/advancements/recipes/decorations/lerasatium_brass_alloy_nugget_8_decompress.json -fd1077fb00216927c67177832ec59ee362316b03 data/cosmere/advancements/recipes/decorations/lerasatium_brass_nugget_small.json -e8ed55224b513ee8433685191cf506acc80a5bbd data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_1_compress.json -24e18fd6b5e264fbf40490eadddac15ae10311d5 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_1_decompress.json -e93055b417d88f53c4353f65673c1355c4fe1958 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_2_compress.json -f1606bc2f030d2f8652f7b3fabe476027ebf8bba data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_2_decompress.json -240adef974712ecba6dc1c29f146c4de573c0168 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_4_compress.json -22c767093e2ee22e08aaceac36a1127e2450964c data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_4_decompress.json -e4d6df6bb2b59f3a906357c7f35b92721a06e412 data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_8_compress.json -0a4a4b90c1b8ebde72d46c99aaca2096cc84817b data/cosmere/advancements/recipes/decorations/lerasatium_bronze_alloy_nugget_8_decompress.json -24bf564ffec876a2af0329fa932d176356a0197e data/cosmere/advancements/recipes/decorations/lerasatium_bronze_nugget_small.json -0f6cbf82ab57679888eab854b55b626d83d37109 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_1_compress.json -58ac15c5cd559f2e74923836413b068bf24a9e56 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_1_decompress.json -bd69e72de872c3a5068a5f4f0acd20d2f6f38c23 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_2_compress.json -7345983114ee49babc93a211e9d511b64143c54f data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_2_decompress.json -61f8a5609f44bd5a4fba17e7836f324788da33b6 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_4_compress.json -04529bf93d005c3e5ed41f5d990a819d13345222 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_4_decompress.json -591084e7dc497c29e6e0b141561035c9e359d9c3 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_8_compress.json -d2fc13b2a483da8158b6dd6b8cb6c0ae666278b7 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_alloy_nugget_8_decompress.json -aad63f83b50e40c0f88b3cf7ba22d70020ef3484 data/cosmere/advancements/recipes/decorations/lerasatium_cadmium_nugget_small.json -0e19f91bb4a811795a50f4bb35e3342102d23460 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_1_compress.json -83a337d46f1135968f6517d67b7e2375e17ee9e3 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_1_decompress.json -b562e6ecad790106cffbcde9af5e84d96e500c5f data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_2_compress.json -db3630555a1c78ce0b73571b5e3a80f09c1c7974 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_2_decompress.json -f0bf0e0b63a0700eb7690f6881496de470ff6a10 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_4_compress.json -7cdb6e1e3b712f97c507aecd5cae025f4a33f2e5 data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_4_decompress.json -95e037b07f9861147241e245fac702c26049bbdc data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_8_compress.json -2d742a4cd59cb32d3c21c986e7f8c7c5f09a55da data/cosmere/advancements/recipes/decorations/lerasatium_chromium_alloy_nugget_8_decompress.json -ade258f343f360b15d2fae3b7a876cb64f2c7bfc data/cosmere/advancements/recipes/decorations/lerasatium_chromium_nugget_small.json -b5294a3f2c902ec6fa41e88305b9e5fa8fde7b96 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_1_compress.json -8c3edd481aedbb0ddfcbeb6ada62d6081dbaf78f data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_1_decompress.json -663f543cb5fcd1a003e97b2cbb230b3160182088 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_2_compress.json -8cd186f7a61479bb4c382e4d821de8a63ac8d387 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_2_decompress.json -97652ea9217e9c44aff13992f72758a596517b0d data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_4_compress.json -6fb43c06000df39570f4cea54c4911bad5f4ccf4 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_4_decompress.json -7159936be6b36dc80b026a6b5be708e29cfb9f1c data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_8_compress.json -ed50c1eba8f4b3ad389876034d269a2124cedc74 data/cosmere/advancements/recipes/decorations/lerasatium_copper_alloy_nugget_8_decompress.json -d1353ce28702828e649522189b5d089e54cbec7c data/cosmere/advancements/recipes/decorations/lerasatium_copper_nugget_small.json -604601c358a66655d694f14b612ce9b65c160af0 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_1_compress.json -9f5d668a10c2c87f5d905e387c1385ae07698984 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_1_decompress.json -90a881bb43d8feea0a37b9f9fb95c248ad34d9cf data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_2_compress.json -e93d33e329ccadcce1d4fca7a18b908619286f22 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_2_decompress.json -73f56b0c5a13c5294ddbc981b6ae2397e1113d14 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_4_compress.json -41472dacff26182408abfd9c7e6114f3d6ee8943 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_4_decompress.json -73075444fc595c55e5431942d2189d89e3572524 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_8_compress.json -f08d57c6206b4d66cb692a0a24f44c07c4b67ccb data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_alloy_nugget_8_decompress.json -44585399452a7091887269c2957b6060c6352400 data/cosmere/advancements/recipes/decorations/lerasatium_duralumin_nugget_small.json -2541c1d26dfe8d3876537e37b7a7420ec32af589 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_1_compress.json -e54516305be5370383d769cc9636a3a4eb63a2dc data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_1_decompress.json -751c2ee0c471ce1cfde6e5a341db4aa0eea46636 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_2_compress.json -7f0657cdd0e3d254db13e854a19b9540e878dbfd data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_2_decompress.json -146434ea486563cae69881ea9e6cf1f186ec32d6 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_4_compress.json -ea5b85e587a672453d0165331367e2a6741c6735 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_4_decompress.json -60610594aef30e5a7e53c2f8c99a4d550970b669 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_8_compress.json -151d6d6d87a0bee2422d734ed1e4260d506ca589 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_alloy_nugget_8_decompress.json -1cb10c74f06e52ea19545af504f007c841368607 data/cosmere/advancements/recipes/decorations/lerasatium_electrum_nugget_small.json 7fffd5252b30e808f6500172e3d4ecfd9d08c7f6 data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json -1de97242c2b5c22906cc01ed73e7784699f9f075 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_1_compress.json -542a23a8b5017d4e2abd206551d35d1e5e233cde data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_1_decompress.json -0232d2f4e2216f3da94859dc7226f2ecd344b555 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_2_compress.json -158d678c138d58b993c7e1f668919c1d021a685d data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_2_decompress.json -8d9be5ab85172fff7082d66d87db251473d505e6 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_4_compress.json -6e84afc614de12fb29048d7d187ad408a051f152 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_4_decompress.json -eb26d5c4bc9b79b5965043e251043640475e7967 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_8_compress.json -2e2d4cba206057823c53e64ae7eca986272ea875 data/cosmere/advancements/recipes/decorations/lerasatium_gold_alloy_nugget_8_decompress.json -d162b761dfa36862812aab4eb7ef14c63e223335 data/cosmere/advancements/recipes/decorations/lerasatium_gold_nugget_small.json ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json -26e9d54eeaa47a887da6af7055ef0475807c2646 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_1_compress.json -7539802d4ae4c3b48e07fc8066e34ad4fef6785a data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_1_decompress.json -6c3156ce76c4213b2b355024e5185ac2a8a17b86 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_2_compress.json -8d8e94a736890704bc5fb564a21d23d49988a478 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_2_decompress.json -05b8879500f11afcacf4d42e962be71fe0319d65 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_4_compress.json -cbf8d8675085aaf81626cb8ae6f917b0da1a61c7 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_4_decompress.json -241deb42dd7f95602e472cc323b6465fa9cad0fa data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_8_compress.json -f384f55b552cf71cd62f7b7d3d5804718004c695 data/cosmere/advancements/recipes/decorations/lerasatium_iron_alloy_nugget_8_decompress.json -5d6e71debe26ba85f6dd472ae71b72c3bfa5553c data/cosmere/advancements/recipes/decorations/lerasatium_iron_nugget_small.json -277f83548604923ca6b3676d2c9f622fd43ab31a data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_1_compress.json -560612b65b1d917e35ec698ece364d484874f1aa data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_1_decompress.json -c5edd5dc332c0ef79f5879975db9dc1c217656a6 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_2_compress.json -5a2ac2c4ff8e3c5cd4f14804b20e6101473074d8 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_2_decompress.json -85a62493cc045d6d629b5531757d1cee6a5445ef data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_4_compress.json -d3eefd5a895352f4d1c7ef8b6631567241eb5789 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_4_decompress.json -8c76de73367e6947e1be34e1157c1dc042e51641 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_8_compress.json -91999a2050f0f69784dbbf7c1cd37daabcf4c7cf data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_alloy_nugget_8_decompress.json -5a7f222443fa84770900ba35189c46758fd57cf5 data/cosmere/advancements/recipes/decorations/lerasatium_nicrosil_nugget_small.json -184ae3cb74e0481d5aea81b3cd553f9a5fecd7f0 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_1_compress.json -12a6f076f22a1c6d0d4f487c3843e18123a5f2b3 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_1_decompress.json -e74ae5f7483f3a7e9dbe95df4b1aef5a93b3c90d data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_2_compress.json -2f7d4b42bd89bcc7bb5f245be20c586db6f7b4a2 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_2_decompress.json -7cca5d027d909afb60127aa45e751fe139a24c87 data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_4_compress.json -ef61fb3f6f8390a23d0afd4e00ba2e76d2ef2c6b data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_4_decompress.json -b04b2bafee24cc1d4bab43d216a0a662ca7ae03a data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_8_compress.json -13cf682d21e394b497a3f377663b4b4bd125394a data/cosmere/advancements/recipes/decorations/lerasatium_pewter_alloy_nugget_8_decompress.json -3d2e06518792d1aa4f4f61c11003c98c0de1eb5d data/cosmere/advancements/recipes/decorations/lerasatium_pewter_nugget_small.json -9b360ed6a9f0a31fac7fca092225b4beaca3a599 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_1_compress.json -f29156e72c2405afcbd581d860f65c1c6aa6a732 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_1_decompress.json -e8751d00e97ae00f399f6274bfeb289dbdec56a6 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_2_compress.json -e7a027f76fa4e8bad006dc7d94b39d29f63c7132 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_2_decompress.json -a4c727bfea632a3df9842bc8b3990ec3d4344f0f data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_4_compress.json -4e8f8f38c579bb568a9d27164171d47f3c276f34 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_4_decompress.json -1bee67d2c512a0a9fd570afd5057289b9bc4164f data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_8_compress.json -389b2274f10b35934e29603ce3f9043e61e39268 data/cosmere/advancements/recipes/decorations/lerasatium_steel_alloy_nugget_8_decompress.json -b9d9c82e8730b409761305af53a73f5ccd73beb6 data/cosmere/advancements/recipes/decorations/lerasatium_steel_nugget_small.json -a5e2adf57351fdc236680643f3484402a79046b7 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_1_compress.json -68464530bfa8a4c51f8b82a0ec9dbca86f121cb3 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_1_decompress.json -147e49ee1928ce282e487f1e081334c47ed03b8f data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_2_compress.json -65898b69e6514e069fbbb48d2b526d48d9a35c84 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_2_decompress.json -0c2339d18437d081d02f82c6a143814c76a48e1e data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_4_compress.json -bdefc12bb0324b06ad1a4cf817c44fb2ab50f8e7 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_4_decompress.json -1397057c43954b8a8549b06c4cb8b417607d9d7c data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_8_compress.json -6d84e2c561d50f8cbd5ede6588d960405f285781 data/cosmere/advancements/recipes/decorations/lerasatium_tin_alloy_nugget_8_decompress.json -b41e11e4ee6605a9b537c646f90a20436629581b data/cosmere/advancements/recipes/decorations/lerasatium_tin_nugget_small.json -38045904e2948e3a49091bda4f46513b360c187b data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_1_compress.json -653b8583ec2f0d8d99eeeee7ee1ea695c08685aa data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_1_decompress.json -1da7915584e510e4a451e6e2debb0ed64b4a4824 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_2_compress.json -94f3c1a01b3caba21cf9e82f5f428996efad0f41 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_2_decompress.json -06ce285aad5a289182ae757d501e0960dcca007d data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_4_compress.json -8aa4d1ef02202de173b5613257fa90fbdd2445cf data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_4_decompress.json -afeca4102aef49c4a72532897d9bde3f24e5e748 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_8_compress.json -008a72d5e1ae5d85f9b867658341e294fdaa6f08 data/cosmere/advancements/recipes/decorations/lerasatium_zinc_alloy_nugget_8_decompress.json -51f4c43190b2f2598577442d254dba04404eec6e data/cosmere/advancements/recipes/decorations/lerasatium_zinc_nugget_small.json -d3885ad68e3b1a81a51aef8dba14ac29fba0186b data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_1_compress.json -65e29277ff41f4c7110ab56b08b8741dcd64c745 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_1_decompress.json -cbf19535e70cfff5723004c1fade62965ddf2215 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_2_compress.json -3dc586aff0a811fe75d40a81d85846d4d5ea1bbb data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_2_decompress.json -1ac94da5fcac1cc5687cac541bf0758b28164c0b data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_4_compress.json -d23b11dc5a90703b8c66c11271da9b8da29f4dd0 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_4_decompress.json -41b5f8cc095161b953407a1d425f3881e5fff17e data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_8_compress.json -cd19d9b8727f0451abe3c8ac4b9e6eae4dd4351a data/cosmere/advancements/recipes/decorations/lerasium_aluminum_alloy_nugget_8_decompress.json -78ab7ab643eb80ce7970006e5f7c6a7d91c9ff68 data/cosmere/advancements/recipes/decorations/lerasium_aluminum_nugget_small.json -761a2db62573d6efdd188ef9f1814171bb3c60ab data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_1_compress.json -c1883f6b2e9134fe6ff6e9b52cf7c01d802369fe data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_1_decompress.json -74242cdf99b5b4348fdac2072c4340af4e7578f1 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_2_compress.json -10090c0498cd05a1c533bcb546246d187f477758 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_2_decompress.json -3295b6bfd0325378509f74bb6f973197f6a06a1c data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_4_compress.json -26488b34111653b29ffcd18aa86bf968457b62ce data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_4_decompress.json -421cd7d75a5885037a22d16083046ee9d5e60e89 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_8_compress.json -9a6bbf60ed71738700b3d69be5dc1ddbe95796e0 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_alloy_nugget_8_decompress.json -77c4a1d7e10d9e8a0778b383d8c5e75bed0ea485 data/cosmere/advancements/recipes/decorations/lerasium_bendalloy_nugget_small.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -e6d5c843d076348a61bf31170fde630d6e12bab2 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_1_compress.json -ded906e9545f92ec4aa4417b68cf0153afcb99b5 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_1_decompress.json -d1f4ecf8c77eb64324f124be3bd8f09de7d4532e data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_2_compress.json -6f0da405e0de64cb8528c70f8fea29af73c77c17 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_2_decompress.json -ceb3169f07f0f8a2497e1afae365dd08bc031c47 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_4_compress.json -a09aedb77fba4e9460964b693e413dc76e65419f data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_4_decompress.json -a2304df033bec24560463194b9d57764bc12a6a9 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_8_compress.json -5fb4bd922dd571f6f1bd912edf33bdf036f27994 data/cosmere/advancements/recipes/decorations/lerasium_brass_alloy_nugget_8_decompress.json -04cd69e69eab065c6ac28fd3e932462e4ed49b10 data/cosmere/advancements/recipes/decorations/lerasium_brass_nugget_small.json -6f3e4e92ed99e7ce0ef8fc0e0c24fd499b055388 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_1_compress.json -29402272d2927b23c28900deaaa87df6928d6a98 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_1_decompress.json -291cff68b9dabe88188fcf0eb53c77464d01fcb5 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_2_compress.json -c52012d8af8441e346eee86c65995beac7ffcf68 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_2_decompress.json -f264b3d707ae1d416965394f2e40c4f3ee3395c6 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_4_compress.json -ee36e88491a06b49ad6f329642250e02ab26347b data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_4_decompress.json -1ecbf59663204725dd11e016e3a607351bf99d5f data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_8_compress.json -69e1720d0e24cf21bed0486a524be97d44beba48 data/cosmere/advancements/recipes/decorations/lerasium_bronze_alloy_nugget_8_decompress.json -a1c1cdb02cbdda2f0948b9a2a7fd15301b724a08 data/cosmere/advancements/recipes/decorations/lerasium_bronze_nugget_small.json -60c093b66e91ec01674fa5ea5237a077698c2ff8 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_1_compress.json -c3f8566a5382f2eee72f3e5db4b9bf89cbdc2e5f data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_1_decompress.json -5382905a24e90c9fc0a5ad1269d3db26a6624e8c data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_2_compress.json -c0facdb93b496d40fab1d8ab07ba3e7b1f3c911d data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_2_decompress.json -c223c29153979744f04f7bf9bdad2ae421ce68d5 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_4_compress.json -a79eda6567f87992dc98ba506adc467ba452c679 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_4_decompress.json -e2d7797e62d1440c06be5b039f46a5b9f7757aac data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_8_compress.json -0c62d61cfffcec98efb91231c7cdbe2d66145d83 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_alloy_nugget_8_decompress.json -afa46c1acf7d482edd465fdc8f00de8b87846019 data/cosmere/advancements/recipes/decorations/lerasium_cadmium_nugget_small.json -917397c8a53694688ef0d639ebb21ba92ad6ae2f data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_1_compress.json -c3c357f469db7be26c796aa01c83b1b2f5c6295f data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_1_decompress.json -09692007f6ae20106dff89897097824a666e9819 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_2_compress.json -dc2a5f1e4da7ad0af894dcdd6998025a9b8f8b0a data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_2_decompress.json -740965f785189f4f175e0f4e48f330bcde5d32d9 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_4_compress.json -f7952e8a83af830ecb7fe6ce8705a49d19b51abf data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_4_decompress.json -33d3d2c6131888121b81e66c0bfc576238f03471 data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_8_compress.json -9d3c050a9398a3d07a74d69bbe1a432f39a2624e data/cosmere/advancements/recipes/decorations/lerasium_chromium_alloy_nugget_8_decompress.json -84c440f3d2b7f17833eb81c7855420b67803cf0a data/cosmere/advancements/recipes/decorations/lerasium_chromium_nugget_small.json -49121476b9d359c5bc0fddb37490e44dac1089d3 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_1_compress.json -ff7e1e1d28ffb6f085e267f906234631fa09e03b data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_1_decompress.json -5dd4d15cabc21be276fa19778e624351cf3f4897 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_2_compress.json -abddcf7f4e8ed19498257907bbbf56192059ea98 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_2_decompress.json -68c4956f66f44b3f2112d6b1c57861c37cf85642 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_4_compress.json -de3d05665f8ec08d29c03dd49ca5735fee1bb5a9 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_4_decompress.json -a4e3f6395935fbf047a9bec2e4e013f2e2882642 data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_8_compress.json -1c1b36ce0c2b4cd8f34398a509f34ab7ca74281b data/cosmere/advancements/recipes/decorations/lerasium_copper_alloy_nugget_8_decompress.json -d4f80c429bed7f99e0604ae1226cab462a3aaa2f data/cosmere/advancements/recipes/decorations/lerasium_copper_nugget_small.json -96909eb85367ee3b0a62e36712a79425fe9c4c98 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_1_compress.json -011adcd595f97194487ecdaa8bd4f39708b4140b data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_1_decompress.json -d0aa7204b1aef5f4e3411730b2598a6df8844352 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_2_compress.json -ad582cc2a981932fd1551de551500044d39b6e07 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_2_decompress.json -2d998514ac2eb42ec697f13eef97790bb7f48171 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_4_compress.json -4ba456b2191b1065c1eb0e67504c3b5066cd7aca data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_4_decompress.json -0265da1f8ca4d7eb39e0df568cfd5fe0905dcc1d data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_8_compress.json -dc996ea5e901b125a49286e30bb2e2261ff075c7 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_alloy_nugget_8_decompress.json -a1481a812301b489f6bbcd1aff80f244e16b94c0 data/cosmere/advancements/recipes/decorations/lerasium_duralumin_nugget_small.json -09e80d583a4c6a4109b5101ba6396070dda213f3 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_1_compress.json -74313e5a4661de21faba983444bcffda065ea780 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_1_decompress.json -a239729df724a759d65095c17db05e805e9e2c1f data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_2_compress.json -184e8d57be7d9131f712c3694a3ba55d7ac118f8 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_2_decompress.json -49f057868640631936d3c7bcb875dc5b1e9a016f data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_4_compress.json -eecc523c02ab708226288e7755dc69393e290479 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_4_decompress.json -aa317685c8338a95def42645f3c9125dcc2daf39 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_8_compress.json -9f4708988818a5ba6a4c8158848cce239f252160 data/cosmere/advancements/recipes/decorations/lerasium_electrum_alloy_nugget_8_decompress.json -1ee17ece74bddda8bc3d54c185e9615c101f630e data/cosmere/advancements/recipes/decorations/lerasium_electrum_nugget_small.json a21213dbe3ded23a9574daf2e0d1da4050dfe569 data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json -3d84f89217a1ecca8fa356fd596b831c7bd5030c data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_1_compress.json -ea33f14fc4861b8bf6584e208e2424dbec53f990 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_1_decompress.json -05d4e58c0cc8d2b6dffb4c94bcd46da61f56d29c data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_2_compress.json -fbc1d6429ba0ac4994a4f57b0eb933357e24f054 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_2_decompress.json -61c86702b60797bb50b3da5d0ad4fc726a25a6aa data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_4_compress.json -40de713bc23c297d40c24db1f468a6a6d0a80d1d data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_4_decompress.json -7cfab26dbb20acf23ed191fec02d59b4e0d754b6 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_8_compress.json -4e0e12d3c43409c1de85f6caf96b9d3569fbc463 data/cosmere/advancements/recipes/decorations/lerasium_gold_alloy_nugget_8_decompress.json -94e3bd5ba09aeccbac44660dbb266697141b1add data/cosmere/advancements/recipes/decorations/lerasium_gold_nugget_small.json 18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json -37ba99099a6e129024e509e8a4e6e70cc5f75a31 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_1_compress.json -a8c56ee95600267060ae150283a403d2ef1bb055 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_1_decompress.json -b145e0160b349c7e641854d244108c0d7bc4b536 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_2_compress.json -852b9bfc3cc7577ec353ba5588c5969b751ae119 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_2_decompress.json -e441351b7d065f194246b15087cd607c3e8c94b3 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_4_compress.json -711412c3a4af197580e3751f405efd055d00d9dd data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_4_decompress.json -53e805bec63b199d64a7709bce8183d0e1633f4b data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_8_compress.json -7e650d10effd20dda21fff7fbd848975414a2a01 data/cosmere/advancements/recipes/decorations/lerasium_iron_alloy_nugget_8_decompress.json -afc874b9583b79139b7e7b09bd547b653ba8f427 data/cosmere/advancements/recipes/decorations/lerasium_iron_nugget_small.json -db4df433a0a2e6fa7afd104595c0f0272a1cbeb5 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_1_compress.json -a5dcaad45349452e2f8c14e868157a9ef03665c2 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_1_decompress.json -a3084d01675d0b3013257d12c408f8e8e6e27e76 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_2_compress.json -f82c38ddb2761aef5b26d93f2369a133a19d8c7d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_2_decompress.json -7a85b3356dccb92ce8af894c1e8e2be51e84a15f data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_4_compress.json -5603873d0382fe2329359350632860b84f62c419 data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_4_decompress.json -63949234e86b1b47bb7e369306efdb53bd09cdba data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_8_compress.json -a1683df7dc66418a6fd8faf360dbfdfd1839ce8a data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_alloy_nugget_8_decompress.json -786a082fdc8e801093ace54046c6ebd24d35bb2d data/cosmere/advancements/recipes/decorations/lerasium_nicrosil_nugget_small.json -38e463872696c2093f5cd1cc62ad09524ad07ff1 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_1_compress.json -baf863d6bfd20f11e22ab3a8914b9a0d8c4a0c13 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_1_decompress.json -7b1f9a1ef502f3b1cb49350e7b03fe10e0d344cf data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_2_compress.json -a187ddee4b61cae3df315bded4b9ea8d149593f5 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_2_decompress.json -bab8bb5428e35b623ed658aa0ad9f783dbd6349a data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_4_compress.json -55190b20f6e2070a943a7baa4b74a43253d97542 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_4_decompress.json -a6899628423100534f8ebc972f8eb519b2d0ca61 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_8_compress.json -b959ff4e0847b28767757c2b4251e904f5079e14 data/cosmere/advancements/recipes/decorations/lerasium_pewter_alloy_nugget_8_decompress.json -48bfadfa5baf2a5f4809b0eb0981e7354ba28740 data/cosmere/advancements/recipes/decorations/lerasium_pewter_nugget_small.json -4425d7429354ac546bb01b9f03290699c3f29318 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_1_compress.json -5159d8da777ffa5025d49d1b72f40011dce3c25f data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_1_decompress.json -4cc20c04188fe2b30fd086cb0dbd568f6d88a0b4 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_2_compress.json -babfb8e5cff125e8a8cd2a9216aa034ebf57925e data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_2_decompress.json -233f355a12f70004892c5d3d391955295ebbe6bb data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_4_compress.json -3ee6f257983251909b4aab94b1f0677581dec9b9 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_4_decompress.json -81857384a346e0ab7ec1928324caa55f2955b7cd data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_8_compress.json -1c129176b05ae49de9265885aa38b98d48b7d9f1 data/cosmere/advancements/recipes/decorations/lerasium_steel_alloy_nugget_8_decompress.json -d0e46716a4bb09eb410834c966141b9c29d5d104 data/cosmere/advancements/recipes/decorations/lerasium_steel_nugget_small.json -589d34d0cd9b9ada340196f9ddc489cb705796e1 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_1_compress.json -639edc7b0ff0af9153eaa9a76663d8b3cf075b19 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_1_decompress.json -b6d0af1e496d805c3ee663ed93128a37d284d198 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_2_compress.json -6938f5f3b3f749b1cf894e0ac044c81f5a5f3119 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_2_decompress.json -b9bccc354e8c415a76fee6eaaa35def8c3472534 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_4_compress.json -3f7b33c18c69637e943dad69634e6dca0109690e data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_4_decompress.json -75fe556d088d2dcf09f56527ff0afc2dd381be42 data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_8_compress.json -0ea58e11f2327e8bb9d4cead08671e6d2d90b2ed data/cosmere/advancements/recipes/decorations/lerasium_tin_alloy_nugget_8_decompress.json -af3a6e84c6b05a631c76dd6d7ebcc717004064ec data/cosmere/advancements/recipes/decorations/lerasium_tin_nugget_small.json -6d9f82a43e4fbbbc6a8df18bffa5edd8eee98ee7 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_1_compress.json -a2a6e5a61f88680ea96a7e42125c65190d52b2e2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_1_decompress.json -25dcfe42ec9f5fb0fec65bb1f940a76c7a76bd21 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_2_compress.json -d6e62eb7eaa474624bee070fa45fe67bb9d4dce2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_2_decompress.json -64bb8e007fa9d95ce6ef7d3128f43642d296bc49 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_4_compress.json -9f6fb5f939ec9164879e878bf5865c0c98a269e1 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_4_decompress.json -b25baddff185c78572b74b2b4d85777bcca1bff1 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_8_compress.json -ea6551411340bcddfefc46b4cf0831cd420604b2 data/cosmere/advancements/recipes/decorations/lerasium_zinc_alloy_nugget_8_decompress.json -48c6ea1d92fbe5ec54f873d31975f87944a03214 data/cosmere/advancements/recipes/decorations/lerasium_zinc_nugget_small.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -753,137 +209,9 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso 9212d392d1bc1f7fec0b90dce25fffea415941c5 data/cosmere/recipes/aluminum_ingot_from_smelting_aluminum_ore.json ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json -98b642e5cba111b37194ec80c4db43cc1cca619c data/cosmere/recipes/atium_aluminum_alloy_nugget_1_compress.json -b48e4324e43cf8a3ff828c7c357cccb9562851ed data/cosmere/recipes/atium_aluminum_alloy_nugget_1_decompress.json -cd97aa37a52452595d3e1708eff890dbe97e56c8 data/cosmere/recipes/atium_aluminum_alloy_nugget_2_compress.json -bfc6036953bdaa44b21355e0512f3ba92d2ecd25 data/cosmere/recipes/atium_aluminum_alloy_nugget_2_decompress.json -37fa7ed6defd957c380009bfbdf86bda71ddd020 data/cosmere/recipes/atium_aluminum_alloy_nugget_4_compress.json -8b079a9f4da94560bd8f9db2c8b26cce10b5b030 data/cosmere/recipes/atium_aluminum_alloy_nugget_4_decompress.json -94dde871a63b7476e66c12a0b1f24dd9fd3da7ca data/cosmere/recipes/atium_aluminum_alloy_nugget_8_compress.json -7617307483e686843599df0481c3b65e411fdc94 data/cosmere/recipes/atium_aluminum_alloy_nugget_8_decompress.json -55da49ed16a08e159027136d5e1a105a561544d6 data/cosmere/recipes/atium_bendalloy_alloy_nugget_1_compress.json -13a249656eb71ba8a3c3fd07eed92c02c1a23ef9 data/cosmere/recipes/atium_bendalloy_alloy_nugget_1_decompress.json -f98a4df042616b2f67e5d4e6f73140ebb98ab826 data/cosmere/recipes/atium_bendalloy_alloy_nugget_2_compress.json -77c4f55d116a4267c49f11fbd5d1eb2acd0808a3 data/cosmere/recipes/atium_bendalloy_alloy_nugget_2_decompress.json -bd75e9cd43b8630f81c18996275f728a8e296baa data/cosmere/recipes/atium_bendalloy_alloy_nugget_4_compress.json -5245d5d99a4a6516604f3be955373829e9a69540 data/cosmere/recipes/atium_bendalloy_alloy_nugget_4_decompress.json -3fb06d44972eaf3092997d92b0cf563789fcdfa1 data/cosmere/recipes/atium_bendalloy_alloy_nugget_8_compress.json -1ea7bdfddc6cefae277e2b2cd622a44ed9c5a713 data/cosmere/recipes/atium_bendalloy_alloy_nugget_8_decompress.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json -76dd5d8086938aa964a501eb46609570899ab318 data/cosmere/recipes/atium_brass_alloy_nugget_1_compress.json -982d99694ce8ede19bd2127fdb2db57533203eb9 data/cosmere/recipes/atium_brass_alloy_nugget_1_decompress.json -92aaa61576e6f8f84b6c3bd1b514d92cd490712a data/cosmere/recipes/atium_brass_alloy_nugget_2_compress.json -d53dfc019632abcd58e06d7e90ba4fe3cc92461c data/cosmere/recipes/atium_brass_alloy_nugget_2_decompress.json -41980189c77fdf563933c2a45baf54306a2bcc01 data/cosmere/recipes/atium_brass_alloy_nugget_4_compress.json -79925c29bb9ebe32058605b81f7c03c5f2be15c0 data/cosmere/recipes/atium_brass_alloy_nugget_4_decompress.json -5de529d24f70143229a26e084643f0250eff48ec data/cosmere/recipes/atium_brass_alloy_nugget_8_compress.json -72dc16679db7296163c630e63155d53f8cf9f5f6 data/cosmere/recipes/atium_brass_alloy_nugget_8_decompress.json -05012f52527d3c9a1d5c7ab7f26f947ed6fab97a data/cosmere/recipes/atium_bronze_alloy_nugget_1_compress.json -e14ac4d5fac6a8d04b42f5ec5f7eddfae370f932 data/cosmere/recipes/atium_bronze_alloy_nugget_1_decompress.json -be4961d70df3f435b99983316f76eaa0176c26e9 data/cosmere/recipes/atium_bronze_alloy_nugget_2_compress.json -c7795742c66bd0a19b3bc04cdc272bed701b1f5f data/cosmere/recipes/atium_bronze_alloy_nugget_2_decompress.json -a0a9be99170c8a81938d4776e72d5c508a051067 data/cosmere/recipes/atium_bronze_alloy_nugget_4_compress.json -15a630290ed2823930969dea1b8d1e3178d9d8cc data/cosmere/recipes/atium_bronze_alloy_nugget_4_decompress.json -ff3debd981a25b852477214048e2c22733b004eb data/cosmere/recipes/atium_bronze_alloy_nugget_8_compress.json -5d4c74dd9d85a3847a51a64e6fa16c61cb83fe30 data/cosmere/recipes/atium_bronze_alloy_nugget_8_decompress.json -6b0e1d01e07176066b8974ee33807f36aaca0064 data/cosmere/recipes/atium_cadmium_alloy_nugget_1_compress.json -28052f35e0ab6c4098d894b51092717690080943 data/cosmere/recipes/atium_cadmium_alloy_nugget_1_decompress.json -facbaa36f30fbcbbdfff8ca336dc3e99c943351a data/cosmere/recipes/atium_cadmium_alloy_nugget_2_compress.json -667624ed218675b7896899d82438fa1d4906064a data/cosmere/recipes/atium_cadmium_alloy_nugget_2_decompress.json -4adec0c1b78c81f832f2dab568699f9edeb2789b data/cosmere/recipes/atium_cadmium_alloy_nugget_4_compress.json -ccb1c0b9469270b1709d70e063b420185a7d0abe data/cosmere/recipes/atium_cadmium_alloy_nugget_4_decompress.json -974b3fead11f519a0620642ef1e44c564b224747 data/cosmere/recipes/atium_cadmium_alloy_nugget_8_compress.json -cbc8b49ec7ae0fb93d3c0196bce4dd28bca8fe76 data/cosmere/recipes/atium_cadmium_alloy_nugget_8_decompress.json -293111b6998214f0e4029f001cab93a106a668ee data/cosmere/recipes/atium_chromium_alloy_nugget_1_compress.json -5fb1a4431bb6a5bb874f20eae4dd710a55deb9a2 data/cosmere/recipes/atium_chromium_alloy_nugget_1_decompress.json -93e7988726050c99ea84ef87c66b80510d397f0b data/cosmere/recipes/atium_chromium_alloy_nugget_2_compress.json -3710058aa0ac5ed72108a8ef089af1115963267a data/cosmere/recipes/atium_chromium_alloy_nugget_2_decompress.json -868c8b700f0a24b7dc43391fadf34b2020a3ae42 data/cosmere/recipes/atium_chromium_alloy_nugget_4_compress.json -e2f8975f4ac0870279902b7d3faa588b07d8f567 data/cosmere/recipes/atium_chromium_alloy_nugget_4_decompress.json -d933473d9a65e83e8539fa3465d88657ba74ac18 data/cosmere/recipes/atium_chromium_alloy_nugget_8_compress.json -038b20498e021adb302a8de3a5166958049c8168 data/cosmere/recipes/atium_chromium_alloy_nugget_8_decompress.json -196ddb145c027e971bf57b79ef0237e4f28e6775 data/cosmere/recipes/atium_copper_alloy_nugget_1_compress.json -343b9f789e73d019c29169f49b8220a29b58e28d data/cosmere/recipes/atium_copper_alloy_nugget_1_decompress.json -174b5a3cb3e70968b2efbf5fa94e40e27c63045b data/cosmere/recipes/atium_copper_alloy_nugget_2_compress.json -00f5b18f077b646a899dc5cc0951792c95c8426f data/cosmere/recipes/atium_copper_alloy_nugget_2_decompress.json -9ab3751d2ba62974a632028a4de8a54614fc4add data/cosmere/recipes/atium_copper_alloy_nugget_4_compress.json -5b3340225c423d1b560a2d8c72a5437345e50e33 data/cosmere/recipes/atium_copper_alloy_nugget_4_decompress.json -d20805a9b3d97fcb90246b42eae9d1ea2bc5b569 data/cosmere/recipes/atium_copper_alloy_nugget_8_compress.json -6b27e5eb9761a92b160a6d2a5b019a794640fc5b data/cosmere/recipes/atium_copper_alloy_nugget_8_decompress.json -16bfe499dcc32364eacc436179a3fba2eddb224a data/cosmere/recipes/atium_duralumin_alloy_nugget_1_compress.json -9c1ea15e8ed54353f411e2320818a3ec1057c092 data/cosmere/recipes/atium_duralumin_alloy_nugget_1_decompress.json -a104d712a389b8e857165cb5c5a7cfb7d43af088 data/cosmere/recipes/atium_duralumin_alloy_nugget_2_compress.json -2f04c3adc98e53c7826164ef6583c3b9a41dae2f data/cosmere/recipes/atium_duralumin_alloy_nugget_2_decompress.json -bf3ea2c77e9ac105896e6c86ff9640b0a0d547c8 data/cosmere/recipes/atium_duralumin_alloy_nugget_4_compress.json -59aa340f927f55e4ea68bd809187a8244bc33575 data/cosmere/recipes/atium_duralumin_alloy_nugget_4_decompress.json -3c052099c24fdbfaca2a7bca13557236485d4cd2 data/cosmere/recipes/atium_duralumin_alloy_nugget_8_compress.json -f1c01967edcbd5934695f4f80242511e195e438a data/cosmere/recipes/atium_duralumin_alloy_nugget_8_decompress.json -eee97426163dff21aba15ef78e360e5e91669e98 data/cosmere/recipes/atium_electrum_alloy_nugget_1_compress.json -de026798b2fd584b930471b129321495a9a756e5 data/cosmere/recipes/atium_electrum_alloy_nugget_1_decompress.json -ad64e954ca661f3b28a2f7871dff251ceb100ecf data/cosmere/recipes/atium_electrum_alloy_nugget_2_compress.json -03ae04a5a26730c1d46b9157a774f76a077d8d13 data/cosmere/recipes/atium_electrum_alloy_nugget_2_decompress.json -8a4f49b993ee61f235322422a140059f7514358e data/cosmere/recipes/atium_electrum_alloy_nugget_4_compress.json -30fb415213946f9ca4a17df70cfa04eaf22402da data/cosmere/recipes/atium_electrum_alloy_nugget_4_decompress.json -db3c355149bdae5739af4bc9a8ccfdfc0ea4eabd data/cosmere/recipes/atium_electrum_alloy_nugget_8_compress.json -c365c8955bd2070a31baa2d647a8a88dd6d88661 data/cosmere/recipes/atium_electrum_alloy_nugget_8_decompress.json -8019d7d79bdf4e408849b6e56bc3108a8ed3877d data/cosmere/recipes/atium_god_nugget.json -57a0b11a0c38c3c7640e304561cc1647477019e0 data/cosmere/recipes/atium_gold_alloy_nugget_1_compress.json -13b4c476ca0a95db387e01d3f7d9b89af910f4ae data/cosmere/recipes/atium_gold_alloy_nugget_1_decompress.json -cc466ad1f9cadedaf85f866f2595738e53fcb12d data/cosmere/recipes/atium_gold_alloy_nugget_2_compress.json -d1b133e5d9a5af33c66404e000b222cfe8f7f068 data/cosmere/recipes/atium_gold_alloy_nugget_2_decompress.json -27959157186c182f8187da3766f133a1e1f417c1 data/cosmere/recipes/atium_gold_alloy_nugget_4_compress.json -0da7fc7e844a17c2daa2a440af99a20ba0f2e616 data/cosmere/recipes/atium_gold_alloy_nugget_4_decompress.json -f4932e82897b46eeeff596517069a853ebad437a data/cosmere/recipes/atium_gold_alloy_nugget_8_compress.json -0a26d90e26b02f42bbc665c70fb66a44bfb01cfc data/cosmere/recipes/atium_gold_alloy_nugget_8_decompress.json +2d5a2429ac4551ba4518ce63d7d1a472b58091ee data/cosmere/recipes/atium_god_nugget.json 2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json -cc938b961290626e0543fc2ae965a9ef9fe0fffa data/cosmere/recipes/atium_iron_alloy_nugget_1_compress.json -d2f32e0fbaa0b43aaf4b058310877d753cb00bb4 data/cosmere/recipes/atium_iron_alloy_nugget_1_decompress.json -68f9714068c89053401c5c7a78ed09171ec78f8e data/cosmere/recipes/atium_iron_alloy_nugget_2_compress.json -bfcbdd92667cdbc1bcdccf8f2b337b856f4bf840 data/cosmere/recipes/atium_iron_alloy_nugget_2_decompress.json -408eda87be10de5f51a2a8ae890b278fedf781b3 data/cosmere/recipes/atium_iron_alloy_nugget_4_compress.json -90a0a2552d8a8b867984697b2e8eb572163ed0b3 data/cosmere/recipes/atium_iron_alloy_nugget_4_decompress.json -24a35e459bdbd99f3eb52178c511efa02c2417c0 data/cosmere/recipes/atium_iron_alloy_nugget_8_compress.json -d872e6aab76d52e237eade7b0f42577d8b22586a data/cosmere/recipes/atium_iron_alloy_nugget_8_decompress.json -4712ff4d3f928ec324169e6925d8bcd8be3425d0 data/cosmere/recipes/atium_nicrosil_alloy_nugget_1_compress.json -4d5c492a2eeec46f41b1f1b67f3658de376accf5 data/cosmere/recipes/atium_nicrosil_alloy_nugget_1_decompress.json -fc5592f5e9ecdf1e1e6a470e009a9354a8a1e49b data/cosmere/recipes/atium_nicrosil_alloy_nugget_2_compress.json -a6b6f4f3cacebe5e728c4fa36ff352970e8aef25 data/cosmere/recipes/atium_nicrosil_alloy_nugget_2_decompress.json -4a29e0a8158da66a3ad67f5382eaf6eb17da59a9 data/cosmere/recipes/atium_nicrosil_alloy_nugget_4_compress.json -3057b115fccd4eda17ff13a529461ac6172c8aa1 data/cosmere/recipes/atium_nicrosil_alloy_nugget_4_decompress.json -e25c418bb5cd61d93b7e4545072e00b313bc62a0 data/cosmere/recipes/atium_nicrosil_alloy_nugget_8_compress.json -901111e3abfe2dc5a56238c91a7d1c84299451ea data/cosmere/recipes/atium_nicrosil_alloy_nugget_8_decompress.json -410371a0628fc6e63e8de9d37694e9438858e6a9 data/cosmere/recipes/atium_pewter_alloy_nugget_1_compress.json -bd7e13b943c050a97a719804ccbdc76267a02404 data/cosmere/recipes/atium_pewter_alloy_nugget_1_decompress.json -5c2dd09267066c1b333d605b87620c980fd6f225 data/cosmere/recipes/atium_pewter_alloy_nugget_2_compress.json -5c28963fe2f52962d4a54d958b957773dd2697ae data/cosmere/recipes/atium_pewter_alloy_nugget_2_decompress.json -ef6dbc1b68f2503c1c86b62f38784ae314311d23 data/cosmere/recipes/atium_pewter_alloy_nugget_4_compress.json -229eaf8d75d81dce2d187f0c33c6795eb4fe9809 data/cosmere/recipes/atium_pewter_alloy_nugget_4_decompress.json -9b7312b781b3e43b81eeda4592ab957825ae0075 data/cosmere/recipes/atium_pewter_alloy_nugget_8_compress.json -7f50f52fef7566e02bebac9930adb13ce89044db data/cosmere/recipes/atium_pewter_alloy_nugget_8_decompress.json -63cc2cced2ef93b6aa42c605b831580f0872a5de data/cosmere/recipes/atium_steel_alloy_nugget_1_compress.json -8aa966d3bfefb46bbd9d556bd3cef46ba71962e9 data/cosmere/recipes/atium_steel_alloy_nugget_1_decompress.json -2bb43bcf67a585d04a15552711aa6b61c6c77ccf data/cosmere/recipes/atium_steel_alloy_nugget_2_compress.json -82ffa6f22d3f0d68ad9c8c63580cb95a262de0e3 data/cosmere/recipes/atium_steel_alloy_nugget_2_decompress.json -27f81fdad2b78b7898b1aa0d5f32cf614775806a data/cosmere/recipes/atium_steel_alloy_nugget_4_compress.json -ee4a3aaae90cbbe985f93d2cb1b51f3786044179 data/cosmere/recipes/atium_steel_alloy_nugget_4_decompress.json -99d7234c9a6ce16d1696dfef6405d8e651d909b4 data/cosmere/recipes/atium_steel_alloy_nugget_8_compress.json -81805b3153846b950da7d9e4ed0010c801b434a3 data/cosmere/recipes/atium_steel_alloy_nugget_8_decompress.json -967dba1a1b6d27501307403a9fc26e10d9de0671 data/cosmere/recipes/atium_tin_alloy_nugget_1_compress.json -093dc1012b9bcb855de8e4c0491f70f09cecd079 data/cosmere/recipes/atium_tin_alloy_nugget_1_decompress.json -f3e92dbea886ffed1f347184f7b6a6971d3fa611 data/cosmere/recipes/atium_tin_alloy_nugget_2_compress.json -46f1b34e208c1ab694072d382c91dee0d51bd8ac data/cosmere/recipes/atium_tin_alloy_nugget_2_decompress.json -5832191d9c810682d61b9e122b5fe947c53a8e0d data/cosmere/recipes/atium_tin_alloy_nugget_4_compress.json -807eae32d4559209db7d9ad36c5f88453ff69548 data/cosmere/recipes/atium_tin_alloy_nugget_4_decompress.json -fc537799dcd563158045d40c292193cdbefed193 data/cosmere/recipes/atium_tin_alloy_nugget_8_compress.json -44a9ed6552a1378d6b31f74d9ff565cd4c6e6c5d data/cosmere/recipes/atium_tin_alloy_nugget_8_decompress.json -8172b999c9a6db527f77e63766a3db1fb4633bab data/cosmere/recipes/atium_zinc_alloy_nugget_1_compress.json -9812c2aab8c7d177dfeb898cbbb456e266c6f113 data/cosmere/recipes/atium_zinc_alloy_nugget_1_decompress.json -a0e0e7c232cf43ca1e5afc1eac104a4a5aa3255b data/cosmere/recipes/atium_zinc_alloy_nugget_2_compress.json -46ebb16a5ec2df605aeb79aafe0aba8c8f24f994 data/cosmere/recipes/atium_zinc_alloy_nugget_2_decompress.json -50101a470b0a0cc9f32a1e0c6a25e433a9224620 data/cosmere/recipes/atium_zinc_alloy_nugget_4_compress.json -4b6edd3c5159cc3d366535cc509ae16d2cf83196 data/cosmere/recipes/atium_zinc_alloy_nugget_4_decompress.json -ff4dda38c07687e0fb7a6dbdda38023977ff918e data/cosmere/recipes/atium_zinc_alloy_nugget_8_compress.json -f3e7c40d6a22b8cdb9ccbe5d1ee640bd2bc1718a data/cosmere/recipes/atium_zinc_alloy_nugget_8_decompress.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -955,6 +283,9 @@ f5cfb9a18ba62978b92bff60dc506b147476367b data/cosmere/recipes/conversions/steel_ 1bb3b1c7751740d881003c713ab35b81a6f4c5a6 data/cosmere/recipes/conversions/tin_item_deconstruct.json c88dc59d28af370757edcceb5e2b7d7725bda629 data/cosmere/recipes/conversions/zinc_block_deconstruct.json cc80cff2c8c790e49086d36e267878fa952275c6 data/cosmere/recipes/conversions/zinc_item_deconstruct.json +82e6b95610730dd358e08be3528c6d966bcd8d41 data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json +da5967f08a60ae62ce566de74bf7e5157f199452 data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json +6ee94921dd2ca1e05f292bfa89a59dbfaf40cc92 data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json 40cc2403498dbf72ad1969d2a4fcce3b06629dc3 data/cosmere/recipes/duralumin_block.json ce0a4b09393b1ee9a95e2180d3e4d2ec22beb9a5 data/cosmere/recipes/duralumin_ingot.json d41c016a9203e5fa4698b8095cb13699cbce1b7d data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json @@ -963,137 +294,9 @@ afa3542d017e17d9cf68eaeb1821095fb83d06f2 data/cosmere/recipes/duralumin_ingot_fr de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.json 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json -ff35dccc5a8dc5540bb8058bd95652540e416c58 data/cosmere/recipes/harmonium_aluminum_alloy_nugget_1_compress.json -7037ce85cb714a2e5ca903a1cac6774dc9fb23bb data/cosmere/recipes/harmonium_aluminum_alloy_nugget_1_decompress.json -b62ba3b55619a8e5aaad234aab3a1c7a654cffba data/cosmere/recipes/harmonium_aluminum_alloy_nugget_2_compress.json -a6d3ca516bac052d28e074a14a03a8e8a83425da data/cosmere/recipes/harmonium_aluminum_alloy_nugget_2_decompress.json -e66a1730bc4c7642a7817340e53ff29a46c140c0 data/cosmere/recipes/harmonium_aluminum_alloy_nugget_4_compress.json -76490aa0a413bfcb5bb31df338dbeee487bb536e data/cosmere/recipes/harmonium_aluminum_alloy_nugget_4_decompress.json -3fed1dc3d161aaae278794c72e697591e38acc1e data/cosmere/recipes/harmonium_aluminum_alloy_nugget_8_compress.json -2aa2567d97cf4171bf2fe8fc9338086826758b3a data/cosmere/recipes/harmonium_aluminum_alloy_nugget_8_decompress.json -d92a7a01cc4434fb1eca47f99f3d68687e12771a data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_1_compress.json -728299a8703ed78f930043632129098d0c501daa data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_1_decompress.json -d293cf08240ad9d019845bc93d8e59666944ff7f data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_2_compress.json -ee272e67423d63a43db98adb72ce43764663da37 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_2_decompress.json -3158020fada8a2705a1048f11ace1d310a8daecb data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_4_compress.json -2fef3821a87c45bd3eef9ffdddd2ebcdbe4377e5 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_4_decompress.json -8e9950695a17c49bf12c920d5a27d71f8c29fdff data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_8_compress.json -ebb7e8c89dcbd0c96b29af69cacfb58fa5bbdcb4 data/cosmere/recipes/harmonium_bendalloy_alloy_nugget_8_decompress.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json -1a8d1f32ffa6549774b67a159059c13f6240868b data/cosmere/recipes/harmonium_brass_alloy_nugget_1_compress.json -e30b20f09dc60035165d1c3a53c8980f7cf84c9f data/cosmere/recipes/harmonium_brass_alloy_nugget_1_decompress.json -f22a2e9cef3a2f9224117e2a79666a05546a4bae data/cosmere/recipes/harmonium_brass_alloy_nugget_2_compress.json -818669b749caeb12a6b468e8a5124ac4a4d9b6bd data/cosmere/recipes/harmonium_brass_alloy_nugget_2_decompress.json -81cd4e30bcbd162e711db56986ba5663aa9fb3aa data/cosmere/recipes/harmonium_brass_alloy_nugget_4_compress.json -a87da20a8d05a485c4f73eee01193faca46f4fe1 data/cosmere/recipes/harmonium_brass_alloy_nugget_4_decompress.json -c4f8a1ba2e2d5e418d50fed811daf02697c78eb3 data/cosmere/recipes/harmonium_brass_alloy_nugget_8_compress.json -e0e53ee570607bdf8af573edf187bd4b233df23c data/cosmere/recipes/harmonium_brass_alloy_nugget_8_decompress.json -5c7406b3bdb7ded44631c7294b50d9cb03a86199 data/cosmere/recipes/harmonium_bronze_alloy_nugget_1_compress.json -43b957a51b7be5ba0100bcc138e6f69a36186a9d data/cosmere/recipes/harmonium_bronze_alloy_nugget_1_decompress.json -79d9a2040acba4b38a255541b260fd604208c934 data/cosmere/recipes/harmonium_bronze_alloy_nugget_2_compress.json -5ba2d1c9e47b1383df3b156e62d9e44ca73de9a8 data/cosmere/recipes/harmonium_bronze_alloy_nugget_2_decompress.json -39429cbcaac58daa0642bd89a278ba28eed70e02 data/cosmere/recipes/harmonium_bronze_alloy_nugget_4_compress.json -c904ca19e45947365d6cc042d145522daa452f1e data/cosmere/recipes/harmonium_bronze_alloy_nugget_4_decompress.json -5a7d8e2b02ac0029d4cb6cbd45f5eaa05a32f669 data/cosmere/recipes/harmonium_bronze_alloy_nugget_8_compress.json -5d8f319767485b5ee82bbc3631ed0bd09cccb9a4 data/cosmere/recipes/harmonium_bronze_alloy_nugget_8_decompress.json -2b75235dcc655ecd149c31b4214aee8f3588d340 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_1_compress.json -eb3483af9d7b5dd2c8f7a1f554077ed82db5d652 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_1_decompress.json -d6054df3d31c433f669aab4b98a410fb44e0c69e data/cosmere/recipes/harmonium_cadmium_alloy_nugget_2_compress.json -8766e1b06a9aa7cff9d12471720226a128fe4f3d data/cosmere/recipes/harmonium_cadmium_alloy_nugget_2_decompress.json -5ea2e5c4abd000f7c28ffbb2aa58680f893f6477 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_4_compress.json -1561fe5d307f018540c83e533d35e4418ef0515b data/cosmere/recipes/harmonium_cadmium_alloy_nugget_4_decompress.json -856c49349bc089b92098e162b439614392337527 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_8_compress.json -83d03ce9efcbdca3f290dd941c29d7173920b441 data/cosmere/recipes/harmonium_cadmium_alloy_nugget_8_decompress.json -1a91ce1c794a6778215ec48af09d23c142a31e93 data/cosmere/recipes/harmonium_chromium_alloy_nugget_1_compress.json -c4cd5415f51a762d0743697ff7803a7c09149cb4 data/cosmere/recipes/harmonium_chromium_alloy_nugget_1_decompress.json -5e08605883dda72a367d45db020b72c6aa883da0 data/cosmere/recipes/harmonium_chromium_alloy_nugget_2_compress.json -dfe09b11377c74a0a382e24275addbffd7ad2743 data/cosmere/recipes/harmonium_chromium_alloy_nugget_2_decompress.json -d41991071ea2405e82f20b62186a36890962f468 data/cosmere/recipes/harmonium_chromium_alloy_nugget_4_compress.json -0d27295e1cadc3bfa9a41b1ba1f7569f8acd62ab data/cosmere/recipes/harmonium_chromium_alloy_nugget_4_decompress.json -511e38a0c3c064d55987529d9ff30ccaf94bc69d data/cosmere/recipes/harmonium_chromium_alloy_nugget_8_compress.json -f0af5ee13e722bd1901b74f8618384f33dea1591 data/cosmere/recipes/harmonium_chromium_alloy_nugget_8_decompress.json -774cd67b375c1c82389c80c74b0eab4f785a64f5 data/cosmere/recipes/harmonium_copper_alloy_nugget_1_compress.json -84278c8b0f1faf4226210e7fe19a26cd83282afe data/cosmere/recipes/harmonium_copper_alloy_nugget_1_decompress.json -f78d0741643d3398a9c03a393497eb084b4757ef data/cosmere/recipes/harmonium_copper_alloy_nugget_2_compress.json -669a27b2da13050d50f61bb4b227c0338c4e513c data/cosmere/recipes/harmonium_copper_alloy_nugget_2_decompress.json -9580cfed702514a9f6cfd2e115c5dcb0088c84da data/cosmere/recipes/harmonium_copper_alloy_nugget_4_compress.json -e9420e2b36bc23960db056345635276898b81963 data/cosmere/recipes/harmonium_copper_alloy_nugget_4_decompress.json -c3d846e035b9af014adc323acd2c45b6175d8008 data/cosmere/recipes/harmonium_copper_alloy_nugget_8_compress.json -9f5ab1a88cab9f7974c1eed292d3ef69ff93eb90 data/cosmere/recipes/harmonium_copper_alloy_nugget_8_decompress.json -3cb1ae854ac6fc629017712cca800b99b7535a47 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_1_compress.json -db9992cc065bdc86032e060d9ed56f2fc70eefb0 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_1_decompress.json -8215ea1d616a16cf2501b9c4083f3fef461fda72 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_2_compress.json -5f0949bb4c1efd6a5a0d8a9b3c795c983e2b71a8 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_2_decompress.json -dd7b1656d88c86906d5a3ecb1d7825fd678388bb data/cosmere/recipes/harmonium_duralumin_alloy_nugget_4_compress.json -5ffc9dc7114ace3f7b2efcd5a62b381b66f6c0a7 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_4_decompress.json -0d51eb50f0333de2b55139ef88445c3906db03b1 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_8_compress.json -1de9f144f36fb7da8b3883154c89684ab1e6bd77 data/cosmere/recipes/harmonium_duralumin_alloy_nugget_8_decompress.json -d239f52161420c2b82b435f05f0731e8f29766a6 data/cosmere/recipes/harmonium_electrum_alloy_nugget_1_compress.json -ae36b9bd1129568a5c001cc28d5b27f0aa6e6804 data/cosmere/recipes/harmonium_electrum_alloy_nugget_1_decompress.json -393d6d0d9a498f75c88f98ff8b7b87f7360aaa83 data/cosmere/recipes/harmonium_electrum_alloy_nugget_2_compress.json -7e87f3264fbe46273fddbe9416fddb15cfed1c72 data/cosmere/recipes/harmonium_electrum_alloy_nugget_2_decompress.json -96f16c4ea940048e0faf98bce8b156f81318bfcb data/cosmere/recipes/harmonium_electrum_alloy_nugget_4_compress.json -b278795dab3b451dcdd8b06d7d90c44b6d2742e9 data/cosmere/recipes/harmonium_electrum_alloy_nugget_4_decompress.json -7c6ac6cf368ba005b28e0d9949c3ae32ada975b7 data/cosmere/recipes/harmonium_electrum_alloy_nugget_8_compress.json -3534f123f496b91e737df61d49aec1a292361091 data/cosmere/recipes/harmonium_electrum_alloy_nugget_8_decompress.json -a3e3aecb833416ea16846f2f9915f847b3a73215 data/cosmere/recipes/harmonium_god_nugget.json -38c81e62cabc532cd028a3f664d18ed8309856e0 data/cosmere/recipes/harmonium_gold_alloy_nugget_1_compress.json -9e37a268e92411ebba7d6d5c8f56a2f6dec3caa6 data/cosmere/recipes/harmonium_gold_alloy_nugget_1_decompress.json -8698f92d2d071af82b7c36b6b2e27751f1cea37b data/cosmere/recipes/harmonium_gold_alloy_nugget_2_compress.json -f3813b3789d591f73900fb2db5c24dbb1416f2fe data/cosmere/recipes/harmonium_gold_alloy_nugget_2_decompress.json -59326d7dd26c876e3bee33b2ca5a0d4ed98ae92e data/cosmere/recipes/harmonium_gold_alloy_nugget_4_compress.json -b845722e6044f40ebae3e4867cde6b5fb0043bcf data/cosmere/recipes/harmonium_gold_alloy_nugget_4_decompress.json -6a28b9cd86b578cf026e787801be0188928e4db8 data/cosmere/recipes/harmonium_gold_alloy_nugget_8_compress.json -b2258dd131ac2c38f5e31de6f31d1cb230b33043 data/cosmere/recipes/harmonium_gold_alloy_nugget_8_decompress.json +0e6d280912f6a91557cb8e9d0683498e75183506 data/cosmere/recipes/harmonium_god_nugget.json dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json -bd17826f4f29500588731052006ce669574820a7 data/cosmere/recipes/harmonium_iron_alloy_nugget_1_compress.json -bdb25eec52b805a4b0fe3d9848092f971bcfaade data/cosmere/recipes/harmonium_iron_alloy_nugget_1_decompress.json -e0bbdfe5d562cb3797efabf9c551b95c4b8c0af0 data/cosmere/recipes/harmonium_iron_alloy_nugget_2_compress.json -f41695a24b4ca80879a5e601617bd3c0ba2477c8 data/cosmere/recipes/harmonium_iron_alloy_nugget_2_decompress.json -7bc87ab42754202b97fba40e89b2b099975d7f18 data/cosmere/recipes/harmonium_iron_alloy_nugget_4_compress.json -ffa8b2cc83cc3caa75d7bbf0ce8004e6d3995958 data/cosmere/recipes/harmonium_iron_alloy_nugget_4_decompress.json -bc3965c00260bfaa26151374da90921e467c7aa6 data/cosmere/recipes/harmonium_iron_alloy_nugget_8_compress.json -33146f92b5468a5a32c45f9ddb593d9d24ca7ad9 data/cosmere/recipes/harmonium_iron_alloy_nugget_8_decompress.json -4c3a914463a9db67d8829cf8969ec4c4527c7f08 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_1_compress.json -6100592db7ab19b1ce17ba0b2f613e2ee3cf1c8d data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_1_decompress.json -4132207f69c77d893704d274ef3942da599b3450 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_2_compress.json -c2d2782c83c7127473902bcfdccab1012eab146f data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_2_decompress.json -83fa8da2264ad6c32686f6133b0c1ab4ee977ef8 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_4_compress.json -eb9cb6df94024fdafe0e197a1a1f02bc0aee9958 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_4_decompress.json -7e4e43dcb9c00e4e9a28211fab412e0a0c8f20f2 data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_8_compress.json -7eb4e81e8177c88be503b867f608a884f7d0c89b data/cosmere/recipes/harmonium_nicrosil_alloy_nugget_8_decompress.json -544566af081c90ed9e035a0abbb9aa8049a7b100 data/cosmere/recipes/harmonium_pewter_alloy_nugget_1_compress.json -cdd30033b4b40fb9670943037e59786b3605521d data/cosmere/recipes/harmonium_pewter_alloy_nugget_1_decompress.json -c89eb7022373ba04662f45687bf4b935c3dde189 data/cosmere/recipes/harmonium_pewter_alloy_nugget_2_compress.json -5d88f5d7722e5a1acfdb178555940981cb87d57f data/cosmere/recipes/harmonium_pewter_alloy_nugget_2_decompress.json -be48112068f4417778d353ff76e0cd7a5dd327b8 data/cosmere/recipes/harmonium_pewter_alloy_nugget_4_compress.json -db6d9bc30eeaa919dd8cdc2c8b7611e4be73b5cd data/cosmere/recipes/harmonium_pewter_alloy_nugget_4_decompress.json -12e71bf1715e54f6e2eebe060d55b84dd231fbc3 data/cosmere/recipes/harmonium_pewter_alloy_nugget_8_compress.json -2f91c122466e3aeae0a24a3b323f482a491d329d data/cosmere/recipes/harmonium_pewter_alloy_nugget_8_decompress.json -507ef161fedde89175b3e0e92b755192659c3238 data/cosmere/recipes/harmonium_steel_alloy_nugget_1_compress.json -611fb8569b724cf1d2e834b365f5bbce80086d8e data/cosmere/recipes/harmonium_steel_alloy_nugget_1_decompress.json -2487fb63c71c58517a905fbb278cf37dde9b608e data/cosmere/recipes/harmonium_steel_alloy_nugget_2_compress.json -c07599dc980240b74dd7c8edebfecf4a9db3ddb9 data/cosmere/recipes/harmonium_steel_alloy_nugget_2_decompress.json -1845d1b6bdec836db7ecee12957b3d2e9648f710 data/cosmere/recipes/harmonium_steel_alloy_nugget_4_compress.json -e460b4fb38b8a631881507fb8045eb8f1f25943c data/cosmere/recipes/harmonium_steel_alloy_nugget_4_decompress.json -67b2986b31bf24d3c9533d781e557af5109925ab data/cosmere/recipes/harmonium_steel_alloy_nugget_8_compress.json -f4ca135d67ac7d42e65d3174a3730518aa7546f7 data/cosmere/recipes/harmonium_steel_alloy_nugget_8_decompress.json -1ce405a73278aa03765e48befbb63c32f50a816c data/cosmere/recipes/harmonium_tin_alloy_nugget_1_compress.json -9583f9763c3ba75d9333035fe1f2df0fd155305b data/cosmere/recipes/harmonium_tin_alloy_nugget_1_decompress.json -c2c3c67c1c9a5879fcab11b2b32b5e86b9fd1b41 data/cosmere/recipes/harmonium_tin_alloy_nugget_2_compress.json -6b00c3ecbdb6584e77613e35cb404898a0856e03 data/cosmere/recipes/harmonium_tin_alloy_nugget_2_decompress.json -e1885b566eec537be1e8ab52da628b83fbe64a57 data/cosmere/recipes/harmonium_tin_alloy_nugget_4_compress.json -653c83bac445488b13625b776705ded085939354 data/cosmere/recipes/harmonium_tin_alloy_nugget_4_decompress.json -b820e3a332c4d6eb2668ed890c6e408114298dbc data/cosmere/recipes/harmonium_tin_alloy_nugget_8_compress.json -b8fc17780cb0acbeee37fc963fd6724f89281aa2 data/cosmere/recipes/harmonium_tin_alloy_nugget_8_decompress.json -24659936c74cb6f020e5da958bc7aafded2fe7c4 data/cosmere/recipes/harmonium_zinc_alloy_nugget_1_compress.json -0c4df963dc2ba2672ca9d8a5d628c664f57e9387 data/cosmere/recipes/harmonium_zinc_alloy_nugget_1_decompress.json -4011c8ef9391357b98fed53c87610a171f18efa2 data/cosmere/recipes/harmonium_zinc_alloy_nugget_2_compress.json -530b60796eb7367aafbcfdc314b9b9261748f007 data/cosmere/recipes/harmonium_zinc_alloy_nugget_2_decompress.json -1cd6ddd6638a66b98363d91a27a411b7fb83dede data/cosmere/recipes/harmonium_zinc_alloy_nugget_4_compress.json -279538bfe0ad4aff7bfe324befc8f8b930e49e0f data/cosmere/recipes/harmonium_zinc_alloy_nugget_4_decompress.json -61099e178810d1897ed271488be2075c4c0327ec data/cosmere/recipes/harmonium_zinc_alloy_nugget_8_compress.json -6a9cd71150f5501b06d7c49cee39e699eb13ce4b data/cosmere/recipes/harmonium_zinc_alloy_nugget_8_decompress.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -1102,300 +305,12 @@ b8fc17780cb0acbeee37fc963fd6724f89281aa2 data/cosmere/recipes/harmonium_tin_allo cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_smelting_deepslate_lead_ore.json d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json -ac422cd15df4f84f4dba86ac2dbccfb5057a305d data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_1_compress.json -d5c83624b3c2bf13b691078373897d82cb86a14e data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_1_decompress.json -e45a477846d110b45f16900171aa9da72944799d data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_2_compress.json -3a9c6febb0be4a77ba48fafb6f574d91a2c7231b data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_2_decompress.json -6218c5f0a660ae894fd37a3406b12e9995829a53 data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_4_compress.json -c4d583877df44cdf70a8106f1ef75013ae14469f data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_4_decompress.json -02595aedd2100c2787b49f13b89353bde8893bbc data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_8_compress.json -ed17443114c9da445483582662292f61407d8a81 data/cosmere/recipes/lerasatium_aluminum_alloy_nugget_8_decompress.json -3f46e43800d4f1b638375bf4c81708f3f582fc97 data/cosmere/recipes/lerasatium_aluminum_nugget_small.json -6240a66254c40457b37011d715efa8bbce64a2a5 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_1_compress.json -ca4701c2d1553a0af5dfc1eb36890f9d0c0bccc4 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_1_decompress.json -7abe29b5a828e80340de6d6c2f5f3c60427c4821 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_2_compress.json -115a75a8eb6ebfd004ed6dab348d638d020a845f data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_2_decompress.json -3f2b79869bea693065702782ce6c3c9c9df1161d data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_4_compress.json -aa143f0214efab3c45fe43b14bd14221edd802f6 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_4_decompress.json -a4e13ceec69002710c1d7adebb619cd3821cd42d data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_8_compress.json -cad94127f54253d69e3e9cdfc7288da64f46a0b8 data/cosmere/recipes/lerasatium_bendalloy_alloy_nugget_8_decompress.json -0b6e4177d542d8e60096b863dc9546c5ca98806b data/cosmere/recipes/lerasatium_bendalloy_nugget_small.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -2ae669fd16e2e46fb0aa300a4a162745f49bdf9d data/cosmere/recipes/lerasatium_brass_alloy_nugget_1_compress.json -94bdc0e31ce97a5a1967122586af148c0dd704ec data/cosmere/recipes/lerasatium_brass_alloy_nugget_1_decompress.json -f3167f2bd9fc0c66d65139c87ba3763c3aa5f0e2 data/cosmere/recipes/lerasatium_brass_alloy_nugget_2_compress.json -69de08ade4f41b3c106e34fa7e419204535a5290 data/cosmere/recipes/lerasatium_brass_alloy_nugget_2_decompress.json -ed88684c5f4e498aab482c06d40c79ff595ed82d data/cosmere/recipes/lerasatium_brass_alloy_nugget_4_compress.json -9d824d0311ac7eff35cdcc830cd7be03824ecfb9 data/cosmere/recipes/lerasatium_brass_alloy_nugget_4_decompress.json -255060c7ff738f9e8f726758b4c919a7d893b237 data/cosmere/recipes/lerasatium_brass_alloy_nugget_8_compress.json -46ee08f797aaa2070737463587ce506c8cf1d1ce data/cosmere/recipes/lerasatium_brass_alloy_nugget_8_decompress.json -bc1a97c042172cffd1727f21bcdd9b888214a947 data/cosmere/recipes/lerasatium_brass_nugget_small.json -fb606c36a95c10d8bb7182285a67675872837832 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_1_compress.json -ac6ba070929ecb0dc9ee0fe1f97365200d9be0af data/cosmere/recipes/lerasatium_bronze_alloy_nugget_1_decompress.json -01d70f87145bafbcc6c644cbef8e6fdea6fc0dc1 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_2_compress.json -641cd1fc146e6507229f9c7f36efb76107d4bba9 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_2_decompress.json -2226b538fd042c14113624878fd2b53e0372ae6c data/cosmere/recipes/lerasatium_bronze_alloy_nugget_4_compress.json -f9879bdd05203775cb9f24d4a1adf31f4bb4c777 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_4_decompress.json -ae88c3552ee5462424b1f44f89bc41238f85d8f4 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_8_compress.json -1b256f6a59b7cbea8e399bfcdb55b82745f4b770 data/cosmere/recipes/lerasatium_bronze_alloy_nugget_8_decompress.json -b7c5b4d6f847ded6d6f5bd258c4a395302e4ca5e data/cosmere/recipes/lerasatium_bronze_nugget_small.json -574dfd6488a2743910ef071e4ac38f36f57664b5 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_1_compress.json -c95688c6695b91d8bdde7e137cf5876497bd8df9 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_1_decompress.json -d1f47e2a087874ba5b8c904a4f6c18075f4ffe5d data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_2_compress.json -c58449df62b4cb54d772a54e7643549a7e3676d6 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_2_decompress.json -263f5eda1c5079feaa6c67488ebc0fe34b27bec8 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_4_compress.json -7a64bbc73fc788a68c89370192466a1d9b1e1411 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_4_decompress.json -4a3eb2c6d95fbbb0a88d81f694c30fe4030b96ce data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_8_compress.json -03c0632bb39b41efa4bd4182e85c4d90c6a0cd88 data/cosmere/recipes/lerasatium_cadmium_alloy_nugget_8_decompress.json -a4093f65b258e77aa5f6015c2d6327d003c107df data/cosmere/recipes/lerasatium_cadmium_nugget_small.json -1761cbd8a87d510e2a91ea8f7b4a29332dbc216e data/cosmere/recipes/lerasatium_chromium_alloy_nugget_1_compress.json -6bb0bffc0c529bdebc692abca8c74c67f5cffebf data/cosmere/recipes/lerasatium_chromium_alloy_nugget_1_decompress.json -34b2d73c27a4d64f7b4ef570d421c80b21be3ea5 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_2_compress.json -c569f83cdeb635d7c2c4c58c36e35cbb9e0c1869 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_2_decompress.json -96cb75ea2bf7911839ffc5e39c65ec6d0aa0b811 data/cosmere/recipes/lerasatium_chromium_alloy_nugget_4_compress.json -014dad88e044184cb0368fed8de869075c79f95d data/cosmere/recipes/lerasatium_chromium_alloy_nugget_4_decompress.json -47f4f9d34bedd7fd49b49931c493299183f5accf data/cosmere/recipes/lerasatium_chromium_alloy_nugget_8_compress.json -02b163d3ee7c7fdc9a244d715f555049abf4da0d data/cosmere/recipes/lerasatium_chromium_alloy_nugget_8_decompress.json -9ba041644cd0663ca4e240fcb97ef73afe4a0241 data/cosmere/recipes/lerasatium_chromium_nugget_small.json -ce493e50a5f267e742640dc2611e2c175602ec0f data/cosmere/recipes/lerasatium_copper_alloy_nugget_1_compress.json -205fce8c34568c78dcacaed7d2f1c1764d2da1bd data/cosmere/recipes/lerasatium_copper_alloy_nugget_1_decompress.json -4039f2ad8e7f781da1315336d3da1a6698a4f0d3 data/cosmere/recipes/lerasatium_copper_alloy_nugget_2_compress.json -ad80e5f0c125853d48f9e34bfda068325050fe76 data/cosmere/recipes/lerasatium_copper_alloy_nugget_2_decompress.json -8a8ebc63f53a61a8b07cb4169f7130a8a77e8897 data/cosmere/recipes/lerasatium_copper_alloy_nugget_4_compress.json -67328f3f0813749512dce4ce01af5203af804ac8 data/cosmere/recipes/lerasatium_copper_alloy_nugget_4_decompress.json -563e8b9319ec756eee7129fd7214df3537126426 data/cosmere/recipes/lerasatium_copper_alloy_nugget_8_compress.json -a8d01e657466c10faf5b8ff6fc4bd55dd7bc6420 data/cosmere/recipes/lerasatium_copper_alloy_nugget_8_decompress.json -8ef96b5b31056ae2023eb10b983561ee57dc05d5 data/cosmere/recipes/lerasatium_copper_nugget_small.json -17631cea355a087056b871aa5d4b272174ea88eb data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_1_compress.json -bd82fac616cc3afed9e03be63ae9dd458bbf6f3e data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_1_decompress.json -e6be9d7038106d2b995f7bd95197e000452515a1 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_2_compress.json -7fdc4cdb037b7accb9becc7648a7774a9b63cecc data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_2_decompress.json -0cd89a219c661d29f8dac4279b6e3784118e4cee data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_4_compress.json -20cc6ff9a1c5ad50fa0c1c9898ff59b77b63166e data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_4_decompress.json -9468c175e84c18dac5aeb5647a51b1004adbcdd5 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_8_compress.json -3a46affbbd430325867fbbcaff77d6d3d315ce68 data/cosmere/recipes/lerasatium_duralumin_alloy_nugget_8_decompress.json -f39e19941b862496a02bfa1518d8f06edcde3c24 data/cosmere/recipes/lerasatium_duralumin_nugget_small.json -7e570b132d383f287f3b5f8d09ec8ceb82538448 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_1_compress.json -376fb044be5fd6318cecabf69dce4fd145a05870 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_1_decompress.json -eb5927069b181e4a4405a1ec49f177532671c678 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_2_compress.json -eca9510e6afe7399a9c832f493db1b736d0769dd data/cosmere/recipes/lerasatium_electrum_alloy_nugget_2_decompress.json -92c8d747c6791376ce785cb733c4bce24b359860 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_4_compress.json -e5ddc4d5d64cdd43305a08c8ced21584bdd94c5c data/cosmere/recipes/lerasatium_electrum_alloy_nugget_4_decompress.json -ed8ad5407846bc9c29cb6d202fa9ffc3387c9a33 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_8_compress.json -d0ab464332e60b8c675f60b10d7eefe0ee9222e1 data/cosmere/recipes/lerasatium_electrum_alloy_nugget_8_decompress.json -bee974e3f45590535e1df619b9370e4cc6cc3230 data/cosmere/recipes/lerasatium_electrum_nugget_small.json -f60b76ba50426d553767f504583a83a357e75514 data/cosmere/recipes/lerasatium_god_nugget.json -5f874f16a3143ba1c22c882f8e577afb0c9a979c data/cosmere/recipes/lerasatium_gold_alloy_nugget_1_compress.json -b4b5824139800877cdcf1a96944ab86daf36cbc4 data/cosmere/recipes/lerasatium_gold_alloy_nugget_1_decompress.json -b54966fb256bab0f051bfb267386ed2fc49253e8 data/cosmere/recipes/lerasatium_gold_alloy_nugget_2_compress.json -890ddfb07df73c0e2467754159997aeda52f397b data/cosmere/recipes/lerasatium_gold_alloy_nugget_2_decompress.json -d111133b3d111e79b1bd4252e10ee6b628afe43d data/cosmere/recipes/lerasatium_gold_alloy_nugget_4_compress.json -69fd2169ffd35a72f57d956a88a3e8b1c37d7766 data/cosmere/recipes/lerasatium_gold_alloy_nugget_4_decompress.json -91693e34a8aa96c2f7535bed7c5220085a1ebb3b data/cosmere/recipes/lerasatium_gold_alloy_nugget_8_compress.json -53b52ba651d3be601dc8311aaaa6b10ec8a5fade data/cosmere/recipes/lerasatium_gold_alloy_nugget_8_decompress.json -71ce17fc295e1eb65b7225645aaec055a1578bda data/cosmere/recipes/lerasatium_gold_nugget_small.json +4a79159d26ea0003e90a59317d9d032cdf0a1bac data/cosmere/recipes/lerasatium_god_nugget.json da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json -20b686e05824f003d6f1748dfc6a17f5d8c49fef data/cosmere/recipes/lerasatium_iron_alloy_nugget_1_compress.json -93081145bc7c3453afc4c44d50e3460e325a7452 data/cosmere/recipes/lerasatium_iron_alloy_nugget_1_decompress.json -6b729c8c5f1425d5b71e43695907a4791a1214e4 data/cosmere/recipes/lerasatium_iron_alloy_nugget_2_compress.json -ea1080658aa6c6aa15d6b8af8b97bb0994ffe92e data/cosmere/recipes/lerasatium_iron_alloy_nugget_2_decompress.json -faeeb956c6410b77ce3349ba8e9aae22a1e4ff33 data/cosmere/recipes/lerasatium_iron_alloy_nugget_4_compress.json -04ab2014d5857096be717914c332b9379a664b35 data/cosmere/recipes/lerasatium_iron_alloy_nugget_4_decompress.json -dd368e1a44d2442555c8d1de4268d40aba6f2fe0 data/cosmere/recipes/lerasatium_iron_alloy_nugget_8_compress.json -59c91251af31c9b5a9afab8698c3967741ba998f data/cosmere/recipes/lerasatium_iron_alloy_nugget_8_decompress.json -c21ea46cefdb4f341126cabc00d6060ccf052fb8 data/cosmere/recipes/lerasatium_iron_nugget_small.json -0c5cb6cbdfb4e95a1ca14550957e8436dff4fd09 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_1_compress.json -e5d0893030bf7c959199f66303e72f5ae00f0aa3 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_1_decompress.json -0b8b665c5ef84d98b7ba1ae77151843c45dca479 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_2_compress.json -f28dc768f2c8f11c68b91fa2592694a33ee4a5b4 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_2_decompress.json -b81ad705d99e0a2af2706ae67695602da25f6068 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_4_compress.json -cbd86ac72f250ac3e9c98f2bb671d6ee5e9736e3 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_4_decompress.json -3fab4c454d1ceb4fe57336040155ef0720ffbd78 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_8_compress.json -4ee4a36d1d4c1b942d86bb148a2e11b3c59e1029 data/cosmere/recipes/lerasatium_nicrosil_alloy_nugget_8_decompress.json -9b7ea045793cd3dbb4963c80df20fb55deae9749 data/cosmere/recipes/lerasatium_nicrosil_nugget_small.json -b7c07758e42ccf57c031066ea4e1d0a33d53ba1f data/cosmere/recipes/lerasatium_pewter_alloy_nugget_1_compress.json -cd309479d5d96d23ab4ef4b8956e558c7e1df343 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_1_decompress.json -604dee0240d2044f17bd8e379f820744abd51d40 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_2_compress.json -21b660cae99e9d16184d97d9e1111e728311e313 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_2_decompress.json -1e6c3e7b5eb9e469bf4d74281b1e235459397472 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_4_compress.json -8f957d0c825ab0f998d568bc5821ff570e118742 data/cosmere/recipes/lerasatium_pewter_alloy_nugget_4_decompress.json -771409ff925e787457c1733963684a527b1ecfcf data/cosmere/recipes/lerasatium_pewter_alloy_nugget_8_compress.json -46139a6466b5a93aa200bcbc97cc13ebf69401fb data/cosmere/recipes/lerasatium_pewter_alloy_nugget_8_decompress.json -1cc188492ae3eef4f4fca08ddd1691fd39b220ad data/cosmere/recipes/lerasatium_pewter_nugget_small.json -60bbe8f04d35628d9d34ed2420983fc1f294579d data/cosmere/recipes/lerasatium_steel_alloy_nugget_1_compress.json -81d93bcecdafd05b03f3105273ebdf60676cc502 data/cosmere/recipes/lerasatium_steel_alloy_nugget_1_decompress.json -4e9bd9c0299f05588d3cf497356fe3755d765815 data/cosmere/recipes/lerasatium_steel_alloy_nugget_2_compress.json -f019ab1c45d82424ed47eeecda08b4a680249b85 data/cosmere/recipes/lerasatium_steel_alloy_nugget_2_decompress.json -8ee52305418843d2dd2c50fbc465fb74e0f0aa26 data/cosmere/recipes/lerasatium_steel_alloy_nugget_4_compress.json -55f548abd58e057c594bc211c6dfd261b8b10d6c data/cosmere/recipes/lerasatium_steel_alloy_nugget_4_decompress.json -0b8c71df6fcb2ec5a2fe3836555c5bf15e12c876 data/cosmere/recipes/lerasatium_steel_alloy_nugget_8_compress.json -5e9c2d8b49fc041e3c1f2cc1e393e8ae235ec51a data/cosmere/recipes/lerasatium_steel_alloy_nugget_8_decompress.json -532b3db57454558a8fecab8be3ed4ce05b4adbcf data/cosmere/recipes/lerasatium_steel_nugget_small.json -286d975c4c303ac588b77ff141b3dc4424cf5ca2 data/cosmere/recipes/lerasatium_tin_alloy_nugget_1_compress.json -31b120968073c43ac55619f4c050e4b62fec2608 data/cosmere/recipes/lerasatium_tin_alloy_nugget_1_decompress.json -f2277e619071b7e22868033d475bac8781338560 data/cosmere/recipes/lerasatium_tin_alloy_nugget_2_compress.json -82ab78a838f3ecbe256fc9326f5cecb95ff5d0c2 data/cosmere/recipes/lerasatium_tin_alloy_nugget_2_decompress.json -3c58645d0923a177db5ceeb5638c938820ddb6c8 data/cosmere/recipes/lerasatium_tin_alloy_nugget_4_compress.json -9cdaa8e5c71d75317a08eb76d75f03f2fdf32b0f data/cosmere/recipes/lerasatium_tin_alloy_nugget_4_decompress.json -c3a416c9308a916660e1c1303775ed81205aad1f data/cosmere/recipes/lerasatium_tin_alloy_nugget_8_compress.json -95ce4904037b09d0b5917898e175accc8186fd52 data/cosmere/recipes/lerasatium_tin_alloy_nugget_8_decompress.json -cea07251b8b35fc6fc455624f7af7a8c144b85e9 data/cosmere/recipes/lerasatium_tin_nugget_small.json -b625626933ac97bc377bfe1270fa6f29da1e6948 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_1_compress.json -014a042b1dda9c8451857a05dd45e904245eada4 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_1_decompress.json -90c12cf73aa808511b1b6b65575bed0b1e5a4e78 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_2_compress.json -55983e031aeaeda3ba364a27ef11872ccc73387f data/cosmere/recipes/lerasatium_zinc_alloy_nugget_2_decompress.json -7605444ac231baa3fc9b5896ddbe480e5b4d5348 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_4_compress.json -4e34fcd0316f6ee1034ab985b157be8adba4726f data/cosmere/recipes/lerasatium_zinc_alloy_nugget_4_decompress.json -aef913824e06d9d87bb6f67f4199b2c8db654c61 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_8_compress.json -6c9c00393326794b96ca7b30838cfca063884f95 data/cosmere/recipes/lerasatium_zinc_alloy_nugget_8_decompress.json -769708c9bc2de8b4e8076becdacc1741fea2e0f2 data/cosmere/recipes/lerasatium_zinc_nugget_small.json -3186df9b9f7cb53c435c2eb6130ad4a8b3819f75 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_1_compress.json -c1cf96d42fbc817e07fb201873af8aa23005e5b9 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_1_decompress.json -a8c18414d2884cef73122ca650f9e286b8dee0c1 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_2_compress.json -0398490c0541faaf01cc927a1f3f0fe6f93e82bd data/cosmere/recipes/lerasium_aluminum_alloy_nugget_2_decompress.json -4e9d53ddee84001fb36617d050034b2b3b8bb416 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_4_compress.json -e44b86836eccdbe91e7528347ec8087aa9424806 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_4_decompress.json -dbc63dd637dc756d19700f416ad9002d5db37443 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_8_compress.json -daa3681ec288cd9a6c05421ebac6a3e7cdc53d40 data/cosmere/recipes/lerasium_aluminum_alloy_nugget_8_decompress.json -48f7c92918e13cdb7c8da6ee5479d30ecc8c1fd5 data/cosmere/recipes/lerasium_aluminum_nugget_small.json -6461e7cc0154c0b51cc79b63c748e75a51e75b46 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_1_compress.json -01859b3a653278d495543c08c9d0e9825095bf92 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_1_decompress.json -f590267997af7840e1832400f4ed8ec971960f27 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_2_compress.json -49b081c8f85124abf4ee5a591f7b166d2bee3b85 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_2_decompress.json -71c8a89f88fedb9cbd39c1f347cf03a98eac5eae data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_4_compress.json -e3be355fcc4eebfcadc2e14dcf4421bf18979ee1 data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_4_decompress.json -561223aad22e3e594ede6f7732e50de974a9d86f data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_8_compress.json -2ee42eca8b89a492119532f4683e9a7af4ecdf2d data/cosmere/recipes/lerasium_bendalloy_alloy_nugget_8_decompress.json -7ad1ef04b6fd3ee470556b6adef3d0ec522077c4 data/cosmere/recipes/lerasium_bendalloy_nugget_small.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -15e78b65ab7e2e901d565d0ab349373b4e50674c data/cosmere/recipes/lerasium_brass_alloy_nugget_1_compress.json -dbe19f89be31ac16280a1ab4d8a4410503c78547 data/cosmere/recipes/lerasium_brass_alloy_nugget_1_decompress.json -62b5a12070014bb6acbb215f3f3bf3bce067ac0d data/cosmere/recipes/lerasium_brass_alloy_nugget_2_compress.json -989133bea691f4afd98d0b782a4b096e7f0058de data/cosmere/recipes/lerasium_brass_alloy_nugget_2_decompress.json -6e471825ea0606f48e7fcc9ba022651f51f1b616 data/cosmere/recipes/lerasium_brass_alloy_nugget_4_compress.json -342db7eb0575de57c5f25d2ee012459ee7301bd0 data/cosmere/recipes/lerasium_brass_alloy_nugget_4_decompress.json -120bad3a0d1c241a5993be4d9977f9e10be23566 data/cosmere/recipes/lerasium_brass_alloy_nugget_8_compress.json -8d89273f7c746ea388e0f8b70c29dce493de5e1a data/cosmere/recipes/lerasium_brass_alloy_nugget_8_decompress.json -a0a8078694aa153a2240b339d4492ac32d95afa0 data/cosmere/recipes/lerasium_brass_nugget_small.json -3a91de4b15e9f5689aa99da63a451e9a303430e0 data/cosmere/recipes/lerasium_bronze_alloy_nugget_1_compress.json -ab6f2832b2f99502eb24f38f36fef73787f0366d data/cosmere/recipes/lerasium_bronze_alloy_nugget_1_decompress.json -40d463274f763f007917d973f80d6033d49c1453 data/cosmere/recipes/lerasium_bronze_alloy_nugget_2_compress.json -7e29d56841c631fc9598e523627edfd4881471ee data/cosmere/recipes/lerasium_bronze_alloy_nugget_2_decompress.json -22789e2c60ded48cec21f556529878b1be72cec1 data/cosmere/recipes/lerasium_bronze_alloy_nugget_4_compress.json -c2a03509df74a01d26e9b30a11f2737210deb7d6 data/cosmere/recipes/lerasium_bronze_alloy_nugget_4_decompress.json -ab7a3aadb545c1bdfaace5e2fc49b1cb74121853 data/cosmere/recipes/lerasium_bronze_alloy_nugget_8_compress.json -08f7e057188f3e0422b9ec51b5b5d0d7b63b79ac data/cosmere/recipes/lerasium_bronze_alloy_nugget_8_decompress.json -e2679afc38ac65c26b43f86fa0d702b7393c9b86 data/cosmere/recipes/lerasium_bronze_nugget_small.json -ce1e6cb66607f3c8299cab65818f20ff35a94677 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_1_compress.json -ba571ce8752a3307153d1bf4421ede486d891f38 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_1_decompress.json -03590c4cc46b9f3ea606f87e1d2c1ca579ba3448 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_2_compress.json -906bc0602a20a4552c690298a5186ad6a5cdc297 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_2_decompress.json -9a2bd30cd1abd867985f9201e50e5dc8043f6921 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_4_compress.json -37fe19e59744ff41c6cf443a6064c18bc85fbbc1 data/cosmere/recipes/lerasium_cadmium_alloy_nugget_4_decompress.json -6ad61396973bca099d19e7d6e4feb427be912a2d data/cosmere/recipes/lerasium_cadmium_alloy_nugget_8_compress.json -8e1536de2ce4dec50891801dd22aa69ffd6caa1c data/cosmere/recipes/lerasium_cadmium_alloy_nugget_8_decompress.json -51efccd94603f73d3e9851b1412784b0883694ab data/cosmere/recipes/lerasium_cadmium_nugget_small.json -34af0c44196df15e00252476aeca1fdf566ba1af data/cosmere/recipes/lerasium_chromium_alloy_nugget_1_compress.json -0aaf0469554b2b8baeb7e70cecea63a77994b7f2 data/cosmere/recipes/lerasium_chromium_alloy_nugget_1_decompress.json -62db1d31623ccb3647c66c003b6d83b796e89c78 data/cosmere/recipes/lerasium_chromium_alloy_nugget_2_compress.json -9dda486a90c5e2a45d74fd4a59a5d52daf611fab data/cosmere/recipes/lerasium_chromium_alloy_nugget_2_decompress.json -5eef7f7650c709616a3def516959c0ff0c46bdc5 data/cosmere/recipes/lerasium_chromium_alloy_nugget_4_compress.json -dbf0d3fa87a6e0342cd5aeb99fae3c289907b7ac data/cosmere/recipes/lerasium_chromium_alloy_nugget_4_decompress.json -1671ee519fc62d5925076c1a9608db6e7b13395f data/cosmere/recipes/lerasium_chromium_alloy_nugget_8_compress.json -b7572f137f7f7629efaa6881158d85706bf7b61e data/cosmere/recipes/lerasium_chromium_alloy_nugget_8_decompress.json -a73782042adf901f1715d6b01ef4a5cc492a876b data/cosmere/recipes/lerasium_chromium_nugget_small.json -2af046b3fb3ee1d3da9a7af899aad226aca7209c data/cosmere/recipes/lerasium_copper_alloy_nugget_1_compress.json -d1f23cfe6feceef6b26f10993ec7c27af0312954 data/cosmere/recipes/lerasium_copper_alloy_nugget_1_decompress.json -a1912fc3a630bd1c6981c4ca5a2996e35c4b5a35 data/cosmere/recipes/lerasium_copper_alloy_nugget_2_compress.json -027dcfbbd973a0678f7da41e4fd83dcc0f16e28a data/cosmere/recipes/lerasium_copper_alloy_nugget_2_decompress.json -87ca0605885fe20b866037a43a447dcff51ad5c5 data/cosmere/recipes/lerasium_copper_alloy_nugget_4_compress.json -5808faac8d0dccb5c8d20875b1c544bd9528e30e data/cosmere/recipes/lerasium_copper_alloy_nugget_4_decompress.json -3fc63ae4d0aa589c1229d55147f696d1ce41e1cb data/cosmere/recipes/lerasium_copper_alloy_nugget_8_compress.json -df61b4fc0f4c34f9d44868f408e8d7bf0ff3abfc data/cosmere/recipes/lerasium_copper_alloy_nugget_8_decompress.json -d89642c61d1101a7e35cb8cc85f3bdcd4d73dace data/cosmere/recipes/lerasium_copper_nugget_small.json -5d4f2569f66ce2c5a3bc3c8b6e46c6f23c1b6bf9 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_1_compress.json -80d874a6c6afb672196ccebd57432b7d5badd63b data/cosmere/recipes/lerasium_duralumin_alloy_nugget_1_decompress.json -d0c1ecd9c03ce83b4fb39b2f39f6fdabdd2b9997 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_2_compress.json -7ca672baa231d3c9b417f2da32096196d98de265 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_2_decompress.json -43204320379d8ca2f0316aba550d046701dde4fd data/cosmere/recipes/lerasium_duralumin_alloy_nugget_4_compress.json -2aa1cc193c2ad5d55a074247169d1ccb4a89ec46 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_4_decompress.json -40890d9bc7e03ef6f1a5493e1d521b2da8a41a2b data/cosmere/recipes/lerasium_duralumin_alloy_nugget_8_compress.json -ea0300ab4580541a01ae6442104ec0465e3ca907 data/cosmere/recipes/lerasium_duralumin_alloy_nugget_8_decompress.json -1d27a2fb58d8c7b47c08ef72d5d7b939786d00b6 data/cosmere/recipes/lerasium_duralumin_nugget_small.json -56cd3a55fcee033763cf4f3945e5e8c9e4b6d082 data/cosmere/recipes/lerasium_electrum_alloy_nugget_1_compress.json -b88b38756e2b2a2963e42d1355239c387b13db19 data/cosmere/recipes/lerasium_electrum_alloy_nugget_1_decompress.json -93189bf7996724d292a82def0085ea16a013ccff data/cosmere/recipes/lerasium_electrum_alloy_nugget_2_compress.json -e81ced2c812e61897afe382676f2f47413473731 data/cosmere/recipes/lerasium_electrum_alloy_nugget_2_decompress.json -38c8eb024f9cdf99fe3dc4436d80d86aa51592b3 data/cosmere/recipes/lerasium_electrum_alloy_nugget_4_compress.json -e2e0f2e1205d19679fb01fa9445e01c07c64acb9 data/cosmere/recipes/lerasium_electrum_alloy_nugget_4_decompress.json -108d3941c5d96d652af86e424866c6be8953a653 data/cosmere/recipes/lerasium_electrum_alloy_nugget_8_compress.json -477f68ff9368490d114e1a691e884e3fc5230efb data/cosmere/recipes/lerasium_electrum_alloy_nugget_8_decompress.json -c00b54f6c6ef1684aac2d244c3a318bedd19fcfd data/cosmere/recipes/lerasium_electrum_nugget_small.json -b2c85cfca76827cc42116718857ad6b72de3092b data/cosmere/recipes/lerasium_god_nugget.json -9af3ad37def6b5189f63781b79811f1ec56e43d8 data/cosmere/recipes/lerasium_gold_alloy_nugget_1_compress.json -b5f197e3842f37695c74ba3e35c570414992a3bd data/cosmere/recipes/lerasium_gold_alloy_nugget_1_decompress.json -232f3e0326cbc42cb5425beb4350f97e51ab007b data/cosmere/recipes/lerasium_gold_alloy_nugget_2_compress.json -5e009133c0fd95444787d15ccedf23fae1f97e13 data/cosmere/recipes/lerasium_gold_alloy_nugget_2_decompress.json -72cb94811e7f74696858843805f956b92b7b8305 data/cosmere/recipes/lerasium_gold_alloy_nugget_4_compress.json -99d4ee1eba033c9d1d846702d53b8b930756a9f5 data/cosmere/recipes/lerasium_gold_alloy_nugget_4_decompress.json -d2634b54dbfd532ec0d4c1a2f2df01633da037b8 data/cosmere/recipes/lerasium_gold_alloy_nugget_8_compress.json -aec0451d3f7bc114fb296226feb922f760f9f355 data/cosmere/recipes/lerasium_gold_alloy_nugget_8_decompress.json -aed63949939f1a5b8e14126d82b887146731b13d data/cosmere/recipes/lerasium_gold_nugget_small.json +932902d1f7a947eff6c042688eafde87a94299bd data/cosmere/recipes/lerasium_god_nugget.json ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json -03f0af2adf5132062dd46dc8e6edc55e5908c7f9 data/cosmere/recipes/lerasium_iron_alloy_nugget_1_compress.json -3db5182d6dd832044cf87b486ae6ae8abe3216bc data/cosmere/recipes/lerasium_iron_alloy_nugget_1_decompress.json -663cd5d804b85ec05313f4e1e3fa9b16161ddd59 data/cosmere/recipes/lerasium_iron_alloy_nugget_2_compress.json -1c49821c9e1785de48a00ba40d96031c2dbc7aac data/cosmere/recipes/lerasium_iron_alloy_nugget_2_decompress.json -c9cded7129d77cc6bbfa776062d078b3e0c280c7 data/cosmere/recipes/lerasium_iron_alloy_nugget_4_compress.json -99db414b4e30256c0f0c99f87c6d84f443fa791b data/cosmere/recipes/lerasium_iron_alloy_nugget_4_decompress.json -db9d28f40788e37a63f89caa82d5ba59bc1be163 data/cosmere/recipes/lerasium_iron_alloy_nugget_8_compress.json -1fd2607d46fd613df766155da467af24b1156548 data/cosmere/recipes/lerasium_iron_alloy_nugget_8_decompress.json -348145531311fbf9339ac706c4a79ab726202cf6 data/cosmere/recipes/lerasium_iron_nugget_small.json -b8ec97be11c4b13d7c075d2a429271cdfd55e6dd data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_1_compress.json -ba9eecea7c40cbcb1728b2ef87f503620c880aa1 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_1_decompress.json -0877f921ea2ed2b485bf8acc74e9d418929b3fe5 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_2_compress.json -bf1462d1c5f3104c9ebdef3b011d3bbe1c8b13aa data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_2_decompress.json -4e56a6a11120355cd3e00e361fbe30db0a10dd9e data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_4_compress.json -a01c73556c43f32d514ee1bbb3bda167def0fde1 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_4_decompress.json -770d90880aeea990f03af51a30c52752e2358abb data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_8_compress.json -88c127e85965543037ba45bfc6e8d5a5732223b7 data/cosmere/recipes/lerasium_nicrosil_alloy_nugget_8_decompress.json -8762f5d9dfa9b1bfad3872d9318f32c8d81c4bf6 data/cosmere/recipes/lerasium_nicrosil_nugget_small.json -f11ec1b82ea4a85884aac49a8147a1d2e7ca1f90 data/cosmere/recipes/lerasium_pewter_alloy_nugget_1_compress.json -94fd22357ee6ae75fe60761c69b462640c711e80 data/cosmere/recipes/lerasium_pewter_alloy_nugget_1_decompress.json -ff65d2def48be4a8a3e5ca9780bc8e2892380f15 data/cosmere/recipes/lerasium_pewter_alloy_nugget_2_compress.json -17cf482d5e6e7a5ac26d5b8358fa16a1c33e9565 data/cosmere/recipes/lerasium_pewter_alloy_nugget_2_decompress.json -2c725ca65ab39480d89193b8ae4d82f0f011a029 data/cosmere/recipes/lerasium_pewter_alloy_nugget_4_compress.json -fdef5b21d12bbd562e27b15a7a7cc1d84d140efd data/cosmere/recipes/lerasium_pewter_alloy_nugget_4_decompress.json -ff9cbd09ff48a19f510a502d4c6a61090c891f99 data/cosmere/recipes/lerasium_pewter_alloy_nugget_8_compress.json -d0c2b4ef4164d9f992b67b7cffb95512d73dc2bc data/cosmere/recipes/lerasium_pewter_alloy_nugget_8_decompress.json -c943a64e016a05bc42f366cc8a633a56fe2367e5 data/cosmere/recipes/lerasium_pewter_nugget_small.json -9dc2814b9cb3331ff05adfbe55c502f49c64a8f1 data/cosmere/recipes/lerasium_steel_alloy_nugget_1_compress.json -771084ad03f0879dc185cc581f24dc4a9485982b data/cosmere/recipes/lerasium_steel_alloy_nugget_1_decompress.json -541ac6d48eb9ed3c561f256e13a1b8ccf5e76562 data/cosmere/recipes/lerasium_steel_alloy_nugget_2_compress.json -87145659ad71ea19f906dd90004749f6a4ee38fa data/cosmere/recipes/lerasium_steel_alloy_nugget_2_decompress.json -5c7d4999bec6fb8ab236723e4bc65f861376199f data/cosmere/recipes/lerasium_steel_alloy_nugget_4_compress.json -9ede0b8ba8e8640d5d2023366e1675bd1593bbe0 data/cosmere/recipes/lerasium_steel_alloy_nugget_4_decompress.json -beaa0f456375f0b996cde4b0f6883705f1a11379 data/cosmere/recipes/lerasium_steel_alloy_nugget_8_compress.json -d112085af434c9a54b69ad7ebd877055d2ae0725 data/cosmere/recipes/lerasium_steel_alloy_nugget_8_decompress.json -555aa32af3582a874d6fa4405c491dd8f12553c2 data/cosmere/recipes/lerasium_steel_nugget_small.json -c5491246e63974e284ad4c0926a41bfb512fcb8d data/cosmere/recipes/lerasium_tin_alloy_nugget_1_compress.json -79441bdcdc4936abaeb4b56c6ad7cba5f6a30fb8 data/cosmere/recipes/lerasium_tin_alloy_nugget_1_decompress.json -df30b5cccffdd807a720c5dc46d1222e8a12bc6a data/cosmere/recipes/lerasium_tin_alloy_nugget_2_compress.json -9b4b413c46f118e27ed015ec09b9409becb2f7dc data/cosmere/recipes/lerasium_tin_alloy_nugget_2_decompress.json -27a010c19363d23b66ca7d2603a719aae5b0432a data/cosmere/recipes/lerasium_tin_alloy_nugget_4_compress.json -abbc7d92c1d8a9e791f6a7bb722c4d5422469dfc data/cosmere/recipes/lerasium_tin_alloy_nugget_4_decompress.json -08d43d748adf838137b1f0efff806e6c55f7cdb6 data/cosmere/recipes/lerasium_tin_alloy_nugget_8_compress.json -2e43bacad9b5f7a646a0daa38d6c624fcac78de2 data/cosmere/recipes/lerasium_tin_alloy_nugget_8_decompress.json -853133514e4391bbb49f5ff1e7cd7d9713a57d7b data/cosmere/recipes/lerasium_tin_nugget_small.json -2b4b49f35130a19cb25789c959403029534645a2 data/cosmere/recipes/lerasium_zinc_alloy_nugget_1_compress.json -c47a483264b6edb6693482789a60688fccbaf804 data/cosmere/recipes/lerasium_zinc_alloy_nugget_1_decompress.json -3708cf7e0cf71c46cee1b5588376835917574445 data/cosmere/recipes/lerasium_zinc_alloy_nugget_2_compress.json -dcae8225d69b3bb9ffc24edfaa0d2debc6e0e37a data/cosmere/recipes/lerasium_zinc_alloy_nugget_2_decompress.json -3024c43f8600728e0405f13877cd76f8ac5729b8 data/cosmere/recipes/lerasium_zinc_alloy_nugget_4_compress.json -e1f6be9833dd007bba763e83ade1606a72951084 data/cosmere/recipes/lerasium_zinc_alloy_nugget_4_decompress.json -c8b5ac09e56353f44d0fbff3116be4d40ee7c456 data/cosmere/recipes/lerasium_zinc_alloy_nugget_8_compress.json -79c5de94f8771828ac4908a111779aa47a0a6c50 data/cosmere/recipes/lerasium_zinc_alloy_nugget_8_decompress.json -3cc3c56a87df7c51dfacce19778aef035c89577f data/cosmere/recipes/lerasium_zinc_nugget_small.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index c0a9c2be7..ced96dd8c 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-09T18:08:07.0567327 Languages: en_us -0af393ba76d33fe388243c6e94ca4a99fb011ea1 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-11T22:17:29.871834 Languages: en_us +0d68afeb03dfb278a3b63c6d85389004175bef18 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 0c8132ad4..182de6eff 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -51,7 +51,6 @@ "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "item.cosmere.aluminum_ingot": "Aluminum Ingot", "item.cosmere.aluminum_nugget": "Aluminum Nugget", - "item.cosmere.atium_alloy_nugget": "Atium Alloy Nugget", "item.cosmere.atium_god_nugget": "Atium God Nugget", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_nugget": "Atium Nugget", @@ -81,7 +80,6 @@ "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.guide": "Ars Arcanum", - "item.cosmere.harmonium_alloy_nugget": "Harmonium Alloy Nugget", "item.cosmere.harmonium_god_nugget": "Harmonium God Nugget", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", @@ -90,14 +88,52 @@ "item.cosmere.iron_nugget": "Iron Nugget", "item.cosmere.lead_ingot": "Lead Ingot", "item.cosmere.lead_nugget": "Lead Nugget", - "item.cosmere.lerasatium_alloy_nugget": "Lerasatium Alloy Nugget", + "item.cosmere.lerasatium_aluminum_alloy_nugget": "Lerasatium Aluminum Alloy Nugget", + "item.cosmere.lerasatium_bendalloy_alloy_nugget": "Lerasatium Bendalloy Alloy Nugget", + "item.cosmere.lerasatium_brass_alloy_nugget": "Lerasatium Brass Alloy Nugget", + "item.cosmere.lerasatium_bronze_alloy_nugget": "Lerasatium Bronze Alloy Nugget", + "item.cosmere.lerasatium_cadmium_alloy_nugget": "Lerasatium Cadmium Alloy Nugget", + "item.cosmere.lerasatium_chromium_alloy_nugget": "Lerasatium Chromium Alloy Nugget", + "item.cosmere.lerasatium_copper_alloy_nugget": "Lerasatium Copper Alloy Nugget", + "item.cosmere.lerasatium_duralumin_alloy_nugget": "Lerasatium Duralumin Alloy Nugget", + "item.cosmere.lerasatium_electrum_alloy_nugget": "Lerasatium Electrum Alloy Nugget", "item.cosmere.lerasatium_god_nugget": "Lerasatium God Nugget", + "item.cosmere.lerasatium_gold_alloy_nugget": "Lerasatium Gold Alloy Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", + "item.cosmere.lerasatium_iron_alloy_nugget": "Lerasatium Iron Alloy Nugget", + "item.cosmere.lerasatium_lead_alloy_nugget": "Lerasatium Lead Alloy Nugget", + "item.cosmere.lerasatium_malatium_alloy_nugget": "Lerasatium Malatium Alloy Nugget", + "item.cosmere.lerasatium_nickel_alloy_nugget": "Lerasatium Nickel Alloy Nugget", + "item.cosmere.lerasatium_nicrosil_alloy_nugget": "Lerasatium Nicrosil Alloy Nugget", "item.cosmere.lerasatium_nugget": "Lerasatium Nugget", - "item.cosmere.lerasium_alloy_nugget": "Lerasium Alloy Nugget", + "item.cosmere.lerasatium_pewter_alloy_nugget": "Lerasatium Pewter Alloy Nugget", + "item.cosmere.lerasatium_silver_alloy_nugget": "Lerasatium Silver Alloy Nugget", + "item.cosmere.lerasatium_steel_alloy_nugget": "Lerasatium Steel Alloy Nugget", + "item.cosmere.lerasatium_tin_alloy_nugget": "Lerasatium Tin Alloy Nugget", + "item.cosmere.lerasatium_zinc_alloy_nugget": "Lerasatium Zinc Alloy Nugget", + "item.cosmere.lerasium_aluminum_alloy_nugget": "Lerasium Aluminum Alloy Nugget", + "item.cosmere.lerasium_bendalloy_alloy_nugget": "Lerasium Bendalloy Alloy Nugget", + "item.cosmere.lerasium_brass_alloy_nugget": "Lerasium Brass Alloy Nugget", + "item.cosmere.lerasium_bronze_alloy_nugget": "Lerasium Bronze Alloy Nugget", + "item.cosmere.lerasium_cadmium_alloy_nugget": "Lerasium Cadmium Alloy Nugget", + "item.cosmere.lerasium_chromium_alloy_nugget": "Lerasium Chromium Alloy Nugget", + "item.cosmere.lerasium_copper_alloy_nugget": "Lerasium Copper Alloy Nugget", + "item.cosmere.lerasium_duralumin_alloy_nugget": "Lerasium Duralumin Alloy Nugget", + "item.cosmere.lerasium_electrum_alloy_nugget": "Lerasium Electrum Alloy Nugget", "item.cosmere.lerasium_god_nugget": "Lerasium God Nugget", + "item.cosmere.lerasium_gold_alloy_nugget": "Lerasium Gold Alloy Nugget", "item.cosmere.lerasium_ingot": "Lerasium Ingot", + "item.cosmere.lerasium_iron_alloy_nugget": "Lerasium Iron Alloy Nugget", + "item.cosmere.lerasium_lead_alloy_nugget": "Lerasium Lead Alloy Nugget", + "item.cosmere.lerasium_malatium_alloy_nugget": "Lerasium Malatium Alloy Nugget", + "item.cosmere.lerasium_nickel_alloy_nugget": "Lerasium Nickel Alloy Nugget", + "item.cosmere.lerasium_nicrosil_alloy_nugget": "Lerasium Nicrosil Alloy Nugget", "item.cosmere.lerasium_nugget": "Lerasium Nugget", + "item.cosmere.lerasium_pewter_alloy_nugget": "Lerasium Pewter Alloy Nugget", + "item.cosmere.lerasium_silver_alloy_nugget": "Lerasium Silver Alloy Nugget", + "item.cosmere.lerasium_steel_alloy_nugget": "Lerasium Steel Alloy Nugget", + "item.cosmere.lerasium_tin_alloy_nugget": "Lerasium Tin Alloy Nugget", + "item.cosmere.lerasium_zinc_alloy_nugget": "Lerasium Zinc Alloy Nugget", "item.cosmere.malatium_ingot": "Malatium Ingot", "item.cosmere.malatium_nugget": "Malatium Nugget", "item.cosmere.nickel_ingot": "Nickel Ingot", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json similarity index 100% rename from src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_alloy_nugget.json rename to src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json new file mode 100644 index 000000000..9952b7116 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasatium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json similarity index 100% rename from src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_alloy_nugget.json rename to src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json similarity index 58% rename from src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json rename to src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json index 5bcb4cf96..fb9f1d549 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/atium_nugget" + "layer0": "cosmere:item/lerasium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json similarity index 57% rename from src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json rename to src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json index 87d5a9720..fb9f1d549 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/harmonium_nugget" + "layer0": "cosmere:item/lerasium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json new file mode 100644 index 000000000..fb9f1d549 --- /dev/null +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "cosmere:item/lerasium_nugget" + } +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json index 4db2a11ad..cf541918e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json @@ -7,7 +7,6 @@ } ], "result": { - "item": "cosmere:atium_god_nugget", - "nbt": "{nuggetSize:16}" + "item": "cosmere:atium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json new file mode 100644 index 000000000..db44272f5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json @@ -0,0 +1,4 @@ +{ + "type": "cosmere:crafting_god_metal_alloy_nugget_compress", + "category": "misc" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json new file mode 100644 index 000000000..e8ebbd3b0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json @@ -0,0 +1,4 @@ +{ + "type": "cosmere:crafting_god_metal_alloy_nugget_decompress", + "category": "misc" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json new file mode 100644 index 000000000..bca3885d8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json @@ -0,0 +1,4 @@ +{ + "type": "cosmere:crafting_god_metal_alloy_nugget_recipe", + "category": "misc" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json index 30b6cf46b..a8c1b621d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json @@ -7,7 +7,6 @@ } ], "result": { - "item": "cosmere:harmonium_god_nugget", - "nbt": "{nuggetSize:16}" + "item": "cosmere:harmonium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json index b93dac98a..0bf5f47d6 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json @@ -7,7 +7,6 @@ } ], "result": { - "item": "cosmere:lerasatium_god_nugget", - "nbt": "{nuggetSize:16}" + "item": "cosmere:lerasatium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json index 59cce3e3a..d70b2d55e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json @@ -7,7 +7,6 @@ } ], "result": { - "item": "cosmere:lerasium_god_nugget", - "nbt": "{nuggetSize:16}" + "item": "cosmere:lerasium_god_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index a21795ff4..2c2f80ab1 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -1,32 +1,68 @@ { "values": [ "#forge:nuggets/iron", + "#forge:nuggets/lerasium_iron_alloy", + "#forge:nuggets/lerasatium_iron_alloy", "#forge:nuggets/steel", + "#forge:nuggets/lerasium_steel_alloy", + "#forge:nuggets/lerasatium_steel_alloy", "#forge:nuggets/tin", + "#forge:nuggets/lerasium_tin_alloy", + "#forge:nuggets/lerasatium_tin_alloy", "#forge:nuggets/pewter", + "#forge:nuggets/lerasium_pewter_alloy", + "#forge:nuggets/lerasatium_pewter_alloy", "#forge:nuggets/zinc", + "#forge:nuggets/lerasium_zinc_alloy", + "#forge:nuggets/lerasatium_zinc_alloy", "#forge:nuggets/brass", + "#forge:nuggets/lerasium_brass_alloy", + "#forge:nuggets/lerasatium_brass_alloy", "#forge:nuggets/copper", + "#forge:nuggets/lerasium_copper_alloy", + "#forge:nuggets/lerasatium_copper_alloy", "#forge:nuggets/bronze", + "#forge:nuggets/lerasium_bronze_alloy", + "#forge:nuggets/lerasatium_bronze_alloy", "#forge:nuggets/aluminum", + "#forge:nuggets/lerasium_aluminum_alloy", + "#forge:nuggets/lerasatium_aluminum_alloy", "#forge:nuggets/duralumin", + "#forge:nuggets/lerasium_duralumin_alloy", + "#forge:nuggets/lerasatium_duralumin_alloy", "#forge:nuggets/chromium", + "#forge:nuggets/lerasium_chromium_alloy", + "#forge:nuggets/lerasatium_chromium_alloy", "#forge:nuggets/nicrosil", + "#forge:nuggets/lerasium_nicrosil_alloy", + "#forge:nuggets/lerasatium_nicrosil_alloy", "#forge:nuggets/cadmium", + "#forge:nuggets/lerasium_cadmium_alloy", + "#forge:nuggets/lerasatium_cadmium_alloy", "#forge:nuggets/bendalloy", + "#forge:nuggets/lerasium_bendalloy_alloy", + "#forge:nuggets/lerasatium_bendalloy_alloy", "#forge:nuggets/gold", + "#forge:nuggets/lerasium_gold_alloy", + "#forge:nuggets/lerasatium_gold_alloy", "#forge:nuggets/electrum", + "#forge:nuggets/lerasium_electrum_alloy", + "#forge:nuggets/lerasatium_electrum_alloy", "#forge:nuggets/atium", - "#forge:nuggets/atium_alloy", "#forge:nuggets/lerasium", - "#forge:nuggets/lerasium_alloy", "#forge:nuggets/harmonium", - "#forge:nuggets/harmonium_alloy", "#forge:nuggets/malatium", + "#forge:nuggets/lerasium_malatium_alloy", + "#forge:nuggets/lerasatium_malatium_alloy", "#forge:nuggets/lerasatium", - "#forge:nuggets/lerasatium_alloy", "#forge:nuggets/nickel", + "#forge:nuggets/lerasium_nickel_alloy", + "#forge:nuggets/lerasatium_nickel_alloy", "#forge:nuggets/lead", - "#forge:nuggets/silver" + "#forge:nuggets/lerasium_lead_alloy", + "#forge:nuggets/lerasatium_lead_alloy", + "#forge:nuggets/silver", + "#forge:nuggets/lerasium_silver_alloy", + "#forge:nuggets/lerasatium_silver_alloy" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json deleted file mode 100644 index 2a95895ec..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/atium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:atium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json deleted file mode 100644 index 38b2b2f7a..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/harmonium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:harmonium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json deleted file mode 100644 index 61089f015..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasatium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_aluminum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_aluminum_alloy.json new file mode 100644 index 000000000..40ee60af8 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_aluminum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_aluminum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bendalloy_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bendalloy_alloy.json new file mode 100644 index 000000000..bcc69196f --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bendalloy_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_bendalloy_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_brass_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_brass_alloy.json new file mode 100644 index 000000000..6209b0db4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_brass_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_brass_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bronze_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bronze_alloy.json new file mode 100644 index 000000000..781394595 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_bronze_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_bronze_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_cadmium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_cadmium_alloy.json new file mode 100644 index 000000000..ccf305015 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_cadmium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_cadmium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_chromium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_chromium_alloy.json new file mode 100644 index 000000000..d6f8d0196 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_chromium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_chromium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_copper_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_copper_alloy.json new file mode 100644 index 000000000..367c7a291 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_copper_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_copper_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_duralumin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_duralumin_alloy.json new file mode 100644 index 000000000..bdbfdf3e7 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_duralumin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_duralumin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json new file mode 100644 index 000000000..eb372e488 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_electrum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_gold_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_gold_alloy.json new file mode 100644 index 000000000..4b188ec6d --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_gold_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_gold_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_iron_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_iron_alloy.json new file mode 100644 index 000000000..5af553e21 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_iron_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_iron_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json new file mode 100644 index 000000000..6dfaf2446 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_lead_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json new file mode 100644 index 000000000..d22b2eff3 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_malatium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json new file mode 100644 index 000000000..96b69d117 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_nickel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json new file mode 100644 index 000000000..eb764ca40 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_nicrosil_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json new file mode 100644 index 000000000..a3d4cb4d5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_pewter_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json new file mode 100644 index 000000000..4990f0ade --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_silver_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_steel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_steel_alloy.json new file mode 100644 index 000000000..10d6a32f4 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_steel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_steel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_tin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_tin_alloy.json new file mode 100644 index 000000000..6906ea912 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_tin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_tin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json new file mode 100644 index 000000000..d068fe79a --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasatium_zinc_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json deleted file mode 100644 index 0bf85cba7..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_aluminum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_aluminum_alloy.json new file mode 100644 index 000000000..8eb30b3bc --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_aluminum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_aluminum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bendalloy_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bendalloy_alloy.json new file mode 100644 index 000000000..730d606e0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bendalloy_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_bendalloy_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_brass_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_brass_alloy.json new file mode 100644 index 000000000..ad4b747cd --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_brass_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_brass_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bronze_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bronze_alloy.json new file mode 100644 index 000000000..eb8d8be65 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_bronze_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_bronze_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_cadmium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_cadmium_alloy.json new file mode 100644 index 000000000..f9be6324d --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_cadmium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_cadmium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_chromium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_chromium_alloy.json new file mode 100644 index 000000000..492daf09c --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_chromium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_chromium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_copper_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_copper_alloy.json new file mode 100644 index 000000000..3b2b07fb0 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_copper_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_copper_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_duralumin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_duralumin_alloy.json new file mode 100644 index 000000000..e2283163e --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_duralumin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_duralumin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_electrum_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_electrum_alloy.json new file mode 100644 index 000000000..6190fc85e --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_electrum_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_electrum_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_gold_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_gold_alloy.json new file mode 100644 index 000000000..90da7bd31 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_gold_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_gold_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_iron_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_iron_alloy.json new file mode 100644 index 000000000..bbaa4275c --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_iron_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_iron_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json new file mode 100644 index 000000000..db59f2eb1 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_lead_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json new file mode 100644 index 000000000..f5eec1e79 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_malatium_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json new file mode 100644 index 000000000..84213c146 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_nickel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json new file mode 100644 index 000000000..622492692 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_nicrosil_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_pewter_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_pewter_alloy.json new file mode 100644 index 000000000..2e7aa8e92 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_pewter_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_pewter_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json new file mode 100644 index 000000000..d4ae09f92 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_silver_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_steel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_steel_alloy.json new file mode 100644 index 000000000..22b31cac5 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_steel_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_steel_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_tin_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_tin_alloy.json new file mode 100644 index 000000000..078cfc957 --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_tin_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_tin_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_zinc_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_zinc_alloy.json new file mode 100644 index 000000000..6bbd6277c --- /dev/null +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_zinc_alloy.json @@ -0,0 +1,5 @@ +{ + "values": [ + "cosmere:lerasium_zinc_alloy_nugget" + ] +} \ No newline at end of file diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index 48f8eb104..ce3a01aef 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-10T18:24:30.0473331 Curios for feruchemy +// 1.20.1 2025-11-11T22:41:06.882308 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index c01df8753..d77cf3998 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-10T18:24:30.0808575 Curios for hemalurgy +// 1.20.1 2025-11-11T22:41:06.914104 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index b1edd6202..a9b112f5c 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -4,16 +4,11 @@ package leaf.cosmere; -import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.IHasMetalType; -import leaf.cosmere.api.IHasSize; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.common.registry.ItemsRegistry; -import leaf.cosmere.recipe.NbtShapedRecipeBuilder; -import leaf.cosmere.recipe.NbtShapelessRecipeBuilder; import net.minecraft.data.PackOutput; import net.minecraft.data.recipes.*; import net.minecraft.nbt.CompoundTag; @@ -22,7 +17,6 @@ import net.minecraft.tags.TagKey; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.ItemLike; import net.minecraftforge.common.Tags; @@ -274,96 +268,18 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .unlockedBy("has_item", has(input)); } - protected void godMetalAlloyRecipe(Consumer consumer, ItemLike output, ItemLike inputMetal, ItemLike inputGodMetal) - { - Metals.MetalType metalType; - if(inputMetal instanceof IHasMetalType inMetal){ - metalType = inMetal.getMetalType(); - } - else if(inputMetal == Items.GOLD_NUGGET) - { - metalType = Metals.MetalType.GOLD; - } - else if(inputMetal == Items.IRON_NUGGET) - { - metalType = Metals.MetalType.IRON; - } else - { - metalType = Metals.MetalType.IRON; - } - - if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; - CompoundTag outNbt = new CompoundTag(); - int[] metalIds = new int[] { metalType.getID() }; - outNbt.putIntArray("alloyedMetals", metalIds); - - String name = godMetalItem.getMetalType().getName() + "_" + - metalType.getName() + "_nugget"; - - outNbt.putInt("nuggetSize", 2); - NbtShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output, 8) - .define('I', inputMetal) - .define('J', inputGodMetal) - .pattern("III") - .pattern("IJI") - .pattern("III") - .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(outNbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_small")); - } - protected void godMetalNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) { if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; - CompoundTag outNbt = new CompoundTag(); - outNbt.putInt("nuggetSize", 16); - String name = godMetalItem.getMetalType().getName() + "_god_nugget"; - NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_NUGGETS.get(godMetalItem.getMetalType()).get()) + ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_NUGGETS.get(godMetalItem.getMetalType()).get()) .requires(inputGodMetal) .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(outNbt) .save(consumer, new ResourceLocation(Cosmere.MODID, name)); } - protected void godMetalAlloyNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) - { - if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; - - for(int inSize = 1; inSize <= 8; inSize*=2) - { - for(Metals.MetalType metalType : EnumUtils.METAL_TYPES) - { - if(metalType.hasAssociatedManifestation() && !metalType.isGodMetal()) - { - CompoundTag nbt = new CompoundTag(); - nbt.putInt("nuggetSize", inSize); - nbt.putIntArray("alloyedMetals", new int[] { metalType.getID() }); - - CompoundTag outNbt = new CompoundTag(); - outNbt.putInt("nuggetSize", inSize*2); - outNbt.putIntArray("alloyedMetals", new int[] { metalType.getID() }); - - String name = godMetalItem.getMetalType().getName() + "_" + metalType.getName() + "_alloy_nugget_" + inSize; - - NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType())) - .requiresPartial(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), nbt, 2) - .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(outNbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_decompress")); - - NbtShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), 2) - .requiresPartial(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalItem.getMetalType()), outNbt, 1) - .unlockedBy("has_item", has(inputGodMetal)) - .resultNbt(nbt) - .save(consumer, new ResourceLocation(Cosmere.MODID, name + "_compress")); - } - } - } - } - protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 2e78fa7b7..a69ad5efa 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -9,14 +9,12 @@ import leaf.cosmere.api.Metals; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.registry.BlocksRegistry; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; import leaf.cosmere.common.registry.ItemsRegistry; import leaf.cosmere.common.resource.ore.OreType; import leaf.cosmere.common.util.CosmereEnumUtils; import net.minecraft.data.PackOutput; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.data.recipes.ShapelessRecipeBuilder; +import net.minecraft.data.recipes.*; import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey; @@ -62,41 +60,6 @@ protected void addRecipes(Consumer consumer) for (Metals.MetalType metalType : EnumUtils.METAL_TYPES) { - // God Metal Alloy Nugget Recipes - if(!metalType.isGodMetal() && metalType.hasAssociatedManifestation()) - { - Metals.MetalType[] godMetals = { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }; - for(Metals.MetalType godMetal : godMetals) - { - if(!metalType.hasMaterialItem()) - { - Item item; - switch (metalType) - { - case IRON: - item = Items.IRON_NUGGET; - break; - case GOLD: - item = Items.GOLD_NUGGET; - break; - default: - item = Items.IRON_NUGGET; - } - godMetalAlloyRecipe(consumer, - ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetal).get(), - item, - ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get()); - } - else - { - godMetalAlloyRecipe(consumer, - ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetal).get(), - ItemsRegistry.METAL_NUGGETS.get(metalType).get(), - ItemsRegistry.GOD_METAL_NUGGETS.get(godMetal).get()); - } - } - } - //theres no reason for uss to add ways to recipe blocks/ingots that minecraft already has final Metals.MetalType[] blacklistedTypes = {Metals.MetalType.IRON, Metals.MetalType.GOLD,}; if (Arrays.stream(blacklistedTypes).anyMatch(metalType::equals)) @@ -121,7 +84,6 @@ protected void addRecipes(Consumer consumer) if(metalType.isGodMetal()) { godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); - godMetalAlloyNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); } if (metalType.isAlloy()) @@ -144,6 +106,18 @@ protected void addRecipes(Consumer consumer) addOreSmeltingRecipes(consumer, ItemsRegistry.METAL_RAW_ORE.get(metalType).get(), ItemsRegistry.METAL_INGOTS.get(metalType).asItem(), 1.0f, 200); } + SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_RECIPE.get()) + .save(consumer, new ResourceLocation(Cosmere.MODID, + CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_RECIPE.getInternalRegistryName()).toString()); + + SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get()) + .save(consumer, new ResourceLocation(Cosmere.MODID, + CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.getInternalRegistryName()).toString()); + + SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get()) + .save(consumer, new ResourceLocation(Cosmere.MODID, + CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.getInternalRegistryName()).toString()); + } protected static void addAlloyRecipes(Consumer consumer, Metals.MetalType metalType, Item output, Map> materialTag, String recipe) diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java deleted file mode 100644 index dba4a0a7a..000000000 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapedRecipeBuilder.java +++ /dev/null @@ -1,97 +0,0 @@ -package leaf.cosmere.recipe; - -import com.google.gson.JsonObject; -import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeBuilder; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.data.recipes.ShapedRecipeBuilder; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.crafting.PartialNBTIngredient; - -import javax.annotation.Nullable; -import java.util.function.Consumer; - -public class NbtShapedRecipeBuilder implements RecipeBuilder { - private final ShapedRecipeBuilder base; - private CompoundTag resultNbt; - - private NbtShapedRecipeBuilder(RecipeCategory cat, ItemLike result, int count) { - this.base = ShapedRecipeBuilder.shaped(cat, result, count); - } - - public static NbtShapedRecipeBuilder shaped(RecipeCategory cat, ItemLike result) { - return new NbtShapedRecipeBuilder(cat, result, 1); - } - public static NbtShapedRecipeBuilder shaped(RecipeCategory cat, ItemLike result, int count) { - return new NbtShapedRecipeBuilder(cat, result, count); - } - - public NbtShapedRecipeBuilder resultNbt(CompoundTag nbt) { - this.resultNbt = (nbt == null || nbt.isEmpty()) ? null : nbt.copy(); - return this; - } - - public NbtShapedRecipeBuilder define(char symbol, Ingredient ingredient) { - base.define(symbol, ingredient); - return this; - } - public NbtShapedRecipeBuilder define(char symbol, ItemLike item) { - base.define(symbol, item); - return this; - } - public NbtShapedRecipeBuilder define(char symbol, TagKey tag) { - base.define(symbol, tag); - return this; - } - - public NbtShapedRecipeBuilder definePartial(char symbol, ItemLike item, CompoundTag subsetNbt) { - return define(symbol, PartialNBTIngredient.of(item, subsetNbt)); - } - - public NbtShapedRecipeBuilder pattern(String row) { base.pattern(row); return this; } - public NbtShapedRecipeBuilder group(@Nullable String group) { base.group(group); return this; } - public NbtShapedRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { base.unlockedBy(name, trigger); return this; } - - @Override public Item getResult() { return base.getResult(); } - - @Override - public void save(Consumer out, ResourceLocation id) { - base.save(fr -> out.accept(wrap(fr, resultNbt)), id); - } - - private static FinishedRecipe wrap(FinishedRecipe inner, @Nullable CompoundTag resultNbt) { - if (resultNbt == null || resultNbt.isEmpty()) return inner; - return new FinishedWithResultNbt(inner, resultNbt.copy()); - } - - private static final class FinishedWithResultNbt implements FinishedRecipe { - private final FinishedRecipe inner; - private final CompoundTag nbt; - - FinishedWithResultNbt(FinishedRecipe inner, CompoundTag nbt) { - this.inner = inner; - this.nbt = nbt; - } - - @Override public void serializeRecipeData(JsonObject json) { - inner.serializeRecipeData(json); - JsonObject result = json.getAsJsonObject("result"); - if (result == null) { - result = new JsonObject(); - json.add("result", result); - } - result.addProperty("nbt", nbt.toString()); - } - - @Override public ResourceLocation getId() { return inner.getId(); } - @Override public net.minecraft.world.item.crafting.RecipeSerializer getType() { return inner.getType(); } - @Override public @Nullable JsonObject serializeAdvancement() { return inner.serializeAdvancement(); } - @Override public @Nullable ResourceLocation getAdvancementId() { return inner.getAdvancementId(); } - } -} diff --git a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java b/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java deleted file mode 100644 index daae24047..000000000 --- a/src/datagen/main/java/leaf/cosmere/recipe/NbtShapelessRecipeBuilder.java +++ /dev/null @@ -1,98 +0,0 @@ -package leaf.cosmere.recipe; - -import com.google.gson.JsonObject; -import net.minecraft.advancements.CriterionTriggerInstance; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeBuilder; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.data.recipes.ShapelessRecipeBuilder; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; -import net.minecraftforge.common.crafting.PartialNBTIngredient; - -import javax.annotation.Nullable; -import java.util.function.Consumer; - -public class NbtShapelessRecipeBuilder implements RecipeBuilder { - private final ShapelessRecipeBuilder base; - private CompoundTag resultNbt; - - private NbtShapelessRecipeBuilder(RecipeCategory cat, ItemLike result, int count) { - this.base = ShapelessRecipeBuilder.shapeless(cat, result, count); - } - - public static NbtShapelessRecipeBuilder shapeless(RecipeCategory cat, ItemLike result) { - return new NbtShapelessRecipeBuilder(cat, result, 1); - } - - public static NbtShapelessRecipeBuilder shapeless(RecipeCategory cat, ItemLike result, int count) { - return new NbtShapelessRecipeBuilder(cat, result, count); - } - - public NbtShapelessRecipeBuilder resultNbt(CompoundTag nbt) { - this.resultNbt = (nbt == null || nbt.isEmpty()) ? null : nbt.copy(); - return this; - } - - public NbtShapelessRecipeBuilder requires(ItemLike item) { - base.requires(item); - return this; - } - - public NbtShapelessRecipeBuilder requires(Ingredient ingredient) { - base.requires(ingredient); - return this; - } - - public NbtShapelessRecipeBuilder requires(Ingredient ingredient, int count) { - base.requires(ingredient, count); - return this; - } - - public NbtShapelessRecipeBuilder requiresPartial(ItemLike item, CompoundTag subsetNbt, int count) { - return requires(PartialNBTIngredient.of(item, subsetNbt), count); - } - - public NbtShapelessRecipeBuilder group(@Nullable String group) { base.group(group); return this; } - public NbtShapelessRecipeBuilder unlockedBy(String name, CriterionTriggerInstance trigger) { base.unlockedBy(name, trigger); return this; } - - @Override public Item getResult() { return base.getResult(); } - - @Override - public void save(Consumer out, ResourceLocation id) { - base.save(fr -> out.accept(wrap(fr, resultNbt)), id); - } - - private static FinishedRecipe wrap(FinishedRecipe inner, @Nullable CompoundTag resultNbt) { - if (resultNbt == null || resultNbt.isEmpty()) return inner; - return new FinishedWithResultNbt(inner, resultNbt.copy()); - } - - private static final class FinishedWithResultNbt implements FinishedRecipe { - private final FinishedRecipe inner; - private final CompoundTag nbt; - - FinishedWithResultNbt(FinishedRecipe inner, CompoundTag nbt) { - this.inner = inner; - this.nbt = nbt; - } - - @Override public void serializeRecipeData(JsonObject json) { - inner.serializeRecipeData(json); - JsonObject result = json.getAsJsonObject("result"); - if (result == null) { - result = new JsonObject(); - json.add("result", result); - } - result.addProperty("nbt", nbt.toString()); - } - - @Override public ResourceLocation getId() { return inner.getId(); } - @Override public net.minecraft.world.item.crafting.RecipeSerializer getType() { return inner.getType(); } - @Override public @Nullable JsonObject serializeAdvancement() { return inner.serializeAdvancement(); } - @Override public @Nullable ResourceLocation getAdvancementId() { return inner.getAdvancementId(); } - } -} diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index 2cb715c76..dfd6f90b4 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -113,16 +113,19 @@ private void addItems() } // Add the metal alloy nugget to the nugget tags - if(metalType.isGodMetal()) + if(!metalType.isGodMetal()) { - final TagKey godMetalAlloyNuggetTag = metalType.getGodMetalAlloyNuggetTag(); - getItemBuilder(Tags.Items.NUGGETS).add(godMetalAlloyNuggetTag); - - ItemRegistryObject alloyNugRegObj = ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(metalType); - if (alloyNugRegObj != null) + for(Metals.MetalType godMetalType : new Metals.MetalType[] { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM}) { - Item nuggetItem = alloyNugRegObj.asItem(); - addToTag(godMetalAlloyNuggetTag, nuggetItem); + final TagKey godMetalAlloyNuggetTag = godMetalType.getGodMetalAlloyNuggetTag(metalType); + getItemBuilder(Tags.Items.NUGGETS).add(godMetalAlloyNuggetTag); + + ItemRegistryObject alloyNugRegObj = ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(metalType); + if (alloyNugRegObj != null) + { + Item nuggetItem = alloyNugRegObj.asItem(); + addToTag(godMetalAlloyNuggetTag, nuggetItem); + } } } } diff --git a/src/main/java/leaf/cosmere/common/Cosmere.java b/src/main/java/leaf/cosmere/common/Cosmere.java index aa719c43d..e9aaef126 100644 --- a/src/main/java/leaf/cosmere/common/Cosmere.java +++ b/src/main/java/leaf/cosmere/common/Cosmere.java @@ -70,6 +70,7 @@ public Cosmere() LootFunctionRegistry.LOOT_FUNCTIONS.register(modBus); GameEventRegistry.GAME_EVENTS.register(modBus); ArgumentTypeRegistry.ARGUMENT_TYPE_INFOS.register(modBus); + CosmereRecipesRegistry.RECIPE_SERIALIZERS.register(modBus); CreativeTabsRegistry.CREATIVE_TABS.register(modBus); BiomeRegistry.BIOMES.register(modBus); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 73076c2eb..36c676d52 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -4,11 +4,11 @@ package leaf.cosmere.common.eventHandlers; -import leaf.cosmere.api.IHasAlloy; import leaf.cosmere.api.IHasColour; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.items.AlloyNuggetItem; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; @@ -38,13 +38,9 @@ public static void init() ItemColor itemColorHandler = (itemStack, tintIndex) -> { - if(tintIndex == 0) - { - if(!(itemStack.getItem() instanceof IHasAlloy alloyItem)) return -1; - HashSet metals = alloyItem.readMetalAlloyNbtData(itemStack); - return alloyItem.getColourValue(metals); - } - return -1; + if(tintIndex != 0) return -1; + if(!(itemStack.getItem() instanceof AlloyNuggetItem alloyNuggetItem)) return -1; + return alloyNuggetItem.getColourValue(); }; ItemColor blockItemColorHandler = @@ -90,7 +86,7 @@ public static void init() continue; } - if (item instanceof IHasAlloy) + if (item instanceof AlloyNuggetItem) { itemColors.register(itemColorHandler, item); } diff --git a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java index 33ea2e840..f078d4c62 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java @@ -1,8 +1,6 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.IHasAlloy; import leaf.cosmere.api.Metals.MetalType; -import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.entity.LivingEntity; @@ -11,63 +9,20 @@ import java.awt.*; import java.util.ArrayList; -import java.util.HashSet; -public class AlloyNuggetItem extends MetalNuggetItem implements IHasAlloy +public class AlloyNuggetItem extends MetalNuggetItem { - public AlloyNuggetItem(MetalType metalType) - { - super(metalType); - } - - /** - * Returns true if the item can be used on the given entity, e.g. shears on sheep. - */ - public InteractionResult interactLivingEntity(ItemStack stack, Player playerIn, LivingEntity target, InteractionHand hand) - { - return InteractionResult.PASS; - } + MetalType alloyedMetalType; - public HashSet readMetalAlloyNbtData(ItemStack itemStack) + public AlloyNuggetItem(MetalType metalType, MetalType alloyedMetalType) { - CompoundTag nbt = itemStack.getOrCreateTag(); - if(nbt.contains("alloyedMetals")) - { - int[] metalIds = nbt.getIntArray("alloyedMetals"); - HashSet metalTypes = new HashSet<>(); - for (int metalId : metalIds) - { - metalTypes.add( - MetalType.valueOf(metalId).isPresent() ? - MetalType.valueOf(metalId).get() : MetalType.SILVER); - } - return metalTypes; - } - return new HashSet(); + super(metalType); + this.alloyedMetalType = alloyedMetalType; } - public boolean writeMetalAlloyNbtData(ItemStack itemStack, HashSet alloyedMetals) + public MetalType getAlloyedMetalType() { - CompoundTag nbt = itemStack.getOrCreateTag(); - ArrayList metalIds = new ArrayList<>(); - boolean containsGodMetal = false; - boolean containsNormalMetal = false; - for (MetalType alloyedMetal : alloyedMetals) - { - metalIds.add(alloyedMetal.getID()); - - if (alloyedMetal.isGodMetal()) - { - containsGodMetal = true; - } - else - { - if (containsGodMetal && containsNormalMetal) return false; - containsNormalMetal = true; - } - } - nbt.putIntArray("alloyedMetals", metalIds); - return true; + return alloyedMetalType; } public Color mixColors(ArrayList colors) @@ -92,19 +47,16 @@ public Color mixColors(ArrayList colors) return new Color((int) r, (int) g, (int) b); } - public Color getColour(HashSet metals) + public Color getColour() { ArrayList colors = new ArrayList<>(); - for(MetalType metal : metals) - { - if (metal == this.getMetalType()) continue; - colors.add(metal.getColor()); - } + colors.add(this.getMetalType().getColor()); + colors.add(this.getAlloyedMetalType().getColor()); return mixColors(colors); } - public int getColourValue(HashSet metals) + public int getColourValue() { - return getColour(metals).getRGB(); + return getColour().getRGB(); } } diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 25cd43c64..74481e590 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -41,15 +41,15 @@ public int getMaxSize() return MAX_SIZE; } - public GodMetalAlloyNuggetItem(Metals.MetalType metalType) + public GodMetalAlloyNuggetItem(Metals.MetalType metalType, Metals.MetalType alloyedMetalType) { - super(metalType); + + super(metalType, alloyedMetalType); } - public void addFilled(CreativeModeTab.Output output, HashSet alloyedMetals, int size) + public void addFilled(CreativeModeTab.Output output, int size) { ItemStack itemStack = new ItemStack(this); - writeMetalAlloyNbtData(itemStack, alloyedMetals); writeMetalAlloySizeNbtData(itemStack, size); output.accept(itemStack); } @@ -58,24 +58,17 @@ public void addFilled(CreativeModeTab.Output output, HashSet a @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) { - HashSet metalTypes = readMetalAlloyNbtData(stack); Integer size = readMetalAlloySizeNbtData(stack); - if (metalTypes != null) - { - MutableComponent metalListComponent = Component.empty(); - metalListComponent.append(Component.translatable(this.getMetalType().getTranslationKey()) - .withStyle(Style.EMPTY.withColor(this.getMetalType().getColorValue()))); - for (Metals.MetalType metalType : metalTypes) - { - metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); - metalListComponent.append(Component.translatable(metalType.getTranslationKey()) - .withStyle(Style.EMPTY.withColor(metalType.getColorValue()))); - } + MutableComponent metalListComponent = Component.empty(); + metalListComponent.append(Component.translatable(this.getMetalType().getTranslationKey()) + .withStyle(Style.EMPTY.withColor(this.getMetalType().getColorValue()))); - tooltip.add(metalListComponent); - } + metalListComponent.append(Component.literal(" / ").withStyle(ChatFormatting.WHITE)); + metalListComponent.append(Component.translatable(alloyedMetalType.getTranslationKey()) + .withStyle(Style.EMPTY.withColor(alloyedMetalType.getColorValue()))); + tooltip.add(metalListComponent); tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); @@ -113,34 +106,25 @@ public ArrayList determineManifestations(ItemStack itemStack) { ArrayList manifestations = new ArrayList<>(); - HashSet metals = readMetalAlloyNbtData(itemStack); - if (metals == null) return manifestations; - Manifestation manifestation; if (this.getMetalType() == Metals.MetalType.LERASIUM) { - for(Metals.MetalType metal : metals) + manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(alloyedMetalType.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) { - manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } + manifestations.add(manifestation); } + } else if (this.getMetalType() == Metals.MetalType.LERASATIUM) { - for(Metals.MetalType metal : metals) + manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(alloyedMetalType.getID()); + if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) { - manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) - { - manifestations.add(manifestation); - } + manifestations.add(manifestation); } } return manifestations; - } @Override diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java new file mode 100644 index 000000000..ad0e1e592 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java @@ -0,0 +1,124 @@ +package leaf.cosmere.common.recipes; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.items.MetalNuggetItem; +import leaf.cosmere.common.registration.impl.ItemRegistryObject; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; +import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.Tags; + +import javax.annotation.Nonnull; +import java.util.HashSet; +import java.util.Optional; +import java.util.function.Function; +import java.util.stream.Collectors; + +public class GodMetalAlloyNuggetCompress extends CustomRecipe +{ + + public GodMetalAlloyNuggetCompress(ResourceLocation loc, CraftingBookCategory pCategory) + { + super(loc, pCategory); + } + + @Override + public boolean matches(CraftingContainer inv, @Nonnull Level world) + { + Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() + .flatMap(inner -> inner.values().stream()) + .map(IItemProvider::getItemStack)); + + MetalType godMetalType = null; + MetalType alloyedMetalType = null; + int totalSize = 0; + int numItems = 0; + for(int i = 0; i < inv.getContainerSize(); i++) + { + ItemStack itemStack = inv.getItem(i); + if(itemStack.isEmpty()) continue; + if(!INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(i))) return false; + numItems++; + GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); + + if(godMetalType == null) godMetalType = item.getMetalType(); + if(godMetalType != item.getMetalType()) return false; + + if(alloyedMetalType == null) alloyedMetalType = item.getAlloyedMetalType(); + if(alloyedMetalType != item.getAlloyedMetalType()) return false; + + totalSize += item.readMetalAlloySizeNbtData(itemStack); + if(totalSize > item.getMaxSize()) return false; + } + if(numItems < 2) return false; + + return true; + } + + @Override + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) + { + int totalSize = 0; + MetalType godMetalType = null; + MetalType alloyedMetalType = null; + + for(int i = 0; i < inv.getContainerSize(); i++) + { + if(!inv.getItem(i).isEmpty()) + { + ItemStack curItemStack = inv.getItem(i); + GodMetalAlloyNuggetItem curItem = (GodMetalAlloyNuggetItem) curItemStack.getItem(); + godMetalType = curItem.getMetalType(); + alloyedMetalType = curItem.getAlloyedMetalType(); + totalSize += curItem.readMetalAlloySizeNbtData(curItemStack); + } + } + + ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(alloyedMetalType)); + GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); + + item.writeMetalAlloySizeNbtData(itemStack, totalSize); + itemStack.setCount(1); + + return itemStack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + // We need a 3x3 grid + return width * height == 9; + } + + @Override + public @Nonnull ResourceLocation getId() + { + return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + } + + @Override + public @Nonnull RecipeSerializer getSerializer() + { + return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get(); + } + + +} diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java new file mode 100644 index 000000000..cee627464 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java @@ -0,0 +1,107 @@ +package leaf.cosmere.common.recipes; + +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; +import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; + +import javax.annotation.Nonnull; + +public class GodMetalAlloyNuggetDecompress extends CustomRecipe { + + public GodMetalAlloyNuggetDecompress(ResourceLocation loc, CraftingBookCategory pCategory) + { + super(loc, pCategory); + } + + @Override + public boolean matches(CraftingContainer inv, @Nonnull Level world) + { + Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() + .flatMap(inner -> inner.values().stream()) + .map(IItemProvider::getItemStack)); + + + int itemCount = 0; + GodMetalAlloyNuggetItem godMetalAlloyNuggetItem = null; + for(int i = 0; i < inv.getContainerSize(); i++) + { + ItemStack itemStack = inv.getItem(i); + if(itemStack.isEmpty()) continue; + if(!INGREDIENT_GOD_METAL_ALLOY_NUG.test(itemStack)) return false; + if(!itemStack.isEmpty()) + { + itemCount++; + if(itemCount > 1) return false; + + godMetalAlloyNuggetItem = (GodMetalAlloyNuggetItem) itemStack.getItem(); + int currentSize = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); + if(currentSize == godMetalAlloyNuggetItem.getMinSize()) return false; // No splitting smallest size + if(currentSize % 2 == 1) return false; // No odd splitting + } + } + if(itemCount == 0) return false; + + return true; + } + + @Override + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) + { + GodMetalAlloyNuggetItem godMetalAlloyNuggetItem = null; + int index = 0; + for(int i = 0; i < inv.getContainerSize(); i++) + { + if(!inv.getItem(i).isEmpty()) + { + godMetalAlloyNuggetItem = (GodMetalAlloyNuggetItem) inv.getItem(i).getItem(); + index = i; + break; + } + } + + MetalType godMetalType = godMetalAlloyNuggetItem.getMetalType(); + MetalType alloyedMetalType = godMetalAlloyNuggetItem.getAlloyedMetalType(); + int currentSize = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(inv.getItem(index)); + + ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(alloyedMetalType)); + GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); + + item.writeMetalAlloySizeNbtData(itemStack, currentSize / 2); + itemStack.setCount(2); + + return itemStack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + // We need a 3x3 grid + return width * height == 9; + } + + @Override + public @Nonnull ResourceLocation getId() + { + return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + } + + @Override + public @Nonnull RecipeSerializer getSerializer() + { + return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get(); + } + + +} diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java new file mode 100644 index 000000000..209d4d267 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java @@ -0,0 +1,134 @@ +package leaf.cosmere.common.recipes; + +import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.items.MetalNuggetItem; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; +import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.RegistryAccess; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.tags.TagKey; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; +import net.minecraftforge.common.Tags; + +import javax.annotation.Nonnull; +import java.util.HashSet; +import java.util.Optional; + +public class GodMetalAlloyNuggetRecipe extends CustomRecipe +{ + + public GodMetalAlloyNuggetRecipe(ResourceLocation loc, CraftingBookCategory pCategory) + { + super(loc, pCategory); + } + + @Override + public boolean matches(CraftingContainer inv, @Nonnull Level world) + { + Ingredient INGREDIENT_GOD_METAL_NUG = Ingredient.of( + ItemsRegistry.GOD_METAL_NUGGETS.get(MetalType.LERASIUM), + ItemsRegistry.GOD_METAL_NUGGETS.get(MetalType.LERASATIUM) + ); + + Ingredient INGREDIENT_COSMERE_METAL_NUG = Ingredient.of( + ItemsRegistry.METAL_NUGGETS.values().stream().map(IItemProvider::getItemStack) + ); + + Ingredient INGREDIENT_MC_METAL_NUG = Ingredient.of( + Items.IRON_NUGGET, + Items.GOLD_NUGGET + ); + + if(!INGREDIENT_GOD_METAL_NUG.test(inv.getItem(4))) return false; + + MetalType metalType = null; + for(int i = 0; i < inv.getContainerSize(); i++) + { + if(i == 4) continue; + ItemStack itemStack = inv.getItem(i); + + if(INGREDIENT_COSMERE_METAL_NUG.test(itemStack)) + { + MetalNuggetItem item = (MetalNuggetItem) itemStack.getItem(); + if(i == 0) metalType = item.getMetalType(); + if(metalType != item.getMetalType()) return false; + } + else if(INGREDIENT_MC_METAL_NUG.test(itemStack)) + { + Item item = itemStack.getItem(); + MetalType newMetalType = null; + if (item == Items.IRON_NUGGET) + { + newMetalType = MetalType.IRON; + } + else if(item == Items.GOLD_NUGGET) + { + newMetalType = MetalType.GOLD; + } + else { + return false; + } + if(i == 0) metalType = newMetalType; + if(metalType != newMetalType) return false; + } + else + { + return false; + } + } + return true; + } + + @Override + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) + { + GodMetalNuggetItem godMetalNuggetItem = (GodMetalNuggetItem) inv.getItem(4).getItem(); + MetalType godMetalType = godMetalNuggetItem.getMetalType(); + + MetalNuggetItem metalNuggetItem = (MetalNuggetItem) inv.getItem(0).getItem(); + MetalType metalType = metalNuggetItem.getMetalType(); + + ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(metalType)); + GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); + + item.writeMetalAlloySizeNbtData(itemStack, 2); + itemStack.setCount(8); + + return itemStack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + // Must have 9 items + return width * height == 9; + } + + @Override + public @Nonnull ResourceLocation getId() + { + return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_recipe"); + } + + @Override + public @Nonnull RecipeSerializer getSerializer() + { + return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_RECIPE.get(); + } + + +} diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java new file mode 100644 index 000000000..ac98fd635 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java @@ -0,0 +1,26 @@ +package leaf.cosmere.common.registry; + +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.recipes.GodMetalAlloyNuggetCompress; +import leaf.cosmere.common.recipes.GodMetalAlloyNuggetDecompress; +import leaf.cosmere.common.recipes.GodMetalAlloyNuggetRecipe; +import leaf.cosmere.common.registration.impl.RecipeSerializerDeferredRegister; +import leaf.cosmere.common.registration.impl.RecipeSerializerRegistryObject; +import net.minecraft.world.item.crafting.SimpleCraftingRecipeSerializer; + +public class CosmereRecipesRegistry +{ + public static final RecipeSerializerDeferredRegister RECIPE_SERIALIZERS = new RecipeSerializerDeferredRegister(Cosmere.MODID); + + public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_RECIPE = + RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_recipe", + () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetRecipe::new)); + + public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_COMPRESS = + RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_compress", + () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetCompress::new)); + + public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_DECOMPRESS = + RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_decompress", + () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetDecompress::new)); +} diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index f79d7e274..22e2973e8 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -59,7 +59,7 @@ private static void handleGodMetalNuggetItem(GodMetalAlloyNuggetItem godMetalAll HashSet metalTypes = new HashSet<>(); metalTypes.add(metalType); - godMetalAlloyNuggetItem.addFilled(output, metalTypes, 8); + godMetalAlloyNuggetItem.addFilled(output, 8); } } } diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 5a2fc092f..12ec172a0 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -58,15 +58,20 @@ public class ItemsRegistry () -> new MetalNuggetItem(type) ))); - public static final Map> GOD_METAL_ALLOY_NUGGETS = - Arrays.stream(EnumUtils.METAL_TYPES) - .filter(Metals.MetalType::isGodMetal) + public static final Map>> GOD_METAL_ALLOY_NUGGETS = + Arrays.stream(new Metals.MetalType[] { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM }) .collect(Collectors.toMap( - Function.identity(), - type -> ITEMS.register( - type.getName() + "_alloy" + RegNameStubs.NUGGET, - () -> new GodMetalAlloyNuggetItem(type) - ))); + Function.identity(), // key: the god metal itself + godMetalType -> Arrays.stream(EnumUtils.METAL_TYPES) + .filter(type -> !type.isGodMetal()) + .collect(Collectors.toMap( + Function.identity(), // key: base metal + metalType -> ITEMS.register( + godMetalType.getName() + "_" + metalType.getName() + "_alloy" + RegNameStubs.NUGGET, + () -> new GodMetalAlloyNuggetItem(godMetalType, metalType) + ) + )) + )); public static final Map> GOD_METAL_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) From b714e6cc67ee1ca3b42b66092c34845608b610d6 Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Wed, 12 Nov 2025 09:27:25 -0500 Subject: [PATCH 1063/1090] code cleanup --- .../AllomancyEntityEventHandler.java | 21 ++++++++++++++----- .../allomancy/common/utils/MiscHelper.java | 2 +- .../feruchemy/common/utils/MiscHelper.java | 6 ++---- .../common/eventHandlers/ColorHandler.java | 1 - .../cosmere/common/items/AlloyNuggetItem.java | 5 ----- .../common/items/GodMetalAlloyNuggetItem.java | 1 - .../recipes/GodMetalAlloyNuggetCompress.java | 14 ------------- .../recipes/GodMetalAlloyNuggetRecipe.java | 6 ------ .../common/registry/CreativeTabsRegistry.java | 19 ----------------- 9 files changed, 19 insertions(+), 56 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index 91c19e247..f8965cf68 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -54,9 +54,15 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) if (stack.getItem() instanceof MetalNuggetItem metalNuggetItem) { // Don't alloy for consuming normal metal nuggets - if (!(stack.getItem() instanceof GodMetalAlloyNuggetItem) && !(stack.getItem() instanceof GodMetalNuggetItem)) return; + if (!(stack.getItem() instanceof GodMetalAlloyNuggetItem) && !(stack.getItem() instanceof GodMetalNuggetItem)) + { + return; + } // Only consume the nugget if it contains Lerasium - if (metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) return; + if (metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) + { + return; + } MiscHelper.consumeNugget(target, stack); stack.shrink(1); @@ -72,14 +78,19 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) @SubscribeEvent public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) { - if (event.isCanceled()) return; + if (event.isCanceled()) + { + return; + } final LivingEntity livingEntity = event.getEntity(); - if(livingEntity.level().isClientSide) return; if (event.getItem().getItem() instanceof MetalNuggetItem metalNuggetItem) { // Only consume the nugget if it contains Lerasium - if(metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) return; + if (metalNuggetItem.getMetalType().isGodMetal() && metalNuggetItem.getMetalType() != Metals.MetalType.LERASIUM) + { + return; + } MiscHelper.consumeNugget(livingEntity, event.getItem()); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index d439b55af..5a88fec17 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -51,7 +51,7 @@ else if(itemStack.getItem() instanceof IHasMetalType metalItem) { Metals.MetalType metalType = metalItem.getMetalType(); SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if (metalType != Metals.MetalType.LERASATIUM) //ignore lerasatium, that's handled in feruchemy + if (metalType.hasAssociatedManifestation()) //ignore metals without manifestations, that's handled in feruchemy { //add to metal stored final int addAmount = metalType.getAllomancyBurnTimeSeconds(); diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index 03914bda9..35b0ad524 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -21,10 +21,8 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) { - if (livingEntity.level().isClientSide) - { - return; - } + if (livingEntity.level().isClientSide) return; + if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) { diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 36c676d52..6f0a56c64 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -5,7 +5,6 @@ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.IHasColour; -import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; import leaf.cosmere.common.items.AlloyNuggetItem; diff --git a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java index f078d4c62..a29190d2c 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java @@ -1,11 +1,6 @@ package leaf.cosmere.common.items; import leaf.cosmere.api.Metals.MetalType; -import net.minecraft.world.InteractionHand; -import net.minecraft.world.InteractionResult; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; import java.awt.*; import java.util.ArrayList; diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 74481e590..d98d189d8 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -23,7 +23,6 @@ import net.minecraftforge.api.distmarker.OnlyIn; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; public class GodMetalAlloyNuggetItem extends AlloyNuggetItem implements IHasSize, IGrantsManifestations diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java index ad0e1e592..59018f3aa 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java @@ -1,36 +1,22 @@ package leaf.cosmere.common.recipes; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Metals; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; -import leaf.cosmere.common.items.GodMetalNuggetItem; -import leaf.cosmere.common.items.MetalNuggetItem; -import leaf.cosmere.common.registration.impl.ItemRegistryObject; import leaf.cosmere.common.registry.CosmereRecipesRegistry; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.core.RegistryAccess; -import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; -import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.Items; import net.minecraft.world.item.crafting.CraftingBookCategory; import net.minecraft.world.item.crafting.CustomRecipe; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraftforge.common.Tags; import javax.annotation.Nonnull; -import java.util.HashSet; -import java.util.Optional; -import java.util.function.Function; -import java.util.stream.Collectors; public class GodMetalAlloyNuggetCompress extends CustomRecipe { diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java index 209d4d267..5b6ab037c 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java @@ -1,6 +1,5 @@ package leaf.cosmere.common.recipes; -import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; @@ -10,9 +9,7 @@ import leaf.cosmere.common.registry.CosmereRecipesRegistry; import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.core.RegistryAccess; -import net.minecraft.nbt.CompoundTag; import net.minecraft.resources.ResourceLocation; -import net.minecraft.tags.TagKey; import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -22,11 +19,8 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; -import net.minecraftforge.common.Tags; import javax.annotation.Nonnull; -import java.util.HashSet; -import java.util.Optional; public class GodMetalAlloyNuggetRecipe extends CustomRecipe { diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 22e2973e8..a8ba6b9ad 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -4,8 +4,6 @@ package leaf.cosmere.common.registry; -import leaf.cosmere.api.EnumUtils; -import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; @@ -19,8 +17,6 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import java.util.Arrays; -import java.util.HashSet; import java.util.List; public class CreativeTabsRegistry @@ -49,21 +45,6 @@ public class CreativeTabsRegistry }) ); - private static void handleGodMetalNuggetItem(GodMetalAlloyNuggetItem godMetalAlloyNuggetItem, CreativeModeTab.Output output) - { - if(godMetalAlloyNuggetItem.getMetalType() == MetalType.LERASIUM || - godMetalAlloyNuggetItem.getMetalType() == MetalType.LERASATIUM) - { - for (MetalType metalType : Arrays.stream(EnumUtils.METAL_TYPES).toList().subList(0, 16)) - { - HashSet metalTypes = new HashSet<>(); - metalTypes.add(metalType); - - godMetalAlloyNuggetItem.addFilled(output, 8); - } - } - } - private static void addToExistingTabs(BuildCreativeModeTabContentsEvent event) { ResourceKey tabKey = event.getTabKey(); From e8f43083767a792665638d2e32a7b839fa7b218a Mon Sep 17 00:00:00 2001 From: RequestingKidney Date: Wed, 12 Nov 2025 09:58:20 -0500 Subject: [PATCH 1064/1090] minor cleanup and fixes --- .../cosmere/common/items/GodMetalNuggetItem.java | 10 +++------- .../recipes/GodMetalAlloyNuggetRecipe.java | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 5fc83f053..b4c1aa97b 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -72,16 +72,12 @@ public boolean hasCraftingRemainingItem(ItemStack stack) { @Override public ItemStack getCraftingRemainingItem(ItemStack stack) { ItemStack out = stack.copy(); - CompoundTag tag = out.getOrCreateTag(); + int size = readMetalAlloySizeNbtData(stack); - int size = tag.contains("nuggetSize") ? tag.getInt("nuggetSize") : this.getMinSize(); int newSize = size - 1; - tag.putInt("nuggetSize", newSize); - - if (newSize < 1) { - return ItemStack.EMPTY; - } + if (newSize < 1) return ItemStack.EMPTY; + writeMetalAlloySizeNbtData(out, newSize); return out; } diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java index 5b6ab037c..6083c8846 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java @@ -93,8 +93,20 @@ public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) GodMetalNuggetItem godMetalNuggetItem = (GodMetalNuggetItem) inv.getItem(4).getItem(); MetalType godMetalType = godMetalNuggetItem.getMetalType(); - MetalNuggetItem metalNuggetItem = (MetalNuggetItem) inv.getItem(0).getItem(); - MetalType metalType = metalNuggetItem.getMetalType(); + MetalType metalType = null; + if(inv.getItem(0).getItem() == Items.IRON_NUGGET) + { + metalType = MetalType.IRON; + } + else if (inv.getItem(0).getItem() == Items.GOLD_NUGGET) + { + metalType = MetalType.GOLD; + } + else + { + MetalNuggetItem metalNuggetItem = (MetalNuggetItem) inv.getItem(0).getItem(); + metalType = metalNuggetItem.getMetalType(); + } ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(metalType)); GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); From 2c61ef5d3e4e8f4a543d91d778637015ecf200cd Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Wed, 12 Nov 2025 22:16:53 -0500 Subject: [PATCH 1065/1090] i think this is it --- .../1a0f94c9f1c196e533e9fd87835b73e7495ceb3e | 12 +-- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 74 ++++++++---------- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 8 -- .../lerasatium_aluminum_alloy_nugget.json | 2 +- .../lerasatium_bendalloy_alloy_nugget.json | 2 +- .../item/lerasatium_brass_alloy_nugget.json | 2 +- .../item/lerasatium_bronze_alloy_nugget.json | 2 +- .../item/lerasatium_cadmium_alloy_nugget.json | 2 +- .../lerasatium_chromium_alloy_nugget.json | 2 +- .../item/lerasatium_copper_alloy_nugget.json | 2 +- .../lerasatium_duralumin_alloy_nugget.json | 2 +- .../lerasatium_electrum_alloy_nugget.json | 2 +- .../item/lerasatium_gold_alloy_nugget.json | 2 +- .../item/lerasatium_iron_alloy_nugget.json | 2 +- .../item/lerasatium_lead_alloy_nugget.json | 6 -- .../lerasatium_malatium_alloy_nugget.json | 6 -- .../item/lerasatium_nickel_alloy_nugget.json | 6 -- .../lerasatium_nicrosil_alloy_nugget.json | 2 +- .../item/lerasatium_pewter_alloy_nugget.json | 2 +- .../item/lerasatium_silver_alloy_nugget.json | 6 -- .../item/lerasatium_steel_alloy_nugget.json | 2 +- .../item/lerasatium_tin_alloy_nugget.json | 2 +- .../item/lerasatium_zinc_alloy_nugget.json | 2 +- .../item/lerasium_aluminum_alloy_nugget.json | 2 +- .../item/lerasium_bendalloy_alloy_nugget.json | 2 +- .../item/lerasium_brass_alloy_nugget.json | 2 +- .../item/lerasium_bronze_alloy_nugget.json | 2 +- .../item/lerasium_cadmium_alloy_nugget.json | 2 +- .../item/lerasium_chromium_alloy_nugget.json | 2 +- .../item/lerasium_copper_alloy_nugget.json | 2 +- .../item/lerasium_duralumin_alloy_nugget.json | 2 +- .../item/lerasium_electrum_alloy_nugget.json | 2 +- .../item/lerasium_gold_alloy_nugget.json | 2 +- .../item/lerasium_iron_alloy_nugget.json | 2 +- .../item/lerasium_lead_alloy_nugget.json | 6 -- .../item/lerasium_malatium_alloy_nugget.json | 6 -- .../item/lerasium_nickel_alloy_nugget.json | 6 -- .../item/lerasium_nicrosil_alloy_nugget.json | 2 +- .../item/lerasium_pewter_alloy_nugget.json | 2 +- .../item/lerasium_silver_alloy_nugget.json | 6 -- .../item/lerasium_steel_alloy_nugget.json | 2 +- .../item/lerasium_tin_alloy_nugget.json | 2 +- .../item/lerasium_zinc_alloy_nugget.json | 2 +- .../data/forge/tags/items/nuggets.json | 10 +-- .../items/nuggets/lerasatium_lead_alloy.json | 5 -- .../nuggets/lerasatium_malatium_alloy.json | 5 -- .../nuggets/lerasatium_nickel_alloy.json | 5 -- .../nuggets/lerasatium_silver_alloy.json | 5 -- .../items/nuggets/lerasium_lead_alloy.json | 5 -- .../nuggets/lerasium_malatium_alloy.json | 5 -- .../items/nuggets/lerasium_nickel_alloy.json | 5 -- .../items/nuggets/lerasium_silver_alloy.json | 5 -- .../leaf/cosmere/items/ItemModelsGen.java | 2 +- .../leaf/cosmere/tag/CosmereTagProvider.java | 2 +- .../common/eventHandlers/ColorHandler.java | 18 ++--- .../cosmere/common/items/AlloyNuggetItem.java | 35 --------- .../common/registry/CreativeTabsRegistry.java | 15 +--- .../common/registry/ItemsRegistry.java | 3 +- .../item/lerasatium_aluminum_nugget.png | Bin 0 -> 192 bytes .../item/lerasatium_bendalloy_nugget.png | Bin 0 -> 192 bytes .../textures/item/lerasatium_brass_nugget.png | Bin 0 -> 180 bytes .../item/lerasatium_bronze_nugget.png | Bin 0 -> 189 bytes .../item/lerasatium_cadmium_nugget.png | Bin 0 -> 186 bytes .../item/lerasatium_chromium_nugget.png | Bin 0 -> 192 bytes .../item/lerasatium_copper_nugget.png | Bin 0 -> 192 bytes .../item/lerasatium_duralumin_nugget.png | Bin 0 -> 186 bytes .../item/lerasatium_electrum_nugget.png | Bin 0 -> 181 bytes .../textures/item/lerasatium_gold_nugget.png | Bin 0 -> 176 bytes .../textures/item/lerasatium_iron_nugget.png | Bin 0 -> 182 bytes .../item/lerasatium_nicrosil_nugget.png | Bin 0 -> 192 bytes .../item/lerasatium_pewter_nugget.png | Bin 0 -> 188 bytes .../textures/item/lerasatium_steel_nugget.png | Bin 0 -> 190 bytes .../textures/item/lerasatium_tin_nugget.png | Bin 0 -> 189 bytes .../textures/item/lerasatium_zinc_nugget.png | Bin 0 -> 192 bytes .../item/lerasium_aluminum_nugget.png | Bin 0 -> 149 bytes .../item/lerasium_bendalloy_nugget.png | Bin 0 -> 157 bytes .../textures/item/lerasium_brass_nugget.png | Bin 0 -> 149 bytes .../textures/item/lerasium_bronze_nugget.png | Bin 0 -> 149 bytes .../textures/item/lerasium_cadmium_nugget.png | Bin 0 -> 149 bytes .../item/lerasium_chromium_nugget.png | Bin 0 -> 164 bytes .../textures/item/lerasium_copper_nugget.png | Bin 0 -> 156 bytes .../item/lerasium_duralumin_nugget.png | Bin 0 -> 149 bytes .../item/lerasium_electrum_nugget.png | Bin 0 -> 147 bytes .../textures/item/lerasium_gold_nugget.png | Bin 0 -> 148 bytes .../textures/item/lerasium_iron_nugget.png | Bin 0 -> 145 bytes .../item/lerasium_nicrosil_nugget.png | Bin 0 -> 145 bytes .../textures/item/lerasium_pewter_nugget.png | Bin 0 -> 162 bytes .../textures/item/lerasium_steel_nugget.png | Bin 0 -> 145 bytes .../textures/item/lerasium_tin_nugget.png | Bin 0 -> 145 bytes .../textures/item/lerasium_zinc_nugget.png | Bin 0 -> 145 bytes 91 files changed, 82 insertions(+), 253 deletions(-) delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json delete mode 100644 src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_aluminum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_bendalloy_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_brass_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_bronze_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_cadmium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_chromium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_copper_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_duralumin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_electrum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_gold_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_iron_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_nicrosil_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_pewter_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_steel_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_tin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasatium_zinc_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_aluminum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_bendalloy_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_brass_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_bronze_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_cadmium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_chromium_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_copper_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_duralumin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_electrum_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_gold_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_iron_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_nicrosil_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_pewter_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_steel_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_tin_nugget.png create mode 100644 src/main/resources/assets/cosmere/textures/item/lerasium_zinc_nugget.png diff --git a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e index bf2b2a304..2d21247fb 100644 --- a/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e +++ b/src/datagen/generated/cosmere/.cache/1a0f94c9f1c196e533e9fd87835b73e7495ceb3e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-11T22:17:29.867903 Tags: cosmere +// 1.20.1 2025-11-12T21:49:11.1720275 Tags: cosmere 7e6f8b5d96792bb9046c5c1d332e4ba04dcade48 data/cosmere/tags/blocks/contains_metal.json af8261c6c6c4f45348129424d153185fe0b65a81 data/cosmere/tags/entity_types/contains_metal.json d0c886fa06555d83e6eb011a2ee98463827788e1 data/cosmere/tags/items/contains_metal.json @@ -63,7 +63,7 @@ fb172135d66ef8791c5a8ada75b7e51bbfde19c8 data/forge/tags/items/ingots/silver.jso a7a420d5b7cc9d4aee8a081558985bbe907d7cb5 data/forge/tags/items/ingots/steel.json fb0b9a9b5ce5a346dbc8123188af5bf8eb41c6b1 data/forge/tags/items/ingots/tin.json f140725c970d068d8a82ce708d90066286adf93d data/forge/tags/items/ingots/zinc.json -e4cd45631fc5b7c85433869ab6320e7eb3f94d73 data/forge/tags/items/nuggets.json +17b8af4e83faf95132c51b8becaee76aa6854868 data/forge/tags/items/nuggets.json a6a8b995609572866ddf9cabcb9711813bb5b7df data/forge/tags/items/nuggets/aluminum.json 55f6cc1ec48e9476aeb337bcae090d1b2d62210b data/forge/tags/items/nuggets/atium.json ea782221059a2106ec8c7ba74d71e70e3d605073 data/forge/tags/items/nuggets/bendalloy.json @@ -88,12 +88,8 @@ e5e74090442129d6869d00ee3b8385550fe0ba77 data/forge/tags/items/nuggets/lerasatiu 5891ad56adf9f39847bdd24037a13708c7bee869 data/forge/tags/items/nuggets/lerasatium_electrum_alloy.json 329782cf4387b0e51c09da22d1c4ffdc82f74fd0 data/forge/tags/items/nuggets/lerasatium_gold_alloy.json 513defe3597d314241300a9036fbda39809018cb data/forge/tags/items/nuggets/lerasatium_iron_alloy.json -1e0cb11bb2a3838548f84f1fee4cf0313e1eec9c data/forge/tags/items/nuggets/lerasatium_lead_alloy.json -82e38c315ef29bfdb877c9b45ee1a7e2926be495 data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json -b9c52239df96a8a2eb0a4117bfee1267334bd6d3 data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json eb0d02802cde497272a11d25057e02aad104fbf3 data/forge/tags/items/nuggets/lerasatium_nicrosil_alloy.json 13d2bfd8ec393251af811bb08e6f112af100d366 data/forge/tags/items/nuggets/lerasatium_pewter_alloy.json -ce959e39f34aafd112a9cb31ba43c87da078ec3a data/forge/tags/items/nuggets/lerasatium_silver_alloy.json b8f1072749ad179f202c4b7843afaa81299d2fe2 data/forge/tags/items/nuggets/lerasatium_steel_alloy.json 1ed392bf903455c1112f5382907367f1a3a8a082 data/forge/tags/items/nuggets/lerasatium_tin_alloy.json 6fd9c09ab999ba9eb1d493d733bd79653a1f99c0 data/forge/tags/items/nuggets/lerasatium_zinc_alloy.json @@ -109,12 +105,8 @@ cc790295eb3e95ed47d6f76109c73f23d84d9e40 data/forge/tags/items/nuggets/lerasium_ 208f863d87e795f095f74db7ba92bd85a0496c47 data/forge/tags/items/nuggets/lerasium_electrum_alloy.json b327a4b767bddbb0197393e2948aa3c804e90602 data/forge/tags/items/nuggets/lerasium_gold_alloy.json f279ab5a2e77b9e339817e6c8f0d4f086f135a9b data/forge/tags/items/nuggets/lerasium_iron_alloy.json -f6882c5b8721516b33e18a315524fb04c632eb31 data/forge/tags/items/nuggets/lerasium_lead_alloy.json -cef81922081d764a8009d0839f2a6075d9c91918 data/forge/tags/items/nuggets/lerasium_malatium_alloy.json -90ac78eb6efa63ab805096759d8609ed0cc101a5 data/forge/tags/items/nuggets/lerasium_nickel_alloy.json d5a9fee1ee9de8e6396ce5d2b6edf40ab0866e9c data/forge/tags/items/nuggets/lerasium_nicrosil_alloy.json a96426ba454efe8bdfd9f4c63449dcfb5fafde05 data/forge/tags/items/nuggets/lerasium_pewter_alloy.json -924ff4d81f72be4f807ccaa15e4c6fb983ad334b data/forge/tags/items/nuggets/lerasium_silver_alloy.json 394d601755fe0e861374bed2135fad7b1a265ac7 data/forge/tags/items/nuggets/lerasium_steel_alloy.json 559f3267451410477472d507195bc6b7d8510bd0 data/forge/tags/items/nuggets/lerasium_tin_alloy.json 31d3eca1e41e21067082c414ee2bed9847fc73dc data/forge/tags/items/nuggets/lerasium_zinc_alloy.json diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 786a18822..688032f4c 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-11T22:17:29.869424 Item Models: cosmere +// 1.20.1 2025-11-12T21:49:11.1760335 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_god_nugget.json @@ -30,52 +30,44 @@ ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ing 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json 31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json c54c10609e6c7e75abf66ab4f533fd787bce5a0a assets/cosmere/models/item/lead_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json +281b6a71980316043618b4eef1e0e8a27ff9bec1 assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json +dcb54797771f0b2ebf2579fd36aa54d4b563aaa6 assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json +71a5e465b21fe91da9c8c6245f79196b5be7de0f assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json +014400ada033302ff63622ef8f42577b5b125528 assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json +a1ce81a83eb7607057cdc87732f966f6eda6588c assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json +06d1e60ef64990d8ec56aa4f329a325ec74feac4 assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json +8d80c47c8d79e63c103ddbcd8c665cd308bf544e assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json +4328a7fe4f53646a793b085aed19030df0c3159a assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json +b1d20ea74ea555c65c0d13333a7ae5524fa3e347 assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_god_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json +8f21a751679478d62cdb3d93dbdaff1ff8091ef7 assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json 998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json +54ec2be247217c2daf38fded73bf1c17060ef5d0 assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json +195281af915e79536d1a8d71bbf904d5dfde802c assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_brass_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_copper_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json +5311d3d146316f5a77172f06da7673056006b5eb assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json +cded1672c2b6cb91e4289565452de7886f9e178a assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json +98d02116eb81b00271912dd50dc46c9556b7a327 assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json +d6946d5ab6a92fb47b30cd59cecb7fe7c1a4f320 assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json +4871821d8ed86fdadcb392a4badd95fed2291d83 assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json +288cc30d45838bfaaf2a9c3ec7bed4860419ada8 assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json +c3520c60bc96af0cc478ab92651d49b79c2f02ec assets/cosmere/models/item/lerasium_brass_alloy_nugget.json +2bb76ed0fceb5831c19e329e07ab98793698a8a8 assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json +d567ae69cb8e8552b5c72034be4ba47393b1702f assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json +b7ce440e61f92e099cf763e4add9991c78f2d8a5 assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json +aa2b4e035e84388db0e35a62c38863cff2b6290a assets/cosmere/models/item/lerasium_copper_alloy_nugget.json +574e08f69b1e6c4a9f7a4d5af04307f119f7916d assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json +d6835cf7377b0b37f793ad497f85db8bdfc5962a assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_god_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_gold_alloy_nugget.json +b687b9fa1f047d36fd345392d0cca7f6228f1ab3 assets/cosmere/models/item/lerasium_gold_alloy_nugget.json 7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_iron_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_lead_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json +fc566fc538d4e3070d1f9b289f51615ce4661667 assets/cosmere/models/item/lerasium_iron_alloy_nugget.json +9445767cdca3d4a8ab5c981f79a35e201b554249 assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json 65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_silver_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_steel_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_tin_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json +fdd3fd92af21f04f9c0978b820b8cbe2839568fa assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json +a73e2bec2db6812ec644b45475ccbc160b7fb53b assets/cosmere/models/item/lerasium_steel_alloy_nugget.json +cd2ad5207e91eaa39569f8ca68af3578a5607222 assets/cosmere/models/item/lerasium_tin_alloy_nugget.json +22a87c9d9cb7df905af996b2fde273fb9dbf5aef assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json 8f9ecdfe13399031e5a39d1145e2866c39a9cf1c assets/cosmere/models/item/malatium_ingot.json f57901c7644ff165eb5c89a41d9f0c69ec03a6c4 assets/cosmere/models/item/malatium_nugget.json d7c618ca7626312d43f57accc1b339af9936a5c7 assets/cosmere/models/item/nickel_ingot.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index ced96dd8c..437727faf 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-11T22:17:29.871834 Languages: en_us -0d68afeb03dfb278a3b63c6d85389004175bef18 assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-12T21:49:11.1780361 Languages: en_us +e45eeb0c156634b963586366813800b5e86279bf assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 182de6eff..44187811f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -101,13 +101,9 @@ "item.cosmere.lerasatium_gold_alloy_nugget": "Lerasatium Gold Alloy Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", "item.cosmere.lerasatium_iron_alloy_nugget": "Lerasatium Iron Alloy Nugget", - "item.cosmere.lerasatium_lead_alloy_nugget": "Lerasatium Lead Alloy Nugget", - "item.cosmere.lerasatium_malatium_alloy_nugget": "Lerasatium Malatium Alloy Nugget", - "item.cosmere.lerasatium_nickel_alloy_nugget": "Lerasatium Nickel Alloy Nugget", "item.cosmere.lerasatium_nicrosil_alloy_nugget": "Lerasatium Nicrosil Alloy Nugget", "item.cosmere.lerasatium_nugget": "Lerasatium Nugget", "item.cosmere.lerasatium_pewter_alloy_nugget": "Lerasatium Pewter Alloy Nugget", - "item.cosmere.lerasatium_silver_alloy_nugget": "Lerasatium Silver Alloy Nugget", "item.cosmere.lerasatium_steel_alloy_nugget": "Lerasatium Steel Alloy Nugget", "item.cosmere.lerasatium_tin_alloy_nugget": "Lerasatium Tin Alloy Nugget", "item.cosmere.lerasatium_zinc_alloy_nugget": "Lerasatium Zinc Alloy Nugget", @@ -124,13 +120,9 @@ "item.cosmere.lerasium_gold_alloy_nugget": "Lerasium Gold Alloy Nugget", "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_iron_alloy_nugget": "Lerasium Iron Alloy Nugget", - "item.cosmere.lerasium_lead_alloy_nugget": "Lerasium Lead Alloy Nugget", - "item.cosmere.lerasium_malatium_alloy_nugget": "Lerasium Malatium Alloy Nugget", - "item.cosmere.lerasium_nickel_alloy_nugget": "Lerasium Nickel Alloy Nugget", "item.cosmere.lerasium_nicrosil_alloy_nugget": "Lerasium Nicrosil Alloy Nugget", "item.cosmere.lerasium_nugget": "Lerasium Nugget", "item.cosmere.lerasium_pewter_alloy_nugget": "Lerasium Pewter Alloy Nugget", - "item.cosmere.lerasium_silver_alloy_nugget": "Lerasium Silver Alloy Nugget", "item.cosmere.lerasium_steel_alloy_nugget": "Lerasium Steel Alloy Nugget", "item.cosmere.lerasium_tin_alloy_nugget": "Lerasium Tin Alloy Nugget", "item.cosmere.lerasium_zinc_alloy_nugget": "Lerasium Zinc Alloy Nugget", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json index 9952b7116..8e5d4854f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_aluminum_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_aluminum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json index 9952b7116..9f57a508e 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bendalloy_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_bendalloy_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json index 9952b7116..1bf4f89e2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_brass_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_brass_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json index 9952b7116..2cafd19c0 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_bronze_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_bronze_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json index 9952b7116..44e193021 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_cadmium_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_cadmium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json index 9952b7116..08c8868a2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_chromium_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_chromium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json index 9952b7116..f58c957e7 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_copper_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json index 9952b7116..de8b0fed9 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_duralumin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json index 9952b7116..c117c3e27 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_electrum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json index 9952b7116..a0d412b47 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_gold_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json index 9952b7116..c3aea1ef4 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_iron_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json deleted file mode 100644 index 9952b7116..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_lead_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json deleted file mode 100644 index 9952b7116..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_malatium_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json deleted file mode 100644 index 9952b7116..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nickel_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json index 9952b7116..cd1317031 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_nicrosil_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_nicrosil_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json index 9952b7116..a6f35b382 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_pewter_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_pewter_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json deleted file mode 100644 index 9952b7116..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_silver_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json index 9952b7116..09b469b41 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_steel_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_steel_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json index 9952b7116..bb2226766 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_tin_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_tin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json index 9952b7116..7467ffba2 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_zinc_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasatium_nugget" + "layer0": "cosmere:item/lerasatium_zinc_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json index fb9f1d549..948e00391 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_aluminum_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_aluminum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json index fb9f1d549..00458680c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bendalloy_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_bendalloy_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json index fb9f1d549..f03e44e6b 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_brass_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_brass_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json index fb9f1d549..a0a152e8f 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_bronze_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_bronze_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json index fb9f1d549..a9dbc5237 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_cadmium_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_cadmium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json index fb9f1d549..ea6233a46 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_chromium_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_chromium_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json index fb9f1d549..be973b39c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_copper_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_copper_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json index fb9f1d549..00834b68a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_duralumin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json index fb9f1d549..c695d3026 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_electrum_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json index fb9f1d549..532682b60 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_gold_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_gold_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json index fb9f1d549..0e73316b0 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_iron_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_iron_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json deleted file mode 100644 index fb9f1d549..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_lead_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json deleted file mode 100644 index fb9f1d549..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_malatium_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json deleted file mode 100644 index fb9f1d549..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nickel_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json index fb9f1d549..dfc7e6828 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_nicrosil_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_nicrosil_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json index fb9f1d549..51f7a2b26 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_pewter_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_pewter_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json deleted file mode 100644 index fb9f1d549..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_silver_alloy_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json index fb9f1d549..0066eaff6 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_steel_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_steel_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json index fb9f1d549..e01701d70 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_tin_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_tin_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json index fb9f1d549..c0c3c3eef 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json +++ b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_zinc_alloy_nugget.json @@ -1,6 +1,6 @@ { "parent": "minecraft:item/generated", "textures": { - "layer0": "cosmere:item/lerasium_nugget" + "layer0": "cosmere:item/lerasium_zinc_nugget" } } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json index 2c2f80ab1..c72b73617 100644 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json +++ b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets.json @@ -52,17 +52,9 @@ "#forge:nuggets/lerasium", "#forge:nuggets/harmonium", "#forge:nuggets/malatium", - "#forge:nuggets/lerasium_malatium_alloy", - "#forge:nuggets/lerasatium_malatium_alloy", "#forge:nuggets/lerasatium", "#forge:nuggets/nickel", - "#forge:nuggets/lerasium_nickel_alloy", - "#forge:nuggets/lerasatium_nickel_alloy", "#forge:nuggets/lead", - "#forge:nuggets/lerasium_lead_alloy", - "#forge:nuggets/lerasatium_lead_alloy", - "#forge:nuggets/silver", - "#forge:nuggets/lerasium_silver_alloy", - "#forge:nuggets/lerasatium_silver_alloy" + "#forge:nuggets/silver" ] } \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json deleted file mode 100644 index 6dfaf2446..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_lead_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasatium_lead_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json deleted file mode 100644 index d22b2eff3..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_malatium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasatium_malatium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json deleted file mode 100644 index 96b69d117..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_nickel_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasatium_nickel_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json deleted file mode 100644 index 4990f0ade..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasatium_silver_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasatium_silver_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json deleted file mode 100644 index db59f2eb1..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_lead_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasium_lead_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json deleted file mode 100644 index f5eec1e79..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_malatium_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasium_malatium_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json deleted file mode 100644 index 84213c146..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_nickel_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasium_nickel_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json b/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json deleted file mode 100644 index d4ae09f92..000000000 --- a/src/datagen/generated/cosmere/data/forge/tags/items/nuggets/lerasium_silver_alloy.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "values": [ - "cosmere:lerasium_silver_alloy_nugget" - ] -} \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java index b41292e6a..1077f6c60 100644 --- a/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java +++ b/src/datagen/main/java/leaf/cosmere/items/ItemModelsGen.java @@ -44,7 +44,7 @@ protected void registerModels() } else if (item instanceof GodMetalAlloyNuggetItem godMetalAlloyNuggetItem) { - simpleItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_nugget"); + simpleItem(path, godMetalAlloyNuggetItem.getMetalType().getName() + "_" + godMetalAlloyNuggetItem.getAlloyedMetalType().getName() + "_nugget"); continue; } else if (item instanceof GodMetalNuggetItem godMetalNuggetItem) diff --git a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java index dfd6f90b4..e0893184c 100644 --- a/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java +++ b/src/datagen/main/java/leaf/cosmere/tag/CosmereTagProvider.java @@ -113,7 +113,7 @@ private void addItems() } // Add the metal alloy nugget to the nugget tags - if(!metalType.isGodMetal()) + if(!metalType.isGodMetal() && metalType.hasAssociatedManifestation()) { for(Metals.MetalType godMetalType : new Metals.MetalType[] { Metals.MetalType.LERASIUM, Metals.MetalType.LERASATIUM}) { diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 6f0a56c64..29158cccd 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -7,7 +7,6 @@ import leaf.cosmere.api.IHasColour; import leaf.cosmere.api.helpers.RegistryHelper; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.items.AlloyNuggetItem; import net.minecraft.client.Minecraft; import net.minecraft.client.color.block.BlockColor; import net.minecraft.client.color.block.BlockColors; @@ -19,8 +18,6 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.registries.ForgeRegistries; -import java.util.HashSet; - public final class ColorHandler { @@ -35,12 +32,9 @@ public static void init() ItemColors itemColors = Minecraft.getInstance().getItemColors(); ItemColor itemColorHandler = - (itemStack, tintIndex) -> - { - if(tintIndex != 0) return -1; - if(!(itemStack.getItem() instanceof AlloyNuggetItem alloyNuggetItem)) return -1; - return alloyNuggetItem.getColourValue(); - }; + (itemStack, tintIndex) -> tintIndex == 0 + ? ((IHasColour) itemStack.getItem()).getColourValue() + : -1; ItemColor blockItemColorHandler = (itemStack, tintIndex) -> tintIndex == 0 @@ -79,17 +73,17 @@ public static void init() //todo temp? if (//!itemNamespace.equals("surgebinding") && !itemNamespace.equals("cosmeretools") - && !itemNamespace.equals("cosmere") + //&& !itemNamespace.equals("cosmere") ) { continue; } - if (item instanceof AlloyNuggetItem) + if (item instanceof IHasColour) { itemColors.register(itemColorHandler, item); } } } } -} +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java index a29190d2c..b496dc3a7 100644 --- a/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/AlloyNuggetItem.java @@ -19,39 +19,4 @@ public MetalType getAlloyedMetalType() { return alloyedMetalType; } - - public Color mixColors(ArrayList colors) - { - double r = 0; - double g = 0; - double b = 0; - - double ratio = 1f / colors.size(); - - for(Color color: colors) { - r += (color.getRed() * ratio); - g += (color.getGreen() * ratio); - b += (color.getBlue() * ratio); - } - - // Clamp just in case of rounding - r = Math.min(255, Math.max(0, r)); - g = Math.min(255, Math.max(0, g)); - b = Math.min(255, Math.max(0, b)); - - return new Color((int) r, (int) g, (int) b); - } - - public Color getColour() - { - ArrayList colors = new ArrayList<>(); - colors.add(this.getMetalType().getColor()); - colors.add(this.getAlloyedMetalType().getColor()); - return mixColors(colors); - } - - public int getColourValue() - { - return getColour().getRGB(); - } } diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index a8ba6b9ad..05a6c555d 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -7,7 +7,6 @@ import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import net.minecraft.network.chat.Component; @@ -17,8 +16,6 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; -import java.util.List; - public class CreativeTabsRegistry { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Cosmere.MODID, CreativeTabsRegistry::addToExistingTabs); @@ -32,15 +29,7 @@ public class CreativeTabsRegistry builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> { - // CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); - List items = ItemsRegistry.ITEMS.getAllItems(); - for(IItemProvider item : items) - { - if(!(item.asItem() instanceof GodMetalAlloyNuggetItem)) - { - output.accept(item); - } - } + CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); }) ); @@ -105,4 +94,4 @@ else if (tabKey == CreativeModeTabs.INGREDIENTS) } } -} +} \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 12ec172a0..8f4de9a31 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -63,7 +63,8 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), // key: the god metal itself godMetalType -> Arrays.stream(EnumUtils.METAL_TYPES) - .filter(type -> !type.isGodMetal()) + .filter(Metals.MetalType::hasAssociatedManifestation) + .filter(metalType -> !metalType.isGodMetal()) .collect(Collectors.toMap( Function.identity(), // key: base metal metalType -> ITEMS.register( diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_aluminum_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_aluminum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ede2cde051135bc8ac299080cc8c74f44d19e1 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo9le z6C_xf`6WJjJ`1_>uYKe45|iZ6(@p-x5i88+)Tg{(`Cr`c{Sku}&gsuy%}TQP|F)gq zBDV7?0~;G#Tj$@+k|9@3B|!MwJG-vS3~T-w8I=Bi|M2;t13>WM>1*{izopr0MF%0_5c6? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_bendalloy_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_bendalloy_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..2229a5c0f4d1ed512c8f57fcaa9901a905920ce4 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo9le z6C_xf`6WJjR;?`f-@bAC-Je~dy4-eWC#Sm|{@L#={%8N6cj9e|K08eG@80EmzQ6XH z;BxJaQU`z_V7hgqqlafZ2q%7;(rm$d;FW%?;MVMaV4ARkwsyrbZ^EVJ43$0iJE h96i0>pEVj77@j>+c@opScRkP*44$rjF6*2Ung9^dM%(}Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_brass_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_brass_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..91d9db17fe291b4ca5b4699dd4cbf158e52e0491 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;qG}Lo9le z6C_xf`6WJj%FTT6P5#(6%^R)Zx?yMk+vl`Ac9P%u|Hc)=hnI5ZZkJR1@R-xDdxO*g zAlR_&UTMpx-LSLyc{)`9o_-?(D<@RH5%1BDj<-~azVAJum)Rq_*0_&R;A#{2sF4#sRi&^CMed&4`sKDRx*@cMkj k)ki!MDbj_Ra;!in?Z0fYo6S~l4bTY;p00i_>zopr01#PBYybcN literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_cadmium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_cadmium_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..cfab5245d421f7f5c1126342acac692a5abbfa61 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|N<3X0Lo9le z6C_xf`6WJjuKQy0lRvpV-@Z9qH|(ta_p{B96$HQizj4Lz;U$?}Zw==B|MSpzj@ZTr zlXgrIKf1s?Q<5174twfH&tXgW8a{#J_y1iU`fNbZHoIKTc#Tc%%*4C1=SN(9#3PYn g|M-#(mjVNW%pt7~>0Pk~K>HayUHx3vIVCg!04Bpip8x;= literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_chromium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_chromium_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..0294037d8662c74db68699156fca6f9b9fde2f74 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo9le z6C_xf`6WJjR#p7|+rF_p=Wa`=F1Ov;T~<~F|JHho|G!`TN8qr4TFk7=lY}4q@t<%1 zxI{IKSpo>uzWXL@FfmUA;T;v9Sp1kb{POk;`?r739vfyLIQ;$neaX1JRYx1n{bP0l+XkKT4O~Y literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_copper_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_copper_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..966623ff9a0fac49f4b29c98ea1092af9968ecde GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo9le z6C_xf`6WJjp8IJ0hd+6Fj#YoCF1OuT&U=jo|Bj~1|MRyimOm_@7BlOycl5(Q*ZbE$ zC{Yb#mH>i2-~5Ch>r)SXh(Fzu_ e$%adTfgvkWOX=qH!izxr89ZJ6T-G@yGywn_T|*WC literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_electrum_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_electrum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..fdbbd23d257d18f11c87b628ab89b7a1c817de8a GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|@;zM~Lo9le z6C_xf`6WJj=FPhKQU2IB@AU^(i>-c^-|u&@u&MoLea@>H1)1ME{Te^tx2@~Ath9#B z00?|mo=$rp5R?SM5!=gn{g^lW(mr_j&;E(inC8^KyT#nbYVDU4+HIUL;ct)kXN?91 ZhNaIn)!uafU<6vt;OXk;vd$@?2>^_;M9KgF literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_gold_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_gold_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..abff30aedca095feb152be06df7eb4f0474d8e66 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|vOHZJLo9le z6C_xf`6WJjUSt3Gr+uUJ_1c50#a2I?Z*Tn2;{4p-_GYC%J50>i{N;K6e}CugBC!~u z^=6%h9Y6ObB>=&WYL^xh=6m&j`OTkvzFf~U+3a7!j4hwF!_ps=NN<{7m?_5!bcMx4 V9rb92ZVsTW44$rjF6*2UngHtqKjHuY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_iron_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_iron_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..fe1afbe8470d34c7b1dca8ce7c500957fd5f0352 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|3OrpLLo9le z6C_xf`6WJjx*bXX)4nlWXHH|dZrEA#_xA0{-qP*=Z(K2ac*!QaNPN!!4^PwQh$Wgf zG&VLaEc}+k=9!oW!fkWi%^#aEtlqDaEAua!_1B@F$FJq5S=2pY2-|AG%y#qq4wHT+ b4h9BWZ;d(Phu$s)+RfnU>gTe~DWM4f&vZe$ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_nicrosil_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_nicrosil_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2b38397c404c784927c52764425f5911d60e23 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|sytmBLo9le z6C_xf`6WJj?%Lh@uYF_ryQtn!U2eOxm9AF{{>?Ve|3BY$JO5z;wU}AfyM90X<3E4j zqY~9HW(goz<}>S{f~w{r5Z;h*j%5y8!q@2=Ctj{+cGhMCf;RR3e4{;;pQka-{#+=< jV9avt*wRW72L=WfMb%rc|6j8Jx`M&e)z4*}Q$iB}EOtY< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasatium_pewter_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasatium_pewter_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..f1896f8093af96e35c1c29e8f0701b9910ac66f2 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|$~;{hLo9le z6C_xf`6WJjw*CJ3w|!%H-mR8UU2eOxo-=0_{QJE<|NncdDv`qiYB968wX`4pQ8&+j zRH7QjECB@D*2bPbpssKLgbNlM0yjwk&8P@y@3JLf*f7+xY2Y{g9>8sGTU_Eu&Cf;RE<^2T?nKFngA{kc$z j!IPvu->6zV2a2x9|(DjSoxzX*4h}*tJUFVdQ&MBb@ E0JDQSjsO4v literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_brass_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_brass_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..043afdcb4fb7270d7721b6a11892f5153879d5b2 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le z6C_v<%gW4r@a_KzmhJyjvj6>0eEk2v{<44iUnU;T0#Fm6uUh6lzj5f?if8x!T@x(lQVUZ0b0 wn|CLpZT9r{g3nWO4){$GU;o*ik%fUl=dbvT-t47$K%*HvUHx3vIVCg!0Bx}~A^-pY literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_cadmium_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_cadmium_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..86992127de86c563246c1bbd7986a75f91f7b33c GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le z6C_v<%dYui@^k;C%TMfY&Z>Vm`}_Zcf2RF+RC;5T= wW&8Terfqh)obdCM90iXS+4Y~@8Ce(@WcvIx8ME#yux;8cUf8SeERf>$7|Ck3*Lj749v{T%}aN3GRy1h$Aud` zniMc;>VJKG{qrCG{w{9|Ums_9r}~e;@~Aluo?-v&?Vk5DaWF90Z4k}2k`R{w+Qi`L L>gTe~DWM4fah^D8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_copper_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_copper_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..1f2ed802b5bcfdddf702a5e290b083d2d9fb8ec3 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|!aQ9ZLo9le z6C_v<%bqE``p5ow=x2L7Q=cCu>Mbrt6|-L(J(;EP$fSjJ{>%SceI#5YC4j*1aY*y! zhVJ+E1~Rkn9VqyHI=`mu0sBt1uKyn`>qQ(G7)px74xUuMk_@zg!PC{xWt~$(69AaY BH&y@u literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_duralumin_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_duralumin_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..245d53921733e863b5ea8172276ac343235a6df0 GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5@S9Lo9le z6C_v<%SP<_{bzg0_n-dTo-t3?{}*5U5AO=;nGZ_;X*4h}?0qHvySDzpHlWcAp00i_>zopr0Q&(s0RR91 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_electrum_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_electrum_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..345da72abb328c0bf77aa03df274625eff587fa6 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|d_7$pLo9le z6C_v<%jV3w`LX`;nZExi+5f)1xbk1!J^a7_2ZQ689Nc!!7A;dGS~wzFE;p3EzHV#) r1U5S==WQr1Y-Hgt-g8c#6==~yb;bP0l+XkK3cxa^ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_gold_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_gold_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..2fb484790f2e8cd27bc083ac4b2d47f35d9a7925 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|{5)M8Lo9le z6C_v<%U)ss_-8%;qo4lUp3S#6{{Mf+l&|*Z=SnYE^!dS)m^}N~ffarC8FhB3+^he4 w{zKMeiNnvA|L-U^GMn)HT<`Utiy4?0PF#?hDH*}34K$g-)78&qol`;+03R$k$^ZZW literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_iron_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_iron_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..7a224aeb667852655d3c3ce4c4a8d4a73aec64a7 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|yggkULo9le z6C_v<%eov%|I^=b{)hjzXS2W0|9`*q(Y1PSY4$m78y*+4DXKStX{>1Nl^`bsmS$$61h6lzjUO_DjTrGGjK0nhvJjK&k sVxG-D&l@{;G;EwG9QVARiGzVbCqW|e$i&ZGKw}v^UHx3vIVCg!0Eo#lz5oCK literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_pewter_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_pewter_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..e8249014a22ed0f29d01a1c54816cd00eb4d666e GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Vmw_OLo9le z6C_v<%eMUf`IrCu=imMQyxewYJ!j73@z1-LQt|)W+yAld{YFW_$6L;q*fBD)NtTxG zS$E`R)A#)QMmf>Dr#(EnI=q7S0Qa3WYya<#jDF199C+XW14Ck(bo4IG88twA7(8A5 KT-G@yGywnwl0CQp literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/cosmere/textures/item/lerasium_steel_nugget.png b/src/main/resources/assets/cosmere/textures/item/lerasium_steel_nugget.png new file mode 100644 index 0000000000000000000000000000000000000000..cb398219d741914a6d8c468892b9c684708dc7fe GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|yggkULo9le z6C_v<%UW3P`deOB^4ovgv*P7`|KqpT9Iba{6`j+z;eoMBOi&DI<4U3w%;-2?2aWF6>e-$@;+jR5@&{zgfS3j3^P6NWi|A+s!XT|>V|Lzxj`cOZAM!=l54G)Z6TtZqFxLWX5eEXt#c+X8^ r$$7R_E;n}WXz=&Zh%ps@^|u6{1-oD!M Date: Wed, 12 Nov 2025 22:24:01 -0500 Subject: [PATCH 1066/1090] cleanup --- .../java/leaf/cosmere/allomancy/common/utils/MiscHelper.java | 5 +---- .../java/leaf/cosmere/common/eventHandlers/ColorHandler.java | 2 +- .../leaf/cosmere/common/registry/CreativeTabsRegistry.java | 2 +- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 5a88fec17..0504a7636 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -21,10 +21,7 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) { - if (livingEntity.level().isClientSide) - { - return; - } + if (livingEntity.level().isClientSide) return; if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) { diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java index 29158cccd..c5a300573 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/ColorHandler.java @@ -86,4 +86,4 @@ public static void init() } } } -} \ No newline at end of file +} diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 05a6c555d..fe9b0dbf8 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -94,4 +94,4 @@ else if (tabKey == CreativeModeTabs.INGREDIENTS) } } -} \ No newline at end of file +} From d709b932b250bd4ed8628893f7193b5f3fc6096c Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Wed, 12 Nov 2025 22:38:18 -0500 Subject: [PATCH 1067/1090] small fixup --- .../common/items/GodMetalAlloyNuggetItem.java | 12 +++++++++--- .../cosmere/common/items/GodMetalNuggetItem.java | 13 ++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index d98d189d8..866147fb0 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -142,13 +142,19 @@ public void grantManifestations(LivingEntity livingEntity, ArrayList= attribute.getMinValue() && newStrength <= attribute.getMaxValue()) + if(newStrength < attribute.getMinValue()) { - spiritweb.giveManifestation(manifestation, strength+currentStrength); + newStrength = (int) attribute.getMinValue(); } + else if (newStrength > attribute.getMaxValue()) + { + newStrength = (int) attribute.getMaxValue(); + } + + spiritweb.giveManifestation(manifestation, newStrength); } if (livingEntity instanceof ServerPlayer serverPlayer) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index b4c1aa97b..86ba925e5 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -159,13 +159,20 @@ public void grantManifestations(LivingEntity livingEntity, ArrayList= attribute.getMinValue() && newStrength <= attribute.getMaxValue()) + if(newStrength < attribute.getMinValue()) { - spiritweb.giveManifestation(manifestation, strength+currentStrength); + newStrength = (int) attribute.getMinValue(); } + else if (newStrength > attribute.getMaxValue()) + { + newStrength = (int) attribute.getMaxValue(); + } + + spiritweb.giveManifestation(manifestation, newStrength); + } if (livingEntity instanceof ServerPlayer serverPlayer) From 9ca49acf920fbed04c57f3a41e205f71d0bfa376 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 14 Nov 2025 13:27:24 -0500 Subject: [PATCH 1068/1090] small tweaks to power system and removing mistborn strength config --- .../common/config/AllomancyServerConfig.java | 7 +------ .../subcommands/ChooseMetalbornPowersCommand.java | 4 ++-- .../commands/subcommands/ManifestationCommand.java | 2 +- .../common/eventHandlers/EntityEventHandler.java | 12 ++++++++---- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java index 43c0d1b44..01d4dff52 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/config/AllomancyServerConfig.java @@ -13,7 +13,6 @@ public class AllomancyServerConfig implements ICosmereConfig private final ForgeConfigSpec configSpec; - public final ForgeConfigSpec.IntValue GOD_METAL_EAT_STRENGTH_MINIMUM; public final ForgeConfigSpec.DoubleValue IRON_STEEL_RANGE; public final ForgeConfigSpec.DoubleValue PUSH_PULL_WEIGHT; public final ForgeConfigSpec.DoubleValue MAX_PUSH_PULL_WEIGHT; @@ -27,7 +26,6 @@ public class AllomancyServerConfig implements ICosmereConfig ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder(); builder.comment("Allomancy Config. This config is synced between server and client.").push("allomancy"); - GOD_METAL_EAT_STRENGTH_MINIMUM = builder.comment("When the user eats a lerasium nugget, what should their strength in allomancy be set to").defineInRange("godMetalMinimumStrength", 16, 1, 32); //can't modify registry objects like that //boostAmount = builder.comment("Boost amount for Duralumin and Nicrosil").defineInRange("boostAmount", 0.334D, 0D, 1D); @@ -60,8 +58,5 @@ public Type getConfigType() } @Override - public void clearCache() - { - GOD_METAL_EAT_STRENGTH_MINIMUM.clearCache(); - } + public void clearCache() { } } \ No newline at end of file diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java index 7d6c39229..6ae2354ae 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java @@ -147,7 +147,7 @@ private static int confirmMetalbornPowers(CommandContext con // always give natural level manifestation; do nothing if cosmere:none is selected if (!queueItem.allomanticPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { - spiritweb.giveManifestation(queueItem.allomanticPower, 9); + spiritweb.giveManifestation(queueItem.allomanticPower, 8); source.sendSuccess(() -> Component.literal("Successfully added allomantic " + queueItem.allomanticPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose @@ -155,7 +155,7 @@ private static int confirmMetalbornPowers(CommandContext con } if (!queueItem.feruchemicalPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { - spiritweb.giveManifestation(queueItem.feruchemicalPower, 9); + spiritweb.giveManifestation(queueItem.feruchemicalPower, 8); source.sendSuccess(() -> Component.literal("Successfully added feruchemical " + queueItem.feruchemicalPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java index 6e6a07d3b..0c90c5fff 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java @@ -133,7 +133,7 @@ private static int give(CommandContext context) throws Comma SpiritwebCapability.get(player).ifPresent((spiritweb) -> { //todo change this so that the user sets the strength in the command - spiritweb.giveManifestation(manifestation, 9); + spiritweb.giveManifestation(manifestation, 8); source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); ReportPowersFoundOnPlayer(context, player); spiritweb.syncToClients(null); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 120341568..2f6a2ce08 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -218,7 +218,11 @@ else if (feruchemyLoaded) { if (manifestation.getManifestationType() == manifestationType) { - spiritwebCapability.giveManifestation(manifestation, 9); + // Lord Mistborn is 16 + // Elend is 12 + // Vin is 9 + // Average strength is 8 + spiritwebCapability.giveManifestation(manifestation, 8); } } @@ -235,7 +239,7 @@ else if (feruchemyLoaded) { if (allomancyLoaded) { - spiritwebCapability.giveManifestation(allomancyPower, 9); + spiritwebCapability.giveManifestation(allomancyPower, 8); if (spiritwebCapability.getLiving() instanceof Player player) { spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY).GiveStartingItem(player, allomancyPower); @@ -247,7 +251,7 @@ else if (feruchemyLoaded) } if (feruchemyLoaded) { - spiritwebCapability.giveManifestation(feruchemyPower, 9); + spiritwebCapability.giveManifestation(feruchemyPower, 8); if (spiritwebCapability.getLiving() instanceof Player player) { @@ -284,7 +288,7 @@ else if (feruchemyLoaded) return; } - spiritwebCapability.giveManifestation(manifestation, 9); + spiritwebCapability.giveManifestation(manifestation, 8); if (spiritwebCapability.getLiving() instanceof Player player) { spiritwebCapability.getSubmodule(isAllomancy ? Manifestations.ManifestationTypes.ALLOMANCY : Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, manifestation); From c52afc52f135a6329bda68acbc8f944ba9d039c2 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 14 Nov 2025 15:41:50 -0500 Subject: [PATCH 1069/1090] Removing godmetalnuggets and godmetalalloynuggets from creative tab --- .../common/registry/CreativeTabsRegistry.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index fe9b0dbf8..88e555e06 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -7,6 +7,8 @@ import leaf.cosmere.api.providers.IBlockProvider; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.registration.impl.CreativeTabDeferredRegister; import leaf.cosmere.common.registration.impl.CreativeTabRegistryObject; import net.minecraft.network.chat.Component; @@ -16,6 +18,8 @@ import net.minecraft.world.level.block.Block; import net.minecraftforge.event.BuildCreativeModeTabContentsEvent; +import java.util.List; + public class CreativeTabsRegistry { public static final CreativeTabDeferredRegister CREATIVE_TABS = new CreativeTabDeferredRegister(Cosmere.MODID, CreativeTabsRegistry::addToExistingTabs); @@ -29,7 +33,14 @@ public class CreativeTabsRegistry builder.withSearchBar()//Allow our tabs to be searchable for convenience purposes .displayItems((displayParameters, output) -> { - CreativeTabDeferredRegister.addToDisplay(ItemsRegistry.ITEMS, output); + List items = ItemsRegistry.ITEMS.getAllItems(); + for(IItemProvider item : items) + { + if(!(item.asItem() instanceof GodMetalAlloyNuggetItem) && !(item.asItem() instanceof GodMetalNuggetItem)) + { + output.accept(item); + } + } CreativeTabDeferredRegister.addToDisplay(BlocksRegistry.BLOCKS, output); }) ); From 56eb1fb80da0e0340efda5c931c7c6b77d70b6aa Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Fri, 14 Nov 2025 14:03:17 -0700 Subject: [PATCH 1070/1090] patchouli updates Signed-off-by: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> --- .../.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 | 4 ++-- .../en_us/entries/basics/activating_powers.json | 6 +----- .../java/leaf/cosmere/patchouli/PatchouliBasics.java | 12 +++++++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 index 43bebf0ed..aee3d3b3e 100644 --- a/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 +++ b/src/datagen/generated/cosmere/.cache/39b5f26b3fbd3a088f493470df207f8ad9de8264 @@ -1,4 +1,4 @@ -// 1.20.1 2025-06-30T21:57:26.244604 Cosmere PatchouliGeneration +// 1.20.1 2025-11-14T13:49:46.928092 Cosmere PatchouliGeneration 4f33960cb7941c483714148bc1fde9b26c995d68 assets/cosmere/patchouli_books/guide/en_us/categories/basics.json -98bd146d8ce57e4944b62a5780552617a3a7a7db assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json +d848b9aedb980207d01ca4b59857308407d8248c assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json fd4cfd28bfffc52180eb889bfae3bd79f08c388b assets/cosmere/patchouli_books/guide/en_us/entries/basics/investiture_basics.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json index 2084fca35..ddb7690c3 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json +++ b/src/datagen/generated/cosmere/assets/cosmere/patchouli_books/guide/en_us/entries/basics/activating_powers.json @@ -5,7 +5,7 @@ "pages": [ { "type": "text", - "text": "The first way I will teach you to activate powers is with the basic keybinds. This is not the most effective way of doing it, but it is straightforward.\nFirst, locate the icon for your current main power in the upper left corner. By pressing ($(k:key.cosmere.powers.next)$()) and ($(k:key.cosmere.powers.previous)$()) you can change which power is your current main. From there, press ($(k:key.cosmere.powers.mode.increase)$()) and ($(k:key.cosmere.powers.mode.decrease)$()) to change the mode for that power. Changing your current main power will not stop your other powers from running in the background.", + "text": "The first way I will teach you to activate powers is with the basic keybinds. This is not the most effective way of doing it, but it is straightforward.\nFirst, locate the icon for your current main power in the upper left corner. By pressing ($(k:key.cosmere.powers.next)$()) and ($(k:key.cosmere.powers.previous)$()) you can change which power is your current main. From there, press ($(k:key.cosmere.powers.mode.increase)$()) and ($(k:key.cosmere.powers.mode.decrease)$()) to change the mode for that power by plus or minus one respectively. If you are holding ($(k:Shift)$()) while you are changing the mode this way, it will change by plus or minus five levels, If instead you are holding ($(k:control)$()()) while you are changing the mode this way, it will change by plus or minus ten levels or to the maximum, whichever is lower. Changing your current main power will not stop your other powers from running in the background.", "title": "Activating Powers" }, { @@ -18,10 +18,6 @@ "text": "The fastest way to activate one power quickly is with its dedicated keybind. These are not set by default, but you can change your favorites to activate this way. When this keybind is used, it will set the mode of your power to +1, unless the power is feruchemical in nature, in which case it will tap at level 5 instead. However, in all cases, if the power is already active, no matter the mode, pressing the keybind will turn the power off instead. Using a dedicated keybind will also set your active main power to the associated power as well", "title": "Dedicated Keybinds" }, - { - "type": "empty", - "draw_filler": true - }, { "type": "text", "text": "(Note: this is a recent and complicated feature. It may have bugs. Please report all bugs to the bug tracker.)$(br)By far the most complicated way to activate your powers is with the Power Mode Save States. You have access to nine different ones. To save a new save state, activate all desired powers at the desired levels through any of the means previously described, and ensure all others are turned off. Then hold ($(k:key.cosmere.powers.save)$()) and press one of your hotbar slots.$(br2)All active powers are now saved to that key.", diff --git a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java index cf94f5658..19090cb69 100644 --- a/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java +++ b/src/datagen/main/java/leaf/cosmere/patchouli/PatchouliBasics.java @@ -56,9 +56,17 @@ public static void collect(List categories, List categories, List Date: Fri, 14 Nov 2025 15:06:02 -0700 Subject: [PATCH 1071/1090] Add files via upload --- .../assets/cosmere/textures/item/zinc_ingot.png | Bin 318 -> 331 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/item/zinc_ingot.png b/src/main/resources/assets/cosmere/textures/item/zinc_ingot.png index 436d072c300d9265ac804b62fe23cc302265e615..2324dbf100a3680d40f36ad52f711fd7eef1611a 100644 GIT binary patch delta 292 zcmdnTbed^`K|Ld@r;B5VMQ?I~#HWUd60VUy1OHF_d09=b`E|0QTX4`MduILh2AjUr z&rs~Sk&^%fC(ipP{rK}!w@YG^qOkh8XlqV;#p;^Gq9rmikaZV|N+@SkUO zG$AkT*a09=&`>z^;oo8D9c|+0&N###kx-Xt z5Rg{!{~>Q16Q^fnoAdGW2Y(uTtu}j?mI89{&CP}8%FX*<*SEc84=_0-au4W^brRAI m-aCHmmR+=jwPqHZI0J+I&8)wD>W@qqfWXt$&t;ucLK6TIP=QJS delta 279 zcmV+y0qFkA0=@!}Fn<8}Nkl1vN*n^E!w4$nipfl+oXmxyLWKDic zOc)cB9h<9~NJXhBtJtOk8-)pK=k;+N zM@!2&=RiT=1E94lty)6VsS^OgFaW@qqS2R-D7q((mdaU#^M6{*U4ZmuO%K`M2x Date: Fri, 14 Nov 2025 15:08:20 -0700 Subject: [PATCH 1072/1090] Add files via upload --- .../cosmere/textures/block/electrum_block.png | Bin 368 -> 367 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/block/electrum_block.png b/src/main/resources/assets/cosmere/textures/block/electrum_block.png index 0df6f6e47ffa63a4c198e1eb29648ab2987a395e..c985ae2b33d65ae32a3fde778516e3b1a8e993f5 100644 GIT binary patch delta 327 zcmV-N0l5C~0`CHlF@GsZL_t(IjdhYSPs1=2gfCU37%6!}A}f)?)(!Cs_|HuI0VE{E z0uzF%9e_wFRswY+kxXH@@ETgxll^@5`|j-E{qY8~(e0`@DGw^!?`GS6av1_RzqkT0 z4nBxv96W#^5*&?>m;1Zh>rfY*WHxWyCbKyJBewSrK;t&$@_!OQTl-Kipa=l>*v*Ko zR?o_o77`MMB_kF<@7YyKqcyUrH=X^dLcw4_VUk}VUEu^je96;;( Z4!>e1%VXpTAEf{Q002ovPDHLkV1h*1lsNzZ delta 328 zcmV-O0k{6|0`LNmF@GvaL_t(IjeSzVO2a@DoRoz`&==USO(4f!z55CNia+A#6#N81 z5Ko@OTY56kc4?s7fXOKyCccCg-P7CI*`0awHhOz{#B3d#eQKAN$g$aTYXIEcKL8l| z5XCa|0YDTBF4ouQ>&x@n=!Qk+@`K-HE(ef^>w*Vx@Vjz#3xA;52BTUe0pJ@?|lrpi`)esjDK z#gfR>x3+QCF+o!rW90;Rv;6%Lbl3&2;s8u)m->;~Q_VD3oYm9dHr1LL+d`Ucm>W=B a=kNoJGRw*z-YcE}0000 Date: Sat, 15 Nov 2025 11:10:47 +1300 Subject: [PATCH 1073/1090] [Hemalurgy] fix potential null ref exception when hemalurgy is installed without allomancy/feruchemy --- .../common/items/HemalurgicSpikeItem.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 25b9c3978..5c59f8b13 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -1,5 +1,5 @@ /* - * File updated ~ 20 - 11 - 2024 ~ Leaf + * File updated ~ 15 - 11 - 2025 ~ Leaf */ package leaf.cosmere.hemalurgy.common.items; @@ -94,6 +94,7 @@ public Multimap getAttributeModifiers(SlotContext ((IHemalurgicInfo) stack.getItem()).getHemalurgicAttributes(attributeModifiers, stack, metalType); } + return attributeModifiers; } @@ -163,16 +164,22 @@ else if (this.getMetalType() == Metals.MetalType.COPPER) { ItemStack allomancySpike = new ItemStack(this); Manifestation allomancyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", stealType.getName())); - Invest(allomancySpike, allomancyMani, 7, UUID.randomUUID()); - output.accept(allomancySpike); + if (allomancyMani != null) + { + Invest(allomancySpike, allomancyMani, 7, UUID.randomUUID()); + output.accept(allomancySpike); + } } //steals feruchemical abilities case PEWTER, BRASS, BENDALLOY, GOLD -> { ItemStack feruchemySpike = new ItemStack(this); Manifestation feruchemyMani = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("feruchemy", stealType.getName())); - Invest(feruchemySpike, feruchemyMani, 7, UUID.randomUUID()); - output.accept(feruchemySpike); + if (feruchemyMani != null) + { + Invest(feruchemySpike, feruchemyMani, 7, UUID.randomUUID()); + output.accept(feruchemySpike); + } } } From 47f6f8ac6fb47648741a24957240cee71e50dfb1 Mon Sep 17 00:00:00 2001 From: leeislate <134997564+leeislate@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:11:50 -0700 Subject: [PATCH 1074/1090] Add files via upload --- .../cosmere/textures/block/steel_block.png | Bin 326 -> 326 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/block/steel_block.png b/src/main/resources/assets/cosmere/textures/block/steel_block.png index 640008260d08cdc40b66f99a0ca3cc61ad8a0e24..89d6c7bbba4fe8328326dec43b3e47a057994d10 100644 GIT binary patch delta 277 zcmV+w0qXw70>%Q6I)6=S1R)TGU!*shR)o1kk~;>HbA`D}Gi1QcfM|EsHj8I!nvkJg zh?d{0pXbx(`v-Qbtv$`Lt^FS9&CasP1mN}Ug?AOX)q2X=hhPyOf{HB5rLBDk0DPU# zDJB4Ej=i>+(<$d$tpNIRVP%$@+S*kl#gyhqvC+LY>(d%@_=AU^H#r(~PL7Ykhb^r6nev=4f>5%?CeP+UKSrq+?F@iL!}`4#6YZ=CS1- z(TrPq8`}N(8p~~?n}^{!443}xgftUVf49|WzFohs49X@2g&fllfox)XDMdwn@G82W b)viCAe)`0+W)4|u00000NkvXXu0mjf(ddl? delta 277 zcmV+w0qXw70>%Q6I)Bk>!!Qg*HRBh1u`u*ow*651m81U>N(+V&Fm@un?%{f(jE4BZ ziLIk6>H6(*zHnmNU#&O$mrXn;{`&mDSw)swPdSGe?Iy&iBJ+G}YnM$t0^ipw>hP3$ zZ7K69=cQI6>hq0=+S*adLxvOcl#pz6ucH~GiOAt|NZXu_h<{M}kjC!Jfdl%l1y4kn z5~V=5wZl-OaigNH_2CIJO&By!$>`Qwh+(w!tPMjzr_7-7YAQMs_Gp{OmfNFoZ}K*@ z`}Z`aZKIoq@jVWgUUmW+!pP^u%g^FvlTkD=VvqX+p2#MJ3Zjr76_A6yl%k>`1{Hmt b)sDYnE%GyMDh{Sr00000NkvXXu0mjfu{({a From ba5267889a6e6d4be72a4a6360cb925212741726 Mon Sep 17 00:00:00 2001 From: leeislate <134997564+leeislate@users.noreply.github.com> Date: Fri, 14 Nov 2025 15:14:28 -0700 Subject: [PATCH 1075/1090] Add files via upload --- .../cosmere/textures/block/bronze_block.png | Bin 405 -> 407 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/main/resources/assets/cosmere/textures/block/bronze_block.png b/src/main/resources/assets/cosmere/textures/block/bronze_block.png index c067bf501b6175251bd7c220f3f0f42c5d7968e1..e8e944908dfa480fee05437d972392b562b7e77c 100644 GIT binary patch delta 367 zcmV-#0g(Qc1D6AkF@I4>L_t(Ijct;_PJ=)YhJTw)w+n%WmOxXbPoP&{z>_cH%lKZs z=t(_Tqlp1)Dw=Krfn|H@VcKyqPWCYS^ZhfE9ZqgIf=W)Z z1#ykTaR?gMk5eN2IQ^HVk<>^Ewr-0YfGu)D*$IHnrn4f9ypN|xKTfHJHI}Nf^Rp;> zBORb3CxcYdCFWT&&l1W>7nN@RNVJWkrB~iGJ5kq`QRZk_m2OGltMZ2e!1KeqTc)mU zUE3g#ymDGUb!Zq6;TnQKlIZ>*q$qzlaI4Z`Px)QZHH^GzJU+Zq5J>Jo9OtKt2*5NR zPqGC7vs{^GCjgkvs*!YOGo7UlY9!aWHp|uT9ta{2alLo!tZ8r6ZV9FhP4 N002ovPDHLkV1m8fsU!dZ delta 365 zcmV-z0h0cg1C;}iF@H}(_bxnnU3hPGyF>rGk;0GC%w z9DB;VXudxI7;U7I0A8MR!Edj(cL1c4UKnq)R4RFPei6)~V1E{sd4XRWfW3hPBPYp% zT;p)|5ggYGV-j8%AEh~x8c1QS+bjiOvXrQG0*T(my zU3pdR=+RBrBWB?md|y&@e-J9l>-XGLzSdKGRcuGWa2k&Hx8(cMo!uR`bZgW=y0hul@B}rGo3zxc_1_){(L?Uw9$TZE&Q*Q@a}VoGzy0-g00000 LNkvXXu0mjfhVHBO From 4f96e332527313713d8113724d2fd7ca79169076 Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Fri, 14 Nov 2025 23:58:49 +0100 Subject: [PATCH 1076/1090] [Hemalurgy] Added spiritweb integrity translation string and fixed broken Curios strings --- .../hemalurgy/assets/hemalurgy/lang/en_us.json | 8 ++++++++ .../data/hemalurgy/curios/entities/hemalurgists.json | 4 ++-- .../leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java | 12 ++++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json index 4d09c7b50..c94fd9107 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json @@ -1,10 +1,17 @@ { "command.cosmere.eyeheight.set.success": "Set eye height to %s", + "curios.identifier.eyes": "Eye Spike", "curios.identifier.linchpin": "Linchpin Spike", "curios.identifier.mental": "Mental Quadrant", "curios.identifier.physical": "Physical Quadrant", "curios.identifier.spiritual": "Spiritual Quadrant", "curios.identifier.temporal": "Temporal Quadrant", + "curios.modifiers.eyes": "Eye Spike", + "curios.modifiers.linchpin": "Linchpin Spike", + "curios.modifiers.mental": "Mental Quadrant", + "curios.modifiers.physical": "Physical Quadrant", + "curios.modifiers.spiritual": "Spiritual Quadrant", + "curios.modifiers.temporal": "Temporal Quadrant", "death.attack.spiked": "%1$s was not careful with their hemalurgic spike", "death.attack.spiked.player": "%1$s was not careful with their hemalurgic spike while fighting %2$s", "entity.hemalurgy.koloss_large": "Koloss Large", @@ -76,6 +83,7 @@ "item.hemalurgy.tin_spike.tooltip": "Steals senses.", "item.hemalurgy.zinc_spike": "Zinc Spike", "item.hemalurgy.zinc_spike.tooltip": "Steals emotional fortitude.", + "manifestation.hemalurgy.spiritweb_integrity": "Spiritweb Integrity", "tabs.hemalurgy.items": "Hemalurgy", "tooltip.cosmere.attribute.chromium": "%s%s Luck", "tooltip.cosmere.attribute.copper": "%s%s%% XP", diff --git a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json index a8f082ae1..61647c56e 100644 --- a/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json +++ b/src/datagen/generated/hemalurgy/data/hemalurgy/curios/entities/hemalurgists.json @@ -1,7 +1,7 @@ { "entities": [ - "minecraft:armor_stand", - "minecraft:player" + "minecraft:player", + "minecraft:armor_stand" ], "slots": [ "linchpin", diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 6241d3c0b..578f385bf 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -8,10 +8,12 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; +import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.hemalurgy.common.Hemalurgy; import leaf.cosmere.hemalurgy.common.items.HemalurgicSpikeItem; +import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; import leaf.cosmere.hemalurgy.common.registries.HemalurgyEntityTypes; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -92,6 +94,9 @@ private void addManifestations() private void addAttributes() { + final String descriptionId = HemalurgyAttributes.SPIRITWEB_INTEGRITY.getAttribute().getDescriptionId(); + String translation = descriptionId.split("\\.")[1]; + add(descriptionId, "Spiritweb Integrity"); } private void addPatchouli() @@ -144,6 +149,13 @@ private void addCurioIdentifiers() add("curios.identifier.mental", "Mental Quadrant"); add("curios.identifier.spiritual", "Spiritual Quadrant"); add("curios.identifier.temporal", "Temporal Quadrant"); + add("curios.identifier.eyes", "Eye Spike"); + add("curios.modifiers.linchpin", "Linchpin Spike"); + add("curios.modifiers.physical", "Physical Quadrant"); + add("curios.modifiers.mental", "Mental Quadrant"); + add("curios.modifiers.spiritual", "Spiritual Quadrant"); + add("curios.modifiers.temporal", "Temporal Quadrant"); + add("curios.modifiers.eyes", "Eye Spike"); } private void addConfigs() From cba44d545c1789e8125d08384a6f35bff0aa300b Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 15 Nov 2025 00:00:04 +0100 Subject: [PATCH 1077/1090] [Hemalurgy] Added spiritweb integrity modifiers for Allomantic pewter and Feruchemical gold --- .../common/items/HemalurgicSpikeItem.java | 39 ++++++++++++++++++- .../common/items/IHemalurgicInfo.java | 13 ------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 25b9c3978..4467aa9f8 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -13,7 +13,9 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.items.ChargeableMetalCurioItem; +import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.hemalurgy.common.Hemalurgy; +import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; @@ -42,6 +44,7 @@ import javax.annotation.Nonnull; import java.util.Collection; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.function.Predicate; @@ -88,10 +91,42 @@ public Multimap getAttributeModifiers(SlotContext Multimap attributeModifiers = LinkedHashMultimap.create(); Metals.MetalType metalType = getMetalType(); - if (stack.getItem() instanceof IHemalurgicInfo) + if (stack.getItem() instanceof IHemalurgicInfo hemalurgicInfo) { //add hemalurgic attributes, if any. - ((IHemalurgicInfo) stack.getItem()).getHemalurgicAttributes(attributeModifiers, stack, metalType); + hemalurgicInfo.getHemalurgicAttributes(attributeModifiers, stack, metalType); + + // add spiritweb buffs, if any + UUID hemalurgicIdentity = getHemalurgicIdentity(stack); + if (hemalurgicIdentity != null) + { + int spiritwebIntegrity = -1; + if (slotContext.identifier().equals("linchpin")) + { + // linchpin always gives at least +3 + spiritwebIntegrity += 3; + Manifestation aPewter = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", Metals.MetalType.PEWTER.getName())); + if (aPewter != null && attributeModifiers.containsKey(aPewter.getAttribute())) + { + // pewter gives an additional +3 + spiritwebIntegrity += 3; + } + Manifestation fGold = CosmereAPI.manifestationRegistry().getValue((new ResourceLocation("feruchemy", Metals.MetalType.GOLD.getName()))); + if (fGold != null && attributeModifiers.containsKey(fGold.getAttribute())) + { + // f-gold gives an extra +6 + spiritwebIntegrity += 6; + } + } + + attributeModifiers.put(HemalurgyAttributes.SPIRITWEB_INTEGRITY.getAttribute(), + new AttributeModifier( + hemalurgicIdentity, + "Spiritweb Integrity", + spiritwebIntegrity, + AttributeModifier.Operation.ADDITION + )); + } } return attributeModifiers; diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java index d02048d54..edbbeffab 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java @@ -250,18 +250,6 @@ default Multimap getHemalurgicAttributes(Multimap< { UUID hemalurgicIdentity = getHemalurgicIdentity(stack); - if (hemalurgicIdentity != null) - { - // no matter what, spike reduces spiritweb integrity. Fixed value? Dynamic based on spike? - attributeModifiers.put(HemalurgyAttributes.SPIRITWEB_INTEGRITY.getAttribute(), - new AttributeModifier( - hemalurgicIdentity, - "Spiritweb Integrity", - -1, - AttributeModifier.Operation.ADDITION - )); - } - if (metalType == Metals.MetalType.ALUMINUM) { for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) @@ -373,7 +361,6 @@ else if (hemalurgicIdentity == null) } } - return attributeModifiers; } From fb8f62f23abdaf4cc1cb760c54e8fec5792133de Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 15 Nov 2025 00:07:02 +0100 Subject: [PATCH 1078/1090] [Hemalurgy] Added spiritweb integrity bonus to configs --- .../java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java | 1 - .../hemalurgy/common/config/HemalurgyServerConfig.java | 4 ++++ .../hemalurgy/common/items/HemalurgicSpikeItem.java | 7 +++---- .../cosmere/hemalurgy/common/items/IHemalurgicInfo.java | 1 - 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java index 578f385bf..893fc2fa6 100644 --- a/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java +++ b/src/datagen/hemalurgy/java/leaf/cosmere/hemalurgy/HemalurgyEngLangGen.java @@ -8,7 +8,6 @@ import leaf.cosmere.api.EnumUtils; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.RegistryHelper; -import leaf.cosmere.api.providers.IAttributeProvider; import leaf.cosmere.api.providers.IEntityTypeProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.hemalurgy.common.Hemalurgy; diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java index ded10ebea..4b9cf5249 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java @@ -18,6 +18,8 @@ public class HemalurgyServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue LERASATIUM_MAX_SPIKE_STRENGTH; public final ForgeConfigSpec.IntValue CHROMIUM_MAX_SPIKE_STRENGTH; public final ForgeConfigSpec.IntValue DEFAULT_POWER_MAX_SPIKE_STRENGTH; + public final ForgeConfigSpec.IntValue ALLOMANTIC_PEWTER_SPIRITWEB_BONUS; + public final ForgeConfigSpec.IntValue FERUCHEMICAL_GOLD_SPIRITWEB_BONUS; HemalurgyServerConfig() @@ -30,6 +32,8 @@ public class HemalurgyServerConfig implements ICosmereConfig LERASATIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a lerasatium spike can hold.").defineInRange("lerasatiumMaxSpikeStrength", 5, 1, 20); CHROMIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a chromium spike can hold.").defineInRange("chromiumMaxSpikeStrength", 3, 1, 5); DEFAULT_POWER_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength all other power spikes can hold.").defineInRange("powerMaxSpikeStrength", 7, 1, 20); + ALLOMANTIC_PEWTER_SPIRITWEB_BONUS = builder.comment("What bonus does Allomantic pewter grant spiritweb integrity.").defineInRange("allomanticPewterSpiritwebBonus", 3, 0, 100); + FERUCHEMICAL_GOLD_SPIRITWEB_BONUS = builder.comment("What bonus does Feruchemical gold grant spiritweb integrity.").defineInRange("feruchemicalGoldSpiritwebBonus", 6, 0, 100); builder.pop(); configSpec = builder.build(); diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 4467aa9f8..dcb2db27e 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -13,8 +13,8 @@ import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.items.ChargeableMetalCurioItem; -import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.hemalurgy.common.Hemalurgy; +import leaf.cosmere.hemalurgy.common.config.HemalurgyConfigs; import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; @@ -44,7 +44,6 @@ import javax.annotation.Nonnull; import java.util.Collection; import java.util.List; -import java.util.Objects; import java.util.UUID; import java.util.function.Predicate; @@ -109,13 +108,13 @@ public Multimap getAttributeModifiers(SlotContext if (aPewter != null && attributeModifiers.containsKey(aPewter.getAttribute())) { // pewter gives an additional +3 - spiritwebIntegrity += 3; + spiritwebIntegrity += HemalurgyConfigs.SERVER.ALLOMANTIC_PEWTER_SPIRITWEB_BONUS.get(); } Manifestation fGold = CosmereAPI.manifestationRegistry().getValue((new ResourceLocation("feruchemy", Metals.MetalType.GOLD.getName()))); if (fGold != null && attributeModifiers.containsKey(fGold.getAttribute())) { // f-gold gives an extra +6 - spiritwebIntegrity += 6; + spiritwebIntegrity += HemalurgyConfigs.SERVER.FERUCHEMICAL_GOLD_SPIRITWEB_BONUS.get(); } } diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java index edbbeffab..78a53ae16 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/IHemalurgicInfo.java @@ -13,7 +13,6 @@ import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.hemalurgy.common.config.HemalurgyConfigs; -import leaf.cosmere.hemalurgy.common.registries.HemalurgyAttributes; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; From fecc4046fb593cc22367c200359217b9efc8bc90 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 14 Nov 2025 19:37:46 -0500 Subject: [PATCH 1079/1090] DOING IT THE WAY THE LORD RULER INTENDED --- src/api/java/leaf/cosmere/api/IHasSize.java | 2 +- .../9bcb7fde85eeddf7de67da69438e03dd8676482b | 6 +- .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 26 +-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../cosmere/assets/cosmere/lang/en_us.json | 4 - .../cosmere/models/item/atium_god_nugget.json | 6 - .../models/item/harmonium_god_nugget.json | 6 - .../models/item/lerasatium_god_nugget.json | 6 - .../models/item/lerasium_god_nugget.json | 6 - .../recipes/decorations/atium_god_nugget.json | 35 ---- .../recipes/decorations/atium_ingot.json | 4 +- .../decorations/harmonium_god_nugget.json | 35 ---- .../recipes/decorations/harmonium_ingot.json | 4 +- .../decorations/lerasatium_god_nugget.json | 35 ---- .../recipes/decorations/lerasatium_ingot.json | 4 +- .../decorations/lerasium_god_nugget.json | 35 ---- .../recipes/decorations/lerasium_ingot.json | 4 +- .../cosmere/recipes/atium_god_nugget.json | 12 -- .../data/cosmere/recipes/atium_ingot.json | 9 +- .../cosmere/recipes/harmonium_god_nugget.json | 12 -- .../data/cosmere/recipes/harmonium_ingot.json | 9 +- .../recipes/lerasatium_god_nugget.json | 12 -- .../cosmere/recipes/lerasatium_ingot.json | 9 +- .../cosmere/recipes/lerasium_god_nugget.json | 12 -- .../data/cosmere/recipes/lerasium_ingot.json | 9 +- .../60c035799f578be828205f75035ce4e4976d0466 | 2 +- .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 2 +- .../java/leaf/cosmere/BaseRecipeProvider.java | 27 +-- .../main/java/leaf/cosmere/EngLangGen.java | 2 + .../main/java/leaf/cosmere/RecipeGen.java | 11 +- .../common/items/GodMetalNuggetItem.java | 22 +-- .../recipes/GodMetalAlloyNuggetCompress.java | 110 ------------ .../GodMetalAlloyNuggetDecompress.java | 107 ------------ .../recipes/GodMetalAlloyNuggetRecipe.java | 31 +++- .../recipes/GodMetalNuggetsCompress.java | 161 ++++++++++++++++++ .../recipes/GodMetalNuggetsDecompress.java | 128 ++++++++++++++ .../registry/CosmereRecipesRegistry.java | 12 +- .../common/registry/CreativeTabsRegistry.java | 2 +- .../common/registry/ItemsRegistry.java | 3 +- 39 files changed, 405 insertions(+), 521 deletions(-) delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json delete mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java delete mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java create mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java create mode 100644 src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java diff --git a/src/api/java/leaf/cosmere/api/IHasSize.java b/src/api/java/leaf/cosmere/api/IHasSize.java index 5fc67f084..e34cfe58c 100644 --- a/src/api/java/leaf/cosmere/api/IHasSize.java +++ b/src/api/java/leaf/cosmere/api/IHasSize.java @@ -13,7 +13,7 @@ default Integer readMetalAlloySizeNbtData(ItemStack itemStack) { CompoundTag nbt = itemStack.getOrCreateTag(); if(nbt.contains("nuggetSize")) return nbt.getInt("nuggetSize"); - nbt.putInt("nuggetSize", getMaxSize()); + writeMetalAlloySizeNbtData(itemStack, getMaxSize()); return getMaxSize(); } diff --git a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b index 688032f4c..d8c4523b7 100644 --- a/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b +++ b/src/datagen/generated/cosmere/.cache/9bcb7fde85eeddf7de67da69438e03dd8676482b @@ -1,7 +1,6 @@ -// 1.20.1 2025-11-12T21:49:11.1760335 Item Models: cosmere +// 1.20.1 2025-11-14T18:10:47.1080284 Item Models: cosmere ff0d97cfe0dc1ec1f93e6a39585a79d351141f40 assets/cosmere/models/item/aluminum_ingot.json 8b0d2f2a1126a0af33aa3e87bf6486a87914d9a3 assets/cosmere/models/item/aluminum_nugget.json -0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_god_nugget.json 4a894e0164206d6a02ad4c4d773cc458a0e331db assets/cosmere/models/item/atium_ingot.json 0a47643b87e93db158c9c4175d9e582e24841f98 assets/cosmere/models/item/atium_nugget.json 0f98979d062133ede87d33109e00afc8ee1d11b1 assets/cosmere/models/item/bendalloy_blend.json @@ -25,7 +24,6 @@ d0f7f1f9bf4078c3ce32dd1fc6d21eb72889010a assets/cosmere/models/item/duralumin_bl ee62a22f6baecee57f2242a3474c420d1f12d407 assets/cosmere/models/item/electrum_ingot.json 85ff83dfdaf3ad35aa3d2f7571a12ca9063b5389 assets/cosmere/models/item/electrum_nugget.json 31ffe9eeff25c7a22a24938b36557b62be478b3d assets/cosmere/models/item/guide.json -4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_god_nugget.json 0e6a8187a44579b813f0f7ef5d36c4163fcff33d assets/cosmere/models/item/harmonium_ingot.json 4633420b9247c1b84a2db84236d1ae32e642d726 assets/cosmere/models/item/harmonium_nugget.json 31dabb6ca7702c1b23a4938220defd4d743e916b assets/cosmere/models/item/lead_ingot.json @@ -39,7 +37,6 @@ a1ce81a83eb7607057cdc87732f966f6eda6588c assets/cosmere/models/item/lerasatium_c 8d80c47c8d79e63c103ddbcd8c665cd308bf544e assets/cosmere/models/item/lerasatium_copper_alloy_nugget.json 4328a7fe4f53646a793b085aed19030df0c3159a assets/cosmere/models/item/lerasatium_duralumin_alloy_nugget.json b1d20ea74ea555c65c0d13333a7ae5524fa3e347 assets/cosmere/models/item/lerasatium_electrum_alloy_nugget.json -d85774d23a216f7591929b49a96cd2237b85cad7 assets/cosmere/models/item/lerasatium_god_nugget.json 8f21a751679478d62cdb3d93dbdaff1ff8091ef7 assets/cosmere/models/item/lerasatium_gold_alloy_nugget.json 998e1f48856030da41aba793d1af39b12129c210 assets/cosmere/models/item/lerasatium_ingot.json 54ec2be247217c2daf38fded73bf1c17060ef5d0 assets/cosmere/models/item/lerasatium_iron_alloy_nugget.json @@ -58,7 +55,6 @@ b7ce440e61f92e099cf763e4add9991c78f2d8a5 assets/cosmere/models/item/lerasium_chr aa2b4e035e84388db0e35a62c38863cff2b6290a assets/cosmere/models/item/lerasium_copper_alloy_nugget.json 574e08f69b1e6c4a9f7a4d5af04307f119f7916d assets/cosmere/models/item/lerasium_duralumin_alloy_nugget.json d6835cf7377b0b37f793ad497f85db8bdfc5962a assets/cosmere/models/item/lerasium_electrum_alloy_nugget.json -65eef0f81e2060f9544e9ea7af25654e4d792bc9 assets/cosmere/models/item/lerasium_god_nugget.json b687b9fa1f047d36fd345392d0cca7f6228f1ab3 assets/cosmere/models/item/lerasium_gold_alloy_nugget.json 7c908cb447a777f0e5f50538334cf2c477cff74c assets/cosmere/models/item/lerasium_ingot.json fc566fc538d4e3070d1f9b289f51615ce4661667 assets/cosmere/models/item/lerasium_iron_alloy_nugget.json diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index dcb6fe353..e3a9b066f 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,9 +1,8 @@ -// 1.20.1 2025-11-11T22:35:49.293852 Recipes +// 1.20.1 2025-11-14T18:17:11.1335281 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json -48e21abbdd7de3dd40a0200e7b57afc64cddca74 data/cosmere/advancements/recipes/decorations/atium_god_nugget.json -51d346c11e8489cdb1fb50872acc5cdbd69bf306 data/cosmere/advancements/recipes/decorations/atium_ingot.json +d31946cf1a6b3487f9e5c4d7c8169134eb0029b3 data/cosmere/advancements/recipes/decorations/atium_ingot.json 627567236680b26bdc065217fc369ed158baef58 data/cosmere/advancements/recipes/decorations/bendalloy_block.json eeef774be1c3e92048b2fb9b367e501087d71ccd data/cosmere/advancements/recipes/decorations/bendalloy_ingot.json 4aedaa6a1311f0fc8382ffc28c74bf2797aa9ea2 data/cosmere/advancements/recipes/decorations/brass_block.json @@ -19,16 +18,13 @@ c03fa74d826b1ae8a254ed5f90a975b63fb2141c data/cosmere/advancements/recipes/decor 371d161d7f6fdbb7415a5fd76b246341fb7a8289 data/cosmere/advancements/recipes/decorations/electrum_block.json b693e3101169b477697a27dcd01e6c84eb4fbeb3 data/cosmere/advancements/recipes/decorations/electrum_ingot.json e714ef81fa41dfd6daa4f56bbb0260bb569cfdda data/cosmere/advancements/recipes/decorations/harmonium_block.json -ac7dd6de8c4e4299bbaf51818bb8891026ca7866 data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json -878b60612287c385da59e6b59211e6a163ae3610 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +4ef4a13eff2e8281fa6019957864080896a2e333 data/cosmere/advancements/recipes/decorations/harmonium_ingot.json 3cae5a9b7a3a69f157b294fc93473e3110bc80fe data/cosmere/advancements/recipes/decorations/lead_block.json 308d32269ac2f65e67d37d220c2a291bd564ab8b data/cosmere/advancements/recipes/decorations/lead_ingot.json 77dcc2ab30f94ee4a9c59ac8178741aeccd79794 data/cosmere/advancements/recipes/decorations/lerasatium_block.json -7fffd5252b30e808f6500172e3d4ecfd9d08c7f6 data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json -ad45727c4b97b910230094d73bae2dfcf1c2a961 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +92ac28c2747fd19e7f6c2a32b06d47968f090713 data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b6f57a63b78e7991d42c860026150cb7f538b557 data/cosmere/advancements/recipes/decorations/lerasium_block.json -a21213dbe3ded23a9574daf2e0d1da4050dfe569 data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json -18f5464aaa46aae90957189761a46fbb01dc86e9 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +d0bcd39beb814d93fdb0c7068aacfae33a013747 data/cosmere/advancements/recipes/decorations/lerasium_ingot.json c9c3c25bd3a79cadb7e2af43a8c6225c6a98dc55 data/cosmere/advancements/recipes/decorations/malatium_block.json c32efee0c4b7dee528b2567b2471c3a0cd1df4cd data/cosmere/advancements/recipes/decorations/malatium_ingot.json cc2fc697ef3b8e59a16a1f98162a3a207697bd80 data/cosmere/advancements/recipes/decorations/metalworking_table.json @@ -210,8 +206,7 @@ b3b742c293cdd97491de9245c27b5632ca993fe5 data/cosmere/recipes/aluminum_ingot.jso ca869346d604b30e821a81b230b8661deb4b73cf data/cosmere/recipes/aluminum_ingot_from_smelting_deepslate_aluminum_ore.json cfbec38ff039bf527f4138809b0739b0f62b65b0 data/cosmere/recipes/aluminum_ingot_from_smelting_raw_aluminum_ore.json 50415eac94053a306fa144ae0104de33dfec7831 data/cosmere/recipes/atium_block.json -2d5a2429ac4551ba4518ce63d7d1a472b58091ee data/cosmere/recipes/atium_god_nugget.json -2acdaf0e73833d2db895286ab0ae09ae7b28f5a1 data/cosmere/recipes/atium_ingot.json +a01c4b09c3aee28edd3d338701f80adef04f4ed5 data/cosmere/recipes/atium_ingot.json d5ade124fe24c32556f5b854100a897e16811374 data/cosmere/recipes/bendalloy_block.json 188350bf26b74eb700ab96d9478fa40ef88a6036 data/cosmere/recipes/bendalloy_ingot.json c119f5247e6064657ee878289f8e0b9780d85734 data/cosmere/recipes/bendalloy_ingot_from_blasting_bendalloy_blend.json @@ -295,8 +290,7 @@ de53ae88754bfa98d49f5ef8f09b9522c35ea465 data/cosmere/recipes/electrum_ingot.jso 8e3e5e0294b749fb2341e2c2f2f1ec6faa52f6f4 data/cosmere/recipes/electrum_ingot_from_blasting_electrum_blend.json a9a0427e3c9ba47ba2c7474c43a51141a3b4cb67 data/cosmere/recipes/electrum_ingot_from_smelting_electrum_blend.json 677fe17fb4f783c2f07dca8fabdc7cc3ce6e864f data/cosmere/recipes/harmonium_block.json -0e6d280912f6a91557cb8e9d0683498e75183506 data/cosmere/recipes/harmonium_god_nugget.json -dbc52f38003f551be1ecd8fe004c21d9d185d017 data/cosmere/recipes/harmonium_ingot.json +8396175c7cdac3962b4e3e708aa76f50969d3598 data/cosmere/recipes/harmonium_ingot.json 3083d9105a3f8a361b131bb40b8fed41ef9b01dc data/cosmere/recipes/lead_block.json 335602babc1a40ca027455f7910bbf74af6d8a6f data/cosmere/recipes/lead_ingot.json 622f55be8cfe62813c8d8b51f236134fbf23f720 data/cosmere/recipes/lead_ingot_from_blasting_deepslate_lead_ore.json @@ -306,11 +300,9 @@ cbafd94777d0addfa5a19470bc1d979a812367ed data/cosmere/recipes/lead_ingot_from_sm d85ff0d67bdefa44c264e393f41e7aee4117c837 data/cosmere/recipes/lead_ingot_from_smelting_lead_ore.json 0cea66c88f33221c597baf531911200f2cc40850 data/cosmere/recipes/lead_ingot_from_smelting_raw_lead_ore.json 095ea0c3b34156ee3650784788241c294217f3b3 data/cosmere/recipes/lerasatium_block.json -4a79159d26ea0003e90a59317d9d032cdf0a1bac data/cosmere/recipes/lerasatium_god_nugget.json -da1bf5264bb19644adabcf6f519447e4e8f14d69 data/cosmere/recipes/lerasatium_ingot.json +5434dea0787237fdd04c2980e96432bdb11c5648 data/cosmere/recipes/lerasatium_ingot.json 22f6d8f8198f37736de99e3766694595d6ca7791 data/cosmere/recipes/lerasium_block.json -932902d1f7a947eff6c042688eafde87a94299bd data/cosmere/recipes/lerasium_god_nugget.json -ff3a6ed060d2de024f9ec83f6af641b905aafb2d data/cosmere/recipes/lerasium_ingot.json +d38c0f4982c4e0bb0bed4e4f32fd95e187cd67d8 data/cosmere/recipes/lerasium_ingot.json 0c76ea75be9e38f063364b0aacc9d352f08b9369 data/cosmere/recipes/malatium_block.json f914257362b05a531c02e5f215fc15597d6c1bc4 data/cosmere/recipes/malatium_ingot.json 9a0ddbbec0e8d5af056cda266ce79e01a0f59352 data/cosmere/recipes/metalworking_table.json diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 437727faf..1f0a8fcf0 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-12T21:49:11.1780361 Languages: en_us -e45eeb0c156634b963586366813800b5e86279bf assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-14T18:10:47.1145316 Languages: en_us +fe04a03ce1cbb34e03ef83c964417b404cdf507e assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 44187811f..8bf22641c 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -51,7 +51,6 @@ "entity.minecraft.villager.cosmere.metal_trader": "Metal Trader", "item.cosmere.aluminum_ingot": "Aluminum Ingot", "item.cosmere.aluminum_nugget": "Aluminum Nugget", - "item.cosmere.atium_god_nugget": "Atium God Nugget", "item.cosmere.atium_ingot": "Atium Ingot", "item.cosmere.atium_nugget": "Atium Nugget", "item.cosmere.bendalloy_blend": "Bendalloy Blend", @@ -80,7 +79,6 @@ "item.cosmere.gold_ingot": "Gold Ingot", "item.cosmere.gold_nugget": "Gold Nugget", "item.cosmere.guide": "Ars Arcanum", - "item.cosmere.harmonium_god_nugget": "Harmonium God Nugget", "item.cosmere.harmonium_ingot": "Harmonium Ingot", "item.cosmere.harmonium_nugget": "Harmonium Nugget", "item.cosmere.iron_block": "Iron Block", @@ -97,7 +95,6 @@ "item.cosmere.lerasatium_copper_alloy_nugget": "Lerasatium Copper Alloy Nugget", "item.cosmere.lerasatium_duralumin_alloy_nugget": "Lerasatium Duralumin Alloy Nugget", "item.cosmere.lerasatium_electrum_alloy_nugget": "Lerasatium Electrum Alloy Nugget", - "item.cosmere.lerasatium_god_nugget": "Lerasatium God Nugget", "item.cosmere.lerasatium_gold_alloy_nugget": "Lerasatium Gold Alloy Nugget", "item.cosmere.lerasatium_ingot": "Lerasatium Ingot", "item.cosmere.lerasatium_iron_alloy_nugget": "Lerasatium Iron Alloy Nugget", @@ -116,7 +113,6 @@ "item.cosmere.lerasium_copper_alloy_nugget": "Lerasium Copper Alloy Nugget", "item.cosmere.lerasium_duralumin_alloy_nugget": "Lerasium Duralumin Alloy Nugget", "item.cosmere.lerasium_electrum_alloy_nugget": "Lerasium Electrum Alloy Nugget", - "item.cosmere.lerasium_god_nugget": "Lerasium God Nugget", "item.cosmere.lerasium_gold_alloy_nugget": "Lerasium Gold Alloy Nugget", "item.cosmere.lerasium_ingot": "Lerasium Ingot", "item.cosmere.lerasium_iron_alloy_nugget": "Lerasium Iron Alloy Nugget", diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json deleted file mode 100644 index 5bcb4cf96..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/atium_god_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/atium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json deleted file mode 100644 index 87d5a9720..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/harmonium_god_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/harmonium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json deleted file mode 100644 index 9952b7116..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasatium_god_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasatium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json b/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json deleted file mode 100644 index fb9f1d549..000000000 --- a/src/datagen/generated/cosmere/assets/cosmere/models/item/lerasium_god_nugget.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent": "minecraft:item/generated", - "textures": { - "layer0": "cosmere:item/lerasium_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json deleted file mode 100644 index 1bc85cfe6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_god_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:atium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:atium_god_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:atium_god_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json index abb83a88d..efaae7d5d 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/atium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/atium" + "items": [ + "cosmere:atium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json deleted file mode 100644 index f9151c0cd..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_god_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:harmonium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:harmonium_god_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:harmonium_god_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json index cd1c4e9a2..43215dd80 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/harmonium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/harmonium" + "items": [ + "cosmere:harmonium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json deleted file mode 100644 index 30070a7fc..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_god_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasatium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasatium_god_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasatium_god_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json index ac87104d7..3b9b1e517 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasatium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/lerasatium" + "items": [ + "cosmere:lerasatium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json deleted file mode 100644 index 4a4784c0f..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_god_nugget.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "criteria": { - "has_item": { - "conditions": { - "items": [ - { - "items": [ - "cosmere:lerasium_nugget" - ] - } - ] - }, - "trigger": "minecraft:inventory_changed" - }, - "has_the_recipe": { - "conditions": { - "recipe": "cosmere:lerasium_god_nugget" - }, - "trigger": "minecraft:recipe_unlocked" - } - }, - "requirements": [ - [ - "has_item", - "has_the_recipe" - ] - ], - "rewards": { - "recipes": [ - "cosmere:lerasium_god_nugget" - ] - }, - "sends_telemetry_event": false -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json index 26dcdef69..e49b50cf9 100644 --- a/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/advancements/recipes/decorations/lerasium_ingot.json @@ -5,7 +5,9 @@ "conditions": { "items": [ { - "tag": "forge:nuggets/lerasium" + "items": [ + "cosmere:lerasium_nugget" + ] } ] }, diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json deleted file mode 100644 index cf541918e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_god_nugget.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "item": "cosmere:atium_nugget" - } - ], - "result": { - "item": "cosmere:atium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json index 964b03ae7..c16ed8f3e 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/atium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/atium" - }, - "J": { - "item": "cosmere:atium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:atium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json deleted file mode 100644 index a8c1b621d..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_god_nugget.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "item": "cosmere:harmonium_nugget" - } - ], - "result": { - "item": "cosmere:harmonium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json index f39747934..0349082a5 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/harmonium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/harmonium" - }, - "J": { - "item": "cosmere:harmonium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:harmonium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json deleted file mode 100644 index 0bf5f47d6..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_god_nugget.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "item": "cosmere:lerasatium_nugget" - } - ], - "result": { - "item": "cosmere:lerasatium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json index 9c9acb019..c5aba8f9a 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasatium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/lerasatium" - }, - "J": { - "item": "cosmere:lerasatium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:lerasatium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json deleted file mode 100644 index d70b2d55e..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_god_nugget.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "minecraft:crafting_shapeless", - "category": "misc", - "ingredients": [ - { - "item": "cosmere:lerasium_nugget" - } - ], - "result": { - "item": "cosmere:lerasium_god_nugget" - } -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json index d4ba9b9ff..7de1b6d41 100644 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/lerasium_ingot.json @@ -3,15 +3,14 @@ "category": "misc", "key": { "I": { - "tag": "forge:nuggets/lerasium" - }, - "J": { - "item": "cosmere:lerasium_nugget" + "type": "forge:partial_nbt", + "item": "cosmere:lerasium_nugget", + "nbt": "{nuggetSize:16}" } }, "pattern": [ "III", - "IJI", + "III", "III" ], "result": { diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index ce3a01aef..f29232516 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-11T22:41:06.882308 Curios for feruchemy +// 1.20.1 2025-11-14T16:47:43.1403138 Curios for feruchemy 73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index d77cf3998..06324ea66 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-11T22:41:06.914104 Curios for hemalurgy +// 1.20.1 2025-11-14T16:47:43.170363 Curios for hemalurgy 626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json diff --git a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java index a9b112f5c..1dbdfb711 100644 --- a/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java +++ b/src/datagen/main/java/leaf/cosmere/BaseRecipeProvider.java @@ -249,7 +249,6 @@ protected void decompressRecipe(Consumer consumer, ItemLike outp .save(consumer, new ResourceLocation(modid, "conversions/" + name)); } - protected void decompressRecipe(Consumer consumer, ItemLike output, TagKey input, String name) { ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, output, 9) @@ -268,18 +267,6 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .unlockedBy("has_item", has(input)); } - protected void godMetalNuggetRecipe(Consumer consumer, ItemLike inputGodMetal) - { - if(!(inputGodMetal instanceof IHasMetalType godMetalItem)) return; - - String name = godMetalItem.getMetalType().getName() + "_god_nugget"; - - ShapelessRecipeBuilder.shapeless(RecipeCategory.DECORATIONS, ItemsRegistry.GOD_METAL_NUGGETS.get(godMetalItem.getMetalType()).get()) - .requires(inputGodMetal) - .unlockedBy("has_item", has(inputGodMetal)) - .save(consumer, new ResourceLocation(Cosmere.MODID, name)); - } - protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input, ItemLike center) { return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) @@ -290,4 +277,18 @@ protected ShapedRecipeBuilder compressRecipe(ItemLike output, TagKey input .pattern("III") .unlockedBy("has_item", has(input)); } + + protected ShapedRecipeBuilder godMetalCompressRecipe(ItemLike output, ItemLike input) + { + CompoundTag tag = new CompoundTag(); + tag.putInt("nuggetSize", 16); + PartialNBTIngredient ingredient = PartialNBTIngredient.of(input, tag); + + return ShapedRecipeBuilder.shaped(RecipeCategory.DECORATIONS, output) + .define('I', ingredient) + .pattern("III") + .pattern("III") + .pattern("III") + .unlockedBy("has_item", has(input)); + } } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index 5bbde3951..c41df2abd 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -13,6 +13,7 @@ import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.api.text.StringHelper; import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalNuggetItem; import leaf.cosmere.common.registry.*; import net.minecraft.data.PackOutput; import net.minecraft.resources.ResourceLocation; @@ -20,6 +21,7 @@ import net.minecraftforge.common.data.LanguageProvider; import static leaf.cosmere.api.Constants.Strings.*; +import static leaf.cosmere.common.registry.ItemsRegistry.METAL_NUGGETS; public class EngLangGen extends LanguageProvider { diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index a69ad5efa..1769a9832 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -78,12 +78,15 @@ protected void addRecipes(Consumer consumer) compressRecipe(BlocksRegistry.METAL_BLOCKS.get(metalType).getBlock(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), ItemsRegistry.METAL_INGOTS.get(metalType)).save(consumer); decompressRecipe(consumer, ItemsRegistry.METAL_INGOTS.get(metalType).get(), BlocksRegistry.METAL_BLOCKS.get(metalType), metalType.getName() + "_block_deconstruct"); - compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); - decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); - if(metalType.isGodMetal()) { - godMetalNuggetRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get()); + godMetalCompressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get()).save(consumer); + decompressRecipe(consumer, ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); + } + else + { + compressRecipe(ItemsRegistry.METAL_INGOTS.get(metalType).get(), CosmereTags.Items.METAL_NUGGET_TAGS.get(metalType), ItemsRegistry.METAL_NUGGETS.get(metalType)).save(consumer); + decompressRecipe(consumer, ItemsRegistry.METAL_NUGGETS.get(metalType).get(), CosmereTags.Items.METAL_INGOT_TAGS.get(metalType), metalType.getName() + "_item_deconstruct"); } if (metalType.isAlloy()) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index 86ba925e5..cf551361c 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -8,9 +8,12 @@ import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.SlotAccess; import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.player.Player; +import net.minecraft.world.inventory.ClickAction; +import net.minecraft.world.inventory.Slot; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.level.Level; @@ -43,8 +46,9 @@ public int getMinSize() } @Override - public int getMaxStackSize(ItemStack stack) { - return 1; + public void onCraftedBy(ItemStack itemStack, Level level, Player player) { + CompoundTag nbt = itemStack.getOrCreateTag(); + if(!nbt.contains("nuggetSize")) writeMetalAlloySizeNbtData(itemStack, getMaxSize()); } // God Metals shouldn't hurt @@ -71,14 +75,7 @@ public boolean hasCraftingRemainingItem(ItemStack stack) { @Override public ItemStack getCraftingRemainingItem(ItemStack stack) { - ItemStack out = stack.copy(); - int size = readMetalAlloySizeNbtData(stack); - - int newSize = size - 1; - if (newSize < 1) return ItemStack.EMPTY; - - writeMetalAlloySizeNbtData(out, newSize); - return out; + return ItemStack.EMPTY; } @Override @@ -88,7 +85,6 @@ public boolean isFoil(ItemStack itemStack) return super.isFoil(itemStack); } - @Override @OnlyIn(Dist.CLIENT) public void appendHoverText(ItemStack stack, Level worldIn, List tooltip, TooltipFlag flagIn) @@ -113,6 +109,10 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool } } + public boolean overrideOtherStackedOnMe(ItemStack pStack, ItemStack pOther, Slot pSlot, ClickAction pAction, Player pPlayer, SlotAccess pAccess) { + return false; + } + @Override public ArrayList determineManifestations(ItemStack itemStack) { diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java deleted file mode 100644 index 59018f3aa..000000000 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetCompress.java +++ /dev/null @@ -1,110 +0,0 @@ -package leaf.cosmere.common.recipes; - -import leaf.cosmere.api.Metals.MetalType; -import leaf.cosmere.api.providers.IItemProvider; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; -import leaf.cosmere.common.registry.CosmereRecipesRegistry; -import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.CraftingContainer; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.Level; - -import javax.annotation.Nonnull; - -public class GodMetalAlloyNuggetCompress extends CustomRecipe -{ - - public GodMetalAlloyNuggetCompress(ResourceLocation loc, CraftingBookCategory pCategory) - { - super(loc, pCategory); - } - - @Override - public boolean matches(CraftingContainer inv, @Nonnull Level world) - { - Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() - .flatMap(inner -> inner.values().stream()) - .map(IItemProvider::getItemStack)); - - MetalType godMetalType = null; - MetalType alloyedMetalType = null; - int totalSize = 0; - int numItems = 0; - for(int i = 0; i < inv.getContainerSize(); i++) - { - ItemStack itemStack = inv.getItem(i); - if(itemStack.isEmpty()) continue; - if(!INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(i))) return false; - numItems++; - GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); - - if(godMetalType == null) godMetalType = item.getMetalType(); - if(godMetalType != item.getMetalType()) return false; - - if(alloyedMetalType == null) alloyedMetalType = item.getAlloyedMetalType(); - if(alloyedMetalType != item.getAlloyedMetalType()) return false; - - totalSize += item.readMetalAlloySizeNbtData(itemStack); - if(totalSize > item.getMaxSize()) return false; - } - if(numItems < 2) return false; - - return true; - } - - @Override - public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) - { - int totalSize = 0; - MetalType godMetalType = null; - MetalType alloyedMetalType = null; - - for(int i = 0; i < inv.getContainerSize(); i++) - { - if(!inv.getItem(i).isEmpty()) - { - ItemStack curItemStack = inv.getItem(i); - GodMetalAlloyNuggetItem curItem = (GodMetalAlloyNuggetItem) curItemStack.getItem(); - godMetalType = curItem.getMetalType(); - alloyedMetalType = curItem.getAlloyedMetalType(); - totalSize += curItem.readMetalAlloySizeNbtData(curItemStack); - } - } - - ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(alloyedMetalType)); - GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); - - item.writeMetalAlloySizeNbtData(itemStack, totalSize); - itemStack.setCount(1); - - return itemStack; - } - - @Override - public boolean canCraftInDimensions(int width, int height) - { - // We need a 3x3 grid - return width * height == 9; - } - - @Override - public @Nonnull ResourceLocation getId() - { - return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); - } - - @Override - public @Nonnull RecipeSerializer getSerializer() - { - return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get(); - } - - -} diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java deleted file mode 100644 index cee627464..000000000 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetDecompress.java +++ /dev/null @@ -1,107 +0,0 @@ -package leaf.cosmere.common.recipes; - -import leaf.cosmere.api.Metals.MetalType; -import leaf.cosmere.api.providers.IItemProvider; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; -import leaf.cosmere.common.registry.CosmereRecipesRegistry; -import leaf.cosmere.common.registry.ItemsRegistry; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.inventory.CraftingContainer; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.crafting.CraftingBookCategory; -import net.minecraft.world.item.crafting.CustomRecipe; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.item.crafting.RecipeSerializer; -import net.minecraft.world.level.Level; - -import javax.annotation.Nonnull; - -public class GodMetalAlloyNuggetDecompress extends CustomRecipe { - - public GodMetalAlloyNuggetDecompress(ResourceLocation loc, CraftingBookCategory pCategory) - { - super(loc, pCategory); - } - - @Override - public boolean matches(CraftingContainer inv, @Nonnull Level world) - { - Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() - .flatMap(inner -> inner.values().stream()) - .map(IItemProvider::getItemStack)); - - - int itemCount = 0; - GodMetalAlloyNuggetItem godMetalAlloyNuggetItem = null; - for(int i = 0; i < inv.getContainerSize(); i++) - { - ItemStack itemStack = inv.getItem(i); - if(itemStack.isEmpty()) continue; - if(!INGREDIENT_GOD_METAL_ALLOY_NUG.test(itemStack)) return false; - if(!itemStack.isEmpty()) - { - itemCount++; - if(itemCount > 1) return false; - - godMetalAlloyNuggetItem = (GodMetalAlloyNuggetItem) itemStack.getItem(); - int currentSize = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(itemStack); - if(currentSize == godMetalAlloyNuggetItem.getMinSize()) return false; // No splitting smallest size - if(currentSize % 2 == 1) return false; // No odd splitting - } - } - if(itemCount == 0) return false; - - return true; - } - - @Override - public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) - { - GodMetalAlloyNuggetItem godMetalAlloyNuggetItem = null; - int index = 0; - for(int i = 0; i < inv.getContainerSize(); i++) - { - if(!inv.getItem(i).isEmpty()) - { - godMetalAlloyNuggetItem = (GodMetalAlloyNuggetItem) inv.getItem(i).getItem(); - index = i; - break; - } - } - - MetalType godMetalType = godMetalAlloyNuggetItem.getMetalType(); - MetalType alloyedMetalType = godMetalAlloyNuggetItem.getAlloyedMetalType(); - int currentSize = godMetalAlloyNuggetItem.readMetalAlloySizeNbtData(inv.getItem(index)); - - ItemStack itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(alloyedMetalType)); - GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); - - item.writeMetalAlloySizeNbtData(itemStack, currentSize / 2); - itemStack.setCount(2); - - return itemStack; - } - - @Override - public boolean canCraftInDimensions(int width, int height) - { - // We need a 3x3 grid - return width * height == 9; - } - - @Override - public @Nonnull ResourceLocation getId() - { - return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); - } - - @Override - public @Nonnull RecipeSerializer getSerializer() - { - return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get(); - } - - -} diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java index 6083c8846..8f144782d 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java @@ -1,5 +1,6 @@ package leaf.cosmere.common.recipes; +import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals.MetalType; import leaf.cosmere.api.providers.IItemProvider; import leaf.cosmere.common.Cosmere; @@ -8,6 +9,7 @@ import leaf.cosmere.common.items.MetalNuggetItem; import leaf.cosmere.common.registry.CosmereRecipesRegistry; import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.NonNullList; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.inventory.CraftingContainer; @@ -19,6 +21,7 @@ import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.item.crafting.RecipeSerializer; import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; import javax.annotation.Nonnull; @@ -48,6 +51,7 @@ public boolean matches(CraftingContainer inv, @Nonnull Level world) ); if(!INGREDIENT_GOD_METAL_NUG.test(inv.getItem(4))) return false; + if(inv.getItem(4).getCount() != 1) return false; MetalType metalType = null; for(int i = 0; i < inv.getContainerSize(); i++) @@ -64,7 +68,7 @@ public boolean matches(CraftingContainer inv, @Nonnull Level world) else if(INGREDIENT_MC_METAL_NUG.test(itemStack)) { Item item = itemStack.getItem(); - MetalType newMetalType = null; + MetalType newMetalType; if (item == Items.IRON_NUGGET) { newMetalType = MetalType.IRON; @@ -137,4 +141,29 @@ public boolean canCraftInDimensions(int width, int height) } + public @NotNull NonNullList getRemainingItems(CraftingContainer pContainer) { + NonNullList nonnulllist = NonNullList.withSize(pContainer.getContainerSize(), ItemStack.EMPTY); + + for(int i = 0; i < nonnulllist.size(); ++i) { + ItemStack item = pContainer.getItem(i); + if (item.hasCraftingRemainingItem()) { + nonnulllist.set(i, getCraftingRemainingItem(item)); + } + } + + return nonnulllist; + } + + public ItemStack getCraftingRemainingItem(ItemStack stack) { + ItemStack out = stack.copy(); + IHasSize item = (IHasSize) stack.getItem(); + int size = item.readMetalAlloySizeNbtData(stack); + + int newSize = size - 1; + if (newSize < 1) return ItemStack.EMPTY; + + item.writeMetalAlloySizeNbtData(out, newSize); + return out; + } + } diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java new file mode 100644 index 000000000..f59536e54 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java @@ -0,0 +1,161 @@ +package leaf.cosmere.common.recipes; + +import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.Metals.MetalType; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; +import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.NonNullList; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nonnull; + +public class GodMetalNuggetsCompress extends CustomRecipe +{ + + Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() + .flatMap(inner -> inner.values().stream()) + .map(IItemProvider::getItemStack)); + + Ingredient INGREDIENT_GOD_METAL_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_NUGGETS.values().stream() + .map(IItemProvider::getItemStack)); + + public GodMetalNuggetsCompress(ResourceLocation loc, CraftingBookCategory pCategory) + { + super(loc, pCategory); + } + + @Override + public boolean matches(CraftingContainer inv, @Nonnull Level world) + { + MetalType godMetalType = null; + MetalType alloyedMetalType = null; + int totalSize = 0; + int numItems = 0; + boolean isAlloy = false; + boolean isGod = false; + for(int i = 0; i < inv.getContainerSize(); i++) + { + ItemStack itemStack = inv.getItem(i); + if(itemStack.isEmpty()) continue; + if(INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(i))) + { + isAlloy = true; + numItems++; + GodMetalAlloyNuggetItem item = (GodMetalAlloyNuggetItem) itemStack.getItem(); + + if(godMetalType == null) godMetalType = item.getMetalType(); + if(godMetalType != item.getMetalType()) return false; + + if(alloyedMetalType == null) alloyedMetalType = item.getAlloyedMetalType(); + if(alloyedMetalType != item.getAlloyedMetalType()) return false; + + totalSize += item.readMetalAlloySizeNbtData(itemStack); + if(totalSize > item.getMaxSize()) return false; + } + else if (INGREDIENT_GOD_METAL_NUG.test(inv.getItem(i))) + { + isGod = true; + numItems++; + GodMetalNuggetItem item = (GodMetalNuggetItem) itemStack.getItem(); + + if(godMetalType == null) godMetalType = item.getMetalType(); + if(godMetalType != item.getMetalType()) return false; + + totalSize += item.readMetalAlloySizeNbtData(itemStack); + if(totalSize > item.getMaxSize()) return false; + } + else + { + return false; + } + } + + if(numItems < 2) return false; + if(isGod && isAlloy) return false; + + return true; + } + + @Override + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) + { + int totalSize = 0; + MetalType godMetalType = null; + MetalType alloyedMetalType = null; + + for(int i = 0; i < inv.getContainerSize(); i++) + { + if(!inv.getItem(i).isEmpty()) + { + ItemStack curItemStack = inv.getItem(i); + if(INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(i))) + { + GodMetalAlloyNuggetItem curItem = (GodMetalAlloyNuggetItem) curItemStack.getItem(); + godMetalType = curItem.getMetalType(); + alloyedMetalType = curItem.getAlloyedMetalType(); + totalSize += curItem.readMetalAlloySizeNbtData(curItemStack); + } + else if (INGREDIENT_GOD_METAL_NUG.test(inv.getItem(i))) + { + GodMetalNuggetItem curItem = (GodMetalNuggetItem) curItemStack.getItem(); + godMetalType = curItem.getMetalType(); + totalSize += curItem.readMetalAlloySizeNbtData(curItemStack); + } + } + } + + ItemStack itemStack; + if(alloyedMetalType != null) + { + itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(godMetalType).get(alloyedMetalType)); + } + else + { + itemStack = new ItemStack(ItemsRegistry.GOD_METAL_NUGGETS.get(godMetalType)); + } + + IHasSize item = (IHasSize) itemStack.getItem(); + + item.writeMetalAlloySizeNbtData(itemStack, totalSize); + itemStack.setCount(1); + + return itemStack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + // We need a 3x3 grid + return width * height == 9; + } + + @Override + public @Nonnull ResourceLocation getId() + { + return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + } + + @Override + public @Nonnull RecipeSerializer getSerializer() + { + return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get(); + } + + public @NotNull NonNullList getRemainingItems(CraftingContainer pContainer) { + return NonNullList.withSize(pContainer.getContainerSize(), ItemStack.EMPTY); + } + +} diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java new file mode 100644 index 000000000..31ee15e38 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java @@ -0,0 +1,128 @@ +package leaf.cosmere.common.recipes; + +import leaf.cosmere.api.IHasSize; +import leaf.cosmere.api.providers.IItemProvider; +import leaf.cosmere.common.Cosmere; +import leaf.cosmere.common.items.GodMetalAlloyNuggetItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.registry.CosmereRecipesRegistry; +import leaf.cosmere.common.registry.ItemsRegistry; +import net.minecraft.core.NonNullList; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.Container; +import net.minecraft.world.inventory.CraftingContainer; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.crafting.CraftingBookCategory; +import net.minecraft.world.item.crafting.CustomRecipe; +import net.minecraft.world.item.crafting.Ingredient; +import net.minecraft.world.item.crafting.RecipeSerializer; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.NotNull; + +import javax.annotation.Nonnull; + +public class GodMetalNuggetsDecompress extends CustomRecipe { + + Ingredient INGREDIENT_GOD_METAL_ALLOY_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.values().stream() + .flatMap(inner -> inner.values().stream()) + .map(IItemProvider::getItemStack)); + + Ingredient INGREDIENT_GOD_METAL_NUG = Ingredient.of(ItemsRegistry.GOD_METAL_NUGGETS.values().stream() + .map(IItemProvider::getItemStack)); + + public GodMetalNuggetsDecompress(ResourceLocation loc, CraftingBookCategory pCategory) + { + super(loc, pCategory); + } + + @Override + public boolean matches(CraftingContainer inv, @Nonnull Level world) + { + int itemCount = 0; + IHasSize item = null; + for(int i = 0; i < inv.getContainerSize(); i++) + { + ItemStack itemStack = inv.getItem(i); + if(itemStack.isEmpty()) continue; + + if(INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(i)) || INGREDIENT_GOD_METAL_NUG.test(inv.getItem(i))) + { + itemCount++; + if(itemCount > 1) return false; + + item = (IHasSize) itemStack.getItem(); + int currentSize = item.readMetalAlloySizeNbtData(itemStack); + if(currentSize == item.getMinSize()) return false; // No splitting smallest size + if(currentSize % 2 == 1) return false; // No odd splitting + } + else { + return false; + } + } + if(itemCount != 1) return false; + + return true; + } + + @Override + public ItemStack assemble(CraftingContainer inv, RegistryAccess pRegistryAccess) + { + Item item = null; + int index = 0; + for(int i = 0; i < inv.getContainerSize(); i++) + { + if(!inv.getItem(i).isEmpty()) + { + item = inv.getItem(i).getItem(); + index = i; + break; + } + } + ItemStack itemStack = ItemStack.EMPTY; + + if(INGREDIENT_GOD_METAL_ALLOY_NUG.test(inv.getItem(index))) + { + GodMetalAlloyNuggetItem gItem = (GodMetalAlloyNuggetItem) item; + int currentSize = gItem.readMetalAlloySizeNbtData(inv.getItem(index)); + itemStack = new ItemStack(ItemsRegistry.GOD_METAL_ALLOY_NUGGETS.get(gItem.getMetalType()).get(gItem.getAlloyedMetalType())); + gItem.writeMetalAlloySizeNbtData(itemStack, currentSize / 2); + itemStack.setCount(2); + } + else if (INGREDIENT_GOD_METAL_NUG.test(inv.getItem(index))) + { + GodMetalNuggetItem gItem = (GodMetalNuggetItem) item; + int currentSize = gItem.readMetalAlloySizeNbtData(inv.getItem(index)); + itemStack = new ItemStack(ItemsRegistry.GOD_METAL_NUGGETS.get(gItem.getMetalType())); + gItem.writeMetalAlloySizeNbtData(itemStack, currentSize / 2); + itemStack.setCount(2); + } + + return itemStack; + } + + @Override + public boolean canCraftInDimensions(int width, int height) + { + // We need a 3x3 grid + return width * height == 9; + } + + @Override + public @Nonnull ResourceLocation getId() + { + return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + } + + @Override + public @Nonnull RecipeSerializer getSerializer() + { + return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get(); + } + + public @NotNull NonNullList getRemainingItems(CraftingContainer pContainer) { + return NonNullList.withSize(pContainer.getContainerSize(), ItemStack.EMPTY); + } + +} diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java index ac98fd635..5975efec5 100644 --- a/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java @@ -1,8 +1,8 @@ package leaf.cosmere.common.registry; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.recipes.GodMetalAlloyNuggetCompress; -import leaf.cosmere.common.recipes.GodMetalAlloyNuggetDecompress; +import leaf.cosmere.common.recipes.GodMetalNuggetsCompress; +import leaf.cosmere.common.recipes.GodMetalNuggetsDecompress; import leaf.cosmere.common.recipes.GodMetalAlloyNuggetRecipe; import leaf.cosmere.common.registration.impl.RecipeSerializerDeferredRegister; import leaf.cosmere.common.registration.impl.RecipeSerializerRegistryObject; @@ -16,11 +16,11 @@ public class CosmereRecipesRegistry RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_recipe", () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetRecipe::new)); - public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_COMPRESS = + public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_COMPRESS = RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_compress", - () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetCompress::new)); + () -> new SimpleCraftingRecipeSerializer<>(GodMetalNuggetsCompress::new)); - public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_DECOMPRESS = + public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_DECOMPRESS = RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_decompress", - () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetDecompress::new)); + () -> new SimpleCraftingRecipeSerializer<>(GodMetalNuggetsDecompress::new)); } diff --git a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java index 88e555e06..7ad224eb6 100644 --- a/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CreativeTabsRegistry.java @@ -36,7 +36,7 @@ public class CreativeTabsRegistry List items = ItemsRegistry.ITEMS.getAllItems(); for(IItemProvider item : items) { - if(!(item.asItem() instanceof GodMetalAlloyNuggetItem) && !(item.asItem() instanceof GodMetalNuggetItem)) + if(!(item.asItem() instanceof GodMetalAlloyNuggetItem)) { output.accept(item); } diff --git a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java index 8f4de9a31..61da18238 100644 --- a/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/ItemsRegistry.java @@ -51,6 +51,7 @@ public class ItemsRegistry public static final Map> METAL_NUGGETS = Arrays.stream(EnumUtils.METAL_TYPES) .filter(type -> type.hasMaterialItem() || type == Metals.MetalType.COPPER) // I'm sorry for this Leaf :( >> Gerbagel + .filter(type -> !type.isGodMetal()) // God Metals are special ;) .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( @@ -80,7 +81,7 @@ public class ItemsRegistry .collect(Collectors.toMap( Function.identity(), type -> ITEMS.register( - type.getName() + "_god" + RegNameStubs.NUGGET, + type.getName() + RegNameStubs.NUGGET, () -> new GodMetalNuggetItem(type) ))); From 4f586b62b42ec3fee3f2f1bef17603f44a2d4cf8 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 14 Nov 2025 19:42:40 -0500 Subject: [PATCH 1080/1090] fixing default powers --- .../subcommands/ChooseMetalbornPowersCommand.java | 4 ++-- .../common/commands/subcommands/ManifestationCommand.java | 2 +- .../cosmere/common/eventHandlers/EntityEventHandler.java | 8 ++++---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java index 6ae2354ae..7d6c39229 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ChooseMetalbornPowersCommand.java @@ -147,7 +147,7 @@ private static int confirmMetalbornPowers(CommandContext con // always give natural level manifestation; do nothing if cosmere:none is selected if (!queueItem.allomanticPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { - spiritweb.giveManifestation(queueItem.allomanticPower, 8); + spiritweb.giveManifestation(queueItem.allomanticPower, 9); source.sendSuccess(() -> Component.literal("Successfully added allomantic " + queueItem.allomanticPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose @@ -155,7 +155,7 @@ private static int confirmMetalbornPowers(CommandContext con } if (!queueItem.feruchemicalPower.getManifestationType().equals(Manifestations.ManifestationTypes.NONE)) { - spiritweb.giveManifestation(queueItem.feruchemicalPower, 8); + spiritweb.giveManifestation(queueItem.feruchemicalPower, 9); source.sendSuccess(() -> Component.literal("Successfully added feruchemical " + queueItem.feruchemicalPower.getName() + " to " + player.getName().getString()), false); // todo localisation string // give player metal vial according to what they chose diff --git a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java index 0c90c5fff..6e6a07d3b 100644 --- a/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java +++ b/src/main/java/leaf/cosmere/common/commands/subcommands/ManifestationCommand.java @@ -133,7 +133,7 @@ private static int give(CommandContext context) throws Comma SpiritwebCapability.get(player).ifPresent((spiritweb) -> { //todo change this so that the user sets the strength in the command - spiritweb.giveManifestation(manifestation, 8); + spiritweb.giveManifestation(manifestation, 9); source.sendSuccess(() -> Component.translatable(Constants.Strings.POWER_SET_SUCCESS, playerText, manifestationText), false); ReportPowersFoundOnPlayer(context, player); spiritweb.syncToClients(null); diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index 2f6a2ce08..b1e90a120 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -222,7 +222,7 @@ else if (feruchemyLoaded) // Elend is 12 // Vin is 9 // Average strength is 8 - spiritwebCapability.giveManifestation(manifestation, 8); + spiritwebCapability.giveManifestation(manifestation, 9); } } @@ -239,7 +239,7 @@ else if (feruchemyLoaded) { if (allomancyLoaded) { - spiritwebCapability.giveManifestation(allomancyPower, 8); + spiritwebCapability.giveManifestation(allomancyPower, 9); if (spiritwebCapability.getLiving() instanceof Player player) { spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY).GiveStartingItem(player, allomancyPower); @@ -251,7 +251,7 @@ else if (feruchemyLoaded) } if (feruchemyLoaded) { - spiritwebCapability.giveManifestation(feruchemyPower, 8); + spiritwebCapability.giveManifestation(feruchemyPower, 9); if (spiritwebCapability.getLiving() instanceof Player player) { @@ -288,7 +288,7 @@ else if (feruchemyLoaded) return; } - spiritwebCapability.giveManifestation(manifestation, 8); + spiritwebCapability.giveManifestation(manifestation, 9); if (spiritwebCapability.getLiving() instanceof Player player) { spiritwebCapability.getSubmodule(isAllomancy ? Manifestations.ManifestationTypes.ALLOMANCY : Manifestations.ManifestationTypes.FERUCHEMY).GiveStartingItem(player, manifestation); From ecd2e87fe5dee0982d74ebe136559af8bb1b494b Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 14 Nov 2025 20:09:29 -0500 Subject: [PATCH 1081/1090] removing comment --- .../leaf/cosmere/common/eventHandlers/EntityEventHandler.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java index b1e90a120..120341568 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/EntityEventHandler.java @@ -218,10 +218,6 @@ else if (feruchemyLoaded) { if (manifestation.getManifestationType() == manifestationType) { - // Lord Mistborn is 16 - // Elend is 12 - // Vin is 9 - // Average strength is 8 spiritwebCapability.giveManifestation(manifestation, 9); } From 8b1c07b9214a8a081b4143e0bf321dce53ec280c Mon Sep 17 00:00:00 2001 From: Gerbagel Date: Sat, 15 Nov 2025 15:31:09 +0100 Subject: [PATCH 1082/1090] [Hemalurgy] Add config option for linchpin spike spiritweb integrity bonus --- .../hemalurgy/common/config/HemalurgyServerConfig.java | 2 ++ .../hemalurgy/common/items/HemalurgicSpikeItem.java | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java index 4b9cf5249..fa510bde9 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/config/HemalurgyServerConfig.java @@ -18,6 +18,7 @@ public class HemalurgyServerConfig implements ICosmereConfig public final ForgeConfigSpec.IntValue LERASATIUM_MAX_SPIKE_STRENGTH; public final ForgeConfigSpec.IntValue CHROMIUM_MAX_SPIKE_STRENGTH; public final ForgeConfigSpec.IntValue DEFAULT_POWER_MAX_SPIKE_STRENGTH; + public final ForgeConfigSpec.IntValue LINCHPIN_SPIKE_SPIRITWEB_BONUS; public final ForgeConfigSpec.IntValue ALLOMANTIC_PEWTER_SPIRITWEB_BONUS; public final ForgeConfigSpec.IntValue FERUCHEMICAL_GOLD_SPIRITWEB_BONUS; @@ -32,6 +33,7 @@ public class HemalurgyServerConfig implements ICosmereConfig LERASATIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a lerasatium spike can hold.").defineInRange("lerasatiumMaxSpikeStrength", 5, 1, 20); CHROMIUM_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength a chromium spike can hold.").defineInRange("chromiumMaxSpikeStrength", 3, 1, 5); DEFAULT_POWER_MAX_SPIKE_STRENGTH = builder.comment("What is the maximum strength all other power spikes can hold.").defineInRange("powerMaxSpikeStrength", 7, 1, 20); + LINCHPIN_SPIKE_SPIRITWEB_BONUS = builder.comment("What bonus does a linchpin spike grant spiritweb integrity.").defineInRange("linchpinSpikeSpiritwebBonus", 3, 0, 100); ALLOMANTIC_PEWTER_SPIRITWEB_BONUS = builder.comment("What bonus does Allomantic pewter grant spiritweb integrity.").defineInRange("allomanticPewterSpiritwebBonus", 3, 0, 100); FERUCHEMICAL_GOLD_SPIRITWEB_BONUS = builder.comment("What bonus does Feruchemical gold grant spiritweb integrity.").defineInRange("feruchemicalGoldSpiritwebBonus", 6, 0, 100); diff --git a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java index 775a737a2..3d0ebd957 100644 --- a/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java +++ b/src/hemalurgy/java/leaf/cosmere/hemalurgy/common/items/HemalurgicSpikeItem.java @@ -102,18 +102,18 @@ public Multimap getAttributeModifiers(SlotContext int spiritwebIntegrity = -1; if (slotContext.identifier().equals("linchpin")) { - // linchpin always gives at least +3 - spiritwebIntegrity += 3; + // linchpin always gives a bonus (+3 default) + spiritwebIntegrity += HemalurgyConfigs.SERVER.LINCHPIN_SPIKE_SPIRITWEB_BONUS.get(); Manifestation aPewter = CosmereAPI.manifestationRegistry().getValue(new ResourceLocation("allomancy", Metals.MetalType.PEWTER.getName())); if (aPewter != null && attributeModifiers.containsKey(aPewter.getAttribute())) { - // pewter gives an additional +3 + // pewter gives an additional bonus (+3 default) spiritwebIntegrity += HemalurgyConfigs.SERVER.ALLOMANTIC_PEWTER_SPIRITWEB_BONUS.get(); } Manifestation fGold = CosmereAPI.manifestationRegistry().getValue((new ResourceLocation("feruchemy", Metals.MetalType.GOLD.getName()))); if (fGold != null && attributeModifiers.containsKey(fGold.getAttribute())) { - // f-gold gives an extra +6 + // f-gold gives an extra bonus (+6 default) spiritwebIntegrity += HemalurgyConfigs.SERVER.FERUCHEMICAL_GOLD_SPIRITWEB_BONUS.get(); } } From b0f1ede81c2f437db457be74e75ba35b7928be8b Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Mon, 17 Nov 2025 14:20:29 -0500 Subject: [PATCH 1083/1090] Fix Recipe Issues caused by God Metal Improvements (#192) * bug fix * Stabilizing metal vial and consuming metals * fix consumption of atium --- .../allomancy/common/items/MetalVialItem.java | 39 +++++++++++--- .../common/recipes/VialMixingRecipe.java | 6 +++ .../allomancy/common/utils/MiscHelper.java | 52 +++++++++++++------ .../9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e | 6 +-- ...fting_god_metal_alloy_nugget_compress.json | 4 -- ...ing_god_metal_alloy_nugget_decompress.json | 4 -- .../crafting_god_metal_nuggets_compress.json | 4 ++ ...crafting_god_metal_nuggets_decompress.json | 4 ++ .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 +- .../main/java/leaf/cosmere/RecipeGen.java | 8 +-- .../recipes/GodMetalAlloyNuggetRecipe.java | 2 +- .../recipes/GodMetalNuggetsCompress.java | 4 +- .../recipes/GodMetalNuggetsDecompress.java | 4 +- .../registry/CosmereRecipesRegistry.java | 8 +-- 14 files changed, 100 insertions(+), 49 deletions(-) delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json delete mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_compress.json create mode 100644 src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_decompress.json diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index a46b319e2..19d4d0fdd 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -12,16 +12,15 @@ import leaf.cosmere.api.helpers.PlayerHelper; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.items.BaseItem; +import leaf.cosmere.common.items.GodMetalNuggetItem; +import leaf.cosmere.common.registry.ItemsRegistry; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.CreativeModeTab; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.item.TooltipFlag; -import net.minecraft.world.item.UseAnim; +import net.minecraft.world.item.*; import net.minecraft.world.level.Level; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -112,10 +111,36 @@ public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity en //for each metal in the vial Map metalsInVial = getStoredMetalsMap(getContainedMetalsTag(stack)); - metalsInVial.entrySet().forEach(metalInfo -> + metalsInVial.forEach((metalId, amount) -> { - // MetalName x Value - MiscHelper.consumeNugget(entityLiving, stack); + ItemStack newStack; + if(Metals.MetalType.valueOf(metalId).isPresent()) + { + Metals.MetalType metalType = Metals.MetalType.valueOf(metalId).get(); + if(metalType.isGodMetal()) + { + newStack = new ItemStack(ItemsRegistry.GOD_METAL_NUGGETS.get(metalType).asItem(), amount); + GodMetalNuggetItem item = (GodMetalNuggetItem) newStack.getItem(); + item.writeMetalAlloySizeNbtData(newStack, item.getMaxSize()); + } + else + { + switch(metalType) + { + case IRON: + newStack = new ItemStack(Items.IRON_NUGGET, amount); + break; + case GOLD: + newStack = new ItemStack(Items.GOLD_NUGGET, amount); + break; + default: + newStack = new ItemStack(ItemsRegistry.METAL_NUGGETS.get(metalType).asItem(), amount); + break; + } + + } + MiscHelper.consumeNugget(entityLiving, newStack); + } }); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java index 1d443aeee..36f397712 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/recipes/VialMixingRecipe.java @@ -9,6 +9,7 @@ import leaf.cosmere.allomancy.common.registries.AllomancyItems; import leaf.cosmere.allomancy.common.registries.AllomancyRecipes; import leaf.cosmere.api.EnumUtils; +import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals; import net.minecraft.core.RegistryAccess; import net.minecraft.resources.ResourceLocation; @@ -116,6 +117,11 @@ private Optional> testForViableNugget(ItemStack stack) TagKey metalNuggetTag = value.getMetalNuggetTag(); if (stack.is(metalNuggetTag)) { + if(stack.getItem() instanceof IHasSize sizeItem) + { + int size = sizeItem.readMetalAlloySizeNbtData(stack); + if(size < sizeItem.getMaxSize()) return Optional.empty(); + } return Optional.of(metalNuggetTag); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 0504a7636..54ff31c32 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -13,6 +13,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; import java.util.ArrayList; @@ -33,30 +34,49 @@ public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) } //https://www.theoryland.com/intvmain.php?i=977#43 - if (itemStack.getItem() instanceof GodMetalNuggetItem godItem && godItem.getMetalType() == Metals.MetalType.LERASIUM) + if (itemStack.getItem() instanceof GodMetalNuggetItem godItem) { - if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) + if (godItem.getMetalType() == Metals.MetalType.LERASIUM) { - //todo translations - livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); + if (livingEntity instanceof Llama && !livingEntity.hasCustomName()) + { + //todo translations + livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); + } + } + else if(godItem.getMetalType() == Metals.MetalType.ATIUM) + { + eatMetal(godItem.getMetalType(), livingEntity); } } } else if(itemStack.getItem() instanceof IHasMetalType metalItem) { - SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> - { - Metals.MetalType metalType = metalItem.getMetalType(); - SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - if (metalType.hasAssociatedManifestation()) //ignore metals without manifestations, that's handled in feruchemy - { - //add to metal stored - final int addAmount = metalType.getAllomancyBurnTimeSeconds(); - AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); - allo.adjustIngestedMetal(metalType, addAmount, true); - } - }); + eatMetal(metalItem.getMetalType(), livingEntity); + } + else if(itemStack.getItem() == Items.IRON_NUGGET) + { + eatMetal(Metals.MetalType.IRON, livingEntity); } + else if(itemStack.getItem() == Items.GOLD_NUGGET) + { + eatMetal(Metals.MetalType.GOLD, livingEntity); + } + } + + private static void eatMetal(Metals.MetalType metalType, LivingEntity livingEntity) + { + SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> + { + SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; + if (metalType.hasAssociatedManifestation()) //ignore metals without manifestations, that's handled in feruchemy + { + //add to metal stored + final int addAmount = metalType.getAllomancyBurnTimeSeconds(); + AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); + allo.adjustIngestedMetal(metalType, addAmount, true); + } + }); } diff --git a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e index e3a9b066f..0abbf2941 100644 --- a/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e +++ b/src/datagen/generated/cosmere/.cache/9fb1092f32d4fcbf9e061ffd718d4ec689c6c95e @@ -1,4 +1,4 @@ -// 1.20.1 2025-11-14T18:17:11.1335281 Recipes +// 1.20.1 2025-11-15T14:32:48.0282889 Recipes d4f7b0297526734faaf6ce62cac5d49069fd2e40 data/cosmere/advancements/recipes/decorations/aluminum_block.json 681730a85e0fbb20839f9be5421df41f7bda0251 data/cosmere/advancements/recipes/decorations/aluminum_ingot.json b750cee2b3d294b561b263647aefcc90eed3d535 data/cosmere/advancements/recipes/decorations/atium_block.json @@ -278,9 +278,9 @@ f5cfb9a18ba62978b92bff60dc506b147476367b data/cosmere/recipes/conversions/steel_ 1bb3b1c7751740d881003c713ab35b81a6f4c5a6 data/cosmere/recipes/conversions/tin_item_deconstruct.json c88dc59d28af370757edcceb5e2b7d7725bda629 data/cosmere/recipes/conversions/zinc_block_deconstruct.json cc80cff2c8c790e49086d36e267878fa952275c6 data/cosmere/recipes/conversions/zinc_item_deconstruct.json -82e6b95610730dd358e08be3528c6d966bcd8d41 data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json -da5967f08a60ae62ce566de74bf7e5157f199452 data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json 6ee94921dd2ca1e05f292bfa89a59dbfaf40cc92 data/cosmere/recipes/crafting_god_metal_alloy_nugget_recipe.json +3bc69b37cc66cbd3d4f86e4c5867b36eec15c7c5 data/cosmere/recipes/crafting_god_metal_nuggets_compress.json +227ef6bf76de263e59813751ed168afbedb87bea data/cosmere/recipes/crafting_god_metal_nuggets_decompress.json 40cc2403498dbf72ad1969d2a4fcce3b06629dc3 data/cosmere/recipes/duralumin_block.json ce0a4b09393b1ee9a95e2180d3e4d2ec22beb9a5 data/cosmere/recipes/duralumin_ingot.json d41c016a9203e5fa4698b8095cb13699cbce1b7d data/cosmere/recipes/duralumin_ingot_from_blasting_duralumin_blend.json diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json deleted file mode 100644 index db44272f5..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_compress.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "cosmere:crafting_god_metal_alloy_nugget_compress", - "category": "misc" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json deleted file mode 100644 index e8ebbd3b0..000000000 --- a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_alloy_nugget_decompress.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "type": "cosmere:crafting_god_metal_alloy_nugget_decompress", - "category": "misc" -} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_compress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_compress.json new file mode 100644 index 000000000..1117d0f09 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_compress.json @@ -0,0 +1,4 @@ +{ + "type": "cosmere:crafting_god_metal_nuggets_compress", + "category": "misc" +} \ No newline at end of file diff --git a/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_decompress.json b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_decompress.json new file mode 100644 index 000000000..c70018e08 --- /dev/null +++ b/src/datagen/generated/cosmere/data/cosmere/recipes/crafting_god_metal_nuggets_decompress.json @@ -0,0 +1,4 @@ +{ + "type": "cosmere:crafting_god_metal_nuggets_decompress", + "category": "misc" +} \ No newline at end of file diff --git a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 811ecb383..766c00517 100644 --- a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-10-30T22:52:11.8108172 Languages: en_us -6161a4c5ba60d70f40cb12300f565d270eb880b6 assets/hemalurgy/lang/en_us.json +// 1.20.1 2025-11-14T21:12:57.6544528 Languages: en_us +608fd7fb4139075c6245bcc87968e8e559367e23 assets/hemalurgy/lang/en_us.json diff --git a/src/datagen/main/java/leaf/cosmere/RecipeGen.java b/src/datagen/main/java/leaf/cosmere/RecipeGen.java index 1769a9832..4bd951891 100644 --- a/src/datagen/main/java/leaf/cosmere/RecipeGen.java +++ b/src/datagen/main/java/leaf/cosmere/RecipeGen.java @@ -113,13 +113,13 @@ protected void addRecipes(Consumer consumer) .save(consumer, new ResourceLocation(Cosmere.MODID, CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_RECIPE.getInternalRegistryName()).toString()); - SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get()) + SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_NUGGETS_COMPRESS.get()) .save(consumer, new ResourceLocation(Cosmere.MODID, - CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.getInternalRegistryName()).toString()); + CosmereRecipesRegistry.GOD_METAL_NUGGETS_COMPRESS.getInternalRegistryName()).toString()); - SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get()) + SpecialRecipeBuilder.special(CosmereRecipesRegistry.GOD_METAL_NUGGETS_DECOMPRESS.get()) .save(consumer, new ResourceLocation(Cosmere.MODID, - CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.getInternalRegistryName()).toString()); + CosmereRecipesRegistry.GOD_METAL_NUGGETS_DECOMPRESS.getInternalRegistryName()).toString()); } diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java index 8f144782d..ef7b69fec 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalAlloyNuggetRecipe.java @@ -131,7 +131,7 @@ public boolean canCraftInDimensions(int width, int height) @Override public @Nonnull ResourceLocation getId() { - return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_recipe"); + return new ResourceLocation(Cosmere.MODID, "crafting_god_metal_alloy_nugget_recipe"); } @Override diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java index f59536e54..fe06201e8 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsCompress.java @@ -145,13 +145,13 @@ public boolean canCraftInDimensions(int width, int height) @Override public @Nonnull ResourceLocation getId() { - return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + return new ResourceLocation(Cosmere.MODID, "crafting_god_metal_nuggets_compress"); } @Override public @Nonnull RecipeSerializer getSerializer() { - return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_COMPRESS.get(); + return CosmereRecipesRegistry.GOD_METAL_NUGGETS_COMPRESS.get(); } public @NotNull NonNullList getRemainingItems(CraftingContainer pContainer) { diff --git a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java index 31ee15e38..e7acdd1b7 100644 --- a/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java +++ b/src/main/java/leaf/cosmere/common/recipes/GodMetalNuggetsDecompress.java @@ -112,13 +112,13 @@ public boolean canCraftInDimensions(int width, int height) @Override public @Nonnull ResourceLocation getId() { - return new ResourceLocation(Cosmere.MODID, "god_metal_alloy_nugget_compress"); + return new ResourceLocation(Cosmere.MODID, "crafting_god_metal_nuggets_decompress"); } @Override public @Nonnull RecipeSerializer getSerializer() { - return CosmereRecipesRegistry.GOD_METAL_ALLOY_NUGGET_DECOMPRESS.get(); + return CosmereRecipesRegistry.GOD_METAL_NUGGETS_DECOMPRESS.get(); } public @NotNull NonNullList getRemainingItems(CraftingContainer pContainer) { diff --git a/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java index 5975efec5..5c6e48f5b 100644 --- a/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java +++ b/src/main/java/leaf/cosmere/common/registry/CosmereRecipesRegistry.java @@ -16,11 +16,11 @@ public class CosmereRecipesRegistry RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_recipe", () -> new SimpleCraftingRecipeSerializer<>(GodMetalAlloyNuggetRecipe::new)); - public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_COMPRESS = - RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_compress", + public static final RecipeSerializerRegistryObject GOD_METAL_NUGGETS_COMPRESS = + RECIPE_SERIALIZERS.register("crafting_god_metal_nuggets_compress", () -> new SimpleCraftingRecipeSerializer<>(GodMetalNuggetsCompress::new)); - public static final RecipeSerializerRegistryObject GOD_METAL_ALLOY_NUGGET_DECOMPRESS = - RECIPE_SERIALIZERS.register("crafting_god_metal_alloy_nugget_decompress", + public static final RecipeSerializerRegistryObject GOD_METAL_NUGGETS_DECOMPRESS = + RECIPE_SERIALIZERS.register("crafting_god_metal_nuggets_decompress", () -> new SimpleCraftingRecipeSerializer<>(GodMetalNuggetsDecompress::new)); } From 87c6a7c02cab2d2c8e85cabbda5e04d6928d3f83 Mon Sep 17 00:00:00 2001 From: Leaf Date: Tue, 18 Nov 2025 10:34:01 +1300 Subject: [PATCH 1084/1090] ignore .dsstore files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cc748ceeb..d97e51b5d 100644 --- a/.gitignore +++ b/.gitignore @@ -22,4 +22,6 @@ docs/changelog*.txt /bin /logs /src/datagen/*/resources -libs/ \ No newline at end of file +libs/ + +**/.DS_Store \ No newline at end of file From 65c0d4f0566e5dedcae2a76c9c949bbb0ce822f0 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 21 Nov 2025 22:23:18 -0500 Subject: [PATCH 1085/1090] Fixing the consumption amount bug. (#195) --- .../eventHandlers/AllomancyEntityEventHandler.java | 4 ++-- .../allomancy/common/items/MetalVialItem.java | 2 +- .../cosmere/allomancy/common/utils/MiscHelper.java | 14 +++++++------- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java index f8965cf68..36239b467 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/eventHandlers/AllomancyEntityEventHandler.java @@ -64,7 +64,7 @@ public static void onEntityInteract(PlayerInteractEvent.EntityInteract event) return; } - MiscHelper.consumeNugget(target, stack); + MiscHelper.consumeNugget(target, stack, 1); stack.shrink(1); } } @@ -91,7 +91,7 @@ public static void onFinishUsingItem(LivingEntityUseItemEvent.Finish event) { return; } - MiscHelper.consumeNugget(livingEntity, event.getItem()); + MiscHelper.consumeNugget(livingEntity, event.getItem(), 1); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java index 19d4d0fdd..ae01f1c57 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/items/MetalVialItem.java @@ -139,7 +139,7 @@ public ItemStack finishUsingItem(ItemStack stack, Level worldIn, LivingEntity en } } - MiscHelper.consumeNugget(entityLiving, newStack); + MiscHelper.consumeNugget(entityLiving, newStack, amount); } }); diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 54ff31c32..5e7359df1 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -20,7 +20,7 @@ public class MiscHelper { - public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) + public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, int amount) { if (livingEntity.level().isClientSide) return; @@ -46,25 +46,25 @@ public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) } else if(godItem.getMetalType() == Metals.MetalType.ATIUM) { - eatMetal(godItem.getMetalType(), livingEntity); + eatMetal(godItem.getMetalType(), livingEntity, amount); } } } else if(itemStack.getItem() instanceof IHasMetalType metalItem) { - eatMetal(metalItem.getMetalType(), livingEntity); + eatMetal(metalItem.getMetalType(), livingEntity, amount); } else if(itemStack.getItem() == Items.IRON_NUGGET) { - eatMetal(Metals.MetalType.IRON, livingEntity); + eatMetal(Metals.MetalType.IRON, livingEntity, amount); } else if(itemStack.getItem() == Items.GOLD_NUGGET) { - eatMetal(Metals.MetalType.GOLD, livingEntity); + eatMetal(Metals.MetalType.GOLD, livingEntity, amount); } } - private static void eatMetal(Metals.MetalType metalType, LivingEntity livingEntity) + private static void eatMetal(Metals.MetalType metalType, LivingEntity livingEntity, int amount) { SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { @@ -72,7 +72,7 @@ private static void eatMetal(Metals.MetalType metalType, LivingEntity livingEnti if (metalType.hasAssociatedManifestation()) //ignore metals without manifestations, that's handled in feruchemy { //add to metal stored - final int addAmount = metalType.getAllomancyBurnTimeSeconds(); + final int addAmount = metalType.getAllomancyBurnTimeSeconds() * amount; AllomancySpiritwebSubmodule allo = (AllomancySpiritwebSubmodule) spiritweb.getSubmodule(Manifestations.ManifestationTypes.ALLOMANCY); allo.adjustIngestedMetal(metalType, addAmount, true); } From 22ca5261a34e786741d279b0206ed08e4b537768 Mon Sep 17 00:00:00 2001 From: SoaringEaqle <158627775+SoaringEaqle@users.noreply.github.com> Date: Mon, 24 Nov 2025 14:00:24 -0700 Subject: [PATCH 1086/1090] investiture v0.6.0 --- .../common/manifestation/AllomancyAtium.java | 2 +- .../manifestation/AllomancyBendalloy.java | 2 +- .../common/manifestation/AllomancyBrass.java | 2 +- .../manifestation/AllomancyManifestation.java | 27 +- .../api/investiture/IInfuseContainer.java | 36 -- .../api/investiture/IInvContainer.java | 25 - .../cosmere/api/investiture/IInvCreator.java | 19 +- .../cosmere/api/investiture/IInvestiture.java | 5 +- .../api/investiture/KineticInvestiture.java | 36 +- .../api/investiture/SpiritwebInvestiture.java | 197 -------- .../cosmere/api/investiture/Transferer.java | 11 +- .../api/manifestation/Manifestation.java | 52 +- .../cosmere/api/spiritweb/ISpiritweb.java | 26 +- .../common/investiture/FNicrosilCharge.java | 22 + .../common/investiture/FeruCharge.java | 17 + .../cosmere/common/cap/InfusionContainer.java | 233 --------- .../cap/entity/InvestitureContainer.java | 470 ------------------ .../cap/entity/SpiritwebCapability.java | 283 ++++++++++- .../eventHandlers/CapabilitiesHandler.java | 4 - .../cosmere/common/investiture/Infusion.java | 120 +++-- .../common/investiture/Perpendicularity.java | 2 - .../common/items/InvestableItemBase.java | 3 - ...SyncPlayerInvestitureContainerMessage.java | 1 - .../investiture/SandmasteryInvestiture.java | 1 - .../common/investiture/Highstorm.java | 3 - .../common/investiture/LightTransferer.java | 5 +- .../common/investiture/Stormlight.java | 19 +- .../common/investiture/Towerlight.java | 8 +- .../common/investiture/Voidlight.java | 5 +- .../common/items/GemstoneItem.java | 52 +- .../SurgebindingManifestation.java | 2 + 31 files changed, 477 insertions(+), 1213 deletions(-) delete mode 100644 src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java delete mode 100644 src/api/java/leaf/cosmere/api/investiture/IInvContainer.java delete mode 100644 src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java create mode 100644 src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FNicrosilCharge.java create mode 100644 src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FeruCharge.java delete mode 100644 src/main/java/leaf/cosmere/common/cap/InfusionContainer.java delete mode 100644 src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java index 5b69e4c8d..fc8db7bf5 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyAtium.java @@ -35,7 +35,7 @@ protected void applyEffectTick(ISpiritweb data) //Reveals Your Future { //todo - data.getInvestitureContainer().runInvestiturePull(this); + data.runInvestiturePull(this); } } diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java index e1a127a21..65a6bdada 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBendalloy.java @@ -48,7 +48,7 @@ protected void applyEffectTick(ISpiritweb data) return; } - int invest = data.getInvestitureContainer().runInvestiturePull(this); + double invest = data.runInvestiturePull(this); //Slows Down Time for the entities around the user if (playerThreadMap.get(uuid) == null) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java index 0517ccfa7..57049910f 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyBrass.java @@ -85,7 +85,7 @@ private void performEffectServer(ISpiritweb data) //todo, replace x * mode with config based value double allomanticStrength = getStrength(data, false); - int investiture = data.getInvestitureContainer().runInvestiturePull(this); + double investiture = data.runInvestiturePull(this); if (playerThreadMap.get(uuid) == null) { diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java index 5069c74a1..f5d0c4fc3 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/manifestation/AllomancyManifestation.java @@ -164,7 +164,7 @@ public boolean tick(ISpiritweb data) allo.adjustIngestedMetal(metalType, -cost, isActiveTick); if(isActiveTick) { - newInvest(data.getInvestitureContainer()); + newInvest(data); } if (isActiveTick && livingEntity instanceof ServerPlayer serverPlayer) @@ -266,13 +266,13 @@ public int getRange(ISpiritweb data) } @Override - public int maxInvestitureDraw(ISpiritweb data) + public double maxInvestitureDraw(ISpiritweb data) { return (int) ((10 * getStrength(data,false)) + minInvestitureDraw(data)); } @Override - public int minInvestitureDraw(ISpiritweb data) + public double minInvestitureDraw(ISpiritweb data) { if(isFlaring(data)) { @@ -301,24 +301,14 @@ public int beuGrantAmount(ISpiritweb web) } @Override - public KineticInvestiture newInvest(IInfuseContainer data) + public KineticInvestiture newInvest(ISpiritweb data) { - ISpiritweb web; - if(data.getParent() instanceof LivingEntity entity) - { - web = SpiritwebCapability.get(entity).resolve().get(); - } - else - { - return null; - } - //gets investiture - int beu = beuGrantAmount(web); + int beu = beuGrantAmount(data); Manifestation[] appManifest; - if(isCompounding(web)) + if(isCompounding(data)) { appManifest = appManifestComp; } @@ -329,7 +319,6 @@ public KineticInvestiture newInvest(IInfuseContainer data) KineticInvestiture sub = new KineticInvestiture( data, InvHelpers.Shard.PRESERVATION, - InvHelpers.InvestitureSource.DIRECT, beu, appManifest); sub.setPriority(5); @@ -337,13 +326,13 @@ public KineticInvestiture newInvest(IInfuseContainer data) } @Override - public KineticInvestiture newInvest(IInfuseContainer data, double beu, double decay) + public KineticInvestiture newInvest(ISpiritweb data, double beu, double decay) { return newInvest(data); } @Override - public KineticInvestiture newInvest(IInfuseContainer data, double beu) + public KineticInvestiture newInvest(ISpiritweb data, double beu) { return newInvest(data); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java deleted file mode 100644 index d78ef73d7..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/IInfuseContainer.java +++ /dev/null @@ -1,36 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraftforge.common.capabilities.CapabilityProvider; -import net.minecraftforge.common.util.INBTSerializable; - -import javax.annotation.Nullable; -import java.util.ArrayList; -import java.util.Set; - -public interface IInfuseContainer> extends INBTSerializable -{ - T getParent(); - - Entity getEntityAssociate(); - void setEntityAssociate(Entity entityAssociate); - - double currentBEU(); - - double getMaxBEU(); - void setMaxBEU(double maxBEU); - - Set availableInvestitures(Manifestation manifest); - - void mergeOrAddInvestiture(IInvestiture invest); - - void clean(); - - InvHelpers.InvestitureSource containerSource(); - - void tick(); - void syncToClients(@Nullable ServerPlayer serverPlayerEntity); -} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java b/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java deleted file mode 100644 index dfc530766..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/IInvContainer.java +++ /dev/null @@ -1,25 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.entity.player.PlayerEvent; - -public interface IInvContainer extends IInfuseContainer -{ - LazyOptional getSpiritweb(); - - - - - KineticInvestiture findInvestiture(Manifestation[] appManifest); - boolean hasInvestiture(KineticInvestiture investiture); - - //int currentBEUDraw(List list); - - double runInvestiturePull(Manifestation manifestation); - - void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldContainer); - - -} diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java index 768fdb73d..08dd1c203 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvCreator.java @@ -1,21 +1,16 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.Manifestations; - +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; public interface IInvCreator - //Used when creating new investiture - //ex: using allomancy, being near perpendicularity, recharging stormlight, etc. { - default KineticInvestiture newInvest(IInfuseContainer data) - { - return new KineticInvestiture(data, InvHelpers.Shard.PURE, - InvHelpers.InvestitureSource.DIRECT, - data.getMaxBEU()-data.currentBEU(), - Manifestations.ManifestArrayBuilder.getAll()); - } - KineticInvestiture newInvest(IInfuseContainer data, double beu, double decay); + KineticInvestiture newInvest(ISpiritweb data); + + KineticInvestiture newInvest(ISpiritweb data, double beu, double decay); + + KineticInvestiture newInvest(ISpiritweb data, double beu); - KineticInvestiture newInvest(IInfuseContainer data, double beu); } diff --git a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java index 560869885..dc0cebe7e 100644 --- a/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/IInvestiture.java @@ -1,6 +1,7 @@ package leaf.cosmere.api.investiture; import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.api.spiritweb.ISpiritweb; import net.minecraft.nbt.CompoundTag; public interface IInvestiture @@ -13,9 +14,7 @@ public interface IInvestiture InvHelpers.Shard getShard(); - InvHelpers.InvestitureSource getSource(); - - IInfuseContainer getContainer(); + ISpiritweb getContainer(); double getCurrentMaxDraw(); diff --git a/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java index 20bf72c44..838f73124 100644 --- a/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java +++ b/src/api/java/leaf/cosmere/api/investiture/KineticInvestiture.java @@ -14,9 +14,8 @@ public class KineticInvestiture implements IInvestiture { - private IInfuseContainer container; + private ISpiritweb container; private InvHelpers.Shard shard; - private InvHelpers.InvestitureSource source; private Manifestation[] applicableManifestations; private int priority = 1; private double beu; @@ -26,9 +25,8 @@ public class KineticInvestiture implements IInvestiture private CompoundTag nbt; - public KineticInvestiture(@Nonnull IInfuseContainer container, + public KineticInvestiture(@Nonnull ISpiritweb container, InvHelpers.Shard shard, - InvHelpers.InvestitureSource source, double beu, Manifestation[] applicableManifestations, double decayRate) @@ -40,12 +38,10 @@ public KineticInvestiture(@Nonnull IInfuseContainer container, this.container.mergeOrAddInvestiture(this); this.decayRate = decayRate; this.shard = shard; - this.source = source; } - public KineticInvestiture(@Nonnull IInvContainer container, + public KineticInvestiture(@Nonnull ISpiritweb container, InvHelpers.Shard shard, - InvHelpers.InvestitureSource source, double beu, Manifestation[] applicableManifestations) { @@ -55,7 +51,6 @@ public KineticInvestiture(@Nonnull IInvContainer container, this.container = container; this.container.mergeOrAddInvestiture(this); this.shard = shard; - this.source = source; this.decayRate = 0; } @@ -158,13 +153,8 @@ public InvHelpers.Shard getShard() return shard; } - @Override - public InvHelpers.InvestitureSource getSource() - { - return source; - } - public IInfuseContainer getContainer() + public ISpiritweb getContainer() { return container; } @@ -179,7 +169,7 @@ public void calculateCurrentMaxDraw() int x = 0; for(Manifestation manifest: applicableManifestations) { - if(getSpiritweb() != null && manifest.isActive(getSpiritweb())) + if(container != null && manifest.isActive(container)) { x++; } @@ -187,15 +177,6 @@ public void calculateCurrentMaxDraw() currentMaxDraw = beu/x; } - public ISpiritweb getSpiritweb() - { - if(container instanceof IInvContainer contain) - { - return (ISpiritweb) contain.getSpiritweb().resolve().orElse(null); - } - return null; - } - public boolean isUsable(Manifestation manifest1) @@ -245,7 +226,6 @@ public CompoundTag serializeNBT() this.nbt = new CompoundTag(); } nbt.putString("shard", shard.getName().toLowerCase()); - nbt.putString("source", source.getName().toLowerCase()); nbt.putInt("manifestations_length", applicableManifestations.length); final CompoundTag manifestationNBT = new CompoundTag(); for (int i = 0; i < applicableManifestations.length; i++) @@ -266,7 +246,6 @@ public void deserializeNBT(CompoundTag nbt) decayRate = nbt.getDouble("decay_rate"); beu = nbt.getDouble("beu"); shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); - source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); priority = nbt.getInt("priority"); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -283,7 +262,7 @@ public void deserializeNBT(CompoundTag nbt) } - public static KineticInvestiture buildFromNBT(CompoundTag nbt, IInvContainer data) + public static KineticInvestiture buildFromNBT(CompoundTag nbt, ISpiritweb data) { Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); @@ -298,8 +277,7 @@ public static KineticInvestiture buildFromNBT(CompoundTag nbt, IInvContainer } KineticInvestiture invest = new KineticInvestiture(data, InvHelpers.Shard.valueOf(nbt.getString("shard")), - InvHelpers.InvestitureSource.valueOf(nbt.getString("source")), - nbt.getDouble("beu"),array, nbt.getInt("decay_rate")); + nbt.getDouble("beu"),array, nbt.getDouble("decay_rate")); invest.nbt = nbt; invest.setPriority(nbt.getInt("priority")); return invest; diff --git a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java b/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java deleted file mode 100644 index 9e6817105..000000000 --- a/src/api/java/leaf/cosmere/api/investiture/SpiritwebInvestiture.java +++ /dev/null @@ -1,197 +0,0 @@ -package leaf.cosmere.api.investiture; - -import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; -import net.minecraft.nbt.CompoundTag; - -public class SpiritwebInvestiture implements IInvestiture -{ - private IInvContainer container; - private InvHelpers.Shard shard; - private InvHelpers.InvestitureSource source; - - private Manifestation[] applicableManifestations; - - private double beu; - - private int mode = 0; - - private CompoundTag nbt; - - public SpiritwebInvestiture(IInvContainer invContainer, Manifestation manifestation, ISpiritweb web) - { - container = invContainer; - beu = InvHelpers.InvMath.strengthToBEU(manifestation.getStrength(web, true)); - shard = InvHelpers.Shard.getShardOfManifest(manifestation); - source = InvHelpers.InvestitureSource.DIRECT; - applicableManifestations = Manifestations.ManifestArrayBuilder.getArray(manifestation); - container.mergeOrAddInvestiture(this); - } - - public SpiritwebInvestiture(IInvContainer investitureContainer, - double strength, - InvHelpers.Shard shard, - InvHelpers.InvestitureSource source, - Manifestation[] appManifest) - { - this.shard = shard; - this.source = source; - this.beu = (int) (strength * 15); - this.applicableManifestations = appManifest; - container = investitureContainer; - container.mergeOrAddInvestiture(this); - - } - - - - public double getBEU() - { - return beu; - } - - public void setBEU(double beu) - { - this.beu = beu; - } - public Manifestation[] getApplicableManifestations() - { - return applicableManifestations; - } - - @Override - public InvHelpers.Shard getShard() - { - return null; - } - - @Override - public InvHelpers.InvestitureSource getSource() - { - return null; - } - - @Override - public IInfuseContainer getContainer() - { - return container; - } - - @Override - public double getCurrentMaxDraw() - { - return beu; - } - - @Override - public void calculateCurrentMaxDraw() - { - } - - public double getStrength() - { - return InvHelpers.InvMath.beuToStrength(beu); - } - - public void setStrength(double strength) - { - beu = InvHelpers.InvMath.strengthToBEU(strength); - } - - public int getMode() - { - return mode; - } - - public void setMode(int mode) - { - this.mode = mode; - } - - public boolean merge(SpiritwebInvestiture other) - { - if(this.getApplicableManifestations()==(other.getApplicableManifestations()) - && this.getContainer().equals(other.getContainer()) - && this.source != InvHelpers.InvestitureSource.LIFEFORCE - && other.source != InvHelpers.InvestitureSource.LIFEFORCE) - { - this.beu += other.getBEU(); - other.setBEU(0); - return true; - //other.close(); - } - return false; - } - - //public void close() {this = null;} - - public CompoundTag serializeNBT() - { - if (this.nbt == null) - { - this.nbt = new CompoundTag(); - } - nbt.putString("shard", shard.getName().toLowerCase()); - nbt.putString("source", source.getName().toLowerCase()); - nbt.putInt("manifestations_length", applicableManifestations.length); - final CompoundTag manifestationNBT = new CompoundTag(); - for (int i = 0; i < applicableManifestations.length; i++) - { - manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); - } - nbt.put("manifestations", manifestationNBT); - nbt.putDouble("beu", beu); - - - return nbt; - } - - public void deserializeNBT(CompoundTag nbt) - { - this.nbt = nbt; - beu = nbt.getDouble("beu"); - shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); - source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); - applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; - CompoundTag manifestNBT = nbt.getCompound("manifestations"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String manifestationLoc = manifestation.getRegistryName().toString(); - - if (manifestNBT.contains(manifestationLoc)) - { - applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; - } - } - - - - } - - public static SpiritwebInvestiture buildFromNBT(CompoundTag nbt, IInvContainer data) - { - Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; - CompoundTag manifestNBT = nbt.getCompound("manifestations"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String manifestationLoc = manifestation.getRegistryName().toString(); - - if (manifestNBT.contains(manifestationLoc)) - { - array[manifestNBT.getInt(manifestationLoc)] = manifestation; - } - } - SpiritwebInvestiture invest = new SpiritwebInvestiture(data, - nbt.getDouble("beu"), - InvHelpers.Shard.valueOf(nbt.getString("shard")), - InvHelpers.InvestitureSource.valueOf(nbt.getString("source")), - array); - invest.nbt = nbt; - - - return invest; - } - -} diff --git a/src/api/java/leaf/cosmere/api/investiture/Transferer.java b/src/api/java/leaf/cosmere/api/investiture/Transferer.java index c02ee57ee..8c82df75f 100644 --- a/src/api/java/leaf/cosmere/api/investiture/Transferer.java +++ b/src/api/java/leaf/cosmere/api/investiture/Transferer.java @@ -10,19 +10,18 @@ public class Transferer private int cycles = Integer.MAX_VALUE; private int cycNum = 0; - private int killAmount; + private double killAmount; - public Transferer(KineticInvestiture investIn, IInvContainer containerOut, int transfeRate, int decayRate, int cycles, int killPoint) + public Transferer(KineticInvestiture investIn, IInfuseContainer containerOut, int transfeRate, double decayRate, int cycles, double killPoint) { this(investIn, containerOut, transfeRate, decayRate); this.cycles = cycles; this.killAmount = Math.min(killPoint, containerOut.getMaxBEU()); } - public Transferer(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, int decayRate) + public Transferer(KineticInvestiture investIn, IInfuseContainer containerOut, int transferRate, double decayRate) { this.investIn = investIn; InvHelpers.Shard shard = investIn.getShard(); - InvHelpers.InvestitureSource source = investIn.getContainer().containerSource(); Manifestation[] man = investIn.getApplicableManifestations(); this.investOut = new KineticInvestiture(containerOut, shard, source, investIn.removeBEU(transferRate), man, decayRate); rate = transferRate; @@ -35,7 +34,7 @@ public Transferer(KineticInvestiture investIn, IInvContainer containerOut, int t this(investIn, containerOut, transferRate, 0); } - protected Transferer(KineticInvestiture investIn, KineticInvestiture investOut, int transferRate, int cycles, int killPoint) + protected Transferer(KineticInvestiture investIn, KineticInvestiture investOut, int transferRate, int cycles, double killPoint) { this.investOut = investOut; this.investIn = investIn; @@ -84,7 +83,7 @@ public KineticInvestiture getInvestOut() return investOut; } - public void setKillAmount(int amount) + public void setKillAmount(double amount) { killAmount = amount; } diff --git a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java index 1985704a6..b5e973236 100644 --- a/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java +++ b/src/api/java/leaf/cosmere/api/manifestation/Manifestation.java @@ -5,6 +5,7 @@ package leaf.cosmere.api.manifestation; import leaf.cosmere.api.CosmereAPI; +import leaf.cosmere.api.investiture.IInvestiture; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.providers.IManifestationProvider; @@ -14,8 +15,11 @@ import net.minecraft.world.entity.ai.attributes.AttributeInstance; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.IForgeRegistry; +import org.checkerframework.checker.units.qual.K; import java.util.ArrayList; +import java.util.HashSet; +import java.util.Set; public class Manifestation implements IManifestationProvider { @@ -142,58 +146,14 @@ public Attribute getAttribute() } - //May be redundant method - public int drawInvestiture(ISpiritweb data, int beu) - { - ArrayList invests = data.getInvestitureContainer().availableInvestitures(this); - int sum = 0; - for(KineticInvestiture investiture: invests) - { - sum += investiture.getBEU(); - } - if((sum < this.minInvestitureDraw(data))) - { - return 0; - } - int drawn = 0; - if(sum > this.maxInvestitureDraw(data)) - { - beu = this.maxInvestitureDraw(data); - sum = this.maxInvestitureDraw(data); - - } - while(beu > 0) - { - //priority filter - // 1 highest, 5 lowest - for(int i = 1; i <= 5; i++) - { - for (KineticInvestiture investiture: invests) - { - if(investiture.getPriority() == i) - { - beu = investiture.removeBEU(beu); - drawn = sum - beu; - } - } - } - - - } - return drawn; - - } - - public int maxInvestitureDraw(ISpiritweb data) + public double maxInvestitureDraw(ISpiritweb data) { return 0; } - public int minInvestitureDraw(ISpiritweb data) + public double minInvestitureDraw(ISpiritweb data) { return 0; } - - } \ No newline at end of file diff --git a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java index 1de9894d9..2f6d60854 100644 --- a/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java +++ b/src/api/java/leaf/cosmere/api/spiritweb/ISpiritweb.java @@ -8,7 +8,8 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; -import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.IInvestiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.manifestation.Manifestation; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; @@ -27,8 +28,6 @@ public interface ISpiritweb extends INBTSerializable LivingEntity getLiving(); - IInvContainer getInvestitureContainer(); - boolean hasManifestation(Manifestation manifestation); boolean hasManifestation(Manifestation manifestation, boolean ignoreTemporaryPower); @@ -98,6 +97,25 @@ public interface ISpiritweb extends INBTSerializable Set> getEffects(); - int maxBEU(); + KineticInvestiture findInvestiture(Manifestation[] appManifest); + + //double currentBEUDraw(List list); + + double runInvestiturePull(Manifestation manifestation); + + double currentBEUDraw(List list); + double currentBEU(); + + double getMaxBEU(); + void setMaxBEU(double maxBEU); + + HashSet availableInvestitures(Manifestation manifest); + + void mergeOrAddInvestiture(IInvestiture invest); + + void clean(); + + boolean hasInvestiture(IInvestiture investiture); + } diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FNicrosilCharge.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FNicrosilCharge.java new file mode 100644 index 000000000..c4d9ce793 --- /dev/null +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FNicrosilCharge.java @@ -0,0 +1,22 @@ +package leaf.cosmere.feruchemy.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.manifestation.Manifestation; + +public class FNicrosilCharge extends FeruCharge +{ + SpiritwebInvestiture stored; + public FNicrosilCharge(IInfuseContainer container, double beu, IInvContainer infuser, Manifestation storedType, int mode ) + { + super(container, Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(11), beu, infuser); + stored = new SpiritwebInvestiture(container, storedType, infuser.getSpiritweb().orElse(null), mode); + } + + @Override + public double getBEU() + { + return stored.getBEU() * super.getBEU(); + } + + +} diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FeruCharge.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FeruCharge.java new file mode 100644 index 000000000..5a8a4d39e --- /dev/null +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/investiture/FeruCharge.java @@ -0,0 +1,17 @@ +package leaf.cosmere.feruchemy.common.investiture; + +import leaf.cosmere.api.Manifestations; +import leaf.cosmere.api.investiture.*; +import leaf.cosmere.api.manifestation.Manifestation; +import leaf.cosmere.common.investiture.Infusion; + +public class FeruCharge extends Infusion +{ + + public FeruCharge(IInfuseContainer container, Manifestation manifest, double beu, IInvContainer infuser) + { + super(container, Manifestations.ManifestArrayBuilder.getArray(manifest), beu, infuser, + InvHelpers.Shard.HARMONY, InvHelpers.InvestitureSource.SELF); + } + +} diff --git a/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java b/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java deleted file mode 100644 index 779b7c031..000000000 --- a/src/main/java/leaf/cosmere/common/cap/InfusionContainer.java +++ /dev/null @@ -1,233 +0,0 @@ -package leaf.cosmere.common.cap; - -import leaf.cosmere.api.investiture.*; -import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.common.investiture.Infusion; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.entity.BlockEntity; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityProvider; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.eventbus.api.SubscribeEvent; -import org.jetbrains.annotations.Nullable; - -import javax.annotation.Nonnull; -import java.util.*; - -public class InfusionContainer> implements IInfuseContainer -{ - public static final Capability> CAPABILITY = CapabilityManager.get(new CapabilityToken<>() - { - }); - - //detect if capability has been set up yet - private boolean didSetup = false; - - protected final T parent; - protected Entity entityAssociate; - - - protected CompoundTag nbt; - - public final Set investitures = new HashSet<>(); - protected double maxBEU; - - public InfusionContainer(T parent) - { - this.parent = parent; - if(this.parent instanceof Entity entity) - { - entityAssociate = entity; - } - } - - @Nonnull - public static LazyOptional> get(LivingEntity entity) - { - return entity != null ? entity.getCapability(InfusionContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - - @Nonnull - public static LazyOptional> get(ItemStack stack) - { - return stack != null ? stack.getCapability(InfusionContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - - @Nonnull - public static LazyOptional> get(BlockEntity entity) - { - return entity != null ? entity.getCapability(InfusionContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - - @Nonnull - public static LazyOptional> get(net.minecraftforge.common.capabilities.CapabilityProvider object) - { - if(object instanceof LivingEntity entity) - { - return get(entity); - } - else if(object instanceof ItemStack stack) - { - return get(stack); - } - else if(object instanceof BlockEntity entity) - { - return get(entity); - } - else - { - return object != null ? object.getCapability(InfusionContainer.CAPABILITY, null) - : LazyOptional.empty(); - } - } - - @Override - public T getParent() - { - return parent; - } - - @Override - public Entity getEntityAssociate() - { - return entityAssociate; - } - - @Override - public void setEntityAssociate(Entity entityAssociate) - { - this.entityAssociate = entityAssociate; - } - - @Override - public double currentBEU() - { - double out = 0; - for(IInvestiture invest : investitures) - { - out += invest.getBEU(); - } - return out; - } - - @Override - public double getMaxBEU() - { - return maxBEU; - } - - @Override - public void setMaxBEU(double maxBEU) - { - this.maxBEU = maxBEU; - } - - @Override - public HashSet availableInvestitures(Manifestation manifest) - { - HashSet out = new HashSet<>(); - for (IInvestiture invest : investitures) - { - if(Arrays.stream(invest.getApplicableManifestations()).anyMatch(m1 -> m1.equals(manifest))) - { - out.add(invest); - } - } - return out; - } - - @Override - public void clean() - { - investitures.removeIf(investiture -> investiture.getBEU() == 0); - System.gc(); - } - - @Override - public InvHelpers.InvestitureSource containerSource() - { - if(parent instanceof LivingEntity) - { - return InvHelpers.InvestitureSource.SELF; - } - else if(parent instanceof ItemStack) - { - return InvHelpers.InvestitureSource.GEMSTONE; - } - else if(parent != null) - { - - } - return null; - } - - @Override - @SubscribeEvent - public void tick() - { - - } - - @Override - public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) - { - - } - - @Override - public CompoundTag serializeNBT() - { - if(nbt == null) - { - nbt = new CompoundTag(); - } - if(!investitures.isEmpty()) - { - ListTag investStored = new ListTag(); - - for (IInvestiture investiture : investitures) - { - investStored.add(investiture.serializeNBT()); - } - nbt.put("investitures", investStored); - } - - nbt.putDouble("maxBEU", maxBEU); - return nbt; - - } - - @Override - public void deserializeNBT(CompoundTag nbt) - { - if(nbt == null || nbt.isEmpty()) - { - return; - } - this.nbt = nbt; - if (nbt.contains("investitures")) - { - ListTag listtag = nbt.getList("investitures", Tag.TAG_LIST); - for (int i = 0; i < listtag.size(); i++) - { - CompoundTag sub = listtag.getCompound(i); - IInvestiture temp = Infusion.buildFromNBT(sub, this); - investitures.add(temp); - - } - - } - maxBEU = nbt.getDouble("maxBEU"); - } -} diff --git a/src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java b/src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java deleted file mode 100644 index 6f7341f6c..000000000 --- a/src/main/java/leaf/cosmere/common/cap/entity/InvestitureContainer.java +++ /dev/null @@ -1,470 +0,0 @@ -/* -* File updated ~ 15 - 9 - 25 ~ Soar - */ - -package leaf.cosmere.common.cap.entity; - -import leaf.cosmere.api.investiture.*; -import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.api.spiritweb.ISpiritweb; -import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.cap.InfusionContainer; -import leaf.cosmere.common.network.packets.SyncPlayerInvestitureContainerMessage; -import net.minecraft.nbt.CompoundTag; -import net.minecraft.nbt.ListTag; -import net.minecraft.nbt.Tag; -import net.minecraft.server.level.ServerLevel; -import net.minecraft.server.level.ServerPlayer; -import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.capabilities.CapabilityManager; -import net.minecraftforge.common.capabilities.CapabilityToken; -import net.minecraftforge.common.util.LazyOptional; -import net.minecraftforge.event.entity.player.PlayerEvent; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import java.util.*; - -public class InvestitureContainer extends InfusionContainer implements IInvContainer -{ - - - public static final Capability> CAPABILITY = CapabilityManager.get(new CapabilityToken<>() - { - }); - - //detect if capability has been set up yet - private boolean didSetup = false; - - public final Set swInvestitures = new HashSet<>(); - - private int lastAccessedTick; // Used for cleaning. If not accessed after several ticks, clear it out. - - public InvestitureContainer(Entity parent) - { - super(parent); - } - - @Nonnull - public static LazyOptional> get(LivingEntity entity) - { - return entity != null ? entity.getCapability(InvestitureContainer.CAPABILITY, null).cast() - : LazyOptional.empty(); - } - - @Override - public void tick() - { - //if server - if (!getEntityAssociate().level().isClientSide) - { - if(!didSetup) - { - syncToClients(null); - didSetup = true; - } - // Clean up and decay at the end of every other second - if(getEntityAssociate().tickCount % 40 == 39) - { - tickServer(); - } - if(getEntityAssociate().tickCount % 20 == 19) - { - for (IInvestiture invest : investitures) - { - invest.calculateCurrentMaxDraw(); - } - } - } - else - { - tickClient(); - } - } - - @Override - public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) - { - if (super.getParent() != null && getEntityAssociate().level().isClientSide) - { - throw new IllegalStateException("Don't sync client -> server"); - } - - CompoundTag nbt = serializeNBT(); - - if (serverPlayerEntity == null) - { - Cosmere.packetHandler().sendToAllInWorld(new SyncPlayerInvestitureContainerMessage(this.getEntityAssociate().getId(), nbt), (ServerLevel) getEntityAssociate().level()); - } - else - { - Cosmere.packetHandler().sendTo(new SyncPlayerInvestitureContainerMessage(this.getEntityAssociate().getId(), nbt), serverPlayerEntity); - } - } - @Override - public void onPlayerClone(PlayerEvent.Clone event, IInvContainer oldInvContainer) - { - - var oldContainer = (InvestitureContainer) oldInvContainer; - - //TODO config options that let you choose what can be transferred - - - //forcibly serialize the old web, then deserialize it into the new one - //before, it was just a copy of whatever was saved the last time it was synced. - deserializeNBT(oldContainer.serializeNBT().copy()); - - if (event.isWasDeath()) - { - - } - } - - public void tickServer() - { - for(IInvestiture invest: investitures) - { - if(invest instanceof KineticInvestiture investiture) - { - investiture.decay(); - - } - if (invest.getBEU() <= 0) - { - investitures.remove(invest); - } - } - - } - - public void tickClient() - { - //Anything on client side - //Later phase. - } - - - @Override - public LazyOptional getSpiritweb() - { - if(super.getParent() instanceof LivingEntity ent) - { - return SpiritwebCapability.get(ent); - } - return LazyOptional.empty(); - } - - - @Override - public CompoundTag serializeNBT() - { - if(!investitures.isEmpty()) - { - ListTag investStored = new ListTag(); - - for (IInvestiture investiture : investitures) - { - investStored.add(investiture.serializeNBT()); - } - nbt.put("kinInvest", investStored); - } - if(!swInvestitures.isEmpty()) - { - ListTag swInvest = new ListTag(); - for (SpiritwebInvestiture investiture : swInvestitures) - { - swInvest.add(investiture.serializeNBT()); - } - nbt.put("swInvestitures", swInvest); - } - - nbt.putInt("lastAccessedTick", lastAccessedTick); - - return nbt; - } - - @Override - public void deserializeNBT(CompoundTag compoundTag) - { - if (nbt == null) - { - return; - } - - if(compoundTag.contains("investContainer"))//The item/entity nbt, not the investiture container - { - nbt = compoundTag.getCompound("investContainer"); - } - else - { - nbt = compoundTag; - } - - this.maxBEU = nbt.getDouble("maxBEU"); - this.lastAccessedTick = nbt.getInt("lastAccessedTick"); - - if (nbt.contains("kinInvest")) - { - ListTag listtag = nbt.getList("kinInvest", Tag.TAG_LIST); - for (int i = 0; i < listtag.size(); i++) - { - CompoundTag sub = listtag.getCompound(i); - KineticInvestiture temp = KineticInvestiture.buildFromNBT(sub, this); - investitures.add(temp); - - } - - } - if(nbt.contains("swInvestitures")) - { - ListTag listTag = nbt.getList("swInvestitures", Tag.TAG_LIST); - for(int i = 0; i < listTag.size(); i++) - { - CompoundTag sub = listTag.getCompound(i); - SpiritwebInvestiture temp = SpiritwebInvestiture.buildFromNBT(sub, this); - swInvestitures.add(temp); - } - - } - } - - - @Override - public HashSet availableInvestitures(Manifestation manifest) - { - HashSet availables = new HashSet<>(); - for (IInvestiture invest : investitures) - { - if (invest instanceof KineticInvestiture investiture && investiture.isUsable(manifest)) - { - availables.add(invest); - } - } - return availables; - } - - @Override - public void mergeOrAddInvestiture(IInvestiture invest) - { - if (invest instanceof SpiritwebInvestiture swInvest) - { - for (SpiritwebInvestiture investiture : swInvestitures) - { - if(swInvest.merge(investiture)) - { - investiture.setBEU(0); - } - } - swInvestitures.add(swInvest); - } - else if (invest instanceof KineticInvestiture iInvest) - { - for (KineticInvestiture investiture : investitures) - { - if(iInvest.merge(investiture)) - { - investiture.setBEU(0); - } - } - investitures.add(iInvest); - } - } - - @Override - public KineticInvestiture findInvestiture(Manifestation[] appManifest) - { - for (KineticInvestiture invest : investitures) - { - if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) - { - return invest; - } - } - return null; - } - - @Override - public boolean hasInvestiture(KineticInvestiture investiture) - { - return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); - } - - - public int currentBEUDraw(List list) - { - int sub = 0; - for(KineticInvestiture invest: list) - { - sub += invest.getCurrentMaxDraw(); - } - return sub; - } - - @Override - public double currentBEU() - { - int sub = 0; - for(KineticInvestiture invest: investitures) - { - sub+= invest.getBEU(); - } - return sub; - } - - - @Override - // Clears out empty investiture objects from the ArrayList and the game memory - // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method - public void clean() - { - investitures.removeIf(investiture -> investiture.getBEU() == 0); - System.gc(); - } - - @Override - public InvHelpers.InvestitureSource containerSource() - { - if(super.parent instanceof LivingEntity entity) - { - return InvHelpers.InvestitureSource.SELF; - } - else if(parent != null) - { - - } - return null; - } - - public double runInvestiturePull(Manifestation manifestation) - { - - /*Steps - 1. Available list of all investiture that can apply to input. - 2. Create an output variable. - 3. Sum max currently available - 4. If - sum is less than manifestation min - T. a. return 0. - 5. for 5x - Start at 1: - a. If - output >= manifestation max - T. a. break. - b. Temp list of all available with the given priority. - c. If - temp is empty - T. a. continue; - d. Find the max currently available beu's for the priority - e. Create temp variable. - f. If - the max currently available is less than or equal to manifestation max: - T. a. For - each in Temp list - i. add max currently available to temp - F. a. see below. - g. Add last pull to output. - 6. clean list. - 7. return output - */ - - - ArrayList availInvestitures = new ArrayList<>(); - for(IInvestiture invest: availableInvestitures(manifestation)) - { - if(invest instanceof KineticInvestiture invest1) - { - availInvestitures.add(invest1); - } - } - double out = 0; - - //Test to see if the minimum amount of investiture is available - //If not return - if(currentBEUDraw(availInvestitures) < manifestation.minInvestitureDraw(getSpiritweb().resolve().get())) - { - return 0; - } - - - //Loops through each priority - for(int i = 1; i <= 5; i++) - { - if(out > manifestation.maxInvestitureDraw(getSpiritweb().resolve().get())) - { - break; - } - //Temporary list of values of given priority - ArrayList temp = new ArrayList<>(); - double tempTotal = 0; - - //Adds infusions to temporary list - for (KineticInvestiture invest : availInvestitures) - { - // remove empty investiture sets - if(invest.getBEU() == 0) - { - availInvestitures.remove(invest); - } - else if(invest.getPriority() == i) - { - temp.add(invest); - tempTotal += invest.getBEU(); - } - } - //Don't need to loop through an empty list. - if(temp.isEmpty()) - { - continue; - } - double theoryMax = manifestation.maxInvestitureDraw(getSpiritweb().resolve().get()) - out; - //If current total is less than max, pull all investiture from each source of the priority - if(tempTotal <= theoryMax) - { - for(KineticInvestiture invest: temp) - { - out += invest.drain(); - - } - } - //Else, pull a percentage relative to each investiture's total. - else - { - - double tempOut = 0; - for(KineticInvestiture invest: temp) - { - double toDraw = ((invest.getBEU()/tempTotal) * theoryMax); - tempOut += invest.removeBEU(toDraw, true); - } - int index = 0; - - //Checking that investiture gets pulled correctly - while(tempOut < theoryMax) - { - KineticInvestiture invest = temp.get(index); - if(invest.getBEU() > 0) - { - tempOut += 1; - invest.removeBEU(1, true); - } - if(invest.getBEU() == 0) - { - temp.remove(index); - } - index = index >= temp.size() ? 0 : index + 1; - } - - out += tempOut; - } - } - clean(); - return out; - } - - @Override - public Entity getEntityAssociate() - { - return entityAssociate; - } - @Override - public void setEntityAssociate(Entity entityAssociate) - { - this.entityAssociate = entityAssociate; - } -} diff --git a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java index 8424418bd..2dea652c3 100644 --- a/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java +++ b/src/main/java/leaf/cosmere/common/cap/entity/SpiritwebCapability.java @@ -10,11 +10,13 @@ import leaf.cosmere.api.*; import leaf.cosmere.api.cosmereEffect.CosmereEffect; import leaf.cosmere.api.cosmereEffect.CosmereEffectInstance; -import leaf.cosmere.api.investiture.IInvContainer; +import leaf.cosmere.api.investiture.IInvestiture; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; import leaf.cosmere.common.config.CosmereConfigs; +import leaf.cosmere.common.investiture.Infusion; import leaf.cosmere.common.network.packets.SyncPlayerSpiritwebMessage; import leaf.cosmere.common.registry.AttributesRegistry; import leaf.cosmere.common.registry.GameEventRegistry; @@ -69,7 +71,6 @@ public class SpiritwebCapability implements ISpiritweb private boolean hasBeenInitialized = false; private final LivingEntity livingEntity; - private IInvContainer investitureContainer; public final Map MANIFESTATIONS_MODE = new HashMap<>(); @@ -88,6 +89,10 @@ public class SpiritwebCapability implements ISpiritweb private final Map spiritwebSubmodules; + public final Set infusions = new HashSet<>(); + public final Set investitures = new HashSet<>(); + private double maxBEU; + @@ -95,9 +100,6 @@ public SpiritwebCapability(LivingEntity ent) { this.livingEntity = ent; spiritwebSubmodules = Cosmere.makeSpiritwebSubmodules(); - investitureContainer = InvestitureContainer.get(livingEntity).isPresent() ? - InvestitureContainer.get(livingEntity).resolve().get() : - null; } @@ -149,8 +151,6 @@ public CompoundTag serializeNBT() spiritwebSubmodule.serialize(this); } - IInvContainer container = InvestitureContainer.get(livingEntity).resolve().get(); - nbt.put("investContainer", container.serializeNBT()); return nbt; @@ -208,10 +208,6 @@ public void deserializeNBT(CompoundTag compoundTag) spiritwebSubmodule.deserialize(this); } - investitureContainer = InvestitureContainer.get(livingEntity).isPresent() ? - InvestitureContainer.get(livingEntity).resolve().get() : - null; - } @Override @@ -370,6 +366,19 @@ public void tick() didSetup = true; } + // Clean up and decay at the end of every other second + if(getLiving().tickCount % 40 == 39) + { + tickServer(); + } + if(getLiving().tickCount % 20 == 19) + { + for (IInvestiture invest : infusions) + { + invest.calculateCurrentMaxDraw(); + } + } + final LivingEntity spiritWebEntity = getLiving(); if (selectedManifestation != ManifestationRegistry.NONE.get() && !hasManifestation(selectedManifestation)) { @@ -430,19 +439,33 @@ public void tick() } } - @Override - public LivingEntity getLiving() + private void tickServer() { - return livingEntity; + for(Infusion invest: infusions) + { + if (invest.getBEU() <= 0) + { + infusions.remove(invest); + } + } + for(KineticInvestiture invest: investitures) + { + invest.decay(); + if (invest.getBEU() <= 0) + { + infusions.remove(invest); + } + } } @Override - public IInvContainer getInvestitureContainer() + public LivingEntity getLiving() { - return investitureContainer; + return livingEntity; } + //Copy things from an old spiritweb into the new one. //Eg a player has died and we need to make sure they get their stormlight and breaths back. @Override @@ -1012,10 +1035,232 @@ public void syncToClients(@Nullable ServerPlayer serverPlayerEntity) } @Override - public int maxBEU() + public double currentBEU() + { + double out = 0; + for(IInvestiture invest : infusions) + { + out += invest.getBEU(); + } + for(IInvestiture invest : investitures) + { + out += invest.getBEU(); + } + return out; + } + + + public double currentBEUDraw(List list) { - //todo: determine maximum BEU capacity based on player's powers, active powers, location, etc. - return Integer.MAX_VALUE; + double sub = 0; + for(KineticInvestiture invest: list) + { + sub += invest.getCurrentMaxDraw(); + } + return sub; + } + + + @Override + public double getMaxBEU() + { + return maxBEU; + } + + @Override + public void setMaxBEU(double maxBEU) + { + this.maxBEU = maxBEU; + } + + @Override + public boolean hasInvestiture(IInvestiture investiture) + { + return !investitures.stream().filter(investiture1 -> investiture == investiture1).toList().isEmpty(); + } + + @Override + public HashSet availableInvestitures(Manifestation manifest) + { + HashSet out = new HashSet<>(); + for (KineticInvestiture invest : investitures) + { + if(Arrays.stream(invest.getApplicableManifestations()).anyMatch(m1 -> m1.equals(manifest))) + { + out.add(invest); + } + } + return out; + } + + @Override + public void mergeOrAddInvestiture(IInvestiture invest) + { + if (invest instanceof Infusion infusion) + { + for (Infusion investiture : infusions) + { + if(infusion.merge(investiture)) + { + investiture.setBEU(0); + } + } + infusions.add(infusion); + } + else if (invest instanceof KineticInvestiture kInvest) + { + for (KineticInvestiture investiture : investitures) + { + if(kInvest.merge(investiture)) + { + investiture.setBEU(0); + } + } + investitures.add(kInvest); + } + } + @Override + public KineticInvestiture findInvestiture(Manifestation[] appManifest) + { + for (KineticInvestiture invest : investitures) + { + if (Arrays.equals(invest.getApplicableManifestations(), appManifest)) + { + return invest; + } + } + return null; + } + + + + @Override + // Clears out empty investiture objects from the ArrayList and the game memory + // Objects in use elsewhere will not be removed, and can re-attach themselves later using the "reattach()" method + public void clean() + { + infusions.removeIf(investiture -> investiture.getBEU() == 0); + System.gc(); + } + + public double runInvestiturePull(Manifestation manifestation) + { + + /*Steps + 1. Available list of all investiture that can apply to input. + 2. Create an output variable. + 3. Sum max currently available + 4. If - sum is less than manifestation min + T. a. return 0. + 5. for 5x - Start at 1: + a. If - output >= manifestation max + T. a. break. + b. Temp list of all available with the given priority. + c. If - temp is empty + T. a. continue; + d. Find the max currently available beu's for the priority + e. Create temp variable. + f. If - the max currently available is less than or equal to manifestation max: + T. a. For - each in Temp list + i. add max currently available to temp + F. a. see below. + g. Add last pull to output. + 6. clean list. + 7. return output + */ + + + ArrayList availInvestitures = new ArrayList<>(); + for(IInvestiture invest: availableInvestitures(manifestation)) + { + if(invest instanceof KineticInvestiture invest1) + { + availInvestitures.add(invest1); + } + } + double out = 0; + + //Test to see if the minimum amount of investiture is available + //If not return + if(currentBEUDraw(availInvestitures) < manifestation.minInvestitureDraw(this)) + { + return 0; + } + + + //Loops through each priority + for(int i = 1; i <= 5; i++) + { + if(out > manifestation.maxInvestitureDraw(this)) + { + break; + } + //Temporary list of values of given priority + ArrayList temp = new ArrayList<>(); + double tempTotal = 0; + + //Adds infusions to temporary list + for (KineticInvestiture invest : availInvestitures) + { + // remove empty investiture sets + if(invest.getBEU() == 0) + { + availInvestitures.remove(invest); + } + else if(invest.getPriority() == i) + { + temp.add(invest); + tempTotal += invest.getBEU(); + } + } + //Don't need to loop through an empty list. + if(temp.isEmpty()) + { + continue; + } + double theoryMax = manifestation.maxInvestitureDraw(this) - out; + //If current total is less than max, pull all investiture from each source of the priority + if(tempTotal <= theoryMax) + { + for(KineticInvestiture invest: temp) + { + out += invest.drain(); + + } + } + //Else, pull a percentage relative to each investiture's total. + else + { + + double tempOut = 0; + for(KineticInvestiture invest: temp) + { + double toDraw = ((invest.getBEU()/tempTotal) * theoryMax); + tempOut += invest.removeBEU(toDraw, true); + } + int index = 0; + + //Checking that investiture gets pulled correctly + while(tempOut < theoryMax) + { + KineticInvestiture invest = temp.get(index); + if(invest.getBEU() > 0) + { + tempOut += 1; + invest.removeBEU(1, true); + } + if(invest.getBEU() == 0) + { + temp.remove(index); + } + index = index >= temp.size() ? 0 : index + 1; + } + + out += tempOut; + } + } + clean(); + return out; } } diff --git a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java index d0c5ecfd6..e404aa796 100644 --- a/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java +++ b/src/main/java/leaf/cosmere/common/eventHandlers/CapabilitiesHandler.java @@ -5,13 +5,9 @@ package leaf.cosmere.common.eventHandlers; import leaf.cosmere.api.Constants; -import leaf.cosmere.api.investiture.IInfuseContainer; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.Cosmere; -import leaf.cosmere.common.cap.InfusionContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; -import leaf.cosmere.common.cap.entity.InvestitureContainer; import leaf.cosmere.common.items.InvestableItemBase; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; diff --git a/src/main/java/leaf/cosmere/common/investiture/Infusion.java b/src/main/java/leaf/cosmere/common/investiture/Infusion.java index 4467bbbb4..509ac0492 100644 --- a/src/main/java/leaf/cosmere/common/investiture/Infusion.java +++ b/src/main/java/leaf/cosmere/common/investiture/Infusion.java @@ -1,29 +1,30 @@ package leaf.cosmere.common.investiture; import leaf.cosmere.api.CosmereAPI; -import leaf.cosmere.api.investiture.*; +import leaf.cosmere.api.investiture.IInvestiture; +import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.manifestation.Manifestation; -import leaf.cosmere.common.cap.entity.InvestitureContainer; +import leaf.cosmere.api.spiritweb.ISpiritweb; +import leaf.cosmere.common.cap.entity.SpiritwebCapability; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; -import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; import java.util.List; -import java.util.UUID; public class Infusion implements IInvestiture { - private IInfuseContainer container; - private IInvContainer infuser; + private ISpiritweb container; + private ISpiritweb infuser; private InvHelpers.Shard shard; - private InvHelpers.InvestitureSource source; private Manifestation[] applicableManifestations; - private int beu; - private int currentMaxDraw; + private double beu; + private double currentMaxDraw; private CompoundTag nbt; - public Infusion(IInfuseContainer container, Manifestation manifest, List investitures) + public Infusion(ISpiritweb container, Manifestation manifest, List investitures) { beu = 0; @@ -48,10 +49,10 @@ else if(investiture.getShard() != this.shard) } } applicableManifestations = new Manifestation[]{manifest}; - infuser = investitures.get(0).getContainer(); + infuser = investitures.get(0).getContainer(); } - public Infusion(IInfuseContainer container, Manifestation[] manifest, int beu, IInvContainer infuser, + public Infusion(ISpiritweb container, Manifestation[] manifest, double beu, ISpiritweb infuser, InvHelpers.Shard shard, InvHelpers.InvestitureSource source ) { @@ -59,18 +60,16 @@ public Infusion(IInfuseContainer container, Manifestation[] manifest, int beu this.infuser = infuser; this.applicableManifestations = manifest; this.beu = beu; - this.shard = shard; - this.source = source; - } + this.shard = shard;} @Override - public int getBEU() + public double getBEU() { return beu; } @Override - public void setBEU(int beu) + public void setBEU(double beu) { this.beu = beu; } @@ -87,20 +86,15 @@ public InvHelpers.Shard getShard() return shard; } - @Override - public InvHelpers.InvestitureSource getSource() - { - return source; - } @Override - public IInfuseContainer getContainer() + public ISpiritweb getContainer() { return container; } @Override - public int getCurrentMaxDraw() + public double getCurrentMaxDraw() { return currentMaxDraw; } @@ -108,7 +102,23 @@ public int getCurrentMaxDraw() @Override public void calculateCurrentMaxDraw() { - currentMaxDraw = Math.min(beu, applicableManifestations[0].maxInvestitureDraw(infuser.getSpiritweb().resolve().get())); + currentMaxDraw = Math.min(beu, applicableManifestations[0].maxInvestitureDraw(infuser)); + } + + public boolean merge(Infusion other) + { + if(this == other) + { + return false; + } + if(this.shard == other.shard + && this.getContainer().equals(other.getContainer())) + { + this.beu += other.getBEU(); + other.setBEU(0); + return true; + } + return false; } @Override @@ -119,7 +129,6 @@ public CompoundTag serializeNBT() this.nbt = new CompoundTag(); } nbt.putString("shard", shard.getName().toLowerCase()); - nbt.putString("source", source.getName().toLowerCase()); nbt.putInt("manifestations_length", applicableManifestations.length); final CompoundTag manifestationNBT = new CompoundTag(); for (int i = 0; i < applicableManifestations.length; i++) @@ -127,9 +136,9 @@ public CompoundTag serializeNBT() manifestationNBT.putInt(applicableManifestations[i].getRegistryName().toString(), i); } nbt.put("manifestations", manifestationNBT); - nbt.putInt("beu", beu); + nbt.putDouble("beu", beu); - nbt.putUUID("infuser", infuser.getParent().getUUID()); + nbt.putInt("infuser", infuser.getLiving().getId()); return nbt; } @@ -138,9 +147,8 @@ public CompoundTag serializeNBT() public void deserializeNBT(CompoundTag nbt) { this.nbt = nbt; - beu = nbt.getInt("beu"); + beu = nbt.getDouble("beu"); shard = InvHelpers.Shard.valueOf(nbt.getString("shard")); - source = InvHelpers.InvestitureSource.valueOf(nbt.getString("source")); applicableManifestations = new Manifestation[nbt.getInt("manifestations_length")]; CompoundTag manifestNBT = nbt.getCompound("manifestations"); for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) @@ -152,6 +160,10 @@ public void deserializeNBT(CompoundTag nbt) applicableManifestations[manifestNBT.getInt(manifestationLoc)] = manifestation; } } + if (Minecraft.getInstance().level.getEntity(nbt.getInt("infuser")) instanceof LivingEntity entity) + { + infuser = SpiritwebCapability.get(entity).resolve().get(); + } } private static InvHelpers.Shard switcher(InvHelpers.Shard shard1, InvHelpers.Shard shard2) @@ -208,28 +220,28 @@ private static InvHelpers.Shard switcher(InvHelpers.Shard shard1, InvHelpers.Sha default -> InvHelpers.Shard.NONE; }; } - - public static Infusion buildFromNBT(CompoundTag nbt, IInfuseContainer container) - { - Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; - CompoundTag manifestNBT = nbt.getCompound("manifestations"); - for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) - { - final String manifestationLoc = manifestation.getRegistryName().toString(); - - if (manifestNBT.contains(manifestationLoc)) - { - array[manifestNBT.getInt(manifestationLoc)] = manifestation; - } - } - - UUID uuid = nbt.getUUID("infuser"); - Entity infuse = Minecraft.getInstance().level.getServer().getAllLevels().iterator().next().getEntity(uuid); - - Infusion invest = new Infusion(container, array, - nbt.getInt("beu"), (InvestitureContainer)InvestitureContainer.get(infuse).resolve().get(), InvHelpers.Shard.valueOf(nbt.getString("shard")), - InvHelpers.InvestitureSource.valueOf(nbt.getString("source"))); - invest.nbt = nbt; - return invest; - } +// +// public static Infusion buildFromNBT(CompoundTag nbt, IInfuseContainer container) +// { +// Manifestation[] array = new Manifestation[nbt.getInt("manifestations_length")]; +// CompoundTag manifestNBT = nbt.getCompound("manifestations"); +// for (Manifestation manifestation : CosmereAPI.manifestationRegistry()) +// { +// final String manifestationLoc = manifestation.getRegistryName().toString(); +// +// if (manifestNBT.contains(manifestationLoc)) +// { +// array[manifestNBT.getInt(manifestationLoc)] = manifestation; +// } +// } +// +// UUID uuid = nbt.getUUID("infuser"); +// Entity infuse = Minecraft.getInstance().level.getServer().getAllLevels().iterator().next().getEntity(uuid); +// +// Infusion invest = new Infusion(container, array, +// nbt.getDouble("beu"), Infusor, InvHelpers.Shard.valueOf(nbt.getString("shard")), +// InvHelpers.InvestitureSource.valueOf(nbt.getString("source"))); +// invest.nbt = nbt; +// return invest; +// } } diff --git a/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java b/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java index ba60071dd..2f8989c2a 100644 --- a/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java +++ b/src/main/java/leaf/cosmere/common/investiture/Perpendicularity.java @@ -4,8 +4,6 @@ package leaf.cosmere.common.investiture; -import leaf.cosmere.api.investiture.IInvCreator; - public class Perpendicularity implements IInvCreator { diff --git a/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java index 7b1ad55f1..4197497b8 100644 --- a/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java +++ b/src/main/java/leaf/cosmere/common/items/InvestableItemBase.java @@ -5,13 +5,10 @@ import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; import leaf.cosmere.api.helpers.StackNBTHelper; -import leaf.cosmere.api.investiture.IInfuseContainer; import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.api.text.TextHelper; -import leaf.cosmere.common.cap.InfusionContainer; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.config.CosmereConfigs; -import leaf.cosmere.common.cap.entity.InvestitureContainer; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; diff --git a/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java index 43d097bc5..d17e499bd 100644 --- a/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java +++ b/src/main/java/leaf/cosmere/common/network/packets/SyncPlayerInvestitureContainerMessage.java @@ -4,7 +4,6 @@ package leaf.cosmere.common.network.packets; -import leaf.cosmere.common.cap.entity.InvestitureContainer; import leaf.cosmere.common.network.ICosmerePacket; import net.minecraft.client.Minecraft; import net.minecraft.nbt.CompoundTag; diff --git a/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java index 93e543668..ceac31c3a 100644 --- a/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java +++ b/src/sandmastery/java/leaf/cosmere/sandmastery/common/investiture/SandmasteryInvestiture.java @@ -1,7 +1,6 @@ package leaf.cosmere.sandmastery.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java index 324c33209..5da6f3f33 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Highstorm.java @@ -1,9 +1,6 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.helpers.TimeHelper; -import leaf.cosmere.api.investiture.IInfuseContainer; -import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.IInvCreator; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.surgebinding.common.registries.SurgebindingDimensions; import net.minecraft.core.Position; diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java index c6be1eb36..78478b74c 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/LightTransferer.java @@ -1,17 +1,16 @@ package leaf.cosmere.surgebinding.common.investiture; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.Transferer; public class LightTransferer extends Transferer { - public LightTransferer(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, int decayRate, int cycles) + public LightTransferer(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, double decayRate, int cycles) { super(investIn, getInvestiture(investIn, containerOut, transferRate, decayRate), transferRate, cycles, containerOut.getMaxBEU()); } - private static KineticInvestiture getInvestiture(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, int decayRate) + private static KineticInvestiture getInvestiture(KineticInvestiture investIn, IInvContainer containerOut, int transferRate, double decayRate) { if(investIn instanceof Stormlight light) { diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java index 8c36ee061..1bb3d721b 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Stormlight.java @@ -1,7 +1,6 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; import leaf.cosmere.api.spiritweb.ISpiritweb; @@ -11,25 +10,17 @@ public class Stormlight extends KineticInvestiture { - public Stormlight(IInvContainer container, - int beu) + public Stormlight(ISpiritweb container, + double beu) { super(container, InvHelpers.Shard.HONOR, - InvHelpers.InvestitureSource.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); int decayRate; - if(container.getParent() instanceof LivingEntity) - { - ISpiritweb sw = container.getSpiritweb().resolve().get(); - SurgebindingSpiritwebSubmodule ssm = (SurgebindingSpiritwebSubmodule) sw.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); - decayRate = (6 - ssm.getIdeal()) * SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get() / 2; - } - else - { - decayRate = 1; - } + + SurgebindingSpiritwebSubmodule ssm = (SurgebindingSpiritwebSubmodule) container.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); + decayRate = (6 - ssm.getIdeal()) * SurgebindingConfigs.SERVER.STORMLIGHT_DRAIN_RATE.get() / 2; super.setDecayRate(decayRate); } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java index 2be03a9a6..8cfa82337 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Towerlight.java @@ -1,19 +1,17 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.spiritweb.ISpiritweb; public class Towerlight extends KineticInvestiture { - public Towerlight(IInvContainer container, - int beu) + public Towerlight(ISpiritweb container, + double beu) { super(container, InvHelpers.Shard.HONOR, - //Feels most accurate - InvHelpers.InvestitureSource.MISTS, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java index 02bbfcba9..77d7ac894 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/investiture/Voidlight.java @@ -1,20 +1,19 @@ package leaf.cosmere.surgebinding.common.investiture; import leaf.cosmere.api.Manifestations; -import leaf.cosmere.api.investiture.IInvContainer; import leaf.cosmere.api.investiture.KineticInvestiture; import leaf.cosmere.api.investiture.InvHelpers; +import leaf.cosmere.api.spiritweb.ISpiritweb; public class Voidlight extends KineticInvestiture { - public Voidlight(IInvContainer container, + public Voidlight(ISpiritweb container, int beu) { //As we start implementing voidbinding, add that to the list of manifestations. //Not much is known about voidlight, but it's here for the future. super(container, InvHelpers.Shard.ODIUM, - InvHelpers.InvestitureSource.HIGHSTORM, beu, Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING)); } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java index 64e3f8e65..7ca26e61e 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/items/GemstoneItem.java @@ -7,10 +7,11 @@ import leaf.cosmere.api.IHasGemType; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Roshar; -import leaf.cosmere.api.investiture.IInvContainer; -import leaf.cosmere.api.investiture.InvHelpers; -import leaf.cosmere.api.investiture.Transferer; +import leaf.cosmere.api.investiture.IInvCreator; +import leaf.cosmere.api.investiture.KineticInvestiture; +import leaf.cosmere.api.spiritweb.ISpiritweb; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.items.ChargeableItemBase; import leaf.cosmere.common.items.InvestableItemBase; import leaf.cosmere.common.properties.PropTypes; import leaf.cosmere.surgebinding.common.config.SurgebindingConfigs; @@ -28,7 +29,7 @@ import net.minecraft.world.item.Rarity; import net.minecraft.world.level.Level; -public class GemstoneItem extends InvestableItemBase implements IHasGemType +public class GemstoneItem extends ChargeableItemBase implements IHasGemType, IInvCreator { private final Roshar.Gemstone gemstone; private final Roshar.GemSize gemSize; @@ -107,7 +108,6 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte SpiritwebCapability.get(pPlayer).ifPresent(spiritweb -> { SpiritwebCapability data = (SpiritwebCapability) spiritweb; - IInvContainer playerContainer = data.getInvestitureContainer(); boolean hasAnySurgebinding = SurgebindingManifestations.SURGEBINDING_POWERS.values().stream().anyMatch((manifestation -> spiritweb.hasManifestation(manifestation.getManifestation()))); @@ -127,9 +127,7 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte final int maxPlayerStormlight = SurgebindingConfigs.SERVER.PLAYER_MAX_STORMLIGHT.get(); - Stormlight invest = (Stormlight) (playerContainer.findInvestiture(Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING))); - Stormlight gemInvest = (Stormlight) (getAsContainer(itemStack).findInvestiture(Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING))); - + Stormlight invest = (Stormlight) (data.findInvestiture(Manifestations.ManifestArrayBuilder.getAllType(Manifestations.ManifestationTypes.SURGEBINDING))); //Get stormlight from gems if (!pPlayer.isCrouching()) @@ -138,16 +136,16 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte - final int attemptedTotal = charge + invest.getBEU(); + final int attemptedTotal = (int) (charge + invest.getBEU()); if (attemptedTotal <= maxPlayerStormlight) { - new LightTransferer(gemInvest, playerContainer, 400, 0, 5) - .setKillAmount(maxPlayerStormlight - invest.getBEU()); + newInvest(data, attemptedTotal); + adjustCharge(itemStack, -attemptedTotal); } else { - new LightTransferer(gemInvest, playerContainer, 400, 0, 3) - .setKillAmount(maxPlayerStormlight - invest.getBEU()); + newInvest(data, maxPlayerStormlight); + adjustCharge(itemStack, -maxPlayerStormlight); } } //put remaining stormlight into gem. @@ -157,19 +155,37 @@ public InteractionResultHolder use(Level pLevel, Player pPlayer, Inte { if ((charge + invest.getBEU()) > getMaxCharge(itemStack)) { - new LightTransferer(invest, getAsContainer(itemStack), - 1000, 0, Integer.MAX_VALUE); + adjustCharge(itemStack, getMaxCharge(itemStack)); + invest.removeBEU(getMaxCharge(itemStack)); } else { - new LightTransferer(invest, getAsContainer(itemStack), - 1000, 0, Integer.MAX_VALUE); + adjustCharge(itemStack, (int) invest.getBEU()); + invest.drain(); } - } + }t } }); return InteractionResultHolder.consume(itemStack); } + + @Override + public KineticInvestiture newInvest(ISpiritweb data) + { + return new Stormlight(data, 0); + } + + @Override + public KineticInvestiture newInvest(ISpiritweb data, double beu, double decay) + { + return new Stormlight(data, beu); + } + + @Override + public KineticInvestiture newInvest(ISpiritweb data, double beu) + { + return new Stormlight(data, beu); + } } diff --git a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgebindingManifestation.java b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgebindingManifestation.java index d8ae342fe..6bfc9d70c 100644 --- a/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgebindingManifestation.java +++ b/src/surgebinding/java/leaf/cosmere/surgebinding/common/manifestation/SurgebindingManifestation.java @@ -36,4 +36,6 @@ public boolean isActive(ISpiritweb data) SurgebindingSpiritwebSubmodule sb = (SurgebindingSpiritwebSubmodule) spiritwebCapability.getSubmodule(Manifestations.ManifestationTypes.SURGEBINDING); return data.hasManifestation(this) && sb.getStormlight() > 0; } + + public void infusionTick() } From a67bc601eac851685d15782a1ebeac5d5537803f Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 5 Dec 2025 20:33:37 -0500 Subject: [PATCH 1087/1090] Attribute Translations (#197) * adding attribute translations! * translations for aviar --- .../allomancy/AllomancyEngLangGen.java | 16 ++++++-------- .../leaf/cosmere/aviar/AviarEngLangGen.java | 7 ++++++ .../feruchemy/FeruchemyEngLangGen.java | 17 +++++++------- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../assets/allomancy/lang/en_us.json | 16 ++++++++++++++ .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../aviar/assets/aviar/lang/en_us.json | 1 + .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../cosmere/assets/cosmere/lang/en_us.json | 10 +++++++++ .../60c035799f578be828205f75035ce4e4976d0466 | 4 ++-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../assets/feruchemy/lang/en_us.json | 16 ++++++++++++++ .../5040fc90492c7cdcc7a00ae9539bd053297496a9 | 4 ++-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../assets/hemalurgy/lang/en_us.json | 2 +- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../assets/sandmastery/lang/en_us.json | 3 +-- .../c622617f6fabf890a00b9275cd5f643584a8a2c8 | 4 ++-- .../assets/surgebinding/lang/en_us.json | 13 +++++++++-- .../main/java/leaf/cosmere/EngLangGen.java | 3 ++- .../sandmastery/SandmasteryEngLangGen.java | 22 +++++-------------- .../surgebinding/SurgebindingEngLangGen.java | 16 ++++++-------- .../impl/AttributeDeferredRegister.java | 2 +- 23 files changed, 112 insertions(+), 68 deletions(-) diff --git a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java index f3bb41b9b..92106c343 100644 --- a/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java +++ b/src/datagen/allomancy/java/leaf/cosmere/allomancy/AllomancyEngLangGen.java @@ -29,6 +29,7 @@ import java.util.Arrays; import java.util.Locale; +import static leaf.cosmere.allomancy.common.registries.AllomancyAttributes.ALLOMANCY_ATTRIBUTES; import static leaf.cosmere.api.Constants.Strings.*; public class AllomancyEngLangGen extends LanguageProvider @@ -143,17 +144,14 @@ private void addManifestations() private void addAttributes() { //Attributes - for (IAttributeProvider registryObject : AllomancyAttributes.ATTRIBUTES.getAllAttributes()) + ALLOMANCY_ATTRIBUTES.forEach((metalType, registryObject) -> { final String descriptionId = registryObject.getAttribute().getDescriptionId(); - //no duplicates pls - //manifestation section handles adding attributes lang gen for themselves - if (!descriptionId.startsWith("manifestation")) - { - String translation = descriptionId.split("\\.")[1]; - add(descriptionId, StringHelper.fixCapitalisation(translation)); - } - } + + String name = "Allomantic " + metalType.getName(); + // Attributes are the powers themselves, they need their own names. + add(descriptionId, StringHelper.fixCapitalisation(name)); + }); } private void addPatchouli() diff --git a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java index 2169cdbd2..eca06829a 100644 --- a/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java +++ b/src/datagen/aviar/java/leaf/cosmere/aviar/AviarEngLangGen.java @@ -15,6 +15,8 @@ import net.minecraftforge.common.data.LanguageProvider; import net.minecraftforge.registries.ForgeRegistries; +import static leaf.cosmere.aviar.common.registries.AviarAttributes.HOSTILE_LIFE_SENSE; + public class AviarEngLangGen extends LanguageProvider { public AviarEngLangGen(PackOutput output) @@ -79,6 +81,11 @@ private void addManifestations() private void addAttributes() { + //Attribute + final String descriptionId = HOSTILE_LIFE_SENSE.getAttribute().getDescriptionId(); + final String name = HOSTILE_LIFE_SENSE.getName().replace('_',' '); + // Attributes are the powers themselves, they need their own names. + add(descriptionId, StringHelper.fixCapitalisation(name)); } private void addPatchouli() diff --git a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java index 584eb8a81..b6d28b6d6 100644 --- a/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java +++ b/src/datagen/feruchemy/java/leaf/cosmere/feruchemy/FeruchemyEngLangGen.java @@ -28,6 +28,8 @@ import java.util.Locale; import java.util.Map; +import static leaf.cosmere.feruchemy.common.registries.FeruchemyAttributes.FERUCHEMY_ATTRIBUTES; + public class FeruchemyEngLangGen extends LanguageProvider { final String advancementTitleFormat = "advancements.feruchemy.%s.title"; @@ -153,17 +155,14 @@ private void addManifestations() private void addAttributes() { //Attributes - for (IAttributeProvider registryObject : FeruchemyAttributes.ATTRIBUTES.getAllAttributes()) + FERUCHEMY_ATTRIBUTES.forEach((metalType, registryObject) -> { final String descriptionId = registryObject.getAttribute().getDescriptionId(); - //no duplicates pls - //manifestation section handles adding attributes lang gen for themselves - if (!descriptionId.startsWith("manifestation")) - { - String translation = descriptionId.split("\\.")[1]; - add(descriptionId, StringHelper.fixCapitalisation(translation)); - } - } + + String name = "Feruchemical " + metalType.getName(); + // Attributes are the powers themselves, they need their own names. + add(descriptionId, StringHelper.fixCapitalisation(name)); + }); } private void addPatchouli() diff --git a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 371e6e96c..417e4ef5a 100644 --- a/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/allomancy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-11-20T20:27:49.46325 Languages: en_us -8c6fb15514a56c014860e156aabda4f5ebdd2ac8 assets/allomancy/lang/en_us.json +// 1.20.1 2025-11-27T19:37:08.635599 Languages: en_us +dbff8b7358ef52414127e6b00abc4f95ed5886b6 assets/allomancy/lang/en_us.json diff --git a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json index 0b629adc8..17098355c 100644 --- a/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json +++ b/src/datagen/generated/allomancy/assets/allomancy/lang/en_us.json @@ -52,6 +52,22 @@ "allomancy.soother": "Soother", "allomancy.thug": "Thug", "allomancy.tineye": "Tineye", + "attribute.allomancy.aluminum": "Allomantic Aluminum", + "attribute.allomancy.bendalloy": "Allomantic Bendalloy", + "attribute.allomancy.brass": "Allomantic Brass", + "attribute.allomancy.bronze": "Allomantic Bronze", + "attribute.allomancy.cadmium": "Allomantic Cadmium", + "attribute.allomancy.chromium": "Allomantic Chromium", + "attribute.allomancy.copper": "Allomantic Copper", + "attribute.allomancy.duralumin": "Allomantic Duralumin", + "attribute.allomancy.electrum": "Allomantic Electrum", + "attribute.allomancy.gold": "Allomantic Gold", + "attribute.allomancy.iron": "Allomantic Iron", + "attribute.allomancy.nicrosil": "Allomantic Nicrosil", + "attribute.allomancy.pewter": "Allomantic Pewter", + "attribute.allomancy.steel": "Allomantic Steel", + "attribute.allomancy.tin": "Allomantic Tin", + "attribute.allomancy.zinc": "Allomantic Zinc", "config.jade.plugin_allomancy.bronze_seeker_tooltip": "Seeker Tooltip", "death.attack.allomancy.pewter_delayed_damage": "%1$s stopped burning pewter and succumbed to their wounds", "death.attack.allomancy.pewter_delayed_damage.player": "%1$s stopped burning pewter while fighting %2$s and succumbed to their wounds", diff --git a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 47f2521ab..7e811ba13 100644 --- a/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/aviar/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:18:48.1020168 Languages: en_us -b3c9c653ab9668c66c6d3fba24bde9ac52f7a70c assets/aviar/lang/en_us.json +// 1.20.1 2025-11-27T20:18:46.414958 Languages: en_us +6aeef5337e21f4f07014d64d725446b74fa896af assets/aviar/lang/en_us.json diff --git a/src/datagen/generated/aviar/assets/aviar/lang/en_us.json b/src/datagen/generated/aviar/assets/aviar/lang/en_us.json index 2405a794f..f238b606c 100644 --- a/src/datagen/generated/aviar/assets/aviar/lang/en_us.json +++ b/src/datagen/generated/aviar/assets/aviar/lang/en_us.json @@ -1,4 +1,5 @@ { + "attribute.cosmere.hostile_life_sense": "Hostile Life Sense", "entity.aviar.aviar": "Aviar", "item.aviar.aviar_spawn_egg": "Aviar Spawn Egg", "item.aviar.fruit_of_patji": "Fruit Of Patji", diff --git a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 1f0a8fcf0..36452cd1e 100644 --- a/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/cosmere/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-14T18:10:47.1145316 Languages: en_us -fe04a03ce1cbb34e03ef83c964417b404cdf507e assets/cosmere/lang/en_us.json +// 1.20.1 2025-11-27T19:45:06.153442 Languages: en_us +8e534a6fd558f05a72d1f2a267fb6e23adf9e519 assets/cosmere/lang/en_us.json diff --git a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json index 8bf22641c..74111173a 100644 --- a/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json +++ b/src/datagen/generated/cosmere/assets/cosmere/lang/en_us.json @@ -1,5 +1,15 @@ { "argument.cosmere.power.invalid": "Invalid power", + "attribute.cosmere.cognitive_concealment": "Cognitive Concealment", + "attribute.cosmere.connection": "Connection", + "attribute.cosmere.cosmere_fortune": "Cosmere Fortune", + "attribute.cosmere.determination": "Determination", + "attribute.cosmere.healing_strength": "Healing Strength", + "attribute.cosmere.identity": "Identity", + "attribute.cosmere.night_vision": "Night Vision", + "attribute.cosmere.size": "Size", + "attribute.cosmere.warmth": "Warmth", + "attribute.cosmere.xp_gain_rate": "Xp Gain Rate", "block.cosmere.aluminum_block": "Aluminum Block", "block.cosmere.aluminum_ore": "Aluminum Ore", "block.cosmere.atium_block": "Atium Block", diff --git a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 index f29232516..62b933c6c 100644 --- a/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 +++ b/src/datagen/generated/feruchemy/.cache/60c035799f578be828205f75035ce4e4976d0466 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-14T16:47:43.1403138 Curios for feruchemy -73df16b7f3493192632a8179ec9b2557e25d965f data/feruchemy/curios/entities/feruchemists.json +// 1.20.1 2025-11-27T20:18:46.408101 Curios for feruchemy +6d8604575982ef60b9658bf84e9f93720d8c1978 data/feruchemy/curios/entities/feruchemists.json bbe073ce668da1ecdaf43df2f875912048670cff data/feruchemy/curios/slots/bracelet.json 50651f4d8ef6e4eaf677f5f40e0013e4b16d7e47 data/feruchemy/curios/slots/necklace.json 15229e2ac0d30b7253b5d5b6f82d0433d5cb414c data/feruchemy/curios/slots/ring.json diff --git a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index c3782cc29..3e5359aa8 100644 --- a/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/feruchemy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2024-10-10T14:25:43.8634857 Languages: en_us -30e43707af5fed23faac27e4d046d6a5252c8afe assets/feruchemy/lang/en_us.json +// 1.20.1 2025-11-27T19:44:24.144986 Languages: en_us +812946595142a8239516de747f91843b4d1a003c assets/feruchemy/lang/en_us.json diff --git a/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json b/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json index 062ae72e3..a68b0f73f 100644 --- a/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json +++ b/src/datagen/generated/feruchemy/assets/feruchemy/lang/en_us.json @@ -35,6 +35,22 @@ "advancements.feruchemy.feruchemy.title": "Feruchemy", "advancements.feruchemy.feruchemy.zinc.description": "Test description: Feruchemical Zinc", "advancements.feruchemy.feruchemy.zinc.title": "Feruchemical Zinc", + "attribute.feruchemy.aluminum": "Feruchemical Aluminum", + "attribute.feruchemy.bendalloy": "Feruchemical Bendalloy", + "attribute.feruchemy.brass": "Feruchemical Brass", + "attribute.feruchemy.bronze": "Feruchemical Bronze", + "attribute.feruchemy.cadmium": "Feruchemical Cadmium", + "attribute.feruchemy.chromium": "Feruchemical Chromium", + "attribute.feruchemy.copper": "Feruchemical Copper", + "attribute.feruchemy.duralumin": "Feruchemical Duralumin", + "attribute.feruchemy.electrum": "Feruchemical Electrum", + "attribute.feruchemy.gold": "Feruchemical Gold", + "attribute.feruchemy.iron": "Feruchemical Iron", + "attribute.feruchemy.nicrosil": "Feruchemical Nicrosil", + "attribute.feruchemy.pewter": "Feruchemical Pewter", + "attribute.feruchemy.steel": "Feruchemical Steel", + "attribute.feruchemy.tin": "Feruchemical Tin", + "attribute.feruchemy.zinc": "Feruchemical Zinc", "effect.feruchemy.storing_aluminum": "Storing Aluminum", "effect.feruchemy.storing_atium": "Storing Atium", "effect.feruchemy.storing_bendalloy": "Storing Bendalloy", diff --git a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 index 06324ea66..e849e8190 100644 --- a/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 +++ b/src/datagen/generated/hemalurgy/.cache/5040fc90492c7cdcc7a00ae9539bd053297496a9 @@ -1,5 +1,5 @@ -// 1.20.1 2025-11-14T16:47:43.170363 Curios for hemalurgy -626814372fa7619e348a3a7768b51867ea23cf4b data/hemalurgy/curios/entities/hemalurgists.json +// 1.20.1 2025-11-27T20:18:46.436269 Curios for hemalurgy +2c626dfa8d54881552e9e9c55aa2784089584b1f data/hemalurgy/curios/entities/hemalurgists.json 3fb00e951b4f3f7f01981550080dacbe27e14423 data/hemalurgy/curios/slots/eyes.json 169721ff151c350c1c8e90f73d41f17f3737007a data/hemalurgy/curios/slots/linchpin.json becad4c0600bfd0706dc0ceb17eaf853bd029cd9 data/hemalurgy/curios/slots/mental.json diff --git a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 766c00517..9b3c862e7 100644 --- a/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/hemalurgy/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-11-14T21:12:57.6544528 Languages: en_us -608fd7fb4139075c6245bcc87968e8e559367e23 assets/hemalurgy/lang/en_us.json +// 1.20.1 2025-11-27T19:26:56.092291 Languages: en_us +d1c333afb28e5f58bbbcd8410eb4e562b6309551 assets/hemalurgy/lang/en_us.json diff --git a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json index 573b39673..05ad997a7 100644 --- a/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json +++ b/src/datagen/generated/hemalurgy/assets/hemalurgy/lang/en_us.json @@ -1,4 +1,5 @@ { + "attribute.hemalurgy.spiritweb_integrity": "Spiritweb Integrity", "command.cosmere.eyeheight.set.success": "Set eye height to %s", "curios.identifier.eyes": "Eye Spikes", "curios.identifier.linchpin": "Linchpin Spike", @@ -83,7 +84,6 @@ "item.hemalurgy.tin_spike.tooltip": "Steals senses.", "item.hemalurgy.zinc_spike": "Zinc Spike", "item.hemalurgy.zinc_spike.tooltip": "Steals emotional fortitude.", - "manifestation.hemalurgy.spiritweb_integrity": "Spiritweb Integrity", "tabs.hemalurgy.items": "Hemalurgy", "tooltip.cosmere.attribute.chromium": "%s%s Luck", "tooltip.cosmere.attribute.copper": "%s%s%% XP", diff --git a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index 2c1f380a3..2d8f948b9 100644 --- a/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/sandmastery/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-10-30T22:53:59.8364225 Languages: en_us -101d76286a8eaefff4cc67bb4a5f4bbb5083aa9e assets/sandmastery/lang/en_us.json +// 1.20.1 2025-11-27T20:11:46.572699 Languages: en_us +e7c15b3d2ea2d984e28d83c6e143c6869269eed4 assets/sandmastery/lang/en_us.json diff --git a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json index 77ff4b66e..8d7d851ef 100644 --- a/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json +++ b/src/datagen/generated/sandmastery/assets/sandmastery/lang/en_us.json @@ -1,6 +1,7 @@ { "advancements.sandmastery.sandmastery.description": "Test description: Sandmastery", "advancements.sandmastery.sandmastery.title": "Sandmastery", + "attribute.sandmastery.ribbons": "Sand Mastery Ribbons", "block.sandmastery.charged_taldain_sand": "Charged Taldain Sand", "block.sandmastery.charged_taldain_sand_layer": "Charged Taldain Sand Layer", "block.sandmastery.sand_jar_block": "Sand Jar Block", @@ -27,7 +28,5 @@ "manifestation.sandmastery.platform.description": "Masters can use platform", "manifestation.sandmastery.projectile": "Sand Mastery Projectile", "manifestation.sandmastery.projectile.description": "Masters can use projectile", - "manifestation.sandmastery.ribbons": "Sand Mastery Ribbons", - "manifestation.sandmastery.ribbons.description": "Masters can use ribbons", "tabs.sandmastery.items": "Sandmastery" } \ No newline at end of file diff --git a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 index cb78742ec..666551ec7 100644 --- a/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 +++ b/src/datagen/generated/surgebinding/.cache/c622617f6fabf890a00b9275cd5f643584a8a2c8 @@ -1,2 +1,2 @@ -// 1.20.1 2025-02-06T13:35:12.5995697 Languages: en_us -f6bad2ae397dfc8ceb6001e749f95b17523f4d9e assets/surgebinding/lang/en_us.json +// 1.20.1 2025-11-27T19:52:01.247811 Languages: en_us +237001abcc8d8939fd103a85bd4253657737ccb0 assets/surgebinding/lang/en_us.json diff --git a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json index 3ae1bd4bf..95b5e350f 100644 --- a/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json +++ b/src/datagen/generated/surgebinding/assets/surgebinding/lang/en_us.json @@ -21,6 +21,16 @@ "advancements.surgebinding.surgebinding.transformation.title": "Transformation", "advancements.surgebinding.surgebinding.transportation.description": "Test description: Transportation", "advancements.surgebinding.surgebinding.transportation.title": "Transportation", + "attribute.surgebinding.abrasion": "Surge of Abrasion", + "attribute.surgebinding.adhesion": "Surge of Adhesion", + "attribute.surgebinding.cohesion": "Surge of Cohesion", + "attribute.surgebinding.division": "Surge of Division", + "attribute.surgebinding.gravitation": "Surge of Gravitation", + "attribute.surgebinding.illumination": "Surge of Illumination", + "attribute.surgebinding.progression": "Surge of Progression", + "attribute.surgebinding.tension": "Surge of Tension", + "attribute.surgebinding.transformation": "Surge of Transformation", + "attribute.surgebinding.transportation": "Surge of Transportation", "block.surgebinding.amethyst_block": "Amethyst Block", "block.surgebinding.diamond_block": "Diamond Block", "block.surgebinding.emerald_block": "Emerald Block", @@ -109,6 +119,5 @@ "manifestation.surgebinding.transformation.description": "Needs description", "manifestation.surgebinding.transportation": "Transportation", "manifestation.surgebinding.transportation.description": "Needs description", - "tabs.surgebinding.items": "Surgebinding", - "keys.surgebinding.main": "Surgebinding" + "tabs.surgebinding.items": "Surgebinding" } \ No newline at end of file diff --git a/src/datagen/main/java/leaf/cosmere/EngLangGen.java b/src/datagen/main/java/leaf/cosmere/EngLangGen.java index c41df2abd..cbf7157b0 100644 --- a/src/datagen/main/java/leaf/cosmere/EngLangGen.java +++ b/src/datagen/main/java/leaf/cosmere/EngLangGen.java @@ -149,7 +149,8 @@ private void addAttributes() //manifestation section handles adding attributes lang gen for themselves if (!descriptionId.startsWith("manifestation")) { - String translation = descriptionId.split("\\.")[1]; + String[] sections = descriptionId.replace('_', ' ').split("\\."); + String translation = sections[2]; add(descriptionId, StringHelper.fixCapitalisation(translation)); } } diff --git a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java index c503de5f9..9911d0cf0 100644 --- a/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java +++ b/src/datagen/sandmastery/java/leaf/cosmere/sandmastery/SandmasteryEngLangGen.java @@ -22,6 +22,7 @@ import java.util.Locale; +import static leaf.cosmere.sandmastery.common.registries.SandmasteryAttributes.RIBBONS; import static leaf.cosmere.sandmastery.common.utils.SandmasteryConstants.*; @@ -110,26 +111,15 @@ private void addManifestations() final ResourceLocation regName = manifestation.getRegistryName(); add("manifestation." + regName.getNamespace() + "." + regName.getPath() + ".description", description); } - - // Temp translation fix - Remove when ribbons are added - add("manifestation.sandmastery.ribbons", StringHelper.fixCapitalisation("Sand Mastery Ribbons")); - add("manifestation.sandmastery.ribbons.description", "Masters can use ribbons"); } private void addAttributes() { - //Attributes - for (IAttributeProvider registryObject : SandmasteryAttributes.ATTRIBUTES.getAllAttributes()) - { - final String descriptionId = registryObject.getAttribute().getDescriptionId(); - //no duplicates pls - //manifestation section handles adding attributes lang gen for themselves - if (!descriptionId.startsWith("manifestation")) - { - String translation = descriptionId.split("\\.")[1]; - add(descriptionId, StringHelper.fixCapitalisation(translation)); - } - } + //Attribute + final String descriptionId = RIBBONS.getAttribute().getDescriptionId(); + final String name = "Sand Mastery " + RIBBONS.getName(); + // Attributes are the powers themselves, they need their own names. + add(descriptionId, StringHelper.fixCapitalisation(name)); } private void addPatchouli() diff --git a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java index 0cca093da..eb38da191 100644 --- a/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java +++ b/src/datagen/surgebinding/java/leaf/cosmere/surgebinding/SurgebindingEngLangGen.java @@ -22,6 +22,7 @@ import net.minecraftforge.registries.ForgeRegistries; import static leaf.cosmere.api.Constants.Strings.KEY_SHARDBLADE; +import static leaf.cosmere.surgebinding.common.registries.SurgebindingAttributes.SURGEBINDING_ATTRIBUTES; public class SurgebindingEngLangGen extends LanguageProvider { @@ -119,17 +120,14 @@ private void addManifestations() private void addAttributes() { //Attributes - for (IAttributeProvider registryObject : SurgebindingAttributes.ATTRIBUTES.getAllAttributes()) + SURGEBINDING_ATTRIBUTES.forEach((surgeType, registryObject) -> { final String descriptionId = registryObject.getAttribute().getDescriptionId(); - //no duplicates pls - //manifestation section handles adding attributes lang gen for themselves - if (!descriptionId.startsWith("manifestation")) - { - String translation = descriptionId.split("\\.")[1]; - add(descriptionId, StringHelper.fixCapitalisation(translation)); - } - } + + String name = "Surge of " + StringHelper.fixCapitalisation(surgeType.getName()); + // Attributes are the powers themselves, they need their own names. + add(descriptionId, name); + }); } private void addPatchouli() diff --git a/src/main/java/leaf/cosmere/common/registration/impl/AttributeDeferredRegister.java b/src/main/java/leaf/cosmere/common/registration/impl/AttributeDeferredRegister.java index 67b0ce4aa..edeea8ec1 100644 --- a/src/main/java/leaf/cosmere/common/registration/impl/AttributeDeferredRegister.java +++ b/src/main/java/leaf/cosmere/common/registration/impl/AttributeDeferredRegister.java @@ -32,7 +32,7 @@ public AttributeRegistryObject register(String registryName, String m return register( registryName, () -> new RangedAttribute( - "manifestation." + modid + "." + registryName,//todo update manifestation to attribute on porting + "attribute." + modid + "." + registryName, defaultVal, min, max) From fd9be2e2574d80bc37890dd71df4192a933812b0 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Fri, 5 Dec 2025 20:42:40 -0500 Subject: [PATCH 1088/1090] God Metal Nugget/Alloy Cleanup (#198) * adding attribute translations! * translations for aviar * cleanup for god metal nuggets to use attributes --- .../allomancy/common/utils/MiscHelper.java | 23 +++-- .../cosmere/api/IGrantsBaseAttributes.java | 14 +++ .../cosmere/api/IGrantsManifestations.java | 14 --- .../feruchemy/common/utils/MiscHelper.java | 17 ++-- .../common/items/GodMetalAlloyNuggetItem.java | 94 +++++++++---------- .../common/items/GodMetalNuggetItem.java | 77 +++++++-------- .../cosmere/common/items/MetalNuggetItem.java | 7 +- .../common/util/CosmereAttributeUtils.java | 69 ++++++++++++++ 8 files changed, 188 insertions(+), 127 deletions(-) create mode 100644 src/api/java/leaf/cosmere/api/IGrantsBaseAttributes.java delete mode 100644 src/api/java/leaf/cosmere/api/IGrantsManifestations.java create mode 100644 src/main/java/leaf/cosmere/common/util/CosmereAttributeUtils.java diff --git a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java index 5e7359df1..32e90c575 100644 --- a/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java +++ b/src/allomancy/java/leaf/cosmere/allomancy/common/utils/MiscHelper.java @@ -6,11 +6,11 @@ import leaf.cosmere.allomancy.common.capabilities.AllomancySpiritwebSubmodule; import leaf.cosmere.api.*; -import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.cap.entity.SpiritwebCapability; import leaf.cosmere.common.items.GodMetalNuggetItem; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; @@ -22,15 +22,18 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, int amount) { - if (livingEntity.level().isClientSide) return; + if (livingEntity.level().isClientSide) + { + return; + } - if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) + if (itemStack.getItem() instanceof IGrantsBaseAttributes attributeItem && itemStack.getItem() instanceof IHasSize sizeItem) { Integer size = sizeItem.readMetalAlloySizeNbtData(itemStack); - if(size != null) + if (size != null) { - ArrayList manifestations = manifestingItem.determineManifestations(itemStack); - manifestingItem.grantManifestations(livingEntity, manifestations, size); + ArrayList attributes = attributeItem.determineBaseAttributes(itemStack); + attributeItem.grantBaseAttributes(livingEntity, attributes, size); } //https://www.theoryland.com/intvmain.php?i=977#43 @@ -44,21 +47,21 @@ public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack, livingEntity.setCustomName(TextHelper.createTranslatedText("Mistborn Llama")); } } - else if(godItem.getMetalType() == Metals.MetalType.ATIUM) + else if (godItem.getMetalType() == Metals.MetalType.ATIUM) { eatMetal(godItem.getMetalType(), livingEntity, amount); } } } - else if(itemStack.getItem() instanceof IHasMetalType metalItem) + else if (itemStack.getItem() instanceof IHasMetalType metalItem) { eatMetal(metalItem.getMetalType(), livingEntity, amount); } - else if(itemStack.getItem() == Items.IRON_NUGGET) + else if (itemStack.getItem() == Items.IRON_NUGGET) { eatMetal(Metals.MetalType.IRON, livingEntity, amount); } - else if(itemStack.getItem() == Items.GOLD_NUGGET) + else if (itemStack.getItem() == Items.GOLD_NUGGET) { eatMetal(Metals.MetalType.GOLD, livingEntity, amount); } diff --git a/src/api/java/leaf/cosmere/api/IGrantsBaseAttributes.java b/src/api/java/leaf/cosmere/api/IGrantsBaseAttributes.java new file mode 100644 index 000000000..76e4396f2 --- /dev/null +++ b/src/api/java/leaf/cosmere/api/IGrantsBaseAttributes.java @@ -0,0 +1,14 @@ +package leaf.cosmere.api; + +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.item.ItemStack; + +import java.util.ArrayList; + +public interface IGrantsBaseAttributes +{ + ArrayList determineBaseAttributes(ItemStack itemStack); + + void grantBaseAttributes(LivingEntity livingEntity, ArrayList attributes, int strength); +} diff --git a/src/api/java/leaf/cosmere/api/IGrantsManifestations.java b/src/api/java/leaf/cosmere/api/IGrantsManifestations.java deleted file mode 100644 index cc4de9832..000000000 --- a/src/api/java/leaf/cosmere/api/IGrantsManifestations.java +++ /dev/null @@ -1,14 +0,0 @@ -package leaf.cosmere.api; - -import leaf.cosmere.api.manifestation.Manifestation; -import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.item.ItemStack; - -import java.util.ArrayList; - -public interface IGrantsManifestations -{ - public ArrayList determineManifestations(ItemStack itemStack); - - public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength); -} diff --git a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java index 35b0ad524..615a07849 100644 --- a/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java +++ b/src/feruchemy/java/leaf/cosmere/feruchemy/common/utils/MiscHelper.java @@ -4,13 +4,13 @@ package leaf.cosmere.feruchemy.common.utils; -import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.IGrantsBaseAttributes; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.api.text.TextHelper; import leaf.cosmere.common.items.GodMetalNuggetItem; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.animal.horse.Llama; import net.minecraft.world.item.ItemStack; @@ -21,16 +21,19 @@ public class MiscHelper public static void consumeNugget(LivingEntity livingEntity, ItemStack itemStack) { - if (livingEntity.level().isClientSide) return; + if (livingEntity.level().isClientSide) + { + return; + } - if(itemStack.getItem() instanceof IGrantsManifestations manifestingItem && itemStack.getItem() instanceof IHasSize sizeItem) + if (itemStack.getItem() instanceof IGrantsBaseAttributes attributeItem && itemStack.getItem() instanceof IHasSize sizeItem) { Integer size = sizeItem.readMetalAlloySizeNbtData(itemStack); - if(size != null) + if (size != null) { - ArrayList manifestations = manifestingItem.determineManifestations(itemStack); - manifestingItem.grantManifestations(livingEntity, manifestations, size); + ArrayList attributes = attributeItem.determineBaseAttributes(itemStack); + attributeItem.grantBaseAttributes(livingEntity, attributes, size); } if (itemStack.getItem() instanceof GodMetalNuggetItem godItem && godItem.getMetalType() == Metals.MetalType.LERASATIUM) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java index 866147fb0..5f5ecfdbe 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalAlloyNuggetItem.java @@ -1,18 +1,18 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.IGrantsBaseAttributes; import leaf.cosmere.api.IHasSize; import leaf.cosmere.api.Manifestations; import leaf.cosmere.api.Metals; -import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.util.CosmereAttributeUtils; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.Style; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.item.CreativeModeTab; import net.minecraft.world.item.ItemStack; @@ -25,11 +25,19 @@ import java.util.ArrayList; import java.util.List; -public class GodMetalAlloyNuggetItem extends AlloyNuggetItem implements IHasSize, IGrantsManifestations +import static leaf.cosmere.common.util.CosmereAttributeUtils.grantBaseAttribute; + +public class GodMetalAlloyNuggetItem extends AlloyNuggetItem implements IHasSize, IGrantsBaseAttributes { public static int MIN_SIZE = 1; public static int MAX_SIZE = 16; + public GodMetalAlloyNuggetItem(Metals.MetalType metalType, Metals.MetalType alloyedMetalType) + { + + super(metalType, alloyedMetalType); + } + public int getMinSize() { return MIN_SIZE; @@ -40,12 +48,6 @@ public int getMaxSize() return MAX_SIZE; } - public GodMetalAlloyNuggetItem(Metals.MetalType metalType, Metals.MetalType alloyedMetalType) - { - - super(metalType, alloyedMetalType); - } - public void addFilled(CreativeModeTab.Output output, int size) { ItemStack itemStack = new ItemStack(this); @@ -71,16 +73,16 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); - ArrayList manifestations = determineManifestations(stack); + ArrayList attributes = determineBaseAttributes(stack); - if (!manifestations.isEmpty() & size != null) + if (!attributes.isEmpty() & size != null) { tooltip.add(Component.empty()); tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); - for (Manifestation manifestation : manifestations) + for (Attribute attribute : attributes) { tooltip.add(Component.literal("+" + size + " ").append( - Component.translatable(manifestation.getTranslationKey())) + Component.translatable(attribute.getDescriptionId())) .withStyle(ChatFormatting.BLUE)); } } @@ -90,71 +92,59 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool public Rarity getRarity(ItemStack itemStack) { Integer size = readMetalAlloySizeNbtData(itemStack); - if (size == null) return Rarity.COMMON; + if (size == null) + { + return Rarity.COMMON; + } - if (size <= 8) return Rarity.UNCOMMON; - else if (size == MAX_SIZE) return Rarity.EPIC; + if (size <= 8) + { + return Rarity.UNCOMMON; + } + else if (size == MAX_SIZE) + { + return Rarity.EPIC; + } return Rarity.RARE; } - // This needs to be replaced once a connection system is in place - // https://wob.coppermind.net/events/361-skyward-pre-release-ama/#e11225 - // Mixing Lerasium with other god metals or magic systems metals could create connections - // for new Investiture sources and new Manifestations - public ArrayList determineManifestations(ItemStack itemStack) + public ArrayList determineBaseAttributes(ItemStack itemStack) { - ArrayList manifestations = new ArrayList<>(); + ArrayList attributes = new ArrayList<>(); - Manifestation manifestation; if (this.getMetalType() == Metals.MetalType.LERASIUM) { - manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(alloyedMetalType.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + Attribute attribute = CosmereAttributeUtils.getAttribute(Manifestations.ManifestationTypes.ALLOMANCY, alloyedMetalType.getID()); + if (attribute != null) { - manifestations.add(manifestation); + attributes.add(attribute); } - } else if (this.getMetalType() == Metals.MetalType.LERASATIUM) { - manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(alloyedMetalType.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + Attribute attribute = CosmereAttributeUtils.getAttribute(Manifestations.ManifestationTypes.FERUCHEMY, alloyedMetalType.getID()); + if (attribute != null) { - manifestations.add(manifestation); + attributes.add(attribute); } } - return manifestations; + return attributes; } @Override - public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength) + public void grantBaseAttributes(LivingEntity livingEntity, ArrayList attributes, int strength) { SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - for(Manifestation manifestation: manifestations) + for (Attribute attribute : attributes) { - int currentStrength = 0; - if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; - AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); - if(attributeInstance != null) { - currentStrength = (int) attributeInstance.getValue(); - } - - // Let's ensure not to exceed the base value if it's out of range, - // even if it will get sanitized - int newStrength = strength + currentStrength; - if(newStrength < attribute.getMinValue()) + if (!(attribute instanceof RangedAttribute rangedAttribute)) { - newStrength = (int) attribute.getMinValue(); + return; } - else if (newStrength > attribute.getMaxValue()) - { - newStrength = (int) attribute.getMaxValue(); - } - - spiritweb.giveManifestation(manifestation, newStrength); + grantBaseAttribute(livingEntity, rangedAttribute, strength); } if (livingEntity instanceof ServerPlayer serverPlayer) diff --git a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java index cf551361c..e404e38ac 100644 --- a/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/GodMetalNuggetItem.java @@ -1,15 +1,15 @@ package leaf.cosmere.common.items; import leaf.cosmere.api.*; -import leaf.cosmere.api.manifestation.Manifestation; import leaf.cosmere.common.cap.entity.SpiritwebCapability; +import leaf.cosmere.common.util.CosmereAttributeUtils; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.SlotAccess; -import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.RangedAttribute; import net.minecraft.world.entity.player.Player; import net.minecraft.world.inventory.ClickAction; @@ -23,7 +23,9 @@ import java.util.ArrayList; import java.util.List; -public class GodMetalNuggetItem extends MetalNuggetItem implements IHasSize, IGrantsManifestations +import static leaf.cosmere.common.util.CosmereAttributeUtils.grantBaseAttribute; + +public class GodMetalNuggetItem extends MetalNuggetItem implements IHasSize, IGrantsBaseAttributes { public static int MIN_SIZE = 1; public static int MAX_SIZE = 16; @@ -46,9 +48,13 @@ public int getMinSize() } @Override - public void onCraftedBy(ItemStack itemStack, Level level, Player player) { + public void onCraftedBy(ItemStack itemStack, Level level, Player player) + { CompoundTag nbt = itemStack.getOrCreateTag(); - if(!nbt.contains("nuggetSize")) writeMetalAlloySizeNbtData(itemStack, getMaxSize()); + if (!nbt.contains("nuggetSize")) + { + writeMetalAlloySizeNbtData(itemStack, getMaxSize()); + } } // God Metals shouldn't hurt @@ -69,12 +75,14 @@ public ItemStack finishUsingItem(ItemStack itemstack, Level pLevel, LivingEntity } @Override - public boolean hasCraftingRemainingItem(ItemStack stack) { + public boolean hasCraftingRemainingItem(ItemStack stack) + { return true; } @Override - public ItemStack getCraftingRemainingItem(ItemStack stack) { + public ItemStack getCraftingRemainingItem(ItemStack stack) + { return ItemStack.EMPTY; } @@ -94,38 +102,39 @@ public void appendHoverText(ItemStack stack, Level worldIn, List tool tooltip.add(Component.literal("Size: ").withStyle(ChatFormatting.WHITE).append( Component.literal(size + "/" + MAX_SIZE).withStyle(ChatFormatting.GRAY))); - ArrayList manifestations = determineManifestations(stack); + ArrayList attributes = determineBaseAttributes(stack); - if (!manifestations.isEmpty()) + if (!attributes.isEmpty()) { tooltip.add(Component.empty()); tooltip.add(Component.literal("When consumed:").withStyle(ChatFormatting.GOLD)); - for (Manifestation manifestation : manifestations) + for (Attribute attribute : attributes) { tooltip.add(Component.literal("+" + size + " ").append( - Component.translatable(manifestation.getTranslationKey())) + Component.translatable(attribute.getDescriptionId())) .withStyle(ChatFormatting.BLUE)); } } } - public boolean overrideOtherStackedOnMe(ItemStack pStack, ItemStack pOther, Slot pSlot, ClickAction pAction, Player pPlayer, SlotAccess pAccess) { + public boolean overrideOtherStackedOnMe(ItemStack pStack, ItemStack pOther, Slot pSlot, ClickAction pAction, Player pPlayer, SlotAccess pAccess) + { return false; } @Override - public ArrayList determineManifestations(ItemStack itemStack) + public ArrayList determineBaseAttributes(ItemStack itemStack) { - ArrayList manifestations = new ArrayList<>(); + ArrayList attributes = new ArrayList<>(); if (this.getMetalType() == Metals.MetalType.LERASIUM) { for (Metals.MetalType metal : EnumUtils.METAL_TYPES) { - Manifestation manifestation = Manifestations.ManifestationTypes.ALLOMANCY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + Attribute attribute = CosmereAttributeUtils.getAttribute(Manifestations.ManifestationTypes.ALLOMANCY, metal.getID()); + if (attribute != null) { - manifestations.add(manifestation); + attributes.add(attribute); } } } @@ -133,46 +142,30 @@ else if (this.getMetalType() == Metals.MetalType.LERASATIUM) { for (Metals.MetalType metal : EnumUtils.METAL_TYPES) { - Manifestation manifestation = Manifestations.ManifestationTypes.FERUCHEMY.getManifestation(metal.getID()); - if (manifestation.getManifestationType() != Manifestations.ManifestationTypes.NONE) + Attribute attribute = CosmereAttributeUtils.getAttribute(Manifestations.ManifestationTypes.FERUCHEMY, metal.getID()); + if (attribute != null) { - manifestations.add(manifestation); + attributes.add(attribute); } } } - return manifestations; + return attributes; } @Override - public void grantManifestations(LivingEntity livingEntity, ArrayList manifestations, int strength) + public void grantBaseAttributes(LivingEntity livingEntity, ArrayList attributes, int strength) { SpiritwebCapability.get(livingEntity).ifPresent(iSpiritweb -> { SpiritwebCapability spiritweb = (SpiritwebCapability) iSpiritweb; - for(Manifestation manifestation: manifestations) + for (Attribute attribute : attributes) { - int currentStrength = 0; - if(!(manifestation.getAttribute() instanceof RangedAttribute attribute)) return; - AttributeInstance attributeInstance = livingEntity.getAttribute(attribute); - if(attributeInstance != null) { - currentStrength = (int) attributeInstance.getValue(); - } - - // Let's ensure not to exceed the base value if it's out of range, - // even if it will get sanitized - int newStrength = strength + currentStrength; - if(newStrength < attribute.getMinValue()) - { - newStrength = (int) attribute.getMinValue(); - } - else if (newStrength > attribute.getMaxValue()) + if (!(attribute instanceof RangedAttribute rangedAttribute)) { - newStrength = (int) attribute.getMaxValue(); + return; } - - spiritweb.giveManifestation(manifestation, newStrength); - + grantBaseAttribute(livingEntity, rangedAttribute, strength); } if (livingEntity instanceof ServerPlayer serverPlayer) diff --git a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java index ce88e4b08..77287da0b 100644 --- a/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java +++ b/src/main/java/leaf/cosmere/common/items/MetalNuggetItem.java @@ -4,7 +4,7 @@ package leaf.cosmere.common.items; -import leaf.cosmere.api.IGrantsManifestations; +import leaf.cosmere.api.IGrantsBaseAttributes; import leaf.cosmere.api.Metals; import leaf.cosmere.common.registry.CosmereDamageTypesRegistry; import net.minecraft.world.InteractionHand; @@ -47,7 +47,10 @@ public InteractionResultHolder use(Level world, Player player, @Nonnu ItemStack stack = player.getItemInHand(hand); // Skip eating if it is a god metal, but not if it gives you powers - if(!(stack.getItem() instanceof IGrantsManifestations) && this.getMetalType().isGodMetal()) return InteractionResultHolder.pass(stack); + if (!(stack.getItem() instanceof IGrantsBaseAttributes) && this.getMetalType().isGodMetal()) + { + return InteractionResultHolder.pass(stack); + } if (player.canEat(true)) { diff --git a/src/main/java/leaf/cosmere/common/util/CosmereAttributeUtils.java b/src/main/java/leaf/cosmere/common/util/CosmereAttributeUtils.java new file mode 100644 index 000000000..cfe5ef625 --- /dev/null +++ b/src/main/java/leaf/cosmere/common/util/CosmereAttributeUtils.java @@ -0,0 +1,69 @@ +package leaf.cosmere.common.util; + +import leaf.cosmere.api.Manifestations.ManifestationTypes; +import leaf.cosmere.api.Metals; +import leaf.cosmere.api.Roshar; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.ai.attributes.Attribute; +import net.minecraft.world.entity.ai.attributes.AttributeInstance; +import net.minecraft.world.entity.ai.attributes.RangedAttribute; +import net.minecraftforge.registries.ForgeRegistries; + +public class CosmereAttributeUtils +{ + public static Attribute getAttribute(ManifestationTypes manifestationType, int powerId) + { + switch (manifestationType) + { + case ALLOMANCY: + case FERUCHEMY: + return ForgeRegistries.ATTRIBUTES.getValue(new ResourceLocation( + manifestationType.getName(), + Metals.MetalType.valueOf(powerId).get().getName())); + case SURGEBINDING: + return ForgeRegistries.ATTRIBUTES.getValue(new ResourceLocation( + manifestationType.getName(), + Roshar.Surges.valueOf(powerId).get().getName() + )); + case SANDMASTERY: + return ForgeRegistries.ATTRIBUTES.getValue(new ResourceLocation( + manifestationType.getName(), + "ribbons" + )); + case AVIAR: + return ForgeRegistries.ATTRIBUTES.getValue(new ResourceLocation( + manifestationType.getName(), + "hostile_life_sense" + )); + default: + return null; + } + } + + public static void grantBaseAttribute(LivingEntity livingEntity, RangedAttribute attribute, int strength) + { + int currentStrength = 0; + AttributeInstance entityAttributeInstance = livingEntity.getAttribute(attribute); + if (entityAttributeInstance == null) + { + return; + } + + currentStrength = (int) entityAttributeInstance.getValue(); + + // Let's ensure not to exceed the base value if it's out of range, + // even if it will get sanitized + int newStrength = strength + currentStrength; + if (newStrength < attribute.getMinValue()) + { + newStrength = (int) attribute.getMinValue(); + } + else if (newStrength > attribute.getMaxValue()) + { + newStrength = (int) attribute.getMaxValue(); + } + + entityAttributeInstance.setBaseValue(newStrength); + } +} From a0058678b0cb374bcda1e081c2b7068c28b15ac7 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Wed, 10 Dec 2025 22:25:44 -0500 Subject: [PATCH 1089/1090] updating git ignore i guess --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d97e51b5d..d0a834c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -24,4 +24,5 @@ docs/changelog*.txt /src/datagen/*/resources libs/ +/.DS_Store **/.DS_Store \ No newline at end of file From 22dac064aabf084ca0e13e9654a88ef6845ce602 Mon Sep 17 00:00:00 2001 From: Corey Kochman Date: Wed, 10 Dec 2025 22:27:59 -0500 Subject: [PATCH 1090/1090] Remove .DS_Store files and update .gitignore --- .DS_Store | Bin 6148 -> 0 bytes src/.DS_Store | Bin 6148 -> 0 bytes src/api/.DS_Store | Bin 6148 -> 0 bytes src/api/java/.DS_Store | Bin 6148 -> 0 bytes src/api/java/leaf/.DS_Store | Bin 6148 -> 0 bytes src/api/java/leaf/cosmere/.DS_Store | Bin 6148 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store delete mode 100644 src/.DS_Store delete mode 100644 src/api/.DS_Store delete mode 100644 src/api/java/.DS_Store delete mode 100644 src/api/java/leaf/.DS_Store delete mode 100644 src/api/java/leaf/cosmere/.DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 5ad21b5f75e4c41e844c96fd58890594bde1e33a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKIc~#13>?NnU?7dll>3GJU|~2f$On>0b{ZoBBDhzVZ)bQIkRYf{VUqxNv_n$I z6iX3+>@VF5umiBAE8Kq`<5qynkHiUQFmw@)kaq*H-Z;C>a*^P$icYvAZ; zM+X-h0f_n=Z^mnzC5S}{VhtP}$B|4Lt(|K~-yO9fJan^HiU!`orcPm12U_&Dvgh5k;z8gnh3 mi?w2+wPJ3x6+ch%ie58b14lbg(4RK diff --git a/src/.DS_Store b/src/.DS_Store deleted file mode 100644 index 55f1f5f8f787309746304b694d0d6753e682d935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~JqiLr422W55Nx)zoW=uqgF*BJUcf&DK~NC;Il3=DjjOdR@&d^>$!yr&SL|#= zL|4z#Qlt}+DcmRv3q4chW7*4HF6YzZc(~oJR&pC9tpM+&x1ZYt6`%rCfC^9nDli}g z@*tni2J}pP6e>UkhM|Cc9}3)9lP&0<4g?uRzEqg^zI56wHPO))TycF}?arq#hf1*kwzfpO%Wo&Ov7xB0)V4u3`M_T3nZE?Q%=JHxWNd)337ozPzn@@0zo}T=iB2Zo789(eM|Nmd)C_B zU+k;_*zSJb0waJG-HDBdi5c?&7aZ}x@#}p1JYBEfUZgEL;3<8?WIwkBDIf);fE17d zQeZ|3$ccLbDoBkOER*qQJ7}qo4l=`d{<^q(!L| zkOKcq0UP%3`yF2@&(>eB=k<@Q`nu7{xSZj~PXH4?ir?sA+%LW$YqE8+Leq~x$eguHEZN`K6D!Fp zGBE(#{9e9*5x|n}#M;BejQM~YzH!9$dign@?)RG)X&)W%ls;mzpWA{IkOERb3P=Gd zFe3%>7+-$Q=$Z5=Qa}pKLjnIj6uPq}TW5Sa7-9q<2bROQj#+{%ULb3-b+SUUoE|J& zEyfV9M>|>ax|(dAy&aarhvl8krx=>`c35FTvl>v40#ab2z@q1)pZ`1hfAjyOMX3~! z0&k{(4cq;8!%ZI7?zWc=PDq=)B&p6-%hu8ga_cBbf{|-3!0Xqyh;{7*& zc=Iip6p#W^Knh3!DR5y0s=&@4FMO_!lLAuU_7(8&L!&$P!Z9&E9UP(sAkG*L<2-r^ zV)Fp87mkUH&@8FMq*}EYmUPBj<@LfbG3l^sKCEuG>QF3h=lLztVLef!6p#X^3f$*% z;q`w*Khyu8lC+WnQs7@HV6*jhz2cLqwoV@BwYJfp>7MgVcjG)L9HJZ(qa1VL<#-uM bnb&;I{a!dG2A%Ps6ZJFTy2zx!wH5dQTMHF^ diff --git a/src/api/java/leaf/cosmere/.DS_Store b/src/api/java/leaf/cosmere/.DS_Store deleted file mode 100644 index 55f1f5f8f787309746304b694d0d6753e682d935..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~JqiLr422W55Nx)zoW=uqgF*BJUcf&DK~NC;Il3=DjjOdR@&d^>$!yr&SL|#= zL|4z#Qlt}+DcmRv3q4chW7*4HF6YzZc(~oJR&pC9tpM+&x1ZYt6`%rCfC^9nDli}g z@*tni2J}pP6e>UkhM|Cc9}3)9lP&0<4g?uRzEqg^zI56wHPO))TycF}?arq#hf1*kwzfpO%Wo&Ov7xB0)